From 0b955c4e0349639e32564e23bcb8bb035305b8d6 Mon Sep 17 00:00:00 2001 From: miquelcampos Date: Fri, 29 Sep 2017 11:01:50 +0900 Subject: [PATCH 001/134] Shifter: jointSturcture function now can set wich matrix mult node use. mgear mul matrix or Maya default --- scripts/mgear/maya/shifter/component/__init__.py | 8 +++++++- 1 file changed, 7 insertions(+), 1 deletion(-) diff --git a/scripts/mgear/maya/shifter/component/__init__.py b/scripts/mgear/maya/shifter/component/__init__.py index d58aacb..5ba84b2 100644 --- a/scripts/mgear/maya/shifter/component/__init__.py +++ b/scripts/mgear/maya/shifter/component/__init__.py @@ -999,7 +999,13 @@ def jointStructure(self): uniScale = jpo[3] else: uniScale = True - self.jointList.append(self.addJoint(jpo[0], jpo[1], newActiveJnt, uniScale)) + # handle the matrix node connection + if len(jpo)==5 and self.options["joint_rig"]: + gearMulMatrix = jpo[4] + else: + gearMulMatrix = True + + self.jointList.append(self.addJoint(jpo[0], jpo[1], newActiveJnt, uniScale, gearMulMatrix=gearMulMatrix)) # ===================================================== From 785c632436e3d13a012a68ee75d10d157fc897ac Mon Sep 17 00:00:00 2001 From: miquelcampos Date: Fri, 29 Sep 2017 11:03:00 +0900 Subject: [PATCH 002/134] mGear: node create pair blend new option to connect rot and trans --- scripts/mgear/maya/node.py | 22 +++++++++++++++------- 1 file changed, 15 insertions(+), 7 deletions(-) diff --git a/scripts/mgear/maya/node.py b/scripts/mgear/maya/node.py index 2ecc434..88420d5 100644 --- a/scripts/mgear/maya/node.py +++ b/scripts/mgear/maya/node.py @@ -210,7 +210,7 @@ def createBlendNode(inputA, inputB, blender=.5): return node -def createPairBlend(inputA=None, inputB=None, blender=.5, rotInterpolation=0, output=None): +def createPairBlend(inputA=None, inputB=None, blender=.5, rotInterpolation=0, output=None, trans=True, rot=True): """ Create and connect a PairBlend node. @@ -220,6 +220,8 @@ def createPairBlend(inputA=None, inputB=None, blender=.5, rotInterpolation=0, ou blender (float or attr): Float in 0 to 1 range or attribute string name. rotInterpolation (int): Rotation interpolation option. 0=Euler. 1=Quaternion. output (dagNode): The output node with the blend transfomr applied. + trans (bool): If true connects translation. + rot (bool): If true connects rotation. Returns: pyNode: the newly created node. @@ -236,12 +238,16 @@ def createPairBlend(inputA=None, inputB=None, blender=.5, rotInterpolation=0, ou node.attr("rotInterpolation").set(rotInterpolation) if inputA: - pm.connectAttr(inputA+".translate", node+".inTranslate1") - pm.connectAttr(inputA+".rotate", node+".inRotate1") + if trans: + pm.connectAttr(inputA+".translate", node+".inTranslate1") + if rot: + pm.connectAttr(inputA+".rotate", node+".inRotate1") if inputB: - pm.connectAttr(inputB+".translate", node+".inTranslate2") - pm.connectAttr(inputB+".rotate", node+".inRotate2") + if trans: + pm.connectAttr(inputB+".translate", node+".inTranslate2") + if rot: + pm.connectAttr(inputB+".rotate", node+".inRotate2") if isinstance(blender, str) or isinstance(blender, unicode) or isinstance(blender, pm.Attribute): pm.connectAttr(blender, node+".weight") @@ -249,8 +255,10 @@ def createPairBlend(inputA=None, inputB=None, blender=.5, rotInterpolation=0, ou pm.setAttr(node+".weight", blender) if output: - pm.connectAttr(node+".outRotate", output+".rotate") - pm.connectAttr(node+".outTranslate", output+".translate") + if rot: + pm.connectAttr(node+".outRotate", output+".rotate") + if trans: + pm.connectAttr(node+".outTranslate", output+".translate") return node From 59fd234b33869a9550186a9e6c6ff76768e560ae Mon Sep 17 00:00:00 2001 From: miquelcampos Date: Fri, 29 Sep 2017 16:53:38 +0900 Subject: [PATCH 003/134] mGear: applyop new function WIP --- scripts/mgear/maya/applyop.py | 12 ++++++++++++ 1 file changed, 12 insertions(+) diff --git a/scripts/mgear/maya/applyop.py b/scripts/mgear/maya/applyop.py index c44980e..a506b6e 100644 --- a/scripts/mgear/maya/applyop.py +++ b/scripts/mgear/maya/applyop.py @@ -46,6 +46,18 @@ # BUILT IN NODES ############################################# + +def curvecns_op(crv, inputs=[]): + + + + for i, item in enumerate(inputs): + node = pm.createNode("decomposeMatrix") + pm.connectAttr(item+".worldMatrix[0]", node+".inputMatrix") + pm.connectAttr(node+".outputTranslate", crv+".controlPoints[%s]"%i) + + return node + def splineIK(name, chn, parent=None, cParent=None, curve=None): """ Apply a splineIK solver to a chain. From 2331473a76e433bb55a9fceda33b5cd4e9bebf58 Mon Sep 17 00:00:00 2001 From: miquelcampos Date: Tue, 10 Oct 2017 15:56:06 +0900 Subject: [PATCH 004/134] Shifter: leg free tangets. New ikFoot space. Closes #62 --- .../leg_2jnt_freeTangents_01/__init__.py | 15 ++++++++------- 1 file changed, 8 insertions(+), 7 deletions(-) diff --git a/scripts/mgear/maya/shifter/component/leg_2jnt_freeTangents_01/__init__.py b/scripts/mgear/maya/shifter/component/leg_2jnt_freeTangents_01/__init__.py index e391648..c9349ee 100644 --- a/scripts/mgear/maya/shifter/component/leg_2jnt_freeTangents_01/__init__.py +++ b/scripts/mgear/maya/shifter/component/leg_2jnt_freeTangents_01/__init__.py @@ -122,7 +122,7 @@ def addObjects(self): att.setInvertMirror(self.upv_ctl, ["tx"]) att.setKeyableAttributes(self.upv_ctl, self.t_params) - + # References -------------------------------------- self.ik_ref = pri.addTransform(self.ik_ctl, self.getName("ik_ref"), tra.getTransform(self.ik_ctl)) @@ -330,12 +330,10 @@ def addAttributes(self): if len(ref_names) > 1: self.ikref_att = self.addAnimEnumParam("ikref", "Ik Ref", 0, self.settings["ikrefarray"].split(",")) + ref_names = ["Auto", "ikFoot"] if self.settings["upvrefarray"]: - ref_names = self.settings["upvrefarray"].split(",") - ref_names = ["Auto"] + ref_names - if len(ref_names) > 1: - self.upvref_att = self.addAnimEnumParam("upvref", "UpV Ref", 0, ref_names) - + ref_names = ref_names + self.settings["upvrefarray"].split(",") + self.upvref_att = self.addAnimEnumParam("upvref", "UpV Ref", 0, ref_names) if self.settings["pinrefarray"]: ref_names = self.settings["pinrefarray" ].split(",") ref_names = ["Auto"] + ref_names @@ -622,6 +620,9 @@ def connect_standard(self): # Set the Ik Reference self.connectRef(self.settings["ikrefarray"], self.ik_cns) if self.settings["upvrefarray"]: - self.connectRef("Auto,"+self.settings["upvrefarray"], self.upv_cns, True) + self.connectRef("Auto,ikFoot,"+self.settings["upvrefarray"], self.upv_cns, True) + else: + self.connectRef("Auto,ikFoot", self.upv_cns, True) + if self.settings["pinrefarray"]: self.connectRef2("Auto,"+ self.settings["pinrefarray"], self.mid_cns, self.pin_att, [self.ctrn_loc], False) From 14d73cf62efce02c4a518870bf63cafddce88d28 Mon Sep 17 00:00:00 2001 From: miquelcampos Date: Fri, 13 Oct 2017 14:10:16 +0900 Subject: [PATCH 005/134] Rigbits: createCTL fix missspelling. Fixes #59 --- scripts/mgear/maya/rigbits/__init__.py | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/scripts/mgear/maya/rigbits/__init__.py b/scripts/mgear/maya/rigbits/__init__.py index 6290c6f..ed63449 100644 --- a/scripts/mgear/maya/rigbits/__init__.py +++ b/scripts/mgear/maya/rigbits/__init__.py @@ -110,11 +110,11 @@ def createCTL(type = "square", child=False, *args): iconList.append(icon) try: - defSet = pm.PyNode("rig_controlers_grp") + defSet = pm.PyNode("rig_controllers_grp") for ico in iconList: pm.sets(defSet, add=ico) except: - print "not rig_controlers_grp found" + print "not rig_controllers_grp found" pass From 68e53ced7f74d3f71f13c70662b5eea170b8c7b9 Mon Sep 17 00:00:00 2001 From: miquelcampos Date: Fri, 13 Oct 2017 14:16:00 +0900 Subject: [PATCH 006/134] mgear: skin export safety check. Fixes #58 --- scripts/mgear/maya/skin.py | 9 ++++----- 1 file changed, 4 insertions(+), 5 deletions(-) diff --git a/scripts/mgear/maya/skin.py b/scripts/mgear/maya/skin.py index d9c296c..9a16f26 100644 --- a/scripts/mgear/maya/skin.py +++ b/scripts/mgear/maya/skin.py @@ -212,12 +212,11 @@ def exportSkin(filePath=None, objs=None, *args): pm.displayInfo( 'Exported skinCluster %s (%d influences, %d vertices) %s' % ( skinCls.name(), len(dataDic['weights'].keys()), len(dataDic['blendWeights']), obj.name())) + if packDic["objs"]: + fh = open(filePath, 'wb') + pickle.dump(packDic, fh, pickle.HIGHEST_PROTOCOL) + fh.close() - fh = open(filePath, 'wb') - pickle.dump(packDic, fh, pickle.HIGHEST_PROTOCOL) - fh.close() - - return True def exportSkinPack(packPath=None, objs=None, *args): From cb3c700e40a2cef3cd74a43f90ca48c91f728df7 Mon Sep 17 00:00:00 2001 From: miquelcampos Date: Mon, 16 Oct 2017 14:20:41 +0900 Subject: [PATCH 007/134] Shifter: build speed RnD #65. First experimental version. Some of the loops have been updated and using Maya cmds --- scripts/mgear/maya/dag.py | 62 +++++++++++++++++-- scripts/mgear/maya/shifter/component/guide.py | 48 +++++++++++++- scripts/mgear/maya/shifter/guide.py | 7 ++- 3 files changed, 111 insertions(+), 6 deletions(-) diff --git a/scripts/mgear/maya/dag.py b/scripts/mgear/maya/dag.py index 817920b..da6e507 100644 --- a/scripts/mgear/maya/dag.py +++ b/scripts/mgear/maya/dag.py @@ -30,7 +30,8 @@ ############################################# # GLOBAL ############################################# - +import maya.cmds as cmds +import pymel.core as pm ############################################# # DAG @@ -77,7 +78,7 @@ def findChild(node, name): >>> parent = dag.findChild(self.model, mgear.string.convertRLName(comp_guide.root.name())) """ - return __findChildren(node, name, True) + return __findChildren2(node, name, True) def findChildren(node, name): """ @@ -91,7 +92,7 @@ def findChildren(node, name): dagNode list: The children dagNodes """ - return __findChildren(node, name, False) + return __findChildren2(node, name, False) def findChildrenPartial(node, name): """ @@ -105,7 +106,7 @@ def findChildrenPartial(node, name): dagNode list: The children dagNodes """ - return __findChildren(node, name, False, True) + return __findChildren2(node, name, False, True) def __findChildren(node, name, firstOnly=False, partialName=False): @@ -120,6 +121,30 @@ def __findChildren(node, name, firstOnly=False, partialName=False): return children +def __findChildren2(node, name, firstOnly=False, partialName=False): + """This function is using Maya cmds instead of PyMel + + Args: + node (TYPE): Description + name (TYPE): Description + firstOnly (bool, optional): Description + partialName (bool, optional): Description + + Returns: + TYPE: Description + """ + oName = node.name() + if partialName: + children = [item for item in cmds.listRelatives(oName, ad=True, type="transform") if item.split("|")[-1].split("_")[-1] == name] + else: + children = [item for item in cmds.listRelatives(oName, ad=True, type="transform") if item.split("|")[-1] == name] + if not children: + return False + if firstOnly: + return pm.PyNode(children[0]) + + return [pm.PyNode(x) for x in children] + def findComponentChildren(node, name, sideIndex): """ Returns the component children of input component root. @@ -146,3 +171,32 @@ def findComponentChildren(node, name, sideIndex): children.append(item) return children + + +def findComponentChildren2(node, name, sideIndex): + """ + Returns the component children of input component root. + This function is using Maya cmds instead of PyMel + + Note: + This method is specific to work with shifter guides naming conventions + + Args: + node (dagNode): The input node to search + name (str): The name to search + sideIndex (str): the side + + Returns: + dagNode list: The children dagNodes + + >>> objList = dag.findComponentChildren(self.parent, oldName, oldSideIndex) + + """ + + children = [] + for item in cmds.listRelatives(node.name(), ad=True, type="transform"): + checkName = item.split("|")[-1].split("_") + if checkName[0] == name and checkName[1] == sideIndex: + children.append(item) + + return [pm.PyNode(x) for x in children] diff --git a/scripts/mgear/maya/shifter/component/guide.py b/scripts/mgear/maya/shifter/component/guide.py index c53f50f..d48305c 100644 --- a/scripts/mgear/maya/shifter/component/guide.py +++ b/scripts/mgear/maya/shifter/component/guide.py @@ -33,7 +33,9 @@ # GLOBAL ########################################################## from functools import partial +import datetime +import maya.cmds as cmds # pyMel import pymel.core as pm import pymel.core.datatypes as dt @@ -478,7 +480,9 @@ def rename(self, root, newName, newSide, newIndex): self.parent.attr("comp_index").set( self.values["comp_index"]) - objList = dag.findComponentChildren(self.parent, oldName, oldSideIndex) + # objList = dag.findComponentChildren(self.parent, oldName, oldSideIndex) + # NOTE: Experimenta using findComponentChildren2 + objList = dag.findComponentChildren2(self.parent, oldName, oldSideIndex) newSideIndex = newSide + str(self.values["comp_index"]) objList.append(self.parent) for obj in objList: @@ -663,7 +667,49 @@ def getObjects(self, model, includeShapes=True): return objects + def getObjects2(self, model, includeShapes=True): + """ + Get the objects of the component. + Args: + model(dagNode): The root of the component. + includeShapes (boo): If True, will include the shapes. + + Returns: + list of dagNode: The list of the objects. + + """ + objects = {} + if includeShapes: + children = [pm.PyNode(x) for x in cmds.listRelatives(model.longName(), ad=True, fullPath=True)] + else: + children = [pm.PyNode(x) for x in cmds.listRelatives(model.longName(), ad=True, typ='transform', fullPath=True)] + for child in children: + cName = child.longName() + if cName.startswith(self.fullName): + objects[cName.split("_")[-1]] = child + + return objects + + def getObjects3(self, model): + """ + NOTE: Experimental function + Get the objects of the component. + This version only get the transforms by Name using Maya Cmds + + Args: + model(dagNode): The root of the component. + + Returns: + list of dagNode: The list of the objects. + + """ + objects = {} + + for child in cmds.ls(self.fullName+"_*", type="transform"): + objects[child[child.index(self.fullName+"_")+len(self.fullName+"_"):]] = child + + return objects def addMinMax(self, name, minimum=1, maximum=-1): """ diff --git a/scripts/mgear/maya/shifter/guide.py b/scripts/mgear/maya/shifter/guide.py index dddc27d..050c1fe 100644 --- a/scripts/mgear/maya/shifter/guide.py +++ b/scripts/mgear/maya/shifter/guide.py @@ -401,12 +401,17 @@ def setFromHierarchy(self, root, branch=True): # Components mgear.log("Get components") self.findComponentRecursive(root, branch) + endTime = datetime.datetime.now() + finalTime = endTime - startTime + mgear.log("Find recursive in [ " + str(finalTime) + " ]" ) # Parenting if self.valid: for name in self.componentsIndex: mgear.log("Get parenting for: " + name) compParent = self.components[name] - for localName, element in compParent.getObjects(self.model, False).items(): + # for localName, element in compParent.getObjects(self.model, False).items(): + # NOTE: getObjects3 is an experimental function + for localName, element in compParent.getObjects3(self.model).items(): for name in self.componentsIndex: compChild = self.components[name] compChild_parent = compChild.root.getParent() From 05b5b227a06717db97408338cb9ec73f282ee1b0 Mon Sep 17 00:00:00 2001 From: miquelcampos Date: Mon, 16 Oct 2017 14:30:10 +0900 Subject: [PATCH 008/134] mGear: Custom Pick walk down. fix logging --- scripts/mgear/maya/pickWalk.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/scripts/mgear/maya/pickWalk.py b/scripts/mgear/maya/pickWalk.py index 36cbee1..3da7fb3 100644 --- a/scripts/mgear/maya/pickWalk.py +++ b/scripts/mgear/maya/pickWalk.py @@ -161,7 +161,7 @@ def controllerWalkDown(node, add=False, multi=False): if oChild: pm.select(_getControllerWalkNodes(oChild), add=add) else: - pm.displayWarning("No parent to walk Up.") + pm.displayWarning("No parent to walk Down.") def _getControllerWalkSiblings(node, direction="right", multi=False): From eb9a2f0f6934f981b9812dfcca3243bfef1abece Mon Sep 17 00:00:00 2001 From: miquelcampos Date: Mon, 16 Oct 2017 17:47:45 +0900 Subject: [PATCH 009/134] Shifter: Change Global_C0_ctl to World_ctl Closes #66 --- scripts/mgear/maya/shifter/__init__.py | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/scripts/mgear/maya/shifter/__init__.py b/scripts/mgear/maya/shifter/__init__.py index 0aaa27e..b88668b 100644 --- a/scripts/mgear/maya/shifter/__init__.py +++ b/scripts/mgear/maya/shifter/__init__.py @@ -203,7 +203,8 @@ def initialHierarchy(self): # -------------------------------------------------- # Global Ctl - self.global_ctl = self.addCtl(self.model, "global_C0_ctl", dt.Matrix(), self.options["C_color_fk"], "crossarrow", w=10) + # self.global_ctl = self.addCtl(self.model, "global_C0_ctl", dt.Matrix(), self.options["C_color_fk"], "crossarrow", w=10) + self.global_ctl = self.addCtl(self.model, "world_ctl", dt.Matrix(), self.options["C_color_fk"], "circle", w=10) att.setRotOrder(self.global_ctl, "ZXY") # -------------------------------------------------- From 1140173323de329ed018c9228b18116ee17ecb2c Mon Sep 17 00:00:00 2001 From: miquelcampos Date: Mon, 16 Oct 2017 17:48:28 +0900 Subject: [PATCH 010/134] Shifter: Update biped Guide: new global_c0_ctl and new references updated --- .../component/_templates/biped_guide.ma | 5486 ++++++++--------- 1 file changed, 2731 insertions(+), 2755 deletions(-) diff --git a/scripts/mgear/maya/shifter/component/_templates/biped_guide.ma b/scripts/mgear/maya/shifter/component/_templates/biped_guide.ma index cffd70e..4a57ab9 100644 --- a/scripts/mgear/maya/shifter/component/_templates/biped_guide.ma +++ b/scripts/mgear/maya/shifter/component/_templates/biped_guide.ma @@ -1,6 +1,6 @@ //Maya ASCII 2016R2 scene //Name: biped_guide.ma -//Last modified: Thu, Aug 31, 2017 04:57:05 PM +//Last modified: Mon, Oct 16, 2017 05:46:04 PM //Codeset: 932 requires maya "2016R2"; requires -nodeType "mgear_curveCns" "mgear_solvers" "2.1.0"; @@ -12,69 +12,8 @@ fileInfo "product" "Maya 2016"; fileInfo "version" "2016 Extension 2 SP2"; fileInfo "cutIdentifier" "201608220310-1001477-2"; fileInfo "osv" "Microsoft Windows 8 Business Edition, 64-bit (Build 9200)\n"; -createNode transform -s -n "persp"; - rename -uid "AA5DAA37-487B-2E80-C8B3-1BB167F82E5C"; - setAttr ".v" no; - setAttr ".t" -type "double3" 28 21 28 ; - setAttr ".r" -type "double3" -27.938352729602379 44.999999999999972 -5.172681101354183e-014 ; -createNode camera -s -n "perspShape" -p "persp"; - rename -uid "F0E2CBF8-480C-25D4-B535-C5BACC5644FB"; - setAttr -k off ".v" no; - setAttr ".fl" 34.999999999999993; - setAttr ".coi" 44.82186966202994; - setAttr ".imn" -type "string" "persp"; - setAttr ".den" -type "string" "persp_depth"; - setAttr ".man" -type "string" "persp_mask"; - setAttr ".hc" -type "string" "viewSet -p %camera"; -createNode transform -s -n "top"; - rename -uid "78E70ECB-452F-D84E-C645-8989B8D9C501"; - setAttr ".v" no; - setAttr ".t" -type "double3" 0 1000.1 0 ; - setAttr ".r" -type "double3" -89.999999999999986 0 0 ; -createNode camera -s -n "topShape" -p "top"; - rename -uid "F2A66002-4D7C-0A2E-4198-B6AE524185E7"; - setAttr -k off ".v" no; - setAttr ".rnd" no; - setAttr ".coi" 1000.1; - setAttr ".ow" 30; - setAttr ".imn" -type "string" "top"; - setAttr ".den" -type "string" "top_depth"; - setAttr ".man" -type "string" "top_mask"; - setAttr ".hc" -type "string" "viewSet -t %camera"; - setAttr ".o" yes; -createNode transform -s -n "front"; - rename -uid "E2D6B82F-46E5-13CD-AA57-9C86C820290E"; - setAttr ".v" no; - setAttr ".t" -type "double3" 0 0 1000.1 ; -createNode camera -s -n "frontShape" -p "front"; - rename -uid "ABA3AAC9-40A1-BE95-661E-DF9796217341"; - setAttr -k off ".v" no; - setAttr ".rnd" no; - setAttr ".coi" 1000.1; - setAttr ".ow" 30; - setAttr ".imn" -type "string" "front"; - setAttr ".den" -type "string" "front_depth"; - setAttr ".man" -type "string" "front_mask"; - setAttr ".hc" -type "string" "viewSet -f %camera"; - setAttr ".o" yes; -createNode transform -s -n "side"; - rename -uid "B13E901C-4AB7-C1FC-A57E-C9AB842D39BA"; - setAttr ".v" no; - setAttr ".t" -type "double3" 1000.1 0 0 ; - setAttr ".r" -type "double3" 0 89.999999999999986 0 ; -createNode camera -s -n "sideShape" -p "side"; - rename -uid "1F5AD2EC-46A0-28D4-9FAA-B7904826D5A1"; - setAttr -k off ".v" no; - setAttr ".rnd" no; - setAttr ".coi" 1000.1; - setAttr ".ow" 30; - setAttr ".imn" -type "string" "side"; - setAttr ".den" -type "string" "side_depth"; - setAttr ".man" -type "string" "side_mask"; - setAttr ".hc" -type "string" "viewSet -s %camera"; - setAttr ".o" yes; createNode transform -n "guide"; - rename -uid "BEF42FDD-4BC2-25CA-479B-B38CD7163134"; + rename -uid "68D0CAF9-402F-6404-4A80-729E4B81D2DB"; addAttr -ci true -sn "rig_name" -ln "rig_name" -dt "string"; addAttr -ci true -k true -sn "mode" -ln "mode" -min 0 -max 1 -en "Final:WIP" -at "enum"; addAttr -ci true -k true -sn "step" -ln "step" -min 0 -max 6 -en "All Steps:Objects:Properties:Operators:Connect:Joints:Finalize" @@ -123,11 +62,154 @@ createNode transform -n "guide"; setAttr ".maya_version" -type "string" "2016.0"; setAttr ".gear_version" -type "string" "2.2.4"; createNode transform -n "controllers_org" -p "guide"; - rename -uid "2D24D3A4-4D93-1A87-CE3B-15B6B5C60FBD"; + rename -uid "CBA0507F-4A78-63DE-6611-2B8361988EE4"; setAttr ".v" no; setAttr ".s" -type "double3" 1.5545667115145092 1.5545667115145092 1.5545667115145092 ; -createNode transform -n "local_C0_root" -p "guide"; - rename -uid "635EDC51-40F4-7325-C53A-66BD38CD308A"; +createNode transform -n "global_C0_root" -p "guide"; + rename -uid "AE59666B-4ADC-69B4-F35F-70B751A4EDCF"; + addAttr -ci true -sn "isGearGuide" -ln "isGearGuide" -dv 1 -min 0 -max 1 -at "bool"; + addAttr -ci true -sn "comp_type" -ln "comp_type" -dt "string"; + addAttr -ci true -sn "comp_name" -ln "comp_name" -dt "string"; + addAttr -ci true -sn "comp_side" -ln "comp_side" -dt "string"; + addAttr -ci true -sn "comp_index" -ln "comp_index" -min 0 -at "long"; + addAttr -ci true -sn "connector" -ln "connector" -dt "string"; + addAttr -ci true -sn "ui_host" -ln "ui_host" -dt "string"; + addAttr -ci true -sn "ctlGrp" -ln "ctlGrp" -dt "string"; + addAttr -ci true -sn "icon" -ln "icon" -dt "string"; + addAttr -ci true -sn "ikrefarray" -ln "ikrefarray" -dt "string"; + addAttr -ci true -sn "joint" -ln "joint" -min 0 -max 1 -at "bool"; + addAttr -ci true -sn "uniScale" -ln "uniScale" -min 0 -max 1 -at "bool"; + addAttr -ci true -sn "k_tx" -ln "k_tx" -min 0 -max 1 -at "bool"; + addAttr -ci true -sn "k_ty" -ln "k_ty" -min 0 -max 1 -at "bool"; + addAttr -ci true -sn "k_tz" -ln "k_tz" -min 0 -max 1 -at "bool"; + addAttr -ci true -sn "k_ro" -ln "k_ro" -min 0 -max 1 -at "bool"; + addAttr -ci true -sn "k_rx" -ln "k_rx" -min 0 -max 1 -at "bool"; + addAttr -ci true -sn "k_ry" -ln "k_ry" -min 0 -max 1 -at "bool"; + addAttr -ci true -sn "k_rz" -ln "k_rz" -min 0 -max 1 -at "bool"; + addAttr -ci true -sn "k_sx" -ln "k_sx" -min 0 -max 1 -at "bool"; + addAttr -ci true -sn "k_sy" -ln "k_sy" -min 0 -max 1 -at "bool"; + addAttr -ci true -sn "k_sz" -ln "k_sz" -min 0 -max 1 -at "bool"; + addAttr -ci true -sn "default_rotorder" -ln "default_rotorder" -min 0 -max 5 -at "long"; + addAttr -ci true -sn "neutralRotation" -ln "neutralRotation" -min 0 -max 1 -at "bool"; + addAttr -ci true -sn "ctlSize" -ln "ctlSize" -at "double"; + addAttr -ci true -sn "useIndex" -ln "useIndex" -min 0 -max 1 -at "bool"; + addAttr -ci true -sn "parentJointIndex" -ln "parentJointIndex" -at "long"; + setAttr -k off -cb on ".v"; + setAttr -k off -cb on ".tx"; + setAttr -k off -cb on ".ty"; + setAttr -k off -cb on ".tz"; + setAttr -k off -cb on ".rx"; + setAttr -k off -cb on ".ry"; + setAttr -k off -cb on ".rz"; + setAttr -cb on ".ro"; + setAttr -k off -cb on ".sx"; + setAttr -k off -cb on ".sy"; + setAttr -k off -cb on ".sz"; + setAttr ".comp_type" -type "string" "control_01"; + setAttr ".comp_name" -type "string" "global"; + setAttr ".comp_side" -type "string" "C"; + setAttr ".connector" -type "string" "standard"; + setAttr ".ui_host" -type "string" ""; + setAttr ".ctlGrp" -type "string" ""; + setAttr ".icon" -type "string" "square"; + setAttr ".ikrefarray" -type "string" ""; + setAttr ".uniScale" yes; + setAttr ".k_tx" yes; + setAttr ".k_ty" yes; + setAttr ".k_tz" yes; + setAttr ".k_ro" yes; + setAttr ".k_rx" yes; + setAttr ".k_ry" yes; + setAttr ".k_rz" yes; + setAttr ".k_sx" yes; + setAttr ".k_sy" yes; + setAttr ".k_sz" yes; + setAttr ".neutralRotation" yes; + setAttr ".ctlSize" 8; + setAttr ".parentJointIndex" -1; +createNode nurbsCurve -n "global_C0_rootShape" -p "global_C0_root"; + rename -uid "0888C468-4D4C-E774-F1A0-E7B62199D44B"; + setAttr ".ihi" 0; + setAttr -k off ".v"; + setAttr ".ove" yes; + setAttr ".ovc" 13; + setAttr ".cc" -type "nurbsCurve" + 1 1 0 no 3 + 2 0 1 + 2 + 0.25 0 0 + -0.25 0 0 + ; +createNode nurbsCurve -n "global_C0_root1Shape" -p "global_C0_root"; + rename -uid "24C1B100-4B70-0005-1D5C-D889878EB8C2"; + setAttr ".ihi" 0; + setAttr -k off ".v"; + setAttr ".ove" yes; + setAttr ".ovc" 13; + setAttr ".cc" -type "nurbsCurve" + 1 1 0 no 3 + 2 0 1 + 2 + 0 0.25 0 + 0 -0.25 0 + ; +createNode nurbsCurve -n "global_C0_root2Shape" -p "global_C0_root"; + rename -uid "80656DBF-43DD-DE2F-C705-A9A3CFB343D0"; + setAttr ".ihi" 0; + setAttr -k off ".v"; + setAttr ".ove" yes; + setAttr ".ovc" 13; + setAttr ".cc" -type "nurbsCurve" + 1 1 0 no 3 + 2 0 1 + 2 + 0 0 0.25 + 0 0 -0.25 + ; +createNode nurbsCurve -n "global_C0_root3Shape" -p "global_C0_root"; + rename -uid "7ECCC198-45F3-EA46-93C0-28ADF8021051"; + setAttr ".ihi" 0; + setAttr -k off ".v"; + setAttr ".ove" yes; + setAttr ".ovc" 13; + setAttr ".cc" -type "nurbsCurve" + 1 15 0 no 3 + 16 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 + 16 + 0.125 0.125 0.125 + 0.125 0.125 -0.125 + -0.125 0.125 -0.125 + -0.125 -0.125 -0.125 + -0.125 -0.125 0.125 + -0.125 0.125 0.125 + -0.125 0.125 -0.125 + -0.125 0.125 0.125 + 0.125 0.125 0.125 + 0.125 -0.125 0.125 + -0.125 -0.125 0.125 + 0.125 -0.125 0.125 + 0.125 -0.125 -0.125 + 0.125 0.125 -0.125 + 0.125 -0.125 -0.125 + -0.125 -0.125 -0.125 + ; +createNode transform -n "global_C0_sizeRef" -p "global_C0_root"; + rename -uid "5A23185F-4091-7EE2-7CB2-0B8D899C64B8"; + addAttr -ci true -sn "isGearGuide" -ln "isGearGuide" -dv 1 -min 0 -max 1 -at "bool"; + setAttr -k off -cb on ".v"; + setAttr ".t" -type "double3" 0 0 1 ; + setAttr -k off -cb on ".tx"; + setAttr -k off -cb on ".ty"; + setAttr -k off -cb on ".tz"; + setAttr -k off -cb on ".rx"; + setAttr -k off -cb on ".ry"; + setAttr -k off -cb on ".rz"; + setAttr -cb on ".ro"; + setAttr -k off -cb on ".sx"; + setAttr -k off -cb on ".sy"; + setAttr -k off -cb on ".sz"; +createNode transform -n "local_C0_root" -p "global_C0_root"; + rename -uid "1D85A16B-4649-79B4-FB72-2D901C22C4ED"; addAttr -ci true -sn "isGearGuide" -ln "isGearGuide" -dv 1 -min 0 -max 1 -at "bool"; addAttr -ci true -sn "comp_type" -ln "comp_type" -dt "string"; addAttr -ci true -sn "comp_name" -ln "comp_name" -dt "string"; @@ -163,7 +245,6 @@ createNode transform -n "local_C0_root" -p "guide"; setAttr -k off -cb on ".ry"; setAttr -k off -cb on ".rz"; setAttr -cb on ".ro"; - setAttr ".s" -type "double3" 0.9528272142357278 0.9528272142357278 0.9528272142357278 ; setAttr -k off -cb on ".sx"; setAttr -k off -cb on ".sy"; setAttr -k off -cb on ".sz"; @@ -174,6 +255,8 @@ createNode transform -n "local_C0_root" -p "guide"; setAttr ".ui_host" -type "string" ""; setAttr ".ctlGrp" -type "string" ""; setAttr ".icon" -type "string" "square"; + setAttr ".ikrefarray" -type "string" ""; + setAttr ".uniScale" yes; setAttr ".k_tx" yes; setAttr ".k_ty" yes; setAttr ".k_tz" yes; @@ -184,12 +267,11 @@ createNode transform -n "local_C0_root" -p "guide"; setAttr ".k_sx" yes; setAttr ".k_sy" yes; setAttr ".k_sz" yes; - setAttr ".default_rotorder" 2; setAttr ".neutralRotation" yes; - setAttr ".ctlSize" 1; + setAttr ".ctlSize" 6; setAttr ".parentJointIndex" -1; createNode nurbsCurve -n "local_C0_rootShape" -p "local_C0_root"; - rename -uid "9AE02A4C-4655-4DA9-2097-A48313183A0F"; + rename -uid "0E302202-4705-61DE-7537-2296A14BBF13"; setAttr ".ihi" 0; setAttr -k off ".v"; setAttr ".ove" yes; @@ -201,8 +283,8 @@ createNode nurbsCurve -n "local_C0_rootShape" -p "local_C0_root"; 0.25 0 0 -0.25 0 0 ; -createNode nurbsCurve -n "local_C0_root25Shape" -p "local_C0_root"; - rename -uid "E09F3282-4205-2AB4-55D6-D29269398EE0"; +createNode nurbsCurve -n "local_C0_root1Shape" -p "local_C0_root"; + rename -uid "A30BEA63-49D0-A83B-8819-2AAD75B0E5E4"; setAttr ".ihi" 0; setAttr -k off ".v"; setAttr ".ove" yes; @@ -214,8 +296,8 @@ createNode nurbsCurve -n "local_C0_root25Shape" -p "local_C0_root"; 0 0.25 0 0 -0.25 0 ; -createNode nurbsCurve -n "local_C0_root26Shape" -p "local_C0_root"; - rename -uid "C9F594B9-4A79-B07D-ECC5-D5B17A7E5756"; +createNode nurbsCurve -n "local_C0_root2Shape" -p "local_C0_root"; + rename -uid "21C9E095-42F7-A9DB-539A-BDBDED100268"; setAttr ".ihi" 0; setAttr -k off ".v"; setAttr ".ove" yes; @@ -227,8 +309,8 @@ createNode nurbsCurve -n "local_C0_root26Shape" -p "local_C0_root"; 0 0 0.25 0 0 -0.25 ; -createNode nurbsCurve -n "local_C0_root27Shape" -p "local_C0_root"; - rename -uid "CF564DE7-40F8-E9D4-FD6A-C6827D25F3D5"; +createNode nurbsCurve -n "local_C0_root3Shape" -p "local_C0_root"; + rename -uid "108A2AA1-466F-A33B-DB41-E88A5A6B7BFA"; setAttr ".ihi" 0; setAttr -k off ".v"; setAttr ".ove" yes; @@ -255,10 +337,10 @@ createNode nurbsCurve -n "local_C0_root27Shape" -p "local_C0_root"; -0.125 -0.125 -0.125 ; createNode transform -n "local_C0_sizeRef" -p "local_C0_root"; - rename -uid "E7FDE99F-42BA-B6FE-CD9B-D6BE4504B09B"; + rename -uid "B59F9E8A-47A7-4CCB-8694-159A6A00E427"; addAttr -ci true -sn "isGearGuide" -ln "isGearGuide" -dv 1 -min 0 -max 1 -at "bool"; setAttr -k off -cb on ".v"; - setAttr ".t" -type "double3" 0 0 1.0495082267377407 ; + setAttr ".t" -type "double3" 0 0 1 ; setAttr -k off -cb on ".tx"; setAttr -k off -cb on ".ty"; setAttr -k off -cb on ".tz"; @@ -266,12 +348,11 @@ createNode transform -n "local_C0_sizeRef" -p "local_C0_root"; setAttr -k off -cb on ".ry"; setAttr -k off -cb on ".rz"; setAttr -cb on ".ro"; - setAttr ".s" -type "double3" 1.0495082267377407 1.0495082267377407 1.0495082267377407 ; setAttr -k off -cb on ".sx"; setAttr -k off -cb on ".sy"; setAttr -k off -cb on ".sz"; createNode transform -n "body_C0_root" -p "local_C0_root"; - rename -uid "CD56F777-424D-9DA5-1EA5-3DA0CE593970"; + rename -uid "67DFE83C-4DFE-B517-851F-17B65EBBA354"; addAttr -ci true -sn "isGearGuide" -ln "isGearGuide" -dv 1 -min 0 -max 1 -at "bool"; addAttr -ci true -sn "comp_type" -ln "comp_type" -dt "string"; addAttr -ci true -sn "comp_name" -ln "comp_name" -dt "string"; @@ -300,7 +381,7 @@ createNode transform -n "body_C0_root" -p "local_C0_root"; addAttr -ci true -sn "useIndex" -ln "useIndex" -min 0 -max 1 -at "bool"; addAttr -ci true -sn "parentJointIndex" -ln "parentJointIndex" -at "long"; setAttr -k off -cb on ".v"; - setAttr ".t" -type "double3" 0 11.390533694690754 0.19144303592045675 ; + setAttr ".t" -type "double3" 0 10.853210488970383 0.18241213460091918 ; setAttr -k off -cb on ".tx"; setAttr -k off -cb on ".ty"; setAttr -k off -cb on ".tz"; @@ -309,7 +390,7 @@ createNode transform -n "body_C0_root" -p "local_C0_root"; setAttr -k off -cb on ".ry"; setAttr -k off -cb on ".rz"; setAttr -cb on ".ro"; - setAttr ".s" -type "double3" 1.9535389960287599 1.9535389960287501 1.9535389960287599 ; + setAttr ".s" -type "double3" 1.8613851194869442 1.8613851194869344 1.8613851194869442 ; setAttr -k off -cb on ".sx"; setAttr -k off -cb on ".sy"; setAttr -k off -cb on ".sz"; @@ -333,7 +414,7 @@ createNode transform -n "body_C0_root" -p "local_C0_root"; setAttr ".ctlSize" 3; setAttr ".parentJointIndex" -1; createNode nurbsCurve -n "body_C0_rootShape" -p "body_C0_root"; - rename -uid "49E19708-4E3D-4FF8-F5BF-A1A4E6FFA9A0"; + rename -uid "DE6B6F5D-4C24-C252-831E-E78EF36569FA"; setAttr ".ihi" 0; setAttr -k off ".v"; setAttr ".ove" yes; @@ -346,7 +427,7 @@ createNode nurbsCurve -n "body_C0_rootShape" -p "body_C0_root"; -0.25 0 0 ; createNode nurbsCurve -n "body_C0_root25Shape" -p "body_C0_root"; - rename -uid "3079F148-4F2B-787B-4E92-A2B9033D72B2"; + rename -uid "5CAD877E-44D3-7DC3-164E-12967ADD0219"; setAttr ".ihi" 0; setAttr -k off ".v"; setAttr ".ove" yes; @@ -359,7 +440,7 @@ createNode nurbsCurve -n "body_C0_root25Shape" -p "body_C0_root"; 0 -0.25 0 ; createNode nurbsCurve -n "body_C0_root26Shape" -p "body_C0_root"; - rename -uid "31EE3CB5-4BE2-3257-513F-6DB519A05306"; + rename -uid "C59BB543-4BC9-7AFC-82DC-F4A0504FE2F3"; setAttr ".ihi" 0; setAttr -k off ".v"; setAttr ".ove" yes; @@ -372,7 +453,7 @@ createNode nurbsCurve -n "body_C0_root26Shape" -p "body_C0_root"; 0 0 -0.25 ; createNode nurbsCurve -n "body_C0_root27Shape" -p "body_C0_root"; - rename -uid "4DE6789C-4918-0CE4-1A00-19BC0EE0C2E2"; + rename -uid "6007CE16-4076-99B9-825F-6DB6888E51F7"; setAttr ".ihi" 0; setAttr -k off ".v"; setAttr ".ove" yes; @@ -399,7 +480,7 @@ createNode nurbsCurve -n "body_C0_root27Shape" -p "body_C0_root"; -0.125 -0.125 -0.125 ; createNode transform -n "body_C0_sizeRef" -p "body_C0_root"; - rename -uid "F40C4E15-4324-B703-A2EE-AE9B29F73020"; + rename -uid "146C80F8-4B26-FA2E-C413-1B9E825B141E"; addAttr -ci true -sn "isGearGuide" -ln "isGearGuide" -dv 1 -min 0 -max 1 -at "bool"; setAttr -k off -cb on ".v"; setAttr ".t" -type "double3" 0.53723433669418785 0 1.1928998604342214e-016 ; @@ -416,7 +497,7 @@ createNode transform -n "body_C0_sizeRef" -p "body_C0_root"; setAttr -k off -cb on ".sy"; setAttr -k off -cb on ".sz"; createNode transform -n "spine_C0_root" -p "body_C0_root"; - rename -uid "DCC70641-4AEA-9B32-6E3C-3CB8A5EA62B3"; + rename -uid "4264760D-4C42-4F59-FBCE-92A48C305988"; addAttr -ci true -sn "isGearGuide" -ln "isGearGuide" -dv 1 -min 0 -max 1 -at "bool"; addAttr -ci true -sn "comp_type" -ln "comp_type" -dt "string"; addAttr -ci true -sn "comp_name" -ln "comp_name" -dt "string"; @@ -467,7 +548,7 @@ createNode transform -n "spine_C0_root" -p "body_C0_root"; setAttr -k on ".sq_profile"; setAttr ".parentJointIndex" -1; createNode nurbsCurve -n "spine_C0_rootShape" -p "spine_C0_root"; - rename -uid "7707CB23-49E1-37BD-EF40-FA81E08E6E53"; + rename -uid "CF73C17F-40D7-7DA8-E295-61B19CDF1843"; setAttr ".ihi" 0; setAttr -k off ".v"; setAttr ".ove" yes; @@ -480,7 +561,7 @@ createNode nurbsCurve -n "spine_C0_rootShape" -p "spine_C0_root"; -0.25 0 0 ; createNode nurbsCurve -n "spine_C0_root25Shape" -p "spine_C0_root"; - rename -uid "BD87BEA1-41AB-AA3D-08CE-03BED9C10ECD"; + rename -uid "3D30A8F2-4C19-DFA9-8FA1-36B6420416B4"; setAttr ".ihi" 0; setAttr -k off ".v"; setAttr ".ove" yes; @@ -493,7 +574,7 @@ createNode nurbsCurve -n "spine_C0_root25Shape" -p "spine_C0_root"; 0 -0.25 0 ; createNode nurbsCurve -n "spine_C0_root26Shape" -p "spine_C0_root"; - rename -uid "AA0ACEE5-4775-1378-1933-959700DFA7C6"; + rename -uid "140E8904-4927-164C-BF22-8E8C927B0787"; setAttr ".ihi" 0; setAttr -k off ".v"; setAttr ".ove" yes; @@ -506,7 +587,7 @@ createNode nurbsCurve -n "spine_C0_root26Shape" -p "spine_C0_root"; 0 0 -0.25 ; createNode nurbsCurve -n "spine_C0_root27Shape" -p "spine_C0_root"; - rename -uid "76F724FB-47EB-A1F2-613E-47A9084D13CB"; + rename -uid "547544D7-43A1-A36D-D8AD-F089135D3D45"; setAttr ".ihi" 0; setAttr -k off ".v"; setAttr ".ove" yes; @@ -533,7 +614,7 @@ createNode nurbsCurve -n "spine_C0_root27Shape" -p "spine_C0_root"; -0.125 -0.125 -0.125 ; createNode transform -n "spine_C0_eff" -p "spine_C0_root"; - rename -uid "442979B4-4F06-C753-1FDC-B5AC1EB36BCA"; + rename -uid "9237A6EC-4349-7310-EDE6-15AFE725AEDE"; addAttr -ci true -sn "isGearGuide" -ln "isGearGuide" -dv 1 -min 0 -max 1 -at "bool"; setAttr -k off -cb on ".v"; setAttr ".t" -type "double3" 2.3760066881565312 -1.6930901125533637e-015 1.2325951644078309e-031 ; @@ -549,7 +630,7 @@ createNode transform -n "spine_C0_eff" -p "spine_C0_root"; setAttr -k off -cb on ".sy"; setAttr -k off -cb on ".sz"; createNode nurbsCurve -n "spine_C0_effShape" -p "spine_C0_eff"; - rename -uid "91FCE89B-48E2-40A9-F650-2D81131328EC"; + rename -uid "56576215-4469-95AF-B698-E5818CF0F303"; setAttr ".ihi" 0; setAttr -k off ".v"; setAttr ".ove" yes; @@ -562,7 +643,7 @@ createNode nurbsCurve -n "spine_C0_effShape" -p "spine_C0_eff"; -0.25 0 0 ; createNode nurbsCurve -n "spine_C0_eff25Shape" -p "spine_C0_eff"; - rename -uid "B9A7B4E8-47A3-4793-BF5F-5784E81053E1"; + rename -uid "F249C8BF-4B46-F005-C09A-39BC8F055386"; setAttr ".ihi" 0; setAttr -k off ".v"; setAttr ".ove" yes; @@ -575,7 +656,7 @@ createNode nurbsCurve -n "spine_C0_eff25Shape" -p "spine_C0_eff"; 0 -0.25 0 ; createNode nurbsCurve -n "spine_C0_eff26Shape" -p "spine_C0_eff"; - rename -uid "883FFD68-4CDC-69D2-A1E8-3383626A0823"; + rename -uid "98848A5E-4EAF-881A-6AB8-1C822CD8C41A"; setAttr ".ihi" 0; setAttr -k off ".v"; setAttr ".ove" yes; @@ -588,7 +669,7 @@ createNode nurbsCurve -n "spine_C0_eff26Shape" -p "spine_C0_eff"; 0 0 -0.25 ; createNode nurbsCurve -n "spine_C0_eff27Shape" -p "spine_C0_eff"; - rename -uid "3ECFC8CF-4FA4-30A6-9267-FE8948F550F7"; + rename -uid "D74A66C6-467C-BB11-3213-BB9CBA14EA68"; setAttr ".ihi" 0; setAttr -k off ".v"; setAttr ".ove" yes; @@ -606,7 +687,7 @@ createNode nurbsCurve -n "spine_C0_eff27Shape" -p "spine_C0_eff"; -0.1875 0 0 ; createNode nurbsCurve -n "spine_C0_eff27_0crvShape" -p "spine_C0_eff"; - rename -uid "73D27119-435C-0C7B-060B-5D9B1767941C"; + rename -uid "D9FC3E11-4D86-24FD-F308-8B9C7C5A3333"; setAttr ".ihi" 0; setAttr -k off ".v"; setAttr ".ove" yes; @@ -624,7 +705,7 @@ createNode nurbsCurve -n "spine_C0_eff27_0crvShape" -p "spine_C0_eff"; -0.1875 0 0 ; createNode nurbsCurve -n "spine_C0_eff27_1crvShape" -p "spine_C0_eff"; - rename -uid "6D514F95-49CA-CB52-74FE-2FA707492EF6"; + rename -uid "167596A0-42F6-8B48-5A57-2E82F7EA2B09"; setAttr ".ihi" 0; setAttr -k off ".v"; setAttr ".ove" yes; @@ -642,7 +723,7 @@ createNode nurbsCurve -n "spine_C0_eff27_1crvShape" -p "spine_C0_eff"; 0 0 -0.1875 ; createNode transform -n "spineUI_C0_root" -p "spine_C0_eff"; - rename -uid "BF9A63CE-45BF-1981-5E3C-7795B9E5D8ED"; + rename -uid "AA3EA0D4-482B-8890-D0C5-50B0BB968413"; addAttr -ci true -sn "isGearGuide" -ln "isGearGuide" -dv 1 -min 0 -max 1 -at "bool"; addAttr -ci true -sn "comp_type" -ln "comp_type" -dt "string"; addAttr -ci true -sn "comp_name" -ln "comp_name" -dt "string"; @@ -696,7 +777,7 @@ createNode transform -n "spineUI_C0_root" -p "spine_C0_eff"; setAttr ".ctlSize" 1; setAttr ".parentJointIndex" -1; createNode nurbsCurve -n "spineUI_C0_rootShape" -p "spineUI_C0_root"; - rename -uid "D87F8CA2-4457-304C-33E5-06B9164132CC"; + rename -uid "295175C3-4A63-C851-EC4A-D98196B68364"; setAttr ".ihi" 0; setAttr -k off ".v"; setAttr ".ove" yes; @@ -709,7 +790,7 @@ createNode nurbsCurve -n "spineUI_C0_rootShape" -p "spineUI_C0_root"; -0.25 0 0 ; createNode nurbsCurve -n "spineUI_C0_root25Shape" -p "spineUI_C0_root"; - rename -uid "CE2976DB-4F17-32EC-5402-B5BC7B0F18E3"; + rename -uid "92D8FBB0-49C1-19BC-3B3B-0B9F8E8FAB23"; setAttr ".ihi" 0; setAttr -k off ".v"; setAttr ".ove" yes; @@ -722,7 +803,7 @@ createNode nurbsCurve -n "spineUI_C0_root25Shape" -p "spineUI_C0_root"; 0 -0.25 0 ; createNode nurbsCurve -n "spineUI_C0_root26Shape" -p "spineUI_C0_root"; - rename -uid "C47B7588-44F8-31ED-A09A-998569509F47"; + rename -uid "52662B36-4C1A-0F07-44DE-E1BF90575AFC"; setAttr ".ihi" 0; setAttr -k off ".v"; setAttr ".ove" yes; @@ -735,7 +816,7 @@ createNode nurbsCurve -n "spineUI_C0_root26Shape" -p "spineUI_C0_root"; 0 0 -0.25 ; createNode nurbsCurve -n "spineUI_C0_root27Shape" -p "spineUI_C0_root"; - rename -uid "7949131E-4FBE-3556-30A5-AE9D8CD29399"; + rename -uid "62C579B6-4044-FD36-7734-19A33CC235F8"; setAttr ".ihi" 0; setAttr -k off ".v"; setAttr ".ove" yes; @@ -762,7 +843,7 @@ createNode nurbsCurve -n "spineUI_C0_root27Shape" -p "spineUI_C0_root"; -0.125 -0.125 -0.125 ; createNode transform -n "spineUI_C0_sizeRef" -p "spineUI_C0_root"; - rename -uid "D12204A6-4996-A5B8-CB96-13A989170AC9"; + rename -uid "1AE0125B-4C75-2626-E505-E180B7E04A8F"; addAttr -ci true -sn "isGearGuide" -ln "isGearGuide" -dv 1 -min 0 -max 1 -at "bool"; setAttr -k off -cb on ".v"; setAttr ".t" -type "double3" 0 3.5527136788005009e-015 1.1821982708976555 ; @@ -778,7 +859,7 @@ createNode transform -n "spineUI_C0_sizeRef" -p "spineUI_C0_root"; setAttr -k off -cb on ".sy"; setAttr -k off -cb on ".sz"; createNode transform -n "shoulder_L0_root" -p "spine_C0_eff"; - rename -uid "CCB915D1-4398-8F45-7174-84BC380BAB03"; + rename -uid "B984EF84-4F3F-E970-E880-C6B570858F3D"; addAttr -ci true -sn "isGearGuide" -ln "isGearGuide" -dv 1 -min 0 -max 1 -at "bool"; addAttr -ci true -sn "comp_type" -ln "comp_type" -dt "string"; addAttr -ci true -sn "comp_name" -ln "comp_name" -dt "string"; @@ -810,10 +891,10 @@ createNode transform -n "shoulder_L0_root" -p "spine_C0_eff"; setAttr ".connector" -type "string" "standard"; setAttr ".ui_host" -type "string" "armUI_L0_root"; setAttr ".ctlGrp" -type "string" ""; - setAttr ".refArray" -type "string" "shoulder_L0_root,local_C0_root,body_C0_root,spine_C0_eff"; + setAttr ".refArray" -type "string" "shoulder_L0_root,local_C0_root,body_C0_root,spine_C0_eff,global_C0_root"; setAttr ".parentJointIndex" -1; createNode nurbsCurve -n "shoulder_L0_rootShape" -p "shoulder_L0_root"; - rename -uid "4C8364A8-4932-C3DD-C458-04BE61FD65DD"; + rename -uid "E7F7E836-47A9-EBCD-0442-DCBE1208D9D1"; setAttr ".ihi" 0; setAttr -k off ".v"; setAttr ".ove" yes; @@ -826,7 +907,7 @@ createNode nurbsCurve -n "shoulder_L0_rootShape" -p "shoulder_L0_root"; -0.25 0 0 ; createNode nurbsCurve -n "shoulder_L0_root25Shape" -p "shoulder_L0_root"; - rename -uid "3671C13A-405E-3282-747C-C4A3C70872DD"; + rename -uid "E20F966E-4205-07E2-4B34-508130070F6D"; setAttr ".ihi" 0; setAttr -k off ".v"; setAttr ".ove" yes; @@ -839,7 +920,7 @@ createNode nurbsCurve -n "shoulder_L0_root25Shape" -p "shoulder_L0_root"; 0 -0.25 0 ; createNode nurbsCurve -n "shoulder_L0_root26Shape" -p "shoulder_L0_root"; - rename -uid "6AEC96EF-4AB1-FEE6-7B3B-7DB3DF7627D2"; + rename -uid "E21373E4-482B-28C9-CA34-4FBA44885B87"; setAttr ".ihi" 0; setAttr -k off ".v"; setAttr ".ove" yes; @@ -852,7 +933,7 @@ createNode nurbsCurve -n "shoulder_L0_root26Shape" -p "shoulder_L0_root"; 0 0 -0.25 ; createNode nurbsCurve -n "shoulder_L0_root27Shape" -p "shoulder_L0_root"; - rename -uid "684DCFE4-497D-D1BB-98FA-79952A7EF6D8"; + rename -uid "E9A25A03-4642-F597-F161-229F4F9CE9E8"; setAttr ".ihi" 0; setAttr -k off ".v"; setAttr ".ove" yes; @@ -879,7 +960,7 @@ createNode nurbsCurve -n "shoulder_L0_root27Shape" -p "shoulder_L0_root"; -0.125 -0.125 -0.125 ; createNode transform -n "shoulder_L0_tip" -p "shoulder_L0_root"; - rename -uid "247C7C9C-4349-4F15-5326-638BEB2E3740"; + rename -uid "A5AD84BF-4B7B-02F7-0E9B-5696728DABC2"; addAttr -ci true -sn "isGearGuide" -ln "isGearGuide" -dv 1 -min 0 -max 1 -at "bool"; setAttr -k off -cb on ".v"; setAttr ".t" -type "double3" 0.33303929285645495 -0.91350954729966849 -1.5239746815175861 ; @@ -895,7 +976,7 @@ createNode transform -n "shoulder_L0_tip" -p "shoulder_L0_root"; setAttr -k off -cb on ".sy"; setAttr -k off -cb on ".sz"; createNode nurbsCurve -n "shoulder_L0_tipShape" -p "shoulder_L0_tip"; - rename -uid "300819FC-4BB1-5B83-7521-92A08AA53A21"; + rename -uid "B1EE12B4-4802-A0B7-E778-BA8BD0A9A2C1"; setAttr ".ihi" 0; setAttr -k off ".v"; setAttr ".ove" yes; @@ -908,7 +989,7 @@ createNode nurbsCurve -n "shoulder_L0_tipShape" -p "shoulder_L0_tip"; -0.25 0 0 ; createNode nurbsCurve -n "shoulder_L0_tip25Shape" -p "shoulder_L0_tip"; - rename -uid "DFEE8B31-4BAA-7F4C-6496-CF8275F384DD"; + rename -uid "C1A78790-4D1D-3D3D-B2B2-E5A6741E5BE6"; setAttr ".ihi" 0; setAttr -k off ".v"; setAttr ".ove" yes; @@ -921,7 +1002,7 @@ createNode nurbsCurve -n "shoulder_L0_tip25Shape" -p "shoulder_L0_tip"; 0 -0.25 0 ; createNode nurbsCurve -n "shoulder_L0_tip26Shape" -p "shoulder_L0_tip"; - rename -uid "A647513E-4731-11AB-DDA3-FCA4709579E5"; + rename -uid "199A51E3-45D4-DEB2-0C1C-DABB26D461A5"; setAttr ".ihi" 0; setAttr -k off ".v"; setAttr ".ove" yes; @@ -934,7 +1015,7 @@ createNode nurbsCurve -n "shoulder_L0_tip26Shape" -p "shoulder_L0_tip"; 0 0 -0.25 ; createNode nurbsCurve -n "shoulder_L0_tip27Shape" -p "shoulder_L0_tip"; - rename -uid "04FA70FA-44B0-9BD7-29D9-C79D7BE5391B"; + rename -uid "9BA84C80-4A79-8CBE-4102-DBA2D20C5E2F"; setAttr ".ihi" 0; setAttr -k off ".v"; setAttr ".ove" yes; @@ -952,7 +1033,7 @@ createNode nurbsCurve -n "shoulder_L0_tip27Shape" -p "shoulder_L0_tip"; -0.1875 0 0 ; createNode nurbsCurve -n "shoulder_L0_tip27_0crvShape" -p "shoulder_L0_tip"; - rename -uid "3DA02803-4D31-D439-A331-678A0634699B"; + rename -uid "5EEC213F-4F59-7F81-3135-6A907F720ED6"; setAttr ".ihi" 0; setAttr -k off ".v"; setAttr ".ove" yes; @@ -970,7 +1051,7 @@ createNode nurbsCurve -n "shoulder_L0_tip27_0crvShape" -p "shoulder_L0_tip"; -0.1875 0 0 ; createNode nurbsCurve -n "shoulder_L0_tip27_1crvShape" -p "shoulder_L0_tip"; - rename -uid "CC639575-4E63-D4A5-9EE0-069B773677CB"; + rename -uid "4F4CC602-418A-A67B-255A-53872F294ED0"; setAttr ".ihi" 0; setAttr -k off ".v"; setAttr ".ove" yes; @@ -988,7 +1069,7 @@ createNode nurbsCurve -n "shoulder_L0_tip27_1crvShape" -p "shoulder_L0_tip"; 0 0 -0.1875 ; createNode transform -n "arm_L0_root" -p "shoulder_L0_tip"; - rename -uid "D1181835-4544-F4CE-0040-68AED45BF565"; + rename -uid "863B6A76-4CDA-B65E-8E46-7FBD8E7AA141"; addAttr -ci true -sn "isGearGuide" -ln "isGearGuide" -dv 1 -min 0 -max 1 -at "bool"; addAttr -ci true -sn "comp_type" -ln "comp_type" -dt "string"; addAttr -ci true -sn "comp_name" -ln "comp_name" -dt "string"; @@ -1031,9 +1112,9 @@ createNode transform -n "arm_L0_root" -p "shoulder_L0_tip"; setAttr ".connector" -type "string" "standard"; setAttr ".ui_host" -type "string" "armUI_L0_root"; setAttr ".ctlGrp" -type "string" ""; - setAttr ".ikrefarray" -type "string" "shoulder_L0_tip,local_C0_root,body_C0_root,spine_C0_eff,spine_C0_root"; - setAttr ".upvrefarray" -type "string" "shoulder_L0_tip,local_C0_root,body_C0_root,spine_C0_eff,spine_C0_root"; - setAttr ".pinrefarray" -type "string" "shoulder_L0_tip,local_C0_root,body_C0_root,spine_C0_eff,spine_C0_root"; + setAttr ".ikrefarray" -type "string" "shoulder_L0_tip,local_C0_root,body_C0_root,spine_C0_eff,spine_C0_root,global_C0_root"; + setAttr ".upvrefarray" -type "string" "shoulder_L0_tip,local_C0_root,body_C0_root,spine_C0_eff,spine_C0_root,global_C0_root"; + setAttr ".pinrefarray" -type "string" "shoulder_L0_tip,local_C0_root,body_C0_root,spine_C0_eff,spine_C0_root,global_C0_root"; setAttr ".maxstretch" 1.5; setAttr ".ikTR" yes; setAttr ".mirrorMid" yes; @@ -1043,7 +1124,7 @@ createNode transform -n "arm_L0_root" -p "shoulder_L0_tip"; setAttr -k on ".sq_profile"; setAttr ".parentJointIndex" -1; createNode nurbsCurve -n "arm_L0_rootShape" -p "arm_L0_root"; - rename -uid "20BD6281-4570-BDA0-8D4A-679FD3361310"; + rename -uid "94199989-4ECE-F916-A335-0F898C304FF5"; setAttr ".ihi" 0; setAttr -k off ".v"; setAttr ".ove" yes; @@ -1056,7 +1137,7 @@ createNode nurbsCurve -n "arm_L0_rootShape" -p "arm_L0_root"; -0.25 0 0 ; createNode nurbsCurve -n "arm_L0_root25Shape" -p "arm_L0_root"; - rename -uid "D9BB82F7-487F-16F4-ABC3-2B94239BEA5E"; + rename -uid "DF11EC3D-426D-5632-BCBA-69BFE5938CCE"; setAttr ".ihi" 0; setAttr -k off ".v"; setAttr ".ove" yes; @@ -1069,7 +1150,7 @@ createNode nurbsCurve -n "arm_L0_root25Shape" -p "arm_L0_root"; 0 -0.25 0 ; createNode nurbsCurve -n "arm_L0_root26Shape" -p "arm_L0_root"; - rename -uid "FAB9E5CD-45EF-7C34-22CF-CE9E65D7208F"; + rename -uid "F11F7420-4F9C-D507-04AF-C5B360E24489"; setAttr ".ihi" 0; setAttr -k off ".v"; setAttr ".ove" yes; @@ -1082,7 +1163,7 @@ createNode nurbsCurve -n "arm_L0_root26Shape" -p "arm_L0_root"; 0 0 -0.25 ; createNode nurbsCurve -n "arm_L0_root27Shape" -p "arm_L0_root"; - rename -uid "C4C385BC-4AF4-F0F2-43F9-899D2608C363"; + rename -uid "924F26ED-4840-8B61-9009-ACB2BA89EB86"; setAttr ".ihi" 0; setAttr -k off ".v"; setAttr ".ove" yes; @@ -1109,7 +1190,7 @@ createNode nurbsCurve -n "arm_L0_root27Shape" -p "arm_L0_root"; -0.125 -0.125 -0.125 ; createNode transform -n "arm_L0_elbow" -p "arm_L0_root"; - rename -uid "7EA147B9-4A07-A02F-A046-DA94BDA70F16"; + rename -uid "50EEED0F-48A6-B9D7-5552-D98FC8B6B53E"; addAttr -ci true -sn "isGearGuide" -ln "isGearGuide" -dv 1 -min 0 -max 1 -at "bool"; setAttr -k off -cb on ".v"; setAttr ".t" -type "double3" 2.8283335982323328 3.5527136788005009e-015 0.078976790252909934 ; @@ -1126,7 +1207,7 @@ createNode transform -n "arm_L0_elbow" -p "arm_L0_root"; setAttr -k off -cb on ".sy"; setAttr -k off -cb on ".sz"; createNode nurbsCurve -n "arm_L0_elbowShape" -p "arm_L0_elbow"; - rename -uid "7A658DC8-47C0-28C9-D87B-299B988EBEC1"; + rename -uid "8AA4ADDE-46FC-D914-59E9-6D889B261CBE"; setAttr ".ihi" 0; setAttr -k off ".v"; setAttr ".ove" yes; @@ -1139,7 +1220,7 @@ createNode nurbsCurve -n "arm_L0_elbowShape" -p "arm_L0_elbow"; -0.25 0 0 ; createNode nurbsCurve -n "arm_L0_elbow25Shape" -p "arm_L0_elbow"; - rename -uid "CF2DD2AD-426C-B668-7BB8-FD9FBC1FDC6D"; + rename -uid "82B8308E-40C7-3DD5-ACEB-7BA34C9514F8"; setAttr ".ihi" 0; setAttr -k off ".v"; setAttr ".ove" yes; @@ -1152,7 +1233,7 @@ createNode nurbsCurve -n "arm_L0_elbow25Shape" -p "arm_L0_elbow"; 0 -0.25 0 ; createNode nurbsCurve -n "arm_L0_elbow26Shape" -p "arm_L0_elbow"; - rename -uid "2C6348B7-415F-0178-187B-3C84AD705453"; + rename -uid "05303B69-4AC3-DC8D-9AA3-2BACFBB836A8"; setAttr ".ihi" 0; setAttr -k off ".v"; setAttr ".ove" yes; @@ -1165,7 +1246,7 @@ createNode nurbsCurve -n "arm_L0_elbow26Shape" -p "arm_L0_elbow"; 0 0 -0.25 ; createNode nurbsCurve -n "arm_L0_elbow27Shape" -p "arm_L0_elbow"; - rename -uid "835A4A66-4DBB-9CCE-37C3-049577E82E46"; + rename -uid "2BA95774-4C84-084F-1598-47AD6FE8FB6F"; setAttr ".ihi" 0; setAttr -k off ".v"; setAttr ".ove" yes; @@ -1183,7 +1264,7 @@ createNode nurbsCurve -n "arm_L0_elbow27Shape" -p "arm_L0_elbow"; -0.1875 0 0 ; createNode nurbsCurve -n "arm_L0_elbow27_0crvShape" -p "arm_L0_elbow"; - rename -uid "8A10E1E2-4BC2-CC2D-58CD-8AA2CAAA7EA5"; + rename -uid "EDD655E3-4C7A-3E5F-4610-2883C7920098"; setAttr ".ihi" 0; setAttr -k off ".v"; setAttr ".ove" yes; @@ -1201,7 +1282,7 @@ createNode nurbsCurve -n "arm_L0_elbow27_0crvShape" -p "arm_L0_elbow"; -0.1875 0 0 ; createNode nurbsCurve -n "arm_L0_elbow27_1crvShape" -p "arm_L0_elbow"; - rename -uid "62C27FC1-45C5-005F-733E-D99B35AF3198"; + rename -uid "6B9E7F13-4E66-49E4-14A4-42B81998EC88"; setAttr ".ihi" 0; setAttr -k off ".v"; setAttr ".ove" yes; @@ -1219,7 +1300,7 @@ createNode nurbsCurve -n "arm_L0_elbow27_1crvShape" -p "arm_L0_elbow"; 0 0 -0.1875 ; createNode transform -n "arm_L0_wrist" -p "arm_L0_elbow"; - rename -uid "5EEA610B-455F-5B62-EE78-F68252567D47"; + rename -uid "122466BB-48C0-C178-D617-098A6BCCD6D1"; addAttr -ci true -sn "isGearGuide" -ln "isGearGuide" -dv 1 -min 0 -max 1 -at "bool"; setAttr -k off -cb on ".v"; setAttr ".t" -type "double3" 2.9351547891496952 0 -0.11960611218230566 ; @@ -1235,7 +1316,7 @@ createNode transform -n "arm_L0_wrist" -p "arm_L0_elbow"; setAttr -k off -cb on ".sy"; setAttr -k off -cb on ".sz"; createNode nurbsCurve -n "arm_L0_wristShape" -p "arm_L0_wrist"; - rename -uid "7928998A-42F7-C472-6354-89955AE70189"; + rename -uid "2737F2DA-4B58-C8A6-C214-6AB02CDB94AD"; setAttr ".ihi" 0; setAttr -k off ".v"; setAttr ".ove" yes; @@ -1248,7 +1329,7 @@ createNode nurbsCurve -n "arm_L0_wristShape" -p "arm_L0_wrist"; -0.25 0 0 ; createNode nurbsCurve -n "arm_L0_wrist25Shape" -p "arm_L0_wrist"; - rename -uid "0D9F0590-4DB4-C95C-8BEA-68856406A045"; + rename -uid "16443F8A-438D-8442-DD38-2C8722A3FD4D"; setAttr ".ihi" 0; setAttr -k off ".v"; setAttr ".ove" yes; @@ -1261,7 +1342,7 @@ createNode nurbsCurve -n "arm_L0_wrist25Shape" -p "arm_L0_wrist"; 0 -0.25 0 ; createNode nurbsCurve -n "arm_L0_wrist26Shape" -p "arm_L0_wrist"; - rename -uid "8BFC04BF-49D8-54E4-B7CE-58AD785F5EC1"; + rename -uid "7340F773-429B-0BA1-2E57-7596BAFC2DE6"; setAttr ".ihi" 0; setAttr -k off ".v"; setAttr ".ove" yes; @@ -1274,7 +1355,7 @@ createNode nurbsCurve -n "arm_L0_wrist26Shape" -p "arm_L0_wrist"; 0 0 -0.25 ; createNode nurbsCurve -n "arm_L0_wrist27Shape" -p "arm_L0_wrist"; - rename -uid "B293E595-41A5-F9D2-57A6-9888BF442ED4"; + rename -uid "0D58EDE0-4B24-8E7C-C035-9484C862C1B4"; setAttr ".ihi" 0; setAttr -k off ".v"; setAttr ".ove" yes; @@ -1292,7 +1373,7 @@ createNode nurbsCurve -n "arm_L0_wrist27Shape" -p "arm_L0_wrist"; -0.1875 0 0 ; createNode nurbsCurve -n "arm_L0_wrist27_0crvShape" -p "arm_L0_wrist"; - rename -uid "B702AD49-4D6E-EAB9-7E33-759CE041E036"; + rename -uid "0A438EFA-4D7E-ACB8-A030-B2A6B50FBF6E"; setAttr ".ihi" 0; setAttr -k off ".v"; setAttr ".ove" yes; @@ -1310,7 +1391,7 @@ createNode nurbsCurve -n "arm_L0_wrist27_0crvShape" -p "arm_L0_wrist"; -0.1875 0 0 ; createNode nurbsCurve -n "arm_L0_wrist27_1crvShape" -p "arm_L0_wrist"; - rename -uid "C8994D5D-41F8-0927-3779-5FBDB2B664DA"; + rename -uid "1C8D13A4-435A-621F-1BD9-2EAAAE8F5382"; setAttr ".ihi" 0; setAttr -k off ".v"; setAttr ".ove" yes; @@ -1328,7 +1409,7 @@ createNode nurbsCurve -n "arm_L0_wrist27_1crvShape" -p "arm_L0_wrist"; 0 0 -0.1875 ; createNode transform -n "arm_L0_eff" -p "arm_L0_wrist"; - rename -uid "A41A4CFB-44DA-47E9-894B-54AE851FF463"; + rename -uid "F9AE3693-4B40-64F7-ECDA-D986CA28DADF"; addAttr -ci true -sn "isGearGuide" -ln "isGearGuide" -dv 1 -min 0 -max 1 -at "bool"; setAttr -k off -cb on ".v"; setAttr ".t" -type "double3" 1.3207237066308166 7.1054273576010019e-015 6.9388939039072284e-016 ; @@ -1344,7 +1425,7 @@ createNode transform -n "arm_L0_eff" -p "arm_L0_wrist"; setAttr -k off -cb on ".sy"; setAttr -k off -cb on ".sz"; createNode nurbsCurve -n "arm_L0_effShape" -p "arm_L0_eff"; - rename -uid "58360095-4D6F-1C2A-A2CB-CC89D5B3468C"; + rename -uid "81CC1C0D-48FF-5476-5F70-A1945A27923B"; setAttr ".ihi" 0; setAttr -k off ".v"; setAttr ".ove" yes; @@ -1357,7 +1438,7 @@ createNode nurbsCurve -n "arm_L0_effShape" -p "arm_L0_eff"; -0.25 0 0 ; createNode nurbsCurve -n "arm_L0_eff25Shape" -p "arm_L0_eff"; - rename -uid "AA11FE37-4AA0-B40B-A138-BAA80C161E7B"; + rename -uid "0BE72018-4BCC-A2C0-4872-A5834B6F892F"; setAttr ".ihi" 0; setAttr -k off ".v"; setAttr ".ove" yes; @@ -1370,7 +1451,7 @@ createNode nurbsCurve -n "arm_L0_eff25Shape" -p "arm_L0_eff"; 0 -0.25 0 ; createNode nurbsCurve -n "arm_L0_eff26Shape" -p "arm_L0_eff"; - rename -uid "7268E469-439E-9FA1-D56A-D5BA2FE7F4E1"; + rename -uid "2D21C0F7-46F9-B86A-6323-97B1E7D41C12"; setAttr ".ihi" 0; setAttr -k off ".v"; setAttr ".ove" yes; @@ -1383,7 +1464,7 @@ createNode nurbsCurve -n "arm_L0_eff26Shape" -p "arm_L0_eff"; 0 0 -0.25 ; createNode nurbsCurve -n "arm_L0_eff27Shape" -p "arm_L0_eff"; - rename -uid "D0A90697-45CB-37ED-A0D2-AC8EEEE1ECFF"; + rename -uid "9F303C65-442B-73EA-36F0-4BBF06242618"; setAttr ".ihi" 0; setAttr -k off ".v"; setAttr ".ove" yes; @@ -1401,7 +1482,7 @@ createNode nurbsCurve -n "arm_L0_eff27Shape" -p "arm_L0_eff"; -0.1875 0 0 ; createNode nurbsCurve -n "arm_L0_eff27_0crvShape" -p "arm_L0_eff"; - rename -uid "293CEAB7-49EA-FDC9-89CC-40BF0994538A"; + rename -uid "9ABF98F5-4741-867D-FDEC-8295114DCCB7"; setAttr ".ihi" 0; setAttr -k off ".v"; setAttr ".ove" yes; @@ -1419,7 +1500,7 @@ createNode nurbsCurve -n "arm_L0_eff27_0crvShape" -p "arm_L0_eff"; -0.1875 0 0 ; createNode nurbsCurve -n "arm_L0_eff27_1crvShape" -p "arm_L0_eff"; - rename -uid "5C07E168-4B85-1567-DC58-658251AAA216"; + rename -uid "890EF6BE-4DB5-3EFD-E031-C68585D62C95"; setAttr ".ihi" 0; setAttr -k off ".v"; setAttr ".ove" yes; @@ -1437,7 +1518,7 @@ createNode nurbsCurve -n "arm_L0_eff27_1crvShape" -p "arm_L0_eff"; 0 0 -0.1875 ; createNode transform -n "armUI_L0_root" -p "arm_L0_eff"; - rename -uid "DEAA464D-487C-E9EE-3A72-EAB3498E6343"; + rename -uid "60C03CBA-4352-19EE-D192-EB8B07D7983E"; addAttr -ci true -sn "isGearGuide" -ln "isGearGuide" -dv 1 -min 0 -max 1 -at "bool"; addAttr -ci true -sn "comp_type" -ln "comp_type" -dt "string"; addAttr -ci true -sn "comp_name" -ln "comp_name" -dt "string"; @@ -1490,7 +1571,7 @@ createNode transform -n "armUI_L0_root" -p "arm_L0_eff"; setAttr ".ctlSize" 1; setAttr ".parentJointIndex" -1; createNode nurbsCurve -n "armUI_L0_rootShape" -p "armUI_L0_root"; - rename -uid "4906C5D2-4836-DF6E-354D-0D8DBCD98D80"; + rename -uid "CAAC56B9-4190-70E8-489D-1BBD36335BB5"; setAttr ".ihi" 0; setAttr -k off ".v"; setAttr ".ove" yes; @@ -1503,7 +1584,7 @@ createNode nurbsCurve -n "armUI_L0_rootShape" -p "armUI_L0_root"; -0.25 0 0 ; createNode nurbsCurve -n "armUI_L0_root25Shape" -p "armUI_L0_root"; - rename -uid "33001119-45F9-C9B9-2F43-0AA6709DD244"; + rename -uid "33F5DFD9-4977-1314-1F9F-B08A1E36FD5D"; setAttr ".ihi" 0; setAttr -k off ".v"; setAttr ".ove" yes; @@ -1516,7 +1597,7 @@ createNode nurbsCurve -n "armUI_L0_root25Shape" -p "armUI_L0_root"; 0 -0.25 0 ; createNode nurbsCurve -n "armUI_L0_root26Shape" -p "armUI_L0_root"; - rename -uid "7196FC89-4359-7D02-103A-7A811A7C093F"; + rename -uid "763E33DB-4A08-39C3-15C2-30BBE4B199F6"; setAttr ".ihi" 0; setAttr -k off ".v"; setAttr ".ove" yes; @@ -1529,7 +1610,7 @@ createNode nurbsCurve -n "armUI_L0_root26Shape" -p "armUI_L0_root"; 0 0 -0.25 ; createNode nurbsCurve -n "armUI_L0_root27Shape" -p "armUI_L0_root"; - rename -uid "982EBED3-4436-DB23-820A-93A83CA1FBC4"; + rename -uid "86D25C4E-4467-D427-92D2-78A4FBB45C86"; setAttr ".ihi" 0; setAttr -k off ".v"; setAttr ".ove" yes; @@ -1556,7 +1637,7 @@ createNode nurbsCurve -n "armUI_L0_root27Shape" -p "armUI_L0_root"; -0.125 -0.125 -0.125 ; createNode transform -n "armUI_L0_sizeRef" -p "armUI_L0_root"; - rename -uid "984E88A3-49D5-0793-3B52-BA9FBAE2E660"; + rename -uid "0AB84938-41D8-4D70-DBAA-FC8B6A9AF4E9"; addAttr -ci true -sn "isGearGuide" -ln "isGearGuide" -dv 1 -min 0 -max 1 -at "bool"; setAttr -k off -cb on ".v"; setAttr ".t" -type "double3" 0.11347623085809344 -0.027001577630493045 1.0430060296210657 ; @@ -1573,7 +1654,7 @@ createNode transform -n "armUI_L0_sizeRef" -p "armUI_L0_root"; setAttr -k off -cb on ".sy"; setAttr -k off -cb on ".sz"; createNode transform -n "meta_L0_root" -p "arm_L0_eff"; - rename -uid "314B0618-44D6-B1D3-B3D4-BA8FC23D9D9E"; + rename -uid "DA97F204-42CE-AA98-E252-CDAC2C467EA8"; addAttr -ci true -sn "isGearGuide" -ln "isGearGuide" -dv 1 -min 0 -max 1 -at "bool"; addAttr -ci true -sn "comp_type" -ln "comp_type" -dt "string"; addAttr -ci true -sn "comp_name" -ln "comp_name" -dt "string"; @@ -1592,7 +1673,7 @@ createNode transform -n "meta_L0_root" -p "arm_L0_eff"; setAttr -k off -cb on ".tx"; setAttr -k off -cb on ".ty"; setAttr -k off -cb on ".tz"; - setAttr ".r" -type "double3" 86.350349008866772 93.71738146693724 86.467960127478719 ; + setAttr ".r" -type "double3" 86.350349008866786 93.71738146693724 86.467960127478719 ; setAttr -k off -cb on ".rx"; setAttr -k off -cb on ".ry"; setAttr -k off -cb on ".rz"; @@ -1612,7 +1693,7 @@ createNode transform -n "meta_L0_root" -p "arm_L0_eff"; setAttr ".intTranslation" yes; setAttr ".parentJointIndex" -1; createNode nurbsCurve -n "meta_L0_rootShape" -p "meta_L0_root"; - rename -uid "EAC06A64-4AFB-B0B5-CE24-789298B05D97"; + rename -uid "B6A973C3-4B22-C42E-B294-83934CBE2E9C"; setAttr ".ihi" 0; setAttr -k off ".v"; setAttr ".ove" yes; @@ -1625,7 +1706,7 @@ createNode nurbsCurve -n "meta_L0_rootShape" -p "meta_L0_root"; -0.25 0 0 ; createNode nurbsCurve -n "meta_L0_root25Shape" -p "meta_L0_root"; - rename -uid "624A1EE5-4066-1F27-12E9-40ABE5782EEA"; + rename -uid "F418832B-4CC2-AC40-1864-25A07BB5C8D2"; setAttr ".ihi" 0; setAttr -k off ".v"; setAttr ".ove" yes; @@ -1638,7 +1719,7 @@ createNode nurbsCurve -n "meta_L0_root25Shape" -p "meta_L0_root"; 0 -0.25 0 ; createNode nurbsCurve -n "meta_L0_root26Shape" -p "meta_L0_root"; - rename -uid "55B6828B-4D79-77E0-7D60-49982EA99AE8"; + rename -uid "EA4EC16E-4E97-46E2-B43F-B3BD2D1528FF"; setAttr ".ihi" 0; setAttr -k off ".v"; setAttr ".ove" yes; @@ -1651,7 +1732,7 @@ createNode nurbsCurve -n "meta_L0_root26Shape" -p "meta_L0_root"; 0 0 -0.25 ; createNode nurbsCurve -n "meta_L0_root27Shape" -p "meta_L0_root"; - rename -uid "32E79E9D-4D90-3760-2A17-E9B769EACCBA"; + rename -uid "9A99D741-4E85-57ED-39C6-5B82E8FD7161"; setAttr ".ihi" 0; setAttr -k off ".v"; setAttr ".ove" yes; @@ -1678,7 +1759,7 @@ createNode nurbsCurve -n "meta_L0_root27Shape" -p "meta_L0_root"; -0.125 -0.125 -0.125 ; createNode transform -n "meta_L0_0_loc" -p "meta_L0_root"; - rename -uid "979A2A2C-4348-28FB-3303-C1A15771A565"; + rename -uid "A585AA2C-4571-B4A7-42E0-07BCB2FC1401"; addAttr -ci true -sn "isGearGuide" -ln "isGearGuide" -dv 1 -min 0 -max 1 -at "bool"; setAttr -k off -cb on ".v"; setAttr ".t" -type "double3" 0.66320847353617207 1.4210854715202004e-014 -2.6645352591003757e-014 ; @@ -1694,7 +1775,7 @@ createNode transform -n "meta_L0_0_loc" -p "meta_L0_root"; setAttr -k off -cb on ".sy"; setAttr -k off -cb on ".sz"; createNode nurbsCurve -n "meta_L0_0_locShape" -p "meta_L0_0_loc"; - rename -uid "CC586B5B-449B-0F36-CC82-3B959D382E01"; + rename -uid "182DFBA7-41DC-8030-8CBB-358B4550DE07"; setAttr ".ihi" 0; setAttr -k off ".v"; setAttr ".ove" yes; @@ -1707,7 +1788,7 @@ createNode nurbsCurve -n "meta_L0_0_locShape" -p "meta_L0_0_loc"; -0.25 0 0 ; createNode nurbsCurve -n "meta_L0_0_loc25Shape" -p "meta_L0_0_loc"; - rename -uid "AE4A24F8-4C28-4DCB-4488-8198D3D14D79"; + rename -uid "61083201-40FE-F925-A654-A281EEC86C86"; setAttr ".ihi" 0; setAttr -k off ".v"; setAttr ".ove" yes; @@ -1720,7 +1801,7 @@ createNode nurbsCurve -n "meta_L0_0_loc25Shape" -p "meta_L0_0_loc"; 0 -0.25 0 ; createNode nurbsCurve -n "meta_L0_0_loc26Shape" -p "meta_L0_0_loc"; - rename -uid "45E262AB-43B2-DB80-C531-4C8B9AF79EAF"; + rename -uid "4AD2FEBA-4A66-2DDD-2AB9-8BA461DDD16D"; setAttr ".ihi" 0; setAttr -k off ".v"; setAttr ".ove" yes; @@ -1733,7 +1814,7 @@ createNode nurbsCurve -n "meta_L0_0_loc26Shape" -p "meta_L0_0_loc"; 0 0 -0.25 ; createNode nurbsCurve -n "meta_L0_0_loc27Shape" -p "meta_L0_0_loc"; - rename -uid "9B3191DD-4981-2F4D-DD9C-DA9870B7DB37"; + rename -uid "6E7A4206-44DD-E825-5CBB-F68051BC8E7A"; setAttr ".ihi" 0; setAttr -k off ".v"; setAttr ".ove" yes; @@ -1751,7 +1832,7 @@ createNode nurbsCurve -n "meta_L0_0_loc27Shape" -p "meta_L0_0_loc"; -0.1875 0 0 ; createNode nurbsCurve -n "meta_L0_0_loc27_0crvShape" -p "meta_L0_0_loc"; - rename -uid "5D50D747-456B-FC42-E888-E4AB5F9D23BA"; + rename -uid "EA99077D-464D-8D14-0AB8-E1B3F213B48F"; setAttr ".ihi" 0; setAttr -k off ".v"; setAttr ".ove" yes; @@ -1769,7 +1850,7 @@ createNode nurbsCurve -n "meta_L0_0_loc27_0crvShape" -p "meta_L0_0_loc"; -0.1875 0 0 ; createNode nurbsCurve -n "meta_L0_0_loc27_1crvShape" -p "meta_L0_0_loc"; - rename -uid "B54CCC02-4EB0-8560-01EA-B2B2E8EBDD35"; + rename -uid "6291D4FA-43C3-90D6-F0D4-A9832BBC7258"; setAttr ".ihi" 0; setAttr -k off ".v"; setAttr ".ove" yes; @@ -1787,7 +1868,7 @@ createNode nurbsCurve -n "meta_L0_0_loc27_1crvShape" -p "meta_L0_0_loc"; 0 0 -0.1875 ; createNode transform -n "meta_L0_1_loc" -p "meta_L0_0_loc"; - rename -uid "E0B7AB20-4CD3-E4D3-2E74-D98D4AD2E6DF"; + rename -uid "3FD400E8-468F-8154-8279-D4B79024193F"; addAttr -ci true -sn "isGearGuide" -ln "isGearGuide" -dv 1 -min 0 -max 1 -at "bool"; setAttr -k off -cb on ".v"; setAttr ".t" -type "double3" 0.66320847353618406 7.1054273576010019e-015 1.2434497875801753e-014 ; @@ -1803,7 +1884,7 @@ createNode transform -n "meta_L0_1_loc" -p "meta_L0_0_loc"; setAttr -k off -cb on ".sy"; setAttr -k off -cb on ".sz"; createNode nurbsCurve -n "meta_L0_1_locShape" -p "meta_L0_1_loc"; - rename -uid "D516EF82-45F2-65D2-91BB-229DE3C9AD15"; + rename -uid "3BE4651C-4950-5C01-968C-10AF8087F378"; setAttr ".ihi" 0; setAttr -k off ".v"; setAttr ".ove" yes; @@ -1816,7 +1897,7 @@ createNode nurbsCurve -n "meta_L0_1_locShape" -p "meta_L0_1_loc"; -0.25 0 0 ; createNode nurbsCurve -n "meta_L0_1_loc25Shape" -p "meta_L0_1_loc"; - rename -uid "2600502B-4BCA-B9AC-81BB-9F955CD77570"; + rename -uid "D39D9061-486C-5FB2-8896-1D8F50D69B55"; setAttr ".ihi" 0; setAttr -k off ".v"; setAttr ".ove" yes; @@ -1829,7 +1910,7 @@ createNode nurbsCurve -n "meta_L0_1_loc25Shape" -p "meta_L0_1_loc"; 0 -0.25 0 ; createNode nurbsCurve -n "meta_L0_1_loc26Shape" -p "meta_L0_1_loc"; - rename -uid "6552C40F-4E55-9A12-7D18-DA8B2AC559A9"; + rename -uid "B151FCD7-4401-0BD6-BC60-A8BA8C770662"; setAttr ".ihi" 0; setAttr -k off ".v"; setAttr ".ove" yes; @@ -1842,7 +1923,7 @@ createNode nurbsCurve -n "meta_L0_1_loc26Shape" -p "meta_L0_1_loc"; 0 0 -0.25 ; createNode nurbsCurve -n "meta_L0_1_loc27Shape" -p "meta_L0_1_loc"; - rename -uid "148BA794-42C4-D5E0-7B83-71BD3E367538"; + rename -uid "EDF2F7F3-4CBD-C3E0-82D8-FE82491A14C1"; setAttr ".ihi" 0; setAttr -k off ".v"; setAttr ".ove" yes; @@ -1860,7 +1941,7 @@ createNode nurbsCurve -n "meta_L0_1_loc27Shape" -p "meta_L0_1_loc"; -0.1875 0 0 ; createNode nurbsCurve -n "meta_L0_1_loc27_0crvShape" -p "meta_L0_1_loc"; - rename -uid "06EF20D1-4A77-CA85-519D-5F81B1FF2DB0"; + rename -uid "88065115-44BC-6A80-2BB8-F5BABF2D8BB3"; setAttr ".ihi" 0; setAttr -k off ".v"; setAttr ".ove" yes; @@ -1878,7 +1959,7 @@ createNode nurbsCurve -n "meta_L0_1_loc27_0crvShape" -p "meta_L0_1_loc"; -0.1875 0 0 ; createNode nurbsCurve -n "meta_L0_1_loc27_1crvShape" -p "meta_L0_1_loc"; - rename -uid "A041669C-4BA8-8176-454E-2FA417E00E41"; + rename -uid "3F434883-4E8F-1608-532A-BB85C79AC96A"; setAttr ".ihi" 0; setAttr -k off ".v"; setAttr ".ove" yes; @@ -1896,7 +1977,7 @@ createNode nurbsCurve -n "meta_L0_1_loc27_1crvShape" -p "meta_L0_1_loc"; 0 0 -0.1875 ; createNode transform -n "meta_L0_2_loc" -p "meta_L0_1_loc"; - rename -uid "8C89428C-4A0C-7C99-64B0-D6A8776280C8"; + rename -uid "D68AE4EF-4A8E-77DA-65CE-489CD9E0CB68"; addAttr -ci true -sn "isGearGuide" -ln "isGearGuide" -dv 1 -min 0 -max 1 -at "bool"; setAttr -k off -cb on ".v"; setAttr ".t" -type "double3" 0.66320847353618451 7.1054273576010019e-015 -2.6645352591003757e-014 ; @@ -1912,7 +1993,7 @@ createNode transform -n "meta_L0_2_loc" -p "meta_L0_1_loc"; setAttr -k off -cb on ".sy"; setAttr -k off -cb on ".sz"; createNode nurbsCurve -n "meta_L0_2_locShape" -p "meta_L0_2_loc"; - rename -uid "F1A6D723-4FCA-BC8E-CD6C-DCB1D423E8D1"; + rename -uid "45AAC2FF-4C1C-04F8-C96C-9D815E5670A4"; setAttr ".ihi" 0; setAttr -k off ".v"; setAttr ".ove" yes; @@ -1925,7 +2006,7 @@ createNode nurbsCurve -n "meta_L0_2_locShape" -p "meta_L0_2_loc"; -0.25 0 0 ; createNode nurbsCurve -n "meta_L0_2_loc25Shape" -p "meta_L0_2_loc"; - rename -uid "901EFEC6-4846-AB8C-5721-F89236D2AB9A"; + rename -uid "23147271-45D1-C90A-C2D0-338E585F0D80"; setAttr ".ihi" 0; setAttr -k off ".v"; setAttr ".ove" yes; @@ -1938,7 +2019,7 @@ createNode nurbsCurve -n "meta_L0_2_loc25Shape" -p "meta_L0_2_loc"; 0 -0.25 0 ; createNode nurbsCurve -n "meta_L0_2_loc26Shape" -p "meta_L0_2_loc"; - rename -uid "762C2F37-4C5F-01B0-1592-02B645783A45"; + rename -uid "6147A53D-4B00-16E3-131E-0483DCA63DDF"; setAttr ".ihi" 0; setAttr -k off ".v"; setAttr ".ove" yes; @@ -1951,7 +2032,7 @@ createNode nurbsCurve -n "meta_L0_2_loc26Shape" -p "meta_L0_2_loc"; 0 0 -0.25 ; createNode nurbsCurve -n "meta_L0_2_loc27Shape" -p "meta_L0_2_loc"; - rename -uid "C2693270-4B5D-D34F-9636-1AB4E718B2CF"; + rename -uid "7ED5AF36-4DEC-0E58-7500-28B5F0A94D31"; setAttr ".ihi" 0; setAttr -k off ".v"; setAttr ".ove" yes; @@ -1969,7 +2050,7 @@ createNode nurbsCurve -n "meta_L0_2_loc27Shape" -p "meta_L0_2_loc"; -0.1875 0 0 ; createNode nurbsCurve -n "meta_L0_2_loc27_0crvShape" -p "meta_L0_2_loc"; - rename -uid "E254F2FB-4C9A-D470-B15F-2B88EE0E7505"; + rename -uid "79F27A56-4537-AD1F-243E-81A6E5613FB7"; setAttr ".ihi" 0; setAttr -k off ".v"; setAttr ".ove" yes; @@ -1987,7 +2068,7 @@ createNode nurbsCurve -n "meta_L0_2_loc27_0crvShape" -p "meta_L0_2_loc"; -0.1875 0 0 ; createNode nurbsCurve -n "meta_L0_2_loc27_1crvShape" -p "meta_L0_2_loc"; - rename -uid "B96BB398-4644-2101-149F-EDAC37D28BA8"; + rename -uid "29FEE1E7-4066-3036-781F-2DB7F1E8CECB"; setAttr ".ihi" 0; setAttr -k off ".v"; setAttr ".ove" yes; @@ -2005,7 +2086,7 @@ createNode nurbsCurve -n "meta_L0_2_loc27_1crvShape" -p "meta_L0_2_loc"; 0 0 -0.1875 ; createNode transform -n "finger_L3_root" -p "meta_L0_2_loc"; - rename -uid "53A0EE4D-4170-051E-7888-0785AA34738E"; + rename -uid "FB437058-4D9B-C624-FC3F-178A6AB29CCE"; addAttr -ci true -sn "isGearGuide" -ln "isGearGuide" -dv 1 -min 0 -max 1 -at "bool"; addAttr -ci true -sn "comp_type" -ln "comp_type" -dt "string"; addAttr -ci true -sn "comp_name" -ln "comp_name" -dt "string"; @@ -2046,7 +2127,7 @@ createNode transform -n "finger_L3_root" -p "meta_L0_2_loc"; setAttr ".ikrefarray" -type "string" ""; setAttr ".parentJointIndex" -1; createNode nurbsCurve -n "finger_L3_rootShape" -p "finger_L3_root"; - rename -uid "5C39EA12-4282-4626-E6B3-7383146CD352"; + rename -uid "68AEB714-4EC6-C09A-5293-1EA68F445B09"; setAttr ".ihi" 0; setAttr -k off ".v"; setAttr ".ove" yes; @@ -2059,7 +2140,7 @@ createNode nurbsCurve -n "finger_L3_rootShape" -p "finger_L3_root"; -0.25 0 0 ; createNode nurbsCurve -n "finger_L3_root25Shape" -p "finger_L3_root"; - rename -uid "9620DDCB-49D6-216A-F048-15B80DFDDCF9"; + rename -uid "E1332A26-4759-ACA3-8F01-0593B5443DA4"; setAttr ".ihi" 0; setAttr -k off ".v"; setAttr ".ove" yes; @@ -2072,7 +2153,7 @@ createNode nurbsCurve -n "finger_L3_root25Shape" -p "finger_L3_root"; 0 -0.25 0 ; createNode nurbsCurve -n "finger_L3_root26Shape" -p "finger_L3_root"; - rename -uid "757B43A8-4301-C335-E089-3BA8D168FBF1"; + rename -uid "2D290959-4311-DC38-FD8E-C09E3B645DE8"; setAttr ".ihi" 0; setAttr -k off ".v"; setAttr ".ove" yes; @@ -2085,7 +2166,7 @@ createNode nurbsCurve -n "finger_L3_root26Shape" -p "finger_L3_root"; 0 0 -0.25 ; createNode nurbsCurve -n "finger_L3_root27Shape" -p "finger_L3_root"; - rename -uid "DD04A1AE-44F3-D93F-0408-07BA103017E1"; + rename -uid "8996337C-4758-6B00-F364-F7B649D8DB6C"; setAttr ".ihi" 0; setAttr -k off ".v"; setAttr ".ove" yes; @@ -2112,7 +2193,7 @@ createNode nurbsCurve -n "finger_L3_root27Shape" -p "finger_L3_root"; -0.125 -0.125 -0.125 ; createNode transform -n "finger_L3_0_loc" -p "finger_L3_root"; - rename -uid "124C78B8-4448-AAE3-6DD8-2DAD72A79F99"; + rename -uid "D9C18358-412D-12F7-4B9F-03BE6BFA9408"; addAttr -ci true -sn "isGearGuide" -ln "isGearGuide" -dv 1 -min 0 -max 1 -at "bool"; setAttr -k off -cb on ".v"; setAttr ".t" -type "double3" 0.84766209830561934 1.4210854715202004e-014 -4.6629367034256575e-015 ; @@ -2128,7 +2209,7 @@ createNode transform -n "finger_L3_0_loc" -p "finger_L3_root"; setAttr -k off -cb on ".sy"; setAttr -k off -cb on ".sz"; createNode nurbsCurve -n "finger_L3_0_locShape" -p "finger_L3_0_loc"; - rename -uid "5CB6639E-4E8B-4801-3D05-1890C80E5740"; + rename -uid "B73B8A86-4A17-1259-5013-31955235E617"; setAttr ".ihi" 0; setAttr -k off ".v"; setAttr ".ove" yes; @@ -2141,7 +2222,7 @@ createNode nurbsCurve -n "finger_L3_0_locShape" -p "finger_L3_0_loc"; -0.25 0 0 ; createNode nurbsCurve -n "finger_L3_0_loc25Shape" -p "finger_L3_0_loc"; - rename -uid "4B018023-46F5-30D5-144C-1D9669B3971B"; + rename -uid "6EA4288E-4010-8888-535E-4F9060DD31BB"; setAttr ".ihi" 0; setAttr -k off ".v"; setAttr ".ove" yes; @@ -2154,7 +2235,7 @@ createNode nurbsCurve -n "finger_L3_0_loc25Shape" -p "finger_L3_0_loc"; 0 -0.25 0 ; createNode nurbsCurve -n "finger_L3_0_loc26Shape" -p "finger_L3_0_loc"; - rename -uid "F79372A0-4D34-A813-EE75-03B1C977A66C"; + rename -uid "12B9056E-4FB2-F993-7E0B-758FB0B923E9"; setAttr ".ihi" 0; setAttr -k off ".v"; setAttr ".ove" yes; @@ -2167,7 +2248,7 @@ createNode nurbsCurve -n "finger_L3_0_loc26Shape" -p "finger_L3_0_loc"; 0 0 -0.25 ; createNode nurbsCurve -n "finger_L3_0_loc27Shape" -p "finger_L3_0_loc"; - rename -uid "A81F3D68-4071-B538-4748-42BAE3AB7AEB"; + rename -uid "F70E89D3-47B1-FD1C-7979-D68C84E6E44B"; setAttr ".ihi" 0; setAttr -k off ".v"; setAttr ".ove" yes; @@ -2185,7 +2266,7 @@ createNode nurbsCurve -n "finger_L3_0_loc27Shape" -p "finger_L3_0_loc"; -0.1875 0 0 ; createNode nurbsCurve -n "finger_L3_0_loc27_0crvShape" -p "finger_L3_0_loc"; - rename -uid "29750850-41A1-272A-8253-56A04A900BBC"; + rename -uid "216C442A-4995-6889-FC02-A08E826B42BA"; setAttr ".ihi" 0; setAttr -k off ".v"; setAttr ".ove" yes; @@ -2203,7 +2284,7 @@ createNode nurbsCurve -n "finger_L3_0_loc27_0crvShape" -p "finger_L3_0_loc"; -0.1875 0 0 ; createNode nurbsCurve -n "finger_L3_0_loc27_1crvShape" -p "finger_L3_0_loc"; - rename -uid "446CEA4D-4418-34EE-89FE-17884EA627EA"; + rename -uid "CD8ED8D0-4EE7-DEB9-290B-189323C1BD6E"; setAttr ".ihi" 0; setAttr -k off ".v"; setAttr ".ove" yes; @@ -2221,7 +2302,7 @@ createNode nurbsCurve -n "finger_L3_0_loc27_1crvShape" -p "finger_L3_0_loc"; 0 0 -0.1875 ; createNode transform -n "finger_L3_1_loc" -p "finger_L3_0_loc"; - rename -uid "B5B2E4D1-4A58-EC96-DE69-46B62F0F1E01"; + rename -uid "3F5369F4-4D7D-DACA-8C2A-AF8CB938F690"; addAttr -ci true -sn "isGearGuide" -ln "isGearGuide" -dv 1 -min 0 -max 1 -at "bool"; setAttr -k off -cb on ".v"; setAttr ".t" -type "double3" 0.57524361070876839 -1.7763568394002505e-014 1.1102230246251565e-015 ; @@ -2237,7 +2318,7 @@ createNode transform -n "finger_L3_1_loc" -p "finger_L3_0_loc"; setAttr -k off -cb on ".sy"; setAttr -k off -cb on ".sz"; createNode nurbsCurve -n "finger_L3_1_locShape" -p "finger_L3_1_loc"; - rename -uid "9A146FBB-440D-6ECE-6250-DF87A1F1BF3D"; + rename -uid "22877B88-4C8F-5E0A-813B-23A243BB05CC"; setAttr ".ihi" 0; setAttr -k off ".v"; setAttr ".ove" yes; @@ -2250,7 +2331,7 @@ createNode nurbsCurve -n "finger_L3_1_locShape" -p "finger_L3_1_loc"; -0.25 0 0 ; createNode nurbsCurve -n "finger_L3_1_loc25Shape" -p "finger_L3_1_loc"; - rename -uid "5DC18368-4FF7-E1D9-8603-0C9F7811728D"; + rename -uid "E09104CA-40A3-61B4-AC81-0A90222EA4E4"; setAttr ".ihi" 0; setAttr -k off ".v"; setAttr ".ove" yes; @@ -2263,7 +2344,7 @@ createNode nurbsCurve -n "finger_L3_1_loc25Shape" -p "finger_L3_1_loc"; 0 -0.25 0 ; createNode nurbsCurve -n "finger_L3_1_loc26Shape" -p "finger_L3_1_loc"; - rename -uid "5B231DE0-411D-0FF7-AEFE-AC92DF592DBD"; + rename -uid "6042C87F-4622-3122-EB17-A294E2E27780"; setAttr ".ihi" 0; setAttr -k off ".v"; setAttr ".ove" yes; @@ -2276,7 +2357,7 @@ createNode nurbsCurve -n "finger_L3_1_loc26Shape" -p "finger_L3_1_loc"; 0 0 -0.25 ; createNode nurbsCurve -n "finger_L3_1_loc27Shape" -p "finger_L3_1_loc"; - rename -uid "93854A5D-4092-AD2A-9249-37ACC4FF5595"; + rename -uid "F9C65DD2-4FDB-0157-37B9-A79A174C6751"; setAttr ".ihi" 0; setAttr -k off ".v"; setAttr ".ove" yes; @@ -2294,7 +2375,7 @@ createNode nurbsCurve -n "finger_L3_1_loc27Shape" -p "finger_L3_1_loc"; -0.1875 0 0 ; createNode nurbsCurve -n "finger_L3_1_loc27_0crvShape" -p "finger_L3_1_loc"; - rename -uid "5B0B4F41-4E4B-C713-50EB-C591538B37F8"; + rename -uid "C79A4836-43B8-A50D-3F84-FAB3D7B7C857"; setAttr ".ihi" 0; setAttr -k off ".v"; setAttr ".ove" yes; @@ -2312,7 +2393,7 @@ createNode nurbsCurve -n "finger_L3_1_loc27_0crvShape" -p "finger_L3_1_loc"; -0.1875 0 0 ; createNode nurbsCurve -n "finger_L3_1_loc27_1crvShape" -p "finger_L3_1_loc"; - rename -uid "217DCBDB-44FC-CCE1-6CFA-EB8CF202E074"; + rename -uid "6D9E9243-47E6-6A26-1452-4BB323CEF395"; setAttr ".ihi" 0; setAttr -k off ".v"; setAttr ".ove" yes; @@ -2330,7 +2411,7 @@ createNode nurbsCurve -n "finger_L3_1_loc27_1crvShape" -p "finger_L3_1_loc"; 0 0 -0.1875 ; createNode transform -n "finger_L3_2_loc" -p "finger_L3_1_loc"; - rename -uid "BAD062A3-4E69-E0DE-BF48-4D9424718A43"; + rename -uid "3344A37A-4DC2-1B59-5690-A39A4FE3E60D"; addAttr -ci true -sn "isGearGuide" -ln "isGearGuide" -dv 1 -min 0 -max 1 -at "bool"; setAttr -k off -cb on ".v"; setAttr ".t" -type "double3" 0.31616177259193456 0 4.4408920985006262e-016 ; @@ -2346,7 +2427,7 @@ createNode transform -n "finger_L3_2_loc" -p "finger_L3_1_loc"; setAttr -k off -cb on ".sy"; setAttr -k off -cb on ".sz"; createNode nurbsCurve -n "finger_L3_2_locShape" -p "finger_L3_2_loc"; - rename -uid "6B01524B-45CD-A01A-0524-1D8A4A688D80"; + rename -uid "DFD67111-448B-8C8A-320A-B38D010BE362"; setAttr ".ihi" 0; setAttr -k off ".v"; setAttr ".ove" yes; @@ -2359,7 +2440,7 @@ createNode nurbsCurve -n "finger_L3_2_locShape" -p "finger_L3_2_loc"; -0.25 0 0 ; createNode nurbsCurve -n "finger_L3_2_loc25Shape" -p "finger_L3_2_loc"; - rename -uid "F7DC746B-4442-04C8-A7F3-97996F33D702"; + rename -uid "493AEB06-4C77-6EF3-1F30-8A893321B4A8"; setAttr ".ihi" 0; setAttr -k off ".v"; setAttr ".ove" yes; @@ -2372,7 +2453,7 @@ createNode nurbsCurve -n "finger_L3_2_loc25Shape" -p "finger_L3_2_loc"; 0 -0.25 0 ; createNode nurbsCurve -n "finger_L3_2_loc26Shape" -p "finger_L3_2_loc"; - rename -uid "C8113D42-4E65-CC6B-4764-8B8B4FB138A7"; + rename -uid "8D525B7C-46D5-E8B4-6E8A-9AA2A7852183"; setAttr ".ihi" 0; setAttr -k off ".v"; setAttr ".ove" yes; @@ -2385,7 +2466,7 @@ createNode nurbsCurve -n "finger_L3_2_loc26Shape" -p "finger_L3_2_loc"; 0 0 -0.25 ; createNode nurbsCurve -n "finger_L3_2_loc27Shape" -p "finger_L3_2_loc"; - rename -uid "5CBFD58D-4874-D3F8-F06F-FD91BDED189A"; + rename -uid "5248BDFE-4720-ECC1-BC14-47A6F52A358E"; setAttr ".ihi" 0; setAttr -k off ".v"; setAttr ".ove" yes; @@ -2403,7 +2484,7 @@ createNode nurbsCurve -n "finger_L3_2_loc27Shape" -p "finger_L3_2_loc"; -0.1875 0 0 ; createNode nurbsCurve -n "finger_L3_2_loc27_0crvShape" -p "finger_L3_2_loc"; - rename -uid "184B53ED-4B9A-C2DB-451F-1C91B184DE68"; + rename -uid "A3DC516E-49A4-0583-65DD-40A04CE8C50E"; setAttr ".ihi" 0; setAttr -k off ".v"; setAttr ".ove" yes; @@ -2421,7 +2502,7 @@ createNode nurbsCurve -n "finger_L3_2_loc27_0crvShape" -p "finger_L3_2_loc"; -0.1875 0 0 ; createNode nurbsCurve -n "finger_L3_2_loc27_1crvShape" -p "finger_L3_2_loc"; - rename -uid "F349F5A0-44B1-9E77-D466-BC88596F05E1"; + rename -uid "7DBAEEAB-4D24-8B53-0616-FFA6D91B0559"; setAttr ".ihi" 0; setAttr -k off ".v"; setAttr ".ove" yes; @@ -2439,7 +2520,7 @@ createNode nurbsCurve -n "finger_L3_2_loc27_1crvShape" -p "finger_L3_2_loc"; 0 0 -0.1875 ; createNode transform -n "finger_L3_blade" -p "finger_L3_root"; - rename -uid "38BB3E01-4EDF-9B24-8AFF-049316B6B572"; + rename -uid "6323C71F-4D9D-9EF7-3E49-679943A7CD09"; addAttr -ci true -k true -sn "bladeRollOffset" -ln "bladeRollOffset" -at "float"; setAttr -l on -k off -cb on ".v"; setAttr -k off -cb on ".tx"; @@ -2455,7 +2536,7 @@ createNode transform -n "finger_L3_blade" -p "finger_L3_root"; setAttr -l on -k off -cb on ".sz"; setAttr -k on ".bladeRollOffset"; createNode nurbsCurve -n "finger_L3_bladeShape" -p "finger_L3_blade"; - rename -uid "E7FFEC55-4222-3CAD-4F0B-389BCD51E366"; + rename -uid "E0AA813B-4543-6790-B945-338976F8AA0E"; setAttr ".ihi" 0; setAttr -k off ".v"; setAttr ".ove" yes; @@ -2470,7 +2551,7 @@ createNode nurbsCurve -n "finger_L3_bladeShape" -p "finger_L3_blade"; 0 0 0 ; createNode aimConstraint -n "finger_L3_blade_aimConstraint9" -p "finger_L3_blade"; - rename -uid "5F320DAF-44BF-C52D-DCBA-0F964F65E7E2"; + rename -uid "83F669CA-4448-28DE-0F4C-F1948E275BE3"; addAttr -dcb 0 -ci true -sn "w0" -ln "finger_L3_0_locW0" -dv 1 -at "double"; setAttr -k on ".nds"; setAttr -k off ".v"; @@ -2487,7 +2568,7 @@ createNode aimConstraint -n "finger_L3_blade_aimConstraint9" -p "finger_L3_blade setAttr ".wut" 2; setAttr -k on ".w0"; createNode pointConstraint -n "finger_L3_blade_pointConstraint9" -p "finger_L3_blade"; - rename -uid "48558682-4FCE-E7E5-A9AF-A8917F41BD53"; + rename -uid "249B77DB-4D72-C357-A1CB-3A938A5D72DF"; addAttr -dcb 0 -ci true -k true -sn "w0" -ln "finger_L3_rootW0" -dv 1 -min 0 -at "double"; setAttr -k on ".nds"; setAttr -k off ".v"; @@ -2504,19 +2585,19 @@ createNode pointConstraint -n "finger_L3_blade_pointConstraint9" -p "finger_L3_b setAttr ".rst" -type "double3" 1.7763568394002505e-015 0 6.6613381477509392e-016 ; setAttr -k on ".w0"; createNode transform -n "finger_L3_crv" -p "finger_L3_root"; - rename -uid "B6F70AC7-4874-806E-B36A-9990A36FB421"; + rename -uid "906A79DE-4B88-BE47-71A3-4DAE69B0DA56"; setAttr ".ovdt" 1; setAttr ".ove" yes; setAttr ".t" -type "double3" 8.1560938646754515 -29.032786855763469 1.4804327725045308 ; setAttr ".r" -type "double3" -7.5791665394140972 -14.304244378901332 49.348303523761764 ; setAttr ".s" -type "double3" 2.6320983106786136 2.632098310678602 2.6320983106786078 ; createNode nurbsCurve -n "finger_L3_crvShape" -p "finger_L3_crv"; - rename -uid "E569F681-4567-021E-3368-B996D22AC45D"; + rename -uid "A84822B9-4A94-8F9E-1BB6-828DEAE68A0C"; setAttr -k off ".v"; setAttr -s 4 ".iog[0].og"; setAttr ".tw" yes; createNode nurbsCurve -n "finger_L3_crvShapeOrig" -p "finger_L3_crv"; - rename -uid "C31A3363-453D-3A0D-C865-60BB0EB9578C"; + rename -uid "0CD40457-4F18-3DFA-331B-439F22FE1635"; setAttr -k off ".v"; setAttr ".io" yes; setAttr ".cc" -type "nurbsCurve" @@ -2529,7 +2610,7 @@ createNode nurbsCurve -n "finger_L3_crvShapeOrig" -p "finger_L3_crv"; 0 0 0 ; createNode transform -n "finger_L2_root" -p "meta_L0_1_loc"; - rename -uid "B5722177-49D8-2CEC-27A0-C5BB60B380DB"; + rename -uid "57DA8E24-423A-7027-211D-F8BCBAA7FF04"; addAttr -ci true -sn "isGearGuide" -ln "isGearGuide" -dv 1 -min 0 -max 1 -at "bool"; addAttr -ci true -sn "comp_type" -ln "comp_type" -dt "string"; addAttr -ci true -sn "comp_name" -ln "comp_name" -dt "string"; @@ -2570,7 +2651,7 @@ createNode transform -n "finger_L2_root" -p "meta_L0_1_loc"; setAttr ".ikrefarray" -type "string" ""; setAttr ".parentJointIndex" -1; createNode nurbsCurve -n "finger_L2_rootShape" -p "finger_L2_root"; - rename -uid "B51CB226-47A2-3924-6157-E1AC20EE6463"; + rename -uid "11EF1226-46C2-A172-EB9F-3C840ECD1BBF"; setAttr ".ihi" 0; setAttr -k off ".v"; setAttr ".ove" yes; @@ -2583,7 +2664,7 @@ createNode nurbsCurve -n "finger_L2_rootShape" -p "finger_L2_root"; -0.25 0 0 ; createNode nurbsCurve -n "finger_L2_root25Shape" -p "finger_L2_root"; - rename -uid "92A93AD6-41AF-50B6-8B7B-02AD6E1A2E6E"; + rename -uid "FA65E776-4AD8-BA5E-0BA6-B6AE407C7E73"; setAttr ".ihi" 0; setAttr -k off ".v"; setAttr ".ove" yes; @@ -2596,7 +2677,7 @@ createNode nurbsCurve -n "finger_L2_root25Shape" -p "finger_L2_root"; 0 -0.25 0 ; createNode nurbsCurve -n "finger_L2_root26Shape" -p "finger_L2_root"; - rename -uid "D31FAD55-4215-13A2-1B30-37A5411083CF"; + rename -uid "D2CE43F0-46AA-7EE5-8E46-D8B46B11C77F"; setAttr ".ihi" 0; setAttr -k off ".v"; setAttr ".ove" yes; @@ -2609,7 +2690,7 @@ createNode nurbsCurve -n "finger_L2_root26Shape" -p "finger_L2_root"; 0 0 -0.25 ; createNode nurbsCurve -n "finger_L2_root27Shape" -p "finger_L2_root"; - rename -uid "7426907E-45A1-7B07-E38B-2193BA7021D5"; + rename -uid "95D8DDE0-4BE4-FF0C-B3A7-208847A4CDFD"; setAttr ".ihi" 0; setAttr -k off ".v"; setAttr ".ove" yes; @@ -2636,7 +2717,7 @@ createNode nurbsCurve -n "finger_L2_root27Shape" -p "finger_L2_root"; -0.125 -0.125 -0.125 ; createNode transform -n "finger_L2_0_loc" -p "finger_L2_root"; - rename -uid "4498F4B1-46B2-20CB-8F54-C4BA41E96102"; + rename -uid "4A479D2F-427B-E9EC-99FA-A487F53D724B"; addAttr -ci true -sn "isGearGuide" -ln "isGearGuide" -dv 1 -min 0 -max 1 -at "bool"; setAttr -k off -cb on ".v"; setAttr ".t" -type "double3" 0.94501387217406929 -1.7763568394002505e-014 2.886579864025407e-015 ; @@ -2652,7 +2733,7 @@ createNode transform -n "finger_L2_0_loc" -p "finger_L2_root"; setAttr -k off -cb on ".sy"; setAttr -k off -cb on ".sz"; createNode nurbsCurve -n "finger_L2_0_locShape" -p "finger_L2_0_loc"; - rename -uid "18B67CFD-49E2-4F3D-DDC8-D5BA630E8550"; + rename -uid "00606F81-4364-D671-5A9E-C6BD35FBCBB7"; setAttr ".ihi" 0; setAttr -k off ".v"; setAttr ".ove" yes; @@ -2665,7 +2746,7 @@ createNode nurbsCurve -n "finger_L2_0_locShape" -p "finger_L2_0_loc"; -0.25 0 0 ; createNode nurbsCurve -n "finger_L2_0_loc25Shape" -p "finger_L2_0_loc"; - rename -uid "55F0FA6C-4229-1934-6648-BEB19EF0DC66"; + rename -uid "02E1403D-45D6-2104-2632-0EA091195788"; setAttr ".ihi" 0; setAttr -k off ".v"; setAttr ".ove" yes; @@ -2678,7 +2759,7 @@ createNode nurbsCurve -n "finger_L2_0_loc25Shape" -p "finger_L2_0_loc"; 0 -0.25 0 ; createNode nurbsCurve -n "finger_L2_0_loc26Shape" -p "finger_L2_0_loc"; - rename -uid "9CAE441E-4F96-27AC-E2FC-B3BF6906C41F"; + rename -uid "A37DE062-4593-BA0F-CFDE-F599648D40F3"; setAttr ".ihi" 0; setAttr -k off ".v"; setAttr ".ove" yes; @@ -2691,7 +2772,7 @@ createNode nurbsCurve -n "finger_L2_0_loc26Shape" -p "finger_L2_0_loc"; 0 0 -0.25 ; createNode nurbsCurve -n "finger_L2_0_loc27Shape" -p "finger_L2_0_loc"; - rename -uid "9D01ACE1-457A-57BF-852D-78A2128241D5"; + rename -uid "286B68CC-4B60-A3C8-F5B5-D9ADAC105F9D"; setAttr ".ihi" 0; setAttr -k off ".v"; setAttr ".ove" yes; @@ -2709,7 +2790,7 @@ createNode nurbsCurve -n "finger_L2_0_loc27Shape" -p "finger_L2_0_loc"; -0.1875 0 0 ; createNode nurbsCurve -n "finger_L2_0_loc27_0crvShape" -p "finger_L2_0_loc"; - rename -uid "3BA7BBDD-4DC8-7E9D-B657-EE95BB3D677E"; + rename -uid "BFE5DF64-448A-40E9-CFA4-7B8BB1C9E106"; setAttr ".ihi" 0; setAttr -k off ".v"; setAttr ".ove" yes; @@ -2727,7 +2808,7 @@ createNode nurbsCurve -n "finger_L2_0_loc27_0crvShape" -p "finger_L2_0_loc"; -0.1875 0 0 ; createNode nurbsCurve -n "finger_L2_0_loc27_1crvShape" -p "finger_L2_0_loc"; - rename -uid "05582C86-40CA-F893-618E-68987E1BB617"; + rename -uid "77BBAAF7-4AEE-938F-6A84-69AB7CD7B681"; setAttr ".ihi" 0; setAttr -k off ".v"; setAttr ".ove" yes; @@ -2745,7 +2826,7 @@ createNode nurbsCurve -n "finger_L2_0_loc27_1crvShape" -p "finger_L2_0_loc"; 0 0 -0.1875 ; createNode transform -n "finger_L2_1_loc" -p "finger_L2_0_loc"; - rename -uid "FADAD962-4DA5-8140-8979-B08382F6D154"; + rename -uid "76C51B06-4616-DB68-B044-7182926C1A62"; addAttr -ci true -sn "isGearGuide" -ln "isGearGuide" -dv 1 -min 0 -max 1 -at "bool"; setAttr -k off -cb on ".v"; setAttr ".t" -type "double3" 0.76775488587175289 2.4868995751603507e-014 0 ; @@ -2761,7 +2842,7 @@ createNode transform -n "finger_L2_1_loc" -p "finger_L2_0_loc"; setAttr -k off -cb on ".sy"; setAttr -k off -cb on ".sz"; createNode nurbsCurve -n "finger_L2_1_locShape" -p "finger_L2_1_loc"; - rename -uid "6F4C2477-4DD0-F330-CD98-14A13292E9DC"; + rename -uid "A624494C-4341-C534-4FDA-18B54C346609"; setAttr ".ihi" 0; setAttr -k off ".v"; setAttr ".ove" yes; @@ -2774,7 +2855,7 @@ createNode nurbsCurve -n "finger_L2_1_locShape" -p "finger_L2_1_loc"; -0.25 0 0 ; createNode nurbsCurve -n "finger_L2_1_loc25Shape" -p "finger_L2_1_loc"; - rename -uid "3ED30EBA-42E2-DF5B-52DD-BE9D05362B29"; + rename -uid "1BA9E9A3-41DF-919E-E9D8-399C04A0DB2A"; setAttr ".ihi" 0; setAttr -k off ".v"; setAttr ".ove" yes; @@ -2787,7 +2868,7 @@ createNode nurbsCurve -n "finger_L2_1_loc25Shape" -p "finger_L2_1_loc"; 0 -0.25 0 ; createNode nurbsCurve -n "finger_L2_1_loc26Shape" -p "finger_L2_1_loc"; - rename -uid "FA8D048E-4D48-871D-175A-3B824044A305"; + rename -uid "B90CFAF0-48D0-FB6A-4950-28B5740FF098"; setAttr ".ihi" 0; setAttr -k off ".v"; setAttr ".ove" yes; @@ -2800,7 +2881,7 @@ createNode nurbsCurve -n "finger_L2_1_loc26Shape" -p "finger_L2_1_loc"; 0 0 -0.25 ; createNode nurbsCurve -n "finger_L2_1_loc27Shape" -p "finger_L2_1_loc"; - rename -uid "69155E43-4909-5C12-54E1-A281E47C89DE"; + rename -uid "D3744815-478E-C8B5-8DE2-C08D5A2DFE2F"; setAttr ".ihi" 0; setAttr -k off ".v"; setAttr ".ove" yes; @@ -2818,7 +2899,7 @@ createNode nurbsCurve -n "finger_L2_1_loc27Shape" -p "finger_L2_1_loc"; -0.1875 0 0 ; createNode nurbsCurve -n "finger_L2_1_loc27_0crvShape" -p "finger_L2_1_loc"; - rename -uid "BD13DE84-47BA-39F5-DF80-CCACCD58893F"; + rename -uid "14083BDA-4618-C844-5DF1-4BADFA3B97C4"; setAttr ".ihi" 0; setAttr -k off ".v"; setAttr ".ove" yes; @@ -2836,7 +2917,7 @@ createNode nurbsCurve -n "finger_L2_1_loc27_0crvShape" -p "finger_L2_1_loc"; -0.1875 0 0 ; createNode nurbsCurve -n "finger_L2_1_loc27_1crvShape" -p "finger_L2_1_loc"; - rename -uid "AA19BC1C-42B2-D073-9D26-BF9382E8F5C2"; + rename -uid "BEF2FFC6-4F8E-582A-B099-419C0A01DFE3"; setAttr ".ihi" 0; setAttr -k off ".v"; setAttr ".ove" yes; @@ -2854,7 +2935,7 @@ createNode nurbsCurve -n "finger_L2_1_loc27_1crvShape" -p "finger_L2_1_loc"; 0 0 -0.1875 ; createNode transform -n "finger_L2_2_loc" -p "finger_L2_1_loc"; - rename -uid "7605DAC8-4F2A-7FDF-1B1E-A39651BD58C2"; + rename -uid "8A085FD9-4CBB-1B80-BA06-E7B9B7C0E47A"; addAttr -ci true -sn "isGearGuide" -ln "isGearGuide" -dv 1 -min 0 -max 1 -at "bool"; setAttr -k off -cb on ".v"; setAttr ".t" -type "double3" 0.67457026674915621 -2.1316282072803006e-014 -6.6613381477509392e-016 ; @@ -2870,7 +2951,7 @@ createNode transform -n "finger_L2_2_loc" -p "finger_L2_1_loc"; setAttr -k off -cb on ".sy"; setAttr -k off -cb on ".sz"; createNode nurbsCurve -n "finger_L2_2_locShape" -p "finger_L2_2_loc"; - rename -uid "3A32DE55-4E27-B7CD-9476-5F8818B319B9"; + rename -uid "A102E4A9-4D5D-8F72-1425-F6A6A4B2E63D"; setAttr ".ihi" 0; setAttr -k off ".v"; setAttr ".ove" yes; @@ -2883,7 +2964,7 @@ createNode nurbsCurve -n "finger_L2_2_locShape" -p "finger_L2_2_loc"; -0.25 0 0 ; createNode nurbsCurve -n "finger_L2_2_loc25Shape" -p "finger_L2_2_loc"; - rename -uid "85C4FAAD-428A-3416-52D1-AFBA8B3BFF38"; + rename -uid "6079D42E-42A3-223F-B1BA-A8AB851C9BAA"; setAttr ".ihi" 0; setAttr -k off ".v"; setAttr ".ove" yes; @@ -2896,7 +2977,7 @@ createNode nurbsCurve -n "finger_L2_2_loc25Shape" -p "finger_L2_2_loc"; 0 -0.25 0 ; createNode nurbsCurve -n "finger_L2_2_loc26Shape" -p "finger_L2_2_loc"; - rename -uid "A571F53E-4054-85A1-7284-E2946189CE4B"; + rename -uid "46DA4B6C-415C-BC7B-C640-618E564DD3FC"; setAttr ".ihi" 0; setAttr -k off ".v"; setAttr ".ove" yes; @@ -2909,7 +2990,7 @@ createNode nurbsCurve -n "finger_L2_2_loc26Shape" -p "finger_L2_2_loc"; 0 0 -0.25 ; createNode nurbsCurve -n "finger_L2_2_loc27Shape" -p "finger_L2_2_loc"; - rename -uid "415C9857-4012-6A95-88AD-88928E148DDA"; + rename -uid "8C5222A1-472E-D123-39AA-EE9F473A57F9"; setAttr ".ihi" 0; setAttr -k off ".v"; setAttr ".ove" yes; @@ -2927,7 +3008,7 @@ createNode nurbsCurve -n "finger_L2_2_loc27Shape" -p "finger_L2_2_loc"; -0.1875 0 0 ; createNode nurbsCurve -n "finger_L2_2_loc27_0crvShape" -p "finger_L2_2_loc"; - rename -uid "888DD5B4-415C-26EB-04AE-46A76F7506D9"; + rename -uid "D901D1BB-4E32-1D56-50F3-F3BAF3B0DDD1"; setAttr ".ihi" 0; setAttr -k off ".v"; setAttr ".ove" yes; @@ -2945,7 +3026,7 @@ createNode nurbsCurve -n "finger_L2_2_loc27_0crvShape" -p "finger_L2_2_loc"; -0.1875 0 0 ; createNode nurbsCurve -n "finger_L2_2_loc27_1crvShape" -p "finger_L2_2_loc"; - rename -uid "711E5706-4CB5-12E8-2468-9993C5BE643A"; + rename -uid "4428C116-4278-76BA-1154-91803031523E"; setAttr ".ihi" 0; setAttr -k off ".v"; setAttr ".ove" yes; @@ -2963,7 +3044,7 @@ createNode nurbsCurve -n "finger_L2_2_loc27_1crvShape" -p "finger_L2_2_loc"; 0 0 -0.1875 ; createNode transform -n "finger_L2_blade" -p "finger_L2_root"; - rename -uid "D3D2D781-412E-DC37-4F68-1BA09F4CAD1C"; + rename -uid "C8DBD929-4C8B-31C7-AB8A-E791CC172BFE"; addAttr -ci true -k true -sn "bladeRollOffset" -ln "bladeRollOffset" -at "float"; setAttr -l on -k off -cb on ".v"; setAttr -k off -cb on ".tx"; @@ -2979,7 +3060,7 @@ createNode transform -n "finger_L2_blade" -p "finger_L2_root"; setAttr -l on -k off -cb on ".sz"; setAttr -k on ".bladeRollOffset"; createNode nurbsCurve -n "finger_L2_bladeShape" -p "finger_L2_blade"; - rename -uid "393DBB1F-4585-1C8C-D8AE-48AB246C2C17"; + rename -uid "E8447041-42A1-55CF-B33E-36A7069A480C"; setAttr ".ihi" 0; setAttr -k off ".v"; setAttr ".ove" yes; @@ -2994,7 +3075,7 @@ createNode nurbsCurve -n "finger_L2_bladeShape" -p "finger_L2_blade"; 0 0 0 ; createNode aimConstraint -n "finger_L2_blade_aimConstraint9" -p "finger_L2_blade"; - rename -uid "9BCA5B4B-4F48-0883-0994-B08AD2561380"; + rename -uid "175754FD-41F0-4C98-F30F-90A373DA3C69"; addAttr -dcb 0 -ci true -sn "w0" -ln "finger_L2_0_locW0" -dv 1 -at "double"; setAttr -k on ".nds"; setAttr -k off ".v"; @@ -3011,7 +3092,7 @@ createNode aimConstraint -n "finger_L2_blade_aimConstraint9" -p "finger_L2_blade setAttr ".wut" 2; setAttr -k on ".w0"; createNode pointConstraint -n "finger_L2_blade_pointConstraint9" -p "finger_L2_blade"; - rename -uid "744ABBFC-4F07-503C-41C2-379A445E22B5"; + rename -uid "3857FF8F-4EF7-A8DA-C519-4D821EB0726B"; addAttr -dcb 0 -ci true -k true -sn "w0" -ln "finger_L2_rootW0" -dv 1 -min 0 -at "double"; setAttr -k on ".nds"; setAttr -k off ".v"; @@ -3029,19 +3110,19 @@ createNode pointConstraint -n "finger_L2_blade_pointConstraint9" -p "finger_L2_b 2.2204460492503131e-016 ; setAttr -k on ".w0"; createNode transform -n "finger_L2_crv" -p "finger_L2_root"; - rename -uid "8F8871FF-4166-7BF0-60CD-63B0FC453FEE"; + rename -uid "1A97941A-488F-CA57-2A33-A99A1155C674"; setAttr ".ovdt" 1; setAttr ".ove" yes; setAttr ".t" -type "double3" 8.0630938931309331 -29.023661369441623 1.4173349723071398 ; setAttr ".r" -type "double3" -0.54140613098892132 -1.5904804996521624 47.737641631363935 ; setAttr ".s" -type "double3" 2.6320983106786131 2.6320983106786016 2.6320983106786082 ; createNode nurbsCurve -n "finger_L2_crvShape" -p "finger_L2_crv"; - rename -uid "9467EEEC-46D6-0333-8CE5-6FBCDF060E58"; + rename -uid "7FEDC1A6-4701-6313-BA1B-E4B88EEF4297"; setAttr -k off ".v"; setAttr -s 4 ".iog[0].og"; setAttr ".tw" yes; createNode nurbsCurve -n "finger_L2_crvShapeOrig" -p "finger_L2_crv"; - rename -uid "32FEF6ED-439D-0C04-E46E-358F480AA929"; + rename -uid "3732F992-44E1-9AB4-ACEE-4DA21667DDED"; setAttr -k off ".v"; setAttr ".io" yes; setAttr ".cc" -type "nurbsCurve" @@ -3054,7 +3135,7 @@ createNode nurbsCurve -n "finger_L2_crvShapeOrig" -p "finger_L2_crv"; 0 0 0 ; createNode transform -n "finger_L1_root" -p "meta_L0_0_loc"; - rename -uid "A04BFEC1-4A08-706E-C6D8-408B5B777EF7"; + rename -uid "BD2268E3-4997-47BD-33DC-4CB41D8061CF"; addAttr -ci true -sn "isGearGuide" -ln "isGearGuide" -dv 1 -min 0 -max 1 -at "bool"; addAttr -ci true -sn "comp_type" -ln "comp_type" -dt "string"; addAttr -ci true -sn "comp_name" -ln "comp_name" -dt "string"; @@ -3095,7 +3176,7 @@ createNode transform -n "finger_L1_root" -p "meta_L0_0_loc"; setAttr ".ikrefarray" -type "string" ""; setAttr ".parentJointIndex" -1; createNode nurbsCurve -n "finger_L1_rootShape" -p "finger_L1_root"; - rename -uid "54528121-438C-D748-FF73-1C907C47321A"; + rename -uid "4AA3DB21-4294-81DF-6F48-3B8323B7EF0C"; setAttr ".ihi" 0; setAttr -k off ".v"; setAttr ".ove" yes; @@ -3108,7 +3189,7 @@ createNode nurbsCurve -n "finger_L1_rootShape" -p "finger_L1_root"; -0.25 0 0 ; createNode nurbsCurve -n "finger_L1_root25Shape" -p "finger_L1_root"; - rename -uid "DAA904AA-4A78-7FF0-32BC-7E816ABB14C3"; + rename -uid "C3CBEF3B-49BE-51CA-74C6-05A747B249F0"; setAttr ".ihi" 0; setAttr -k off ".v"; setAttr ".ove" yes; @@ -3121,7 +3202,7 @@ createNode nurbsCurve -n "finger_L1_root25Shape" -p "finger_L1_root"; 0 -0.25 0 ; createNode nurbsCurve -n "finger_L1_root26Shape" -p "finger_L1_root"; - rename -uid "5CE9A806-4263-E546-EB0F-1797451E7BFD"; + rename -uid "31FB6B9D-48C2-D2A5-3187-4D95A50F74CA"; setAttr ".ihi" 0; setAttr -k off ".v"; setAttr ".ove" yes; @@ -3134,7 +3215,7 @@ createNode nurbsCurve -n "finger_L1_root26Shape" -p "finger_L1_root"; 0 0 -0.25 ; createNode nurbsCurve -n "finger_L1_root27Shape" -p "finger_L1_root"; - rename -uid "9F4CD028-4E3D-DF92-8353-95A6CC29335C"; + rename -uid "A86BAF5A-4B42-B208-7CA2-B9AFAC2695A3"; setAttr ".ihi" 0; setAttr -k off ".v"; setAttr ".ove" yes; @@ -3161,7 +3242,7 @@ createNode nurbsCurve -n "finger_L1_root27Shape" -p "finger_L1_root"; -0.125 -0.125 -0.125 ; createNode transform -n "finger_L1_0_loc" -p "finger_L1_root"; - rename -uid "914DFF79-4DCC-0535-A6D7-8BA8E1C19F42"; + rename -uid "AA8B66A7-42ED-1D6C-2FAD-58A956DDF4A8"; addAttr -ci true -sn "isGearGuide" -ln "isGearGuide" -dv 1 -min 0 -max 1 -at "bool"; setAttr -k off -cb on ".v"; setAttr ".t" -type "double3" 0.99999999999998401 1.4210854715202004e-014 -8.8817841970012523e-016 ; @@ -3177,7 +3258,7 @@ createNode transform -n "finger_L1_0_loc" -p "finger_L1_root"; setAttr -k off -cb on ".sy"; setAttr -k off -cb on ".sz"; createNode nurbsCurve -n "finger_L1_0_locShape" -p "finger_L1_0_loc"; - rename -uid "99DC0949-4A62-910E-25FC-22BC53BD9B72"; + rename -uid "1E614B76-418E-1DFE-B3D5-3AAF0EF83769"; setAttr ".ihi" 0; setAttr -k off ".v"; setAttr ".ove" yes; @@ -3190,7 +3271,7 @@ createNode nurbsCurve -n "finger_L1_0_locShape" -p "finger_L1_0_loc"; -0.25 0 0 ; createNode nurbsCurve -n "finger_L1_0_loc25Shape" -p "finger_L1_0_loc"; - rename -uid "BD5EC430-474D-BA8A-A3F4-C5B79FCA5B6B"; + rename -uid "10F5814E-45A5-70A8-E06F-6B90BB380FB4"; setAttr ".ihi" 0; setAttr -k off ".v"; setAttr ".ove" yes; @@ -3203,7 +3284,7 @@ createNode nurbsCurve -n "finger_L1_0_loc25Shape" -p "finger_L1_0_loc"; 0 -0.25 0 ; createNode nurbsCurve -n "finger_L1_0_loc26Shape" -p "finger_L1_0_loc"; - rename -uid "644C7DA4-4E3D-0E5F-283D-5594FDE07BEA"; + rename -uid "ED853624-4043-3727-F926-C39A6BD65842"; setAttr ".ihi" 0; setAttr -k off ".v"; setAttr ".ove" yes; @@ -3216,7 +3297,7 @@ createNode nurbsCurve -n "finger_L1_0_loc26Shape" -p "finger_L1_0_loc"; 0 0 -0.25 ; createNode nurbsCurve -n "finger_L1_0_loc27Shape" -p "finger_L1_0_loc"; - rename -uid "C24A8415-40A7-778F-EAFA-25A3D5179477"; + rename -uid "26646860-4CCB-99E3-ED33-7FA4E15C2954"; setAttr ".ihi" 0; setAttr -k off ".v"; setAttr ".ove" yes; @@ -3234,7 +3315,7 @@ createNode nurbsCurve -n "finger_L1_0_loc27Shape" -p "finger_L1_0_loc"; -0.1875 0 0 ; createNode nurbsCurve -n "finger_L1_0_loc27_0crvShape" -p "finger_L1_0_loc"; - rename -uid "76FA84C1-49F5-7162-CD38-EEA0BF66C0D8"; + rename -uid "7BD61DE9-4ADF-011D-F211-579B206007E3"; setAttr ".ihi" 0; setAttr -k off ".v"; setAttr ".ove" yes; @@ -3252,7 +3333,7 @@ createNode nurbsCurve -n "finger_L1_0_loc27_0crvShape" -p "finger_L1_0_loc"; -0.1875 0 0 ; createNode nurbsCurve -n "finger_L1_0_loc27_1crvShape" -p "finger_L1_0_loc"; - rename -uid "B00B141F-4E0C-B331-5B2D-4DB82DAF3862"; + rename -uid "8EC9AF1F-4C6F-89F8-155F-8A909A5FD410"; setAttr ".ihi" 0; setAttr -k off ".v"; setAttr ".ove" yes; @@ -3270,7 +3351,7 @@ createNode nurbsCurve -n "finger_L1_0_loc27_1crvShape" -p "finger_L1_0_loc"; 0 0 -0.1875 ; createNode transform -n "finger_L1_1_loc" -p "finger_L1_0_loc"; - rename -uid "D58DE242-4530-0ADD-DF28-C99703B41832"; + rename -uid "30C346E4-4BE6-3596-2F37-3DA18EA1C891"; addAttr -ci true -sn "isGearGuide" -ln "isGearGuide" -dv 1 -min 0 -max 1 -at "bool"; setAttr -k off -cb on ".v"; setAttr ".t" -type "double3" 0.96412528414018439 1.0658141036401503e-014 -4.4408920985006262e-016 ; @@ -3286,7 +3367,7 @@ createNode transform -n "finger_L1_1_loc" -p "finger_L1_0_loc"; setAttr -k off -cb on ".sy"; setAttr -k off -cb on ".sz"; createNode nurbsCurve -n "finger_L1_1_locShape" -p "finger_L1_1_loc"; - rename -uid "41289926-43A2-3FD4-A9D5-338844686161"; + rename -uid "B33026CF-417F-F5D7-1391-418A28E43527"; setAttr ".ihi" 0; setAttr -k off ".v"; setAttr ".ove" yes; @@ -3299,7 +3380,7 @@ createNode nurbsCurve -n "finger_L1_1_locShape" -p "finger_L1_1_loc"; -0.25 0 0 ; createNode nurbsCurve -n "finger_L1_1_loc25Shape" -p "finger_L1_1_loc"; - rename -uid "E775FA73-4F9B-05A4-9FA2-43B5FDF83936"; + rename -uid "E2B644F7-4620-426A-A571-A58EB801C9E2"; setAttr ".ihi" 0; setAttr -k off ".v"; setAttr ".ove" yes; @@ -3312,7 +3393,7 @@ createNode nurbsCurve -n "finger_L1_1_loc25Shape" -p "finger_L1_1_loc"; 0 -0.25 0 ; createNode nurbsCurve -n "finger_L1_1_loc26Shape" -p "finger_L1_1_loc"; - rename -uid "8AAE2251-4F64-374D-1BF0-D083858E6841"; + rename -uid "98321750-49FA-3AA3-D1B8-0281C367A02D"; setAttr ".ihi" 0; setAttr -k off ".v"; setAttr ".ove" yes; @@ -3325,7 +3406,7 @@ createNode nurbsCurve -n "finger_L1_1_loc26Shape" -p "finger_L1_1_loc"; 0 0 -0.25 ; createNode nurbsCurve -n "finger_L1_1_loc27Shape" -p "finger_L1_1_loc"; - rename -uid "93F596BE-42C1-0909-D4CF-7DAFCFC49AD1"; + rename -uid "ACF16CCA-479B-8318-2B55-6CB728588EF0"; setAttr ".ihi" 0; setAttr -k off ".v"; setAttr ".ove" yes; @@ -3343,7 +3424,7 @@ createNode nurbsCurve -n "finger_L1_1_loc27Shape" -p "finger_L1_1_loc"; -0.1875 0 0 ; createNode nurbsCurve -n "finger_L1_1_loc27_0crvShape" -p "finger_L1_1_loc"; - rename -uid "96A8A97A-4077-15E0-34F6-A98484365CC1"; + rename -uid "21E8EDFE-4250-DE96-2212-DDBB8F4C3DA7"; setAttr ".ihi" 0; setAttr -k off ".v"; setAttr ".ove" yes; @@ -3361,7 +3442,7 @@ createNode nurbsCurve -n "finger_L1_1_loc27_0crvShape" -p "finger_L1_1_loc"; -0.1875 0 0 ; createNode nurbsCurve -n "finger_L1_1_loc27_1crvShape" -p "finger_L1_1_loc"; - rename -uid "162611A8-4B13-3853-77B8-0CA4A32E7A4E"; + rename -uid "9CAF207B-44B7-608D-3297-138B9C628413"; setAttr ".ihi" 0; setAttr -k off ".v"; setAttr ".ove" yes; @@ -3379,7 +3460,7 @@ createNode nurbsCurve -n "finger_L1_1_loc27_1crvShape" -p "finger_L1_1_loc"; 0 0 -0.1875 ; createNode transform -n "finger_L1_2_loc" -p "finger_L1_1_loc"; - rename -uid "47CC3376-4ECC-B8F3-88E9-DBB62B628062"; + rename -uid "4380F867-424A-C527-1281-22975C9C1676"; addAttr -ci true -sn "isGearGuide" -ln "isGearGuide" -dv 1 -min 0 -max 1 -at "bool"; setAttr -k off -cb on ".v"; setAttr ".t" -type "double3" 0.58017281549591004 -1.7763568394002505e-014 -2.2204460492503131e-016 ; @@ -3395,7 +3476,7 @@ createNode transform -n "finger_L1_2_loc" -p "finger_L1_1_loc"; setAttr -k off -cb on ".sy"; setAttr -k off -cb on ".sz"; createNode nurbsCurve -n "finger_L1_2_locShape" -p "finger_L1_2_loc"; - rename -uid "282047B1-49AA-871B-07B7-919E38C9D04B"; + rename -uid "B625FAD2-41D6-9282-ADF6-F98C86299B4B"; setAttr ".ihi" 0; setAttr -k off ".v"; setAttr ".ove" yes; @@ -3408,7 +3489,7 @@ createNode nurbsCurve -n "finger_L1_2_locShape" -p "finger_L1_2_loc"; -0.25 0 0 ; createNode nurbsCurve -n "finger_L1_2_loc25Shape" -p "finger_L1_2_loc"; - rename -uid "2FD991A2-4CA0-27ED-3E81-2FAF32C96F71"; + rename -uid "9084206C-4BC2-911A-6524-8AB4BDC7BDD3"; setAttr ".ihi" 0; setAttr -k off ".v"; setAttr ".ove" yes; @@ -3421,7 +3502,7 @@ createNode nurbsCurve -n "finger_L1_2_loc25Shape" -p "finger_L1_2_loc"; 0 -0.25 0 ; createNode nurbsCurve -n "finger_L1_2_loc26Shape" -p "finger_L1_2_loc"; - rename -uid "7FAA8180-4F96-70D2-0AC7-D68143CC5823"; + rename -uid "E79F0095-4AAE-60B6-F2F5-2B95CE3A81A9"; setAttr ".ihi" 0; setAttr -k off ".v"; setAttr ".ove" yes; @@ -3434,7 +3515,7 @@ createNode nurbsCurve -n "finger_L1_2_loc26Shape" -p "finger_L1_2_loc"; 0 0 -0.25 ; createNode nurbsCurve -n "finger_L1_2_loc27Shape" -p "finger_L1_2_loc"; - rename -uid "349CE503-4825-C7E0-EA43-72B9F4C491BF"; + rename -uid "E86F7563-4AEB-48D9-1B00-10B4680392F3"; setAttr ".ihi" 0; setAttr -k off ".v"; setAttr ".ove" yes; @@ -3452,7 +3533,7 @@ createNode nurbsCurve -n "finger_L1_2_loc27Shape" -p "finger_L1_2_loc"; -0.1875 0 0 ; createNode nurbsCurve -n "finger_L1_2_loc27_0crvShape" -p "finger_L1_2_loc"; - rename -uid "E1896AC6-47BD-5411-2387-6E9F8222510C"; + rename -uid "FA5588E3-4D1E-B2A3-B3F5-0D93EA509AA9"; setAttr ".ihi" 0; setAttr -k off ".v"; setAttr ".ove" yes; @@ -3470,7 +3551,7 @@ createNode nurbsCurve -n "finger_L1_2_loc27_0crvShape" -p "finger_L1_2_loc"; -0.1875 0 0 ; createNode nurbsCurve -n "finger_L1_2_loc27_1crvShape" -p "finger_L1_2_loc"; - rename -uid "973DBA8B-4506-A4D7-F00C-2881BF4B5356"; + rename -uid "D9CC2DA9-479D-2D42-F1ED-28AEB8E47235"; setAttr ".ihi" 0; setAttr -k off ".v"; setAttr ".ove" yes; @@ -3488,7 +3569,7 @@ createNode nurbsCurve -n "finger_L1_2_loc27_1crvShape" -p "finger_L1_2_loc"; 0 0 -0.1875 ; createNode transform -n "finger_L1_blade" -p "finger_L1_root"; - rename -uid "AA12360A-4FEA-F921-DE8E-DF82A3632553"; + rename -uid "1DEEDD98-4D6D-1485-A84A-10B1E083A467"; addAttr -ci true -k true -sn "bladeRollOffset" -ln "bladeRollOffset" -at "float"; setAttr -l on -k off -cb on ".v"; setAttr -k off -cb on ".tx"; @@ -3504,7 +3585,7 @@ createNode transform -n "finger_L1_blade" -p "finger_L1_root"; setAttr -l on -k off -cb on ".sz"; setAttr -k on ".bladeRollOffset"; createNode nurbsCurve -n "finger_L1_bladeShape" -p "finger_L1_blade"; - rename -uid "18F6A578-43A4-F839-F182-B2B3F3621213"; + rename -uid "C937F5FD-42E8-56D7-69DA-0DBAB07FC194"; setAttr ".ihi" 0; setAttr -k off ".v"; setAttr ".ove" yes; @@ -3519,7 +3600,7 @@ createNode nurbsCurve -n "finger_L1_bladeShape" -p "finger_L1_blade"; 0 0 0 ; createNode aimConstraint -n "finger_L1_blade_aimConstraint9" -p "finger_L1_blade"; - rename -uid "0977C3F1-463D-7884-2BAE-829B396AECEF"; + rename -uid "E1B0E283-45C9-9B75-4D5C-60ACE66C8B8D"; addAttr -dcb 0 -ci true -sn "w0" -ln "finger_L1_0_locW0" -dv 1 -at "double"; setAttr -k on ".nds"; setAttr -k off ".v"; @@ -3536,7 +3617,7 @@ createNode aimConstraint -n "finger_L1_blade_aimConstraint9" -p "finger_L1_blade setAttr ".wut" 2; setAttr -k on ".w0"; createNode pointConstraint -n "finger_L1_blade_pointConstraint9" -p "finger_L1_blade"; - rename -uid "19A29D51-4444-F99A-A3B5-5E848EE4D7B0"; + rename -uid "EBDA3D1E-4602-D91A-C83D-0A8DA97EF9A0"; addAttr -dcb 0 -ci true -k true -sn "w0" -ln "finger_L1_rootW0" -dv 1 -min 0 -at "double"; setAttr -k on ".nds"; setAttr -k off ".v"; @@ -3553,19 +3634,19 @@ createNode pointConstraint -n "finger_L1_blade_pointConstraint9" -p "finger_L1_b setAttr ".rst" -type "double3" 0 0 -4.4408920985006262e-016 ; setAttr -k on ".w0"; createNode transform -n "finger_L1_crv" -p "finger_L1_root"; - rename -uid "DE0F1137-43DD-03F9-0D8D-D185908B1641"; + rename -uid "D46F285E-4F1A-5837-67B6-978759B03612"; setAttr ".ovdt" 1; setAttr ".ove" yes; setAttr ".t" -type "double3" 11.22243322515321 -28.040620010901346 1.1418187531094541 ; setAttr ".r" -type "double3" 5.8484943948543453 9.9768879508748096 54.111347352878276 ; setAttr ".s" -type "double3" 2.632098310678614 2.6320983106786024 2.6320983106786096 ; createNode nurbsCurve -n "finger_L1_crvShape" -p "finger_L1_crv"; - rename -uid "7BADF064-49AF-5077-6366-EB806FFFF150"; + rename -uid "E328CA72-436C-03A8-86E0-1094B75AE997"; setAttr -k off ".v"; setAttr -s 4 ".iog[0].og"; setAttr ".tw" yes; createNode nurbsCurve -n "finger_L1_crvShapeOrig" -p "finger_L1_crv"; - rename -uid "E241D1E0-40A4-A4E6-032B-3C8CD2F280CD"; + rename -uid "99C9D10C-4326-602A-EE72-B7B5A92BF200"; setAttr -k off ".v"; setAttr ".io" yes; setAttr ".cc" -type "nurbsCurve" @@ -3578,7 +3659,7 @@ createNode nurbsCurve -n "finger_L1_crvShapeOrig" -p "finger_L1_crv"; 0 0 0 ; createNode transform -n "meta_L0_blade" -p "meta_L0_root"; - rename -uid "9BB5FA11-41A5-3B37-903E-FCBE43840668"; + rename -uid "922DE496-42FD-2D76-BBC1-048691808D56"; addAttr -ci true -k true -sn "bladeRollOffset" -ln "bladeRollOffset" -at "float"; setAttr -l on -k off -cb on ".v"; setAttr -k off -cb on ".tx"; @@ -3594,7 +3675,7 @@ createNode transform -n "meta_L0_blade" -p "meta_L0_root"; setAttr -l on -k off -cb on ".sz"; setAttr -k on ".bladeRollOffset"; createNode nurbsCurve -n "meta_L0_bladeShape" -p "meta_L0_blade"; - rename -uid "9F053794-4937-EE26-481B-0380F76D495A"; + rename -uid "D0DC799F-4EC9-DB04-AB0B-DBA93701C3CC"; setAttr ".ihi" 0; setAttr -k off ".v"; setAttr ".ove" yes; @@ -3609,7 +3690,7 @@ createNode nurbsCurve -n "meta_L0_bladeShape" -p "meta_L0_blade"; 0 0 0 ; createNode aimConstraint -n "meta_L0_blade_aimConstraint9" -p "meta_L0_blade"; - rename -uid "E5E0B159-4675-9503-6D5C-6DB8044F7ACB"; + rename -uid "4B498A97-4CCB-5721-1641-5CA425346D7B"; addAttr -dcb 0 -ci true -sn "w0" -ln "meta_L0_0_locW0" -dv 1 -at "double"; setAttr -k on ".nds"; setAttr -k off ".v"; @@ -3626,7 +3707,7 @@ createNode aimConstraint -n "meta_L0_blade_aimConstraint9" -p "meta_L0_blade"; setAttr ".wut" 2; setAttr -k on ".w0"; createNode pointConstraint -n "meta_L0_blade_pointConstraint9" -p "meta_L0_blade"; - rename -uid "C75117B7-49DE-6ADE-F10B-B5B19FADB509"; + rename -uid "1FECAEEF-4161-BEC9-E047-99BDCA1F7B31"; addAttr -dcb 0 -ci true -k true -sn "w0" -ln "meta_L0_rootW0" -dv 1 -min 0 -at "double"; setAttr -k on ".nds"; setAttr -k off ".v"; @@ -3643,19 +3724,19 @@ createNode pointConstraint -n "meta_L0_blade_pointConstraint9" -p "meta_L0_blade setAttr ".rst" -type "double3" 8.8817841970012523e-016 7.1054273576010019e-015 3.5527136788005009e-015 ; setAttr -k on ".w0"; createNode transform -n "meta_L0_crv" -p "meta_L0_root"; - rename -uid "2774ED76-4F6A-905A-333D-2FB4D67BC8EF"; + rename -uid "1DD468D6-44A4-0954-2D60-249B49286D3C"; setAttr ".ovdt" 1; setAttr ".ove" yes; setAttr ".t" -type "double3" 3.8070066058400576 -38.076493243285029 11.714163621936251 ; setAttr ".r" -type "double3" -81.595645682431496 -44.654258545702959 89.275820115296384 ; setAttr ".s" -type "double3" 3.403215794704129 3.4032157947041144 3.4032157947041237 ; createNode nurbsCurve -n "meta_L0_crvShape" -p "meta_L0_crv"; - rename -uid "07A0FDC4-4673-FFDF-8AF5-1AA73C50A091"; + rename -uid "45FFC00A-43D9-C53A-26E9-34BF46689BB3"; setAttr -k off ".v"; setAttr -s 4 ".iog[0].og"; setAttr ".tw" yes; createNode nurbsCurve -n "meta_L0_crvShapeOrig" -p "meta_L0_crv"; - rename -uid "362A1693-45A0-82DF-31DA-4695797DC3A0"; + rename -uid "16CA42B1-430C-4D4B-BA41-AC874D1E38BC"; setAttr -k off ".v"; setAttr ".io" yes; setAttr ".cc" -type "nurbsCurve" @@ -3668,7 +3749,7 @@ createNode nurbsCurve -n "meta_L0_crvShapeOrig" -p "meta_L0_crv"; 0 0 0 ; createNode transform -n "finger_L0_root" -p "meta_L0_root"; - rename -uid "D7475171-467F-6198-F86B-D0B28D53BC22"; + rename -uid "22885AB1-4F5B-8106-DCAC-D98DAB2C5AFC"; addAttr -ci true -sn "isGearGuide" -ln "isGearGuide" -dv 1 -min 0 -max 1 -at "bool"; addAttr -ci true -sn "comp_type" -ln "comp_type" -dt "string"; addAttr -ci true -sn "comp_name" -ln "comp_name" -dt "string"; @@ -3708,7 +3789,7 @@ createNode transform -n "finger_L0_root" -p "meta_L0_root"; setAttr ".ikrefarray" -type "string" ""; setAttr ".parentJointIndex" -1; createNode nurbsCurve -n "finger_L0_rootShape" -p "finger_L0_root"; - rename -uid "8BB9A925-4602-FA44-38D5-43B271A4ED57"; + rename -uid "64732ED2-4E27-8677-7198-209DB9381700"; setAttr ".ihi" 0; setAttr -k off ".v"; setAttr ".ove" yes; @@ -3721,7 +3802,7 @@ createNode nurbsCurve -n "finger_L0_rootShape" -p "finger_L0_root"; -0.25 0 0 ; createNode nurbsCurve -n "finger_L0_root25Shape" -p "finger_L0_root"; - rename -uid "37CFAE10-4D3C-CB1A-510C-B3BC05ED422C"; + rename -uid "06A3774D-441D-C2E0-A60F-A3BFFAA6A8D5"; setAttr ".ihi" 0; setAttr -k off ".v"; setAttr ".ove" yes; @@ -3734,7 +3815,7 @@ createNode nurbsCurve -n "finger_L0_root25Shape" -p "finger_L0_root"; 0 -0.25 0 ; createNode nurbsCurve -n "finger_L0_root26Shape" -p "finger_L0_root"; - rename -uid "5BE7BB30-4386-6CBD-AE3C-FB83ED8DAF9A"; + rename -uid "8C42C813-488E-709C-8163-C1BD2838288B"; setAttr ".ihi" 0; setAttr -k off ".v"; setAttr ".ove" yes; @@ -3747,7 +3828,7 @@ createNode nurbsCurve -n "finger_L0_root26Shape" -p "finger_L0_root"; 0 0 -0.25 ; createNode nurbsCurve -n "finger_L0_root27Shape" -p "finger_L0_root"; - rename -uid "0DD423FD-4F97-8A3C-4A93-559840C36AFE"; + rename -uid "3F4FBE85-4062-BAB2-E794-8F8FCB306F92"; setAttr ".ihi" 0; setAttr -k off ".v"; setAttr ".ove" yes; @@ -3774,7 +3855,7 @@ createNode nurbsCurve -n "finger_L0_root27Shape" -p "finger_L0_root"; -0.125 -0.125 -0.125 ; createNode transform -n "finger_L0_0_loc" -p "finger_L0_root"; - rename -uid "C56B8332-464E-EBAC-E176-4887C3F29EED"; + rename -uid "082D4BD0-40E2-CC91-F61C-BA8FEBFCCCDD"; addAttr -ci true -sn "isGearGuide" -ln "isGearGuide" -dv 1 -min 0 -max 1 -at "bool"; setAttr -k off -cb on ".v"; setAttr ".t" -type "double3" 1 -3.5527136788005009e-015 6.6613381477509392e-015 ; @@ -3790,7 +3871,7 @@ createNode transform -n "finger_L0_0_loc" -p "finger_L0_root"; setAttr -k off -cb on ".sy"; setAttr -k off -cb on ".sz"; createNode nurbsCurve -n "finger_L0_0_locShape" -p "finger_L0_0_loc"; - rename -uid "DB3810B2-43D8-11C3-6B2A-27AF4D91BC68"; + rename -uid "9A75FAF5-447C-9BB1-34C4-719F34ED4BC4"; setAttr ".ihi" 0; setAttr -k off ".v"; setAttr ".ove" yes; @@ -3803,7 +3884,7 @@ createNode nurbsCurve -n "finger_L0_0_locShape" -p "finger_L0_0_loc"; -0.25 0 0 ; createNode nurbsCurve -n "finger_L0_0_loc25Shape" -p "finger_L0_0_loc"; - rename -uid "82B6854C-47D3-2F1D-C48D-B98175B0587A"; + rename -uid "7FC09433-4E09-BAFD-6A68-07ADA599BF4B"; setAttr ".ihi" 0; setAttr -k off ".v"; setAttr ".ove" yes; @@ -3816,7 +3897,7 @@ createNode nurbsCurve -n "finger_L0_0_loc25Shape" -p "finger_L0_0_loc"; 0 -0.25 0 ; createNode nurbsCurve -n "finger_L0_0_loc26Shape" -p "finger_L0_0_loc"; - rename -uid "01768107-4CE0-FAF3-918A-5FB5E229C7CB"; + rename -uid "3F05C3FA-4137-DE96-6035-9992211EB922"; setAttr ".ihi" 0; setAttr -k off ".v"; setAttr ".ove" yes; @@ -3829,7 +3910,7 @@ createNode nurbsCurve -n "finger_L0_0_loc26Shape" -p "finger_L0_0_loc"; 0 0 -0.25 ; createNode nurbsCurve -n "finger_L0_0_loc27Shape" -p "finger_L0_0_loc"; - rename -uid "2E4931D0-4B10-56C8-39C1-4CA3C72281A9"; + rename -uid "83E7F9BB-47D7-E3DB-5885-D68DDF7EE1B0"; setAttr ".ihi" 0; setAttr -k off ".v"; setAttr ".ove" yes; @@ -3847,7 +3928,7 @@ createNode nurbsCurve -n "finger_L0_0_loc27Shape" -p "finger_L0_0_loc"; -0.1875 0 0 ; createNode nurbsCurve -n "finger_L0_0_loc27_0crvShape" -p "finger_L0_0_loc"; - rename -uid "16FCC055-431F-76CE-6CF9-8B997B411763"; + rename -uid "46A2A72E-4D67-2DC1-CF01-3C92C9694550"; setAttr ".ihi" 0; setAttr -k off ".v"; setAttr ".ove" yes; @@ -3865,7 +3946,7 @@ createNode nurbsCurve -n "finger_L0_0_loc27_0crvShape" -p "finger_L0_0_loc"; -0.1875 0 0 ; createNode nurbsCurve -n "finger_L0_0_loc27_1crvShape" -p "finger_L0_0_loc"; - rename -uid "64F284BC-45A5-D92F-5FD3-22B89EB4C9A0"; + rename -uid "888B61D7-4757-EF73-22FB-2F8694E96009"; setAttr ".ihi" 0; setAttr -k off ".v"; setAttr ".ove" yes; @@ -3883,7 +3964,7 @@ createNode nurbsCurve -n "finger_L0_0_loc27_1crvShape" -p "finger_L0_0_loc"; 0 0 -0.1875 ; createNode transform -n "finger_L0_1_loc" -p "finger_L0_0_loc"; - rename -uid "8E8E5E7D-43CC-17AB-3BF0-9B9B2DA8DD06"; + rename -uid "928559FF-4A21-CD44-984E-418D69B33CBB"; addAttr -ci true -sn "isGearGuide" -ln "isGearGuide" -dv 1 -min 0 -max 1 -at "bool"; setAttr -k off -cb on ".v"; setAttr ".t" -type "double3" 0.8044200808092814 -7.1054273576010019e-015 -1.3322676295501878e-015 ; @@ -3899,7 +3980,7 @@ createNode transform -n "finger_L0_1_loc" -p "finger_L0_0_loc"; setAttr -k off -cb on ".sy"; setAttr -k off -cb on ".sz"; createNode nurbsCurve -n "finger_L0_1_locShape" -p "finger_L0_1_loc"; - rename -uid "4B5FF05B-44FD-2C70-3B7D-C9899C97D89F"; + rename -uid "F5A86DC3-4ADB-4734-43DE-1E80825E3FFF"; setAttr ".ihi" 0; setAttr -k off ".v"; setAttr ".ove" yes; @@ -3912,7 +3993,7 @@ createNode nurbsCurve -n "finger_L0_1_locShape" -p "finger_L0_1_loc"; -0.25 0 0 ; createNode nurbsCurve -n "finger_L0_1_loc25Shape" -p "finger_L0_1_loc"; - rename -uid "68DAE13E-4579-E9DF-E9B9-57A16E00BDF2"; + rename -uid "6AE43F93-43AF-1C3B-F197-908E3F88C9F1"; setAttr ".ihi" 0; setAttr -k off ".v"; setAttr ".ove" yes; @@ -3925,7 +4006,7 @@ createNode nurbsCurve -n "finger_L0_1_loc25Shape" -p "finger_L0_1_loc"; 0 -0.25 0 ; createNode nurbsCurve -n "finger_L0_1_loc26Shape" -p "finger_L0_1_loc"; - rename -uid "58E20511-471A-0982-2B11-AFA258BF0092"; + rename -uid "39DBDF61-475B-8A4A-07CE-43AB8A1C8DEF"; setAttr ".ihi" 0; setAttr -k off ".v"; setAttr ".ove" yes; @@ -3938,7 +4019,7 @@ createNode nurbsCurve -n "finger_L0_1_loc26Shape" -p "finger_L0_1_loc"; 0 0 -0.25 ; createNode nurbsCurve -n "finger_L0_1_loc27Shape" -p "finger_L0_1_loc"; - rename -uid "A7D37F20-464B-263F-6C7B-0A8458E97226"; + rename -uid "ED6C7F39-447A-4595-18B6-F28317795076"; setAttr ".ihi" 0; setAttr -k off ".v"; setAttr ".ove" yes; @@ -3956,7 +4037,7 @@ createNode nurbsCurve -n "finger_L0_1_loc27Shape" -p "finger_L0_1_loc"; -0.1875 0 0 ; createNode nurbsCurve -n "finger_L0_1_loc27_0crvShape" -p "finger_L0_1_loc"; - rename -uid "FB0A7166-4806-4671-51C0-1E929E2D4CA0"; + rename -uid "32267432-4EB6-EC24-6131-638E0471CAA8"; setAttr ".ihi" 0; setAttr -k off ".v"; setAttr ".ove" yes; @@ -3974,7 +4055,7 @@ createNode nurbsCurve -n "finger_L0_1_loc27_0crvShape" -p "finger_L0_1_loc"; -0.1875 0 0 ; createNode nurbsCurve -n "finger_L0_1_loc27_1crvShape" -p "finger_L0_1_loc"; - rename -uid "DB631527-4CFD-41F4-C981-4CB52C18B567"; + rename -uid "21C06269-44A1-7FA5-CB6E-269BFEF5E1BF"; setAttr ".ihi" 0; setAttr -k off ".v"; setAttr ".ove" yes; @@ -3992,7 +4073,7 @@ createNode nurbsCurve -n "finger_L0_1_loc27_1crvShape" -p "finger_L0_1_loc"; 0 0 -0.1875 ; createNode transform -n "finger_L0_2_loc" -p "finger_L0_1_loc"; - rename -uid "C254DFA4-4683-36DB-9F88-299ECB9FB501"; + rename -uid "C1A72BD3-49CB-2018-8C27-1EB9BC40CD8E"; addAttr -ci true -sn "isGearGuide" -ln "isGearGuide" -dv 1 -min 0 -max 1 -at "bool"; setAttr -k off -cb on ".v"; setAttr ".t" -type "double3" 0.58431370392367654 2.1316282072803006e-014 -2.6645352591003757e-015 ; @@ -4008,7 +4089,7 @@ createNode transform -n "finger_L0_2_loc" -p "finger_L0_1_loc"; setAttr -k off -cb on ".sy"; setAttr -k off -cb on ".sz"; createNode nurbsCurve -n "finger_L0_2_locShape" -p "finger_L0_2_loc"; - rename -uid "346BB767-4F43-A73B-E245-50A86D9CD434"; + rename -uid "9C445A5D-4A07-C219-382C-BABB3C251301"; setAttr ".ihi" 0; setAttr -k off ".v"; setAttr ".ove" yes; @@ -4021,7 +4102,7 @@ createNode nurbsCurve -n "finger_L0_2_locShape" -p "finger_L0_2_loc"; -0.25 0 0 ; createNode nurbsCurve -n "finger_L0_2_loc25Shape" -p "finger_L0_2_loc"; - rename -uid "6C528BD7-4EE5-26DB-5B9D-8A964CFB7F71"; + rename -uid "C7696955-473E-8B23-2C25-F990B152EABF"; setAttr ".ihi" 0; setAttr -k off ".v"; setAttr ".ove" yes; @@ -4034,7 +4115,7 @@ createNode nurbsCurve -n "finger_L0_2_loc25Shape" -p "finger_L0_2_loc"; 0 -0.25 0 ; createNode nurbsCurve -n "finger_L0_2_loc26Shape" -p "finger_L0_2_loc"; - rename -uid "273B95B2-4DDD-BB6A-9A8D-95A49E04382F"; + rename -uid "55A98F08-40BD-E4A7-E9E6-288C4AAC24FC"; setAttr ".ihi" 0; setAttr -k off ".v"; setAttr ".ove" yes; @@ -4047,7 +4128,7 @@ createNode nurbsCurve -n "finger_L0_2_loc26Shape" -p "finger_L0_2_loc"; 0 0 -0.25 ; createNode nurbsCurve -n "finger_L0_2_loc27Shape" -p "finger_L0_2_loc"; - rename -uid "A9D532FE-4E54-E7F7-3810-009A92697224"; + rename -uid "DDF1E2C9-4B6E-E9E4-36A9-908E6D5ADEE2"; setAttr ".ihi" 0; setAttr -k off ".v"; setAttr ".ove" yes; @@ -4065,7 +4146,7 @@ createNode nurbsCurve -n "finger_L0_2_loc27Shape" -p "finger_L0_2_loc"; -0.1875 0 0 ; createNode nurbsCurve -n "finger_L0_2_loc27_0crvShape" -p "finger_L0_2_loc"; - rename -uid "CA96E85E-46F9-F131-313D-BBB9CC1C771F"; + rename -uid "7E7CCD1C-4060-0DB4-3A27-6C8D88EFE3AD"; setAttr ".ihi" 0; setAttr -k off ".v"; setAttr ".ove" yes; @@ -4083,7 +4164,7 @@ createNode nurbsCurve -n "finger_L0_2_loc27_0crvShape" -p "finger_L0_2_loc"; -0.1875 0 0 ; createNode nurbsCurve -n "finger_L0_2_loc27_1crvShape" -p "finger_L0_2_loc"; - rename -uid "1EA89FBF-4B92-3587-7FA0-8CA1E6EE4453"; + rename -uid "23F1A20C-4F74-9EE4-9911-DABC7E7284E9"; setAttr ".ihi" 0; setAttr -k off ".v"; setAttr ".ove" yes; @@ -4101,7 +4182,7 @@ createNode nurbsCurve -n "finger_L0_2_loc27_1crvShape" -p "finger_L0_2_loc"; 0 0 -0.1875 ; createNode transform -n "finger_L0_blade" -p "finger_L0_root"; - rename -uid "7070BE5C-4B8D-DE18-146C-DCB82BF90F88"; + rename -uid "04A857C2-4FFF-36AE-6E0E-AD80AB30EDF6"; addAttr -ci true -k true -sn "bladeRollOffset" -ln "bladeRollOffset" -at "float"; setAttr -l on -k off -cb on ".v"; setAttr -k off -cb on ".tx"; @@ -4117,7 +4198,7 @@ createNode transform -n "finger_L0_blade" -p "finger_L0_root"; setAttr -l on -k off -cb on ".sz"; setAttr -k on ".bladeRollOffset"; createNode nurbsCurve -n "finger_L0_bladeShape" -p "finger_L0_blade"; - rename -uid "A40013D2-4C0C-AAB2-E08C-4B8D40FFD4D8"; + rename -uid "918CB6E6-4E5F-9788-6011-B5A1496C892D"; setAttr ".ihi" 0; setAttr -k off ".v"; setAttr ".ove" yes; @@ -4132,7 +4213,7 @@ createNode nurbsCurve -n "finger_L0_bladeShape" -p "finger_L0_blade"; 0 0 0 ; createNode aimConstraint -n "finger_L0_blade_aimConstraint9" -p "finger_L0_blade"; - rename -uid "8BA9B3AF-46FC-5BAE-B4C5-D88DAE9B290C"; + rename -uid "CB0C1BA6-42D1-6210-3DB7-D1A0735F62D4"; addAttr -dcb 0 -ci true -sn "w0" -ln "finger_L0_0_locW0" -dv 1 -at "double"; setAttr -k on ".nds"; setAttr -k off ".v"; @@ -4149,7 +4230,7 @@ createNode aimConstraint -n "finger_L0_blade_aimConstraint9" -p "finger_L0_blade setAttr ".wut" 2; setAttr -k on ".w0"; createNode pointConstraint -n "finger_L0_blade_pointConstraint9" -p "finger_L0_blade"; - rename -uid "B17A06DA-409C-8208-452E-7DB9978B9A51"; + rename -uid "15B1054B-4867-2EA2-0706-9F918C4E4CCF"; addAttr -dcb 0 -ci true -k true -sn "w0" -ln "finger_L0_rootW0" -dv 1 -min 0 -at "double"; setAttr -k on ".nds"; setAttr -k off ".v"; @@ -4167,19 +4248,19 @@ createNode pointConstraint -n "finger_L0_blade_pointConstraint9" -p "finger_L0_b 0 ; setAttr -k on ".w0"; createNode transform -n "finger_L0_crv" -p "finger_L0_root"; - rename -uid "24346A18-4532-F6F1-DE11-5B86F807DD3C"; + rename -uid "CD9C955A-4E22-C583-7D63-6A950E53BA03"; setAttr ".ovdt" 1; setAttr ".ove" yes; setAttr ".t" -type "double3" 12.549990763713115 -27.336008057181125 2.4648652761305296 ; setAttr ".r" -type "double3" 9.1654334880180617 22.111176212556721 57.120615095544899 ; setAttr ".s" -type "double3" 2.6320983106786096 2.6320983106785993 2.6320983106786042 ; createNode nurbsCurve -n "finger_L0_crvShape" -p "finger_L0_crv"; - rename -uid "9FDCE824-4C73-399C-0467-F18F2910EEDE"; + rename -uid "585A73A7-4071-CDB7-A6C5-E2BA60A66848"; setAttr -k off ".v"; setAttr -s 4 ".iog[0].og"; setAttr ".tw" yes; createNode nurbsCurve -n "finger_L0_crvShapeOrig" -p "finger_L0_crv"; - rename -uid "9463B66B-491A-7181-0CE8-11B9838024C4"; + rename -uid "BB731634-4071-B93E-B595-A58B71FA5C7C"; setAttr -k off ".v"; setAttr ".io" yes; setAttr ".cc" -type "nurbsCurve" @@ -4192,7 +4273,7 @@ createNode nurbsCurve -n "finger_L0_crvShapeOrig" -p "finger_L0_crv"; 0 0 0 ; createNode transform -n "thumbRoll_L0_root" -p "meta_L0_root"; - rename -uid "AAB31DE8-429B-5FC3-DA13-8C81B088184E"; + rename -uid "64E77E44-46A0-501F-63C5-20871C283EC6"; addAttr -ci true -sn "isGearGuide" -ln "isGearGuide" -dv 1 -min 0 -max 1 -at "bool"; addAttr -ci true -sn "comp_type" -ln "comp_type" -dt "string"; addAttr -ci true -sn "comp_name" -ln "comp_name" -dt "string"; @@ -4255,7 +4336,7 @@ createNode transform -n "thumbRoll_L0_root" -p "meta_L0_root"; setAttr ".ctlSize" 0.7; setAttr ".parentJointIndex" -1; createNode nurbsCurve -n "thumbRoll_L0_rootShape" -p "thumbRoll_L0_root"; - rename -uid "F5F93CBB-4F6A-3DEB-AD3C-92B1C21AA14E"; + rename -uid "9BB32D7D-44F5-71CA-A973-95B74FA83782"; setAttr ".ihi" 0; setAttr -k off ".v"; setAttr ".ove" yes; @@ -4268,7 +4349,7 @@ createNode nurbsCurve -n "thumbRoll_L0_rootShape" -p "thumbRoll_L0_root"; -0.25 0 0 ; createNode nurbsCurve -n "thumbRoll_L0_root16Shape" -p "thumbRoll_L0_root"; - rename -uid "3A3C32F2-4219-7BCA-0B3D-51918385A020"; + rename -uid "E99C768E-4A05-A27D-E7CD-35BFDB5F88F5"; setAttr ".ihi" 0; setAttr -k off ".v"; setAttr ".ove" yes; @@ -4281,7 +4362,7 @@ createNode nurbsCurve -n "thumbRoll_L0_root16Shape" -p "thumbRoll_L0_root"; 0 -0.25 0 ; createNode nurbsCurve -n "thumbRoll_L0_root17Shape" -p "thumbRoll_L0_root"; - rename -uid "7DAA059F-46AC-9CCB-601C-F28122D12D3F"; + rename -uid "2278F785-4936-F3AA-52E5-7C8A5EFADFC9"; setAttr ".ihi" 0; setAttr -k off ".v"; setAttr ".ove" yes; @@ -4294,7 +4375,7 @@ createNode nurbsCurve -n "thumbRoll_L0_root17Shape" -p "thumbRoll_L0_root"; 0 0 -0.25 ; createNode nurbsCurve -n "thumbRoll_L0_root18Shape" -p "thumbRoll_L0_root"; - rename -uid "994EF189-4347-A478-C8EA-C4BEDD2BCB2C"; + rename -uid "608C1610-473F-2B75-1E5E-4A90A92D994A"; setAttr ".ihi" 0; setAttr -k off ".v"; setAttr ".ove" yes; @@ -4321,7 +4402,7 @@ createNode nurbsCurve -n "thumbRoll_L0_root18Shape" -p "thumbRoll_L0_root"; -0.125 -0.125 -0.125 ; createNode transform -n "thumbRoll_L0_sizeRef" -p "thumbRoll_L0_root"; - rename -uid "49508B2E-4AC0-D56E-5F7A-B38F5D3141D6"; + rename -uid "C7729B7F-4C0C-7835-93D3-8E8C470A9106"; addAttr -ci true -sn "isGearGuide" -ln "isGearGuide" -dv 1 -min 0 -max 1 -at "bool"; setAttr -k off -cb on ".v"; setAttr ".t" -type "double3" 8.8817841970012523e-016 3.907985046680551e-014 1.0000000000000007 ; @@ -4338,7 +4419,7 @@ createNode transform -n "thumbRoll_L0_sizeRef" -p "thumbRoll_L0_root"; setAttr -k off -cb on ".sy"; setAttr -k off -cb on ".sz"; createNode transform -n "thumb_L0_root" -p "thumbRoll_L0_root"; - rename -uid "9FB23058-4AAB-8137-5B1E-CAB9C32B953D"; + rename -uid "01C1AF1D-47CF-B7A7-1074-08A3F27BA6E0"; addAttr -ci true -sn "isGearGuide" -ln "isGearGuide" -dv 1 -min 0 -max 1 -at "bool"; addAttr -ci true -sn "comp_type" -ln "comp_type" -dt "string"; addAttr -ci true -sn "comp_name" -ln "comp_name" -dt "string"; @@ -4378,7 +4459,7 @@ createNode transform -n "thumb_L0_root" -p "thumbRoll_L0_root"; setAttr ".ikrefarray" -type "string" ""; setAttr ".parentJointIndex" -1; createNode nurbsCurve -n "thumb_L0_rootShape" -p "thumb_L0_root"; - rename -uid "719E89EB-4AED-B05F-09CD-6BB24EBBC03A"; + rename -uid "7E15F295-4440-1992-AF38-7E96E3192FBC"; setAttr ".ihi" 0; setAttr -k off ".v"; setAttr ".ove" yes; @@ -4391,7 +4472,7 @@ createNode nurbsCurve -n "thumb_L0_rootShape" -p "thumb_L0_root"; -0.25 0 0 ; createNode nurbsCurve -n "thumb_L0_root25Shape" -p "thumb_L0_root"; - rename -uid "E2708F55-4038-A343-55E0-DBA05BC303AA"; + rename -uid "03A0B975-4DE5-9C81-CFDF-0491CBADE547"; setAttr ".ihi" 0; setAttr -k off ".v"; setAttr ".ove" yes; @@ -4404,7 +4485,7 @@ createNode nurbsCurve -n "thumb_L0_root25Shape" -p "thumb_L0_root"; 0 -0.25 0 ; createNode nurbsCurve -n "thumb_L0_root26Shape" -p "thumb_L0_root"; - rename -uid "87AFFB0F-44A1-24B1-494C-8ABDCC501195"; + rename -uid "D03CA2AB-48F6-4A3C-8BD5-2C832A85E68D"; setAttr ".ihi" 0; setAttr -k off ".v"; setAttr ".ove" yes; @@ -4417,7 +4498,7 @@ createNode nurbsCurve -n "thumb_L0_root26Shape" -p "thumb_L0_root"; 0 0 -0.25 ; createNode nurbsCurve -n "thumb_L0_root27Shape" -p "thumb_L0_root"; - rename -uid "4A6BFFBC-487C-3B74-93D6-9AB6942FD55F"; + rename -uid "155A496D-4CDD-4BA9-06E4-2CB41BA9D277"; setAttr ".ihi" 0; setAttr -k off ".v"; setAttr ".ove" yes; @@ -4444,7 +4525,7 @@ createNode nurbsCurve -n "thumb_L0_root27Shape" -p "thumb_L0_root"; -0.125 -0.125 -0.125 ; createNode transform -n "thumb_L0_0_loc" -p "thumb_L0_root"; - rename -uid "BA7169C3-45D2-CF87-6749-3B9EB065B2D4"; + rename -uid "053BA957-4B4B-2E03-17E2-1799182E761D"; addAttr -ci true -sn "isGearGuide" -ln "isGearGuide" -dv 1 -min 0 -max 1 -at "bool"; setAttr -k off -cb on ".v"; setAttr ".t" -type "double3" 0.86054350703470206 0.0024095775966985755 -1.0658141036401503e-014 ; @@ -4461,7 +4542,7 @@ createNode transform -n "thumb_L0_0_loc" -p "thumb_L0_root"; setAttr -k off -cb on ".sy"; setAttr -k off -cb on ".sz"; createNode nurbsCurve -n "thumb_L0_0_locShape" -p "thumb_L0_0_loc"; - rename -uid "AF49615B-410D-2FE5-7DF5-5F9DFD2C2A8A"; + rename -uid "8EF80DCE-47A7-3E8A-4E6B-E1BBAE717C92"; setAttr ".ihi" 0; setAttr -k off ".v"; setAttr ".ove" yes; @@ -4474,7 +4555,7 @@ createNode nurbsCurve -n "thumb_L0_0_locShape" -p "thumb_L0_0_loc"; -0.25 0 0 ; createNode nurbsCurve -n "thumb_L0_0_loc25Shape" -p "thumb_L0_0_loc"; - rename -uid "B66FF03D-4B3F-4F55-8648-DC8EAC5941FF"; + rename -uid "C994EEFB-4185-10D4-5065-0E964AD8ED72"; setAttr ".ihi" 0; setAttr -k off ".v"; setAttr ".ove" yes; @@ -4487,7 +4568,7 @@ createNode nurbsCurve -n "thumb_L0_0_loc25Shape" -p "thumb_L0_0_loc"; 0 -0.25 0 ; createNode nurbsCurve -n "thumb_L0_0_loc26Shape" -p "thumb_L0_0_loc"; - rename -uid "B912675B-4052-4400-FC98-4481B2760AB8"; + rename -uid "0802EF91-4D41-16EC-7E5C-75A05DFCBB77"; setAttr ".ihi" 0; setAttr -k off ".v"; setAttr ".ove" yes; @@ -4500,7 +4581,7 @@ createNode nurbsCurve -n "thumb_L0_0_loc26Shape" -p "thumb_L0_0_loc"; 0 0 -0.25 ; createNode nurbsCurve -n "thumb_L0_0_loc27Shape" -p "thumb_L0_0_loc"; - rename -uid "A73238E1-4537-1E6A-62DE-258A74ED4EF1"; + rename -uid "A5B31980-40FC-EDB0-D523-9CBD2A67DAE8"; setAttr ".ihi" 0; setAttr -k off ".v"; setAttr ".ove" yes; @@ -4518,7 +4599,7 @@ createNode nurbsCurve -n "thumb_L0_0_loc27Shape" -p "thumb_L0_0_loc"; -0.1875 0 0 ; createNode nurbsCurve -n "thumb_L0_0_loc27_0crvShape" -p "thumb_L0_0_loc"; - rename -uid "680DEB8B-472A-31EF-F268-338B2F3EF1D2"; + rename -uid "4823A6B8-452B-29BC-3E5F-608409A9BD9A"; setAttr ".ihi" 0; setAttr -k off ".v"; setAttr ".ove" yes; @@ -4536,7 +4617,7 @@ createNode nurbsCurve -n "thumb_L0_0_loc27_0crvShape" -p "thumb_L0_0_loc"; -0.1875 0 0 ; createNode nurbsCurve -n "thumb_L0_0_loc27_1crvShape" -p "thumb_L0_0_loc"; - rename -uid "6ED52871-41C9-B2EF-85C2-61826A457C1C"; + rename -uid "A83D962A-4EDE-80D8-FFC3-B9A60D221B24"; setAttr ".ihi" 0; setAttr -k off ".v"; setAttr ".ove" yes; @@ -4554,7 +4635,7 @@ createNode nurbsCurve -n "thumb_L0_0_loc27_1crvShape" -p "thumb_L0_0_loc"; 0 0 -0.1875 ; createNode transform -n "thumb_L0_1_loc" -p "thumb_L0_0_loc"; - rename -uid "AAE61BF0-446F-0DCC-E4D7-6A98E5C09990"; + rename -uid "DCA495EF-489B-E21E-EDA2-8AA54A417A6B"; addAttr -ci true -sn "isGearGuide" -ln "isGearGuide" -dv 1 -min 0 -max 1 -at "bool"; setAttr -k off -cb on ".v"; setAttr ".t" -type "double3" 0.76442580145521433 -2.6645352591003757e-015 2.8421709430404007e-014 ; @@ -4570,7 +4651,7 @@ createNode transform -n "thumb_L0_1_loc" -p "thumb_L0_0_loc"; setAttr -k off -cb on ".sy"; setAttr -k off -cb on ".sz"; createNode nurbsCurve -n "thumb_L0_1_locShape" -p "thumb_L0_1_loc"; - rename -uid "62F4B955-47B9-4424-3631-9AB8D6424E90"; + rename -uid "4604D555-4D25-6B33-45CF-FD87B365D3A4"; setAttr ".ihi" 0; setAttr -k off ".v"; setAttr ".ove" yes; @@ -4583,7 +4664,7 @@ createNode nurbsCurve -n "thumb_L0_1_locShape" -p "thumb_L0_1_loc"; -0.25 0 0 ; createNode nurbsCurve -n "thumb_L0_1_loc25Shape" -p "thumb_L0_1_loc"; - rename -uid "8678FE0F-457A-4735-0550-7BA11682B334"; + rename -uid "8CCC05EE-4901-8BB7-833D-4696FFA1442F"; setAttr ".ihi" 0; setAttr -k off ".v"; setAttr ".ove" yes; @@ -4596,7 +4677,7 @@ createNode nurbsCurve -n "thumb_L0_1_loc25Shape" -p "thumb_L0_1_loc"; 0 -0.25 0 ; createNode nurbsCurve -n "thumb_L0_1_loc26Shape" -p "thumb_L0_1_loc"; - rename -uid "39057EC2-4E93-C2A8-242F-EA959F285A89"; + rename -uid "CE834660-4EDA-A894-9B02-08B8CA9F1D1C"; setAttr ".ihi" 0; setAttr -k off ".v"; setAttr ".ove" yes; @@ -4609,7 +4690,7 @@ createNode nurbsCurve -n "thumb_L0_1_loc26Shape" -p "thumb_L0_1_loc"; 0 0 -0.25 ; createNode nurbsCurve -n "thumb_L0_1_loc27Shape" -p "thumb_L0_1_loc"; - rename -uid "5C77100B-4395-FFDB-3F5E-779F21ED9BD0"; + rename -uid "7D49DBDF-444F-84C2-5590-3FB85E30896A"; setAttr ".ihi" 0; setAttr -k off ".v"; setAttr ".ove" yes; @@ -4627,7 +4708,7 @@ createNode nurbsCurve -n "thumb_L0_1_loc27Shape" -p "thumb_L0_1_loc"; -0.1875 0 0 ; createNode nurbsCurve -n "thumb_L0_1_loc27_0crvShape" -p "thumb_L0_1_loc"; - rename -uid "085B2373-4299-F571-2314-808413654E4C"; + rename -uid "F29A108F-45B5-3BF2-0864-208647B6A45E"; setAttr ".ihi" 0; setAttr -k off ".v"; setAttr ".ove" yes; @@ -4645,7 +4726,7 @@ createNode nurbsCurve -n "thumb_L0_1_loc27_0crvShape" -p "thumb_L0_1_loc"; -0.1875 0 0 ; createNode nurbsCurve -n "thumb_L0_1_loc27_1crvShape" -p "thumb_L0_1_loc"; - rename -uid "142ECD72-4B49-EEDC-5C1E-2A9881F7446B"; + rename -uid "59F1D2C5-405F-9477-515C-35A559C89382"; setAttr ".ihi" 0; setAttr -k off ".v"; setAttr ".ove" yes; @@ -4663,7 +4744,7 @@ createNode nurbsCurve -n "thumb_L0_1_loc27_1crvShape" -p "thumb_L0_1_loc"; 0 0 -0.1875 ; createNode transform -n "thumb_L0_2_loc" -p "thumb_L0_1_loc"; - rename -uid "B1E631F8-4293-6FDC-7B43-8CBB7563DD03"; + rename -uid "0B1EA30F-43DF-5A3D-61AA-23BB160CFD7F"; addAttr -ci true -sn "isGearGuide" -ln "isGearGuide" -dv 1 -min 0 -max 1 -at "bool"; setAttr -k off -cb on ".v"; setAttr ".t" -type "double3" 0.5948211491551092 5.3290705182007514e-015 3.5527136788005009e-015 ; @@ -4679,7 +4760,7 @@ createNode transform -n "thumb_L0_2_loc" -p "thumb_L0_1_loc"; setAttr -k off -cb on ".sy"; setAttr -k off -cb on ".sz"; createNode nurbsCurve -n "thumb_L0_2_locShape" -p "thumb_L0_2_loc"; - rename -uid "C219A258-4780-1C86-6C55-9DB2B02B04C2"; + rename -uid "20A5061C-4298-D9A6-BE03-A69759AD5C29"; setAttr ".ihi" 0; setAttr -k off ".v"; setAttr ".ove" yes; @@ -4692,7 +4773,7 @@ createNode nurbsCurve -n "thumb_L0_2_locShape" -p "thumb_L0_2_loc"; -0.25 0 0 ; createNode nurbsCurve -n "thumb_L0_2_loc25Shape" -p "thumb_L0_2_loc"; - rename -uid "0C89F030-4ED9-7E49-161E-53A6BCF32581"; + rename -uid "01354464-4A2F-B7A3-690B-40B496448002"; setAttr ".ihi" 0; setAttr -k off ".v"; setAttr ".ove" yes; @@ -4705,7 +4786,7 @@ createNode nurbsCurve -n "thumb_L0_2_loc25Shape" -p "thumb_L0_2_loc"; 0 -0.25 0 ; createNode nurbsCurve -n "thumb_L0_2_loc26Shape" -p "thumb_L0_2_loc"; - rename -uid "7C02E248-4676-B005-0CB5-6E84BDF79CB2"; + rename -uid "3A656996-4C8C-11C5-F67F-05BABDD47D44"; setAttr ".ihi" 0; setAttr -k off ".v"; setAttr ".ove" yes; @@ -4718,7 +4799,7 @@ createNode nurbsCurve -n "thumb_L0_2_loc26Shape" -p "thumb_L0_2_loc"; 0 0 -0.25 ; createNode nurbsCurve -n "thumb_L0_2_loc27Shape" -p "thumb_L0_2_loc"; - rename -uid "DA807C21-4C01-9261-3654-E99F12A1FF6F"; + rename -uid "91A31CF1-4AED-9F7E-2334-7ABD908A5FE5"; setAttr ".ihi" 0; setAttr -k off ".v"; setAttr ".ove" yes; @@ -4736,7 +4817,7 @@ createNode nurbsCurve -n "thumb_L0_2_loc27Shape" -p "thumb_L0_2_loc"; -0.1875 0 0 ; createNode nurbsCurve -n "thumb_L0_2_loc27_0crvShape" -p "thumb_L0_2_loc"; - rename -uid "E826B159-4067-8A49-9D56-3CA5BACBC909"; + rename -uid "254D4A1B-43DC-478A-2A52-B499307345A1"; setAttr ".ihi" 0; setAttr -k off ".v"; setAttr ".ove" yes; @@ -4754,7 +4835,7 @@ createNode nurbsCurve -n "thumb_L0_2_loc27_0crvShape" -p "thumb_L0_2_loc"; -0.1875 0 0 ; createNode nurbsCurve -n "thumb_L0_2_loc27_1crvShape" -p "thumb_L0_2_loc"; - rename -uid "DFB66315-4A28-AAFF-034E-51BE00C316E3"; + rename -uid "B61990C2-474C-992A-E6C2-03AEA8EB014C"; setAttr ".ihi" 0; setAttr -k off ".v"; setAttr ".ove" yes; @@ -4772,7 +4853,7 @@ createNode nurbsCurve -n "thumb_L0_2_loc27_1crvShape" -p "thumb_L0_2_loc"; 0 0 -0.1875 ; createNode transform -n "thumb_L0_blade" -p "thumb_L0_root"; - rename -uid "430F581D-4790-1B16-80A4-16BC17AC2318"; + rename -uid "7508BD50-45CE-4A76-D18C-80854D1E80FC"; addAttr -ci true -k true -sn "bladeRollOffset" -ln "bladeRollOffset" -at "float"; setAttr -l on -k off -cb on ".v"; setAttr -k off -cb on ".tx"; @@ -4788,7 +4869,7 @@ createNode transform -n "thumb_L0_blade" -p "thumb_L0_root"; setAttr -l on -k off -cb on ".sz"; setAttr -k on ".bladeRollOffset"; createNode nurbsCurve -n "thumb_L0_bladeShape" -p "thumb_L0_blade"; - rename -uid "BADAB491-4FDF-5B85-38E4-B49FF7F2CC28"; + rename -uid "E732A533-4CD5-E65B-D848-8BA246004846"; setAttr ".ihi" 0; setAttr -k off ".v"; setAttr ".ove" yes; @@ -4803,7 +4884,7 @@ createNode nurbsCurve -n "thumb_L0_bladeShape" -p "thumb_L0_blade"; 0 0 0 ; createNode aimConstraint -n "thumb_L0_blade_aimConstraint9" -p "thumb_L0_blade"; - rename -uid "85D950F1-45D3-10E3-3044-60B6EFEA9FFB"; + rename -uid "4FF70435-4E34-34DE-01CB-B79C768F0E7C"; addAttr -dcb 0 -ci true -sn "w0" -ln "thumb_L0_0_locW0" -dv 1 -at "double"; setAttr -k on ".nds"; setAttr -k off ".v"; @@ -4822,7 +4903,7 @@ createNode aimConstraint -n "thumb_L0_blade_aimConstraint9" -p "thumb_L0_blade"; 0.16043147704029556 ; setAttr -k on ".w0"; createNode pointConstraint -n "thumb_L0_blade_pointConstraint9" -p "thumb_L0_blade"; - rename -uid "679B9807-4181-97D4-7F50-3CA0C8DD2485"; + rename -uid "A5CD6ADB-4EC1-055B-7BFB-DEA178461B24"; addAttr -dcb 0 -ci true -k true -sn "w0" -ln "thumb_L0_rootW0" -dv 1 -min 0 -at "double"; setAttr -k on ".nds"; setAttr -k off ".v"; @@ -4839,19 +4920,19 @@ createNode pointConstraint -n "thumb_L0_blade_pointConstraint9" -p "thumb_L0_bla setAttr ".rst" -type "double3" 0 8.8817841970012523e-016 -3.5527136788005009e-015 ; setAttr -k on ".w0"; createNode transform -n "thumb_L0_crv" -p "thumb_L0_root"; - rename -uid "4206805A-476D-BC0D-AF60-94AD47F47A1B"; + rename -uid "64CF9549-4494-B8A3-AC7A-5CB710B9AAD9"; setAttr ".ovdt" 1; setAttr ".ove" yes; setAttr ".t" -type "double3" 14.330153889042865 -7.0737929587543249 17.725867635512838 ; setAttr ".r" -type "double3" -124.44302205362676 63.100734454449608 -77.28135416270166 ; setAttr ".s" -type "double3" 2.0434672163157259 2.0434672163157197 2.0434672163157264 ; createNode nurbsCurve -n "thumb_L0_crvShape" -p "thumb_L0_crv"; - rename -uid "4D358943-4D3C-93D5-D577-38BC0E9B3E17"; + rename -uid "F84B895F-46D5-77E2-2C70-04AFA44E7FEF"; setAttr -k off ".v"; setAttr -s 4 ".iog[0].og"; setAttr ".tw" yes; createNode nurbsCurve -n "thumb_L0_crvShapeOrig" -p "thumb_L0_crv"; - rename -uid "370B39BF-47CA-A99A-5839-1589873CCD93"; + rename -uid "3AA3E6BC-4589-81C2-2EBA-F1A200325B0A"; setAttr -k off ".v"; setAttr ".io" yes; setAttr ".cc" -type "nurbsCurve" @@ -4864,19 +4945,19 @@ createNode nurbsCurve -n "thumb_L0_crvShapeOrig" -p "thumb_L0_crv"; 0 0 0 ; createNode transform -n "arm_L0_crv" -p "arm_L0_root"; - rename -uid "2F1FA4C8-49F1-C9F0-83B4-079A7C94E244"; + rename -uid "CB6879AA-416C-3098-671A-5783E4C9DFFA"; setAttr ".ovdt" 1; setAttr ".ove" yes; setAttr ".t" -type "double3" 9.5792744434200454 -11.86206180747303 1.1564412205648533 ; setAttr ".r" -type "double3" -2.1534408611045537 -4.1959370793367032 45.437740049298291 ; setAttr ".s" -type "double3" 1.0495082267377438 1.0495082267377391 1.0495082267377407 ; createNode nurbsCurve -n "arm_L0_crvShape" -p "arm_L0_crv"; - rename -uid "7479117C-4533-B832-ABD5-CFB1DF5F3A6B"; + rename -uid "105C126C-4828-D62A-0989-CA98F185E283"; setAttr -k off ".v"; setAttr -s 4 ".iog[0].og"; setAttr ".tw" yes; createNode nurbsCurve -n "arm_L0_crvShapeOrig" -p "arm_L0_crv"; - rename -uid "DE25026E-412C-3265-E566-2F8062777107"; + rename -uid "5A551D2F-40F0-06ED-69A0-7997D2591466"; setAttr -k off ".v"; setAttr ".io" yes; setAttr ".cc" -type "nurbsCurve" @@ -4889,7 +4970,7 @@ createNode nurbsCurve -n "arm_L0_crvShapeOrig" -p "arm_L0_crv"; 0 0 0 ; createNode transform -n "shoulder_L0_blade" -p "shoulder_L0_root"; - rename -uid "29E5D67E-4680-FB10-4031-D798000308F6"; + rename -uid "92583A5D-4810-8125-2E2A-489DCA368838"; addAttr -ci true -k true -sn "bladeRollOffset" -ln "bladeRollOffset" -at "float"; setAttr -l on -k off -cb on ".v"; setAttr -k off -cb on ".tx"; @@ -4905,7 +4986,7 @@ createNode transform -n "shoulder_L0_blade" -p "shoulder_L0_root"; setAttr -l on -k off -cb on ".sz"; setAttr -k on ".bladeRollOffset" 90; createNode nurbsCurve -n "shoulder_L0_bladeShape" -p "shoulder_L0_blade"; - rename -uid "1151CB8C-4317-DEC7-CBA5-93A4FAACBEF2"; + rename -uid "39C30DE9-4C19-A91C-06E5-95A3D36F94DE"; setAttr ".ihi" 0; setAttr -k off ".v"; setAttr ".ove" yes; @@ -4920,7 +5001,7 @@ createNode nurbsCurve -n "shoulder_L0_bladeShape" -p "shoulder_L0_blade"; 0 0 0 ; createNode aimConstraint -n "shoulder_L0_blade_aimConstraint9" -p "shoulder_L0_blade"; - rename -uid "22B29C15-4AE9-1C60-5BB8-DA86C8B8660E"; + rename -uid "ACFD040C-4DD1-A543-CEC3-B38641E7F5E3"; addAttr -dcb 0 -ci true -sn "w0" -ln "shoulder_L0_tipW0" -dv 1 -at "double"; setAttr -k on ".nds"; setAttr -k off ".v"; @@ -4939,7 +5020,7 @@ createNode aimConstraint -n "shoulder_L0_blade_aimConstraint9" -p "shoulder_L0_b setAttr ".rsrr" -type "double3" 23.386262286473041 122.53864021838231 110.03040021520766 ; setAttr -k on ".w0"; createNode pointConstraint -n "shoulder_L0_blade_pointConstraint9" -p "shoulder_L0_blade"; - rename -uid "538E6DEA-47D6-3638-BD33-1AB24895BA87"; + rename -uid "058819AB-44AB-F493-A327-1CAE82B96EB8"; addAttr -dcb 0 -ci true -k true -sn "w0" -ln "shoulder_L0_rootW0" -dv 1 -min 0 -at "double"; setAttr -k on ".nds"; @@ -4957,19 +5038,19 @@ createNode pointConstraint -n "shoulder_L0_blade_pointConstraint9" -p "shoulder_ setAttr ".rst" -type "double3" 0 5.2041704279304213e-018 1.3877787807814457e-017 ; setAttr -k on ".w0"; createNode transform -n "shoulder_L0_crv" -p "shoulder_L0_root"; - rename -uid "E1BB91C1-46C2-FF48-B5DA-6B85E71EB663"; + rename -uid "2BCEF109-45DF-A5AE-06BF-C5B5ACA7F0C1"; setAttr ".ovdt" 1; setAttr ".ove" yes; setAttr ".t" -type "double3" 15.507521470509833 0.009276189738275686 0.11673327753265018 ; setAttr ".r" -type "double3" -90.803889228153793 89.999999999999986 0 ; setAttr ".s" -type "double3" 1.0495082267377416 1.0495082267377367 1.0495082267377369 ; createNode nurbsCurve -n "shoulder_L0_crvShape" -p "shoulder_L0_crv"; - rename -uid "A729F4B8-4EAF-71B1-BDA2-40B2667DA058"; + rename -uid "4107DE1B-4209-44A8-DFC7-A5A7D217BDF6"; setAttr -k off ".v"; setAttr -s 4 ".iog[0].og"; setAttr ".tw" yes; createNode nurbsCurve -n "shoulder_L0_crvShapeOrig" -p "shoulder_L0_crv"; - rename -uid "0C4B62B3-45A5-905E-3AA3-DE9551565913"; + rename -uid "27D971BF-4A35-9D68-6213-2887DA31F63D"; setAttr -k off ".v"; setAttr ".io" yes; setAttr ".cc" -type "nurbsCurve" @@ -4980,7 +5061,7 @@ createNode nurbsCurve -n "shoulder_L0_crvShapeOrig" -p "shoulder_L0_crv"; 0 0 0 ; createNode transform -n "neck_C0_root" -p "spine_C0_eff"; - rename -uid "B05286AF-486A-BB89-A37B-41B3690BFCE7"; + rename -uid "46D12DE5-4648-3557-1808-0292A8E6C21F"; addAttr -ci true -sn "isGearGuide" -ln "isGearGuide" -dv 1 -min 0 -max 1 -at "bool"; addAttr -ci true -sn "comp_type" -ln "comp_type" -dt "string"; addAttr -ci true -sn "comp_name" -ln "comp_name" -dt "string"; @@ -5005,7 +5086,7 @@ createNode transform -n "neck_C0_root" -p "spine_C0_eff"; setAttr -k off -cb on ".tx"; setAttr -k off -cb on ".ty"; setAttr -k off -cb on ".tz"; - setAttr ".r" -type "double3" 180 7.062250076880252e-031 89.999999999999986 ; + setAttr ".r" -type "double3" 180 7.0622500768802529e-031 89.999999999999986 ; setAttr -k off -cb on ".rx"; setAttr -k off -cb on ".ry"; setAttr -k off -cb on ".rz"; @@ -5020,15 +5101,15 @@ createNode transform -n "neck_C0_root" -p "spine_C0_eff"; setAttr ".connector" -type "string" "standard"; setAttr ".ui_host" -type "string" "spineUI_C0_root"; setAttr ".ctlGrp" -type "string" ""; - setAttr ".headrefarray" -type "string" "spine_C0_eff,body_C0_root,local_C0_root"; - setAttr ".ikrefarray" -type "string" "spine_C0_eff,body_C0_root,local_C0_root"; + setAttr ".headrefarray" -type "string" "spine_C0_eff,body_C0_root,local_C0_root,global_C0_root"; + setAttr ".ikrefarray" -type "string" "spine_C0_eff,body_C0_root,local_C0_root,global_C0_root"; setAttr ".maxstretch" 1.5; setAttr ".maxsquash" 0.5; setAttr -k on ".st_profile"; setAttr -k on ".sq_profile"; setAttr ".parentJointIndex" -1; createNode nurbsCurve -n "neck_C0_rootShape" -p "neck_C0_root"; - rename -uid "20894899-46ED-2A57-A2C7-A982CCCAB321"; + rename -uid "719D4E41-4647-B269-D183-309C11147117"; setAttr ".ihi" 0; setAttr -k off ".v"; setAttr ".ove" yes; @@ -5041,7 +5122,7 @@ createNode nurbsCurve -n "neck_C0_rootShape" -p "neck_C0_root"; -0.25 0 0 ; createNode nurbsCurve -n "neck_C0_root25Shape" -p "neck_C0_root"; - rename -uid "370980C6-4BD6-C2D0-BA64-5C8D184E5B16"; + rename -uid "2BC35D86-4AC7-A3D8-2195-5C8727E473DB"; setAttr ".ihi" 0; setAttr -k off ".v"; setAttr ".ove" yes; @@ -5054,7 +5135,7 @@ createNode nurbsCurve -n "neck_C0_root25Shape" -p "neck_C0_root"; 0 -0.25 0 ; createNode nurbsCurve -n "neck_C0_root26Shape" -p "neck_C0_root"; - rename -uid "2830CDCB-4611-8515-4979-AE896C979521"; + rename -uid "FA1F9AB3-47B6-2077-352E-D3A9B2A032A3"; setAttr ".ihi" 0; setAttr -k off ".v"; setAttr ".ove" yes; @@ -5067,7 +5148,7 @@ createNode nurbsCurve -n "neck_C0_root26Shape" -p "neck_C0_root"; 0 0 -0.25 ; createNode nurbsCurve -n "neck_C0_root27Shape" -p "neck_C0_root"; - rename -uid "1B1D4C02-40CE-0ECF-266F-D8B83A11187C"; + rename -uid "D1EA57F7-40E7-07BD-D788-0A858ECFE7B4"; setAttr ".ihi" 0; setAttr -k off ".v"; setAttr ".ove" yes; @@ -5094,7 +5175,7 @@ createNode nurbsCurve -n "neck_C0_root27Shape" -p "neck_C0_root"; -0.125 -0.125 -0.125 ; createNode transform -n "neck_C0_neck" -p "neck_C0_root"; - rename -uid "D9B33D7B-4EB5-E21F-7F6F-8AB852B8F554"; + rename -uid "13729CBF-485B-AF61-AEC0-31BF1B46FD5E"; addAttr -ci true -sn "isGearGuide" -ln "isGearGuide" -dv 1 -min 0 -max 1 -at "bool"; setAttr -k off -cb on ".v"; setAttr ".t" -type "double3" -0.66811733981641108 2.4674946259577837 1.5382908879615304e-016 ; @@ -5110,7 +5191,7 @@ createNode transform -n "neck_C0_neck" -p "neck_C0_root"; setAttr -k off -cb on ".sy"; setAttr -k off -cb on ".sz"; createNode nurbsCurve -n "neck_C0_neckShape" -p "neck_C0_neck"; - rename -uid "270D0CBF-4939-5A4E-E268-78AEF1099944"; + rename -uid "6BD6E103-4AEF-3237-6720-AB8F0431D08F"; setAttr ".ihi" 0; setAttr -k off ".v"; setAttr ".ove" yes; @@ -5123,7 +5204,7 @@ createNode nurbsCurve -n "neck_C0_neckShape" -p "neck_C0_neck"; -0.25 0 0 ; createNode nurbsCurve -n "neck_C0_neck25Shape" -p "neck_C0_neck"; - rename -uid "ED021FD5-4E5D-7BA8-6FFE-A3998A979651"; + rename -uid "2952B913-4D7F-5F5C-C9E9-F296DF143A91"; setAttr ".ihi" 0; setAttr -k off ".v"; setAttr ".ove" yes; @@ -5136,7 +5217,7 @@ createNode nurbsCurve -n "neck_C0_neck25Shape" -p "neck_C0_neck"; 0 -0.25 0 ; createNode nurbsCurve -n "neck_C0_neck26Shape" -p "neck_C0_neck"; - rename -uid "F7361CC6-42CA-EDE6-D669-F09E385141B0"; + rename -uid "D8FFEFD5-4F87-F729-1AFF-2DB43D30E13B"; setAttr ".ihi" 0; setAttr -k off ".v"; setAttr ".ove" yes; @@ -5149,7 +5230,7 @@ createNode nurbsCurve -n "neck_C0_neck26Shape" -p "neck_C0_neck"; 0 0 -0.25 ; createNode nurbsCurve -n "neck_C0_neck27Shape" -p "neck_C0_neck"; - rename -uid "0CD12C7B-44BD-B267-A44D-AD8304339CCE"; + rename -uid "B147BE02-4B26-CB39-F48A-3FB789DA59B7"; setAttr ".ihi" 0; setAttr -k off ".v"; setAttr ".ove" yes; @@ -5167,7 +5248,7 @@ createNode nurbsCurve -n "neck_C0_neck27Shape" -p "neck_C0_neck"; -0.1875 0 0 ; createNode nurbsCurve -n "neck_C0_neck27_0crvShape" -p "neck_C0_neck"; - rename -uid "4AF00464-40CC-BDA2-E8E6-31BC83EFF72F"; + rename -uid "27111337-42E5-5354-D6FB-61B1B7866F8E"; setAttr ".ihi" 0; setAttr -k off ".v"; setAttr ".ove" yes; @@ -5185,7 +5266,7 @@ createNode nurbsCurve -n "neck_C0_neck27_0crvShape" -p "neck_C0_neck"; -0.1875 0 0 ; createNode nurbsCurve -n "neck_C0_neck27_1crvShape" -p "neck_C0_neck"; - rename -uid "B88E733C-43A1-4EF7-9E4B-BE8C9DB23B05"; + rename -uid "D64E90BA-4C9F-72B8-0869-42AB292E9404"; setAttr ".ihi" 0; setAttr -k off ".v"; setAttr ".ove" yes; @@ -5203,7 +5284,7 @@ createNode nurbsCurve -n "neck_C0_neck27_1crvShape" -p "neck_C0_neck"; 0 0 -0.1875 ; createNode transform -n "neck_C0_head" -p "neck_C0_neck"; - rename -uid "C0CC7A89-4CB3-5251-B9D1-20AEDF48188C"; + rename -uid "9A42AEE6-4CF7-7CA6-ED93-12A43E19DC3D"; addAttr -ci true -sn "isGearGuide" -ln "isGearGuide" -dv 1 -min 0 -max 1 -at "bool"; setAttr -k off -cb on ".v"; setAttr ".t" -type "double3" 1.3877787807814457e-016 0.10000000000004405 1.2246467991476512e-017 ; @@ -5219,7 +5300,7 @@ createNode transform -n "neck_C0_head" -p "neck_C0_neck"; setAttr -k off -cb on ".sy"; setAttr -k off -cb on ".sz"; createNode nurbsCurve -n "neck_C0_headShape" -p "neck_C0_head"; - rename -uid "11AA9789-4D9B-397E-F596-4CB931CD83E1"; + rename -uid "FD168BAC-48D4-CDFD-5FD5-15893495E1B3"; setAttr ".ihi" 0; setAttr -k off ".v"; setAttr ".ove" yes; @@ -5232,7 +5313,7 @@ createNode nurbsCurve -n "neck_C0_headShape" -p "neck_C0_head"; -0.25 0 0 ; createNode nurbsCurve -n "neck_C0_head25Shape" -p "neck_C0_head"; - rename -uid "CF231DB3-48EA-5176-22FD-69888B74514F"; + rename -uid "E8568B37-4452-31BB-D15D-E596041C72CD"; setAttr ".ihi" 0; setAttr -k off ".v"; setAttr ".ove" yes; @@ -5245,7 +5326,7 @@ createNode nurbsCurve -n "neck_C0_head25Shape" -p "neck_C0_head"; 0 -0.25 0 ; createNode nurbsCurve -n "neck_C0_head26Shape" -p "neck_C0_head"; - rename -uid "2C6A679D-435E-45A3-8D9B-40856BD8A5AC"; + rename -uid "1D7026A9-47C9-2F86-1CAC-17953F6374F3"; setAttr ".ihi" 0; setAttr -k off ".v"; setAttr ".ove" yes; @@ -5258,7 +5339,7 @@ createNode nurbsCurve -n "neck_C0_head26Shape" -p "neck_C0_head"; 0 0 -0.25 ; createNode nurbsCurve -n "neck_C0_head27Shape" -p "neck_C0_head"; - rename -uid "72269914-4762-1747-FDB6-76A3425F847F"; + rename -uid "271501BF-4A27-A85A-3AAA-BBAEBC8833C7"; setAttr ".ihi" 0; setAttr -k off ".v"; setAttr ".ove" yes; @@ -5276,7 +5357,7 @@ createNode nurbsCurve -n "neck_C0_head27Shape" -p "neck_C0_head"; -0.1875 0 0 ; createNode nurbsCurve -n "neck_C0_head27_0crvShape" -p "neck_C0_head"; - rename -uid "A19AF2F4-4B8C-97AD-8C0E-498470C45B77"; + rename -uid "459C1E4C-4A07-DEAB-CD53-ACBA02335EBE"; setAttr ".ihi" 0; setAttr -k off ".v"; setAttr ".ove" yes; @@ -5294,7 +5375,7 @@ createNode nurbsCurve -n "neck_C0_head27_0crvShape" -p "neck_C0_head"; -0.1875 0 0 ; createNode nurbsCurve -n "neck_C0_head27_1crvShape" -p "neck_C0_head"; - rename -uid "6AC6CC74-4CE4-0722-8B53-2D8E481A92CD"; + rename -uid "D36D2C15-41EA-DAD3-C759-DFAF49C1FC99"; setAttr ".ihi" 0; setAttr -k off ".v"; setAttr ".ove" yes; @@ -5312,7 +5393,7 @@ createNode nurbsCurve -n "neck_C0_head27_1crvShape" -p "neck_C0_head"; 0 0 -0.1875 ; createNode transform -n "neck_C0_eff" -p "neck_C0_head"; - rename -uid "D4514F1B-47C6-7BF7-AE56-779CC96EBF43"; + rename -uid "11C54A22-4C77-E907-0598-2DBFD5BD5ECA"; addAttr -ci true -sn "isGearGuide" -ln "isGearGuide" -dv 1 -min 0 -max 1 -at "bool"; setAttr -k off -cb on ".v"; setAttr ".t" -type "double3" 1.1657341758564144e-015 3.0746209978281733 2.3592239273284103e-016 ; @@ -5328,7 +5409,7 @@ createNode transform -n "neck_C0_eff" -p "neck_C0_head"; setAttr -k off -cb on ".sy"; setAttr -k off -cb on ".sz"; createNode nurbsCurve -n "neck_C0_effShape" -p "neck_C0_eff"; - rename -uid "D5F7EB72-4DE4-ED8B-AD7F-3FBF66BE769C"; + rename -uid "CE660E0A-4D22-38B7-E97A-AC942D2561C7"; setAttr ".ihi" 0; setAttr -k off ".v"; setAttr ".ove" yes; @@ -5341,7 +5422,7 @@ createNode nurbsCurve -n "neck_C0_effShape" -p "neck_C0_eff"; -0.25 0 0 ; createNode nurbsCurve -n "neck_C0_eff25Shape" -p "neck_C0_eff"; - rename -uid "9AF215A0-4663-4FE1-BC31-BD9FB936AC37"; + rename -uid "A71F25B7-445D-DCE6-7319-F0A0F8D7AA8E"; setAttr ".ihi" 0; setAttr -k off ".v"; setAttr ".ove" yes; @@ -5354,7 +5435,7 @@ createNode nurbsCurve -n "neck_C0_eff25Shape" -p "neck_C0_eff"; 0 -0.25 0 ; createNode nurbsCurve -n "neck_C0_eff26Shape" -p "neck_C0_eff"; - rename -uid "0AC16C5B-44A3-9C77-1172-B38A3E3997BE"; + rename -uid "F3CA62F5-4C22-6997-A6D4-52A493E59C2F"; setAttr ".ihi" 0; setAttr -k off ".v"; setAttr ".ove" yes; @@ -5367,7 +5448,7 @@ createNode nurbsCurve -n "neck_C0_eff26Shape" -p "neck_C0_eff"; 0 0 -0.25 ; createNode nurbsCurve -n "neck_C0_eff27Shape" -p "neck_C0_eff"; - rename -uid "4C4964CD-45D3-CD16-AC61-5DB5FD856FA4"; + rename -uid "3FDE6F8B-4592-FDFA-16D0-7C99862AE459"; setAttr ".ihi" 0; setAttr -k off ".v"; setAttr ".ove" yes; @@ -5385,7 +5466,7 @@ createNode nurbsCurve -n "neck_C0_eff27Shape" -p "neck_C0_eff"; -0.1875 0 0 ; createNode nurbsCurve -n "neck_C0_eff27_0crvShape" -p "neck_C0_eff"; - rename -uid "AFEE6AFD-4BCF-98C2-9E10-118DCC73D3EE"; + rename -uid "AC4ABE45-40D7-E35A-A8B3-328534AC841D"; setAttr ".ihi" 0; setAttr -k off ".v"; setAttr ".ove" yes; @@ -5403,7 +5484,7 @@ createNode nurbsCurve -n "neck_C0_eff27_0crvShape" -p "neck_C0_eff"; -0.1875 0 0 ; createNode nurbsCurve -n "neck_C0_eff27_1crvShape" -p "neck_C0_eff"; - rename -uid "45D26B47-421B-9022-D039-6D84CCBC4A89"; + rename -uid "44714B46-4A20-2CB1-C899-E2BC03709047"; setAttr ".ihi" 0; setAttr -k off ".v"; setAttr ".ove" yes; @@ -5421,7 +5502,7 @@ createNode nurbsCurve -n "neck_C0_eff27_1crvShape" -p "neck_C0_eff"; 0 0 -0.1875 ; createNode transform -n "faceUI_C0_root" -p "neck_C0_eff"; - rename -uid "50C942E1-4984-8C0B-9146-C4A906718F10"; + rename -uid "1F91A844-4CD2-6645-35C6-A1878386A984"; addAttr -ci true -sn "isGearGuide" -ln "isGearGuide" -dv 1 -min 0 -max 1 -at "bool"; addAttr -ci true -sn "comp_type" -ln "comp_type" -dt "string"; addAttr -ci true -sn "comp_name" -ln "comp_name" -dt "string"; @@ -5474,7 +5555,7 @@ createNode transform -n "faceUI_C0_root" -p "neck_C0_eff"; setAttr ".ctlSize" 1; setAttr ".parentJointIndex" -1; createNode nurbsCurve -n "faceUI_C0_rootShape" -p "faceUI_C0_root"; - rename -uid "F68552F2-420E-D1D1-818B-99B1C62FC27E"; + rename -uid "B435ABC2-4320-2ED7-00C6-E890E890CB6F"; setAttr ".ihi" 0; setAttr -k off ".v"; setAttr ".ove" yes; @@ -5487,7 +5568,7 @@ createNode nurbsCurve -n "faceUI_C0_rootShape" -p "faceUI_C0_root"; -0.25 0 0 ; createNode nurbsCurve -n "faceUI_C0_root25Shape" -p "faceUI_C0_root"; - rename -uid "E95EE71D-44BE-2470-3A3D-56BC019263A0"; + rename -uid "119E7ADF-4318-22AD-8B06-D4AC26231F32"; setAttr ".ihi" 0; setAttr -k off ".v"; setAttr ".ove" yes; @@ -5500,7 +5581,7 @@ createNode nurbsCurve -n "faceUI_C0_root25Shape" -p "faceUI_C0_root"; 0 -0.25 0 ; createNode nurbsCurve -n "faceUI_C0_root26Shape" -p "faceUI_C0_root"; - rename -uid "38E3EEFE-43A3-CC33-7FE6-A1AA808DE70B"; + rename -uid "45292BDE-4698-D489-EFC1-C1BC683BE994"; setAttr ".ihi" 0; setAttr -k off ".v"; setAttr ".ove" yes; @@ -5513,7 +5594,7 @@ createNode nurbsCurve -n "faceUI_C0_root26Shape" -p "faceUI_C0_root"; 0 0 -0.25 ; createNode nurbsCurve -n "faceUI_C0_root27Shape" -p "faceUI_C0_root"; - rename -uid "2DC97D68-4DDB-177B-9ACE-4497BE305B41"; + rename -uid "5DC834E7-4930-DC6C-8C58-14AD5DD13B89"; setAttr ".ihi" 0; setAttr -k off ".v"; setAttr ".ove" yes; @@ -5540,7 +5621,7 @@ createNode nurbsCurve -n "faceUI_C0_root27Shape" -p "faceUI_C0_root"; -0.125 -0.125 -0.125 ; createNode transform -n "faceUI_C0_sizeRef" -p "faceUI_C0_root"; - rename -uid "1A1B3EFD-412C-E7E2-3805-D18AC508D77D"; + rename -uid "1ADF29FD-426B-BB18-2945-9D8DF569E7B3"; addAttr -ci true -sn "isGearGuide" -ln "isGearGuide" -dv 1 -min 0 -max 1 -at "bool"; setAttr -k off -cb on ".v"; setAttr ".t" -type "double3" -1.7538799546502091 -7.1054273576010019e-015 -3.8943958161623829e-016 ; @@ -5557,7 +5638,7 @@ createNode transform -n "faceUI_C0_sizeRef" -p "faceUI_C0_root"; setAttr -k off -cb on ".sy"; setAttr -k off -cb on ".sz"; createNode transform -n "mouth_C0_root" -p "neck_C0_head"; - rename -uid "12D5379E-4AB9-7DF3-94D4-AFB9AD649740"; + rename -uid "98700D71-4297-99CD-13F1-B790AF9B0511"; addAttr -ci true -sn "isGearGuide" -ln "isGearGuide" -dv 1 -min 0 -max 1 -at "bool"; addAttr -ci true -sn "comp_type" -ln "comp_type" -dt "string"; addAttr -ci true -sn "comp_name" -ln "comp_name" -dt "string"; @@ -5590,7 +5671,7 @@ createNode transform -n "mouth_C0_root" -p "neck_C0_head"; setAttr ".ctlGrp" -type "string" ""; setAttr ".parentJointIndex" -1; createNode nurbsCurve -n "mouth_C0_rootShape" -p "mouth_C0_root"; - rename -uid "E2B303AE-4ECD-3907-67BA-4884734DA9E2"; + rename -uid "5E484762-45A8-AC75-0447-8BA85AE157E4"; setAttr ".ihi" 0; setAttr -k off ".v"; setAttr ".ove" yes; @@ -5603,7 +5684,7 @@ createNode nurbsCurve -n "mouth_C0_rootShape" -p "mouth_C0_root"; -0.25 0 0 ; createNode nurbsCurve -n "mouth_C0_root25Shape" -p "mouth_C0_root"; - rename -uid "1C790741-4056-C542-7339-75BB6CBA8327"; + rename -uid "74DAFABD-45D1-81DE-3B5C-199858627524"; setAttr ".ihi" 0; setAttr -k off ".v"; setAttr ".ove" yes; @@ -5616,7 +5697,7 @@ createNode nurbsCurve -n "mouth_C0_root25Shape" -p "mouth_C0_root"; 0 -0.25 0 ; createNode nurbsCurve -n "mouth_C0_root26Shape" -p "mouth_C0_root"; - rename -uid "5CC42036-4A56-4912-B075-E1A5D0BB04BD"; + rename -uid "920238C5-4EF4-EE41-22B5-B1B79870C7D4"; setAttr ".ihi" 0; setAttr -k off ".v"; setAttr ".ove" yes; @@ -5629,7 +5710,7 @@ createNode nurbsCurve -n "mouth_C0_root26Shape" -p "mouth_C0_root"; 0 0 -0.25 ; createNode nurbsCurve -n "mouth_C0_root27Shape" -p "mouth_C0_root"; - rename -uid "A417D0AB-4C63-9624-9F32-5A96F1AE0D32"; + rename -uid "8A3A2378-48AE-9965-F646-5B826BE38A72"; setAttr ".ihi" 0; setAttr -k off ".v"; setAttr ".ove" yes; @@ -5656,7 +5737,7 @@ createNode nurbsCurve -n "mouth_C0_root27Shape" -p "mouth_C0_root"; -0.125 -0.125 -0.125 ; createNode transform -n "mouth_C0_rotcenter" -p "mouth_C0_root"; - rename -uid "06FBCB1E-4FC5-B787-2E8D-7DB601982006"; + rename -uid "B92A0C5D-4BF6-F379-0A43-91AB8F69C594"; addAttr -ci true -sn "isGearGuide" -ln "isGearGuide" -dv 1 -min 0 -max 1 -at "bool"; setAttr -k off -cb on ".v"; setAttr ".t" -type "double3" -8.7644326417193379e-016 -0.62123610319594391 1.8022590188867564 ; @@ -5672,7 +5753,7 @@ createNode transform -n "mouth_C0_rotcenter" -p "mouth_C0_root"; setAttr -k off -cb on ".sy"; setAttr -k off -cb on ".sz"; createNode nurbsCurve -n "mouth_C0_rotcenterShape" -p "mouth_C0_rotcenter"; - rename -uid "C8471712-4D4D-E5EE-0DF6-7D9662CE20D2"; + rename -uid "CB1C4273-4286-3CE6-761D-6CB0C2B40172"; setAttr ".ihi" 0; setAttr -k off ".v"; setAttr ".ove" yes; @@ -5685,7 +5766,7 @@ createNode nurbsCurve -n "mouth_C0_rotcenterShape" -p "mouth_C0_rotcenter"; -0.25 0 0 ; createNode nurbsCurve -n "mouth_C0_rotcenter25Shape" -p "mouth_C0_rotcenter"; - rename -uid "0D5C923C-47C0-46B7-6C79-3089DD74C310"; + rename -uid "18A96EA7-49B2-E95A-6473-04BE03EB4CAA"; setAttr ".ihi" 0; setAttr -k off ".v"; setAttr ".ove" yes; @@ -5698,7 +5779,7 @@ createNode nurbsCurve -n "mouth_C0_rotcenter25Shape" -p "mouth_C0_rotcenter"; 0 -0.25 0 ; createNode nurbsCurve -n "mouth_C0_rotcenter26Shape" -p "mouth_C0_rotcenter"; - rename -uid "182428C5-442A-0955-2747-94A52C6D79DC"; + rename -uid "BB0CD606-4647-0CE9-D5A3-17B4F82678E8"; setAttr ".ihi" 0; setAttr -k off ".v"; setAttr ".ove" yes; @@ -5711,7 +5792,7 @@ createNode nurbsCurve -n "mouth_C0_rotcenter26Shape" -p "mouth_C0_rotcenter"; 0 0 -0.25 ; createNode nurbsCurve -n "mouth_C0_rotcenter27Shape" -p "mouth_C0_rotcenter"; - rename -uid "60A1C1FF-45C6-135B-44A1-2D9F722E7166"; + rename -uid "D63C5189-4745-4A23-2AC4-55AD73A47B6F"; setAttr ".ihi" 0; setAttr -k off ".v"; setAttr ".ove" yes; @@ -5729,7 +5810,7 @@ createNode nurbsCurve -n "mouth_C0_rotcenter27Shape" -p "mouth_C0_rotcenter"; -0.1875 0 0 ; createNode nurbsCurve -n "mouth_C0_rotcenter27_0crvShape" -p "mouth_C0_rotcenter"; - rename -uid "89E24A94-41BE-20AC-FA76-999143748973"; + rename -uid "793B1192-47E3-8335-4B47-53B176C80946"; setAttr ".ihi" 0; setAttr -k off ".v"; setAttr ".ove" yes; @@ -5747,7 +5828,7 @@ createNode nurbsCurve -n "mouth_C0_rotcenter27_0crvShape" -p "mouth_C0_rotcenter -0.1875 0 0 ; createNode nurbsCurve -n "mouth_C0_rotcenter27_1crvShape" -p "mouth_C0_rotcenter"; - rename -uid "D00C11A3-4CA4-9C37-9E55-11A73FFBD081"; + rename -uid "5004319B-4094-B845-D57E-5EA8606BA44C"; setAttr ".ihi" 0; setAttr -k off ".v"; setAttr ".ove" yes; @@ -5765,7 +5846,7 @@ createNode nurbsCurve -n "mouth_C0_rotcenter27_1crvShape" -p "mouth_C0_rotcenter 0 0 -0.1875 ; createNode transform -n "mouth_C0_lipup" -p "mouth_C0_rotcenter"; - rename -uid "E69001F3-407F-5CAF-6BC0-8EB2648A5E13"; + rename -uid "87CDDAAE-4AF3-6749-134B-32B2DF2D6609"; addAttr -ci true -sn "isGearGuide" -ln "isGearGuide" -dv 1 -min 0 -max 1 -at "bool"; setAttr -k off -cb on ".v"; setAttr ".t" -type "double3" -8.9761536313416156e-017 0.12388352783449363 0.23628786867351526 ; @@ -5781,7 +5862,7 @@ createNode transform -n "mouth_C0_lipup" -p "mouth_C0_rotcenter"; setAttr -k off -cb on ".sy"; setAttr -k off -cb on ".sz"; createNode nurbsCurve -n "mouth_C0_lipupShape" -p "mouth_C0_lipup"; - rename -uid "374CEBC8-494E-1F46-7B7B-8388B9388D93"; + rename -uid "BD1724DA-403F-74A0-9C19-6596759F69EC"; setAttr ".ihi" 0; setAttr -k off ".v"; setAttr ".ove" yes; @@ -5794,7 +5875,7 @@ createNode nurbsCurve -n "mouth_C0_lipupShape" -p "mouth_C0_lipup"; -0.25 0 0 ; createNode nurbsCurve -n "mouth_C0_lipup25Shape" -p "mouth_C0_lipup"; - rename -uid "274A0C8D-4CA7-5A0E-148A-26B973C7C638"; + rename -uid "8FDCD360-4874-EFA3-C083-ACB4D7B5FC6B"; setAttr ".ihi" 0; setAttr -k off ".v"; setAttr ".ove" yes; @@ -5807,7 +5888,7 @@ createNode nurbsCurve -n "mouth_C0_lipup25Shape" -p "mouth_C0_lipup"; 0 -0.25 0 ; createNode nurbsCurve -n "mouth_C0_lipup26Shape" -p "mouth_C0_lipup"; - rename -uid "7F1818FF-4DB5-B73A-5E48-43A237887C6B"; + rename -uid "FD9DAB1C-4AC7-7B13-1B8E-64BE3F653DDF"; setAttr ".ihi" 0; setAttr -k off ".v"; setAttr ".ove" yes; @@ -5820,7 +5901,7 @@ createNode nurbsCurve -n "mouth_C0_lipup26Shape" -p "mouth_C0_lipup"; 0 0 -0.25 ; createNode nurbsCurve -n "mouth_C0_lipup27Shape" -p "mouth_C0_lipup"; - rename -uid "473A8EA2-42DC-B2DC-E6D7-4FA5A7573D4E"; + rename -uid "E4E427B1-49C8-8EE2-8AA8-A4A910B1B887"; setAttr ".ihi" 0; setAttr -k off ".v"; setAttr ".ove" yes; @@ -5838,7 +5919,7 @@ createNode nurbsCurve -n "mouth_C0_lipup27Shape" -p "mouth_C0_lipup"; -0.1875 0 0 ; createNode nurbsCurve -n "mouth_C0_lipup27_0crvShape" -p "mouth_C0_lipup"; - rename -uid "5FBFF75A-4E0C-6C6C-45F9-32AA862DA05A"; + rename -uid "95752DFD-4062-42B6-DBF3-1D8E34B7AABB"; setAttr ".ihi" 0; setAttr -k off ".v"; setAttr ".ove" yes; @@ -5856,7 +5937,7 @@ createNode nurbsCurve -n "mouth_C0_lipup27_0crvShape" -p "mouth_C0_lipup"; -0.1875 0 0 ; createNode nurbsCurve -n "mouth_C0_lipup27_1crvShape" -p "mouth_C0_lipup"; - rename -uid "D3D36F09-48C4-CB31-7F42-75BB0FCA7604"; + rename -uid "D11A1808-4494-DDF9-F3E5-D3807007DC95"; setAttr ".ihi" 0; setAttr -k off ".v"; setAttr ".ove" yes; @@ -5874,18 +5955,18 @@ createNode nurbsCurve -n "mouth_C0_lipup27_1crvShape" -p "mouth_C0_lipup"; 0 0 -0.1875 ; createNode transform -n "mouth_C0_crv" -p "mouth_C0_lipup"; - rename -uid "A1967D26-48D7-2A38-2785-06959A3C3DC4"; + rename -uid "DD138B31-44F8-44D6-4718-A9B884F48401"; setAttr ".ovdt" 1; setAttr ".ove" yes; setAttr ".t" -type "double3" -3.2860216724904479e-015 -30.115037669761499 -2.1322109539326486 ; setAttr ".s" -type "double3" 1.8286050763007582 1.82860507630076 1.8286050763007613 ; -createNode nurbsCurve -n "mouth_C0_crvShape" -p "|guide|local_C0_root|body_C0_root|spine_C0_root|spine_C0_eff|neck_C0_root|neck_C0_neck|neck_C0_head|mouth_C0_root|mouth_C0_rotcenter|mouth_C0_lipup|mouth_C0_crv"; - rename -uid "8753D95F-401F-5292-8F8B-B9A1ADF2487F"; +createNode nurbsCurve -n "mouth_C0_crvShape" -p "|guide|global_C0_root|local_C0_root|body_C0_root|spine_C0_root|spine_C0_eff|neck_C0_root|neck_C0_neck|neck_C0_head|mouth_C0_root|mouth_C0_rotcenter|mouth_C0_lipup|mouth_C0_crv"; + rename -uid "534C2688-424E-36DE-BC8D-8CBF5DAD444B"; setAttr -k off ".v"; setAttr -s 4 ".iog[0].og"; setAttr ".tw" yes; -createNode nurbsCurve -n "mouth_C0_crvShapeOrig" -p "|guide|local_C0_root|body_C0_root|spine_C0_root|spine_C0_eff|neck_C0_root|neck_C0_neck|neck_C0_head|mouth_C0_root|mouth_C0_rotcenter|mouth_C0_lipup|mouth_C0_crv"; - rename -uid "209F17B5-474A-580E-A066-F8BA40B3BAE1"; +createNode nurbsCurve -n "mouth_C0_crvShapeOrig" -p "|guide|global_C0_root|local_C0_root|body_C0_root|spine_C0_root|spine_C0_eff|neck_C0_root|neck_C0_neck|neck_C0_head|mouth_C0_root|mouth_C0_rotcenter|mouth_C0_lipup|mouth_C0_crv"; + rename -uid "3CC96B22-4264-AB37-120F-4D9E69A31C09"; setAttr -k off ".v"; setAttr ".io" yes; setAttr ".cc" -type "nurbsCurve" @@ -5896,7 +5977,7 @@ createNode nurbsCurve -n "mouth_C0_crvShapeOrig" -p "|guide|local_C0_root|body_C 0 0 0 ; createNode transform -n "mouth_C0_liplow" -p "mouth_C0_rotcenter"; - rename -uid "32DE63AD-4B89-8B8C-9242-DCAF6851D166"; + rename -uid "70495067-4F41-F179-8E51-C3AA53A644DA"; addAttr -ci true -sn "isGearGuide" -ln "isGearGuide" -dv 1 -min 0 -max 1 -at "bool"; setAttr -k off -cb on ".v"; setAttr ".t" -type "double3" -9.8775621283846274e-017 -0.1467824739346888 0.18194531820222393 ; @@ -5912,7 +5993,7 @@ createNode transform -n "mouth_C0_liplow" -p "mouth_C0_rotcenter"; setAttr -k off -cb on ".sy"; setAttr -k off -cb on ".sz"; createNode nurbsCurve -n "mouth_C0_liplowShape" -p "mouth_C0_liplow"; - rename -uid "055CF040-424E-D7A6-D74F-C99947A7F9BB"; + rename -uid "01E68488-40E1-409F-400F-21ACFC9DB832"; setAttr ".ihi" 0; setAttr -k off ".v"; setAttr ".ove" yes; @@ -5925,7 +6006,7 @@ createNode nurbsCurve -n "mouth_C0_liplowShape" -p "mouth_C0_liplow"; -0.25 0 0 ; createNode nurbsCurve -n "mouth_C0_liplow25Shape" -p "mouth_C0_liplow"; - rename -uid "7A31BFD7-4AFD-920B-29F9-AEBA53AAE603"; + rename -uid "F0881345-4A08-41B0-FCBA-B3AA36B9F243"; setAttr ".ihi" 0; setAttr -k off ".v"; setAttr ".ove" yes; @@ -5938,7 +6019,7 @@ createNode nurbsCurve -n "mouth_C0_liplow25Shape" -p "mouth_C0_liplow"; 0 -0.25 0 ; createNode nurbsCurve -n "mouth_C0_liplow26Shape" -p "mouth_C0_liplow"; - rename -uid "49B17946-4153-C649-AE0E-3D9589F11667"; + rename -uid "C7C7F34C-422C-FF66-1630-3E940C44018D"; setAttr ".ihi" 0; setAttr -k off ".v"; setAttr ".ove" yes; @@ -5951,7 +6032,7 @@ createNode nurbsCurve -n "mouth_C0_liplow26Shape" -p "mouth_C0_liplow"; 0 0 -0.25 ; createNode nurbsCurve -n "mouth_C0_liplow27Shape" -p "mouth_C0_liplow"; - rename -uid "B48C08E3-4A92-F56D-5217-2983DBC220AD"; + rename -uid "B8A828C5-4DE6-5504-24D0-FEBB61A85DBE"; setAttr ".ihi" 0; setAttr -k off ".v"; setAttr ".ove" yes; @@ -5969,7 +6050,7 @@ createNode nurbsCurve -n "mouth_C0_liplow27Shape" -p "mouth_C0_liplow"; -0.1875 0 0 ; createNode nurbsCurve -n "mouth_C0_liplow27_0crvShape" -p "mouth_C0_liplow"; - rename -uid "54230183-4635-91B6-6C90-9A9B06844DC5"; + rename -uid "71E92BE5-413C-5BBD-9F19-D1A034570A7E"; setAttr ".ihi" 0; setAttr -k off ".v"; setAttr ".ove" yes; @@ -5987,7 +6068,7 @@ createNode nurbsCurve -n "mouth_C0_liplow27_0crvShape" -p "mouth_C0_liplow"; -0.1875 0 0 ; createNode nurbsCurve -n "mouth_C0_liplow27_1crvShape" -p "mouth_C0_liplow"; - rename -uid "5C19D532-442C-F229-2F99-4A8F8B3B9C77"; + rename -uid "E860C9AB-447C-5BB8-9368-02BD67255399"; setAttr ".ihi" 0; setAttr -k off ".v"; setAttr ".ove" yes; @@ -6005,18 +6086,18 @@ createNode nurbsCurve -n "mouth_C0_liplow27_1crvShape" -p "mouth_C0_liplow"; 0 0 -0.1875 ; createNode transform -n "mouth_C0_crv" -p "mouth_C0_liplow"; - rename -uid "F2DE634F-4195-21A4-4AD2-98BECD352842"; + rename -uid "7D279E83-4D7E-1E12-BDED-8CBF45D02697"; setAttr ".ovdt" 1; setAttr ".ove" yes; setAttr ".t" -type "double3" -3.2770075875200178e-015 -29.844371667992313 -2.0778684034613573 ; setAttr ".s" -type "double3" 1.8286050763007582 1.82860507630076 1.8286050763007613 ; -createNode nurbsCurve -n "mouth_C0_crvShape" -p "|guide|local_C0_root|body_C0_root|spine_C0_root|spine_C0_eff|neck_C0_root|neck_C0_neck|neck_C0_head|mouth_C0_root|mouth_C0_rotcenter|mouth_C0_liplow|mouth_C0_crv"; - rename -uid "96FCBE04-4983-1355-5E1B-BD939852EC5D"; +createNode nurbsCurve -n "mouth_C0_crvShape" -p "|guide|global_C0_root|local_C0_root|body_C0_root|spine_C0_root|spine_C0_eff|neck_C0_root|neck_C0_neck|neck_C0_head|mouth_C0_root|mouth_C0_rotcenter|mouth_C0_liplow|mouth_C0_crv"; + rename -uid "6CF2E8C6-4D37-10E4-916B-23B07C8BAB66"; setAttr -k off ".v"; setAttr -s 4 ".iog[0].og"; setAttr ".tw" yes; -createNode nurbsCurve -n "mouth_C0_crvShapeOrig" -p "|guide|local_C0_root|body_C0_root|spine_C0_root|spine_C0_eff|neck_C0_root|neck_C0_neck|neck_C0_head|mouth_C0_root|mouth_C0_rotcenter|mouth_C0_liplow|mouth_C0_crv"; - rename -uid "861F4894-4D3F-AB5B-4214-FDAC4FDF2BC2"; +createNode nurbsCurve -n "mouth_C0_crvShapeOrig" -p "|guide|global_C0_root|local_C0_root|body_C0_root|spine_C0_root|spine_C0_eff|neck_C0_root|neck_C0_neck|neck_C0_head|mouth_C0_root|mouth_C0_rotcenter|mouth_C0_liplow|mouth_C0_crv"; + rename -uid "AA49FF8E-4867-656C-49A5-18806B7D5C5D"; setAttr -k off ".v"; setAttr ".io" yes; setAttr ".cc" -type "nurbsCurve" @@ -6027,7 +6108,7 @@ createNode nurbsCurve -n "mouth_C0_crvShapeOrig" -p "|guide|local_C0_root|body_C 0 0 0 ; createNode transform -n "mouth_C0_jaw" -p "mouth_C0_root"; - rename -uid "76042B45-43F6-9BDB-8C84-FDB7BCD65A5E"; + rename -uid "568949F5-4441-7918-D776-0181D6E3D95D"; addAttr -ci true -sn "isGearGuide" -ln "isGearGuide" -dv 1 -min 0 -max 1 -at "bool"; setAttr -k off -cb on ".v"; setAttr ".t" -type "double3" -1.0917243463457493e-015 -1.4111110000775078 2.0692083234973273 ; @@ -6043,7 +6124,7 @@ createNode transform -n "mouth_C0_jaw" -p "mouth_C0_root"; setAttr -k off -cb on ".sy"; setAttr -k off -cb on ".sz"; createNode nurbsCurve -n "mouth_C0_jawShape" -p "mouth_C0_jaw"; - rename -uid "1B74AEE9-4B5E-EDFB-698A-5C8C7B63862D"; + rename -uid "480C3BC1-423B-57B8-E626-D09D308B3C3C"; setAttr ".ihi" 0; setAttr -k off ".v"; setAttr ".ove" yes; @@ -6056,7 +6137,7 @@ createNode nurbsCurve -n "mouth_C0_jawShape" -p "mouth_C0_jaw"; -0.25 0 0 ; createNode nurbsCurve -n "mouth_C0_jaw25Shape" -p "mouth_C0_jaw"; - rename -uid "3EAF65CE-484B-9EFA-BC75-8081E0056350"; + rename -uid "BABB8434-4352-4DFB-A9B9-8EA4E244F973"; setAttr ".ihi" 0; setAttr -k off ".v"; setAttr ".ove" yes; @@ -6069,7 +6150,7 @@ createNode nurbsCurve -n "mouth_C0_jaw25Shape" -p "mouth_C0_jaw"; 0 -0.25 0 ; createNode nurbsCurve -n "mouth_C0_jaw26Shape" -p "mouth_C0_jaw"; - rename -uid "794EB6A5-49BF-076E-D894-D585B6781E4A"; + rename -uid "FC5E6847-45D7-54E0-9FCB-F49C2E34CC1B"; setAttr ".ihi" 0; setAttr -k off ".v"; setAttr ".ove" yes; @@ -6082,7 +6163,7 @@ createNode nurbsCurve -n "mouth_C0_jaw26Shape" -p "mouth_C0_jaw"; 0 0 -0.25 ; createNode nurbsCurve -n "mouth_C0_jaw27Shape" -p "mouth_C0_jaw"; - rename -uid "22EEBE9E-449E-A39A-39BC-2BB6094C0E7D"; + rename -uid "6A7ACD86-40F5-2CC8-A3D1-509289E3D88A"; setAttr ".ihi" 0; setAttr -k off ".v"; setAttr ".ove" yes; @@ -6100,7 +6181,7 @@ createNode nurbsCurve -n "mouth_C0_jaw27Shape" -p "mouth_C0_jaw"; -0.1875 0 0 ; createNode nurbsCurve -n "mouth_C0_jaw27_0crvShape" -p "mouth_C0_jaw"; - rename -uid "5170051C-4E93-34D3-7537-BE9131F9319B"; + rename -uid "4D31BAA3-4A4A-064D-C162-429C2A5BC7D6"; setAttr ".ihi" 0; setAttr -k off ".v"; setAttr ".ove" yes; @@ -6118,7 +6199,7 @@ createNode nurbsCurve -n "mouth_C0_jaw27_0crvShape" -p "mouth_C0_jaw"; -0.1875 0 0 ; createNode nurbsCurve -n "mouth_C0_jaw27_1crvShape" -p "mouth_C0_jaw"; - rename -uid "4BE4D711-4130-6B25-AC58-B4931743162C"; + rename -uid "C0743B6D-4ACF-80FE-D7C7-9890FE5A5801"; setAttr ".ihi" 0; setAttr -k off ".v"; setAttr ".ove" yes; @@ -6136,7 +6217,7 @@ createNode nurbsCurve -n "mouth_C0_jaw27_1crvShape" -p "mouth_C0_jaw"; 0 0 -0.1875 ; createNode transform -n "tongue_C0_root" -p "mouth_C0_jaw"; - rename -uid "78496380-47A2-D0C1-399B-F4A092DF6BF6"; + rename -uid "1DE02928-4B83-B40F-F8B2-B6BB09A32671"; addAttr -ci true -sn "isGearGuide" -ln "isGearGuide" -dv 1 -min 0 -max 1 -at "bool"; addAttr -ci true -sn "comp_type" -ln "comp_type" -dt "string"; addAttr -ci true -sn "comp_name" -ln "comp_name" -dt "string"; @@ -6175,7 +6256,7 @@ createNode transform -n "tongue_C0_root" -p "mouth_C0_jaw"; setAttr ".ikrefarray" -type "string" ""; setAttr ".parentJointIndex" -1; createNode nurbsCurve -n "tongue_C0_rootShape" -p "tongue_C0_root"; - rename -uid "EC05248E-4960-403D-55E3-E5821925B8F9"; + rename -uid "287F82A7-4A42-4A8E-2E3E-548D595087B9"; setAttr ".ihi" 0; setAttr -k off ".v"; setAttr ".ove" yes; @@ -6188,7 +6269,7 @@ createNode nurbsCurve -n "tongue_C0_rootShape" -p "tongue_C0_root"; -0.25 0 0 ; createNode nurbsCurve -n "tongue_C0_root25Shape" -p "tongue_C0_root"; - rename -uid "609B9035-46A3-53DA-5981-0BA99F1C029C"; + rename -uid "E694E79A-447A-D8FC-C67D-C9AEFE914A14"; setAttr ".ihi" 0; setAttr -k off ".v"; setAttr ".ove" yes; @@ -6201,7 +6282,7 @@ createNode nurbsCurve -n "tongue_C0_root25Shape" -p "tongue_C0_root"; 0 -0.25 0 ; createNode nurbsCurve -n "tongue_C0_root26Shape" -p "tongue_C0_root"; - rename -uid "943E944B-4B9D-4833-9B80-738515544F2D"; + rename -uid "05A6135A-4BDE-F89E-F596-DDBCEF4A336A"; setAttr ".ihi" 0; setAttr -k off ".v"; setAttr ".ove" yes; @@ -6214,7 +6295,7 @@ createNode nurbsCurve -n "tongue_C0_root26Shape" -p "tongue_C0_root"; 0 0 -0.25 ; createNode nurbsCurve -n "tongue_C0_root27Shape" -p "tongue_C0_root"; - rename -uid "B04BC754-435B-C54C-646D-2BB37BD52DD6"; + rename -uid "299C7571-4D42-F7C6-08F2-CF8174DC0EFB"; setAttr ".ihi" 0; setAttr -k off ".v"; setAttr ".ove" yes; @@ -6241,7 +6322,7 @@ createNode nurbsCurve -n "tongue_C0_root27Shape" -p "tongue_C0_root"; -0.125 -0.125 -0.125 ; createNode transform -n "tongue_C0_0_loc" -p "tongue_C0_root"; - rename -uid "53660CA2-4297-684A-77DA-06A8F5AA6633"; + rename -uid "1687E187-4F12-304D-92EA-E98F503EFE23"; addAttr -ci true -sn "isGearGuide" -ln "isGearGuide" -dv 1 -min 0 -max 1 -at "bool"; setAttr -k off -cb on ".v"; setAttr ".t" -type "double3" -7.0143079180640854e-016 -2.8421709430404007e-014 1.5794817263027459 ; @@ -6257,7 +6338,7 @@ createNode transform -n "tongue_C0_0_loc" -p "tongue_C0_root"; setAttr -k off -cb on ".sy"; setAttr -k off -cb on ".sz"; createNode nurbsCurve -n "tongue_C0_0_locShape" -p "tongue_C0_0_loc"; - rename -uid "00830CBC-41CE-EDF5-A272-77BE033754F9"; + rename -uid "D5D0EC35-46CC-F4C1-75FE-6FBCD1AD22D7"; setAttr ".ihi" 0; setAttr -k off ".v"; setAttr ".ove" yes; @@ -6270,7 +6351,7 @@ createNode nurbsCurve -n "tongue_C0_0_locShape" -p "tongue_C0_0_loc"; -0.25 0 0 ; createNode nurbsCurve -n "tongue_C0_0_loc25Shape" -p "tongue_C0_0_loc"; - rename -uid "D3505A8A-4F73-817A-095A-D79E317CA17D"; + rename -uid "D3882193-45E0-FDF3-F449-EBA1D77F3835"; setAttr ".ihi" 0; setAttr -k off ".v"; setAttr ".ove" yes; @@ -6283,7 +6364,7 @@ createNode nurbsCurve -n "tongue_C0_0_loc25Shape" -p "tongue_C0_0_loc"; 0 -0.25 0 ; createNode nurbsCurve -n "tongue_C0_0_loc26Shape" -p "tongue_C0_0_loc"; - rename -uid "5B07489F-40E0-6579-F151-6298A45E74C9"; + rename -uid "5D165E13-4A70-602A-BBD5-26B288164237"; setAttr ".ihi" 0; setAttr -k off ".v"; setAttr ".ove" yes; @@ -6296,7 +6377,7 @@ createNode nurbsCurve -n "tongue_C0_0_loc26Shape" -p "tongue_C0_0_loc"; 0 0 -0.25 ; createNode nurbsCurve -n "tongue_C0_0_loc27Shape" -p "tongue_C0_0_loc"; - rename -uid "855CC5DC-4031-6DCE-4B08-C486DAFC5071"; + rename -uid "F479B86B-43DE-894C-038D-7E83151C5D5F"; setAttr ".ihi" 0; setAttr -k off ".v"; setAttr ".ove" yes; @@ -6314,7 +6395,7 @@ createNode nurbsCurve -n "tongue_C0_0_loc27Shape" -p "tongue_C0_0_loc"; -0.1875 0 0 ; createNode nurbsCurve -n "tongue_C0_0_loc27_0crvShape" -p "tongue_C0_0_loc"; - rename -uid "CFA09F9D-461A-772C-3357-AEB655D52B64"; + rename -uid "86A2E779-40C7-2384-A39F-808A51CCFA83"; setAttr ".ihi" 0; setAttr -k off ".v"; setAttr ".ove" yes; @@ -6332,7 +6413,7 @@ createNode nurbsCurve -n "tongue_C0_0_loc27_0crvShape" -p "tongue_C0_0_loc"; -0.1875 0 0 ; createNode nurbsCurve -n "tongue_C0_0_loc27_1crvShape" -p "tongue_C0_0_loc"; - rename -uid "E607EE18-491D-4907-9548-9EA7EAB67C06"; + rename -uid "CB960ED7-4070-E10C-ED82-F6B0B348D488"; setAttr ".ihi" 0; setAttr -k off ".v"; setAttr ".ove" yes; @@ -6350,7 +6431,7 @@ createNode nurbsCurve -n "tongue_C0_0_loc27_1crvShape" -p "tongue_C0_0_loc"; 0 0 -0.1875 ; createNode transform -n "tongue_C0_1_loc" -p "tongue_C0_0_loc"; - rename -uid "923E5BE5-413B-7BA8-5958-47B4A7C7EF72"; + rename -uid "45793F78-495F-920C-D646-838EE0287B57"; addAttr -ci true -sn "isGearGuide" -ln "isGearGuide" -dv 1 -min 0 -max 1 -at "bool"; setAttr -k off -cb on ".v"; setAttr ".t" -type "double3" -7.2170680441439722e-016 -0.16556620751518381 1.5794817263027454 ; @@ -6366,7 +6447,7 @@ createNode transform -n "tongue_C0_1_loc" -p "tongue_C0_0_loc"; setAttr -k off -cb on ".sy"; setAttr -k off -cb on ".sz"; createNode nurbsCurve -n "tongue_C0_1_locShape" -p "tongue_C0_1_loc"; - rename -uid "0F3C8486-4998-BA01-C829-B897D0B92FC6"; + rename -uid "4C54A550-494F-BC8B-DFAC-0AA175353817"; setAttr ".ihi" 0; setAttr -k off ".v"; setAttr ".ove" yes; @@ -6379,7 +6460,7 @@ createNode nurbsCurve -n "tongue_C0_1_locShape" -p "tongue_C0_1_loc"; -0.25 0 0 ; createNode nurbsCurve -n "tongue_C0_1_loc25Shape" -p "tongue_C0_1_loc"; - rename -uid "242E5E1F-4968-9158-7B4D-2FB2DE9286E9"; + rename -uid "7D0D30C2-4BFF-4C19-2A34-1EA58BDF46A4"; setAttr ".ihi" 0; setAttr -k off ".v"; setAttr ".ove" yes; @@ -6392,7 +6473,7 @@ createNode nurbsCurve -n "tongue_C0_1_loc25Shape" -p "tongue_C0_1_loc"; 0 -0.25 0 ; createNode nurbsCurve -n "tongue_C0_1_loc26Shape" -p "tongue_C0_1_loc"; - rename -uid "5CB3EADB-4559-A096-6D62-1A818D9E0979"; + rename -uid "1A9F6E75-4AF2-E1A3-C8C8-F0AF35DCC9FA"; setAttr ".ihi" 0; setAttr -k off ".v"; setAttr ".ove" yes; @@ -6405,7 +6486,7 @@ createNode nurbsCurve -n "tongue_C0_1_loc26Shape" -p "tongue_C0_1_loc"; 0 0 -0.25 ; createNode nurbsCurve -n "tongue_C0_1_loc27Shape" -p "tongue_C0_1_loc"; - rename -uid "09C53A12-4604-195A-6126-CA9AE383FE6C"; + rename -uid "8BE26D67-43A8-44FA-33D2-ED96BEC115F4"; setAttr ".ihi" 0; setAttr -k off ".v"; setAttr ".ove" yes; @@ -6423,7 +6504,7 @@ createNode nurbsCurve -n "tongue_C0_1_loc27Shape" -p "tongue_C0_1_loc"; -0.1875 0 0 ; createNode nurbsCurve -n "tongue_C0_1_loc27_0crvShape" -p "tongue_C0_1_loc"; - rename -uid "46AA5D62-4110-DCEF-CFDB-CD9B1203194E"; + rename -uid "9B56376D-46FA-701F-51AB-BA8095D72AB0"; setAttr ".ihi" 0; setAttr -k off ".v"; setAttr ".ove" yes; @@ -6441,7 +6522,7 @@ createNode nurbsCurve -n "tongue_C0_1_loc27_0crvShape" -p "tongue_C0_1_loc"; -0.1875 0 0 ; createNode nurbsCurve -n "tongue_C0_1_loc27_1crvShape" -p "tongue_C0_1_loc"; - rename -uid "A951022B-4882-3B5D-9777-67B9F22D0B00"; + rename -uid "BE2E32C5-4269-E8C4-6A45-80B33E48B1FF"; setAttr ".ihi" 0; setAttr -k off ".v"; setAttr ".ove" yes; @@ -6459,7 +6540,7 @@ createNode nurbsCurve -n "tongue_C0_1_loc27_1crvShape" -p "tongue_C0_1_loc"; 0 0 -0.1875 ; createNode transform -n "tongue_C0_2_loc" -p "tongue_C0_1_loc"; - rename -uid "F4800C28-45B8-75BF-00CA-F8A43536D05D"; + rename -uid "63C7A16D-4499-5E6D-CABC-9B9E6910C7BC"; addAttr -ci true -sn "isGearGuide" -ln "isGearGuide" -dv 1 -min 0 -max 1 -at "bool"; setAttr -k off -cb on ".v"; setAttr ".t" -type "double3" -7.3944831544645201e-016 -0.31043663909051133 1.5794817263027401 ; @@ -6475,7 +6556,7 @@ createNode transform -n "tongue_C0_2_loc" -p "tongue_C0_1_loc"; setAttr -k off -cb on ".sy"; setAttr -k off -cb on ".sz"; createNode nurbsCurve -n "tongue_C0_2_locShape" -p "tongue_C0_2_loc"; - rename -uid "8514F0ED-43B9-55DD-3740-88BE50482E0A"; + rename -uid "EFF6ACD4-4504-4F97-116A-A29E0158386A"; setAttr ".ihi" 0; setAttr -k off ".v"; setAttr ".ove" yes; @@ -6488,7 +6569,7 @@ createNode nurbsCurve -n "tongue_C0_2_locShape" -p "tongue_C0_2_loc"; -0.25 0 0 ; createNode nurbsCurve -n "tongue_C0_2_loc25Shape" -p "tongue_C0_2_loc"; - rename -uid "D2804665-4609-39DC-1975-03962D729CD9"; + rename -uid "AB9C7363-4D90-1408-4EDC-DFBB78215CDB"; setAttr ".ihi" 0; setAttr -k off ".v"; setAttr ".ove" yes; @@ -6501,7 +6582,7 @@ createNode nurbsCurve -n "tongue_C0_2_loc25Shape" -p "tongue_C0_2_loc"; 0 -0.25 0 ; createNode nurbsCurve -n "tongue_C0_2_loc26Shape" -p "tongue_C0_2_loc"; - rename -uid "0184400A-449E-9331-4B9E-20AEE3D3AD18"; + rename -uid "9BF78ECD-485C-D597-7411-FD9A21B79C06"; setAttr ".ihi" 0; setAttr -k off ".v"; setAttr ".ove" yes; @@ -6514,7 +6595,7 @@ createNode nurbsCurve -n "tongue_C0_2_loc26Shape" -p "tongue_C0_2_loc"; 0 0 -0.25 ; createNode nurbsCurve -n "tongue_C0_2_loc27Shape" -p "tongue_C0_2_loc"; - rename -uid "D267C40A-4496-0902-30A0-5D936FF9175D"; + rename -uid "F021CD0F-4CB8-1CBB-8465-1791A31135E3"; setAttr ".ihi" 0; setAttr -k off ".v"; setAttr ".ove" yes; @@ -6532,7 +6613,7 @@ createNode nurbsCurve -n "tongue_C0_2_loc27Shape" -p "tongue_C0_2_loc"; -0.1875 0 0 ; createNode nurbsCurve -n "tongue_C0_2_loc27_0crvShape" -p "tongue_C0_2_loc"; - rename -uid "6FD5752E-4BD0-8846-6F7D-9393D721279B"; + rename -uid "9B256196-416F-78BC-C16D-DDB2CB230493"; setAttr ".ihi" 0; setAttr -k off ".v"; setAttr ".ove" yes; @@ -6550,7 +6631,7 @@ createNode nurbsCurve -n "tongue_C0_2_loc27_0crvShape" -p "tongue_C0_2_loc"; -0.1875 0 0 ; createNode nurbsCurve -n "tongue_C0_2_loc27_1crvShape" -p "tongue_C0_2_loc"; - rename -uid "B6095E93-4AE8-09E2-B2CA-72907076282E"; + rename -uid "5BEA8907-4137-0D19-5971-58BC16444D51"; setAttr ".ihi" 0; setAttr -k off ".v"; setAttr ".ove" yes; @@ -6568,7 +6649,7 @@ createNode nurbsCurve -n "tongue_C0_2_loc27_1crvShape" -p "tongue_C0_2_loc"; 0 0 -0.1875 ; createNode transform -n "tongue_C0_3_loc" -p "tongue_C0_2_loc"; - rename -uid "00F7DA78-4313-FD20-B6CE-068B1B325DBD"; + rename -uid "9FFE10B6-4135-9DF5-8076-66957DCE3D52"; addAttr -ci true -sn "isGearGuide" -ln "isGearGuide" -dv 1 -min 0 -max 1 -at "bool"; setAttr -k off -cb on ".v"; setAttr ".t" -type "double3" -7.0903429653441218e-016 -0.062087327818261429 1.5794817263027481 ; @@ -6584,7 +6665,7 @@ createNode transform -n "tongue_C0_3_loc" -p "tongue_C0_2_loc"; setAttr -k off -cb on ".sy"; setAttr -k off -cb on ".sz"; createNode nurbsCurve -n "tongue_C0_3_locShape" -p "tongue_C0_3_loc"; - rename -uid "D25AB92D-47A8-C71A-97CE-75B65E25A9F3"; + rename -uid "8F0DBE88-4DCD-3CFF-1FF3-088BD68A5098"; setAttr ".ihi" 0; setAttr -k off ".v"; setAttr ".ove" yes; @@ -6597,7 +6678,7 @@ createNode nurbsCurve -n "tongue_C0_3_locShape" -p "tongue_C0_3_loc"; -0.25 0 0 ; createNode nurbsCurve -n "tongue_C0_3_loc25Shape" -p "tongue_C0_3_loc"; - rename -uid "729DDE6B-42FD-5A6A-E9F2-25944E7B1D20"; + rename -uid "DA882A9C-43F6-E863-3D37-C2AEFCBF3069"; setAttr ".ihi" 0; setAttr -k off ".v"; setAttr ".ove" yes; @@ -6610,7 +6691,7 @@ createNode nurbsCurve -n "tongue_C0_3_loc25Shape" -p "tongue_C0_3_loc"; 0 -0.25 0 ; createNode nurbsCurve -n "tongue_C0_3_loc26Shape" -p "tongue_C0_3_loc"; - rename -uid "29A0AD27-4984-BBF7-E0E7-428DB4438380"; + rename -uid "52049516-40AF-3652-0B1D-78B270BE8F27"; setAttr ".ihi" 0; setAttr -k off ".v"; setAttr ".ove" yes; @@ -6623,7 +6704,7 @@ createNode nurbsCurve -n "tongue_C0_3_loc26Shape" -p "tongue_C0_3_loc"; 0 0 -0.25 ; createNode nurbsCurve -n "tongue_C0_3_loc27Shape" -p "tongue_C0_3_loc"; - rename -uid "F90F389F-41B1-C3CC-7A12-02AC2767CC37"; + rename -uid "F647097E-4912-78AA-0FB7-3EBA205D65A8"; setAttr ".ihi" 0; setAttr -k off ".v"; setAttr ".ove" yes; @@ -6641,7 +6722,7 @@ createNode nurbsCurve -n "tongue_C0_3_loc27Shape" -p "tongue_C0_3_loc"; -0.1875 0 0 ; createNode nurbsCurve -n "tongue_C0_3_loc27_0crvShape" -p "tongue_C0_3_loc"; - rename -uid "B9B7D226-40EB-B390-6E05-1A82740B050F"; + rename -uid "0BE7CFAF-4D97-C457-4B7A-29A28CA6AC4D"; setAttr ".ihi" 0; setAttr -k off ".v"; setAttr ".ove" yes; @@ -6659,7 +6740,7 @@ createNode nurbsCurve -n "tongue_C0_3_loc27_0crvShape" -p "tongue_C0_3_loc"; -0.1875 0 0 ; createNode nurbsCurve -n "tongue_C0_3_loc27_1crvShape" -p "tongue_C0_3_loc"; - rename -uid "62B43B48-47DB-D50E-885E-C9A539CD83B0"; + rename -uid "1B4B19DD-4BFF-A914-AB6C-05A30E698E88"; setAttr ".ihi" 0; setAttr -k off ".v"; setAttr ".ove" yes; @@ -6677,7 +6758,7 @@ createNode nurbsCurve -n "tongue_C0_3_loc27_1crvShape" -p "tongue_C0_3_loc"; 0 0 -0.1875 ; createNode transform -n "tongue_C0_blade" -p "tongue_C0_root"; - rename -uid "FA83BC25-4DD1-9622-8D06-FC8B471521B2"; + rename -uid "30EA069F-40A2-C6A8-3149-DEA628320B67"; addAttr -ci true -k true -sn "bladeRollOffset" -ln "bladeRollOffset" -at "float"; setAttr -l on -k off -cb on ".v"; setAttr -k off -cb on ".tx"; @@ -6693,7 +6774,7 @@ createNode transform -n "tongue_C0_blade" -p "tongue_C0_root"; setAttr -l on -k off -cb on ".sz"; setAttr -k on ".bladeRollOffset"; createNode nurbsCurve -n "tongue_C0_bladeShape" -p "tongue_C0_blade"; - rename -uid "F8D9D4A3-45E5-5465-3B4A-22801F2BD108"; + rename -uid "6E5F9DBF-4433-3D4A-AA2B-259E66CEBF2B"; setAttr ".ihi" 0; setAttr -k off ".v"; setAttr ".ove" yes; @@ -6708,7 +6789,7 @@ createNode nurbsCurve -n "tongue_C0_bladeShape" -p "tongue_C0_blade"; 0 0 0 ; createNode aimConstraint -n "tongue_C0_blade_aimConstraint9" -p "tongue_C0_blade"; - rename -uid "E9904B03-4830-55F2-3435-529B64CCDE8F"; + rename -uid "8568FD21-4E7C-AFE2-8DD0-C7BAFCA69202"; addAttr -dcb 0 -ci true -sn "w0" -ln "tongue_C0_0_locW0" -dv 1 -at "double"; setAttr -k on ".nds"; setAttr -k off ".v"; @@ -6726,7 +6807,7 @@ createNode aimConstraint -n "tongue_C0_blade_aimConstraint9" -p "tongue_C0_blade setAttr ".rsrr" -type "double3" -3.0929968415421635e-012 -89.999999999996902 0 ; setAttr -k on ".w0"; createNode pointConstraint -n "tongue_C0_blade_pointConstraint9" -p "tongue_C0_blade"; - rename -uid "2ABAEB1A-45F4-048B-A717-0494AEAD9025"; + rename -uid "25E891A1-44D5-3CD6-B278-0781BB75872B"; addAttr -dcb 0 -ci true -k true -sn "w0" -ln "tongue_C0_rootW0" -dv 1 -min 0 -at "double"; setAttr -k on ".nds"; setAttr -k off ".v"; @@ -6743,18 +6824,18 @@ createNode pointConstraint -n "tongue_C0_blade_pointConstraint9" -p "tongue_C0_b setAttr ".rst" -type "double3" -6.3108872417680944e-030 0 -4.4408920985006262e-016 ; setAttr -k on ".w0"; createNode transform -n "tongue_C0_crv" -p "tongue_C0_root"; - rename -uid "59255783-4A68-59EE-8AB3-9AB2E4A4C2AE"; + rename -uid "27F237C2-428B-68CD-EBEE-38AFC81531A6"; setAttr ".ovdt" 1; setAttr ".ove" yes; setAttr ".t" -type "double3" -2.3232792471046793e-014 -175.06339877760735 -3.1060024283289889 ; setAttr ".s" -type "double3" 10.648590201596399 10.648590201596415 10.648590201596409 ; createNode nurbsCurve -n "tongue_C0_crvShape" -p "tongue_C0_crv"; - rename -uid "B6815D27-4268-4311-FA61-3B9BD2EB3646"; + rename -uid "6D50E28A-43B5-1B01-57DC-5F93E628FE86"; setAttr -k off ".v"; setAttr -s 4 ".iog[0].og"; setAttr ".tw" yes; createNode nurbsCurve -n "tongue_C0_crvShapeOrig" -p "tongue_C0_crv"; - rename -uid "529F11CC-41C7-C863-B3A7-C0A11D7E80CC"; + rename -uid "3B513234-4A9C-C36F-F85C-7EAE5DF6F93B"; setAttr -k off ".v"; setAttr ".io" yes; setAttr ".cc" -type "nurbsCurve" @@ -6768,18 +6849,18 @@ createNode nurbsCurve -n "tongue_C0_crvShapeOrig" -p "tongue_C0_crv"; 0 0 0 ; createNode transform -n "mouth_C0_crv" -p "mouth_C0_root"; - rename -uid "B60D650B-43DA-1D6C-A637-CF829E90D7DD"; + rename -uid "3A55B852-4016-EC23-4961-D58A9DC7D62C"; setAttr ".ovdt" 1; setAttr ".ove" yes; setAttr ".t" -type "double3" -4.2522264729757852e-015 -30.612390245122924 -0.093664066372369681 ; setAttr ".s" -type "double3" 1.828605076300752 1.8286050763007591 1.8286050763007546 ; -createNode nurbsCurve -n "mouth_C0_crvShape" -p "|guide|local_C0_root|body_C0_root|spine_C0_root|spine_C0_eff|neck_C0_root|neck_C0_neck|neck_C0_head|mouth_C0_root|mouth_C0_crv"; - rename -uid "FC674BC7-49FD-3678-B3EF-73B711E1A6F0"; +createNode nurbsCurve -n "mouth_C0_crvShape" -p "|guide|global_C0_root|local_C0_root|body_C0_root|spine_C0_root|spine_C0_eff|neck_C0_root|neck_C0_neck|neck_C0_head|mouth_C0_root|mouth_C0_crv"; + rename -uid "D2167D7B-4A25-0EC8-7927-958F26C41B48"; setAttr -k off ".v"; setAttr -s 4 ".iog[0].og"; setAttr ".tw" yes; -createNode nurbsCurve -n "mouth_C0_crvShapeOrig" -p "|guide|local_C0_root|body_C0_root|spine_C0_root|spine_C0_eff|neck_C0_root|neck_C0_neck|neck_C0_head|mouth_C0_root|mouth_C0_crv"; - rename -uid "228FC052-4978-422B-3C65-719C152B3655"; +createNode nurbsCurve -n "mouth_C0_crvShapeOrig" -p "|guide|global_C0_root|local_C0_root|body_C0_root|spine_C0_root|spine_C0_eff|neck_C0_root|neck_C0_neck|neck_C0_head|mouth_C0_root|mouth_C0_crv"; + rename -uid "54739CA3-4B83-3943-3190-1FB6A6772F81"; setAttr -k off ".v"; setAttr ".io" yes; setAttr ".cc" -type "nurbsCurve" @@ -6790,18 +6871,18 @@ createNode nurbsCurve -n "mouth_C0_crvShapeOrig" -p "|guide|local_C0_root|body_C 0 0 0 ; createNode transform -n "mouth_C0_crv9" -p "mouth_C0_root"; - rename -uid "387C64C5-4C7E-B90E-B72B-1384A492D8AD"; + rename -uid "465F9BBA-46BC-BBCA-7559-438DFA251F95"; setAttr ".ovdt" 1; setAttr ".ove" yes; setAttr ".t" -type "double3" -4.2522264729757852e-015 -30.612390245122924 -0.093664066372369681 ; setAttr ".s" -type "double3" 1.828605076300752 1.8286050763007591 1.8286050763007546 ; createNode nurbsCurve -n "mouth_C0_crv9Shape" -p "mouth_C0_crv9"; - rename -uid "92382422-4561-F367-3511-EA8E3CDF8F20"; + rename -uid "380BF091-4C5D-1EF2-D2DB-AA8363157231"; setAttr -k off ".v"; setAttr -s 4 ".iog[0].og"; setAttr ".tw" yes; createNode nurbsCurve -n "mouth_C0_crv9ShapeOrig" -p "mouth_C0_crv9"; - rename -uid "944AE3CA-4E65-094B-8A7D-E980B0FC3BF7"; + rename -uid "22D0DE9F-4CD0-58F1-8DE8-ABBE42C079E9"; setAttr -k off ".v"; setAttr ".io" yes; setAttr ".cc" -type "nurbsCurve" @@ -6812,7 +6893,7 @@ createNode nurbsCurve -n "mouth_C0_crv9ShapeOrig" -p "mouth_C0_crv9"; 0 0 0 ; createNode transform -n "eyeslook_C0_root" -p "neck_C0_head"; - rename -uid "30AEA6E8-46E6-3A66-347F-309A060194EA"; + rename -uid "D00A6710-4443-4B35-DABA-808CF8F478D6"; addAttr -ci true -sn "isGearGuide" -ln "isGearGuide" -dv 1 -min 0 -max 1 -at "bool"; addAttr -ci true -sn "comp_type" -ln "comp_type" -dt "string"; addAttr -ci true -sn "comp_name" -ln "comp_name" -dt "string"; @@ -6876,7 +6957,7 @@ createNode transform -n "eyeslook_C0_root" -p "neck_C0_head"; setAttr ".ctlSize" 1; setAttr ".parentJointIndex" -1; createNode nurbsCurve -n "eyeslook_C0_rootShape" -p "eyeslook_C0_root"; - rename -uid "CDDEB93A-4BB8-5190-2AC5-B89C97587FC3"; + rename -uid "139D11EC-4727-AE0B-2428-5F81C059F92B"; setAttr ".ihi" 0; setAttr -k off ".v"; setAttr ".ove" yes; @@ -6889,7 +6970,7 @@ createNode nurbsCurve -n "eyeslook_C0_rootShape" -p "eyeslook_C0_root"; -0.25 0 0 ; createNode nurbsCurve -n "eyeslook_C0_root25Shape" -p "eyeslook_C0_root"; - rename -uid "04D74068-432A-1E73-87DA-5292FBF58529"; + rename -uid "76A07E18-494D-8D60-6B0C-65A0A024845C"; setAttr ".ihi" 0; setAttr -k off ".v"; setAttr ".ove" yes; @@ -6902,7 +6983,7 @@ createNode nurbsCurve -n "eyeslook_C0_root25Shape" -p "eyeslook_C0_root"; 0 -0.25 0 ; createNode nurbsCurve -n "eyeslook_C0_root26Shape" -p "eyeslook_C0_root"; - rename -uid "C832F54A-4A4C-9A57-A030-87BE28BE1BFB"; + rename -uid "B584E5DD-4C55-9D08-BB10-25A1E1AD66C1"; setAttr ".ihi" 0; setAttr -k off ".v"; setAttr ".ove" yes; @@ -6915,7 +6996,7 @@ createNode nurbsCurve -n "eyeslook_C0_root26Shape" -p "eyeslook_C0_root"; 0 0 -0.25 ; createNode nurbsCurve -n "eyeslook_C0_root27Shape" -p "eyeslook_C0_root"; - rename -uid "AE180F52-49C6-8806-AE71-0C921CA3E966"; + rename -uid "44768BCF-4D81-F2B3-B2FA-6097493097E5"; setAttr ".ihi" 0; setAttr -k off ".v"; setAttr ".ove" yes; @@ -6942,7 +7023,7 @@ createNode nurbsCurve -n "eyeslook_C0_root27Shape" -p "eyeslook_C0_root"; -0.125 -0.125 -0.125 ; createNode transform -n "eyeslook_C0_sizeRef" -p "eyeslook_C0_root"; - rename -uid "0E06809C-4DE6-255B-E777-9A8C077DCC1D"; + rename -uid "25636A12-4683-2C02-55B0-2893780DED50"; addAttr -ci true -sn "isGearGuide" -ln "isGearGuide" -dv 1 -min 0 -max 1 -at "bool"; setAttr -k off -cb on ".v"; setAttr ".t" -type "double3" -4.6607527914310037e-016 0 1.049508226737736 ; @@ -6958,7 +7039,7 @@ createNode transform -n "eyeslook_C0_sizeRef" -p "eyeslook_C0_root"; setAttr -k off -cb on ".sy"; setAttr -k off -cb on ".sz"; createNode transform -n "eye_R0_root" -p "neck_C0_head"; - rename -uid "7499D1C7-472F-2481-3761-35BB26745471"; + rename -uid "EBE956C6-49E9-0C94-BE9A-00BDCED9945F"; addAttr -ci true -sn "isGearGuide" -ln "isGearGuide" -dv 1 -min 0 -max 1 -at "bool"; addAttr -ci true -sn "comp_type" -ln "comp_type" -dt "string"; addAttr -ci true -sn "comp_name" -ln "comp_name" -dt "string"; @@ -6996,7 +7077,7 @@ createNode transform -n "eye_R0_root" -p "neck_C0_head"; setAttr ".ikrefarray" -type "string" "eyeslook_C0_root"; setAttr ".parentJointIndex" -1; createNode nurbsCurve -n "eye_R0_rootShape" -p "eye_R0_root"; - rename -uid "4763A777-4E38-333C-00FE-218B4B560E8C"; + rename -uid "69EB1A5E-4A30-966E-704F-7A8D8574F43F"; setAttr ".ihi" 0; setAttr -k off ".v"; setAttr ".ove" yes; @@ -7009,7 +7090,7 @@ createNode nurbsCurve -n "eye_R0_rootShape" -p "eye_R0_root"; -0.25 0 0 ; createNode nurbsCurve -n "eye_R0_root25Shape" -p "eye_R0_root"; - rename -uid "EF7B849B-4BAC-36BA-D360-A08C1756A2B2"; + rename -uid "3F6A4367-47C4-0AE6-608F-9C9B6251F775"; setAttr ".ihi" 0; setAttr -k off ".v"; setAttr ".ove" yes; @@ -7022,7 +7103,7 @@ createNode nurbsCurve -n "eye_R0_root25Shape" -p "eye_R0_root"; 0 -0.25 0 ; createNode nurbsCurve -n "eye_R0_root26Shape" -p "eye_R0_root"; - rename -uid "673B01FD-466A-260E-423A-078694691261"; + rename -uid "3039CA06-4A61-8ECE-688C-898F83B3479C"; setAttr ".ihi" 0; setAttr -k off ".v"; setAttr ".ove" yes; @@ -7035,7 +7116,7 @@ createNode nurbsCurve -n "eye_R0_root26Shape" -p "eye_R0_root"; 0 0 -0.25 ; createNode nurbsCurve -n "eye_R0_root27Shape" -p "eye_R0_root"; - rename -uid "BBF3B01E-4A28-4716-EE2D-4BAE3BA1DBD1"; + rename -uid "FF943FDA-4870-5BE1-B4F0-D396FBE1F510"; setAttr ".ihi" 0; setAttr -k off ".v"; setAttr ".ove" yes; @@ -7062,7 +7143,7 @@ createNode nurbsCurve -n "eye_R0_root27Shape" -p "eye_R0_root"; -0.125 -0.125 -0.125 ; createNode transform -n "eye_R0_look" -p "eye_R0_root"; - rename -uid "40E96273-4115-42EF-68F4-1182AB036B95"; + rename -uid "1DE16E12-4B1B-F386-EB4B-FC9C63640368"; addAttr -ci true -sn "isGearGuide" -ln "isGearGuide" -dv 1 -min 0 -max 1 -at "bool"; setAttr -k off -cb on ".v"; setAttr ".t" -type "double3" -4.4408920985006262e-016 -1.0658141036401503e-014 3.7697842257179222 ; @@ -7078,7 +7159,7 @@ createNode transform -n "eye_R0_look" -p "eye_R0_root"; setAttr -k off -cb on ".sy"; setAttr -k off -cb on ".sz"; createNode nurbsCurve -n "eye_R0_lookShape" -p "eye_R0_look"; - rename -uid "D2535EDC-4236-3DBD-0821-2193A802CAD5"; + rename -uid "A85DA388-44A0-50C8-44F1-B087E9646E06"; setAttr ".ihi" 0; setAttr -k off ".v"; setAttr ".ove" yes; @@ -7091,7 +7172,7 @@ createNode nurbsCurve -n "eye_R0_lookShape" -p "eye_R0_look"; -0.25 0 0 ; createNode nurbsCurve -n "eye_R0_look25Shape" -p "eye_R0_look"; - rename -uid "BA0012AC-4194-5252-6A9B-95B8867AFA5A"; + rename -uid "68A4ACB1-4053-A9CD-5B2C-06954C3895C4"; setAttr ".ihi" 0; setAttr -k off ".v"; setAttr ".ove" yes; @@ -7104,7 +7185,7 @@ createNode nurbsCurve -n "eye_R0_look25Shape" -p "eye_R0_look"; 0 -0.25 0 ; createNode nurbsCurve -n "eye_R0_look26Shape" -p "eye_R0_look"; - rename -uid "8EC6428A-4FF4-1A8D-04A2-B0B415E33152"; + rename -uid "556D8521-4238-1DF1-8DFF-93835308DA05"; setAttr ".ihi" 0; setAttr -k off ".v"; setAttr ".ove" yes; @@ -7117,7 +7198,7 @@ createNode nurbsCurve -n "eye_R0_look26Shape" -p "eye_R0_look"; 0 0 -0.25 ; createNode nurbsCurve -n "eye_R0_look27Shape" -p "eye_R0_look"; - rename -uid "A9C55788-46B6-A7D5-408E-1C827905F7AE"; + rename -uid "E54288A4-4AFB-88D5-E8FA-75889DE53BD7"; setAttr ".ihi" 0; setAttr -k off ".v"; setAttr ".ove" yes; @@ -7135,7 +7216,7 @@ createNode nurbsCurve -n "eye_R0_look27Shape" -p "eye_R0_look"; -0.1875 0 0 ; createNode nurbsCurve -n "eye_R0_look27_0crvShape" -p "eye_R0_look"; - rename -uid "29864C94-47BE-133D-7197-578BF9DE6FE7"; + rename -uid "1998F2B7-4D94-A412-3231-0FAC6BD047D6"; setAttr ".ihi" 0; setAttr -k off ".v"; setAttr ".ove" yes; @@ -7153,7 +7234,7 @@ createNode nurbsCurve -n "eye_R0_look27_0crvShape" -p "eye_R0_look"; -0.1875 0 0 ; createNode nurbsCurve -n "eye_R0_look27_1crvShape" -p "eye_R0_look"; - rename -uid "E3AB140B-4092-14BB-AEB1-1F8576A82F40"; + rename -uid "70EA3CA9-4FD1-4AA3-EE5D-5BA5459EF8FE"; setAttr ".ihi" 0; setAttr -k off ".v"; setAttr ".ove" yes; @@ -7171,19 +7252,19 @@ createNode nurbsCurve -n "eye_R0_look27_1crvShape" -p "eye_R0_look"; 0 0 -0.1875 ; createNode transform -n "eye_R0_crv" -p "eye_R0_root"; - rename -uid "FF97753C-467B-F8A0-9219-349AD9D5D443"; + rename -uid "559F2BF4-49B5-3595-5A4D-319231921232"; setAttr ".ovdt" 1; setAttr ".ove" yes; setAttr ".t" -type "double3" -0.51425464314723923 -30.070644536323631 -1.585973374993676 ; setAttr ".r" -type "double3" 0 179.99999999999997 0 ; setAttr ".s" -type "double3" 1.7538799546502182 1.7538799546502193 -1.7538799546502115 ; createNode nurbsCurve -n "eye_R0_crvShape" -p "eye_R0_crv"; - rename -uid "CED9EF38-44B5-EBA5-0FF6-D3BCF1059013"; + rename -uid "61C17E23-40ED-ADF5-7A14-A49D82176EAE"; setAttr -k off ".v"; setAttr -s 4 ".iog[0].og"; setAttr ".tw" yes; createNode nurbsCurve -n "eye_R0_crvShapeOrig" -p "eye_R0_crv"; - rename -uid "9E883FF7-4DE6-EF05-2F89-FEA06109FD46"; + rename -uid "80001035-4060-8B22-CC4C-1D865063EEC4"; setAttr -k off ".v"; setAttr ".io" yes; setAttr ".cc" -type "nurbsCurve" @@ -7194,7 +7275,7 @@ createNode nurbsCurve -n "eye_R0_crvShapeOrig" -p "eye_R0_crv"; 0 0 0 ; createNode transform -n "eye_L0_root" -p "neck_C0_head"; - rename -uid "755B6301-49E8-3BBB-B127-EAB159004042"; + rename -uid "DE4D24E4-4A9A-F116-550D-F680A87EBD36"; addAttr -ci true -sn "isGearGuide" -ln "isGearGuide" -dv 1 -min 0 -max 1 -at "bool"; addAttr -ci true -sn "comp_type" -ln "comp_type" -dt "string"; addAttr -ci true -sn "comp_name" -ln "comp_name" -dt "string"; @@ -7232,7 +7313,7 @@ createNode transform -n "eye_L0_root" -p "neck_C0_head"; setAttr ".ikrefarray" -type "string" "eyeslook_C0_root"; setAttr ".parentJointIndex" -1; createNode nurbsCurve -n "eye_L0_rootShape" -p "eye_L0_root"; - rename -uid "58882392-4091-DCFD-FFB9-4AB54FDBFB5A"; + rename -uid "C7EFC431-4297-4A76-0F91-BC8770C6D264"; setAttr ".ihi" 0; setAttr -k off ".v"; setAttr ".ove" yes; @@ -7245,7 +7326,7 @@ createNode nurbsCurve -n "eye_L0_rootShape" -p "eye_L0_root"; -0.25 0 0 ; createNode nurbsCurve -n "eye_L0_root25Shape" -p "eye_L0_root"; - rename -uid "81B3E851-4CAA-D209-821C-10AA568466E7"; + rename -uid "7B73CCAE-4D52-2571-566B-97B8D85C19BC"; setAttr ".ihi" 0; setAttr -k off ".v"; setAttr ".ove" yes; @@ -7258,7 +7339,7 @@ createNode nurbsCurve -n "eye_L0_root25Shape" -p "eye_L0_root"; 0 -0.25 0 ; createNode nurbsCurve -n "eye_L0_root26Shape" -p "eye_L0_root"; - rename -uid "35DBF5B2-445E-14E2-F0EE-20BF469AFFB1"; + rename -uid "61D72841-432B-4A85-5B9A-48A8B651C83C"; setAttr ".ihi" 0; setAttr -k off ".v"; setAttr ".ove" yes; @@ -7271,7 +7352,7 @@ createNode nurbsCurve -n "eye_L0_root26Shape" -p "eye_L0_root"; 0 0 -0.25 ; createNode nurbsCurve -n "eye_L0_root27Shape" -p "eye_L0_root"; - rename -uid "C74D80C4-4767-18E0-7E9B-8CBAA5EC2DB2"; + rename -uid "405378DE-43CF-C473-1341-5D82EB9F6486"; setAttr ".ihi" 0; setAttr -k off ".v"; setAttr ".ove" yes; @@ -7298,7 +7379,7 @@ createNode nurbsCurve -n "eye_L0_root27Shape" -p "eye_L0_root"; -0.125 -0.125 -0.125 ; createNode transform -n "eye_L0_look" -p "eye_L0_root"; - rename -uid "6085B714-4C45-1064-696B-0EB09A46A831"; + rename -uid "F3A99926-4C63-E520-1E3B-B19A2EFB37BD"; addAttr -ci true -sn "isGearGuide" -ln "isGearGuide" -dv 1 -min 0 -max 1 -at "bool"; setAttr -k off -cb on ".v"; setAttr ".t" -type "double3" 1.1102230246251565e-016 -1.7763568394002505e-014 3.7697842257179146 ; @@ -7314,7 +7395,7 @@ createNode transform -n "eye_L0_look" -p "eye_L0_root"; setAttr -k off -cb on ".sy"; setAttr -k off -cb on ".sz"; createNode nurbsCurve -n "eye_L0_lookShape" -p "eye_L0_look"; - rename -uid "BBC2ED41-4C09-F2D6-35DF-2583322EA5BB"; + rename -uid "26F5A2B9-4A4A-A9A6-942C-9E86D058313B"; setAttr ".ihi" 0; setAttr -k off ".v"; setAttr ".ove" yes; @@ -7327,7 +7408,7 @@ createNode nurbsCurve -n "eye_L0_lookShape" -p "eye_L0_look"; -0.25 0 0 ; createNode nurbsCurve -n "eye_L0_look25Shape" -p "eye_L0_look"; - rename -uid "61089163-4989-708D-5D1A-E0A3DE1C1014"; + rename -uid "B4CC0B5A-42B3-F266-DF9D-F1B52B325C32"; setAttr ".ihi" 0; setAttr -k off ".v"; setAttr ".ove" yes; @@ -7340,7 +7421,7 @@ createNode nurbsCurve -n "eye_L0_look25Shape" -p "eye_L0_look"; 0 -0.25 0 ; createNode nurbsCurve -n "eye_L0_look26Shape" -p "eye_L0_look"; - rename -uid "7E62F14E-4AD7-1BB9-9ED9-7DB69D3763EE"; + rename -uid "88F2F1AA-4FE1-B948-A70C-83B9FCC67013"; setAttr ".ihi" 0; setAttr -k off ".v"; setAttr ".ove" yes; @@ -7353,7 +7434,7 @@ createNode nurbsCurve -n "eye_L0_look26Shape" -p "eye_L0_look"; 0 0 -0.25 ; createNode nurbsCurve -n "eye_L0_look27Shape" -p "eye_L0_look"; - rename -uid "63DFA5E4-4900-B3E2-208F-6584285F91EF"; + rename -uid "23744931-4B38-F395-5267-A68521D06E5A"; setAttr ".ihi" 0; setAttr -k off ".v"; setAttr ".ove" yes; @@ -7371,7 +7452,7 @@ createNode nurbsCurve -n "eye_L0_look27Shape" -p "eye_L0_look"; -0.1875 0 0 ; createNode nurbsCurve -n "eye_L0_look27_0crvShape" -p "eye_L0_look"; - rename -uid "231B75F5-44BD-0FC0-10FF-7EA338CA70B3"; + rename -uid "0D1EC593-4AFE-21C2-AA88-A9A49B7C0975"; setAttr ".ihi" 0; setAttr -k off ".v"; setAttr ".ove" yes; @@ -7389,7 +7470,7 @@ createNode nurbsCurve -n "eye_L0_look27_0crvShape" -p "eye_L0_look"; -0.1875 0 0 ; createNode nurbsCurve -n "eye_L0_look27_1crvShape" -p "eye_L0_look"; - rename -uid "4BCB31E4-4773-701D-FAF1-65B34CEC7F5E"; + rename -uid "7AA214E3-40BC-12F3-E9A6-B7BA2CF46AB5"; setAttr ".ihi" 0; setAttr -k off ".v"; setAttr ".ove" yes; @@ -7407,18 +7488,18 @@ createNode nurbsCurve -n "eye_L0_look27_1crvShape" -p "eye_L0_look"; 0 0 -0.1875 ; createNode transform -n "eye_L0_crv" -p "eye_L0_root"; - rename -uid "CE3B8FAB-4FD5-F116-DA96-6D8CF223EBAB"; + rename -uid "34CD863D-40B9-99CF-4C49-9AB042451179"; setAttr ".ovdt" 1; setAttr ".ove" yes; setAttr ".t" -type "double3" -0.51425464314724534 -30.070644536323631 -1.5859733749936722 ; setAttr ".s" -type "double3" 1.7538799546502155 1.7538799546502193 1.7538799546502086 ; createNode nurbsCurve -n "eye_L0_crvShape" -p "eye_L0_crv"; - rename -uid "AB54E08C-4CD6-6E0B-4FB2-CB9C304BDC39"; + rename -uid "2F7439F7-4E51-190C-DD95-B39D88DBB8C1"; setAttr -k off ".v"; setAttr -s 4 ".iog[0].og"; setAttr ".tw" yes; createNode nurbsCurve -n "eye_L0_crvShapeOrig" -p "eye_L0_crv"; - rename -uid "956162A3-450C-CE3A-866C-CF9DE733BAA8"; + rename -uid "8D7F6464-487C-1731-DE44-8899BDF49C4A"; setAttr -k off ".v"; setAttr ".io" yes; setAttr ".cc" -type "nurbsCurve" @@ -7429,7 +7510,7 @@ createNode nurbsCurve -n "eye_L0_crvShapeOrig" -p "eye_L0_crv"; 0 0 0 ; createNode transform -n "neck_C0_tan1" -p "neck_C0_neck"; - rename -uid "56683CF9-4647-00D3-CA57-55A59B3348E0"; + rename -uid "0DC6F0A8-4001-3187-66BB-F6A2D19FC1E3"; addAttr -ci true -sn "isGearGuide" -ln "isGearGuide" -dv 1 -min 0 -max 1 -at "bool"; setAttr -k off -cb on ".v"; setAttr ".t" -type "double3" 0.09787009621156309 -0.34322132772767233 -2.0300963192813322e-017 ; @@ -7445,7 +7526,7 @@ createNode transform -n "neck_C0_tan1" -p "neck_C0_neck"; setAttr -k off -cb on ".sy"; setAttr -k off -cb on ".sz"; createNode nurbsCurve -n "neck_C0_tanShape1" -p "neck_C0_tan1"; - rename -uid "4430335D-4DF2-3752-E033-13AB8FF0DF6B"; + rename -uid "97F823CA-40AD-AC8F-9586-AA8189F0B571"; setAttr ".ihi" 0; setAttr -k off ".v"; setAttr ".ove" yes; @@ -7457,8 +7538,8 @@ createNode nurbsCurve -n "neck_C0_tanShape1" -p "neck_C0_tan1"; 0.25 0 0 -0.25 0 0 ; -createNode nurbsCurve -n "neck_C0_tanShape18" -p "neck_C0_tan1"; - rename -uid "39A6617A-4582-E630-98FA-FD9CEC98593B"; +createNode nurbsCurve -n "neck_C0_tanShape4" -p "neck_C0_tan1"; + rename -uid "1F7F3AC3-4E1F-966E-5240-4B94ED8DB15F"; setAttr ".ihi" 0; setAttr -k off ".v"; setAttr ".ove" yes; @@ -7470,8 +7551,8 @@ createNode nurbsCurve -n "neck_C0_tanShape18" -p "neck_C0_tan1"; 0 0.25 0 0 -0.25 0 ; -createNode nurbsCurve -n "neck_C0_tanShape19" -p "neck_C0_tan1"; - rename -uid "AD7BF26F-4B2E-4B87-D4FA-F5BD08ED9748"; +createNode nurbsCurve -n "neck_C0_tanShape5" -p "neck_C0_tan1"; + rename -uid "E944631C-4255-05D2-C6A4-B1B32BA02EF4"; setAttr ".ihi" 0; setAttr -k off ".v"; setAttr ".ove" yes; @@ -7483,8 +7564,8 @@ createNode nurbsCurve -n "neck_C0_tanShape19" -p "neck_C0_tan1"; 0 0 0.25 0 0 -0.25 ; -createNode nurbsCurve -n "neck_C0_tanShape20" -p "neck_C0_tan1"; - rename -uid "35AFD3E4-46AA-EE2D-E00B-AAA356E4CAC4"; +createNode nurbsCurve -n "neck_C0_tanShape6" -p "neck_C0_tan1"; + rename -uid "3A277631-4DB2-2897-65FE-EFA64E6C4088"; setAttr ".ihi" 0; setAttr -k off ".v"; setAttr ".ove" yes; @@ -7502,7 +7583,7 @@ createNode nurbsCurve -n "neck_C0_tanShape20" -p "neck_C0_tan1"; -0.1875 0 0 ; createNode nurbsCurve -n "neck_C0_tan18_0crvShape" -p "neck_C0_tan1"; - rename -uid "985A10C8-4337-C1B5-995F-4A9A19903D70"; + rename -uid "A7055370-4D75-E138-B63C-C2A8D4A2CA77"; setAttr ".ihi" 0; setAttr -k off ".v"; setAttr ".ove" yes; @@ -7520,7 +7601,7 @@ createNode nurbsCurve -n "neck_C0_tan18_0crvShape" -p "neck_C0_tan1"; -0.1875 0 0 ; createNode nurbsCurve -n "neck_C0_tan18_1crvShape" -p "neck_C0_tan1"; - rename -uid "52B1CD05-47DD-68D4-8971-B5A77C560CEA"; + rename -uid "2602A11E-46F5-B83E-2756-30ABD691BBDB"; setAttr ".ihi" 0; setAttr -k off ".v"; setAttr ".ove" yes; @@ -7538,19 +7619,19 @@ createNode nurbsCurve -n "neck_C0_tan18_1crvShape" -p "neck_C0_tan1"; 0 0 -0.1875 ; createNode transform -n "neck_C0_head_crv" -p "neck_C0_neck"; - rename -uid "A2242760-4388-30CC-57E2-A8A04A7C9DBA"; + rename -uid "C3CFB100-4146-0F51-D6D6-77844212D5E0"; setAttr ".ovdt" 1; setAttr ".ove" yes; setAttr ".t" -type "double3" 0.08983652654724944 -29.261428725477426 -4.0684386981538073e-015 ; setAttr ".r" -type "double3" 0 -89.999999999999986 0 ; setAttr ".s" -type "double3" 1.753879954650218 1.7538799546502188 1.7538799546502095 ; createNode nurbsCurve -n "neck_C0_head_crvShape" -p "neck_C0_head_crv"; - rename -uid "1CD880D3-45F6-902F-20F9-8A9F947EB759"; + rename -uid "BFBEB0CD-431F-2113-75D7-11952C8CDD81"; setAttr -k off ".v"; setAttr -s 4 ".iog[0].og"; setAttr ".tw" yes; createNode nurbsCurve -n "neck_C0_head_crvShapeOrig" -p "neck_C0_head_crv"; - rename -uid "7C192F4E-4741-002F-6629-EC9D20CD35A7"; + rename -uid "EF7191B4-4324-82F3-7685-3C8281DCEEE6"; setAttr -k off ".v"; setAttr ".io" yes; setAttr ".cc" -type "nurbsCurve" @@ -7562,7 +7643,7 @@ createNode nurbsCurve -n "neck_C0_head_crvShapeOrig" -p "neck_C0_head_crv"; 0 0 0 ; createNode transform -n "neck_C0_tan0" -p "neck_C0_root"; - rename -uid "E5BCD85F-49CB-A941-BC19-549F8F780A96"; + rename -uid "C3C830E0-45A2-E501-EDE8-E489D631739A"; addAttr -ci true -sn "isGearGuide" -ln "isGearGuide" -dv 1 -min 0 -max 1 -at "bool"; setAttr -k off -cb on ".v"; setAttr ".t" -type "double3" -0.076579783198171825 0.45329667709497912 3.850870476136893e-017 ; @@ -7578,7 +7659,7 @@ createNode transform -n "neck_C0_tan0" -p "neck_C0_root"; setAttr -k off -cb on ".sy"; setAttr -k off -cb on ".sz"; createNode nurbsCurve -n "neck_C0_tanShape0" -p "neck_C0_tan0"; - rename -uid "9A5E4CF2-4F4E-2F4C-4413-8797BD1A7974"; + rename -uid "CBFD340A-4B3C-505E-9A06-31A36E275572"; setAttr ".ihi" 0; setAttr -k off ".v"; setAttr ".ove" yes; @@ -7590,8 +7671,8 @@ createNode nurbsCurve -n "neck_C0_tanShape0" -p "neck_C0_tan0"; 0.25 0 0 -0.25 0 0 ; -createNode nurbsCurve -n "neck_C0_tanShape17" -p "neck_C0_tan0"; - rename -uid "45522055-4649-8DA5-669C-3B817F4F46AB"; +createNode nurbsCurve -n "neck_C0_tanShape1" -p "neck_C0_tan0"; + rename -uid "F5581949-4F97-1E37-696B-2DB31186F903"; setAttr ".ihi" 0; setAttr -k off ".v"; setAttr ".ove" yes; @@ -7603,8 +7684,8 @@ createNode nurbsCurve -n "neck_C0_tanShape17" -p "neck_C0_tan0"; 0 0.25 0 0 -0.25 0 ; -createNode nurbsCurve -n "neck_C0_tanShape18" -p "neck_C0_tan0"; - rename -uid "786C15EB-48CB-2945-B699-8C83A2FFC321"; +createNode nurbsCurve -n "neck_C0_tanShape2" -p "neck_C0_tan0"; + rename -uid "C92D2E41-46E4-BD1C-D2FD-42B0B40513E1"; setAttr ".ihi" 0; setAttr -k off ".v"; setAttr ".ove" yes; @@ -7616,8 +7697,8 @@ createNode nurbsCurve -n "neck_C0_tanShape18" -p "neck_C0_tan0"; 0 0 0.25 0 0 -0.25 ; -createNode nurbsCurve -n "neck_C0_tanShape19" -p "neck_C0_tan0"; - rename -uid "15733AD9-4C63-0B0D-67EA-D883C4007C50"; +createNode nurbsCurve -n "neck_C0_tanShape3" -p "neck_C0_tan0"; + rename -uid "73725F34-4C0B-1BB1-E76C-C09D175CD801"; setAttr ".ihi" 0; setAttr -k off ".v"; setAttr ".ove" yes; @@ -7634,8 +7715,8 @@ createNode nurbsCurve -n "neck_C0_tanShape19" -p "neck_C0_tan0"; 0 -0.1875 0 -0.1875 0 0 ; -createNode nurbsCurve -n "neck_C0_tan17_0crvShape" -p "neck_C0_tan0"; - rename -uid "6FF5CDE2-4485-D6FE-59C2-F1972FBEB58C"; +createNode nurbsCurve -n "neck_C0_tan17_0crvShape0" -p "neck_C0_tan0"; + rename -uid "3F31F080-4E66-DE82-AEEF-D4B991686F24"; setAttr ".ihi" 0; setAttr -k off ".v"; setAttr ".ove" yes; @@ -7652,8 +7733,8 @@ createNode nurbsCurve -n "neck_C0_tan17_0crvShape" -p "neck_C0_tan0"; 0 0 -0.1875 -0.1875 0 0 ; -createNode nurbsCurve -n "neck_C0_tan17_1crvShape" -p "neck_C0_tan0"; - rename -uid "3B72D67F-46E6-C2E0-BC14-C1A428039E59"; +createNode nurbsCurve -n "neck_C0_tan17_1crvShape0" -p "neck_C0_tan0"; + rename -uid "EE545354-47C0-6F1C-1067-65B09883B096"; setAttr ".ihi" 0; setAttr -k off ".v"; setAttr ".ove" yes; @@ -7671,7 +7752,7 @@ createNode nurbsCurve -n "neck_C0_tan17_1crvShape" -p "neck_C0_tan0"; 0 0 -0.1875 ; createNode transform -n "neck_C0_blade" -p "neck_C0_root"; - rename -uid "14B42D1E-41A4-214B-C62F-D8A83F668305"; + rename -uid "92C988AB-4528-9601-E5B0-DE9293804EAF"; addAttr -ci true -k true -sn "bladeRollOffset" -ln "bladeRollOffset" -at "float"; setAttr -l on -k off -cb on ".v"; setAttr -k off -cb on ".tx"; @@ -7687,7 +7768,7 @@ createNode transform -n "neck_C0_blade" -p "neck_C0_root"; setAttr -l on -k off -cb on ".sz"; setAttr -k on ".bladeRollOffset" 360; createNode nurbsCurve -n "neck_C0_bladeShape" -p "neck_C0_blade"; - rename -uid "E033B395-43FB-5568-7616-E2B9D0BA0D4E"; + rename -uid "EDE0BEEC-4887-B887-D64C-1C9777C2D67F"; setAttr ".ihi" 0; setAttr -k off ".v"; setAttr ".ove" yes; @@ -7702,7 +7783,7 @@ createNode nurbsCurve -n "neck_C0_bladeShape" -p "neck_C0_blade"; 0 0 0 ; createNode aimConstraint -n "neck_C0_blade_aimConstraint9" -p "neck_C0_blade"; - rename -uid "530B89A8-4961-8A24-A462-C4A59F59421E"; + rename -uid "7C07A2C2-433D-5BD0-E462-5F909810E43E"; addAttr -dcb 0 -ci true -sn "w0" -ln "neck_C0_tan0W0" -dv 1 -at "double"; setAttr -k on ".nds"; setAttr -k off ".v"; @@ -7721,7 +7802,7 @@ createNode aimConstraint -n "neck_C0_blade_aimConstraint9" -p "neck_C0_blade"; setAttr ".rsrr" -type "double3" 540 2.5424100276768916e-029 459.5889880226357 ; setAttr -k on ".w0"; createNode pointConstraint -n "neck_C0_blade_pointConstraint9" -p "neck_C0_blade"; - rename -uid "F67E3FB2-4620-DD11-6D46-88B909877034"; + rename -uid "9A4DF24D-4B54-724E-0926-B4BD63827A18"; addAttr -dcb 0 -ci true -k true -sn "w0" -ln "neck_C0_rootW0" -dv 1 -min 0 -at "double"; setAttr -k on ".nds"; setAttr -k off ".v"; @@ -7738,19 +7819,19 @@ createNode pointConstraint -n "neck_C0_blade_pointConstraint9" -p "neck_C0_blade setAttr ".rst" -type "double3" 0 -3.5527136788005009e-015 0 ; setAttr -k on ".w0"; createNode transform -n "neck_C0_neck_crv" -p "neck_C0_root"; - rename -uid "21559A42-4276-A137-617A-A6AE24BF2C6E"; + rename -uid "9C45F6CD-4DDC-F944-3C2A-06B6A76B3F07"; setAttr ".ovdt" 1; setAttr ".ove" yes; setAttr ".t" -type "double3" -0.57828081326916192 -26.793934099519543 -3.9146096093576519e-015 ; setAttr ".r" -type "double3" 0 -89.999999999999986 0 ; setAttr ".s" -type "double3" 1.7538799546502168 1.7538799546502126 1.7538799546502031 ; createNode nurbsCurve -n "neck_C0_neck_crvShape" -p "neck_C0_neck_crv"; - rename -uid "60358A8E-4A38-AFDC-8AB5-2EB3C7610EFF"; + rename -uid "A12AABDA-41D0-4CF8-10F4-31BFDD7AF857"; setAttr -k off ".v"; setAttr -s 4 ".iog[0].og"; setAttr ".tw" yes; createNode nurbsCurve -n "neck_C0_neck_crvShapeOrig" -p "neck_C0_neck_crv"; - rename -uid "107153BD-46D8-E4A1-6740-0CA0D4E69762"; + rename -uid "6ED20CF1-4A81-0CE1-A795-E88AAE9560A5"; setAttr -k off ".v"; setAttr ".io" yes; setAttr ".cc" -type "nurbsCurve" @@ -7763,7 +7844,7 @@ createNode nurbsCurve -n "neck_C0_neck_crvShapeOrig" -p "neck_C0_neck_crv"; 0 0 0 ; createNode transform -n "shoulder_R0_root" -p "spine_C0_eff"; - rename -uid "EC0BF0F8-4916-45E5-F399-05993FFEB71C"; + rename -uid "23F761FE-4FBD-E1F5-9D83-168AB720C405"; addAttr -ci true -sn "isGearGuide" -ln "isGearGuide" -dv 1 -min 0 -max 1 -at "bool"; addAttr -ci true -sn "comp_type" -ln "comp_type" -dt "string"; addAttr -ci true -sn "comp_name" -ln "comp_name" -dt "string"; @@ -7776,7 +7857,7 @@ createNode transform -n "shoulder_R0_root" -p "spine_C0_eff"; addAttr -ci true -sn "useIndex" -ln "useIndex" -min 0 -max 1 -at "bool"; addAttr -ci true -sn "parentJointIndex" -ln "parentJointIndex" -at "long"; setAttr -k off -cb on ".v"; - setAttr ".t" -type "double3" 1.7395848890977401 -0.016853043661003264 0.11673327753265016 ; + setAttr ".t" -type "double3" 1.7395848890977366 -0.01685304366100332 0.11673327753265017 ; setAttr -k off -cb on ".tx"; setAttr -k off -cb on ".ty"; setAttr -k off -cb on ".tz"; @@ -7785,7 +7866,7 @@ createNode transform -n "shoulder_R0_root" -p "spine_C0_eff"; setAttr -k off -cb on ".ry"; setAttr -k off -cb on ".rz"; setAttr -cb on ".ro"; - setAttr ".s" -type "double3" 1.000000000000002 1.0000000000000027 -0.99999999999999956 ; + setAttr ".s" -type "double3" 1.0000000000000018 1.0000000000000027 -0.99999999999999933 ; setAttr -k off -cb on ".sx"; setAttr -k off -cb on ".sy"; setAttr -k off -cb on ".sz"; @@ -7795,10 +7876,10 @@ createNode transform -n "shoulder_R0_root" -p "spine_C0_eff"; setAttr ".connector" -type "string" "standard"; setAttr ".ui_host" -type "string" "armUI_R0_root"; setAttr ".ctlGrp" -type "string" ""; - setAttr ".refArray" -type "string" "shoulder_R0_root,local_C0_root,body_C0_root,spine_C0_eff"; + setAttr ".refArray" -type "string" "shoulder_R0_root,local_C0_root,body_C0_root,spine_C0_eff,global_C0_root"; setAttr ".parentJointIndex" -1; createNode nurbsCurve -n "shoulder_R0_rootShape" -p "shoulder_R0_root"; - rename -uid "6A451BB6-4E11-39D8-662D-7B9758DDDBF4"; + rename -uid "701C6D6A-46AB-4A92-950C-ADB7E20AB16B"; setAttr ".ihi" 0; setAttr -k off ".v"; setAttr ".ove" yes; @@ -7810,8 +7891,8 @@ createNode nurbsCurve -n "shoulder_R0_rootShape" -p "shoulder_R0_root"; 0.25 0 0 -0.25 0 0 ; -createNode nurbsCurve -n "shoulder_R0_root10Shape" -p "shoulder_R0_root"; - rename -uid "9E3B1BC5-431C-4DD9-B25D-ADA7180644D1"; +createNode nurbsCurve -n "shoulder_R0_root1Shape" -p "shoulder_R0_root"; + rename -uid "9D189CF1-4BC5-7E1B-BB0B-72BD81D901B1"; setAttr ".ihi" 0; setAttr -k off ".v"; setAttr ".ove" yes; @@ -7823,8 +7904,8 @@ createNode nurbsCurve -n "shoulder_R0_root10Shape" -p "shoulder_R0_root"; 0 0.25 0 0 -0.25 0 ; -createNode nurbsCurve -n "shoulder_R0_root11Shape" -p "shoulder_R0_root"; - rename -uid "07B7183F-40EE-AA83-026D-C3B36C203D28"; +createNode nurbsCurve -n "shoulder_R0_root2Shape" -p "shoulder_R0_root"; + rename -uid "63A3520A-4EC0-E199-B4BB-E58FE07A2514"; setAttr ".ihi" 0; setAttr -k off ".v"; setAttr ".ove" yes; @@ -7836,8 +7917,8 @@ createNode nurbsCurve -n "shoulder_R0_root11Shape" -p "shoulder_R0_root"; 0 0 0.25 0 0 -0.25 ; -createNode nurbsCurve -n "shoulder_R0_root12Shape" -p "shoulder_R0_root"; - rename -uid "AD6F5EF0-4704-7BC2-0B48-63B0E65DA496"; +createNode nurbsCurve -n "shoulder_R0_root3Shape" -p "shoulder_R0_root"; + rename -uid "6CE9BA31-487A-FFC4-8341-B084347E9990"; setAttr ".ihi" 0; setAttr -k off ".v"; setAttr ".ove" yes; @@ -7864,10 +7945,10 @@ createNode nurbsCurve -n "shoulder_R0_root12Shape" -p "shoulder_R0_root"; -0.125 -0.125 -0.125 ; createNode transform -n "shoulder_R0_tip" -p "shoulder_R0_root"; - rename -uid "E445464A-4CCC-EBE4-66BF-118975B827C4"; + rename -uid "7751FB3A-4868-AE6D-1222-56BB1C8C4036"; addAttr -ci true -sn "isGearGuide" -ln "isGearGuide" -dv 1 -min 0 -max 1 -at "bool"; setAttr -k off -cb on ".v"; - setAttr ".t" -type "double3" 0.33303929285646028 -0.91350954729966849 -1.5239746815175856 ; + setAttr ".t" -type "double3" 0.33303929285645495 -0.91350954729966949 -1.5239746815175859 ; setAttr -k off -cb on ".tx"; setAttr -k off -cb on ".ty"; setAttr -k off -cb on ".tz"; @@ -7875,12 +7956,12 @@ createNode transform -n "shoulder_R0_tip" -p "shoulder_R0_root"; setAttr -k off -cb on ".ry"; setAttr -k off -cb on ".rz"; setAttr -cb on ".ro"; - setAttr ".s" -type "double3" 0.99999999999999822 0.999999999999996 0.99999999999999867 ; + setAttr ".s" -type "double3" 0.99999999999999856 0.99999999999999611 0.99999999999999889 ; setAttr -k off -cb on ".sx"; setAttr -k off -cb on ".sy"; setAttr -k off -cb on ".sz"; createNode nurbsCurve -n "shoulder_R0_tipShape" -p "shoulder_R0_tip"; - rename -uid "93118612-4D0F-18C2-B94D-AB8D9798AFA3"; + rename -uid "36597589-4503-1853-2E5A-0392F0063D8C"; setAttr ".ihi" 0; setAttr -k off ".v"; setAttr ".ove" yes; @@ -7892,8 +7973,8 @@ createNode nurbsCurve -n "shoulder_R0_tipShape" -p "shoulder_R0_tip"; 0.25 0 0 -0.25 0 0 ; -createNode nurbsCurve -n "shoulder_R0_tip10Shape" -p "shoulder_R0_tip"; - rename -uid "86EE52CE-43E6-2CDD-F7CD-818360F3AD1A"; +createNode nurbsCurve -n "shoulder_R0_tip1Shape" -p "shoulder_R0_tip"; + rename -uid "6BB516A1-403E-ABCB-F6DC-9E8D4149AF2C"; setAttr ".ihi" 0; setAttr -k off ".v"; setAttr ".ove" yes; @@ -7905,8 +7986,8 @@ createNode nurbsCurve -n "shoulder_R0_tip10Shape" -p "shoulder_R0_tip"; 0 0.25 0 0 -0.25 0 ; -createNode nurbsCurve -n "shoulder_R0_tip11Shape" -p "shoulder_R0_tip"; - rename -uid "01358800-4AC8-F72C-BCA1-9F8D79994ACA"; +createNode nurbsCurve -n "shoulder_R0_tip2Shape" -p "shoulder_R0_tip"; + rename -uid "960A5C48-434C-E8F7-88C4-8B99326C8917"; setAttr ".ihi" 0; setAttr -k off ".v"; setAttr ".ove" yes; @@ -7918,8 +7999,8 @@ createNode nurbsCurve -n "shoulder_R0_tip11Shape" -p "shoulder_R0_tip"; 0 0 0.25 0 0 -0.25 ; -createNode nurbsCurve -n "shoulder_R0_tip12Shape" -p "shoulder_R0_tip"; - rename -uid "FA36E237-4691-B7B4-BDF8-A59BF2BAC3AC"; +createNode nurbsCurve -n "shoulder_R0_tip3Shape" -p "shoulder_R0_tip"; + rename -uid "384BFE80-4193-A87F-235E-D1A67C6EE269"; setAttr ".ihi" 0; setAttr -k off ".v"; setAttr ".ove" yes; @@ -7936,8 +8017,8 @@ createNode nurbsCurve -n "shoulder_R0_tip12Shape" -p "shoulder_R0_tip"; 0 -0.1875 0 -0.1875 0 0 ; -createNode nurbsCurve -n "shoulder_R0_tip12_0crvShape" -p "shoulder_R0_tip"; - rename -uid "3087D336-467A-EAB3-83F4-A68AB963F132"; +createNode nurbsCurve -n "shoulder_R0_tip3_0crvShape" -p "shoulder_R0_tip"; + rename -uid "E1C63C87-4341-B94C-AC0B-9FAC39AF7368"; setAttr ".ihi" 0; setAttr -k off ".v"; setAttr ".ove" yes; @@ -7954,8 +8035,8 @@ createNode nurbsCurve -n "shoulder_R0_tip12_0crvShape" -p "shoulder_R0_tip"; 0 0 -0.1875 -0.1875 0 0 ; -createNode nurbsCurve -n "shoulder_R0_tip12_1crvShape" -p "shoulder_R0_tip"; - rename -uid "640844C8-4011-A307-BB2D-73BCD48E5FB0"; +createNode nurbsCurve -n "shoulder_R0_tip3_1crvShape" -p "shoulder_R0_tip"; + rename -uid "3D112D3C-452D-F515-C365-58B341BB0ABC"; setAttr ".ihi" 0; setAttr -k off ".v"; setAttr ".ove" yes; @@ -7973,7 +8054,7 @@ createNode nurbsCurve -n "shoulder_R0_tip12_1crvShape" -p "shoulder_R0_tip"; 0 0 -0.1875 ; createNode transform -n "arm_R0_root" -p "shoulder_R0_tip"; - rename -uid "5A511CB6-4CED-052C-24D2-8CB941372467"; + rename -uid "83547327-4491-A88F-401B-3D8BC02A1D2A"; addAttr -ci true -sn "isGearGuide" -ln "isGearGuide" -dv 1 -min 0 -max 1 -at "bool"; addAttr -ci true -sn "comp_type" -ln "comp_type" -dt "string"; addAttr -ci true -sn "comp_name" -ln "comp_name" -dt "string"; @@ -7997,16 +8078,16 @@ createNode transform -n "arm_R0_root" -p "shoulder_R0_tip"; addAttr -ci true -sn "useIndex" -ln "useIndex" -min 0 -max 1 -at "bool"; addAttr -ci true -sn "parentJointIndex" -ln "parentJointIndex" -at "long"; setAttr -k off -cb on ".v"; - setAttr ".t" -type "double3" 5.3290705182007514e-015 -8.8817841970012523e-016 -1.3322676295501878e-015 ; + setAttr ".t" -type "double3" 1.2434497875801753e-014 4.4408920985006262e-016 -8.8817841970012523e-016 ; setAttr -k off -cb on ".tx"; setAttr -k off -cb on ".ty"; setAttr -k off -cb on ".tz"; - setAttr ".r" -type "double3" -95.878962023386919 44.411212983179865 -5.4710434405384927 ; + setAttr ".r" -type "double3" -95.878962023386961 44.41121298317988 -5.4710434405384811 ; setAttr -k off -cb on ".rx"; setAttr -k off -cb on ".ry"; setAttr -k off -cb on ".rz"; setAttr -cb on ".ro"; - setAttr ".s" -type "double3" 1.0000000000000009 0.99999999999999867 1.0000000000000007 ; + setAttr ".s" -type "double3" 1 0.99999999999999845 1.0000000000000002 ; setAttr -k off -cb on ".sx"; setAttr -k off -cb on ".sy"; setAttr -k off -cb on ".sz"; @@ -8016,9 +8097,9 @@ createNode transform -n "arm_R0_root" -p "shoulder_R0_tip"; setAttr ".connector" -type "string" "standard"; setAttr ".ui_host" -type "string" "armUI_R0_root"; setAttr ".ctlGrp" -type "string" ""; - setAttr ".ikrefarray" -type "string" "shoulder_R0_tip,local_C0_root,body_C0_root,spine_C0_eff,spine_C0_root"; - setAttr ".upvrefarray" -type "string" "shoulder_R0_tip,local_C0_root,body_C0_root,spine_C0_eff,spine_C0_root"; - setAttr ".pinrefarray" -type "string" "shoulder_R0_tip,local_C0_root,body_C0_root,spine_C0_eff,spine_C0_root"; + setAttr ".ikrefarray" -type "string" "shoulder_R0_tip,local_C0_root,body_C0_root,spine_C0_eff,spine_C0_root,global_C0_root"; + setAttr ".upvrefarray" -type "string" "shoulder_R0_tip,local_C0_root,body_C0_root,spine_C0_eff,spine_C0_root,global_C0_root"; + setAttr ".pinrefarray" -type "string" "shoulder_R0_tip,local_C0_root,body_C0_root,spine_C0_eff,spine_C0_root,global_C0_root"; setAttr ".maxstretch" 1.5; setAttr ".ikTR" yes; setAttr ".mirrorMid" yes; @@ -8028,7 +8109,7 @@ createNode transform -n "arm_R0_root" -p "shoulder_R0_tip"; setAttr -k on ".sq_profile"; setAttr ".parentJointIndex" -1; createNode nurbsCurve -n "arm_R0_rootShape" -p "arm_R0_root"; - rename -uid "91CF4B93-4CAD-A175-1AC6-158A7C6FB333"; + rename -uid "3BAB6587-4175-80C8-EB51-508EDBE2F8FA"; setAttr ".ihi" 0; setAttr -k off ".v"; setAttr ".ove" yes; @@ -8040,8 +8121,8 @@ createNode nurbsCurve -n "arm_R0_rootShape" -p "arm_R0_root"; 0.25 0 0 -0.25 0 0 ; -createNode nurbsCurve -n "arm_R0_root10Shape" -p "arm_R0_root"; - rename -uid "6EF6ECE3-4343-5AEF-4F0B-258A403BAF28"; +createNode nurbsCurve -n "arm_R0_root1Shape" -p "arm_R0_root"; + rename -uid "235FE289-46CF-44A4-A6DD-76BBE60594F0"; setAttr ".ihi" 0; setAttr -k off ".v"; setAttr ".ove" yes; @@ -8053,8 +8134,8 @@ createNode nurbsCurve -n "arm_R0_root10Shape" -p "arm_R0_root"; 0 0.25 0 0 -0.25 0 ; -createNode nurbsCurve -n "arm_R0_root11Shape" -p "arm_R0_root"; - rename -uid "725A8F93-45ED-4D18-D2FB-15BD8D4B0933"; +createNode nurbsCurve -n "arm_R0_root2Shape" -p "arm_R0_root"; + rename -uid "6B0B3CE2-4DC8-C0B1-8950-41A8CD8C0537"; setAttr ".ihi" 0; setAttr -k off ".v"; setAttr ".ove" yes; @@ -8066,8 +8147,8 @@ createNode nurbsCurve -n "arm_R0_root11Shape" -p "arm_R0_root"; 0 0 0.25 0 0 -0.25 ; -createNode nurbsCurve -n "arm_R0_root12Shape" -p "arm_R0_root"; - rename -uid "CFACADBF-46CA-B9EE-12AE-26895B0D5F48"; +createNode nurbsCurve -n "arm_R0_root3Shape" -p "arm_R0_root"; + rename -uid "D61CA210-4A01-C034-C8AC-5F9A7CEA3D54"; setAttr ".ihi" 0; setAttr -k off ".v"; setAttr ".ove" yes; @@ -8094,10 +8175,10 @@ createNode nurbsCurve -n "arm_R0_root12Shape" -p "arm_R0_root"; -0.125 -0.125 -0.125 ; createNode transform -n "arm_R0_elbow" -p "arm_R0_root"; - rename -uid "904F7568-4C76-7697-9659-F898BF28EC46"; + rename -uid "828F536B-42BD-C4E2-F29D-2E9C0B5DB3F3"; addAttr -ci true -sn "isGearGuide" -ln "isGearGuide" -dv 1 -min 0 -max 1 -at "bool"; setAttr -k off -cb on ".v"; - setAttr ".t" -type "double3" 2.8283335982323363 -3.5527136788005009e-015 0.078976790252910822 ; + setAttr ".t" -type "double3" 2.8283335982323274 7.1054273576010019e-015 0.078976790252910156 ; setAttr -k off -cb on ".tx"; setAttr -k off -cb on ".ty"; setAttr -k off -cb on ".tz"; @@ -8106,12 +8187,12 @@ createNode transform -n "arm_R0_elbow" -p "arm_R0_root"; setAttr -k off -cb on ".ry"; setAttr -k off -cb on ".rz"; setAttr -cb on ".ro"; - setAttr ".s" -type "double3" 0.99999999999999878 0.99999999999999911 0.99999999999999956 ; + setAttr ".s" -type "double3" 0.99999999999999933 0.99999999999999922 0.999999999999999 ; setAttr -k off -cb on ".sx"; setAttr -k off -cb on ".sy"; setAttr -k off -cb on ".sz"; createNode nurbsCurve -n "arm_R0_elbowShape" -p "arm_R0_elbow"; - rename -uid "28C17219-409B-FF1A-A427-5E98B2D26B06"; + rename -uid "F983784B-42DE-C235-191E-C9A58FBB07A6"; setAttr ".ihi" 0; setAttr -k off ".v"; setAttr ".ove" yes; @@ -8123,8 +8204,8 @@ createNode nurbsCurve -n "arm_R0_elbowShape" -p "arm_R0_elbow"; 0.25 0 0 -0.25 0 0 ; -createNode nurbsCurve -n "arm_R0_elbow10Shape" -p "arm_R0_elbow"; - rename -uid "B437C1F3-4EBB-02D9-71C6-BC8EC3592E4B"; +createNode nurbsCurve -n "arm_R0_elbow1Shape" -p "arm_R0_elbow"; + rename -uid "1564750B-464B-0AFC-E706-A28259E4A847"; setAttr ".ihi" 0; setAttr -k off ".v"; setAttr ".ove" yes; @@ -8136,8 +8217,8 @@ createNode nurbsCurve -n "arm_R0_elbow10Shape" -p "arm_R0_elbow"; 0 0.25 0 0 -0.25 0 ; -createNode nurbsCurve -n "arm_R0_elbow11Shape" -p "arm_R0_elbow"; - rename -uid "472CD6F2-42AE-B21A-CBE9-3F8BB372A869"; +createNode nurbsCurve -n "arm_R0_elbow2Shape" -p "arm_R0_elbow"; + rename -uid "60916525-491F-BA92-182E-37A907317C1D"; setAttr ".ihi" 0; setAttr -k off ".v"; setAttr ".ove" yes; @@ -8149,8 +8230,8 @@ createNode nurbsCurve -n "arm_R0_elbow11Shape" -p "arm_R0_elbow"; 0 0 0.25 0 0 -0.25 ; -createNode nurbsCurve -n "arm_R0_elbow12Shape" -p "arm_R0_elbow"; - rename -uid "5057770C-4200-B5EF-8FC8-19A784FDC971"; +createNode nurbsCurve -n "arm_R0_elbow3Shape" -p "arm_R0_elbow"; + rename -uid "17076F5C-4547-4936-DC0E-1383848E570E"; setAttr ".ihi" 0; setAttr -k off ".v"; setAttr ".ove" yes; @@ -8167,8 +8248,8 @@ createNode nurbsCurve -n "arm_R0_elbow12Shape" -p "arm_R0_elbow"; 0 -0.1875 0 -0.1875 0 0 ; -createNode nurbsCurve -n "arm_R0_elbow12_0crvShape" -p "arm_R0_elbow"; - rename -uid "1598BD80-44F8-2F19-EB47-C58119C701B0"; +createNode nurbsCurve -n "arm_R0_elbow3_0crvShape" -p "arm_R0_elbow"; + rename -uid "99A5A104-4BCD-C492-D319-FEA2C663AF07"; setAttr ".ihi" 0; setAttr -k off ".v"; setAttr ".ove" yes; @@ -8185,8 +8266,8 @@ createNode nurbsCurve -n "arm_R0_elbow12_0crvShape" -p "arm_R0_elbow"; 0 0 -0.1875 -0.1875 0 0 ; -createNode nurbsCurve -n "arm_R0_elbow12_1crvShape" -p "arm_R0_elbow"; - rename -uid "E28248F5-4562-1BD5-63B9-87A22DC88556"; +createNode nurbsCurve -n "arm_R0_elbow3_1crvShape" -p "arm_R0_elbow"; + rename -uid "7DD64E9F-472B-A5E9-0FB1-30977E63D680"; setAttr ".ihi" 0; setAttr -k off ".v"; setAttr ".ove" yes; @@ -8204,10 +8285,10 @@ createNode nurbsCurve -n "arm_R0_elbow12_1crvShape" -p "arm_R0_elbow"; 0 0 -0.1875 ; createNode transform -n "arm_R0_wrist" -p "arm_R0_elbow"; - rename -uid "83E9D882-4164-F7F9-6683-E18695EB5C33"; + rename -uid "EF142F0B-449E-EC29-375B-7B9AFBDA1D29"; addAttr -ci true -sn "isGearGuide" -ln "isGearGuide" -dv 1 -min 0 -max 1 -at "bool"; setAttr -k off -cb on ".v"; - setAttr ".t" -type "double3" 2.9351547891496894 0 -0.11960611218230408 ; + setAttr ".t" -type "double3" 2.9351547891496979 -1.7763568394002505e-015 -0.11960611218230635 ; setAttr -k off -cb on ".tx"; setAttr -k off -cb on ".ty"; setAttr -k off -cb on ".tz"; @@ -8215,12 +8296,12 @@ createNode transform -n "arm_R0_wrist" -p "arm_R0_elbow"; setAttr -k off -cb on ".ry"; setAttr -k off -cb on ".rz"; setAttr -cb on ".ro"; - setAttr ".s" -type "double3" 1.0000000000000007 1.0000000000000024 1.0000000000000004 ; + setAttr ".s" -type "double3" 1.0000000000000002 1.0000000000000018 1.0000000000000009 ; setAttr -k off -cb on ".sx"; setAttr -k off -cb on ".sy"; setAttr -k off -cb on ".sz"; createNode nurbsCurve -n "arm_R0_wristShape" -p "arm_R0_wrist"; - rename -uid "71172AB2-41E6-F71C-2158-F09D65C9F55E"; + rename -uid "2D45C579-48AC-6AFA-7100-2385B62D47F5"; setAttr ".ihi" 0; setAttr -k off ".v"; setAttr ".ove" yes; @@ -8232,8 +8313,8 @@ createNode nurbsCurve -n "arm_R0_wristShape" -p "arm_R0_wrist"; 0.25 0 0 -0.25 0 0 ; -createNode nurbsCurve -n "arm_R0_wrist10Shape" -p "arm_R0_wrist"; - rename -uid "27B40DB0-46F0-5024-F3E7-3EA0CC79E5B3"; +createNode nurbsCurve -n "arm_R0_wrist1Shape" -p "arm_R0_wrist"; + rename -uid "1DB36C33-4851-D900-EC78-3A91DD79A138"; setAttr ".ihi" 0; setAttr -k off ".v"; setAttr ".ove" yes; @@ -8245,8 +8326,8 @@ createNode nurbsCurve -n "arm_R0_wrist10Shape" -p "arm_R0_wrist"; 0 0.25 0 0 -0.25 0 ; -createNode nurbsCurve -n "arm_R0_wrist11Shape" -p "arm_R0_wrist"; - rename -uid "DA7B5411-4215-AA4A-11C2-488F46D4FB52"; +createNode nurbsCurve -n "arm_R0_wrist2Shape" -p "arm_R0_wrist"; + rename -uid "C32E5E19-4149-A4A4-E28D-EB94E2024717"; setAttr ".ihi" 0; setAttr -k off ".v"; setAttr ".ove" yes; @@ -8258,8 +8339,8 @@ createNode nurbsCurve -n "arm_R0_wrist11Shape" -p "arm_R0_wrist"; 0 0 0.25 0 0 -0.25 ; -createNode nurbsCurve -n "arm_R0_wrist12Shape" -p "arm_R0_wrist"; - rename -uid "F0DAB3C9-4E17-6EEC-586E-B791423C062B"; +createNode nurbsCurve -n "arm_R0_wrist3Shape" -p "arm_R0_wrist"; + rename -uid "02288A60-486E-B031-1CCA-27A71EEC028A"; setAttr ".ihi" 0; setAttr -k off ".v"; setAttr ".ove" yes; @@ -8276,8 +8357,8 @@ createNode nurbsCurve -n "arm_R0_wrist12Shape" -p "arm_R0_wrist"; 0 -0.1875 0 -0.1875 0 0 ; -createNode nurbsCurve -n "arm_R0_wrist12_0crvShape" -p "arm_R0_wrist"; - rename -uid "35388687-4634-1D14-3080-A89B8594CD36"; +createNode nurbsCurve -n "arm_R0_wrist3_0crvShape" -p "arm_R0_wrist"; + rename -uid "960FBA34-48F6-8F8C-C06F-05B84E2DF6E4"; setAttr ".ihi" 0; setAttr -k off ".v"; setAttr ".ove" yes; @@ -8294,8 +8375,8 @@ createNode nurbsCurve -n "arm_R0_wrist12_0crvShape" -p "arm_R0_wrist"; 0 0 -0.1875 -0.1875 0 0 ; -createNode nurbsCurve -n "arm_R0_wrist12_1crvShape" -p "arm_R0_wrist"; - rename -uid "F7F31B8E-4E17-AA12-7B9C-1AA02B8F43EA"; +createNode nurbsCurve -n "arm_R0_wrist3_1crvShape" -p "arm_R0_wrist"; + rename -uid "94023B4C-49A5-0A11-12CE-A790C73FD410"; setAttr ".ihi" 0; setAttr -k off ".v"; setAttr ".ove" yes; @@ -8313,10 +8394,10 @@ createNode nurbsCurve -n "arm_R0_wrist12_1crvShape" -p "arm_R0_wrist"; 0 0 -0.1875 ; createNode transform -n "arm_R0_eff" -p "arm_R0_wrist"; - rename -uid "2048A907-4CE1-BAA8-EEAE-42874C6C8610"; + rename -uid "619C7F32-492E-D775-8D60-A981276C5DE9"; addAttr -ci true -sn "isGearGuide" -ln "isGearGuide" -dv 1 -min 0 -max 1 -at "bool"; setAttr -k off -cb on ".v"; - setAttr ".t" -type "double3" 1.3207237066308193 1.7763568394002505e-014 8.3266726846886741e-016 ; + setAttr ".t" -type "double3" 1.3207237066308184 5.3290705182007514e-015 8.8817841970012523e-016 ; setAttr -k off -cb on ".tx"; setAttr -k off -cb on ".ty"; setAttr -k off -cb on ".tz"; @@ -8324,12 +8405,12 @@ createNode transform -n "arm_R0_eff" -p "arm_R0_wrist"; setAttr -k off -cb on ".ry"; setAttr -k off -cb on ".rz"; setAttr -cb on ".ro"; - setAttr ".s" -type "double3" 1 0.99999999999999978 0.99999999999999944 ; + setAttr ".s" -type "double3" 1.0000000000000011 1 0.99999999999999989 ; setAttr -k off -cb on ".sx"; setAttr -k off -cb on ".sy"; setAttr -k off -cb on ".sz"; createNode nurbsCurve -n "arm_R0_effShape" -p "arm_R0_eff"; - rename -uid "EF4B7C23-48DB-A026-7EF6-E2A11A84D990"; + rename -uid "B15ACC99-4B3D-7032-86A3-E4AD959816DA"; setAttr ".ihi" 0; setAttr -k off ".v"; setAttr ".ove" yes; @@ -8341,8 +8422,8 @@ createNode nurbsCurve -n "arm_R0_effShape" -p "arm_R0_eff"; 0.25 0 0 -0.25 0 0 ; -createNode nurbsCurve -n "arm_R0_eff10Shape" -p "arm_R0_eff"; - rename -uid "D5700F01-4719-1B4A-7171-E2BB060B2761"; +createNode nurbsCurve -n "arm_R0_eff1Shape" -p "arm_R0_eff"; + rename -uid "3DBDC1AF-4977-87D7-7317-5CA7E6A7F072"; setAttr ".ihi" 0; setAttr -k off ".v"; setAttr ".ove" yes; @@ -8354,8 +8435,8 @@ createNode nurbsCurve -n "arm_R0_eff10Shape" -p "arm_R0_eff"; 0 0.25 0 0 -0.25 0 ; -createNode nurbsCurve -n "arm_R0_eff11Shape" -p "arm_R0_eff"; - rename -uid "ADB566D2-446C-109B-F5AD-95B9C74F1ACE"; +createNode nurbsCurve -n "arm_R0_eff2Shape" -p "arm_R0_eff"; + rename -uid "CE57D860-4A43-BEA9-B16F-02ACE02E0D47"; setAttr ".ihi" 0; setAttr -k off ".v"; setAttr ".ove" yes; @@ -8367,8 +8448,8 @@ createNode nurbsCurve -n "arm_R0_eff11Shape" -p "arm_R0_eff"; 0 0 0.25 0 0 -0.25 ; -createNode nurbsCurve -n "arm_R0_eff12Shape" -p "arm_R0_eff"; - rename -uid "F2B0BFD0-4526-227B-D0EF-479883C391B5"; +createNode nurbsCurve -n "arm_R0_eff3Shape" -p "arm_R0_eff"; + rename -uid "B223585D-432C-E393-43F4-49AA2EB2D4DB"; setAttr ".ihi" 0; setAttr -k off ".v"; setAttr ".ove" yes; @@ -8385,8 +8466,8 @@ createNode nurbsCurve -n "arm_R0_eff12Shape" -p "arm_R0_eff"; 0 -0.1875 0 -0.1875 0 0 ; -createNode nurbsCurve -n "arm_R0_eff12_0crvShape" -p "arm_R0_eff"; - rename -uid "F1E9CDB9-4441-8965-AC22-9C8CFD04AF61"; +createNode nurbsCurve -n "arm_R0_eff3_0crvShape" -p "arm_R0_eff"; + rename -uid "60B834D1-4BB1-D07B-AFE7-B49DCBAB9BDA"; setAttr ".ihi" 0; setAttr -k off ".v"; setAttr ".ove" yes; @@ -8403,8 +8484,8 @@ createNode nurbsCurve -n "arm_R0_eff12_0crvShape" -p "arm_R0_eff"; 0 0 -0.1875 -0.1875 0 0 ; -createNode nurbsCurve -n "arm_R0_eff12_1crvShape" -p "arm_R0_eff"; - rename -uid "F6D77D9A-4321-CEED-B2F4-83A5AE2A3C7D"; +createNode nurbsCurve -n "arm_R0_eff3_1crvShape" -p "arm_R0_eff"; + rename -uid "59C292E8-4F20-D9B5-A3AD-C5AEECCE75BC"; setAttr ".ihi" 0; setAttr -k off ".v"; setAttr ".ove" yes; @@ -8422,7 +8503,7 @@ createNode nurbsCurve -n "arm_R0_eff12_1crvShape" -p "arm_R0_eff"; 0 0 -0.1875 ; createNode transform -n "armUI_R0_root" -p "arm_R0_eff"; - rename -uid "54D5B0D3-4595-D06B-C3FF-49A5AB2E5F39"; + rename -uid "024CA370-43A9-FF73-FA09-A79906554BBE"; addAttr -ci true -sn "isGearGuide" -ln "isGearGuide" -dv 1 -min 0 -max 1 -at "bool"; addAttr -ci true -sn "comp_type" -ln "comp_type" -dt "string"; addAttr -ci true -sn "comp_name" -ln "comp_name" -dt "string"; @@ -8451,7 +8532,7 @@ createNode transform -n "armUI_R0_root" -p "arm_R0_eff"; addAttr -ci true -sn "useIndex" -ln "useIndex" -min 0 -max 1 -at "bool"; addAttr -ci true -sn "parentJointIndex" -ln "parentJointIndex" -at "long"; setAttr -k off -cb on ".v"; - setAttr ".t" -type "double3" -1.2124561875008171 0.56073114764518017 -0.29276117198398854 ; + setAttr ".t" -type "double3" -1.2124561875008082 0.56073114764518017 -0.29276117198398899 ; setAttr -k off -cb on ".tx"; setAttr -k off -cb on ".ty"; setAttr -k off -cb on ".tz"; @@ -8459,7 +8540,7 @@ createNode transform -n "armUI_R0_root" -p "arm_R0_eff"; setAttr -k off -cb on ".ry"; setAttr -k off -cb on ".rz"; setAttr -cb on ".ro"; - setAttr ".s" -type "double3" 1 1.0000000000000002 1.0000000000000011 ; + setAttr ".s" -type "double3" 1.0000000000000007 1.0000000000000002 1.0000000000000011 ; setAttr -k off -cb on ".sx"; setAttr -k off -cb on ".sy"; setAttr -k off -cb on ".sz"; @@ -8475,7 +8556,7 @@ createNode transform -n "armUI_R0_root" -p "arm_R0_eff"; setAttr ".ctlSize" 1; setAttr ".parentJointIndex" -1; createNode nurbsCurve -n "armUI_R0_rootShape" -p "armUI_R0_root"; - rename -uid "69D27EE2-4A84-2DEA-CEA4-3886153266FC"; + rename -uid "C976F8F1-444B-663D-F302-EE859FE09AE2"; setAttr ".ihi" 0; setAttr -k off ".v"; setAttr ".ove" yes; @@ -8487,8 +8568,8 @@ createNode nurbsCurve -n "armUI_R0_rootShape" -p "armUI_R0_root"; 0.25 0 0 -0.25 0 0 ; -createNode nurbsCurve -n "armUI_R0_root10Shape" -p "armUI_R0_root"; - rename -uid "4F79214D-41CE-466A-853F-D0AFEBC31AE9"; +createNode nurbsCurve -n "armUI_R0_root1Shape" -p "armUI_R0_root"; + rename -uid "C235AA3D-4ED7-14D5-095D-04895E3C8E2E"; setAttr ".ihi" 0; setAttr -k off ".v"; setAttr ".ove" yes; @@ -8500,8 +8581,8 @@ createNode nurbsCurve -n "armUI_R0_root10Shape" -p "armUI_R0_root"; 0 0.25 0 0 -0.25 0 ; -createNode nurbsCurve -n "armUI_R0_root11Shape" -p "armUI_R0_root"; - rename -uid "BE95065F-4761-0952-66D9-679577A4097D"; +createNode nurbsCurve -n "armUI_R0_root2Shape" -p "armUI_R0_root"; + rename -uid "180EEFAD-4C0D-739C-0B23-8F8D9C14F0DD"; setAttr ".ihi" 0; setAttr -k off ".v"; setAttr ".ove" yes; @@ -8513,8 +8594,8 @@ createNode nurbsCurve -n "armUI_R0_root11Shape" -p "armUI_R0_root"; 0 0 0.25 0 0 -0.25 ; -createNode nurbsCurve -n "armUI_R0_root12Shape" -p "armUI_R0_root"; - rename -uid "91C159D7-47F6-375D-3AB8-DE8E3FDB310A"; +createNode nurbsCurve -n "armUI_R0_root3Shape" -p "armUI_R0_root"; + rename -uid "86FB1B57-49A7-6D87-CBB0-6792036E744B"; setAttr ".ihi" 0; setAttr -k off ".v"; setAttr ".ove" yes; @@ -8541,24 +8622,24 @@ createNode nurbsCurve -n "armUI_R0_root12Shape" -p "armUI_R0_root"; -0.125 -0.125 -0.125 ; createNode transform -n "armUI_R0_sizeRef" -p "armUI_R0_root"; - rename -uid "76E00CEA-4189-6F0F-9E6A-07A8CA089422"; + rename -uid "84C5C054-49F1-5392-C728-8CA298E2F522"; addAttr -ci true -sn "isGearGuide" -ln "isGearGuide" -dv 1 -min 0 -max 1 -at "bool"; setAttr -k off -cb on ".v"; - setAttr ".t" -type "double3" 0.11347623085809433 -0.027001577630491269 1.0430060296210661 ; + setAttr ".t" -type "double3" 0.113476230858093 -0.027001577630489493 1.0430060296210659 ; setAttr -k off -cb on ".tx"; setAttr -k off -cb on ".ty"; setAttr -k off -cb on ".tz"; - setAttr ".r" -type "double3" 174.54691598541183 -3.3190804973696055 -134.6206758497523 ; + setAttr ".r" -type "double3" 5.4530840145881951 3.3190804973695962 45.379324150247719 ; setAttr -k off -cb on ".rx"; setAttr -k off -cb on ".ry"; setAttr -k off -cb on ".rz"; setAttr -cb on ".ro"; - setAttr ".s" -type "double3" 1.0495082267377429 1.049508226737738 -1.0495082267377398 ; + setAttr ".s" -type "double3" 1.0495082267377429 1.0495082267377378 1.0495082267377398 ; setAttr -k off -cb on ".sx"; setAttr -k off -cb on ".sy"; setAttr -k off -cb on ".sz"; createNode transform -n "meta_R0_root" -p "arm_R0_eff"; - rename -uid "75512256-461E-C923-F331-76909B40C1BF"; + rename -uid "A1485F64-4AA8-405F-C55C-589C96FD0059"; addAttr -ci true -sn "isGearGuide" -ln "isGearGuide" -dv 1 -min 0 -max 1 -at "bool"; addAttr -ci true -sn "comp_type" -ln "comp_type" -dt "string"; addAttr -ci true -sn "comp_name" -ln "comp_name" -dt "string"; @@ -8573,16 +8654,16 @@ createNode transform -n "meta_R0_root" -p "arm_R0_eff"; addAttr -ci true -sn "useIndex" -ln "useIndex" -min 0 -max 1 -at "bool"; addAttr -ci true -sn "parentJointIndex" -ln "parentJointIndex" -at "long"; setAttr -k off -cb on ".v"; - setAttr ".t" -type "double3" -1.0556240028445742 -0.075350553640975093 0.3529622528885028 ; + setAttr ".t" -type "double3" -1.0556240028445689 -0.075350553640973317 0.35296225288850258 ; setAttr -k off -cb on ".tx"; setAttr -k off -cb on ".ty"; setAttr -k off -cb on ".tz"; - setAttr ".r" -type "double3" 86.350349008867184 93.717381466937269 86.467960127478548 ; + setAttr ".r" -type "double3" 86.350349008866942 93.717381466937226 86.467960127478506 ; setAttr -k off -cb on ".rx"; setAttr -k off -cb on ".ry"; setAttr -k off -cb on ".rz"; setAttr -cb on ".ro"; - setAttr ".s" -type "double3" 0.30838721081716908 0.30838721081716913 0.30838721081716913 ; + setAttr ".s" -type "double3" 0.30838721081716924 0.30838721081716935 0.30838721081716952 ; setAttr -k off -cb on ".sx"; setAttr -k off -cb on ".sy"; setAttr -k off -cb on ".sz"; @@ -8597,7 +8678,7 @@ createNode transform -n "meta_R0_root" -p "arm_R0_eff"; setAttr ".intTranslation" yes; setAttr ".parentJointIndex" -1; createNode nurbsCurve -n "meta_R0_rootShape" -p "meta_R0_root"; - rename -uid "31867632-444C-ED87-3A38-EAB46A67ACD6"; + rename -uid "C7E71249-4F2D-931B-DDE9-D39C0897F0B3"; setAttr ".ihi" 0; setAttr -k off ".v"; setAttr ".ove" yes; @@ -8609,8 +8690,8 @@ createNode nurbsCurve -n "meta_R0_rootShape" -p "meta_R0_root"; 0.25 0 0 -0.25 0 0 ; -createNode nurbsCurve -n "meta_R0_root10Shape" -p "meta_R0_root"; - rename -uid "B5678D21-4FB4-05E3-9DE2-D0833C22508E"; +createNode nurbsCurve -n "meta_R0_root1Shape" -p "meta_R0_root"; + rename -uid "C765E849-4D92-A610-9442-949B52752973"; setAttr ".ihi" 0; setAttr -k off ".v"; setAttr ".ove" yes; @@ -8622,8 +8703,8 @@ createNode nurbsCurve -n "meta_R0_root10Shape" -p "meta_R0_root"; 0 0.25 0 0 -0.25 0 ; -createNode nurbsCurve -n "meta_R0_root11Shape" -p "meta_R0_root"; - rename -uid "A913896D-4195-946D-58DC-EA9682419007"; +createNode nurbsCurve -n "meta_R0_root2Shape" -p "meta_R0_root"; + rename -uid "E58E22A2-46C9-F51B-A32C-CDBA1A83049F"; setAttr ".ihi" 0; setAttr -k off ".v"; setAttr ".ove" yes; @@ -8635,8 +8716,8 @@ createNode nurbsCurve -n "meta_R0_root11Shape" -p "meta_R0_root"; 0 0 0.25 0 0 -0.25 ; -createNode nurbsCurve -n "meta_R0_root12Shape" -p "meta_R0_root"; - rename -uid "BDFCBA38-4319-C9D8-E322-D1B1BC39D13C"; +createNode nurbsCurve -n "meta_R0_root3Shape" -p "meta_R0_root"; + rename -uid "949C8EF9-4CFD-FE3C-CE50-CB9078AA33D5"; setAttr ".ihi" 0; setAttr -k off ".v"; setAttr ".ove" yes; @@ -8663,10 +8744,10 @@ createNode nurbsCurve -n "meta_R0_root12Shape" -p "meta_R0_root"; -0.125 -0.125 -0.125 ; createNode transform -n "meta_R0_0_loc" -p "meta_R0_root"; - rename -uid "A357D75A-429A-935C-588B-F780017230E7"; + rename -uid "16377A0D-4F0F-1DB5-B41E-DC88BD41D6EC"; addAttr -ci true -sn "isGearGuide" -ln "isGearGuide" -dv 1 -min 0 -max 1 -at "bool"; setAttr -k off -cb on ".v"; - setAttr ".t" -type "double3" 0.66320847353617562 -2.1316282072803006e-014 -3.5527136788005009e-015 ; + setAttr ".t" -type "double3" 0.66320847353617252 1.4210854715202004e-014 -2.8421709430404007e-014 ; setAttr -k off -cb on ".tx"; setAttr -k off -cb on ".ty"; setAttr -k off -cb on ".tz"; @@ -8674,12 +8755,12 @@ createNode transform -n "meta_R0_0_loc" -p "meta_R0_root"; setAttr -k off -cb on ".ry"; setAttr -k off -cb on ".rz"; setAttr -cb on ".ro"; - setAttr ".s" -type "double3" 1.0000000000000004 0.99999999999999967 1.0000000000000002 ; + setAttr ".s" -type "double3" 0.99999999999999922 0.99999999999999944 0.99999999999999856 ; setAttr -k off -cb on ".sx"; setAttr -k off -cb on ".sy"; setAttr -k off -cb on ".sz"; createNode nurbsCurve -n "meta_R0_0_locShape" -p "meta_R0_0_loc"; - rename -uid "6F019EEE-41F6-E0C0-53A3-41B8085EF946"; + rename -uid "8CD7B551-4A9A-882F-EAC2-47A5890FB2A6"; setAttr ".ihi" 0; setAttr -k off ".v"; setAttr ".ove" yes; @@ -8691,8 +8772,8 @@ createNode nurbsCurve -n "meta_R0_0_locShape" -p "meta_R0_0_loc"; 0.25 0 0 -0.25 0 0 ; -createNode nurbsCurve -n "meta_R0_0_loc10Shape" -p "meta_R0_0_loc"; - rename -uid "15E374F8-4761-F1FA-98BE-BFB5C004DBA4"; +createNode nurbsCurve -n "meta_R0_0_loc1Shape" -p "meta_R0_0_loc"; + rename -uid "D0D3DE5E-45E9-8CCF-F229-349FF49031FC"; setAttr ".ihi" 0; setAttr -k off ".v"; setAttr ".ove" yes; @@ -8704,8 +8785,8 @@ createNode nurbsCurve -n "meta_R0_0_loc10Shape" -p "meta_R0_0_loc"; 0 0.25 0 0 -0.25 0 ; -createNode nurbsCurve -n "meta_R0_0_loc11Shape" -p "meta_R0_0_loc"; - rename -uid "993C4757-4CCA-2250-68A7-75BC68EAE145"; +createNode nurbsCurve -n "meta_R0_0_loc2Shape" -p "meta_R0_0_loc"; + rename -uid "1DEBB17A-4EBA-6870-8A50-47B0640961F7"; setAttr ".ihi" 0; setAttr -k off ".v"; setAttr ".ove" yes; @@ -8717,8 +8798,8 @@ createNode nurbsCurve -n "meta_R0_0_loc11Shape" -p "meta_R0_0_loc"; 0 0 0.25 0 0 -0.25 ; -createNode nurbsCurve -n "meta_R0_0_loc12Shape" -p "meta_R0_0_loc"; - rename -uid "A724338A-453A-8D89-F0CC-F7A447B6ACD1"; +createNode nurbsCurve -n "meta_R0_0_loc3Shape" -p "meta_R0_0_loc"; + rename -uid "2DA418A7-4117-879C-C5D6-90B3842F78CA"; setAttr ".ihi" 0; setAttr -k off ".v"; setAttr ".ove" yes; @@ -8735,8 +8816,8 @@ createNode nurbsCurve -n "meta_R0_0_loc12Shape" -p "meta_R0_0_loc"; 0 -0.1875 0 -0.1875 0 0 ; -createNode nurbsCurve -n "meta_R0_0_loc12_0crvShape" -p "meta_R0_0_loc"; - rename -uid "63DDE021-448C-1222-5285-0A94BF8AD51F"; +createNode nurbsCurve -n "meta_R0_0_loc3_0crvShape" -p "meta_R0_0_loc"; + rename -uid "7A84B413-4E24-06EA-A3FF-5CBA89200FCB"; setAttr ".ihi" 0; setAttr -k off ".v"; setAttr ".ove" yes; @@ -8753,8 +8834,8 @@ createNode nurbsCurve -n "meta_R0_0_loc12_0crvShape" -p "meta_R0_0_loc"; 0 0 -0.1875 -0.1875 0 0 ; -createNode nurbsCurve -n "meta_R0_0_loc12_1crvShape" -p "meta_R0_0_loc"; - rename -uid "D42F27ED-4D47-096F-C102-5ABDBD3BC3DB"; +createNode nurbsCurve -n "meta_R0_0_loc3_1crvShape" -p "meta_R0_0_loc"; + rename -uid "5008D06C-4CD4-E293-DA69-77BA310583F1"; setAttr ".ihi" 0; setAttr -k off ".v"; setAttr ".ove" yes; @@ -8772,10 +8853,10 @@ createNode nurbsCurve -n "meta_R0_0_loc12_1crvShape" -p "meta_R0_0_loc"; 0 0 -0.1875 ; createNode transform -n "meta_R0_1_loc" -p "meta_R0_0_loc"; - rename -uid "E305A535-4EE6-2518-FA6B-878945ED086F"; + rename -uid "3410FAE8-45D1-DBBE-2567-04ACE61A2995"; addAttr -ci true -sn "isGearGuide" -ln "isGearGuide" -dv 1 -min 0 -max 1 -at "bool"; setAttr -k off -cb on ".v"; - setAttr ".t" -type "double3" 0.66320847353618095 3.5527136788005009e-014 -8.8817841970012523e-015 ; + setAttr ".t" -type "double3" 0.66320847353618451 0 1.2434497875801753e-014 ; setAttr -k off -cb on ".tx"; setAttr -k off -cb on ".ty"; setAttr -k off -cb on ".tz"; @@ -8783,12 +8864,12 @@ createNode transform -n "meta_R0_1_loc" -p "meta_R0_0_loc"; setAttr -k off -cb on ".ry"; setAttr -k off -cb on ".rz"; setAttr -cb on ".ro"; - setAttr ".s" -type "double3" 0.99999999999999967 1 1.0000000000000004 ; + setAttr ".s" -type "double3" 1 1.0000000000000004 1.0000000000000007 ; setAttr -k off -cb on ".sx"; setAttr -k off -cb on ".sy"; setAttr -k off -cb on ".sz"; createNode nurbsCurve -n "meta_R0_1_locShape" -p "meta_R0_1_loc"; - rename -uid "E3FBDFCF-4E97-54E6-0ABA-FCAE7A6E2735"; + rename -uid "4493D072-4021-82C8-7D59-C6A6C0540C8A"; setAttr ".ihi" 0; setAttr -k off ".v"; setAttr ".ove" yes; @@ -8800,8 +8881,8 @@ createNode nurbsCurve -n "meta_R0_1_locShape" -p "meta_R0_1_loc"; 0.25 0 0 -0.25 0 0 ; -createNode nurbsCurve -n "meta_R0_1_loc10Shape" -p "meta_R0_1_loc"; - rename -uid "A948031A-4546-329B-CC50-B789B5908F1B"; +createNode nurbsCurve -n "meta_R0_1_loc1Shape" -p "meta_R0_1_loc"; + rename -uid "1D6D3C32-498C-0D74-3117-B6AE20CADFCB"; setAttr ".ihi" 0; setAttr -k off ".v"; setAttr ".ove" yes; @@ -8813,8 +8894,8 @@ createNode nurbsCurve -n "meta_R0_1_loc10Shape" -p "meta_R0_1_loc"; 0 0.25 0 0 -0.25 0 ; -createNode nurbsCurve -n "meta_R0_1_loc11Shape" -p "meta_R0_1_loc"; - rename -uid "CF051AE8-4DDA-494F-02E4-1CA548DCF3A0"; +createNode nurbsCurve -n "meta_R0_1_loc2Shape" -p "meta_R0_1_loc"; + rename -uid "A1AF53F4-4BB7-DDF6-26D9-60B8EBDE3DF7"; setAttr ".ihi" 0; setAttr -k off ".v"; setAttr ".ove" yes; @@ -8826,8 +8907,8 @@ createNode nurbsCurve -n "meta_R0_1_loc11Shape" -p "meta_R0_1_loc"; 0 0 0.25 0 0 -0.25 ; -createNode nurbsCurve -n "meta_R0_1_loc12Shape" -p "meta_R0_1_loc"; - rename -uid "33851D11-4490-91CC-32DF-8D898247F0AB"; +createNode nurbsCurve -n "meta_R0_1_loc3Shape" -p "meta_R0_1_loc"; + rename -uid "AE3FA393-4507-4D31-3771-3F8C58459001"; setAttr ".ihi" 0; setAttr -k off ".v"; setAttr ".ove" yes; @@ -8844,8 +8925,8 @@ createNode nurbsCurve -n "meta_R0_1_loc12Shape" -p "meta_R0_1_loc"; 0 -0.1875 0 -0.1875 0 0 ; -createNode nurbsCurve -n "meta_R0_1_loc12_0crvShape" -p "meta_R0_1_loc"; - rename -uid "04A0FE69-4440-6313-970E-E9A71CEA9922"; +createNode nurbsCurve -n "meta_R0_1_loc3_0crvShape" -p "meta_R0_1_loc"; + rename -uid "504424C0-4E2F-28CF-1B3D-77BC3F4D44A4"; setAttr ".ihi" 0; setAttr -k off ".v"; setAttr ".ove" yes; @@ -8862,8 +8943,8 @@ createNode nurbsCurve -n "meta_R0_1_loc12_0crvShape" -p "meta_R0_1_loc"; 0 0 -0.1875 -0.1875 0 0 ; -createNode nurbsCurve -n "meta_R0_1_loc12_1crvShape" -p "meta_R0_1_loc"; - rename -uid "348DA87E-467D-96F4-1773-7CA64D510493"; +createNode nurbsCurve -n "meta_R0_1_loc3_1crvShape" -p "meta_R0_1_loc"; + rename -uid "AF811F8D-40AE-0A08-75C9-16B31C648FF6"; setAttr ".ihi" 0; setAttr -k off ".v"; setAttr ".ove" yes; @@ -8881,10 +8962,10 @@ createNode nurbsCurve -n "meta_R0_1_loc12_1crvShape" -p "meta_R0_1_loc"; 0 0 -0.1875 ; createNode transform -n "meta_R0_2_loc" -p "meta_R0_1_loc"; - rename -uid "3CC8B824-4B55-E3A2-C728-7D889941637A"; + rename -uid "9A8F6AD7-4D9E-6689-A7EA-099B5EEE33A0"; addAttr -ci true -sn "isGearGuide" -ln "isGearGuide" -dv 1 -min 0 -max 1 -at "bool"; setAttr -k off -cb on ".v"; - setAttr ".t" -type "double3" 0.66320847353618673 -7.1054273576010019e-015 -1.4210854715202004e-014 ; + setAttr ".t" -type "double3" 0.66320847353618317 1.4210854715202004e-014 -2.6645352591003757e-014 ; setAttr -k off -cb on ".tx"; setAttr -k off -cb on ".ty"; setAttr -k off -cb on ".tz"; @@ -8892,12 +8973,12 @@ createNode transform -n "meta_R0_2_loc" -p "meta_R0_1_loc"; setAttr -k off -cb on ".ry"; setAttr -k off -cb on ".rz"; setAttr -cb on ".ro"; - setAttr ".s" -type "double3" 1 1.0000000000000004 0.99999999999999911 ; + setAttr ".s" -type "double3" 0.99999999999999967 0.99999999999999944 0.99999999999999867 ; setAttr -k off -cb on ".sx"; setAttr -k off -cb on ".sy"; setAttr -k off -cb on ".sz"; createNode nurbsCurve -n "meta_R0_2_locShape" -p "meta_R0_2_loc"; - rename -uid "BE94C958-4E97-E39B-A5E4-918C673D7F9A"; + rename -uid "528F6120-4BAD-EBA4-634F-BA9985CC3B50"; setAttr ".ihi" 0; setAttr -k off ".v"; setAttr ".ove" yes; @@ -8909,8 +8990,8 @@ createNode nurbsCurve -n "meta_R0_2_locShape" -p "meta_R0_2_loc"; 0.25 0 0 -0.25 0 0 ; -createNode nurbsCurve -n "meta_R0_2_loc10Shape" -p "meta_R0_2_loc"; - rename -uid "0957809A-451A-0CAE-C8DA-95982E6BDE68"; +createNode nurbsCurve -n "meta_R0_2_loc1Shape" -p "meta_R0_2_loc"; + rename -uid "56E52CEB-4B0E-5F33-3F29-44822B2A90B4"; setAttr ".ihi" 0; setAttr -k off ".v"; setAttr ".ove" yes; @@ -8922,8 +9003,8 @@ createNode nurbsCurve -n "meta_R0_2_loc10Shape" -p "meta_R0_2_loc"; 0 0.25 0 0 -0.25 0 ; -createNode nurbsCurve -n "meta_R0_2_loc11Shape" -p "meta_R0_2_loc"; - rename -uid "B1C5ADEE-477A-B564-9F23-628BA01A9C56"; +createNode nurbsCurve -n "meta_R0_2_loc2Shape" -p "meta_R0_2_loc"; + rename -uid "B86651D4-47DC-4DF7-EC88-27A4D3283E15"; setAttr ".ihi" 0; setAttr -k off ".v"; setAttr ".ove" yes; @@ -8935,8 +9016,8 @@ createNode nurbsCurve -n "meta_R0_2_loc11Shape" -p "meta_R0_2_loc"; 0 0 0.25 0 0 -0.25 ; -createNode nurbsCurve -n "meta_R0_2_loc12Shape" -p "meta_R0_2_loc"; - rename -uid "C6088053-4BF5-5183-159F-28BCF3427976"; +createNode nurbsCurve -n "meta_R0_2_loc3Shape" -p "meta_R0_2_loc"; + rename -uid "72406A52-491A-2C1D-C6E7-6188E4F9AB23"; setAttr ".ihi" 0; setAttr -k off ".v"; setAttr ".ove" yes; @@ -8953,8 +9034,8 @@ createNode nurbsCurve -n "meta_R0_2_loc12Shape" -p "meta_R0_2_loc"; 0 -0.1875 0 -0.1875 0 0 ; -createNode nurbsCurve -n "meta_R0_2_loc12_0crvShape" -p "meta_R0_2_loc"; - rename -uid "025956CC-4A29-5A97-FCAD-B5B7F133DD9C"; +createNode nurbsCurve -n "meta_R0_2_loc3_0crvShape" -p "meta_R0_2_loc"; + rename -uid "2E334FB8-4592-6580-9B44-138B767D5A02"; setAttr ".ihi" 0; setAttr -k off ".v"; setAttr ".ove" yes; @@ -8971,8 +9052,8 @@ createNode nurbsCurve -n "meta_R0_2_loc12_0crvShape" -p "meta_R0_2_loc"; 0 0 -0.1875 -0.1875 0 0 ; -createNode nurbsCurve -n "meta_R0_2_loc12_1crvShape" -p "meta_R0_2_loc"; - rename -uid "843CB1D5-4F1A-88B3-79AE-5491C776A354"; +createNode nurbsCurve -n "meta_R0_2_loc3_1crvShape" -p "meta_R0_2_loc"; + rename -uid "C133ACFB-4373-C06D-06A2-1095AD36C008"; setAttr ".ihi" 0; setAttr -k off ".v"; setAttr ".ove" yes; @@ -8990,7 +9071,7 @@ createNode nurbsCurve -n "meta_R0_2_loc12_1crvShape" -p "meta_R0_2_loc"; 0 0 -0.1875 ; createNode transform -n "finger_R3_root" -p "meta_R0_2_loc"; - rename -uid "CDB913A2-474F-EB8D-5F8D-27BFD8025ED1"; + rename -uid "F19967AE-4A3F-4542-47C3-36A4ECBABE29"; addAttr -ci true -sn "isGearGuide" -ln "isGearGuide" -dv 1 -min 0 -max 1 -at "bool"; addAttr -ci true -sn "comp_type" -ln "comp_type" -dt "string"; addAttr -ci true -sn "comp_name" -ln "comp_name" -dt "string"; @@ -9006,16 +9087,16 @@ createNode transform -n "finger_R3_root" -p "meta_R0_2_loc"; addAttr -ci true -sn "useIndex" -ln "useIndex" -min 0 -max 1 -at "bool"; addAttr -ci true -sn "parentJointIndex" -ln "parentJointIndex" -at "long"; setAttr -k off -cb on ".v"; - setAttr ".t" -type "double3" 0.27518484001103305 -0.17360051577779956 2.4946799341790555 ; + setAttr ".t" -type "double3" 0.27518484001103438 -0.17360051577779245 2.494679934179052 ; setAttr -k off -cb on ".tx"; setAttr -k off -cb on ".ty"; setAttr -k off -cb on ".tz"; - setAttr ".r" -type "double3" 5.4173319878585096 -68.587073855452374 -5.8163374181194527 ; + setAttr ".r" -type "double3" 5.4173319878591917 -68.587073855452445 -5.8163374181200611 ; setAttr -k off -cb on ".rx"; setAttr -k off -cb on ".ry"; setAttr -k off -cb on ".rz"; setAttr -cb on ".ro"; - setAttr ".s" -type "double3" 1.292966824566181 1.292966824566179 1.2929668245661803 ; + setAttr ".s" -type "double3" 1.2929668245661805 1.292966824566179 1.2929668245661805 ; setAttr -k off -cb on ".sx"; setAttr -k off -cb on ".sy"; setAttr -k off -cb on ".sz"; @@ -9031,7 +9112,7 @@ createNode transform -n "finger_R3_root" -p "meta_R0_2_loc"; setAttr ".ikrefarray" -type "string" ""; setAttr ".parentJointIndex" -1; createNode nurbsCurve -n "finger_R3_rootShape" -p "finger_R3_root"; - rename -uid "E0ED0A5C-441B-E53D-EBA4-538DFBFDB854"; + rename -uid "C256E0FB-419C-D5E6-A3D5-2DA57D240DD0"; setAttr ".ihi" 0; setAttr -k off ".v"; setAttr ".ove" yes; @@ -9043,8 +9124,8 @@ createNode nurbsCurve -n "finger_R3_rootShape" -p "finger_R3_root"; 0.25 0 0 -0.25 0 0 ; -createNode nurbsCurve -n "finger_R3_root10Shape" -p "finger_R3_root"; - rename -uid "38AA28E4-42AC-584A-A501-FA8F53DADFF8"; +createNode nurbsCurve -n "finger_R3_root1Shape" -p "finger_R3_root"; + rename -uid "7D46B728-4AF7-57CA-3826-94BA3D59B0ED"; setAttr ".ihi" 0; setAttr -k off ".v"; setAttr ".ove" yes; @@ -9056,8 +9137,8 @@ createNode nurbsCurve -n "finger_R3_root10Shape" -p "finger_R3_root"; 0 0.25 0 0 -0.25 0 ; -createNode nurbsCurve -n "finger_R3_root11Shape" -p "finger_R3_root"; - rename -uid "87DDD11A-4560-B232-2DFD-0B8495D9B0DE"; +createNode nurbsCurve -n "finger_R3_root2Shape" -p "finger_R3_root"; + rename -uid "818A8679-4C95-5EB7-9A01-2EA0599BAA76"; setAttr ".ihi" 0; setAttr -k off ".v"; setAttr ".ove" yes; @@ -9069,8 +9150,8 @@ createNode nurbsCurve -n "finger_R3_root11Shape" -p "finger_R3_root"; 0 0 0.25 0 0 -0.25 ; -createNode nurbsCurve -n "finger_R3_root12Shape" -p "finger_R3_root"; - rename -uid "B2B41A9F-46F1-351C-E252-C481B175337C"; +createNode nurbsCurve -n "finger_R3_root3Shape" -p "finger_R3_root"; + rename -uid "7643BB39-4735-B5B3-5329-2489FD8B4500"; setAttr ".ihi" 0; setAttr -k off ".v"; setAttr ".ove" yes; @@ -9097,10 +9178,10 @@ createNode nurbsCurve -n "finger_R3_root12Shape" -p "finger_R3_root"; -0.125 -0.125 -0.125 ; createNode transform -n "finger_R3_0_loc" -p "finger_R3_root"; - rename -uid "267D16BF-43B8-2E61-5D15-C7A73E4FBEC1"; + rename -uid "F08F9F7E-4DE8-1FDB-4461-21AB6529BD84"; addAttr -ci true -sn "isGearGuide" -ln "isGearGuide" -dv 1 -min 0 -max 1 -at "bool"; setAttr -k off -cb on ".v"; - setAttr ".t" -type "double3" 0.84766209830561579 2.8421709430404007e-014 -5.1070259132757201e-015 ; + setAttr ".t" -type "double3" 0.84766209830561756 2.1316282072803006e-014 -4.4408920985006262e-015 ; setAttr -k off -cb on ".tx"; setAttr -k off -cb on ".ty"; setAttr -k off -cb on ".tz"; @@ -9108,12 +9189,11 @@ createNode transform -n "finger_R3_0_loc" -p "finger_R3_root"; setAttr -k off -cb on ".ry"; setAttr -k off -cb on ".rz"; setAttr -cb on ".ro"; - setAttr ".s" -type "double3" 0.99999999999999967 0.99999999999999956 1.0000000000000011 ; setAttr -k off -cb on ".sx"; setAttr -k off -cb on ".sy"; setAttr -k off -cb on ".sz"; createNode nurbsCurve -n "finger_R3_0_locShape" -p "finger_R3_0_loc"; - rename -uid "CA204D0E-4433-700F-0B42-52A702811C36"; + rename -uid "6B56ACDF-443F-0E24-4221-25B98E2FC248"; setAttr ".ihi" 0; setAttr -k off ".v"; setAttr ".ove" yes; @@ -9125,8 +9205,8 @@ createNode nurbsCurve -n "finger_R3_0_locShape" -p "finger_R3_0_loc"; 0.25 0 0 -0.25 0 0 ; -createNode nurbsCurve -n "finger_R3_0_loc10Shape" -p "finger_R3_0_loc"; - rename -uid "266A8D3E-4201-859A-AA59-539E2A0681A2"; +createNode nurbsCurve -n "finger_R3_0_loc1Shape" -p "finger_R3_0_loc"; + rename -uid "1428CEA8-41C1-1C13-8020-8ABC40F73280"; setAttr ".ihi" 0; setAttr -k off ".v"; setAttr ".ove" yes; @@ -9138,8 +9218,8 @@ createNode nurbsCurve -n "finger_R3_0_loc10Shape" -p "finger_R3_0_loc"; 0 0.25 0 0 -0.25 0 ; -createNode nurbsCurve -n "finger_R3_0_loc11Shape" -p "finger_R3_0_loc"; - rename -uid "FB9B8944-4C30-E553-BEDF-FFA10B48270A"; +createNode nurbsCurve -n "finger_R3_0_loc2Shape" -p "finger_R3_0_loc"; + rename -uid "B2DD461C-415F-B06E-C381-FFB6AFAE15CF"; setAttr ".ihi" 0; setAttr -k off ".v"; setAttr ".ove" yes; @@ -9151,8 +9231,8 @@ createNode nurbsCurve -n "finger_R3_0_loc11Shape" -p "finger_R3_0_loc"; 0 0 0.25 0 0 -0.25 ; -createNode nurbsCurve -n "finger_R3_0_loc12Shape" -p "finger_R3_0_loc"; - rename -uid "D8130D16-4541-B07E-B278-F1B17BE846A8"; +createNode nurbsCurve -n "finger_R3_0_loc3Shape" -p "finger_R3_0_loc"; + rename -uid "CE7CA5D8-4B8F-7BDD-EAEB-4AACA8CF0CFC"; setAttr ".ihi" 0; setAttr -k off ".v"; setAttr ".ove" yes; @@ -9169,8 +9249,8 @@ createNode nurbsCurve -n "finger_R3_0_loc12Shape" -p "finger_R3_0_loc"; 0 -0.1875 0 -0.1875 0 0 ; -createNode nurbsCurve -n "finger_R3_0_loc12_0crvShape" -p "finger_R3_0_loc"; - rename -uid "072DCF7F-4AF2-F2ED-C63C-1BB6CF98A1E0"; +createNode nurbsCurve -n "finger_R3_0_loc3_0crvShape" -p "finger_R3_0_loc"; + rename -uid "C22BCEE9-40C0-352B-E9DA-19B25979CE92"; setAttr ".ihi" 0; setAttr -k off ".v"; setAttr ".ove" yes; @@ -9187,8 +9267,8 @@ createNode nurbsCurve -n "finger_R3_0_loc12_0crvShape" -p "finger_R3_0_loc"; 0 0 -0.1875 -0.1875 0 0 ; -createNode nurbsCurve -n "finger_R3_0_loc12_1crvShape" -p "finger_R3_0_loc"; - rename -uid "9A0465AA-492E-0E7E-2EE0-C68C4D40A0CB"; +createNode nurbsCurve -n "finger_R3_0_loc3_1crvShape" -p "finger_R3_0_loc"; + rename -uid "CDDFA705-4DA2-E058-3E90-AD9991D88582"; setAttr ".ihi" 0; setAttr -k off ".v"; setAttr ".ove" yes; @@ -9206,10 +9286,10 @@ createNode nurbsCurve -n "finger_R3_0_loc12_1crvShape" -p "finger_R3_0_loc"; 0 0 -0.1875 ; createNode transform -n "finger_R3_1_loc" -p "finger_R3_0_loc"; - rename -uid "13C32413-4F38-9365-58A0-44B266CB4B53"; + rename -uid "8F013ED6-460E-6181-152E-498AD0A01CFE"; addAttr -ci true -sn "isGearGuide" -ln "isGearGuide" -dv 1 -min 0 -max 1 -at "bool"; setAttr -k off -cb on ".v"; - setAttr ".t" -type "double3" 0.57524361070875241 3.5527136788005009e-015 4.4408920985006262e-015 ; + setAttr ".t" -type "double3" 0.57524361070876662 -2.1316282072803006e-014 -2.2204460492503131e-016 ; setAttr -k off -cb on ".tx"; setAttr -k off -cb on ".ty"; setAttr -k off -cb on ".tz"; @@ -9217,12 +9297,12 @@ createNode transform -n "finger_R3_1_loc" -p "finger_R3_0_loc"; setAttr -k off -cb on ".ry"; setAttr -k off -cb on ".rz"; setAttr -cb on ".ro"; - setAttr ".s" -type "double3" 1.0000000000000004 0.99999999999999956 1.0000000000000004 ; + setAttr ".s" -type "double3" 1 0.99999999999999933 1.0000000000000002 ; setAttr -k off -cb on ".sx"; setAttr -k off -cb on ".sy"; setAttr -k off -cb on ".sz"; createNode nurbsCurve -n "finger_R3_1_locShape" -p "finger_R3_1_loc"; - rename -uid "6572AA92-47D6-2661-D4B1-969835F09922"; + rename -uid "48BD07E2-4382-32D6-AE28-259C03C78A81"; setAttr ".ihi" 0; setAttr -k off ".v"; setAttr ".ove" yes; @@ -9234,8 +9314,8 @@ createNode nurbsCurve -n "finger_R3_1_locShape" -p "finger_R3_1_loc"; 0.25 0 0 -0.25 0 0 ; -createNode nurbsCurve -n "finger_R3_1_loc10Shape" -p "finger_R3_1_loc"; - rename -uid "5958DE14-48B7-E176-1499-EABDC5278404"; +createNode nurbsCurve -n "finger_R3_1_loc1Shape" -p "finger_R3_1_loc"; + rename -uid "8AAF8940-4595-495F-65B6-5BBD21D7A66B"; setAttr ".ihi" 0; setAttr -k off ".v"; setAttr ".ove" yes; @@ -9247,8 +9327,8 @@ createNode nurbsCurve -n "finger_R3_1_loc10Shape" -p "finger_R3_1_loc"; 0 0.25 0 0 -0.25 0 ; -createNode nurbsCurve -n "finger_R3_1_loc11Shape" -p "finger_R3_1_loc"; - rename -uid "BFC58D99-4842-0083-C2F8-0C8E618B6CA3"; +createNode nurbsCurve -n "finger_R3_1_loc2Shape" -p "finger_R3_1_loc"; + rename -uid "22B035F8-4B34-1E22-C90C-0CBA3B76D811"; setAttr ".ihi" 0; setAttr -k off ".v"; setAttr ".ove" yes; @@ -9260,8 +9340,8 @@ createNode nurbsCurve -n "finger_R3_1_loc11Shape" -p "finger_R3_1_loc"; 0 0 0.25 0 0 -0.25 ; -createNode nurbsCurve -n "finger_R3_1_loc12Shape" -p "finger_R3_1_loc"; - rename -uid "99027AE2-4049-AA76-39CF-478B57A3BC2F"; +createNode nurbsCurve -n "finger_R3_1_loc3Shape" -p "finger_R3_1_loc"; + rename -uid "C035B198-4369-2D53-985A-ABA4EE59A5B3"; setAttr ".ihi" 0; setAttr -k off ".v"; setAttr ".ove" yes; @@ -9278,8 +9358,8 @@ createNode nurbsCurve -n "finger_R3_1_loc12Shape" -p "finger_R3_1_loc"; 0 -0.1875 0 -0.1875 0 0 ; -createNode nurbsCurve -n "finger_R3_1_loc12_0crvShape" -p "finger_R3_1_loc"; - rename -uid "01AA1D38-4FA2-67A9-6117-A78D3FA4935F"; +createNode nurbsCurve -n "finger_R3_1_loc3_0crvShape" -p "finger_R3_1_loc"; + rename -uid "8F40B3B2-4FA1-EA73-2128-1FBA9FB45445"; setAttr ".ihi" 0; setAttr -k off ".v"; setAttr ".ove" yes; @@ -9296,8 +9376,8 @@ createNode nurbsCurve -n "finger_R3_1_loc12_0crvShape" -p "finger_R3_1_loc"; 0 0 -0.1875 -0.1875 0 0 ; -createNode nurbsCurve -n "finger_R3_1_loc12_1crvShape" -p "finger_R3_1_loc"; - rename -uid "22A03EB2-429A-4513-442C-CB997D7B1EA1"; +createNode nurbsCurve -n "finger_R3_1_loc3_1crvShape" -p "finger_R3_1_loc"; + rename -uid "CE053136-4DAE-0375-F929-8E96E5F2D1C4"; setAttr ".ihi" 0; setAttr -k off ".v"; setAttr ".ove" yes; @@ -9315,10 +9395,10 @@ createNode nurbsCurve -n "finger_R3_1_loc12_1crvShape" -p "finger_R3_1_loc"; 0 0 -0.1875 ; createNode transform -n "finger_R3_2_loc" -p "finger_R3_1_loc"; - rename -uid "7C41078C-4ACE-0D1A-BDF1-A2BDE3BEF470"; + rename -uid "E8873F63-4740-3638-8829-D19E9B0379C5"; addAttr -ci true -sn "isGearGuide" -ln "isGearGuide" -dv 1 -min 0 -max 1 -at "bool"; setAttr -k off -cb on ".v"; - setAttr ".t" -type "double3" 0.31616177259195322 3.5527136788005009e-015 1.3322676295501878e-015 ; + setAttr ".t" -type "double3" 0.31616177259193545 0 0 ; setAttr -k off -cb on ".tx"; setAttr -k off -cb on ".ty"; setAttr -k off -cb on ".tz"; @@ -9326,12 +9406,12 @@ createNode transform -n "finger_R3_2_loc" -p "finger_R3_1_loc"; setAttr -k off -cb on ".ry"; setAttr -k off -cb on ".rz"; setAttr -cb on ".ro"; - setAttr ".s" -type "double3" 0.99999999999999989 1.0000000000000007 1 ; + setAttr ".s" -type "double3" 0.99999999999999956 1.0000000000000018 1.0000000000000004 ; setAttr -k off -cb on ".sx"; setAttr -k off -cb on ".sy"; setAttr -k off -cb on ".sz"; createNode nurbsCurve -n "finger_R3_2_locShape" -p "finger_R3_2_loc"; - rename -uid "0A24C39F-4D46-6D73-B642-208CB010F531"; + rename -uid "F83E85A5-49CD-6C0F-45E6-E58E390DB3EF"; setAttr ".ihi" 0; setAttr -k off ".v"; setAttr ".ove" yes; @@ -9343,8 +9423,8 @@ createNode nurbsCurve -n "finger_R3_2_locShape" -p "finger_R3_2_loc"; 0.25 0 0 -0.25 0 0 ; -createNode nurbsCurve -n "finger_R3_2_loc10Shape" -p "finger_R3_2_loc"; - rename -uid "D0CF8017-4D5D-CA8C-B534-F7A4C86E79F8"; +createNode nurbsCurve -n "finger_R3_2_loc1Shape" -p "finger_R3_2_loc"; + rename -uid "B8BD9840-4E29-2647-A850-B881A2E4424F"; setAttr ".ihi" 0; setAttr -k off ".v"; setAttr ".ove" yes; @@ -9356,8 +9436,8 @@ createNode nurbsCurve -n "finger_R3_2_loc10Shape" -p "finger_R3_2_loc"; 0 0.25 0 0 -0.25 0 ; -createNode nurbsCurve -n "finger_R3_2_loc11Shape" -p "finger_R3_2_loc"; - rename -uid "3DFEA4CF-444D-1D49-1763-54A0F8D805B5"; +createNode nurbsCurve -n "finger_R3_2_loc2Shape" -p "finger_R3_2_loc"; + rename -uid "032CC153-4AC2-C534-76B3-9A8969D9768F"; setAttr ".ihi" 0; setAttr -k off ".v"; setAttr ".ove" yes; @@ -9369,8 +9449,8 @@ createNode nurbsCurve -n "finger_R3_2_loc11Shape" -p "finger_R3_2_loc"; 0 0 0.25 0 0 -0.25 ; -createNode nurbsCurve -n "finger_R3_2_loc12Shape" -p "finger_R3_2_loc"; - rename -uid "18C1DA05-466A-D9DE-B6E1-A7A453211520"; +createNode nurbsCurve -n "finger_R3_2_loc3Shape" -p "finger_R3_2_loc"; + rename -uid "FF6B0303-42EC-E0D3-5621-2BAF2C3733F8"; setAttr ".ihi" 0; setAttr -k off ".v"; setAttr ".ove" yes; @@ -9387,8 +9467,8 @@ createNode nurbsCurve -n "finger_R3_2_loc12Shape" -p "finger_R3_2_loc"; 0 -0.1875 0 -0.1875 0 0 ; -createNode nurbsCurve -n "finger_R3_2_loc12_0crvShape" -p "finger_R3_2_loc"; - rename -uid "F79D126D-40E3-2FA0-1730-4E9B42C43243"; +createNode nurbsCurve -n "finger_R3_2_loc3_0crvShape" -p "finger_R3_2_loc"; + rename -uid "35028EF3-43FF-1D95-B066-00A82CE1BF1C"; setAttr ".ihi" 0; setAttr -k off ".v"; setAttr ".ove" yes; @@ -9405,8 +9485,8 @@ createNode nurbsCurve -n "finger_R3_2_loc12_0crvShape" -p "finger_R3_2_loc"; 0 0 -0.1875 -0.1875 0 0 ; -createNode nurbsCurve -n "finger_R3_2_loc12_1crvShape" -p "finger_R3_2_loc"; - rename -uid "9753C681-4D95-5D99-F52A-8CAC3478A974"; +createNode nurbsCurve -n "finger_R3_2_loc3_1crvShape" -p "finger_R3_2_loc"; + rename -uid "8B2F5D71-4A5D-0496-B3BE-0D8909E16A16"; setAttr ".ihi" 0; setAttr -k off ".v"; setAttr ".ove" yes; @@ -9424,7 +9504,7 @@ createNode nurbsCurve -n "finger_R3_2_loc12_1crvShape" -p "finger_R3_2_loc"; 0 0 -0.1875 ; createNode transform -n "finger_R3_blade" -p "finger_R3_root"; - rename -uid "1EDCCFB8-4F6E-5C79-0BCB-C18181CBFB60"; + rename -uid "1003E04C-4513-E677-F3FA-17896D811405"; addAttr -ci true -k true -sn "bladeRollOffset" -ln "bladeRollOffset" -at "float"; setAttr -l on -k off -cb on ".v"; setAttr -k off -cb on ".tx"; @@ -9434,13 +9514,12 @@ createNode transform -n "finger_R3_blade" -p "finger_R3_root"; setAttr -k off -cb on ".ry"; setAttr -k off -cb on ".rz"; setAttr -cb on ".ro"; - setAttr ".s" -type "double3" 0.99999999999999967 0.99999999999999956 1.0000000000000011 ; setAttr -l on -k off -cb on ".sx"; setAttr -l on -k off -cb on ".sy"; setAttr -l on -k off -cb on ".sz"; setAttr -k on ".bladeRollOffset"; createNode nurbsCurve -n "finger_R3_bladeShape" -p "finger_R3_blade"; - rename -uid "2D4BFB92-4195-B347-EEA4-12A29285EE95"; + rename -uid "6F090738-4763-9846-23C1-CB9CB5303B7E"; setAttr ".ihi" 0; setAttr -k off ".v"; setAttr ".ove" yes; @@ -9450,12 +9529,12 @@ createNode nurbsCurve -n "finger_R3_bladeShape" -p "finger_R3_blade"; 4 0 1 2 3 4 0 0 0 - 0.77578009473970855 0 0 - 0 0.2585933649132362 0 + 0.77578009473970833 0 0 + 0 0.25859336491323609 0 0 0 0 ; -createNode aimConstraint -n "finger_R3_blade_aimConstraint4" -p "finger_R3_blade"; - rename -uid "2DAC94BB-4278-6EBD-1F2C-348ABCD1AF96"; +createNode aimConstraint -n "finger_R3_blade_aimConstraint1" -p "finger_R3_blade"; + rename -uid "1867BDF2-4423-27A8-9A61-E49D39E52DE1"; addAttr -dcb 0 -ci true -sn "w0" -ln "finger_R3_0_locW0" -dv 1 -at "double"; setAttr -k on ".nds"; setAttr -k off ".v"; @@ -9471,8 +9550,8 @@ createNode aimConstraint -n "finger_R3_blade_aimConstraint4" -p "finger_R3_blade setAttr ".erp" yes; setAttr ".wut" 2; setAttr -k on ".w0"; -createNode pointConstraint -n "finger_R3_blade_pointConstraint4" -p "finger_R3_blade"; - rename -uid "85715AA2-4AC0-FCAA-C57D-65B933E14A10"; +createNode pointConstraint -n "finger_R3_blade_pointConstraint1" -p "finger_R3_blade"; + rename -uid "FC169F02-40F6-FBF6-2800-9097818DCF41"; addAttr -dcb 0 -ci true -k true -sn "w0" -ln "finger_R3_rootW0" -dv 1 -min 0 -at "double"; setAttr -k on ".nds"; setAttr -k off ".v"; @@ -9486,22 +9565,22 @@ createNode pointConstraint -n "finger_R3_blade_pointConstraint4" -p "finger_R3_b setAttr -k off ".sy"; setAttr -k off ".sz"; setAttr ".erp" yes; - setAttr ".rst" -type "double3" 0 0 -2.2204460492503131e-016 ; + setAttr ".rst" -type "double3" 1.7763568394002505e-015 3.5527136788005009e-015 4.4408920985006262e-016 ; setAttr -k on ".w0"; createNode transform -n "finger_R3_crv" -p "finger_R3_root"; - rename -uid "23997B5B-44EE-57E1-0CAF-5BA11380EF79"; + rename -uid "3CDF3969-49B5-AAC9-C922-0C80D76BB59C"; setAttr ".ovdt" 1; setAttr ".ove" yes; - setAttr ".t" -type "double3" 8.1560938646754249 -29.032786855763426 1.4804327725048669 ; - setAttr ".r" -type "double3" 7.579166539414615 165.69575562109907 49.348303523761878 ; - setAttr ".s" -type "double3" 2.6320983106786127 2.6320983106786007 -2.6320983106786078 ; + setAttr ".t" -type "double3" 8.1560938646754479 -29.032786855763447 1.4804327725048685 ; + setAttr ".r" -type "double3" 7.5791665394145138 165.69575562109918 49.348303523761878 ; + setAttr ".s" -type "double3" 2.632098310678614 2.6320983106786016 -2.6320983106786078 ; createNode nurbsCurve -n "finger_R3_crvShape" -p "finger_R3_crv"; - rename -uid "C9DF6CCD-4B1F-37C2-166C-BBA926D67CA8"; + rename -uid "82EEB436-48A9-9859-1715-5E888349E41F"; setAttr -k off ".v"; setAttr -s 4 ".iog[0].og"; setAttr ".tw" yes; createNode nurbsCurve -n "finger_R3_crvShapeOrig" -p "finger_R3_crv"; - rename -uid "5431176B-4416-52FA-D7C4-208D4CABA93F"; + rename -uid "B5F2554F-4E3F-92ED-5906-F28FA2246C3E"; setAttr -k off ".v"; setAttr ".io" yes; setAttr ".cc" -type "nurbsCurve" @@ -9514,7 +9593,7 @@ createNode nurbsCurve -n "finger_R3_crvShapeOrig" -p "finger_R3_crv"; 0 0 0 ; createNode transform -n "finger_R2_root" -p "meta_R0_1_loc"; - rename -uid "C30E45C8-4433-3F21-9627-0FBDFDDF7AEC"; + rename -uid "D80A5A88-4211-7031-22C4-6FB9B8C52671"; addAttr -ci true -sn "isGearGuide" -ln "isGearGuide" -dv 1 -min 0 -max 1 -at "bool"; addAttr -ci true -sn "comp_type" -ln "comp_type" -dt "string"; addAttr -ci true -sn "comp_name" -ln "comp_name" -dt "string"; @@ -9530,16 +9609,16 @@ createNode transform -n "finger_R2_root" -p "meta_R0_1_loc"; addAttr -ci true -sn "useIndex" -ln "useIndex" -min 0 -max 1 -at "bool"; addAttr -ci true -sn "parentJointIndex" -ln "parentJointIndex" -at "long"; setAttr -k off -cb on ".v"; - setAttr ".t" -type "double3" 0.21404201232122322 -0.17620518664706708 2.8414845756647473 ; + setAttr ".t" -type "double3" 0.21404201232122322 -0.17620518664705287 2.8414845756647278 ; setAttr -k off -cb on ".tx"; setAttr -k off -cb on ".ty"; setAttr -k off -cb on ".tz"; - setAttr ".r" -type "double3" 19.114415121373995 -82.086889237978767 -14.829711404954789 ; + setAttr ".r" -type "double3" 19.114415121375906 -82.086889237978653 -14.829711404956601 ; setAttr -k off -cb on ".rx"; setAttr -k off -cb on ".ry"; setAttr -k off -cb on ".rz"; setAttr -cb on ".ro"; - setAttr ".s" -type "double3" 1.2929668245661798 1.2929668245661794 1.2929668245661805 ; + setAttr ".s" -type "double3" 1.292966824566179 1.2929668245661785 1.2929668245661796 ; setAttr -k off -cb on ".sx"; setAttr -k off -cb on ".sy"; setAttr -k off -cb on ".sz"; @@ -9555,7 +9634,7 @@ createNode transform -n "finger_R2_root" -p "meta_R0_1_loc"; setAttr ".ikrefarray" -type "string" ""; setAttr ".parentJointIndex" -1; createNode nurbsCurve -n "finger_R2_rootShape" -p "finger_R2_root"; - rename -uid "C3F85167-4BE0-FBF5-23D9-3BBE1729628B"; + rename -uid "73EA0D0A-4AB7-1528-9412-3BB9AEC88392"; setAttr ".ihi" 0; setAttr -k off ".v"; setAttr ".ove" yes; @@ -9567,8 +9646,8 @@ createNode nurbsCurve -n "finger_R2_rootShape" -p "finger_R2_root"; 0.25 0 0 -0.25 0 0 ; -createNode nurbsCurve -n "finger_R2_root10Shape" -p "finger_R2_root"; - rename -uid "8CEDAEE3-41A3-E474-B750-CAAE960997C9"; +createNode nurbsCurve -n "finger_R2_root1Shape" -p "finger_R2_root"; + rename -uid "AA6E83C8-433E-3D88-9BBB-B397C00B0171"; setAttr ".ihi" 0; setAttr -k off ".v"; setAttr ".ove" yes; @@ -9580,8 +9659,8 @@ createNode nurbsCurve -n "finger_R2_root10Shape" -p "finger_R2_root"; 0 0.25 0 0 -0.25 0 ; -createNode nurbsCurve -n "finger_R2_root11Shape" -p "finger_R2_root"; - rename -uid "7626F18F-40AC-CFC9-04CF-14846C4CC99A"; +createNode nurbsCurve -n "finger_R2_root2Shape" -p "finger_R2_root"; + rename -uid "57BC1887-4A79-CE15-6033-FAAABFB1CC57"; setAttr ".ihi" 0; setAttr -k off ".v"; setAttr ".ove" yes; @@ -9593,8 +9672,8 @@ createNode nurbsCurve -n "finger_R2_root11Shape" -p "finger_R2_root"; 0 0 0.25 0 0 -0.25 ; -createNode nurbsCurve -n "finger_R2_root12Shape" -p "finger_R2_root"; - rename -uid "D994AA6B-4067-E2B5-C699-698F52C49FFB"; +createNode nurbsCurve -n "finger_R2_root3Shape" -p "finger_R2_root"; + rename -uid "992D5119-4B27-2B93-0909-37920BA8268E"; setAttr ".ihi" 0; setAttr -k off ".v"; setAttr ".ove" yes; @@ -9621,10 +9700,10 @@ createNode nurbsCurve -n "finger_R2_root12Shape" -p "finger_R2_root"; -0.125 -0.125 -0.125 ; createNode transform -n "finger_R2_0_loc" -p "finger_R2_root"; - rename -uid "53A5B975-4934-5DB2-2961-1ABDA9ADA63B"; + rename -uid "BB622FF6-4645-00D3-7EED-EBABF8BCC145"; addAttr -ci true -sn "isGearGuide" -ln "isGearGuide" -dv 1 -min 0 -max 1 -at "bool"; setAttr -k off -cb on ".v"; - setAttr ".t" -type "double3" 0.94501387217406485 -1.0658141036401503e-014 0 ; + setAttr ".t" -type "double3" 0.9450138721740764 -2.1316282072803006e-014 3.5527136788005009e-015 ; setAttr -k off -cb on ".tx"; setAttr -k off -cb on ".ty"; setAttr -k off -cb on ".tz"; @@ -9632,12 +9711,12 @@ createNode transform -n "finger_R2_0_loc" -p "finger_R2_root"; setAttr -k off -cb on ".ry"; setAttr -k off -cb on ".rz"; setAttr -cb on ".ro"; - setAttr ".s" -type "double3" 0.99999999999999922 1.0000000000000002 1 ; + setAttr ".s" -type "double3" 1.0000000000000004 1.0000000000000009 1.0000000000000007 ; setAttr -k off -cb on ".sx"; setAttr -k off -cb on ".sy"; setAttr -k off -cb on ".sz"; createNode nurbsCurve -n "finger_R2_0_locShape" -p "finger_R2_0_loc"; - rename -uid "8C9E084B-4D1A-2BEF-3C04-45B25BD7214D"; + rename -uid "6FD4EB1A-47E8-07C2-9530-E1B02B10E4FA"; setAttr ".ihi" 0; setAttr -k off ".v"; setAttr ".ove" yes; @@ -9649,8 +9728,8 @@ createNode nurbsCurve -n "finger_R2_0_locShape" -p "finger_R2_0_loc"; 0.25 0 0 -0.25 0 0 ; -createNode nurbsCurve -n "finger_R2_0_loc10Shape" -p "finger_R2_0_loc"; - rename -uid "F0AAB297-415A-7F02-D9FE-308ADED29B82"; +createNode nurbsCurve -n "finger_R2_0_loc1Shape" -p "finger_R2_0_loc"; + rename -uid "0F8755AE-464A-88DE-CA0A-D0BAC0D3D0DD"; setAttr ".ihi" 0; setAttr -k off ".v"; setAttr ".ove" yes; @@ -9662,8 +9741,8 @@ createNode nurbsCurve -n "finger_R2_0_loc10Shape" -p "finger_R2_0_loc"; 0 0.25 0 0 -0.25 0 ; -createNode nurbsCurve -n "finger_R2_0_loc11Shape" -p "finger_R2_0_loc"; - rename -uid "8CACB09F-470A-F873-97E7-47AB8C8AD580"; +createNode nurbsCurve -n "finger_R2_0_loc2Shape" -p "finger_R2_0_loc"; + rename -uid "BD2BF688-42DF-6EAB-E1C0-1FBD3B7C1DAC"; setAttr ".ihi" 0; setAttr -k off ".v"; setAttr ".ove" yes; @@ -9675,8 +9754,8 @@ createNode nurbsCurve -n "finger_R2_0_loc11Shape" -p "finger_R2_0_loc"; 0 0 0.25 0 0 -0.25 ; -createNode nurbsCurve -n "finger_R2_0_loc12Shape" -p "finger_R2_0_loc"; - rename -uid "A9558526-49D2-956A-67FC-4EBC55686D0B"; +createNode nurbsCurve -n "finger_R2_0_loc3Shape" -p "finger_R2_0_loc"; + rename -uid "5E072793-46C8-0F6A-63F6-4D96DCED19C1"; setAttr ".ihi" 0; setAttr -k off ".v"; setAttr ".ove" yes; @@ -9693,8 +9772,8 @@ createNode nurbsCurve -n "finger_R2_0_loc12Shape" -p "finger_R2_0_loc"; 0 -0.1875 0 -0.1875 0 0 ; -createNode nurbsCurve -n "finger_R2_0_loc12_0crvShape" -p "finger_R2_0_loc"; - rename -uid "A264ED9D-4025-B2DD-2BF7-CE834BF725DF"; +createNode nurbsCurve -n "finger_R2_0_loc3_0crvShape" -p "finger_R2_0_loc"; + rename -uid "5B9EC0A1-46C6-696C-6F0F-919B372A8CF5"; setAttr ".ihi" 0; setAttr -k off ".v"; setAttr ".ove" yes; @@ -9711,8 +9790,8 @@ createNode nurbsCurve -n "finger_R2_0_loc12_0crvShape" -p "finger_R2_0_loc"; 0 0 -0.1875 -0.1875 0 0 ; -createNode nurbsCurve -n "finger_R2_0_loc12_1crvShape" -p "finger_R2_0_loc"; - rename -uid "C6CA4DE1-4546-A924-300D-E89F206D7F78"; +createNode nurbsCurve -n "finger_R2_0_loc3_1crvShape" -p "finger_R2_0_loc"; + rename -uid "566AF89F-495B-9E9E-5FB8-54AF2F7280D8"; setAttr ".ihi" 0; setAttr -k off ".v"; setAttr ".ove" yes; @@ -9730,10 +9809,10 @@ createNode nurbsCurve -n "finger_R2_0_loc12_1crvShape" -p "finger_R2_0_loc"; 0 0 -0.1875 ; createNode transform -n "finger_R2_1_loc" -p "finger_R2_0_loc"; - rename -uid "3C53AAD5-4AA7-5285-4EF2-0A81E114FCA7"; + rename -uid "B9BC7598-4ABF-F6A3-08EC-FE909E8B1C82"; addAttr -ci true -sn "isGearGuide" -ln "isGearGuide" -dv 1 -min 0 -max 1 -at "bool"; setAttr -k off -cb on ".v"; - setAttr ".t" -type "double3" 0.76775488587176355 1.7763568394002505e-014 -1.3322676295501878e-015 ; + setAttr ".t" -type "double3" 0.76775488587174934 2.1316282072803006e-014 0 ; setAttr -k off -cb on ".tx"; setAttr -k off -cb on ".ty"; setAttr -k off -cb on ".tz"; @@ -9741,12 +9820,12 @@ createNode transform -n "finger_R2_1_loc" -p "finger_R2_0_loc"; setAttr -k off -cb on ".ry"; setAttr -k off -cb on ".rz"; setAttr -cb on ".ro"; - setAttr ".s" -type "double3" 0.99999999999999989 0.99999999999999922 0.99999999999999933 ; + setAttr ".s" -type "double3" 0.99999999999999967 0.99999999999999967 0.99999999999999922 ; setAttr -k off -cb on ".sx"; setAttr -k off -cb on ".sy"; setAttr -k off -cb on ".sz"; createNode nurbsCurve -n "finger_R2_1_locShape" -p "finger_R2_1_loc"; - rename -uid "D65E40DA-462E-2A58-C805-9C8137DE8008"; + rename -uid "2C209874-45AF-1ADF-0865-29924F25ED40"; setAttr ".ihi" 0; setAttr -k off ".v"; setAttr ".ove" yes; @@ -9758,8 +9837,8 @@ createNode nurbsCurve -n "finger_R2_1_locShape" -p "finger_R2_1_loc"; 0.25 0 0 -0.25 0 0 ; -createNode nurbsCurve -n "finger_R2_1_loc10Shape" -p "finger_R2_1_loc"; - rename -uid "DD7FFFD5-4E07-EEB8-2AAE-2BB5FBF34BC3"; +createNode nurbsCurve -n "finger_R2_1_loc1Shape" -p "finger_R2_1_loc"; + rename -uid "A20665C2-4A85-5955-8F3B-D19B0AAF9DDC"; setAttr ".ihi" 0; setAttr -k off ".v"; setAttr ".ove" yes; @@ -9771,8 +9850,8 @@ createNode nurbsCurve -n "finger_R2_1_loc10Shape" -p "finger_R2_1_loc"; 0 0.25 0 0 -0.25 0 ; -createNode nurbsCurve -n "finger_R2_1_loc11Shape" -p "finger_R2_1_loc"; - rename -uid "77A781B7-4CDD-E7CE-080A-E89840723C25"; +createNode nurbsCurve -n "finger_R2_1_loc2Shape" -p "finger_R2_1_loc"; + rename -uid "D28C723A-4FD8-6E45-5787-608E896A0E14"; setAttr ".ihi" 0; setAttr -k off ".v"; setAttr ".ove" yes; @@ -9784,8 +9863,8 @@ createNode nurbsCurve -n "finger_R2_1_loc11Shape" -p "finger_R2_1_loc"; 0 0 0.25 0 0 -0.25 ; -createNode nurbsCurve -n "finger_R2_1_loc12Shape" -p "finger_R2_1_loc"; - rename -uid "797D468E-4152-E952-FA66-0AB1243411D5"; +createNode nurbsCurve -n "finger_R2_1_loc3Shape" -p "finger_R2_1_loc"; + rename -uid "C812BC36-4515-3414-6858-929F03422957"; setAttr ".ihi" 0; setAttr -k off ".v"; setAttr ".ove" yes; @@ -9802,8 +9881,8 @@ createNode nurbsCurve -n "finger_R2_1_loc12Shape" -p "finger_R2_1_loc"; 0 -0.1875 0 -0.1875 0 0 ; -createNode nurbsCurve -n "finger_R2_1_loc12_0crvShape" -p "finger_R2_1_loc"; - rename -uid "957EE5F4-42A6-085B-CC91-B3BFD4D7E004"; +createNode nurbsCurve -n "finger_R2_1_loc3_0crvShape" -p "finger_R2_1_loc"; + rename -uid "4898BEA2-46DD-DBAF-4827-8596A329FB06"; setAttr ".ihi" 0; setAttr -k off ".v"; setAttr ".ove" yes; @@ -9820,8 +9899,8 @@ createNode nurbsCurve -n "finger_R2_1_loc12_0crvShape" -p "finger_R2_1_loc"; 0 0 -0.1875 -0.1875 0 0 ; -createNode nurbsCurve -n "finger_R2_1_loc12_1crvShape" -p "finger_R2_1_loc"; - rename -uid "C5AB688E-4C0D-0C14-7E50-C289522D2FCF"; +createNode nurbsCurve -n "finger_R2_1_loc3_1crvShape" -p "finger_R2_1_loc"; + rename -uid "77F46FD1-41CF-715B-9F81-A689EB7CA942"; setAttr ".ihi" 0; setAttr -k off ".v"; setAttr ".ove" yes; @@ -9839,10 +9918,10 @@ createNode nurbsCurve -n "finger_R2_1_loc12_1crvShape" -p "finger_R2_1_loc"; 0 0 -0.1875 ; createNode transform -n "finger_R2_2_loc" -p "finger_R2_1_loc"; - rename -uid "4B08B46F-424A-254F-3050-03BC9C120D15"; + rename -uid "84832F55-45F7-B232-8AB1-288E34F0E663"; addAttr -ci true -sn "isGearGuide" -ln "isGearGuide" -dv 1 -min 0 -max 1 -at "bool"; setAttr -k off -cb on ".v"; - setAttr ".t" -type "double3" 0.67457026674914733 -2.1316282072803006e-014 2.2204460492503131e-016 ; + setAttr ".t" -type "double3" 0.67457026674915621 -2.1316282072803006e-014 -8.8817841970012523e-016 ; setAttr -k off -cb on ".tx"; setAttr -k off -cb on ".ty"; setAttr -k off -cb on ".tz"; @@ -9850,12 +9929,12 @@ createNode transform -n "finger_R2_2_loc" -p "finger_R2_1_loc"; setAttr -k off -cb on ".ry"; setAttr -k off -cb on ".rz"; setAttr -cb on ".ro"; - setAttr ".s" -type "double3" 1.0000000000000004 1.0000000000000004 1.0000000000000004 ; + setAttr ".s" -type "double3" 1.0000000000000007 1.0000000000000004 1.0000000000000007 ; setAttr -k off -cb on ".sx"; setAttr -k off -cb on ".sy"; setAttr -k off -cb on ".sz"; createNode nurbsCurve -n "finger_R2_2_locShape" -p "finger_R2_2_loc"; - rename -uid "33C4B327-454C-938F-8B26-409D3D1E460A"; + rename -uid "4ED6D0B1-4027-EBC5-5685-94B377964C55"; setAttr ".ihi" 0; setAttr -k off ".v"; setAttr ".ove" yes; @@ -9867,8 +9946,8 @@ createNode nurbsCurve -n "finger_R2_2_locShape" -p "finger_R2_2_loc"; 0.25 0 0 -0.25 0 0 ; -createNode nurbsCurve -n "finger_R2_2_loc10Shape" -p "finger_R2_2_loc"; - rename -uid "AE9CC4A4-42A1-4A13-A601-6FADFF4CD7FA"; +createNode nurbsCurve -n "finger_R2_2_loc1Shape" -p "finger_R2_2_loc"; + rename -uid "42C600CE-46F0-BE76-3EA0-D58A76289966"; setAttr ".ihi" 0; setAttr -k off ".v"; setAttr ".ove" yes; @@ -9880,8 +9959,8 @@ createNode nurbsCurve -n "finger_R2_2_loc10Shape" -p "finger_R2_2_loc"; 0 0.25 0 0 -0.25 0 ; -createNode nurbsCurve -n "finger_R2_2_loc11Shape" -p "finger_R2_2_loc"; - rename -uid "71995CBB-4B86-AD0F-45BB-F0960DF6C996"; +createNode nurbsCurve -n "finger_R2_2_loc2Shape" -p "finger_R2_2_loc"; + rename -uid "C0C7B415-42D5-552E-712D-C2B70C57D78B"; setAttr ".ihi" 0; setAttr -k off ".v"; setAttr ".ove" yes; @@ -9893,8 +9972,8 @@ createNode nurbsCurve -n "finger_R2_2_loc11Shape" -p "finger_R2_2_loc"; 0 0 0.25 0 0 -0.25 ; -createNode nurbsCurve -n "finger_R2_2_loc12Shape" -p "finger_R2_2_loc"; - rename -uid "93267893-44A8-240D-C3D8-758E896384C8"; +createNode nurbsCurve -n "finger_R2_2_loc3Shape" -p "finger_R2_2_loc"; + rename -uid "F5FF1EEB-44BE-D845-5F22-8883D573C9F3"; setAttr ".ihi" 0; setAttr -k off ".v"; setAttr ".ove" yes; @@ -9911,8 +9990,8 @@ createNode nurbsCurve -n "finger_R2_2_loc12Shape" -p "finger_R2_2_loc"; 0 -0.1875 0 -0.1875 0 0 ; -createNode nurbsCurve -n "finger_R2_2_loc12_0crvShape" -p "finger_R2_2_loc"; - rename -uid "3992A2F0-484C-8FA5-4601-C4B2931001F0"; +createNode nurbsCurve -n "finger_R2_2_loc3_0crvShape" -p "finger_R2_2_loc"; + rename -uid "DE8569DF-4B98-91C8-75DA-22ABB754C76C"; setAttr ".ihi" 0; setAttr -k off ".v"; setAttr ".ove" yes; @@ -9929,8 +10008,8 @@ createNode nurbsCurve -n "finger_R2_2_loc12_0crvShape" -p "finger_R2_2_loc"; 0 0 -0.1875 -0.1875 0 0 ; -createNode nurbsCurve -n "finger_R2_2_loc12_1crvShape" -p "finger_R2_2_loc"; - rename -uid "A623A87E-4B8B-4345-954E-DE8BFC59FF61"; +createNode nurbsCurve -n "finger_R2_2_loc3_1crvShape" -p "finger_R2_2_loc"; + rename -uid "92058E32-4C1B-88A4-5EF5-2DB9A76FD8E3"; setAttr ".ihi" 0; setAttr -k off ".v"; setAttr ".ove" yes; @@ -9948,7 +10027,7 @@ createNode nurbsCurve -n "finger_R2_2_loc12_1crvShape" -p "finger_R2_2_loc"; 0 0 -0.1875 ; createNode transform -n "finger_R2_blade" -p "finger_R2_root"; - rename -uid "B999D9E4-4162-1A33-4DE9-70AF048220CE"; + rename -uid "4942FE1D-4791-10BB-EB65-44B3BA0C1844"; addAttr -ci true -k true -sn "bladeRollOffset" -ln "bladeRollOffset" -at "float"; setAttr -l on -k off -cb on ".v"; setAttr -k off -cb on ".tx"; @@ -9958,13 +10037,13 @@ createNode transform -n "finger_R2_blade" -p "finger_R2_root"; setAttr -k off -cb on ".ry"; setAttr -k off -cb on ".rz"; setAttr -cb on ".ro"; - setAttr ".s" -type "double3" 0.99999999999999922 1.0000000000000002 1 ; + setAttr ".s" -type "double3" 1.0000000000000004 1.0000000000000009 1.0000000000000007 ; setAttr -l on -k off -cb on ".sx"; setAttr -l on -k off -cb on ".sy"; setAttr -l on -k off -cb on ".sz"; setAttr -k on ".bladeRollOffset"; createNode nurbsCurve -n "finger_R2_bladeShape" -p "finger_R2_blade"; - rename -uid "BE0F6617-48B6-4515-F561-4DAB00B55D3A"; + rename -uid "85BD0342-4861-A018-57DD-2BAE04402EB0"; setAttr ".ihi" 0; setAttr -k off ".v"; setAttr ".ove" yes; @@ -9974,12 +10053,12 @@ createNode nurbsCurve -n "finger_R2_bladeShape" -p "finger_R2_blade"; 4 0 1 2 3 4 0 0 0 - 0.77578009473970788 0 0 - 0 0.25859336491323598 0 + 0.77578009473970733 0 0 + 0 0.25859336491323576 0 0 0 0 ; -createNode aimConstraint -n "finger_R2_blade_aimConstraint4" -p "finger_R2_blade"; - rename -uid "4471F1DC-4C5C-5FA5-A9B2-6EB7A750DB6E"; +createNode aimConstraint -n "finger_R2_blade_aimConstraint1" -p "finger_R2_blade"; + rename -uid "E483E394-4046-83B8-2862-A59D4582892B"; addAttr -dcb 0 -ci true -sn "w0" -ln "finger_R2_0_locW0" -dv 1 -at "double"; setAttr -k on ".nds"; setAttr -k off ".v"; @@ -9995,8 +10074,8 @@ createNode aimConstraint -n "finger_R2_blade_aimConstraint4" -p "finger_R2_blade setAttr ".erp" yes; setAttr ".wut" 2; setAttr -k on ".w0"; -createNode pointConstraint -n "finger_R2_blade_pointConstraint4" -p "finger_R2_blade"; - rename -uid "0F7F2503-42CB-5815-D4BF-BBA5AF292EB0"; +createNode pointConstraint -n "finger_R2_blade_pointConstraint1" -p "finger_R2_blade"; + rename -uid "EB481E0A-48B9-F2A2-7A0B-A7A485261B80"; addAttr -dcb 0 -ci true -k true -sn "w0" -ln "finger_R2_rootW0" -dv 1 -min 0 -at "double"; setAttr -k on ".nds"; setAttr -k off ".v"; @@ -10013,19 +10092,19 @@ createNode pointConstraint -n "finger_R2_blade_pointConstraint4" -p "finger_R2_b setAttr ".rst" -type "double3" 1.7763568394002505e-015 0 2.2204460492503131e-016 ; setAttr -k on ".w0"; createNode transform -n "finger_R2_crv" -p "finger_R2_root"; - rename -uid "C99325B1-49E0-B4AA-00BB-4FBC808383A0"; + rename -uid "6B419E28-4AD2-7842-D5EF-09982A78A2B6"; setAttr ".ovdt" 1; setAttr ".ove" yes; - setAttr ".t" -type "double3" 8.0630938931308833 -29.023661369441566 1.4173349723079292 ; - setAttr ".r" -type "double3" 0.54140613098995294 178.40951950034901 47.737641631363836 ; - setAttr ".s" -type "double3" 2.6320983106786113 2.6320983106785998 -2.6320983106786078 ; + setAttr ".t" -type "double3" 8.0630938931309277 -29.023661369441573 1.4173349723079784 ; + setAttr ".r" -type "double3" 0.54140613099002932 178.40951950034903 47.737641631363914 ; + setAttr ".s" -type "double3" 2.632098310678614 2.6320983106786007 -2.6320983106786087 ; createNode nurbsCurve -n "finger_R2_crvShape" -p "finger_R2_crv"; - rename -uid "E4229D5F-4A17-B407-E5C8-478D2FD4E6BD"; + rename -uid "B053EDDA-44A5-41B6-0DAE-6688FB6001EE"; setAttr -k off ".v"; setAttr -s 4 ".iog[0].og"; setAttr ".tw" yes; createNode nurbsCurve -n "finger_R2_crvShapeOrig" -p "finger_R2_crv"; - rename -uid "76A0A61E-4C26-7B70-A557-FE8448BCBB70"; + rename -uid "28038A63-4A12-ABCD-CD41-8EA5DACBB420"; setAttr -k off ".v"; setAttr ".io" yes; setAttr ".cc" -type "nurbsCurve" @@ -10038,7 +10117,7 @@ createNode nurbsCurve -n "finger_R2_crvShapeOrig" -p "finger_R2_crv"; 0 0 0 ; createNode transform -n "finger_R1_root" -p "meta_R0_0_loc"; - rename -uid "F68C4FA8-4100-DC5B-3A26-2384F673E3D3"; + rename -uid "7FF593EF-4932-B8D5-065A-35B5EFDC1C41"; addAttr -ci true -sn "isGearGuide" -ln "isGearGuide" -dv 1 -min 0 -max 1 -at "bool"; addAttr -ci true -sn "comp_type" -ln "comp_type" -dt "string"; addAttr -ci true -sn "comp_name" -ln "comp_name" -dt "string"; @@ -10054,16 +10133,16 @@ createNode transform -n "finger_R1_root" -p "meta_R0_0_loc"; addAttr -ci true -sn "useIndex" -ln "useIndex" -min 0 -max 1 -at "bool"; addAttr -ci true -sn "parentJointIndex" -ln "parentJointIndex" -at "long"; setAttr -k off -cb on ".v"; - setAttr ".t" -type "double3" -0.0077643969605927232 -0.1235840669671191 2.9483952421545734 ; + setAttr ".t" -type "double3" -0.0077643969605958318 -0.12358406696714042 2.9483952421545805 ; setAttr -k off -cb on ".tx"; setAttr -k off -cb on ".ty"; setAttr -k off -cb on ".tz"; - setAttr ".r" -type "double3" 121.340213988702 -79.97701401742313 -112.77222628638549 ; + setAttr ".r" -type "double3" 121.34021398870114 -79.977014017422945 -112.77222628638475 ; setAttr -k off -cb on ".rx"; setAttr -k off -cb on ".ry"; setAttr -k off -cb on ".rz"; setAttr -cb on ".ro"; - setAttr ".s" -type "double3" 1.292966824566181 1.2929668245661803 1.2929668245661798 ; + setAttr ".s" -type "double3" 1.2929668245661787 1.2929668245661796 1.2929668245661794 ; setAttr -k off -cb on ".sx"; setAttr -k off -cb on ".sy"; setAttr -k off -cb on ".sz"; @@ -10079,7 +10158,7 @@ createNode transform -n "finger_R1_root" -p "meta_R0_0_loc"; setAttr ".ikrefarray" -type "string" ""; setAttr ".parentJointIndex" -1; createNode nurbsCurve -n "finger_R1_rootShape" -p "finger_R1_root"; - rename -uid "485839C1-4099-A530-A47B-87831389DBC5"; + rename -uid "F8FC2823-48AF-689F-31C4-D28BF4C8212A"; setAttr ".ihi" 0; setAttr -k off ".v"; setAttr ".ove" yes; @@ -10091,8 +10170,8 @@ createNode nurbsCurve -n "finger_R1_rootShape" -p "finger_R1_root"; 0.25 0 0 -0.25 0 0 ; -createNode nurbsCurve -n "finger_R1_root10Shape" -p "finger_R1_root"; - rename -uid "27B4A497-4D16-DDB7-C016-B7AACCD4B563"; +createNode nurbsCurve -n "finger_R1_root1Shape" -p "finger_R1_root"; + rename -uid "CCD03E76-4D4A-8B6E-567D-9FA42106C077"; setAttr ".ihi" 0; setAttr -k off ".v"; setAttr ".ove" yes; @@ -10104,8 +10183,8 @@ createNode nurbsCurve -n "finger_R1_root10Shape" -p "finger_R1_root"; 0 0.25 0 0 -0.25 0 ; -createNode nurbsCurve -n "finger_R1_root11Shape" -p "finger_R1_root"; - rename -uid "1D4E9502-4834-C70E-A9AE-C69BB712C619"; +createNode nurbsCurve -n "finger_R1_root2Shape" -p "finger_R1_root"; + rename -uid "A28BB270-4E4B-A58B-9DE2-86B5A54E5517"; setAttr ".ihi" 0; setAttr -k off ".v"; setAttr ".ove" yes; @@ -10117,8 +10196,8 @@ createNode nurbsCurve -n "finger_R1_root11Shape" -p "finger_R1_root"; 0 0 0.25 0 0 -0.25 ; -createNode nurbsCurve -n "finger_R1_root12Shape" -p "finger_R1_root"; - rename -uid "6AD37E81-4F63-4531-E9AF-27BB934659FD"; +createNode nurbsCurve -n "finger_R1_root3Shape" -p "finger_R1_root"; + rename -uid "7174874B-4569-BEDF-86E6-769783E607E1"; setAttr ".ihi" 0; setAttr -k off ".v"; setAttr ".ove" yes; @@ -10145,10 +10224,10 @@ createNode nurbsCurve -n "finger_R1_root12Shape" -p "finger_R1_root"; -0.125 -0.125 -0.125 ; createNode transform -n "finger_R1_0_loc" -p "finger_R1_root"; - rename -uid "509E9036-4360-434B-1B0A-D88E43C1AD59"; + rename -uid "41167DC2-48AE-7C0E-032A-7687FB04FDC3"; addAttr -ci true -sn "isGearGuide" -ln "isGearGuide" -dv 1 -min 0 -max 1 -at "bool"; setAttr -k off -cb on ".v"; - setAttr ".t" -type "double3" 0.99999999999998579 1.7763568394002505e-014 1.1102230246251565e-015 ; + setAttr ".t" -type "double3" 0.99999999999998224 1.7763568394002505e-014 -8.8817841970012523e-016 ; setAttr -k off -cb on ".tx"; setAttr -k off -cb on ".ty"; setAttr -k off -cb on ".tz"; @@ -10156,12 +10235,12 @@ createNode transform -n "finger_R1_0_loc" -p "finger_R1_root"; setAttr -k off -cb on ".ry"; setAttr -k off -cb on ".rz"; setAttr -cb on ".ro"; - setAttr ".s" -type "double3" 0.99999999999999889 0.999999999999999 0.99999999999999978 ; + setAttr ".s" -type "double3" 1 0.99999999999999989 1.0000000000000002 ; setAttr -k off -cb on ".sx"; setAttr -k off -cb on ".sy"; setAttr -k off -cb on ".sz"; createNode nurbsCurve -n "finger_R1_0_locShape" -p "finger_R1_0_loc"; - rename -uid "3A7D7C46-4E81-6C2B-2DEC-56B64D355D6B"; + rename -uid "D8B4F5BD-44E0-B1DA-749A-E080DA6C3CAA"; setAttr ".ihi" 0; setAttr -k off ".v"; setAttr ".ove" yes; @@ -10173,8 +10252,8 @@ createNode nurbsCurve -n "finger_R1_0_locShape" -p "finger_R1_0_loc"; 0.25 0 0 -0.25 0 0 ; -createNode nurbsCurve -n "finger_R1_0_loc10Shape" -p "finger_R1_0_loc"; - rename -uid "90E2667C-4816-9FBE-DCD9-DAA44346FA74"; +createNode nurbsCurve -n "finger_R1_0_loc1Shape" -p "finger_R1_0_loc"; + rename -uid "4AACE68A-4077-7CBF-4F16-018F94551834"; setAttr ".ihi" 0; setAttr -k off ".v"; setAttr ".ove" yes; @@ -10186,8 +10265,8 @@ createNode nurbsCurve -n "finger_R1_0_loc10Shape" -p "finger_R1_0_loc"; 0 0.25 0 0 -0.25 0 ; -createNode nurbsCurve -n "finger_R1_0_loc11Shape" -p "finger_R1_0_loc"; - rename -uid "4AC19B96-4B80-5BD8-6AEB-67B906FAD489"; +createNode nurbsCurve -n "finger_R1_0_loc2Shape" -p "finger_R1_0_loc"; + rename -uid "18DBF289-44F7-119D-7383-8AABF92BB434"; setAttr ".ihi" 0; setAttr -k off ".v"; setAttr ".ove" yes; @@ -10199,8 +10278,8 @@ createNode nurbsCurve -n "finger_R1_0_loc11Shape" -p "finger_R1_0_loc"; 0 0 0.25 0 0 -0.25 ; -createNode nurbsCurve -n "finger_R1_0_loc12Shape" -p "finger_R1_0_loc"; - rename -uid "564EA363-4D1E-F687-2F3B-3EB819E12616"; +createNode nurbsCurve -n "finger_R1_0_loc3Shape" -p "finger_R1_0_loc"; + rename -uid "BC5ADD36-4B74-E9B6-6305-489A37922FA6"; setAttr ".ihi" 0; setAttr -k off ".v"; setAttr ".ove" yes; @@ -10217,8 +10296,8 @@ createNode nurbsCurve -n "finger_R1_0_loc12Shape" -p "finger_R1_0_loc"; 0 -0.1875 0 -0.1875 0 0 ; -createNode nurbsCurve -n "finger_R1_0_loc12_0crvShape" -p "finger_R1_0_loc"; - rename -uid "C3E6EF81-47DC-A27D-A6A6-7E9CD7FF8253"; +createNode nurbsCurve -n "finger_R1_0_loc3_0crvShape" -p "finger_R1_0_loc"; + rename -uid "9AD76975-41A7-3A24-2BB6-3497A2090B49"; setAttr ".ihi" 0; setAttr -k off ".v"; setAttr ".ove" yes; @@ -10235,8 +10314,8 @@ createNode nurbsCurve -n "finger_R1_0_loc12_0crvShape" -p "finger_R1_0_loc"; 0 0 -0.1875 -0.1875 0 0 ; -createNode nurbsCurve -n "finger_R1_0_loc12_1crvShape" -p "finger_R1_0_loc"; - rename -uid "8C8A9165-4D2B-A21F-353D-1799A1AE94C0"; +createNode nurbsCurve -n "finger_R1_0_loc3_1crvShape" -p "finger_R1_0_loc"; + rename -uid "48D3E9AA-44B4-A735-2252-E598F37F3B7B"; setAttr ".ihi" 0; setAttr -k off ".v"; setAttr ".ove" yes; @@ -10254,10 +10333,10 @@ createNode nurbsCurve -n "finger_R1_0_loc12_1crvShape" -p "finger_R1_0_loc"; 0 0 -0.1875 ; createNode transform -n "finger_R1_1_loc" -p "finger_R1_0_loc"; - rename -uid "8E199701-464C-4AC1-FBCC-52BDE613A9CF"; + rename -uid "4BE24712-4DC5-BF3D-FCE9-44A569F648F8"; addAttr -ci true -sn "isGearGuide" -ln "isGearGuide" -dv 1 -min 0 -max 1 -at "bool"; setAttr -k off -cb on ".v"; - setAttr ".t" -type "double3" 0.96412528414017551 0 -6.6613381477509392e-016 ; + setAttr ".t" -type "double3" 0.96412528414018794 1.0658141036401503e-014 -4.4408920985006262e-016 ; setAttr -k off -cb on ".tx"; setAttr -k off -cb on ".ty"; setAttr -k off -cb on ".tz"; @@ -10265,12 +10344,12 @@ createNode transform -n "finger_R1_1_loc" -p "finger_R1_0_loc"; setAttr -k off -cb on ".ry"; setAttr -k off -cb on ".rz"; setAttr -cb on ".ro"; - setAttr ".s" -type "double3" 1.0000000000000007 0.99999999999999989 1 ; + setAttr ".s" -type "double3" 1.0000000000000002 0.99999999999999944 1.0000000000000002 ; setAttr -k off -cb on ".sx"; setAttr -k off -cb on ".sy"; setAttr -k off -cb on ".sz"; createNode nurbsCurve -n "finger_R1_1_locShape" -p "finger_R1_1_loc"; - rename -uid "54C70F0E-4C80-A954-F815-8194F956655C"; + rename -uid "70CBFCB1-4EA3-7EA3-3740-EAB39672054C"; setAttr ".ihi" 0; setAttr -k off ".v"; setAttr ".ove" yes; @@ -10282,8 +10361,8 @@ createNode nurbsCurve -n "finger_R1_1_locShape" -p "finger_R1_1_loc"; 0.25 0 0 -0.25 0 0 ; -createNode nurbsCurve -n "finger_R1_1_loc10Shape" -p "finger_R1_1_loc"; - rename -uid "22609F92-4109-674E-23EF-6EA5C7681E01"; +createNode nurbsCurve -n "finger_R1_1_loc1Shape" -p "finger_R1_1_loc"; + rename -uid "11A1D5A6-4C22-FFA6-F84F-1B9CBD5D3A31"; setAttr ".ihi" 0; setAttr -k off ".v"; setAttr ".ove" yes; @@ -10295,8 +10374,8 @@ createNode nurbsCurve -n "finger_R1_1_loc10Shape" -p "finger_R1_1_loc"; 0 0.25 0 0 -0.25 0 ; -createNode nurbsCurve -n "finger_R1_1_loc11Shape" -p "finger_R1_1_loc"; - rename -uid "CD5D962F-413F-80BF-5ECF-0F98AB09CA5B"; +createNode nurbsCurve -n "finger_R1_1_loc2Shape" -p "finger_R1_1_loc"; + rename -uid "8F70FBBA-4060-D5B9-F565-61B8A20494AC"; setAttr ".ihi" 0; setAttr -k off ".v"; setAttr ".ove" yes; @@ -10308,8 +10387,8 @@ createNode nurbsCurve -n "finger_R1_1_loc11Shape" -p "finger_R1_1_loc"; 0 0 0.25 0 0 -0.25 ; -createNode nurbsCurve -n "finger_R1_1_loc12Shape" -p "finger_R1_1_loc"; - rename -uid "DABADDF8-49BC-E488-C492-44BCDBAA2B21"; +createNode nurbsCurve -n "finger_R1_1_loc3Shape" -p "finger_R1_1_loc"; + rename -uid "1D0D300A-4F75-9B80-146B-7C96FE0229CD"; setAttr ".ihi" 0; setAttr -k off ".v"; setAttr ".ove" yes; @@ -10326,8 +10405,8 @@ createNode nurbsCurve -n "finger_R1_1_loc12Shape" -p "finger_R1_1_loc"; 0 -0.1875 0 -0.1875 0 0 ; -createNode nurbsCurve -n "finger_R1_1_loc12_0crvShape" -p "finger_R1_1_loc"; - rename -uid "3353299E-471A-0AC9-9C13-F88BF5ED67D5"; +createNode nurbsCurve -n "finger_R1_1_loc3_0crvShape" -p "finger_R1_1_loc"; + rename -uid "0A415F88-4995-B429-9D83-8587C66DFAF3"; setAttr ".ihi" 0; setAttr -k off ".v"; setAttr ".ove" yes; @@ -10344,8 +10423,8 @@ createNode nurbsCurve -n "finger_R1_1_loc12_0crvShape" -p "finger_R1_1_loc"; 0 0 -0.1875 -0.1875 0 0 ; -createNode nurbsCurve -n "finger_R1_1_loc12_1crvShape" -p "finger_R1_1_loc"; - rename -uid "52B56AEC-46EE-16B1-53FC-D7BB8E363B42"; +createNode nurbsCurve -n "finger_R1_1_loc3_1crvShape" -p "finger_R1_1_loc"; + rename -uid "568C4B5B-4130-6805-66C5-21804749898A"; setAttr ".ihi" 0; setAttr -k off ".v"; setAttr ".ove" yes; @@ -10363,10 +10442,10 @@ createNode nurbsCurve -n "finger_R1_1_loc12_1crvShape" -p "finger_R1_1_loc"; 0 0 -0.1875 ; createNode transform -n "finger_R1_2_loc" -p "finger_R1_1_loc"; - rename -uid "139BD65B-4C6D-0A12-BFDE-C09F6DB9DD61"; + rename -uid "0C563E9D-4756-AD42-77A6-EC8140C5781E"; addAttr -ci true -sn "isGearGuide" -ln "isGearGuide" -dv 1 -min 0 -max 1 -at "bool"; setAttr -k off -cb on ".v"; - setAttr ".t" -type "double3" 0.58017281549591004 7.1054273576010019e-015 2.6645352591003757e-015 ; + setAttr ".t" -type "double3" 0.58017281549590471 -1.7763568394002505e-014 2.2204460492503131e-016 ; setAttr -k off -cb on ".tx"; setAttr -k off -cb on ".ty"; setAttr -k off -cb on ".tz"; @@ -10374,12 +10453,11 @@ createNode transform -n "finger_R1_2_loc" -p "finger_R1_1_loc"; setAttr -k off -cb on ".ry"; setAttr -k off -cb on ".rz"; setAttr -cb on ".ro"; - setAttr ".s" -type "double3" 0.99999999999999911 1.0000000000000009 1.0000000000000002 ; setAttr -k off -cb on ".sx"; setAttr -k off -cb on ".sy"; setAttr -k off -cb on ".sz"; createNode nurbsCurve -n "finger_R1_2_locShape" -p "finger_R1_2_loc"; - rename -uid "04094E67-4334-56D4-0A03-6681D76E422F"; + rename -uid "72AF1FB1-48D6-5BB5-3695-8EBFB396A115"; setAttr ".ihi" 0; setAttr -k off ".v"; setAttr ".ove" yes; @@ -10391,8 +10469,8 @@ createNode nurbsCurve -n "finger_R1_2_locShape" -p "finger_R1_2_loc"; 0.25 0 0 -0.25 0 0 ; -createNode nurbsCurve -n "finger_R1_2_loc10Shape" -p "finger_R1_2_loc"; - rename -uid "D2B511E0-4E7C-AF02-AC21-B08C8DC2C050"; +createNode nurbsCurve -n "finger_R1_2_loc1Shape" -p "finger_R1_2_loc"; + rename -uid "B7873390-4D01-AA0C-4278-438489E48C7A"; setAttr ".ihi" 0; setAttr -k off ".v"; setAttr ".ove" yes; @@ -10404,8 +10482,8 @@ createNode nurbsCurve -n "finger_R1_2_loc10Shape" -p "finger_R1_2_loc"; 0 0.25 0 0 -0.25 0 ; -createNode nurbsCurve -n "finger_R1_2_loc11Shape" -p "finger_R1_2_loc"; - rename -uid "242FFA13-43B3-E68A-10F9-81AD9473C716"; +createNode nurbsCurve -n "finger_R1_2_loc2Shape" -p "finger_R1_2_loc"; + rename -uid "E01B941D-445F-4EDE-3426-1388E8000093"; setAttr ".ihi" 0; setAttr -k off ".v"; setAttr ".ove" yes; @@ -10417,8 +10495,8 @@ createNode nurbsCurve -n "finger_R1_2_loc11Shape" -p "finger_R1_2_loc"; 0 0 0.25 0 0 -0.25 ; -createNode nurbsCurve -n "finger_R1_2_loc12Shape" -p "finger_R1_2_loc"; - rename -uid "818AE26E-4FB4-8F50-D75C-BABBACD77318"; +createNode nurbsCurve -n "finger_R1_2_loc3Shape" -p "finger_R1_2_loc"; + rename -uid "51B48216-4E4D-7B47-8070-96B9A24A42AA"; setAttr ".ihi" 0; setAttr -k off ".v"; setAttr ".ove" yes; @@ -10435,8 +10513,8 @@ createNode nurbsCurve -n "finger_R1_2_loc12Shape" -p "finger_R1_2_loc"; 0 -0.1875 0 -0.1875 0 0 ; -createNode nurbsCurve -n "finger_R1_2_loc12_0crvShape" -p "finger_R1_2_loc"; - rename -uid "CC17030F-4F89-8FDE-BE39-579DFE4CD9F2"; +createNode nurbsCurve -n "finger_R1_2_loc3_0crvShape" -p "finger_R1_2_loc"; + rename -uid "868E8A63-42CA-AA09-CFBA-3AA8F89101AB"; setAttr ".ihi" 0; setAttr -k off ".v"; setAttr ".ove" yes; @@ -10453,8 +10531,8 @@ createNode nurbsCurve -n "finger_R1_2_loc12_0crvShape" -p "finger_R1_2_loc"; 0 0 -0.1875 -0.1875 0 0 ; -createNode nurbsCurve -n "finger_R1_2_loc12_1crvShape" -p "finger_R1_2_loc"; - rename -uid "17039965-4310-D3A0-1E65-369E824956DE"; +createNode nurbsCurve -n "finger_R1_2_loc3_1crvShape" -p "finger_R1_2_loc"; + rename -uid "BDD83E6B-46F9-166A-8D0E-4D853BEFDAD4"; setAttr ".ihi" 0; setAttr -k off ".v"; setAttr ".ove" yes; @@ -10472,7 +10550,7 @@ createNode nurbsCurve -n "finger_R1_2_loc12_1crvShape" -p "finger_R1_2_loc"; 0 0 -0.1875 ; createNode transform -n "finger_R1_blade" -p "finger_R1_root"; - rename -uid "127D15E2-4FCF-10E3-BC23-3AABB0F01C61"; + rename -uid "615AE278-4AA2-B634-760B-BF9EC4E4AC68"; addAttr -ci true -k true -sn "bladeRollOffset" -ln "bladeRollOffset" -at "float"; setAttr -l on -k off -cb on ".v"; setAttr -k off -cb on ".tx"; @@ -10482,13 +10560,13 @@ createNode transform -n "finger_R1_blade" -p "finger_R1_root"; setAttr -k off -cb on ".ry"; setAttr -k off -cb on ".rz"; setAttr -cb on ".ro"; - setAttr ".s" -type "double3" 0.99999999999999889 0.999999999999999 0.99999999999999978 ; + setAttr ".s" -type "double3" 1 0.99999999999999989 1.0000000000000002 ; setAttr -l on -k off -cb on ".sx"; setAttr -l on -k off -cb on ".sy"; setAttr -l on -k off -cb on ".sz"; setAttr -k on ".bladeRollOffset"; createNode nurbsCurve -n "finger_R1_bladeShape" -p "finger_R1_blade"; - rename -uid "ECA0D287-42A5-F172-5A64-BDBE3202E07E"; + rename -uid "CBB45D7D-47D9-8EF3-2B49-B69F77EC26D1"; setAttr ".ihi" 0; setAttr -k off ".v"; setAttr ".ove" yes; @@ -10498,12 +10576,12 @@ createNode nurbsCurve -n "finger_R1_bladeShape" -p "finger_R1_blade"; 4 0 1 2 3 4 0 0 0 - 0.77578009473970855 0 0 - 0 0.2585933649132362 0 + 0.77578009473970722 0 0 + 0 0.25859336491323576 0 0 0 0 ; -createNode aimConstraint -n "finger_R1_blade_aimConstraint4" -p "finger_R1_blade"; - rename -uid "26650C56-4551-E3B3-3544-F28A380B9EBE"; +createNode aimConstraint -n "finger_R1_blade_aimConstraint1" -p "finger_R1_blade"; + rename -uid "5C53B649-4AC1-2AC4-4925-AE8F82DDDDCD"; addAttr -dcb 0 -ci true -sn "w0" -ln "finger_R1_0_locW0" -dv 1 -at "double"; setAttr -k on ".nds"; setAttr -k off ".v"; @@ -10519,8 +10597,8 @@ createNode aimConstraint -n "finger_R1_blade_aimConstraint4" -p "finger_R1_blade setAttr ".erp" yes; setAttr ".wut" 2; setAttr -k on ".w0"; -createNode pointConstraint -n "finger_R1_blade_pointConstraint4" -p "finger_R1_blade"; - rename -uid "C726341A-437A-E215-9C91-5D96D41436D6"; +createNode pointConstraint -n "finger_R1_blade_pointConstraint1" -p "finger_R1_blade"; + rename -uid "FA3EC8A5-4265-A2F0-DD28-E8A33F75423D"; addAttr -dcb 0 -ci true -k true -sn "w0" -ln "finger_R1_rootW0" -dv 1 -min 0 -at "double"; setAttr -k on ".nds"; setAttr -k off ".v"; @@ -10534,22 +10612,22 @@ createNode pointConstraint -n "finger_R1_blade_pointConstraint4" -p "finger_R1_b setAttr -k off ".sy"; setAttr -k off ".sz"; setAttr ".erp" yes; - setAttr ".rst" -type "double3" 1.7763568394002505e-015 0 6.6613381477509392e-016 ; + setAttr ".rst" -type "double3" 1.7763568394002505e-015 0 4.4408920985006262e-016 ; setAttr -k on ".w0"; createNode transform -n "finger_R1_crv" -p "finger_R1_root"; - rename -uid "D6D52165-4ABD-7676-50E4-5091DD922D90"; + rename -uid "4107F02D-4091-9736-5887-44BAC8401C67"; setAttr ".ovdt" 1; setAttr ".ove" yes; - setAttr ".t" -type "double3" 11.222433225153177 -28.040620010901328 1.1418187531091266 ; - setAttr ".r" -type "double3" 174.15150560514525 -9.9768879508742767 -125.88865264712163 ; - setAttr ".s" -type "double3" 2.6320983106786109 2.6320983106785985 -2.6320983106786064 ; + setAttr ".t" -type "double3" 11.222433225153212 -28.040620010901346 1.1418187531090593 ; + setAttr ".r" -type "double3" 174.15150560514519 -9.9768879508741506 -125.88865264712166 ; + setAttr ".s" -type "double3" 2.6320983106786131 2.632098310678602 -2.63209831067861 ; createNode nurbsCurve -n "finger_R1_crvShape" -p "finger_R1_crv"; - rename -uid "64ABEF08-457D-4E0C-CD4E-E79A12645B16"; + rename -uid "D17ADC15-4AEA-2E74-A4CF-D6BD53FAAAB0"; setAttr -k off ".v"; setAttr -s 4 ".iog[0].og"; setAttr ".tw" yes; createNode nurbsCurve -n "finger_R1_crvShapeOrig" -p "finger_R1_crv"; - rename -uid "79887E7F-402E-01AC-0C45-499CDEEB3A55"; + rename -uid "4BF1FA11-4C0B-C8C5-C54A-BB976B251117"; setAttr -k off ".v"; setAttr ".io" yes; setAttr ".cc" -type "nurbsCurve" @@ -10562,7 +10640,7 @@ createNode nurbsCurve -n "finger_R1_crvShapeOrig" -p "finger_R1_crv"; 0 0 0 ; createNode transform -n "meta_R0_blade" -p "meta_R0_root"; - rename -uid "30E27998-4DD3-DDC5-53DA-8F9395C0A823"; + rename -uid "25682EBC-465D-7111-9EAB-DF9278E72063"; addAttr -ci true -k true -sn "bladeRollOffset" -ln "bladeRollOffset" -at "float"; setAttr -l on -k off -cb on ".v"; setAttr -k off -cb on ".tx"; @@ -10572,13 +10650,13 @@ createNode transform -n "meta_R0_blade" -p "meta_R0_root"; setAttr -k off -cb on ".ry"; setAttr -k off -cb on ".rz"; setAttr -cb on ".ro"; - setAttr ".s" -type "double3" 1.0000000000000004 0.99999999999999967 1.0000000000000002 ; + setAttr ".s" -type "double3" 0.99999999999999922 0.99999999999999944 0.99999999999999856 ; setAttr -l on -k off -cb on ".sx"; setAttr -l on -k off -cb on ".sy"; setAttr -l on -k off -cb on ".sz"; setAttr -k on ".bladeRollOffset"; createNode nurbsCurve -n "meta_R0_bladeShape" -p "meta_R0_blade"; - rename -uid "E85E1ACA-46F8-6074-1CA1-5789EFF61688"; + rename -uid "41EC5FBD-4358-CB26-CBE1-B19A3BA50A41"; setAttr ".ihi" 0; setAttr -k off ".v"; setAttr ".ove" yes; @@ -10588,12 +10666,12 @@ createNode nurbsCurve -n "meta_R0_bladeShape" -p "meta_R0_blade"; 4 0 1 2 3 4 0 0 0 - 0.18503232649030144 0 0 - 0 0.061677442163433814 0 + 0.18503232649030155 0 0 + 0 0.061677442163433849 0 0 0 0 ; -createNode aimConstraint -n "meta_R0_blade_aimConstraint4" -p "meta_R0_blade"; - rename -uid "635FDB8B-4474-9BBE-70DB-5CB401667586"; +createNode aimConstraint -n "meta_R0_blade_aimConstraint1" -p "meta_R0_blade"; + rename -uid "6DD4E4F8-4000-6FC4-700A-1A847FE91B07"; addAttr -dcb 0 -ci true -sn "w0" -ln "meta_R0_0_locW0" -dv 1 -at "double"; setAttr -k on ".nds"; setAttr -k off ".v"; @@ -10609,8 +10687,8 @@ createNode aimConstraint -n "meta_R0_blade_aimConstraint4" -p "meta_R0_blade"; setAttr ".erp" yes; setAttr ".wut" 2; setAttr -k on ".w0"; -createNode pointConstraint -n "meta_R0_blade_pointConstraint4" -p "meta_R0_blade"; - rename -uid "666314DB-4D42-6B57-6CB0-328E61680BC5"; +createNode pointConstraint -n "meta_R0_blade_pointConstraint1" -p "meta_R0_blade"; + rename -uid "8148ECA7-44D5-E115-E095-DCA9C7187B1C"; addAttr -dcb 0 -ci true -k true -sn "w0" -ln "meta_R0_rootW0" -dv 1 -min 0 -at "double"; setAttr -k on ".nds"; setAttr -k off ".v"; @@ -10624,22 +10702,22 @@ createNode pointConstraint -n "meta_R0_blade_pointConstraint4" -p "meta_R0_blade setAttr -k off ".sy"; setAttr -k off ".sz"; setAttr ".erp" yes; - setAttr ".rst" -type "double3" 0 0 -1.7763568394002505e-015 ; + setAttr ".rst" -type "double3" -4.4408920985006262e-016 0 -3.5527136788005009e-015 ; setAttr -k on ".w0"; createNode transform -n "meta_R0_crv" -p "meta_R0_root"; - rename -uid "843BA030-4FD9-3989-0ED1-26B52DD3DADA"; + rename -uid "D7BE8D6B-418C-A599-27C9-B7A887C76BA8"; setAttr ".ovdt" 1; setAttr ".ove" yes; - setAttr ".t" -type "double3" 3.8070066058400256 -38.076493243284922 11.714163621936679 ; - setAttr ".r" -type "double3" -98.404354317568433 44.654258545702419 -90.724179884703631 ; - setAttr ".s" -type "double3" 3.4032157947041304 3.4032157947041162 -3.4032157947041273 ; + setAttr ".t" -type "double3" 3.8070066058400269 -38.076493243284943 11.714163621936502 ; + setAttr ".r" -type "double3" -98.404354317568462 44.654258545702575 -90.724179884703659 ; + setAttr ".s" -type "double3" 3.403215794704129 3.4032157947041131 -3.4032157947041246 ; createNode nurbsCurve -n "meta_R0_crvShape" -p "meta_R0_crv"; - rename -uid "3AC4A7CD-41CA-F979-0DD4-5481BE9F8BA6"; + rename -uid "EE4EE08C-4CEF-6F71-0EF3-E6B92D648C20"; setAttr -k off ".v"; setAttr -s 4 ".iog[0].og"; setAttr ".tw" yes; createNode nurbsCurve -n "meta_R0_crvShapeOrig" -p "meta_R0_crv"; - rename -uid "AA8C90DA-464F-A640-6172-42966624DAB0"; + rename -uid "23BC45AD-4DF5-D067-6E34-1E8CD60C2232"; setAttr -k off ".v"; setAttr ".io" yes; setAttr ".cc" -type "nurbsCurve" @@ -10652,7 +10730,7 @@ createNode nurbsCurve -n "meta_R0_crvShapeOrig" -p "meta_R0_crv"; 0 0 0 ; createNode transform -n "finger_R0_root" -p "meta_R0_root"; - rename -uid "0264C2C3-4AAD-FA17-B720-B8979F05EEBF"; + rename -uid "C39C8F12-4274-C3D0-D501-109F87EAC8C1"; addAttr -ci true -sn "isGearGuide" -ln "isGearGuide" -dv 1 -min 0 -max 1 -at "bool"; addAttr -ci true -sn "comp_type" -ln "comp_type" -dt "string"; addAttr -ci true -sn "comp_name" -ln "comp_name" -dt "string"; @@ -10668,16 +10746,16 @@ createNode transform -n "finger_R0_root" -p "meta_R0_root"; addAttr -ci true -sn "useIndex" -ln "useIndex" -min 0 -max 1 -at "bool"; addAttr -ci true -sn "parentJointIndex" -ln "parentJointIndex" -at "long"; setAttr -k off -cb on ".v"; - setAttr ".t" -type "double3" -0.1840372367976304 -0.30586006047048642 2.761423395950569 ; + setAttr ".t" -type "double3" -0.18403723679763129 -0.30586006047047221 2.7614233959505565 ; setAttr -k off -cb on ".tx"; setAttr -k off -cb on ".ty"; setAttr -k off -cb on ".tz"; - setAttr ".r" -type "double3" 150.01356893808511 -71.606679450097744 -133.79382708613403 ; + setAttr ".r" -type "double3" 150.01356893808457 -71.60667945009763 -133.79382708613355 ; setAttr -k off -cb on ".rx"; setAttr -k off -cb on ".ry"; setAttr -k off -cb on ".rz"; setAttr -cb on ".ro"; - setAttr ".s" -type "double3" 1.2929668245661814 1.2929668245661798 1.2929668245661825 ; + setAttr ".s" -type "double3" 1.292966824566179 1.2929668245661796 1.2929668245661814 ; setAttr -k off -cb on ".sx"; setAttr -k off -cb on ".sy"; setAttr -k off -cb on ".sz"; @@ -10692,7 +10770,7 @@ createNode transform -n "finger_R0_root" -p "meta_R0_root"; setAttr ".ikrefarray" -type "string" ""; setAttr ".parentJointIndex" -1; createNode nurbsCurve -n "finger_R0_rootShape" -p "finger_R0_root"; - rename -uid "0A587E83-4B57-DEA6-2271-D99CC329951D"; + rename -uid "A2146491-403D-6277-CD13-F5B482791555"; setAttr ".ihi" 0; setAttr -k off ".v"; setAttr ".ove" yes; @@ -10704,8 +10782,8 @@ createNode nurbsCurve -n "finger_R0_rootShape" -p "finger_R0_root"; 0.25 0 0 -0.25 0 0 ; -createNode nurbsCurve -n "finger_R0_root10Shape" -p "finger_R0_root"; - rename -uid "66EB35C2-4993-4392-C838-74B87454B2B4"; +createNode nurbsCurve -n "finger_R0_root1Shape" -p "finger_R0_root"; + rename -uid "BE4A53D6-464A-0C4E-6CA3-85AE6D6D8A01"; setAttr ".ihi" 0; setAttr -k off ".v"; setAttr ".ove" yes; @@ -10717,8 +10795,8 @@ createNode nurbsCurve -n "finger_R0_root10Shape" -p "finger_R0_root"; 0 0.25 0 0 -0.25 0 ; -createNode nurbsCurve -n "finger_R0_root11Shape" -p "finger_R0_root"; - rename -uid "F1BF3F25-43D0-A79E-6CEA-AC858F13D287"; +createNode nurbsCurve -n "finger_R0_root2Shape" -p "finger_R0_root"; + rename -uid "515A5263-465D-40C6-BDA5-5C9D4A01E674"; setAttr ".ihi" 0; setAttr -k off ".v"; setAttr ".ove" yes; @@ -10730,8 +10808,8 @@ createNode nurbsCurve -n "finger_R0_root11Shape" -p "finger_R0_root"; 0 0 0.25 0 0 -0.25 ; -createNode nurbsCurve -n "finger_R0_root12Shape" -p "finger_R0_root"; - rename -uid "ACDEDF38-4A5E-EBF0-0B0B-1F89BE937A99"; +createNode nurbsCurve -n "finger_R0_root3Shape" -p "finger_R0_root"; + rename -uid "1DC19448-4EC5-D74C-3573-EAAFAB88769E"; setAttr ".ihi" 0; setAttr -k off ".v"; setAttr ".ove" yes; @@ -10758,10 +10836,10 @@ createNode nurbsCurve -n "finger_R0_root12Shape" -p "finger_R0_root"; -0.125 -0.125 -0.125 ; createNode transform -n "finger_R0_0_loc" -p "finger_R0_root"; - rename -uid "99A0FB46-47A4-E2EF-5101-83A010F3D7EF"; + rename -uid "5454E769-4BFA-E660-8E95-4D8D0C1DBA65"; addAttr -ci true -sn "isGearGuide" -ln "isGearGuide" -dv 1 -min 0 -max 1 -at "bool"; setAttr -k off -cb on ".v"; - setAttr ".t" -type "double3" 1.0000000000000178 1.0658141036401503e-014 6.2172489379008766e-015 ; + setAttr ".t" -type "double3" 1.0000000000000036 -3.5527136788005009e-015 5.3290705182007514e-015 ; setAttr -k off -cb on ".tx"; setAttr -k off -cb on ".ty"; setAttr -k off -cb on ".tz"; @@ -10769,12 +10847,12 @@ createNode transform -n "finger_R0_0_loc" -p "finger_R0_root"; setAttr -k off -cb on ".ry"; setAttr -k off -cb on ".rz"; setAttr -cb on ".ro"; - setAttr ".s" -type "double3" 0.99999999999999811 0.99999999999999978 0.99999999999999933 ; + setAttr ".s" -type "double3" 0.99999999999999856 0.99999999999999889 0.99999999999999867 ; setAttr -k off -cb on ".sx"; setAttr -k off -cb on ".sy"; setAttr -k off -cb on ".sz"; createNode nurbsCurve -n "finger_R0_0_locShape" -p "finger_R0_0_loc"; - rename -uid "532A4571-464C-DE39-BC14-3EBAD6834F44"; + rename -uid "68F0EC12-49E3-1FC2-0967-EC868FDD060B"; setAttr ".ihi" 0; setAttr -k off ".v"; setAttr ".ove" yes; @@ -10786,8 +10864,8 @@ createNode nurbsCurve -n "finger_R0_0_locShape" -p "finger_R0_0_loc"; 0.25 0 0 -0.25 0 0 ; -createNode nurbsCurve -n "finger_R0_0_loc10Shape" -p "finger_R0_0_loc"; - rename -uid "726EF14D-44CD-635E-0377-05B491D1A732"; +createNode nurbsCurve -n "finger_R0_0_loc1Shape" -p "finger_R0_0_loc"; + rename -uid "0DD80979-4F73-1B3A-05A6-15A7BCDD1842"; setAttr ".ihi" 0; setAttr -k off ".v"; setAttr ".ove" yes; @@ -10799,8 +10877,8 @@ createNode nurbsCurve -n "finger_R0_0_loc10Shape" -p "finger_R0_0_loc"; 0 0.25 0 0 -0.25 0 ; -createNode nurbsCurve -n "finger_R0_0_loc11Shape" -p "finger_R0_0_loc"; - rename -uid "DFA58B53-40F6-5923-0815-82AEE9230890"; +createNode nurbsCurve -n "finger_R0_0_loc2Shape" -p "finger_R0_0_loc"; + rename -uid "A77B96A3-458A-A984-8C66-DCB8E478FD85"; setAttr ".ihi" 0; setAttr -k off ".v"; setAttr ".ove" yes; @@ -10812,8 +10890,8 @@ createNode nurbsCurve -n "finger_R0_0_loc11Shape" -p "finger_R0_0_loc"; 0 0 0.25 0 0 -0.25 ; -createNode nurbsCurve -n "finger_R0_0_loc12Shape" -p "finger_R0_0_loc"; - rename -uid "03D1A12F-4940-AF7E-EB40-678F9A60D160"; +createNode nurbsCurve -n "finger_R0_0_loc3Shape" -p "finger_R0_0_loc"; + rename -uid "F6532829-4339-4D57-3291-DDAE808BADD1"; setAttr ".ihi" 0; setAttr -k off ".v"; setAttr ".ove" yes; @@ -10830,8 +10908,8 @@ createNode nurbsCurve -n "finger_R0_0_loc12Shape" -p "finger_R0_0_loc"; 0 -0.1875 0 -0.1875 0 0 ; -createNode nurbsCurve -n "finger_R0_0_loc12_0crvShape" -p "finger_R0_0_loc"; - rename -uid "F0D97C11-4F2B-96B4-6719-EBA4C68715AE"; +createNode nurbsCurve -n "finger_R0_0_loc3_0crvShape" -p "finger_R0_0_loc"; + rename -uid "494EC9BD-441A-23D6-E9C7-92820493F0A0"; setAttr ".ihi" 0; setAttr -k off ".v"; setAttr ".ove" yes; @@ -10848,8 +10926,8 @@ createNode nurbsCurve -n "finger_R0_0_loc12_0crvShape" -p "finger_R0_0_loc"; 0 0 -0.1875 -0.1875 0 0 ; -createNode nurbsCurve -n "finger_R0_0_loc12_1crvShape" -p "finger_R0_0_loc"; - rename -uid "203BFD0A-46E3-A6E7-33DB-AA9EE39FCD48"; +createNode nurbsCurve -n "finger_R0_0_loc3_1crvShape" -p "finger_R0_0_loc"; + rename -uid "100BE8F4-48F0-D713-BE20-D7ADB4044476"; setAttr ".ihi" 0; setAttr -k off ".v"; setAttr ".ove" yes; @@ -10867,10 +10945,10 @@ createNode nurbsCurve -n "finger_R0_0_loc12_1crvShape" -p "finger_R0_0_loc"; 0 0 -0.1875 ; createNode transform -n "finger_R0_1_loc" -p "finger_R0_0_loc"; - rename -uid "C74786F3-478D-A7EB-9AB6-4E95713B0F2D"; + rename -uid "CA67FD2C-4A06-5506-3F00-C3B18FB42697"; addAttr -ci true -sn "isGearGuide" -ln "isGearGuide" -dv 1 -min 0 -max 1 -at "bool"; setAttr -k off -cb on ".v"; - setAttr ".t" -type "double3" 0.80442008080925653 -1.7763568394002505e-014 -4.4408920985006262e-016 ; + setAttr ".t" -type "double3" 0.80442008080927963 -7.1054273576010019e-015 4.4408920985006262e-016 ; setAttr -k off -cb on ".tx"; setAttr -k off -cb on ".ty"; setAttr -k off -cb on ".tz"; @@ -10878,12 +10956,12 @@ createNode transform -n "finger_R0_1_loc" -p "finger_R0_0_loc"; setAttr -k off -cb on ".ry"; setAttr -k off -cb on ".rz"; setAttr -cb on ".ro"; - setAttr ".s" -type "double3" 1.0000000000000009 0.99999999999999978 0.99999999999999922 ; + setAttr ".s" -type "double3" 1.0000000000000013 1.0000000000000007 1.0000000000000004 ; setAttr -k off -cb on ".sx"; setAttr -k off -cb on ".sy"; setAttr -k off -cb on ".sz"; createNode nurbsCurve -n "finger_R0_1_locShape" -p "finger_R0_1_loc"; - rename -uid "146D016E-4776-B175-4466-398E181BA7AD"; + rename -uid "782D7272-4044-0376-0C67-2986CCBD16FA"; setAttr ".ihi" 0; setAttr -k off ".v"; setAttr ".ove" yes; @@ -10895,8 +10973,8 @@ createNode nurbsCurve -n "finger_R0_1_locShape" -p "finger_R0_1_loc"; 0.25 0 0 -0.25 0 0 ; -createNode nurbsCurve -n "finger_R0_1_loc10Shape" -p "finger_R0_1_loc"; - rename -uid "3CE0F637-4E72-6101-0522-ABBE51A0D9EC"; +createNode nurbsCurve -n "finger_R0_1_loc1Shape" -p "finger_R0_1_loc"; + rename -uid "CFEF9961-4E73-EE1D-AC67-51A407173629"; setAttr ".ihi" 0; setAttr -k off ".v"; setAttr ".ove" yes; @@ -10908,8 +10986,8 @@ createNode nurbsCurve -n "finger_R0_1_loc10Shape" -p "finger_R0_1_loc"; 0 0.25 0 0 -0.25 0 ; -createNode nurbsCurve -n "finger_R0_1_loc11Shape" -p "finger_R0_1_loc"; - rename -uid "504A363B-4872-82DC-1766-0AB9C4023BE9"; +createNode nurbsCurve -n "finger_R0_1_loc2Shape" -p "finger_R0_1_loc"; + rename -uid "954D868E-40E9-5FE6-B269-1A9A63F8F018"; setAttr ".ihi" 0; setAttr -k off ".v"; setAttr ".ove" yes; @@ -10921,8 +10999,8 @@ createNode nurbsCurve -n "finger_R0_1_loc11Shape" -p "finger_R0_1_loc"; 0 0 0.25 0 0 -0.25 ; -createNode nurbsCurve -n "finger_R0_1_loc12Shape" -p "finger_R0_1_loc"; - rename -uid "EFF4357E-4708-7C0F-0F9C-9CAA2D5DE245"; +createNode nurbsCurve -n "finger_R0_1_loc3Shape" -p "finger_R0_1_loc"; + rename -uid "7994E6A8-4718-2002-D7EF-DDBDE191B1A2"; setAttr ".ihi" 0; setAttr -k off ".v"; setAttr ".ove" yes; @@ -10939,8 +11017,8 @@ createNode nurbsCurve -n "finger_R0_1_loc12Shape" -p "finger_R0_1_loc"; 0 -0.1875 0 -0.1875 0 0 ; -createNode nurbsCurve -n "finger_R0_1_loc12_0crvShape" -p "finger_R0_1_loc"; - rename -uid "896C9CF2-4BA5-FC30-8B88-E5BB63EF3D3F"; +createNode nurbsCurve -n "finger_R0_1_loc3_0crvShape" -p "finger_R0_1_loc"; + rename -uid "FBD3C2B0-40C9-0B8C-649C-5FB3609C9A3C"; setAttr ".ihi" 0; setAttr -k off ".v"; setAttr ".ove" yes; @@ -10957,8 +11035,8 @@ createNode nurbsCurve -n "finger_R0_1_loc12_0crvShape" -p "finger_R0_1_loc"; 0 0 -0.1875 -0.1875 0 0 ; -createNode nurbsCurve -n "finger_R0_1_loc12_1crvShape" -p "finger_R0_1_loc"; - rename -uid "856589BA-4168-4CFB-0A9F-A2870A6FF7D3"; +createNode nurbsCurve -n "finger_R0_1_loc3_1crvShape" -p "finger_R0_1_loc"; + rename -uid "453E47DB-420F-C2EC-68A1-D4BEFDD90A77"; setAttr ".ihi" 0; setAttr -k off ".v"; setAttr ".ove" yes; @@ -10976,10 +11054,10 @@ createNode nurbsCurve -n "finger_R0_1_loc12_1crvShape" -p "finger_R0_1_loc"; 0 0 -0.1875 ; createNode transform -n "finger_R0_2_loc" -p "finger_R0_1_loc"; - rename -uid "3CC3C7CF-4E71-4744-F700-BCA0C605EF39"; + rename -uid "168D5293-4BC0-1536-268F-1C94859A316D"; addAttr -ci true -sn "isGearGuide" -ln "isGearGuide" -dv 1 -min 0 -max 1 -at "bool"; setAttr -k off -cb on ".v"; - setAttr ".t" -type "double3" 0.5843137039236872 1.7763568394002505e-014 -7.5495165674510645e-015 ; + setAttr ".t" -type "double3" 0.58431370392368365 2.1316282072803006e-014 -4.8849813083506888e-015 ; setAttr -k off -cb on ".tx"; setAttr -k off -cb on ".ty"; setAttr -k off -cb on ".tz"; @@ -10987,12 +11065,12 @@ createNode transform -n "finger_R0_2_loc" -p "finger_R0_1_loc"; setAttr -k off -cb on ".ry"; setAttr -k off -cb on ".rz"; setAttr -cb on ".ro"; - setAttr ".s" -type "double3" 0.99999999999999911 1.0000000000000002 1.0000000000000002 ; + setAttr ".s" -type "double3" 0.99999999999999967 1 0.99999999999999956 ; setAttr -k off -cb on ".sx"; setAttr -k off -cb on ".sy"; setAttr -k off -cb on ".sz"; createNode nurbsCurve -n "finger_R0_2_locShape" -p "finger_R0_2_loc"; - rename -uid "BE4EF769-4F52-A50C-AEB8-239DC6FA9FB6"; + rename -uid "01EF065D-476E-2CE7-4D77-508CB6681ADF"; setAttr ".ihi" 0; setAttr -k off ".v"; setAttr ".ove" yes; @@ -11004,8 +11082,8 @@ createNode nurbsCurve -n "finger_R0_2_locShape" -p "finger_R0_2_loc"; 0.25 0 0 -0.25 0 0 ; -createNode nurbsCurve -n "finger_R0_2_loc10Shape" -p "finger_R0_2_loc"; - rename -uid "C41C81A1-44B2-92D5-9B0F-CF9FA906D737"; +createNode nurbsCurve -n "finger_R0_2_loc1Shape" -p "finger_R0_2_loc"; + rename -uid "356156B3-496F-0AAB-933C-0CA92B3E5CAE"; setAttr ".ihi" 0; setAttr -k off ".v"; setAttr ".ove" yes; @@ -11017,8 +11095,8 @@ createNode nurbsCurve -n "finger_R0_2_loc10Shape" -p "finger_R0_2_loc"; 0 0.25 0 0 -0.25 0 ; -createNode nurbsCurve -n "finger_R0_2_loc11Shape" -p "finger_R0_2_loc"; - rename -uid "6355F1B3-4E4C-5695-74C2-C99BD3A9E0E6"; +createNode nurbsCurve -n "finger_R0_2_loc2Shape" -p "finger_R0_2_loc"; + rename -uid "F277496E-4B9B-1BCD-E0AD-E5B51EB99BBD"; setAttr ".ihi" 0; setAttr -k off ".v"; setAttr ".ove" yes; @@ -11030,8 +11108,8 @@ createNode nurbsCurve -n "finger_R0_2_loc11Shape" -p "finger_R0_2_loc"; 0 0 0.25 0 0 -0.25 ; -createNode nurbsCurve -n "finger_R0_2_loc12Shape" -p "finger_R0_2_loc"; - rename -uid "F0C9D086-4CA3-F832-0FDF-F2B4D5121C3E"; +createNode nurbsCurve -n "finger_R0_2_loc3Shape" -p "finger_R0_2_loc"; + rename -uid "B03A48BC-486F-4CB3-293F-8FA62738866E"; setAttr ".ihi" 0; setAttr -k off ".v"; setAttr ".ove" yes; @@ -11048,8 +11126,8 @@ createNode nurbsCurve -n "finger_R0_2_loc12Shape" -p "finger_R0_2_loc"; 0 -0.1875 0 -0.1875 0 0 ; -createNode nurbsCurve -n "finger_R0_2_loc12_0crvShape" -p "finger_R0_2_loc"; - rename -uid "DEE4FC07-4DD7-A1AE-5EFF-BFAC27695149"; +createNode nurbsCurve -n "finger_R0_2_loc3_0crvShape" -p "finger_R0_2_loc"; + rename -uid "513EC5E3-4B76-49F8-1047-60A5EF90B9FA"; setAttr ".ihi" 0; setAttr -k off ".v"; setAttr ".ove" yes; @@ -11066,8 +11144,8 @@ createNode nurbsCurve -n "finger_R0_2_loc12_0crvShape" -p "finger_R0_2_loc"; 0 0 -0.1875 -0.1875 0 0 ; -createNode nurbsCurve -n "finger_R0_2_loc12_1crvShape" -p "finger_R0_2_loc"; - rename -uid "88F48BFD-426D-2583-E5C0-D296ED355B27"; +createNode nurbsCurve -n "finger_R0_2_loc3_1crvShape" -p "finger_R0_2_loc"; + rename -uid "65A7249C-4A8C-B6FE-B9EE-A08F53EE29E9"; setAttr ".ihi" 0; setAttr -k off ".v"; setAttr ".ove" yes; @@ -11085,7 +11163,7 @@ createNode nurbsCurve -n "finger_R0_2_loc12_1crvShape" -p "finger_R0_2_loc"; 0 0 -0.1875 ; createNode transform -n "finger_R0_blade" -p "finger_R0_root"; - rename -uid "B9B83662-4B24-2520-264A-768046DAA002"; + rename -uid "7FEAEB34-49B3-C32B-E1FD-B092313C2F74"; addAttr -ci true -k true -sn "bladeRollOffset" -ln "bladeRollOffset" -at "float"; setAttr -l on -k off -cb on ".v"; setAttr -k off -cb on ".tx"; @@ -11095,13 +11173,13 @@ createNode transform -n "finger_R0_blade" -p "finger_R0_root"; setAttr -k off -cb on ".ry"; setAttr -k off -cb on ".rz"; setAttr -cb on ".ro"; - setAttr ".s" -type "double3" 0.99999999999999811 0.99999999999999978 0.99999999999999933 ; + setAttr ".s" -type "double3" 0.99999999999999856 0.99999999999999889 0.99999999999999867 ; setAttr -l on -k off -cb on ".sx"; setAttr -l on -k off -cb on ".sy"; setAttr -l on -k off -cb on ".sz"; setAttr -k on ".bladeRollOffset"; createNode nurbsCurve -n "finger_R0_bladeShape" -p "finger_R0_blade"; - rename -uid "FE00019E-4F08-FCC8-DA9C-908156933DBE"; + rename -uid "D982D430-43BD-B9AD-88CC-A499E07E43E4"; setAttr ".ihi" 0; setAttr -k off ".v"; setAttr ".ove" yes; @@ -11111,12 +11189,12 @@ createNode nurbsCurve -n "finger_R0_bladeShape" -p "finger_R0_blade"; 4 0 1 2 3 4 0 0 0 - 0.77578009473970877 0 0 - 0 0.25859336491323626 0 + 0.77578009473970733 0 0 + 0 0.25859336491323576 0 0 0 0 ; -createNode aimConstraint -n "finger_R0_blade_aimConstraint4" -p "finger_R0_blade"; - rename -uid "4557C1E9-425B-B767-72C0-72ABB0E2C88C"; +createNode aimConstraint -n "finger_R0_blade_aimConstraint1" -p "finger_R0_blade"; + rename -uid "DF901967-41BE-8E0D-B183-35AAE86100E7"; addAttr -dcb 0 -ci true -sn "w0" -ln "finger_R0_0_locW0" -dv 1 -at "double"; setAttr -k on ".nds"; setAttr -k off ".v"; @@ -11132,8 +11210,8 @@ createNode aimConstraint -n "finger_R0_blade_aimConstraint4" -p "finger_R0_blade setAttr ".erp" yes; setAttr ".wut" 2; setAttr -k on ".w0"; -createNode pointConstraint -n "finger_R0_blade_pointConstraint4" -p "finger_R0_blade"; - rename -uid "8062ECEC-4E99-5976-53BA-328334045C3B"; +createNode pointConstraint -n "finger_R0_blade_pointConstraint1" -p "finger_R0_blade"; + rename -uid "E7B7DAEF-4D18-B0E4-8AED-AF86B33740F2"; addAttr -dcb 0 -ci true -k true -sn "w0" -ln "finger_R0_rootW0" -dv 1 -min 0 -at "double"; setAttr -k on ".nds"; setAttr -k off ".v"; @@ -11147,23 +11225,22 @@ createNode pointConstraint -n "finger_R0_blade_pointConstraint4" -p "finger_R0_b setAttr -k off ".sy"; setAttr -k off ".sz"; setAttr ".erp" yes; - setAttr ".rst" -type "double3" 1.7763568394002505e-015 -3.5527136788005009e-015 - 0 ; + setAttr ".rst" -type "double3" 1.7763568394002505e-015 0 8.8817841970012523e-016 ; setAttr -k on ".w0"; createNode transform -n "finger_R0_crv" -p "finger_R0_root"; - rename -uid "90D9D410-4701-3FED-F7D1-D0A69F0DE6FB"; + rename -uid "004DF35B-479F-18C6-07F5-2CB85EAB8ECD"; setAttr ".ovdt" 1; setAttr ".ove" yes; - setAttr ".t" -type "double3" 12.549990763713101 -27.33600805718115 2.4648652761301859 ; - setAttr ".r" -type "double3" 170.83456651198151 -22.111176212556135 -122.87938490445497 ; - setAttr ".s" -type "double3" 2.63209831067861 2.632098310678598 -2.6320983106786033 ; + setAttr ".t" -type "double3" 12.549990763713105 -27.336008057181164 2.464865276130185 ; + setAttr ".r" -type "double3" 170.83456651198151 -22.111176212556099 -122.87938490445499 ; + setAttr ".s" -type "double3" 2.63209831067861 2.6320983106785989 -2.6320983106786033 ; createNode nurbsCurve -n "finger_R0_crvShape" -p "finger_R0_crv"; - rename -uid "28391D55-4A81-894C-8477-1D81420A7CE6"; + rename -uid "A838721B-4E0B-924A-ADA1-51A16C2BAAD7"; setAttr -k off ".v"; setAttr -s 4 ".iog[0].og"; setAttr ".tw" yes; createNode nurbsCurve -n "finger_R0_crvShapeOrig" -p "finger_R0_crv"; - rename -uid "3C6D3A61-4B33-CC02-BDB4-8AAF22A3FCF0"; + rename -uid "2EF32146-4D1C-F24D-D200-0F9019E44D83"; setAttr -k off ".v"; setAttr ".io" yes; setAttr ".cc" -type "nurbsCurve" @@ -11176,7 +11253,7 @@ createNode nurbsCurve -n "finger_R0_crvShapeOrig" -p "finger_R0_crv"; 0 0 0 ; createNode transform -n "thumbRoll_R0_root" -p "meta_R0_root"; - rename -uid "123D5036-494C-70EC-A547-04858A7CA51C"; + rename -uid "24816EEF-4D8D-9AE8-9905-2C931B3FFE01"; addAttr -ci true -sn "isGearGuide" -ln "isGearGuide" -dv 1 -min 0 -max 1 -at "bool"; addAttr -ci true -sn "comp_type" -ln "comp_type" -dt "string"; addAttr -ci true -sn "comp_name" -ln "comp_name" -dt "string"; @@ -11205,16 +11282,16 @@ createNode transform -n "thumbRoll_R0_root" -p "meta_R0_root"; addAttr -ci true -sn "useIndex" -ln "useIndex" -min 0 -max 1 -at "bool"; addAttr -ci true -sn "parentJointIndex" -ln "parentJointIndex" -at "long"; setAttr -k off -cb on ".v"; - setAttr ".t" -type "double3" 0.21303623709073749 -0.22489125789801534 0.13070337452154313 ; + setAttr ".t" -type "double3" 0.21303623709073571 -0.22489125789799402 0.1307033745215378 ; setAttr -k off -cb on ".tx"; setAttr -k off -cb on ".ty"; setAttr -k off -cb on ".tz"; - setAttr ".r" -type "double3" -5.7735227848336113 -84.001563523230956 11.009204406912341 ; + setAttr ".r" -type "double3" -5.77352278483104 -84.001563523230999 11.009204406909994 ; setAttr -k off -cb on ".rx"; setAttr -k off -cb on ".ry"; setAttr -k off -cb on ".rz"; setAttr -cb on ".ro"; - setAttr ".s" -type "double3" 3.4032157947041344 3.4032157947041166 3.4032157947041259 ; + setAttr ".s" -type "double3" 3.4032157947041268 3.4032157947041157 3.4032157947041228 ; setAttr -k off -cb on ".sx"; setAttr -k off -cb on ".sy"; setAttr -k off -cb on ".sz"; @@ -11239,7 +11316,7 @@ createNode transform -n "thumbRoll_R0_root" -p "meta_R0_root"; setAttr ".ctlSize" 0.7; setAttr ".parentJointIndex" -1; createNode nurbsCurve -n "thumbRoll_R0_rootShape" -p "thumbRoll_R0_root"; - rename -uid "E706B0AA-4F02-5594-14E0-D9B384777C33"; + rename -uid "65493F68-46ED-0EBB-517F-FDAA552329DC"; setAttr ".ihi" 0; setAttr -k off ".v"; setAttr ".ove" yes; @@ -11251,8 +11328,8 @@ createNode nurbsCurve -n "thumbRoll_R0_rootShape" -p "thumbRoll_R0_root"; 0.25 0 0 -0.25 0 0 ; -createNode nurbsCurve -n "thumbRoll_R0_root10Shape" -p "thumbRoll_R0_root"; - rename -uid "EE9FF6C2-494F-9436-7549-EBABA6BCB901"; +createNode nurbsCurve -n "thumbRoll_R0_root1Shape" -p "thumbRoll_R0_root"; + rename -uid "91D8125C-41F8-4D32-32E9-E9B828FD828E"; setAttr ".ihi" 0; setAttr -k off ".v"; setAttr ".ove" yes; @@ -11264,8 +11341,8 @@ createNode nurbsCurve -n "thumbRoll_R0_root10Shape" -p "thumbRoll_R0_root"; 0 0.25 0 0 -0.25 0 ; -createNode nurbsCurve -n "thumbRoll_R0_root11Shape" -p "thumbRoll_R0_root"; - rename -uid "587B2EC6-4B8C-5D0B-1AFC-91AFBF51DD20"; +createNode nurbsCurve -n "thumbRoll_R0_root2Shape" -p "thumbRoll_R0_root"; + rename -uid "0D29AAA8-439A-EB05-107B-C3872074097F"; setAttr ".ihi" 0; setAttr -k off ".v"; setAttr ".ove" yes; @@ -11277,8 +11354,8 @@ createNode nurbsCurve -n "thumbRoll_R0_root11Shape" -p "thumbRoll_R0_root"; 0 0 0.25 0 0 -0.25 ; -createNode nurbsCurve -n "thumbRoll_R0_root12Shape" -p "thumbRoll_R0_root"; - rename -uid "34315271-4798-FA65-1DB2-B693B0FFB203"; +createNode nurbsCurve -n "thumbRoll_R0_root3Shape" -p "thumbRoll_R0_root"; + rename -uid "894412AE-4EB6-68F7-D3B2-82A2A72ACCC0"; setAttr ".ihi" 0; setAttr -k off ".v"; setAttr ".ove" yes; @@ -11305,24 +11382,24 @@ createNode nurbsCurve -n "thumbRoll_R0_root12Shape" -p "thumbRoll_R0_root"; -0.125 -0.125 -0.125 ; createNode transform -n "thumbRoll_R0_sizeRef" -p "thumbRoll_R0_root"; - rename -uid "41E91C40-4257-7FEC-214C-A8B7AD6AEB2E"; + rename -uid "BE449C1C-48B2-79DC-7D58-61BC7AD17976"; addAttr -ci true -sn "isGearGuide" -ln "isGearGuide" -dv 1 -min 0 -max 1 -at "bool"; setAttr -k off -cb on ".v"; - setAttr ".t" -type "double3" -8.8817841970012523e-016 4.0856207306205761e-014 1.0000000000000002 ; + setAttr ".t" -type "double3" 8.8817841970012523e-016 4.4408920985006262e-014 0.99999999999999978 ; setAttr -k off -cb on ".tx"; setAttr -k off -cb on ".ty"; setAttr -k off -cb on ".tz"; - setAttr ".r" -type "double3" 0 180.00000000000159 44.430829212205644 ; + setAttr ".r" -type "double3" 0 0 44.430829212205637 ; setAttr -k off -cb on ".rx"; setAttr -k off -cb on ".ry"; setAttr -k off -cb on ".rz"; setAttr -cb on ".ro"; - setAttr ".s" -type "double3" 1.0000000000000016 0.99999999999999745 -1.0000000000000002 ; + setAttr ".s" -type "double3" 1.0000000000000018 0.99999999999999745 1.0000000000000002 ; setAttr -k off -cb on ".sx"; setAttr -k off -cb on ".sy"; setAttr -k off -cb on ".sz"; createNode transform -n "thumb_R0_root" -p "thumbRoll_R0_root"; - rename -uid "4B8D4BCB-411C-65B0-1327-3095908F1282"; + rename -uid "91276550-4C2D-28B9-1C84-089D0D3BA159"; addAttr -ci true -sn "isGearGuide" -ln "isGearGuide" -dv 1 -min 0 -max 1 -at "bool"; addAttr -ci true -sn "comp_type" -ln "comp_type" -dt "string"; addAttr -ci true -sn "comp_name" -ln "comp_name" -dt "string"; @@ -11338,16 +11415,16 @@ createNode transform -n "thumb_R0_root" -p "thumbRoll_R0_root"; addAttr -ci true -sn "useIndex" -ln "useIndex" -min 0 -max 1 -at "bool"; addAttr -ci true -sn "parentJointIndex" -ln "parentJointIndex" -at "long"; setAttr -k off -cb on ".v"; - setAttr ".t" -type "double3" 3.5527136788005009e-015 -1.7763568394002505e-015 4.9960036108132044e-016 ; + setAttr ".t" -type "double3" 1.7763568394002505e-015 0 4.4408920985006262e-016 ; setAttr -k off -cb on ".tx"; setAttr -k off -cb on ".ty"; setAttr -k off -cb on ".tz"; - setAttr ".r" -type "double3" 110.8010863191307 -43.900240512232457 -37.623269198287836 ; + setAttr ".r" -type "double3" 110.80108631913045 -43.900240512232578 -37.623269198287652 ; setAttr -k off -cb on ".rx"; setAttr -k off -cb on ".ry"; setAttr -k off -cb on ".rz"; setAttr -cb on ".ro"; - setAttr ".s" -type "double3" 0.489364347035111 0.48936434703510961 0.48936434703511195 ; + setAttr ".s" -type "double3" 0.48936434703511095 0.48936434703511 0.48936434703511156 ; setAttr -k off -cb on ".sx"; setAttr -k off -cb on ".sy"; setAttr -k off -cb on ".sz"; @@ -11362,7 +11439,7 @@ createNode transform -n "thumb_R0_root" -p "thumbRoll_R0_root"; setAttr ".ikrefarray" -type "string" ""; setAttr ".parentJointIndex" -1; createNode nurbsCurve -n "thumb_R0_rootShape" -p "thumb_R0_root"; - rename -uid "1B549365-4290-CEDF-0B28-CCBB74E1B970"; + rename -uid "7163DCB8-4F7D-7A5D-574C-EBB43FF1027B"; setAttr ".ihi" 0; setAttr -k off ".v"; setAttr ".ove" yes; @@ -11374,8 +11451,8 @@ createNode nurbsCurve -n "thumb_R0_rootShape" -p "thumb_R0_root"; 0.25 0 0 -0.25 0 0 ; -createNode nurbsCurve -n "thumb_R0_root10Shape" -p "thumb_R0_root"; - rename -uid "1E342236-46DA-3AA9-2540-A89BC4012FB7"; +createNode nurbsCurve -n "thumb_R0_root1Shape" -p "thumb_R0_root"; + rename -uid "12D480E2-4BAB-9B03-7544-E1913E4313B7"; setAttr ".ihi" 0; setAttr -k off ".v"; setAttr ".ove" yes; @@ -11387,8 +11464,8 @@ createNode nurbsCurve -n "thumb_R0_root10Shape" -p "thumb_R0_root"; 0 0.25 0 0 -0.25 0 ; -createNode nurbsCurve -n "thumb_R0_root11Shape" -p "thumb_R0_root"; - rename -uid "E3701EBD-43A1-08FC-9E2D-26B57446BAF2"; +createNode nurbsCurve -n "thumb_R0_root2Shape" -p "thumb_R0_root"; + rename -uid "F4EC9374-42F7-E4B9-D97D-13B3FB3DD849"; setAttr ".ihi" 0; setAttr -k off ".v"; setAttr ".ove" yes; @@ -11400,8 +11477,8 @@ createNode nurbsCurve -n "thumb_R0_root11Shape" -p "thumb_R0_root"; 0 0 0.25 0 0 -0.25 ; -createNode nurbsCurve -n "thumb_R0_root12Shape" -p "thumb_R0_root"; - rename -uid "0833510B-4ED5-7863-FE2A-188BEFFB9E76"; +createNode nurbsCurve -n "thumb_R0_root3Shape" -p "thumb_R0_root"; + rename -uid "AD731237-41D0-5B7F-AA2A-CC90E6EB025F"; setAttr ".ihi" 0; setAttr -k off ".v"; setAttr ".ove" yes; @@ -11428,24 +11505,24 @@ createNode nurbsCurve -n "thumb_R0_root12Shape" -p "thumb_R0_root"; -0.125 -0.125 -0.125 ; createNode transform -n "thumb_R0_0_loc" -p "thumb_R0_root"; - rename -uid "66950EE1-4079-3FF5-9D49-99A2DA75EEB1"; + rename -uid "B45350C2-4243-8515-A7E3-1395E1240EEE"; addAttr -ci true -sn "isGearGuide" -ln "isGearGuide" -dv 1 -min 0 -max 1 -at "bool"; setAttr -k off -cb on ".v"; - setAttr ".t" -type "double3" 0.86054350703469851 0.0024095775966941346 -3.5527136788005009e-015 ; + setAttr ".t" -type "double3" 0.86054350703470028 0.0024095775966985755 -1.0658141036401503e-014 ; setAttr -k off -cb on ".tx"; setAttr -k off -cb on ".ty"; setAttr -k off -cb on ".tz"; - setAttr ".r" -type "double3" 0 0 -4.2384257498060753 ; + setAttr ".r" -type "double3" 0 0 -4.2384257498060718 ; setAttr -k off -cb on ".rx"; setAttr -k off -cb on ".ry"; setAttr -k off -cb on ".rz"; setAttr -cb on ".ro"; - setAttr ".s" -type "double3" 0.99999999999999922 0.99999999999999922 0.99999999999999956 ; + setAttr ".s" -type "double3" 0.99999999999999922 0.99999999999999978 1.0000000000000007 ; setAttr -k off -cb on ".sx"; setAttr -k off -cb on ".sy"; setAttr -k off -cb on ".sz"; createNode nurbsCurve -n "thumb_R0_0_locShape" -p "thumb_R0_0_loc"; - rename -uid "3BF3BF84-4950-3C65-8571-5F893D74015E"; + rename -uid "3F85E77E-4B02-AA1B-9081-A18CFEFF81CC"; setAttr ".ihi" 0; setAttr -k off ".v"; setAttr ".ove" yes; @@ -11457,8 +11534,8 @@ createNode nurbsCurve -n "thumb_R0_0_locShape" -p "thumb_R0_0_loc"; 0.25 0 0 -0.25 0 0 ; -createNode nurbsCurve -n "thumb_R0_0_loc10Shape" -p "thumb_R0_0_loc"; - rename -uid "DC80FD5C-4309-FE51-C994-36B1E9F715CA"; +createNode nurbsCurve -n "thumb_R0_0_loc1Shape" -p "thumb_R0_0_loc"; + rename -uid "257230E3-433F-41D2-8937-1287E512115D"; setAttr ".ihi" 0; setAttr -k off ".v"; setAttr ".ove" yes; @@ -11470,8 +11547,8 @@ createNode nurbsCurve -n "thumb_R0_0_loc10Shape" -p "thumb_R0_0_loc"; 0 0.25 0 0 -0.25 0 ; -createNode nurbsCurve -n "thumb_R0_0_loc11Shape" -p "thumb_R0_0_loc"; - rename -uid "E8D7D5B8-4373-C8CF-6B98-14906195B9DF"; +createNode nurbsCurve -n "thumb_R0_0_loc2Shape" -p "thumb_R0_0_loc"; + rename -uid "0D25C0B1-4450-68F8-5488-FC8D3D99F579"; setAttr ".ihi" 0; setAttr -k off ".v"; setAttr ".ove" yes; @@ -11483,8 +11560,8 @@ createNode nurbsCurve -n "thumb_R0_0_loc11Shape" -p "thumb_R0_0_loc"; 0 0 0.25 0 0 -0.25 ; -createNode nurbsCurve -n "thumb_R0_0_loc12Shape" -p "thumb_R0_0_loc"; - rename -uid "9D7F0300-4859-EBA3-50AB-25842321E6F7"; +createNode nurbsCurve -n "thumb_R0_0_loc3Shape" -p "thumb_R0_0_loc"; + rename -uid "68D8B66D-46FF-ADDC-5390-978C4A8C4DCD"; setAttr ".ihi" 0; setAttr -k off ".v"; setAttr ".ove" yes; @@ -11501,8 +11578,8 @@ createNode nurbsCurve -n "thumb_R0_0_loc12Shape" -p "thumb_R0_0_loc"; 0 -0.1875 0 -0.1875 0 0 ; -createNode nurbsCurve -n "thumb_R0_0_loc12_0crvShape" -p "thumb_R0_0_loc"; - rename -uid "6FF7243F-4483-8B98-5F83-4687933CF133"; +createNode nurbsCurve -n "thumb_R0_0_loc3_0crvShape" -p "thumb_R0_0_loc"; + rename -uid "A1B0FED7-4D2F-1E55-A610-D5AD62523B64"; setAttr ".ihi" 0; setAttr -k off ".v"; setAttr ".ove" yes; @@ -11519,8 +11596,8 @@ createNode nurbsCurve -n "thumb_R0_0_loc12_0crvShape" -p "thumb_R0_0_loc"; 0 0 -0.1875 -0.1875 0 0 ; -createNode nurbsCurve -n "thumb_R0_0_loc12_1crvShape" -p "thumb_R0_0_loc"; - rename -uid "B3302B82-4B4E-9F54-E55A-4AA2F150325F"; +createNode nurbsCurve -n "thumb_R0_0_loc3_1crvShape" -p "thumb_R0_0_loc"; + rename -uid "29DCE6C5-45D4-F9DA-E00D-7B87882B924C"; setAttr ".ihi" 0; setAttr -k off ".v"; setAttr ".ove" yes; @@ -11538,10 +11615,10 @@ createNode nurbsCurve -n "thumb_R0_0_loc12_1crvShape" -p "thumb_R0_0_loc"; 0 0 -0.1875 ; createNode transform -n "thumb_R0_1_loc" -p "thumb_R0_0_loc"; - rename -uid "9216C108-4430-DC80-D16B-CDAD2B4636AD"; + rename -uid "74B33B7D-4887-2365-295B-FFA90843345B"; addAttr -ci true -sn "isGearGuide" -ln "isGearGuide" -dv 1 -min 0 -max 1 -at "bool"; setAttr -k off -cb on ".v"; - setAttr ".t" -type "double3" 0.76442580145521077 -3.5527136788005009e-015 2.1316282072803006e-014 ; + setAttr ".t" -type "double3" 0.76442580145521255 -1.7763568394002505e-015 2.4868995751603507e-014 ; setAttr -k off -cb on ".tx"; setAttr -k off -cb on ".ty"; setAttr -k off -cb on ".tz"; @@ -11549,12 +11626,12 @@ createNode transform -n "thumb_R0_1_loc" -p "thumb_R0_0_loc"; setAttr -k off -cb on ".ry"; setAttr -k off -cb on ".rz"; setAttr -cb on ".ro"; - setAttr ".s" -type "double3" 0.99999999999999978 1 0.99999999999999933 ; + setAttr ".s" -type "double3" 0.99999999999999933 0.99999999999999889 0.99999999999999989 ; setAttr -k off -cb on ".sx"; setAttr -k off -cb on ".sy"; setAttr -k off -cb on ".sz"; createNode nurbsCurve -n "thumb_R0_1_locShape" -p "thumb_R0_1_loc"; - rename -uid "79CBB4FF-48FE-D73A-99C6-6F829E39F140"; + rename -uid "632A9D8D-44D5-B7FB-5D31-0EBBD0C354ED"; setAttr ".ihi" 0; setAttr -k off ".v"; setAttr ".ove" yes; @@ -11566,8 +11643,8 @@ createNode nurbsCurve -n "thumb_R0_1_locShape" -p "thumb_R0_1_loc"; 0.25 0 0 -0.25 0 0 ; -createNode nurbsCurve -n "thumb_R0_1_loc10Shape" -p "thumb_R0_1_loc"; - rename -uid "ECB129DE-4864-46A4-4BA5-E489E0B7924B"; +createNode nurbsCurve -n "thumb_R0_1_loc1Shape" -p "thumb_R0_1_loc"; + rename -uid "D00264ED-4997-AACF-DFE5-D8B3200F3975"; setAttr ".ihi" 0; setAttr -k off ".v"; setAttr ".ove" yes; @@ -11579,8 +11656,8 @@ createNode nurbsCurve -n "thumb_R0_1_loc10Shape" -p "thumb_R0_1_loc"; 0 0.25 0 0 -0.25 0 ; -createNode nurbsCurve -n "thumb_R0_1_loc11Shape" -p "thumb_R0_1_loc"; - rename -uid "B22EBCFF-4440-C954-9DC8-3B8378908B5F"; +createNode nurbsCurve -n "thumb_R0_1_loc2Shape" -p "thumb_R0_1_loc"; + rename -uid "7D70256B-4FA0-D604-E351-979F5D9C0C6E"; setAttr ".ihi" 0; setAttr -k off ".v"; setAttr ".ove" yes; @@ -11592,8 +11669,8 @@ createNode nurbsCurve -n "thumb_R0_1_loc11Shape" -p "thumb_R0_1_loc"; 0 0 0.25 0 0 -0.25 ; -createNode nurbsCurve -n "thumb_R0_1_loc12Shape" -p "thumb_R0_1_loc"; - rename -uid "F5984D20-42BA-B4F0-4C24-A99ADE479519"; +createNode nurbsCurve -n "thumb_R0_1_loc3Shape" -p "thumb_R0_1_loc"; + rename -uid "BD85CF9A-468B-80A8-8017-8492D5747A9E"; setAttr ".ihi" 0; setAttr -k off ".v"; setAttr ".ove" yes; @@ -11610,8 +11687,8 @@ createNode nurbsCurve -n "thumb_R0_1_loc12Shape" -p "thumb_R0_1_loc"; 0 -0.1875 0 -0.1875 0 0 ; -createNode nurbsCurve -n "thumb_R0_1_loc12_0crvShape" -p "thumb_R0_1_loc"; - rename -uid "38D4C196-4CF9-66D8-7CBA-CF8056B4CA15"; +createNode nurbsCurve -n "thumb_R0_1_loc3_0crvShape" -p "thumb_R0_1_loc"; + rename -uid "1B5887D1-426D-AAE5-DF80-E39F5DDA8C04"; setAttr ".ihi" 0; setAttr -k off ".v"; setAttr ".ove" yes; @@ -11628,8 +11705,8 @@ createNode nurbsCurve -n "thumb_R0_1_loc12_0crvShape" -p "thumb_R0_1_loc"; 0 0 -0.1875 -0.1875 0 0 ; -createNode nurbsCurve -n "thumb_R0_1_loc12_1crvShape" -p "thumb_R0_1_loc"; - rename -uid "F3482B96-41D8-1F0D-7E4C-65B28ED5D546"; +createNode nurbsCurve -n "thumb_R0_1_loc3_1crvShape" -p "thumb_R0_1_loc"; + rename -uid "E0929390-4A1D-D2A1-667E-FDBE51BF8E26"; setAttr ".ihi" 0; setAttr -k off ".v"; setAttr ".ove" yes; @@ -11647,10 +11724,10 @@ createNode nurbsCurve -n "thumb_R0_1_loc12_1crvShape" -p "thumb_R0_1_loc"; 0 0 -0.1875 ; createNode transform -n "thumb_R0_2_loc" -p "thumb_R0_1_loc"; - rename -uid "3DF4D5D7-43B0-3933-45E9-61A2DD2EAE97"; + rename -uid "D8C43DD3-4CD5-D744-DE28-CD8E433A22D4"; addAttr -ci true -sn "isGearGuide" -ln "isGearGuide" -dv 1 -min 0 -max 1 -at "bool"; setAttr -k off -cb on ".v"; - setAttr ".t" -type "double3" 0.59482114915510742 9.7699626167013776e-015 -1.0658141036401503e-014 ; + setAttr ".t" -type "double3" 0.5948211491551092 6.2172489379008766e-015 3.5527136788005009e-015 ; setAttr -k off -cb on ".tx"; setAttr -k off -cb on ".ty"; setAttr -k off -cb on ".tz"; @@ -11658,12 +11735,12 @@ createNode transform -n "thumb_R0_2_loc" -p "thumb_R0_1_loc"; setAttr -k off -cb on ".ry"; setAttr -k off -cb on ".rz"; setAttr -cb on ".ro"; - setAttr ".s" -type "double3" 1 1 1.0000000000000009 ; + setAttr ".s" -type "double3" 1 1.0000000000000004 0.99999999999999978 ; setAttr -k off -cb on ".sx"; setAttr -k off -cb on ".sy"; setAttr -k off -cb on ".sz"; createNode nurbsCurve -n "thumb_R0_2_locShape" -p "thumb_R0_2_loc"; - rename -uid "03BF7802-4A45-846D-BBA7-36A8109B3567"; + rename -uid "61C4FEB4-4CF8-C3D0-9931-75BE9E72070B"; setAttr ".ihi" 0; setAttr -k off ".v"; setAttr ".ove" yes; @@ -11675,8 +11752,8 @@ createNode nurbsCurve -n "thumb_R0_2_locShape" -p "thumb_R0_2_loc"; 0.25 0 0 -0.25 0 0 ; -createNode nurbsCurve -n "thumb_R0_2_loc10Shape" -p "thumb_R0_2_loc"; - rename -uid "55F1B365-4298-9B14-EF44-C492D78B66D0"; +createNode nurbsCurve -n "thumb_R0_2_loc1Shape" -p "thumb_R0_2_loc"; + rename -uid "D06F8C2E-4AFC-95AC-6D3B-40B34767F769"; setAttr ".ihi" 0; setAttr -k off ".v"; setAttr ".ove" yes; @@ -11688,8 +11765,8 @@ createNode nurbsCurve -n "thumb_R0_2_loc10Shape" -p "thumb_R0_2_loc"; 0 0.25 0 0 -0.25 0 ; -createNode nurbsCurve -n "thumb_R0_2_loc11Shape" -p "thumb_R0_2_loc"; - rename -uid "31F2B7F4-4EE2-4681-DA99-528A51F88CB4"; +createNode nurbsCurve -n "thumb_R0_2_loc2Shape" -p "thumb_R0_2_loc"; + rename -uid "FB89C178-45A0-CE66-8898-D6BDE4816557"; setAttr ".ihi" 0; setAttr -k off ".v"; setAttr ".ove" yes; @@ -11701,8 +11778,8 @@ createNode nurbsCurve -n "thumb_R0_2_loc11Shape" -p "thumb_R0_2_loc"; 0 0 0.25 0 0 -0.25 ; -createNode nurbsCurve -n "thumb_R0_2_loc12Shape" -p "thumb_R0_2_loc"; - rename -uid "4F48C43C-4940-87A2-D9BE-5BBBFDD514E8"; +createNode nurbsCurve -n "thumb_R0_2_loc3Shape" -p "thumb_R0_2_loc"; + rename -uid "D10CCD56-41A1-C3C3-83FB-E88302D91816"; setAttr ".ihi" 0; setAttr -k off ".v"; setAttr ".ove" yes; @@ -11719,8 +11796,8 @@ createNode nurbsCurve -n "thumb_R0_2_loc12Shape" -p "thumb_R0_2_loc"; 0 -0.1875 0 -0.1875 0 0 ; -createNode nurbsCurve -n "thumb_R0_2_loc12_0crvShape" -p "thumb_R0_2_loc"; - rename -uid "B4F80CF5-4670-7DB2-1579-29BF4DE2328C"; +createNode nurbsCurve -n "thumb_R0_2_loc3_0crvShape" -p "thumb_R0_2_loc"; + rename -uid "F18A52DC-4BEB-972C-D743-8B91451E7805"; setAttr ".ihi" 0; setAttr -k off ".v"; setAttr ".ove" yes; @@ -11737,8 +11814,8 @@ createNode nurbsCurve -n "thumb_R0_2_loc12_0crvShape" -p "thumb_R0_2_loc"; 0 0 -0.1875 -0.1875 0 0 ; -createNode nurbsCurve -n "thumb_R0_2_loc12_1crvShape" -p "thumb_R0_2_loc"; - rename -uid "73B73536-4FD2-F51B-7CC9-129A92ECF9CA"; +createNode nurbsCurve -n "thumb_R0_2_loc3_1crvShape" -p "thumb_R0_2_loc"; + rename -uid "6A7CDDDF-4408-C90D-5B37-C996451D4D70"; setAttr ".ihi" 0; setAttr -k off ".v"; setAttr ".ove" yes; @@ -11756,7 +11833,7 @@ createNode nurbsCurve -n "thumb_R0_2_loc12_1crvShape" -p "thumb_R0_2_loc"; 0 0 -0.1875 ; createNode transform -n "thumb_R0_blade" -p "thumb_R0_root"; - rename -uid "D7246740-4D8A-0854-46F2-35818714A4E5"; + rename -uid "13DDE89F-481E-6FAC-5C87-CB8E37AEA9C7"; addAttr -ci true -k true -sn "bladeRollOffset" -ln "bladeRollOffset" -at "float"; setAttr -l on -k off -cb on ".v"; setAttr -k off -cb on ".tx"; @@ -11766,13 +11843,13 @@ createNode transform -n "thumb_R0_blade" -p "thumb_R0_root"; setAttr -k off -cb on ".ry"; setAttr -k off -cb on ".rz"; setAttr -cb on ".ro"; - setAttr ".s" -type "double3" 0.99999999999999833 0.999999999999998 0.99999999999999867 ; + setAttr ".s" -type "double3" 0.99999999999999833 0.99999999999999822 0.99999999999999933 ; setAttr -l on -k off -cb on ".sx"; setAttr -l on -k off -cb on ".sy"; setAttr -l on -k off -cb on ".sz"; setAttr -k on ".bladeRollOffset"; createNode nurbsCurve -n "thumb_R0_bladeShape" -p "thumb_R0_blade"; - rename -uid "B5FDB6FB-4FF9-E5DE-6C03-92BDA38B1C39"; + rename -uid "C440EB17-4444-1B53-DF74-2581728A8FD8"; setAttr ".ihi" 0; setAttr -k off ".v"; setAttr ".ove" yes; @@ -11782,12 +11859,12 @@ createNode nurbsCurve -n "thumb_R0_bladeShape" -p "thumb_R0_blade"; 4 0 1 2 3 4 0 0 0 - 0.29361860822106661 0 0 - 0 0.097872869407022209 0 + 0.29361860822106656 0 0 + 0 0.097872869407022181 0 0 0 0 ; -createNode aimConstraint -n "thumb_R0_blade_aimConstraint4" -p "thumb_R0_blade"; - rename -uid "4994E681-4FA5-8986-112F-37BB816FBF84"; +createNode aimConstraint -n "thumb_R0_blade_aimConstraint1" -p "thumb_R0_blade"; + rename -uid "DD75F73D-4488-6EB5-2DD1-F3BDF8741046"; addAttr -dcb 0 -ci true -sn "w0" -ln "thumb_R0_0_locW0" -dv 1 -at "double"; setAttr -k on ".nds"; setAttr -k off ".v"; @@ -11802,10 +11879,10 @@ createNode aimConstraint -n "thumb_R0_blade_aimConstraint4" -p "thumb_R0_blade"; setAttr -k off ".sz"; setAttr ".erp" yes; setAttr ".wut" 2; - setAttr ".rsrr" -type "double3" 3.3116584830426423e-016 2.365420225460605e-013 0.16043147704029556 ; + setAttr ".rsrr" -type "double3" 9.934975449124265e-016 7.0962606763791992e-013 0.16043147704029556 ; setAttr -k on ".w0"; -createNode pointConstraint -n "thumb_R0_blade_pointConstraint4" -p "thumb_R0_blade"; - rename -uid "1C46812E-40BC-A51A-BD41-A9BDC9AC8165"; +createNode pointConstraint -n "thumb_R0_blade_pointConstraint1" -p "thumb_R0_blade"; + rename -uid "C3D9B721-404A-DC7B-21B7-4F961DE25EF2"; addAttr -dcb 0 -ci true -k true -sn "w0" -ln "thumb_R0_rootW0" -dv 1 -min 0 -at "double"; setAttr -k on ".nds"; setAttr -k off ".v"; @@ -11819,22 +11896,23 @@ createNode pointConstraint -n "thumb_R0_blade_pointConstraint4" -p "thumb_R0_bla setAttr -k off ".sy"; setAttr -k off ".sz"; setAttr ".erp" yes; - setAttr ".rst" -type "double3" 0 -8.8817841970012523e-016 3.5527136788005009e-015 ; + setAttr ".rst" -type "double3" -1.7763568394002505e-015 1.7763568394002505e-015 + 0 ; setAttr -k on ".w0"; createNode transform -n "thumb_R0_crv" -p "thumb_R0_root"; - rename -uid "377A3ECE-40FA-926B-E518-2D941C87E89A"; + rename -uid "3A2053EF-4389-D0CB-F55A-FD811A5B3108"; setAttr ".ovdt" 1; setAttr ".ove" yes; - setAttr ".t" -type "double3" 14.330153889042867 -7.0737929587543151 17.725867635512827 ; - setAttr ".r" -type "double3" -55.556977946373244 -63.100734454449544 102.71864583729831 ; - setAttr ".s" -type "double3" 2.0434672163157246 2.0434672163157197 -2.0434672163157264 ; + setAttr ".t" -type "double3" 14.330153889042874 -7.0737929587543205 17.725867635512831 ; + setAttr ".r" -type "double3" -55.556977946373188 -63.100734454449608 102.71864583729831 ; + setAttr ".s" -type "double3" 2.0434672163157268 2.0434672163157197 -2.0434672163157255 ; createNode nurbsCurve -n "thumb_R0_crvShape" -p "thumb_R0_crv"; - rename -uid "3C01BECF-4454-FE53-42DF-2BA4F9DBBFF9"; + rename -uid "35577138-4F2D-2518-EA73-968BB37C0244"; setAttr -k off ".v"; setAttr -s 4 ".iog[0].og"; setAttr ".tw" yes; createNode nurbsCurve -n "thumb_R0_crvShapeOrig" -p "thumb_R0_crv"; - rename -uid "2233CDD5-45C9-3AF9-463A-E5A2E1252CB7"; + rename -uid "9070D187-4770-846D-20E1-D783FE8D061F"; setAttr -k off ".v"; setAttr ".io" yes; setAttr ".cc" -type "nurbsCurve" @@ -11847,19 +11925,19 @@ createNode nurbsCurve -n "thumb_R0_crvShapeOrig" -p "thumb_R0_crv"; 0 0 0 ; createNode transform -n "arm_R0_crv" -p "arm_R0_root"; - rename -uid "7A939C10-4A88-01FC-90E4-978D42720BB0"; + rename -uid "46C05DF5-4392-1F43-BDAD-6AA1725690D7"; setAttr ".ovdt" 1; setAttr ".ove" yes; - setAttr ".t" -type "double3" 9.5792744434200383 -11.862061807473031 1.1564412205648709 ; - setAttr ".r" -type "double3" 2.1534408611046039 175.80406292066331 45.437740049298206 ; - setAttr ".s" -type "double3" 1.0495082267377434 1.0495082267377387 -1.0495082267377405 ; + setAttr ".t" -type "double3" 9.5792744434200294 -11.862061807473017 1.1564412205648611 ; + setAttr ".r" -type "double3" 2.1534408611045781 175.80406292066331 45.437740049298284 ; + setAttr ".s" -type "double3" 1.0495082267377442 1.049508226737738 -1.0495082267377405 ; createNode nurbsCurve -n "arm_R0_crvShape" -p "arm_R0_crv"; - rename -uid "37863709-40C3-AB49-C1D5-FC9B480CE816"; + rename -uid "35849586-42EF-8722-CFFD-A4A08D71E460"; setAttr -k off ".v"; setAttr -s 4 ".iog[0].og"; setAttr ".tw" yes; createNode nurbsCurve -n "arm_R0_crvShapeOrig" -p "arm_R0_crv"; - rename -uid "2DB68AB9-4DBD-4FFA-72BD-45A6FA498925"; + rename -uid "369DFBFE-4CF3-B890-36AD-1DAC4D975C4C"; setAttr -k off ".v"; setAttr ".io" yes; setAttr ".cc" -type "nurbsCurve" @@ -11872,7 +11950,7 @@ createNode nurbsCurve -n "arm_R0_crvShapeOrig" -p "arm_R0_crv"; 0 0 0 ; createNode transform -n "shoulder_R0_blade" -p "shoulder_R0_root"; - rename -uid "FF6ABEE5-4DCF-CBE7-87AC-F0A8E4EADFA7"; + rename -uid "F33A4CF8-49E2-C126-EE00-DA89A5C8F912"; addAttr -ci true -k true -sn "bladeRollOffset" -ln "bladeRollOffset" -at "float"; setAttr -l on -k off -cb on ".v"; setAttr -k off -cb on ".tx"; @@ -11882,13 +11960,13 @@ createNode transform -n "shoulder_R0_blade" -p "shoulder_R0_root"; setAttr -k off -cb on ".ry"; setAttr -k off -cb on ".rz"; setAttr -cb on ".ro"; - setAttr ".s" -type "double3" 1.0000000000000002 0.99999999999999611 0.99999999999999767 ; + setAttr ".s" -type "double3" 0.99999999999999989 0.999999999999997 0.999999999999998 ; setAttr -l on -k off -cb on ".sx"; setAttr -l on -k off -cb on ".sy"; setAttr -l on -k off -cb on ".sz"; setAttr -k on ".bladeRollOffset" 90; createNode nurbsCurve -n "shoulder_R0_bladeShape" -p "shoulder_R0_blade"; - rename -uid "25891283-4047-9E6A-E57E-4C882D8620CA"; + rename -uid "B651C082-4288-917A-9AB4-149514FE8450"; setAttr ".ihi" 0; setAttr -k off ".v"; setAttr ".ove" yes; @@ -11898,12 +11976,12 @@ createNode nurbsCurve -n "shoulder_R0_bladeShape" -p "shoulder_R0_blade"; 4 0 1 2 3 4 0 0 0 - 0.6000000000000012 0 0 - 0 0.2000000000000004 0 + 0.60000000000000109 0 0 + 0 0.20000000000000037 0 0 0 0 ; -createNode aimConstraint -n "shoulder_R0_blade_aimConstraint4" -p "shoulder_R0_blade"; - rename -uid "95CE0BB0-4BFD-7281-5CB8-D1BD4D3AF314"; +createNode aimConstraint -n "shoulder_R0_blade_aimConstraint1" -p "shoulder_R0_blade"; + rename -uid "2BACFE67-444F-1F5E-235C-8B9791487A8E"; addAttr -dcb 0 -ci true -sn "w0" -ln "shoulder_R0_tipW0" -dv 1 -at "double"; setAttr -k on ".nds"; setAttr -k off ".v"; @@ -11918,11 +11996,11 @@ createNode aimConstraint -n "shoulder_R0_blade_aimConstraint4" -p "shoulder_R0_b setAttr -k off ".sz"; setAttr ".erp" yes; setAttr ".wut" 2; - setAttr ".o" -type "double3" 90 179.99999999999937 180.00000000000011 ; - setAttr ".rsrr" -type "double3" 23.386262286473194 122.53864021838235 110.03040021520766 ; + setAttr ".o" -type "double3" 90 179.99999999999957 180.00000000000017 ; + setAttr ".rsrr" -type "double3" 23.386262286472864 122.53864021838231 110.03040021520752 ; setAttr -k on ".w0"; -createNode pointConstraint -n "shoulder_R0_blade_pointConstraint4" -p "shoulder_R0_blade"; - rename -uid "3370165E-48E4-71CC-B006-E094640C3499"; +createNode pointConstraint -n "shoulder_R0_blade_pointConstraint1" -p "shoulder_R0_blade"; + rename -uid "9D137017-4C2F-67A2-D51C-CDB7D82E39F5"; addAttr -dcb 0 -ci true -k true -sn "w0" -ln "shoulder_R0_rootW0" -dv 1 -min 0 -at "double"; setAttr -k on ".nds"; @@ -11937,23 +12015,22 @@ createNode pointConstraint -n "shoulder_R0_blade_pointConstraint4" -p "shoulder_ setAttr -k off ".sy"; setAttr -k off ".sz"; setAttr ".erp" yes; - setAttr ".rst" -type "double3" -1.7763568394002505e-015 -1.9081958235744878e-017 - -2.7755575615628914e-017 ; + setAttr ".rst" -type "double3" 0 -2.2551405187698492e-017 0 ; setAttr -k on ".w0"; createNode transform -n "shoulder_R0_crv" -p "shoulder_R0_root"; - rename -uid "6E8EE9DA-49E8-3064-C40A-DA9474A34C95"; + rename -uid "224F71DD-4491-6D1C-6D6C-29829DD048AF"; setAttr ".ovdt" 1; setAttr ".ove" yes; - setAttr ".t" -type "double3" 15.507521470509836 0.0092761897382758005 0.11673327753265025 ; + setAttr ".t" -type "double3" 15.507521470509836 0.009276189738275686 0.1167332775326503 ; setAttr ".r" -type "double3" 90.803889228153793 -89.999999999999986 0 ; - setAttr ".s" -type "double3" 1.0495082267377416 1.0495082267377367 -1.0495082267377369 ; + setAttr ".s" -type "double3" 1.0495082267377418 1.0495082267377369 -1.0495082267377369 ; createNode nurbsCurve -n "shoulder_R0_crvShape" -p "shoulder_R0_crv"; - rename -uid "8FF23251-4A71-6284-9BE0-7883C6AEDBF4"; + rename -uid "E84EF6EB-4389-606B-AB17-15AAA94A7D56"; setAttr -k off ".v"; setAttr -s 4 ".iog[0].og"; setAttr ".tw" yes; createNode nurbsCurve -n "shoulder_R0_crvShapeOrig" -p "shoulder_R0_crv"; - rename -uid "4846B445-4AE0-F037-3A8E-90BBAE58F7A5"; + rename -uid "E2B9F091-41AF-4630-A6C6-A8B23611E1CD"; setAttr -k off ".v"; setAttr ".io" yes; setAttr ".cc" -type "nurbsCurve" @@ -11964,7 +12041,7 @@ createNode nurbsCurve -n "shoulder_R0_crvShapeOrig" -p "shoulder_R0_crv"; 0 0 0 ; createNode transform -n "spine_C0_blade" -p "spine_C0_root"; - rename -uid "A80F13F2-43AD-38B6-8453-469C20962B74"; + rename -uid "C4748D35-494C-0F0A-D9A1-05AC660BCB3C"; addAttr -ci true -k true -sn "bladeRollOffset" -ln "bladeRollOffset" -at "float"; setAttr -l on -k off -cb on ".v"; setAttr -k off -cb on ".tx"; @@ -11980,7 +12057,7 @@ createNode transform -n "spine_C0_blade" -p "spine_C0_root"; setAttr -l on -k off -cb on ".sz"; setAttr -k on ".bladeRollOffset"; createNode nurbsCurve -n "spine_C0_bladeShape" -p "spine_C0_blade"; - rename -uid "E4A013CC-4EDF-73BF-527F-1F8980A3D378"; + rename -uid "CE8E0A54-4319-69E6-8954-D696E76D9DFA"; setAttr ".ihi" 0; setAttr -k off ".v"; setAttr ".ove" yes; @@ -11995,7 +12072,7 @@ createNode nurbsCurve -n "spine_C0_bladeShape" -p "spine_C0_blade"; 0 0 0 ; createNode aimConstraint -n "spine_C0_blade_aimConstraint9" -p "spine_C0_blade"; - rename -uid "1C494D74-4F9B-E59F-A6F4-3099BA4D66D9"; + rename -uid "D67A33CA-445D-921B-350F-92BCB257431D"; addAttr -dcb 0 -ci true -sn "w0" -ln "spine_C0_effW0" -dv 1 -at "double"; setAttr -k on ".nds"; setAttr -k off ".v"; @@ -12012,7 +12089,7 @@ createNode aimConstraint -n "spine_C0_blade_aimConstraint9" -p "spine_C0_blade"; setAttr ".wut" 2; setAttr -k on ".w0"; createNode pointConstraint -n "spine_C0_blade_pointConstraint9" -p "spine_C0_blade"; - rename -uid "414CEC77-4671-D708-7EAF-AA8281C289C5"; + rename -uid "A6B1B695-4357-214A-F3EE-8B8DB9C36EAC"; addAttr -dcb 0 -ci true -k true -sn "w0" -ln "spine_C0_rootW0" -dv 1 -min 0 -at "double"; setAttr -k on ".nds"; setAttr -k off ".v"; @@ -12029,19 +12106,19 @@ createNode pointConstraint -n "spine_C0_blade_pointConstraint9" -p "spine_C0_bla setAttr ".rst" -type "double3" 0 5.5511151231257827e-017 -6.1629758220391547e-033 ; setAttr -k on ".w0"; createNode transform -n "spine_C0_crv" -p "spine_C0_root"; - rename -uid "ED9A197E-4888-DA79-872D-87984B194B38"; + rename -uid "ED1A9FCF-4629-F737-A18A-A3BFEEA21731"; setAttr ".ovdt" 1; setAttr ".ove" yes; setAttr ".t" -type "double3" -11.390533694690752 0.19144303592045889 -4.2508893276606347e-017 ; setAttr ".r" -type "double3" 90.000000000000014 89.999999999999986 0 ; setAttr ".s" -type "double3" 1.0495082267377405 1.0495082267377402 1.0495082267377389 ; createNode nurbsCurve -n "spine_C0_crvShape" -p "spine_C0_crv"; - rename -uid "A78C4254-41AA-AB23-A89B-C68F4739D6B3"; + rename -uid "B01EB818-4379-6A3C-B685-E1B36C989856"; setAttr -k off ".v"; setAttr -s 4 ".iog[0].og"; setAttr ".tw" yes; createNode nurbsCurve -n "spine_C0_crvShapeOrig" -p "spine_C0_crv"; - rename -uid "25232329-4AD5-5D3A-5B7D-9C986CCE5489"; + rename -uid "15E35F93-4486-FF5D-96BA-50BFFAA2FA7F"; setAttr -k off ".v"; setAttr ".io" yes; setAttr ".cc" -type "nurbsCurve" @@ -12052,7 +12129,7 @@ createNode nurbsCurve -n "spine_C0_crvShapeOrig" -p "spine_C0_crv"; 0 0 0 ; createNode transform -n "leg_L0_root" -p "spine_C0_root"; - rename -uid "3DED1CD7-40ED-CF7A-E42C-E48870B26F02"; + rename -uid "A6B1914A-41D3-9EC2-0226-268567DBF824"; addAttr -ci true -sn "isGearGuide" -ln "isGearGuide" -dv 1 -min 0 -max 1 -at "bool"; addAttr -ci true -sn "comp_type" -ln "comp_type" -dt "string"; addAttr -ci true -sn "comp_name" -ln "comp_name" -dt "string"; @@ -12094,9 +12171,9 @@ createNode transform -n "leg_L0_root" -p "spine_C0_root"; setAttr ".ui_host" -type "string" "legUI_L0_root"; setAttr ".ctlGrp" -type "string" ""; setAttr ".blend" 1; - setAttr ".ikrefarray" -type "string" "local_C0_root"; - setAttr ".upvrefarray" -type "string" ""; - setAttr ".pinrefarray" -type "string" ""; + setAttr ".ikrefarray" -type "string" "local_C0_root,global_C0_root"; + setAttr ".upvrefarray" -type "string" "local_C0_root,global_C0_root"; + setAttr ".pinrefarray" -type "string" "local_C0_root,global_C0_root"; setAttr ".maxstretch" 1.5; setAttr ".div0" 2; setAttr ".div1" 2; @@ -12104,7 +12181,7 @@ createNode transform -n "leg_L0_root" -p "spine_C0_root"; setAttr -k on ".sq_profile"; setAttr ".parentJointIndex" -1; createNode nurbsCurve -n "leg_L0_rootShape" -p "leg_L0_root"; - rename -uid "B73C9355-4FB3-0C57-BA0A-028F914CD61D"; + rename -uid "95A5142C-48D7-FDCE-1874-26AF53AA6A7D"; setAttr ".ihi" 0; setAttr -k off ".v"; setAttr ".ove" yes; @@ -12117,7 +12194,7 @@ createNode nurbsCurve -n "leg_L0_rootShape" -p "leg_L0_root"; -0.25 0 0 ; createNode nurbsCurve -n "leg_L0_root25Shape" -p "leg_L0_root"; - rename -uid "ADB33EDA-4BA2-7509-E1D8-24B5AF7757D5"; + rename -uid "B8840B16-479C-06E1-2CC6-F6AB6108A03D"; setAttr ".ihi" 0; setAttr -k off ".v"; setAttr ".ove" yes; @@ -12130,7 +12207,7 @@ createNode nurbsCurve -n "leg_L0_root25Shape" -p "leg_L0_root"; 0 -0.25 0 ; createNode nurbsCurve -n "leg_L0_root26Shape" -p "leg_L0_root"; - rename -uid "ED524A63-45E0-F566-D1E1-7B8171E57EF0"; + rename -uid "ECB6766C-420F-7263-94C9-6F9D8C489784"; setAttr ".ihi" 0; setAttr -k off ".v"; setAttr ".ove" yes; @@ -12143,7 +12220,7 @@ createNode nurbsCurve -n "leg_L0_root26Shape" -p "leg_L0_root"; 0 0 -0.25 ; createNode nurbsCurve -n "leg_L0_root27Shape" -p "leg_L0_root"; - rename -uid "8413835D-4D23-5C90-B6EA-2C9185A18BC4"; + rename -uid "658E7D9A-47F1-1892-F7E3-3B936F0F9CE2"; setAttr ".ihi" 0; setAttr -k off ".v"; setAttr ".ove" yes; @@ -12170,7 +12247,7 @@ createNode nurbsCurve -n "leg_L0_root27Shape" -p "leg_L0_root"; -0.125 -0.125 -0.125 ; createNode transform -n "leg_L0_knee" -p "leg_L0_root"; - rename -uid "2E1A1E86-4380-2A65-B08A-A89B3B65A084"; + rename -uid "923BA23D-420A-4D63-2DEB-F6B9B405E6EF"; addAttr -ci true -sn "isGearGuide" -ln "isGearGuide" -dv 1 -min 0 -max 1 -at "bool"; setAttr -k off -cb on ".v"; setAttr ".t" -type "double3" -4.3795369772304023 0.38838644346805862 -2.4424906541753444e-015 ; @@ -12187,7 +12264,7 @@ createNode transform -n "leg_L0_knee" -p "leg_L0_root"; setAttr -k off -cb on ".sy"; setAttr -k off -cb on ".sz"; createNode nurbsCurve -n "leg_L0_kneeShape" -p "leg_L0_knee"; - rename -uid "5DBBD3BE-4F4F-9EDF-0BBA-2EBF2AE50D53"; + rename -uid "DD074F3D-45D2-BE16-343D-349BF42413F7"; setAttr ".ihi" 0; setAttr -k off ".v"; setAttr ".ove" yes; @@ -12200,7 +12277,7 @@ createNode nurbsCurve -n "leg_L0_kneeShape" -p "leg_L0_knee"; -0.25 0 0 ; createNode nurbsCurve -n "leg_L0_knee25Shape" -p "leg_L0_knee"; - rename -uid "EB7E82E5-4B4A-CB9F-FB9C-5DBAFB42B173"; + rename -uid "E3D41F3E-40D1-7C9E-BF64-F4B50F20348C"; setAttr ".ihi" 0; setAttr -k off ".v"; setAttr ".ove" yes; @@ -12213,7 +12290,7 @@ createNode nurbsCurve -n "leg_L0_knee25Shape" -p "leg_L0_knee"; 0 -0.25 0 ; createNode nurbsCurve -n "leg_L0_knee26Shape" -p "leg_L0_knee"; - rename -uid "44A4D7E5-4955-E6CF-982E-3E86CA78B2B4"; + rename -uid "DCC110EA-4999-6F28-6D48-70A7CC83DE7A"; setAttr ".ihi" 0; setAttr -k off ".v"; setAttr ".ove" yes; @@ -12226,7 +12303,7 @@ createNode nurbsCurve -n "leg_L0_knee26Shape" -p "leg_L0_knee"; 0 0 -0.25 ; createNode nurbsCurve -n "leg_L0_knee27Shape" -p "leg_L0_knee"; - rename -uid "F9D5C88F-4022-DADA-7904-3F8D102445FA"; + rename -uid "056CBBD0-47B7-A946-E3A7-3E83B29F621A"; setAttr ".ihi" 0; setAttr -k off ".v"; setAttr ".ove" yes; @@ -12244,7 +12321,7 @@ createNode nurbsCurve -n "leg_L0_knee27Shape" -p "leg_L0_knee"; -0.1875 0 0 ; createNode nurbsCurve -n "leg_L0_knee27_0crvShape" -p "leg_L0_knee"; - rename -uid "33E00CD4-4FB8-4F13-AB05-42B647C52A41"; + rename -uid "C92A1CF3-49BF-893C-7585-DE865B4CA1C4"; setAttr ".ihi" 0; setAttr -k off ".v"; setAttr ".ove" yes; @@ -12262,7 +12339,7 @@ createNode nurbsCurve -n "leg_L0_knee27_0crvShape" -p "leg_L0_knee"; -0.1875 0 0 ; createNode nurbsCurve -n "leg_L0_knee27_1crvShape" -p "leg_L0_knee"; - rename -uid "B0788B16-4515-9B01-B384-1C8C0C2B3EB9"; + rename -uid "84A01020-414D-77B1-4735-28BF4C7BE28A"; setAttr ".ihi" 0; setAttr -k off ".v"; setAttr ".ove" yes; @@ -12280,7 +12357,7 @@ createNode nurbsCurve -n "leg_L0_knee27_1crvShape" -p "leg_L0_knee"; 0 0 -0.1875 ; createNode transform -n "leg_L0_ankle" -p "leg_L0_knee"; - rename -uid "D43B8114-4B05-FD45-A293-DAA91E9DEF43"; + rename -uid "AAE86E00-49E2-29D2-CDD1-758FB4E978A7"; addAttr -ci true -sn "isGearGuide" -ln "isGearGuide" -dv 1 -min 0 -max 1 -at "bool"; setAttr -k off -cb on ".v"; setAttr ".t" -type "double3" 8.8817841970012523e-016 -4.5414075240554164 -0.74630601922779805 ; @@ -12296,7 +12373,7 @@ createNode transform -n "leg_L0_ankle" -p "leg_L0_knee"; setAttr -k off -cb on ".sy"; setAttr -k off -cb on ".sz"; createNode nurbsCurve -n "leg_L0_ankleShape" -p "leg_L0_ankle"; - rename -uid "0F25DA49-4F10-88CC-FE9E-30B728456F23"; + rename -uid "4D4C8304-4938-D77D-F602-19B2B805BEE0"; setAttr ".ihi" 0; setAttr -k off ".v"; setAttr ".ove" yes; @@ -12309,7 +12386,7 @@ createNode nurbsCurve -n "leg_L0_ankleShape" -p "leg_L0_ankle"; -0.25 0 0 ; createNode nurbsCurve -n "leg_L0_ankle25Shape" -p "leg_L0_ankle"; - rename -uid "6D1C3639-4A26-F3BE-7061-99B2CC9EAB10"; + rename -uid "061309F7-416A-4AA3-54FE-C9A2A0D3CA30"; setAttr ".ihi" 0; setAttr -k off ".v"; setAttr ".ove" yes; @@ -12322,7 +12399,7 @@ createNode nurbsCurve -n "leg_L0_ankle25Shape" -p "leg_L0_ankle"; 0 -0.25 0 ; createNode nurbsCurve -n "leg_L0_ankle26Shape" -p "leg_L0_ankle"; - rename -uid "2297F6E8-46E5-B676-ABF5-69B0E01D812D"; + rename -uid "86BCC08C-439F-EE4C-3371-0CA893362130"; setAttr ".ihi" 0; setAttr -k off ".v"; setAttr ".ove" yes; @@ -12335,7 +12412,7 @@ createNode nurbsCurve -n "leg_L0_ankle26Shape" -p "leg_L0_ankle"; 0 0 -0.25 ; createNode nurbsCurve -n "leg_L0_ankle27Shape" -p "leg_L0_ankle"; - rename -uid "90B01792-4033-DDCE-CB89-298504FDF1CB"; + rename -uid "8A708312-4068-2209-CC8A-33B01B007F8E"; setAttr ".ihi" 0; setAttr -k off ".v"; setAttr ".ove" yes; @@ -12353,7 +12430,7 @@ createNode nurbsCurve -n "leg_L0_ankle27Shape" -p "leg_L0_ankle"; -0.1875 0 0 ; createNode nurbsCurve -n "leg_L0_ankle27_0crvShape" -p "leg_L0_ankle"; - rename -uid "9D0913F1-4322-5D1D-3AF9-B795A308057A"; + rename -uid "B3287BF3-4A69-8583-544C-E09028DEB457"; setAttr ".ihi" 0; setAttr -k off ".v"; setAttr ".ove" yes; @@ -12371,7 +12448,7 @@ createNode nurbsCurve -n "leg_L0_ankle27_0crvShape" -p "leg_L0_ankle"; -0.1875 0 0 ; createNode nurbsCurve -n "leg_L0_ankle27_1crvShape" -p "leg_L0_ankle"; - rename -uid "D1E14A8C-4A1A-2CBA-A3CB-E5B0F5747502"; + rename -uid "0AC27DCA-42BA-64A4-E988-97B63CD2ED88"; setAttr ".ihi" 0; setAttr -k off ".v"; setAttr ".ove" yes; @@ -12389,7 +12466,7 @@ createNode nurbsCurve -n "leg_L0_ankle27_1crvShape" -p "leg_L0_ankle"; 0 0 -0.1875 ; createNode transform -n "leg_L0_eff" -p "leg_L0_ankle"; - rename -uid "C38326C7-43E7-9042-9B5B-52B67ECAAC54"; + rename -uid "FF17A6BD-4697-141E-9F48-0FA8E3EE2A93"; addAttr -ci true -sn "isGearGuide" -ln "isGearGuide" -dv 1 -min 0 -max 1 -at "bool"; setAttr -k off -cb on ".v"; setAttr ".t" -type "double3" 0 2.886579864025407e-015 2.1377206638691333 ; @@ -12406,7 +12483,7 @@ createNode transform -n "leg_L0_eff" -p "leg_L0_ankle"; setAttr -k off -cb on ".sy"; setAttr -k off -cb on ".sz"; createNode nurbsCurve -n "leg_L0_effShape" -p "leg_L0_eff"; - rename -uid "769DCC92-4F33-9E57-1F3E-83A425B0F0E8"; + rename -uid "B4F4ED0F-4C2A-1822-1891-95A4AC9449FB"; setAttr ".ihi" 0; setAttr -k off ".v"; setAttr ".ove" yes; @@ -12419,7 +12496,7 @@ createNode nurbsCurve -n "leg_L0_effShape" -p "leg_L0_eff"; -0.25 0 0 ; createNode nurbsCurve -n "leg_L0_eff25Shape" -p "leg_L0_eff"; - rename -uid "08754BCA-4AB0-A2D0-CBD7-7488BF33AF63"; + rename -uid "A1F2FAE4-4F1D-7BDC-0387-67BF44725973"; setAttr ".ihi" 0; setAttr -k off ".v"; setAttr ".ove" yes; @@ -12432,7 +12509,7 @@ createNode nurbsCurve -n "leg_L0_eff25Shape" -p "leg_L0_eff"; 0 -0.25 0 ; createNode nurbsCurve -n "leg_L0_eff26Shape" -p "leg_L0_eff"; - rename -uid "CDA556BF-4FD9-4BEF-D295-9E9417679C6E"; + rename -uid "7456022A-418B-1285-C322-77827A6FCAAD"; setAttr ".ihi" 0; setAttr -k off ".v"; setAttr ".ove" yes; @@ -12445,7 +12522,7 @@ createNode nurbsCurve -n "leg_L0_eff26Shape" -p "leg_L0_eff"; 0 0 -0.25 ; createNode nurbsCurve -n "leg_L0_eff27Shape" -p "leg_L0_eff"; - rename -uid "2D235D27-4D4C-07A6-244F-EE9F48F1FC24"; + rename -uid "0F5F4BFB-475F-183D-5EAD-4990F471F1C0"; setAttr ".ihi" 0; setAttr -k off ".v"; setAttr ".ove" yes; @@ -12463,7 +12540,7 @@ createNode nurbsCurve -n "leg_L0_eff27Shape" -p "leg_L0_eff"; -0.1875 0 0 ; createNode nurbsCurve -n "leg_L0_eff27_0crvShape" -p "leg_L0_eff"; - rename -uid "46A0FD2E-483A-8E4B-E3EF-DAB64B694AD4"; + rename -uid "A129E9B9-425A-306D-6C06-0FB4578B1113"; setAttr ".ihi" 0; setAttr -k off ".v"; setAttr ".ove" yes; @@ -12481,7 +12558,7 @@ createNode nurbsCurve -n "leg_L0_eff27_0crvShape" -p "leg_L0_eff"; -0.1875 0 0 ; createNode nurbsCurve -n "leg_L0_eff27_1crvShape" -p "leg_L0_eff"; - rename -uid "5880E246-42D6-4028-03CD-3083A126029F"; + rename -uid "88D87585-4C38-2AC5-D3B7-DE8C90302A17"; setAttr ".ihi" 0; setAttr -k off ".v"; setAttr ".ove" yes; @@ -12499,7 +12576,7 @@ createNode nurbsCurve -n "leg_L0_eff27_1crvShape" -p "leg_L0_eff"; 0 0 -0.1875 ; createNode transform -n "foot_L0_root" -p "leg_L0_ankle"; - rename -uid "FF88F0D0-43C7-2570-4AF1-A287A7D178D4"; + rename -uid "3F57ED83-438E-D562-D784-E8AA42103FC0"; addAttr -ci true -sn "isGearGuide" -ln "isGearGuide" -dv 1 -min 0 -max 1 -at "bool"; addAttr -ci true -sn "comp_type" -ln "comp_type" -dt "string"; addAttr -ci true -sn "comp_name" -ln "comp_name" -dt "string"; @@ -12534,7 +12611,7 @@ createNode transform -n "foot_L0_root" -p "leg_L0_ankle"; setAttr ".useRollCtl" yes; setAttr ".parentJointIndex" -1; createNode nurbsCurve -n "foot_L0_rootShape" -p "foot_L0_root"; - rename -uid "E6C51719-49DC-65A5-A343-60BB0924044D"; + rename -uid "A13F22E1-49A0-171B-83D1-1EA7A152E28E"; setAttr ".ihi" 0; setAttr -k off ".v"; setAttr ".ove" yes; @@ -12547,7 +12624,7 @@ createNode nurbsCurve -n "foot_L0_rootShape" -p "foot_L0_root"; -0.25 0 0 ; createNode nurbsCurve -n "foot_L0_root25Shape" -p "foot_L0_root"; - rename -uid "217037FB-4876-B3FA-E80A-2E8FC88B692E"; + rename -uid "423ECD57-4120-F9EC-EFAE-8DB0A1666B6C"; setAttr ".ihi" 0; setAttr -k off ".v"; setAttr ".ove" yes; @@ -12560,7 +12637,7 @@ createNode nurbsCurve -n "foot_L0_root25Shape" -p "foot_L0_root"; 0 -0.25 0 ; createNode nurbsCurve -n "foot_L0_root26Shape" -p "foot_L0_root"; - rename -uid "CFFB631E-4D49-3A17-6C82-8D8D92EEA39D"; + rename -uid "E00BBA34-47EA-6796-C9BD-B5B29EA990AA"; setAttr ".ihi" 0; setAttr -k off ".v"; setAttr ".ove" yes; @@ -12573,7 +12650,7 @@ createNode nurbsCurve -n "foot_L0_root26Shape" -p "foot_L0_root"; 0 0 -0.25 ; createNode nurbsCurve -n "foot_L0_root27Shape" -p "foot_L0_root"; - rename -uid "ADF88041-4D94-B3E4-F0C5-53A199DCE677"; + rename -uid "F586D6DF-4C49-D7B8-8ABD-A2A4BB2044DA"; setAttr ".ihi" 0; setAttr -k off ".v"; setAttr ".ove" yes; @@ -12600,7 +12677,7 @@ createNode nurbsCurve -n "foot_L0_root27Shape" -p "foot_L0_root"; -0.125 -0.125 -0.125 ; createNode transform -n "foot_L0_0_loc" -p "foot_L0_root"; - rename -uid "AE47AC95-4789-894D-9667-FC915737F089"; + rename -uid "C422F798-4957-435B-6C74-D1872B962B0F"; addAttr -ci true -sn "isGearGuide" -ln "isGearGuide" -dv 1 -min 0 -max 1 -at "bool"; setAttr -k off -cb on ".v"; setAttr ".t" -type "double3" 1.3903626031763237 -0.77423199221117356 -0.00087398468478294689 ; @@ -12617,7 +12694,7 @@ createNode transform -n "foot_L0_0_loc" -p "foot_L0_root"; setAttr -k off -cb on ".sy"; setAttr -k off -cb on ".sz"; createNode nurbsCurve -n "foot_L0_0_locShape" -p "foot_L0_0_loc"; - rename -uid "A2D0279C-4451-FDC8-2BF2-A787697A1FF4"; + rename -uid "53F6EC9F-4220-BC88-5F17-CDA41DD2FA54"; setAttr ".ihi" 0; setAttr -k off ".v"; setAttr ".ove" yes; @@ -12630,7 +12707,7 @@ createNode nurbsCurve -n "foot_L0_0_locShape" -p "foot_L0_0_loc"; -0.25 0 0 ; createNode nurbsCurve -n "foot_L0_0_loc25Shape" -p "foot_L0_0_loc"; - rename -uid "8A49BF70-4F9E-F51D-D4EB-9CABDA3AA239"; + rename -uid "2F9F4D65-4BA5-6486-5B6C-4AA716C4C660"; setAttr ".ihi" 0; setAttr -k off ".v"; setAttr ".ove" yes; @@ -12643,7 +12720,7 @@ createNode nurbsCurve -n "foot_L0_0_loc25Shape" -p "foot_L0_0_loc"; 0 -0.25 0 ; createNode nurbsCurve -n "foot_L0_0_loc26Shape" -p "foot_L0_0_loc"; - rename -uid "5761F470-4C99-7AD9-F64A-21B214EC01D9"; + rename -uid "0A680F42-439B-712F-27AC-BE8FCC4F6C0F"; setAttr ".ihi" 0; setAttr -k off ".v"; setAttr ".ove" yes; @@ -12656,7 +12733,7 @@ createNode nurbsCurve -n "foot_L0_0_loc26Shape" -p "foot_L0_0_loc"; 0 0 -0.25 ; createNode nurbsCurve -n "foot_L0_0_loc27Shape" -p "foot_L0_0_loc"; - rename -uid "9FF62DE8-4838-3C5A-1D32-829530E52100"; + rename -uid "4573EFA4-4C07-6094-3D96-07BB19D867F4"; setAttr ".ihi" 0; setAttr -k off ".v"; setAttr ".ove" yes; @@ -12674,7 +12751,7 @@ createNode nurbsCurve -n "foot_L0_0_loc27Shape" -p "foot_L0_0_loc"; -0.1875 0 0 ; createNode nurbsCurve -n "foot_L0_0_loc27_0crvShape" -p "foot_L0_0_loc"; - rename -uid "97161137-4B8E-8A0D-A89A-DFB979D74678"; + rename -uid "61AFE7DB-47EE-A119-859F-6FB54EFB8DCD"; setAttr ".ihi" 0; setAttr -k off ".v"; setAttr ".ove" yes; @@ -12692,7 +12769,7 @@ createNode nurbsCurve -n "foot_L0_0_loc27_0crvShape" -p "foot_L0_0_loc"; -0.1875 0 0 ; createNode nurbsCurve -n "foot_L0_0_loc27_1crvShape" -p "foot_L0_0_loc"; - rename -uid "EB6641F6-4CB7-7C21-521C-A0AEACD5691A"; + rename -uid "699811F0-4EF3-9036-2216-52A88ABCC752"; setAttr ".ihi" 0; setAttr -k off ".v"; setAttr ".ove" yes; @@ -12710,7 +12787,7 @@ createNode nurbsCurve -n "foot_L0_0_loc27_1crvShape" -p "foot_L0_0_loc"; 0 0 -0.1875 ; createNode transform -n "foot_L0_1_loc" -p "foot_L0_0_loc"; - rename -uid "FBCFD713-4C59-D3B0-1C5C-388499524E80"; + rename -uid "1DE16A91-47D0-FE8B-9937-12A6478A52C6"; addAttr -ci true -sn "isGearGuide" -ln "isGearGuide" -dv 1 -min 0 -max 1 -at "bool"; setAttr -k off -cb on ".v"; setAttr ".t" -type "double3" 0.57241624162444471 0.052400542543840967 0.00053566803260851614 ; @@ -12727,7 +12804,7 @@ createNode transform -n "foot_L0_1_loc" -p "foot_L0_0_loc"; setAttr -k off -cb on ".sy"; setAttr -k off -cb on ".sz"; createNode nurbsCurve -n "foot_L0_1_locShape" -p "foot_L0_1_loc"; - rename -uid "37A4A38A-4A5C-D4EB-135B-39BA12F2813E"; + rename -uid "B0FDFE80-4100-5A99-54B8-ADA5231E81DF"; setAttr ".ihi" 0; setAttr -k off ".v"; setAttr ".ove" yes; @@ -12740,7 +12817,7 @@ createNode nurbsCurve -n "foot_L0_1_locShape" -p "foot_L0_1_loc"; -0.25 0 0 ; createNode nurbsCurve -n "foot_L0_1_loc25Shape" -p "foot_L0_1_loc"; - rename -uid "72BC23D2-431C-6127-D998-92A10BF586AA"; + rename -uid "DE209C0F-4E0B-A62C-4A03-3096CD4765E4"; setAttr ".ihi" 0; setAttr -k off ".v"; setAttr ".ove" yes; @@ -12753,7 +12830,7 @@ createNode nurbsCurve -n "foot_L0_1_loc25Shape" -p "foot_L0_1_loc"; 0 -0.25 0 ; createNode nurbsCurve -n "foot_L0_1_loc26Shape" -p "foot_L0_1_loc"; - rename -uid "502E9883-44EE-1E81-630B-02A65A4F06E2"; + rename -uid "E792E176-4026-F486-6598-9A9D99EB14CE"; setAttr ".ihi" 0; setAttr -k off ".v"; setAttr ".ove" yes; @@ -12766,7 +12843,7 @@ createNode nurbsCurve -n "foot_L0_1_loc26Shape" -p "foot_L0_1_loc"; 0 0 -0.25 ; createNode nurbsCurve -n "foot_L0_1_loc27Shape" -p "foot_L0_1_loc"; - rename -uid "43B5E9D6-45FA-6DE5-A795-3EBBCEDB1D49"; + rename -uid "C96C86CA-4AC2-AE17-DF55-6582E9F1AED3"; setAttr ".ihi" 0; setAttr -k off ".v"; setAttr ".ove" yes; @@ -12784,7 +12861,7 @@ createNode nurbsCurve -n "foot_L0_1_loc27Shape" -p "foot_L0_1_loc"; -0.1875 0 0 ; createNode nurbsCurve -n "foot_L0_1_loc27_0crvShape" -p "foot_L0_1_loc"; - rename -uid "9B260B1F-4C02-C37B-D52A-BE845504D1DE"; + rename -uid "2E35E74B-4D34-3229-A2E8-7E9A9107C7DE"; setAttr ".ihi" 0; setAttr -k off ".v"; setAttr ".ove" yes; @@ -12802,7 +12879,7 @@ createNode nurbsCurve -n "foot_L0_1_loc27_0crvShape" -p "foot_L0_1_loc"; -0.1875 0 0 ; createNode nurbsCurve -n "foot_L0_1_loc27_1crvShape" -p "foot_L0_1_loc"; - rename -uid "02DA8AD4-4DB7-AC2F-BAD4-649BCE060E18"; + rename -uid "E1B6B5FA-490F-E9CC-6577-E0BE32C5865C"; setAttr ".ihi" 0; setAttr -k off ".v"; setAttr ".ove" yes; @@ -12820,7 +12897,7 @@ createNode nurbsCurve -n "foot_L0_1_loc27_1crvShape" -p "foot_L0_1_loc"; 0 0 -0.1875 ; createNode transform -n "foot_L0_2_loc" -p "foot_L0_1_loc"; - rename -uid "93163497-4164-D6D8-1DF9-41A303C3D2A5"; + rename -uid "7CFBE210-44A3-E709-07A7-43BD31A546B9"; addAttr -ci true -sn "isGearGuide" -ln "isGearGuide" -dv 1 -min 0 -max 1 -at "bool"; setAttr -k off -cb on ".v"; setAttr ".t" -type "double3" 0.34999482654518399 -0.34355031336095371 -0.0018389437992678559 ; @@ -12837,7 +12914,7 @@ createNode transform -n "foot_L0_2_loc" -p "foot_L0_1_loc"; setAttr -k off -cb on ".sy"; setAttr -k off -cb on ".sz"; createNode nurbsCurve -n "foot_L0_2_locShape" -p "foot_L0_2_loc"; - rename -uid "281ECEB9-4EB1-BFD5-2D65-72B63A806411"; + rename -uid "43613493-423C-D5CB-C53D-759427094750"; setAttr ".ihi" 0; setAttr -k off ".v"; setAttr ".ove" yes; @@ -12850,7 +12927,7 @@ createNode nurbsCurve -n "foot_L0_2_locShape" -p "foot_L0_2_loc"; -0.25 0 0 ; createNode nurbsCurve -n "foot_L0_2_loc25Shape" -p "foot_L0_2_loc"; - rename -uid "0EBBF120-48DA-559A-D3E6-2696875DB9BD"; + rename -uid "0BD574EF-4E38-78CC-A04A-19B410A2ECA3"; setAttr ".ihi" 0; setAttr -k off ".v"; setAttr ".ove" yes; @@ -12863,7 +12940,7 @@ createNode nurbsCurve -n "foot_L0_2_loc25Shape" -p "foot_L0_2_loc"; 0 -0.25 0 ; createNode nurbsCurve -n "foot_L0_2_loc26Shape" -p "foot_L0_2_loc"; - rename -uid "036E0A31-4A9A-E0AE-CF2E-4E9EC89C3256"; + rename -uid "F5A2456E-4A14-7407-5A81-B1B0D17EA60E"; setAttr ".ihi" 0; setAttr -k off ".v"; setAttr ".ove" yes; @@ -12876,7 +12953,7 @@ createNode nurbsCurve -n "foot_L0_2_loc26Shape" -p "foot_L0_2_loc"; 0 0 -0.25 ; createNode nurbsCurve -n "foot_L0_2_loc27Shape" -p "foot_L0_2_loc"; - rename -uid "380A8E0A-475D-EA31-6649-7392EE83BE0D"; + rename -uid "FEA67B40-4B48-660C-59D7-9CA3E575920D"; setAttr ".ihi" 0; setAttr -k off ".v"; setAttr ".ove" yes; @@ -12894,7 +12971,7 @@ createNode nurbsCurve -n "foot_L0_2_loc27Shape" -p "foot_L0_2_loc"; -0.1875 0 0 ; createNode nurbsCurve -n "foot_L0_2_loc27_0crvShape" -p "foot_L0_2_loc"; - rename -uid "66C5017D-4BD0-6AFD-36D5-17A0282A2AD6"; + rename -uid "68A0ECF3-44AD-D861-732F-1C8520E09FCE"; setAttr ".ihi" 0; setAttr -k off ".v"; setAttr ".ove" yes; @@ -12912,7 +12989,7 @@ createNode nurbsCurve -n "foot_L0_2_loc27_0crvShape" -p "foot_L0_2_loc"; -0.1875 0 0 ; createNode nurbsCurve -n "foot_L0_2_loc27_1crvShape" -p "foot_L0_2_loc"; - rename -uid "768F4A86-4985-D1E6-B431-B8818880FD69"; + rename -uid "8274755C-4A89-E8B4-8818-04918A1B67B1"; setAttr ".ihi" 0; setAttr -k off ".v"; setAttr ".ove" yes; @@ -12930,19 +13007,19 @@ createNode nurbsCurve -n "foot_L0_2_loc27_1crvShape" -p "foot_L0_2_loc"; 0 0 -0.1875 ; createNode transform -n "foot_L0_crv" -p "foot_L0_root"; - rename -uid "ACD2E3DB-4082-9AA4-075F-859C02B3EC58"; + rename -uid "9C572993-46B1-787F-9992-019C22A0D2CC"; setAttr ".ovdt" 1; setAttr ".ove" yes; setAttr ".t" -type "double3" 0.84123625248687084 -1.2934842521415504 1.0591437062861182 ; setAttr ".r" -type "double3" 2.8990169397258381 84.223472754416591 2.9137877746396712 ; setAttr ".s" -type "double3" 1.0497207713808367 1.0497207713808354 1.0497207713808356 ; createNode nurbsCurve -n "foot_L0_crvShape" -p "foot_L0_crv"; - rename -uid "D289D0B9-4893-B721-06FB-639BF513E786"; + rename -uid "9ABDFD9F-44D4-908C-14DB-1BBFA2D7C724"; setAttr -k off ".v"; setAttr -s 4 ".iog[0].og"; setAttr ".tw" yes; createNode nurbsCurve -n "foot_L0_crvShapeOrig" -p "foot_L0_crv"; - rename -uid "4ACC5E48-462C-3685-EF7B-889649A6447A"; + rename -uid "E7C6FCBF-4A71-C3EE-3EAA-2BAD92FD909D"; setAttr -k off ".v"; setAttr ".io" yes; setAttr ".cc" -type "nurbsCurve" @@ -12955,7 +13032,7 @@ createNode nurbsCurve -n "foot_L0_crvShapeOrig" -p "foot_L0_crv"; 0 0 0 ; createNode transform -n "foot_L0_heel" -p "foot_L0_root"; - rename -uid "7D99F1FB-4C9B-F748-5A00-FCA2CED78D14"; + rename -uid "DFD5BE67-4EAF-6ABD-1D92-83AD4B77A341"; addAttr -ci true -sn "isGearGuide" -ln "isGearGuide" -dv 1 -min 0 -max 1 -at "bool"; setAttr -k off -cb on ".v"; setAttr ".t" -type "double3" -0.51442201408343324 -1.2883323665462261 -0.0019628851482431653 ; @@ -12971,7 +13048,7 @@ createNode transform -n "foot_L0_heel" -p "foot_L0_root"; setAttr -k off -cb on ".sy"; setAttr -k off -cb on ".sz"; createNode nurbsCurve -n "foot_L0_heelShape" -p "foot_L0_heel"; - rename -uid "39DC61B8-4747-F360-EBAC-6CBA57D2B8AA"; + rename -uid "B0261CDC-42EE-DF28-B67B-BB8193D4FF21"; setAttr ".ihi" 0; setAttr -k off ".v"; setAttr ".ove" yes; @@ -12984,7 +13061,7 @@ createNode nurbsCurve -n "foot_L0_heelShape" -p "foot_L0_heel"; -0.25 0 0 ; createNode nurbsCurve -n "foot_L0_heel25Shape" -p "foot_L0_heel"; - rename -uid "324D8148-4DB8-C2D4-45AF-40B8C76BF6E3"; + rename -uid "34A946D7-41C5-5CF2-3C9E-6D8298355218"; setAttr ".ihi" 0; setAttr -k off ".v"; setAttr ".ove" yes; @@ -12997,7 +13074,7 @@ createNode nurbsCurve -n "foot_L0_heel25Shape" -p "foot_L0_heel"; 0 -0.25 0 ; createNode nurbsCurve -n "foot_L0_heel26Shape" -p "foot_L0_heel"; - rename -uid "5AFF1CA8-497B-2249-0545-11A3A1BBC94C"; + rename -uid "FDD8049C-4305-F0C0-6273-F1BA32CBAFC6"; setAttr ".ihi" 0; setAttr -k off ".v"; setAttr ".ove" yes; @@ -13010,7 +13087,7 @@ createNode nurbsCurve -n "foot_L0_heel26Shape" -p "foot_L0_heel"; 0 0 -0.25 ; createNode nurbsCurve -n "foot_L0_heel27Shape" -p "foot_L0_heel"; - rename -uid "D35E4127-4C2C-2E41-2140-0F9735BB77C7"; + rename -uid "C4ED2E5E-4802-C2E7-47F9-9E93A915F30F"; setAttr ".ihi" 0; setAttr -k off ".v"; setAttr ".ove" yes; @@ -13028,7 +13105,7 @@ createNode nurbsCurve -n "foot_L0_heel27Shape" -p "foot_L0_heel"; -0.1875 0 0 ; createNode nurbsCurve -n "foot_L0_heel27_0crvShape" -p "foot_L0_heel"; - rename -uid "7C867369-435E-6133-DD4E-5187EAB6E062"; + rename -uid "6D0EA831-49E7-EB05-8779-579697B0A98A"; setAttr ".ihi" 0; setAttr -k off ".v"; setAttr ".ove" yes; @@ -13046,7 +13123,7 @@ createNode nurbsCurve -n "foot_L0_heel27_0crvShape" -p "foot_L0_heel"; -0.1875 0 0 ; createNode nurbsCurve -n "foot_L0_heel27_1crvShape" -p "foot_L0_heel"; - rename -uid "B07001DA-415D-30D5-644A-68A3C028C013"; + rename -uid "08262644-43D7-C344-0565-109CC65F67EF"; setAttr ".ihi" 0; setAttr -k off ".v"; setAttr ".ove" yes; @@ -13064,7 +13141,7 @@ createNode nurbsCurve -n "foot_L0_heel27_1crvShape" -p "foot_L0_heel"; 0 0 -0.1875 ; createNode transform -n "foot_L0_outpivot" -p "foot_L0_root"; - rename -uid "D2511BF3-44FC-5F50-78B8-4F822A439917"; + rename -uid "01535471-4314-3306-E093-0F89591F39E9"; addAttr -ci true -sn "isGearGuide" -ln "isGearGuide" -dv 1 -min 0 -max 1 -at "bool"; setAttr -k off -cb on ".v"; setAttr ".t" -type "double3" 1.3551807145991015 -1.2852474767223829 -0.54483578923279818 ; @@ -13080,7 +13157,7 @@ createNode transform -n "foot_L0_outpivot" -p "foot_L0_root"; setAttr -k off -cb on ".sy"; setAttr -k off -cb on ".sz"; createNode nurbsCurve -n "foot_L0_outpivotShape" -p "foot_L0_outpivot"; - rename -uid "C4F4E771-4F54-435A-2B1E-C085C97F94FD"; + rename -uid "B7EE9456-4B87-619F-8382-51BFF56F97EE"; setAttr ".ihi" 0; setAttr -k off ".v"; setAttr ".ove" yes; @@ -13093,7 +13170,7 @@ createNode nurbsCurve -n "foot_L0_outpivotShape" -p "foot_L0_outpivot"; -0.25 0 0 ; createNode nurbsCurve -n "foot_L0_outpivot25Shape" -p "foot_L0_outpivot"; - rename -uid "5C9412F9-456C-532D-441A-D29D43CBB5F9"; + rename -uid "DFB7AD06-4419-D064-397C-3CAD856CFE0B"; setAttr ".ihi" 0; setAttr -k off ".v"; setAttr ".ove" yes; @@ -13106,7 +13183,7 @@ createNode nurbsCurve -n "foot_L0_outpivot25Shape" -p "foot_L0_outpivot"; 0 -0.25 0 ; createNode nurbsCurve -n "foot_L0_outpivot26Shape" -p "foot_L0_outpivot"; - rename -uid "02281F30-4F40-8E13-26DA-96868D6DB508"; + rename -uid "4D5705B1-4331-586C-5B97-E6B7C1C6FDAD"; setAttr ".ihi" 0; setAttr -k off ".v"; setAttr ".ove" yes; @@ -13119,7 +13196,7 @@ createNode nurbsCurve -n "foot_L0_outpivot26Shape" -p "foot_L0_outpivot"; 0 0 -0.25 ; createNode nurbsCurve -n "foot_L0_outpivot27Shape" -p "foot_L0_outpivot"; - rename -uid "7F5C5329-4B8D-84FA-136E-4CAE96F06301"; + rename -uid "633996D5-478C-848C-AD9F-9484DA41E922"; setAttr ".ihi" 0; setAttr -k off ".v"; setAttr ".ove" yes; @@ -13137,7 +13214,7 @@ createNode nurbsCurve -n "foot_L0_outpivot27Shape" -p "foot_L0_outpivot"; -0.1875 0 0 ; createNode nurbsCurve -n "foot_L0_outpivot27_0crvShape" -p "foot_L0_outpivot"; - rename -uid "3DE6AD47-45E4-9C8E-F1A2-578FCF16C30E"; + rename -uid "56F87ACB-4145-057D-922A-C3A59CB52C78"; setAttr ".ihi" 0; setAttr -k off ".v"; setAttr ".ove" yes; @@ -13155,7 +13232,7 @@ createNode nurbsCurve -n "foot_L0_outpivot27_0crvShape" -p "foot_L0_outpivot"; -0.1875 0 0 ; createNode nurbsCurve -n "foot_L0_outpivot27_1crvShape" -p "foot_L0_outpivot"; - rename -uid "D6EE045F-4246-7A92-C7B6-8593C4619DE8"; + rename -uid "4415AD58-435C-B450-F73C-AF9343147D7A"; setAttr ".ihi" 0; setAttr -k off ".v"; setAttr ".ove" yes; @@ -13173,7 +13250,7 @@ createNode nurbsCurve -n "foot_L0_outpivot27_1crvShape" -p "foot_L0_outpivot"; 0 0 -0.1875 ; createNode transform -n "foot_L0_inpivot" -p "foot_L0_root"; - rename -uid "FA5F08FB-434C-802B-9B5F-9D94D07899D0"; + rename -uid "C9E560E6-49C9-6317-F923-7CA8183F5B96"; addAttr -ci true -sn "isGearGuide" -ln "isGearGuide" -dv 1 -min 0 -max 1 -at "bool"; setAttr -k off -cb on ".v"; setAttr ".t" -type "double3" 1.3551807145991013 -1.2905939540073492 0.6523426983376851 ; @@ -13189,7 +13266,7 @@ createNode transform -n "foot_L0_inpivot" -p "foot_L0_root"; setAttr -k off -cb on ".sy"; setAttr -k off -cb on ".sz"; createNode nurbsCurve -n "foot_L0_inpivotShape" -p "foot_L0_inpivot"; - rename -uid "A3473E90-4898-AAFC-4D4A-2ABCB28951DB"; + rename -uid "C1889674-4020-94D2-6348-E7BB8B1DA6ED"; setAttr ".ihi" 0; setAttr -k off ".v"; setAttr ".ove" yes; @@ -13202,7 +13279,7 @@ createNode nurbsCurve -n "foot_L0_inpivotShape" -p "foot_L0_inpivot"; -0.25 0 0 ; createNode nurbsCurve -n "foot_L0_inpivot25Shape" -p "foot_L0_inpivot"; - rename -uid "BB61937E-4D0F-98E1-9E03-47B6B9EAEE15"; + rename -uid "986496C8-41B6-9941-B428-B6B6A852897C"; setAttr ".ihi" 0; setAttr -k off ".v"; setAttr ".ove" yes; @@ -13215,7 +13292,7 @@ createNode nurbsCurve -n "foot_L0_inpivot25Shape" -p "foot_L0_inpivot"; 0 -0.25 0 ; createNode nurbsCurve -n "foot_L0_inpivot26Shape" -p "foot_L0_inpivot"; - rename -uid "89CEF1F6-4B66-857F-79B8-84BEA3343E3B"; + rename -uid "6F672F5A-440D-053A-BCA1-1BB0F359CC85"; setAttr ".ihi" 0; setAttr -k off ".v"; setAttr ".ove" yes; @@ -13228,7 +13305,7 @@ createNode nurbsCurve -n "foot_L0_inpivot26Shape" -p "foot_L0_inpivot"; 0 0 -0.25 ; createNode nurbsCurve -n "foot_L0_inpivot27Shape" -p "foot_L0_inpivot"; - rename -uid "9EB7ED94-43B6-78D1-BBA2-FDA00152787C"; + rename -uid "7E222341-4AC2-AEC4-A173-D28BF5AA0027"; setAttr ".ihi" 0; setAttr -k off ".v"; setAttr ".ove" yes; @@ -13246,7 +13323,7 @@ createNode nurbsCurve -n "foot_L0_inpivot27Shape" -p "foot_L0_inpivot"; -0.1875 0 0 ; createNode nurbsCurve -n "foot_L0_inpivot27_0crvShape" -p "foot_L0_inpivot"; - rename -uid "D7B541F2-4134-B12E-B13A-A4BA18294844"; + rename -uid "6DEDEB77-4E61-D8C7-9830-7F887101D5B5"; setAttr ".ihi" 0; setAttr -k off ".v"; setAttr ".ove" yes; @@ -13264,7 +13341,7 @@ createNode nurbsCurve -n "foot_L0_inpivot27_0crvShape" -p "foot_L0_inpivot"; -0.1875 0 0 ; createNode nurbsCurve -n "foot_L0_inpivot27_1crvShape" -p "foot_L0_inpivot"; - rename -uid "8EE342D6-4C8D-A349-D8AD-D18F951BF2F8"; + rename -uid "5A4D1529-4D29-6BE5-A6E0-48B5C37872CC"; setAttr ".ihi" 0; setAttr -k off ".v"; setAttr ".ove" yes; @@ -13282,19 +13359,19 @@ createNode nurbsCurve -n "foot_L0_inpivot27_1crvShape" -p "foot_L0_inpivot"; 0 0 -0.1875 ; createNode transform -n "foot_L0_1" -p "foot_L0_root"; - rename -uid "2AF59BE4-45AB-461C-120C-42948AB6770B"; + rename -uid "A7502590-4F1F-E2C6-A34F-74BC827C3FDF"; setAttr ".ovdt" 1; setAttr ".ove" yes; setAttr ".t" -type "double3" 0.84123625248687084 -1.2934842521415504 1.0591437062861182 ; setAttr ".r" -type "double3" 2.8990169397258381 84.223472754416591 2.9137877746396712 ; setAttr ".s" -type "double3" 1.0497207713808367 1.0497207713808354 1.0497207713808356 ; createNode nurbsCurve -n "foot_L0_Shape1" -p "foot_L0_1"; - rename -uid "8EA58EAD-47FC-BDFE-18F3-DFABD52546C6"; + rename -uid "BF2C4845-4D98-DAE5-CB05-1EACD82455CF"; setAttr -k off ".v"; setAttr -s 4 ".iog[0].og"; setAttr ".tw" yes; -createNode nurbsCurve -n "foot_L0_Shape1Orig" -p "foot_L0_1"; - rename -uid "FCA0635B-4FD2-567D-43E5-6888F231643F"; +createNode nurbsCurve -n "foot_L0_Shape1Orig1" -p "foot_L0_1"; + rename -uid "DD7CFCBC-4A15-D6EC-C8AD-E4B052BB54EB"; setAttr -k off ".v"; setAttr ".io" yes; setAttr ".cc" -type "nurbsCurve" @@ -13308,7 +13385,7 @@ createNode nurbsCurve -n "foot_L0_Shape1Orig" -p "foot_L0_1"; 0 0 0 ; createNode transform -n "legUI_L0_root" -p "foot_L0_root"; - rename -uid "FADB5402-41CC-5E85-D4A4-D987FBBFCB70"; + rename -uid "489B9BE9-4F24-4B24-3CF6-EBA46EF16BC5"; addAttr -ci true -sn "isGearGuide" -ln "isGearGuide" -dv 1 -min 0 -max 1 -at "bool"; addAttr -ci true -sn "comp_type" -ln "comp_type" -dt "string"; addAttr -ci true -sn "comp_name" -ln "comp_name" -dt "string"; @@ -13362,7 +13439,7 @@ createNode transform -n "legUI_L0_root" -p "foot_L0_root"; setAttr ".ctlSize" 1; setAttr ".parentJointIndex" -1; createNode nurbsCurve -n "legUI_L0_rootShape" -p "legUI_L0_root"; - rename -uid "9ACDC1BE-498E-5CEE-98C6-D7A3BC5A7339"; + rename -uid "E23DC3E9-4519-6029-9CC3-50B95C5211F8"; setAttr ".ihi" 0; setAttr -k off ".v"; setAttr ".ove" yes; @@ -13375,7 +13452,7 @@ createNode nurbsCurve -n "legUI_L0_rootShape" -p "legUI_L0_root"; -0.25 0 0 ; createNode nurbsCurve -n "legUI_L0_root25Shape" -p "legUI_L0_root"; - rename -uid "D3F7F5AE-41E9-F8E1-885D-88B77397FFA3"; + rename -uid "BCE00028-43F9-32B2-D942-F9B0CB7F964D"; setAttr ".ihi" 0; setAttr -k off ".v"; setAttr ".ove" yes; @@ -13388,7 +13465,7 @@ createNode nurbsCurve -n "legUI_L0_root25Shape" -p "legUI_L0_root"; 0 -0.25 0 ; createNode nurbsCurve -n "legUI_L0_root26Shape" -p "legUI_L0_root"; - rename -uid "C35BEF43-4342-493F-364E-3994D275D2F5"; + rename -uid "B5634D0C-4504-808B-54C6-1CB9FEB77289"; setAttr ".ihi" 0; setAttr -k off ".v"; setAttr ".ove" yes; @@ -13401,7 +13478,7 @@ createNode nurbsCurve -n "legUI_L0_root26Shape" -p "legUI_L0_root"; 0 0 -0.25 ; createNode nurbsCurve -n "legUI_L0_root27Shape" -p "legUI_L0_root"; - rename -uid "0CC80AF5-4C44-448B-EDF7-E48F4590B5BF"; + rename -uid "15278C6A-4B48-330D-A73F-D2986F1FAF81"; setAttr ".ihi" 0; setAttr -k off ".v"; setAttr ".ove" yes; @@ -13428,7 +13505,7 @@ createNode nurbsCurve -n "legUI_L0_root27Shape" -p "legUI_L0_root"; -0.125 -0.125 -0.125 ; createNode transform -n "legUI_L0_sizeRef" -p "legUI_L0_root"; - rename -uid "02DBE776-4C5B-858A-C18C-A181AF6483E0"; + rename -uid "D6888AE3-4FF1-5D28-2436-10B772A7245C"; addAttr -ci true -sn "isGearGuide" -ln "isGearGuide" -dv 1 -min 0 -max 1 -at "bool"; setAttr -k off -cb on ".v"; setAttr ".t" -type "double3" -0.10551782846565061 2.2204460492503131e-016 1.0444039858906486 ; @@ -13445,19 +13522,19 @@ createNode transform -n "legUI_L0_sizeRef" -p "legUI_L0_root"; setAttr -k off -cb on ".sy"; setAttr -k off -cb on ".sz"; createNode transform -n "leg_L0_crv" -p "leg_L0_root"; - rename -uid "0559414B-4256-5FC3-B871-708445BC7150"; + rename -uid "215C8C7A-43AE-5F0E-C880-519C0F999DB8"; setAttr ".ovdt" 1; setAttr ".ove" yes; setAttr ".t" -type "double3" -10.214166852209233 0.19144303592045905 0.9690219642037361 ; setAttr ".r" -type "double3" 89.999999999998764 89.706856137729844 0 ; setAttr ".s" -type "double3" 1.0495082267377407 1.0495082267377378 1.0495082267377411 ; createNode nurbsCurve -n "leg_L0_crvShape" -p "leg_L0_crv"; - rename -uid "4AB24201-4057-7725-E293-D4B2860D3AAB"; + rename -uid "5F078BF9-41C5-1429-8923-4B92BA9C2495"; setAttr -k off ".v"; setAttr -s 4 ".iog[0].og"; setAttr ".tw" yes; createNode nurbsCurve -n "leg_L0_crvShapeOrig" -p "leg_L0_crv"; - rename -uid "57A2A05B-4359-F9AC-B761-BEA21E319FE8"; + rename -uid "3A13B1F2-4B30-29DA-AB2D-9EB9CB373C65"; setAttr -k off ".v"; setAttr ".io" yes; setAttr ".cc" -type "nurbsCurve" @@ -13470,7 +13547,7 @@ createNode nurbsCurve -n "leg_L0_crvShapeOrig" -p "leg_L0_crv"; 0 0 0 ; createNode transform -n "leg_R0_root" -p "spine_C0_root"; - rename -uid "68C62DB2-4033-977F-AF96-4B9233D1422B"; + rename -uid "21A535F6-428C-6E42-024B-818159991327"; addAttr -ci true -sn "isGearGuide" -ln "isGearGuide" -dv 1 -min 0 -max 1 -at "bool"; addAttr -ci true -sn "comp_type" -ln "comp_type" -dt "string"; addAttr -ci true -sn "comp_name" -ln "comp_name" -dt "string"; @@ -13492,16 +13569,16 @@ createNode transform -n "leg_R0_root" -p "spine_C0_root"; addAttr -ci true -sn "useIndex" -ln "useIndex" -min 0 -max 1 -at "bool"; addAttr -ci true -sn "parentJointIndex" -ln "parentJointIndex" -at "long"; setAttr -k off -cb on ".v"; - setAttr ".t" -type "double3" -1.1814583394588016 6.6613381477509392e-016 1.0212680564255747 ; + setAttr ".t" -type "double3" -1.1814583394588016 8.0491169285323849e-016 1.0212680564255743 ; setAttr -k off -cb on ".tx"; setAttr -k off -cb on ".ty"; setAttr -k off -cb on ".tz"; - setAttr ".r" -type "double3" 0 -0.29314386227019551 0 ; + setAttr ".r" -type "double3" 0 -0.29314386227019545 0 ; setAttr -k off -cb on ".rx"; setAttr -k off -cb on ".ry"; setAttr -k off -cb on ".rz"; setAttr -cb on ".ro"; - setAttr ".s" -type "double3" 1.0000000000000022 0.99999999999999845 -0.99999999999999956 ; + setAttr ".s" -type "double3" 1.0000000000000024 0.99999999999999811 -1 ; setAttr -k off -cb on ".sx"; setAttr -k off -cb on ".sy"; setAttr -k off -cb on ".sz"; @@ -13512,9 +13589,9 @@ createNode transform -n "leg_R0_root" -p "spine_C0_root"; setAttr ".ui_host" -type "string" "legUI_R0_root"; setAttr ".ctlGrp" -type "string" ""; setAttr ".blend" 1; - setAttr ".ikrefarray" -type "string" "local_C0_root"; - setAttr ".upvrefarray" -type "string" ""; - setAttr ".pinrefarray" -type "string" ""; + setAttr ".ikrefarray" -type "string" "local_C0_root,global_C0_root"; + setAttr ".upvrefarray" -type "string" "local_C0_root,global_C0_root"; + setAttr ".pinrefarray" -type "string" "local_C0_root,global_C0_root"; setAttr ".maxstretch" 1.5; setAttr ".div0" 2; setAttr ".div1" 2; @@ -13522,7 +13599,7 @@ createNode transform -n "leg_R0_root" -p "spine_C0_root"; setAttr -k on ".sq_profile"; setAttr ".parentJointIndex" -1; createNode nurbsCurve -n "leg_R0_rootShape" -p "leg_R0_root"; - rename -uid "6A9DBA4C-448B-2939-34DE-8A9D15DB29F3"; + rename -uid "AB5C81EE-4116-579F-DE88-1895CE84A2FE"; setAttr ".ihi" 0; setAttr -k off ".v"; setAttr ".ove" yes; @@ -13534,8 +13611,8 @@ createNode nurbsCurve -n "leg_R0_rootShape" -p "leg_R0_root"; 0.25 0 0 -0.25 0 0 ; -createNode nurbsCurve -n "leg_R0_root25Shape" -p "leg_R0_root"; - rename -uid "563F71F7-42CF-C494-5DBA-10BF8C8911CE"; +createNode nurbsCurve -n "leg_R0_root1Shape" -p "leg_R0_root"; + rename -uid "FC732526-4A05-9808-454C-2E87C069C4C9"; setAttr ".ihi" 0; setAttr -k off ".v"; setAttr ".ove" yes; @@ -13547,8 +13624,8 @@ createNode nurbsCurve -n "leg_R0_root25Shape" -p "leg_R0_root"; 0 0.25 0 0 -0.25 0 ; -createNode nurbsCurve -n "leg_R0_root26Shape" -p "leg_R0_root"; - rename -uid "F79F48C2-46E5-BBD9-F18E-DEBD3CAA4BA6"; +createNode nurbsCurve -n "leg_R0_root2Shape" -p "leg_R0_root"; + rename -uid "171ADB4B-4E04-B325-E5B9-079FDBC8ED74"; setAttr ".ihi" 0; setAttr -k off ".v"; setAttr ".ove" yes; @@ -13560,8 +13637,8 @@ createNode nurbsCurve -n "leg_R0_root26Shape" -p "leg_R0_root"; 0 0 0.25 0 0 -0.25 ; -createNode nurbsCurve -n "leg_R0_root27Shape" -p "leg_R0_root"; - rename -uid "242C2E18-4D38-4AD9-AC78-EDAC677478E4"; +createNode nurbsCurve -n "leg_R0_root3Shape" -p "leg_R0_root"; + rename -uid "1DB8F011-41A0-6964-95DE-0CB0AD47BDFA"; setAttr ".ihi" 0; setAttr -k off ".v"; setAttr ".ove" yes; @@ -13588,10 +13665,10 @@ createNode nurbsCurve -n "leg_R0_root27Shape" -p "leg_R0_root"; -0.125 -0.125 -0.125 ; createNode transform -n "leg_R0_knee" -p "leg_R0_root"; - rename -uid "C5A92A65-41AE-B805-EB97-59A43243B105"; + rename -uid "BBC64F8C-4B6F-4853-49CF-B6AE317DB38D"; addAttr -ci true -sn "isGearGuide" -ln "isGearGuide" -dv 1 -min 0 -max 1 -at "bool"; setAttr -k off -cb on ".v"; - setAttr ".t" -type "double3" -4.3795369772304085 0.3883864434680584 -4.6629367034256575e-015 ; + setAttr ".t" -type "double3" -4.3795369772304023 0.38838644346805862 -3.5527136788005009e-015 ; setAttr -k off -cb on ".tx"; setAttr -k off -cb on ".ty"; setAttr -k off -cb on ".tz"; @@ -13600,12 +13677,12 @@ createNode transform -n "leg_R0_knee" -p "leg_R0_root"; setAttr -k off -cb on ".ry"; setAttr -k off -cb on ".rz"; setAttr -cb on ".ro"; - setAttr ".s" -type "double3" 1.0000000000000002 0.99999999999999911 1.0000000000000018 ; + setAttr ".s" -type "double3" 1.0000000000000011 0.99999999999999967 1.0000000000000018 ; setAttr -k off -cb on ".sx"; setAttr -k off -cb on ".sy"; setAttr -k off -cb on ".sz"; createNode nurbsCurve -n "leg_R0_kneeShape" -p "leg_R0_knee"; - rename -uid "684F92D7-4E92-0352-83A8-6FB7F8F6DB94"; + rename -uid "C81DFBE2-4E08-61CA-E90D-6F8B27D7D88D"; setAttr ".ihi" 0; setAttr -k off ".v"; setAttr ".ove" yes; @@ -13617,8 +13694,8 @@ createNode nurbsCurve -n "leg_R0_kneeShape" -p "leg_R0_knee"; 0.25 0 0 -0.25 0 0 ; -createNode nurbsCurve -n "leg_R0_knee25Shape" -p "leg_R0_knee"; - rename -uid "7F89AFE1-4D8D-B2E7-60EF-C4A13BB1BE71"; +createNode nurbsCurve -n "leg_R0_knee1Shape" -p "leg_R0_knee"; + rename -uid "32518551-4FFB-CB08-FA85-1AB115D56CF4"; setAttr ".ihi" 0; setAttr -k off ".v"; setAttr ".ove" yes; @@ -13630,8 +13707,8 @@ createNode nurbsCurve -n "leg_R0_knee25Shape" -p "leg_R0_knee"; 0 0.25 0 0 -0.25 0 ; -createNode nurbsCurve -n "leg_R0_knee26Shape" -p "leg_R0_knee"; - rename -uid "DE576E35-433B-3BE8-380A-AA8DA96FA257"; +createNode nurbsCurve -n "leg_R0_knee2Shape" -p "leg_R0_knee"; + rename -uid "9B444E39-4763-062D-EB9E-7F9F8CADAA51"; setAttr ".ihi" 0; setAttr -k off ".v"; setAttr ".ove" yes; @@ -13643,8 +13720,8 @@ createNode nurbsCurve -n "leg_R0_knee26Shape" -p "leg_R0_knee"; 0 0 0.25 0 0 -0.25 ; -createNode nurbsCurve -n "leg_R0_knee27Shape" -p "leg_R0_knee"; - rename -uid "10AFE2A6-4AA8-10B6-B4E3-F0B83E59DEF9"; +createNode nurbsCurve -n "leg_R0_knee3Shape" -p "leg_R0_knee"; + rename -uid "E68D9BD7-4197-240B-6109-1ABAD84E7766"; setAttr ".ihi" 0; setAttr -k off ".v"; setAttr ".ove" yes; @@ -13661,8 +13738,8 @@ createNode nurbsCurve -n "leg_R0_knee27Shape" -p "leg_R0_knee"; 0 -0.1875 0 -0.1875 0 0 ; -createNode nurbsCurve -n "leg_R0_knee27_0crvShape" -p "leg_R0_knee"; - rename -uid "51BC9BDD-4FCC-1B63-349E-ED942AFA2A12"; +createNode nurbsCurve -n "leg_R0_knee3_0crvShape" -p "leg_R0_knee"; + rename -uid "F6CC52C1-4579-0970-102C-B891E66D187A"; setAttr ".ihi" 0; setAttr -k off ".v"; setAttr ".ove" yes; @@ -13679,8 +13756,8 @@ createNode nurbsCurve -n "leg_R0_knee27_0crvShape" -p "leg_R0_knee"; 0 0 -0.1875 -0.1875 0 0 ; -createNode nurbsCurve -n "leg_R0_knee27_1crvShape" -p "leg_R0_knee"; - rename -uid "A137523A-4925-5497-160E-D68543D1ACE7"; +createNode nurbsCurve -n "leg_R0_knee3_1crvShape" -p "leg_R0_knee"; + rename -uid "06E508FA-4132-6D46-B1C2-BAAF21A3C9E7"; setAttr ".ihi" 0; setAttr -k off ".v"; setAttr ".ove" yes; @@ -13698,10 +13775,10 @@ createNode nurbsCurve -n "leg_R0_knee27_1crvShape" -p "leg_R0_knee"; 0 0 -0.1875 ; createNode transform -n "leg_R0_ankle" -p "leg_R0_knee"; - rename -uid "F12D648D-4BD2-4819-1951-13A422FC4F87"; + rename -uid "4A3504DE-4539-C6D0-72BD-0DA3B450FA8B"; addAttr -ci true -sn "isGearGuide" -ln "isGearGuide" -dv 1 -min 0 -max 1 -at "bool"; setAttr -k off -cb on ".v"; - setAttr ".t" -type "double3" -3.3306690738754696e-015 -4.5414075240554155 -0.74630601922780038 ; + setAttr ".t" -type "double3" -4.4408920985006262e-016 -4.5414075240554155 -0.74630601922780015 ; setAttr -k off -cb on ".tx"; setAttr -k off -cb on ".ty"; setAttr -k off -cb on ".tz"; @@ -13709,12 +13786,12 @@ createNode transform -n "leg_R0_ankle" -p "leg_R0_knee"; setAttr -k off -cb on ".ry"; setAttr -k off -cb on ".rz"; setAttr -cb on ".ro"; - setAttr ".s" -type "double3" 1.0000000000000022 0.99999999999999989 0.99999999999999878 ; + setAttr ".s" -type "double3" 1.0000000000000011 0.99999999999999989 0.99999999999999878 ; setAttr -k off -cb on ".sx"; setAttr -k off -cb on ".sy"; setAttr -k off -cb on ".sz"; createNode nurbsCurve -n "leg_R0_ankleShape" -p "leg_R0_ankle"; - rename -uid "1CC3D5B1-4B3E-3A28-93ED-70B8E4FD15FF"; + rename -uid "FFCB4993-4D21-939A-68BF-9EBB2C25B1C3"; setAttr ".ihi" 0; setAttr -k off ".v"; setAttr ".ove" yes; @@ -13726,8 +13803,8 @@ createNode nurbsCurve -n "leg_R0_ankleShape" -p "leg_R0_ankle"; 0.25 0 0 -0.25 0 0 ; -createNode nurbsCurve -n "leg_R0_ankle25Shape" -p "leg_R0_ankle"; - rename -uid "5ABD47EF-4398-15B2-F654-D6A97596E200"; +createNode nurbsCurve -n "leg_R0_ankle1Shape" -p "leg_R0_ankle"; + rename -uid "2361C197-41C8-17D3-6F7D-C9B38844AE58"; setAttr ".ihi" 0; setAttr -k off ".v"; setAttr ".ove" yes; @@ -13739,8 +13816,8 @@ createNode nurbsCurve -n "leg_R0_ankle25Shape" -p "leg_R0_ankle"; 0 0.25 0 0 -0.25 0 ; -createNode nurbsCurve -n "leg_R0_ankle26Shape" -p "leg_R0_ankle"; - rename -uid "B2E7E98E-4424-5639-4AE6-0D85D7B6D64A"; +createNode nurbsCurve -n "leg_R0_ankle2Shape" -p "leg_R0_ankle"; + rename -uid "DC2389DE-4157-6743-E69D-D3901AA28057"; setAttr ".ihi" 0; setAttr -k off ".v"; setAttr ".ove" yes; @@ -13752,8 +13829,8 @@ createNode nurbsCurve -n "leg_R0_ankle26Shape" -p "leg_R0_ankle"; 0 0 0.25 0 0 -0.25 ; -createNode nurbsCurve -n "leg_R0_ankle27Shape" -p "leg_R0_ankle"; - rename -uid "BFFEB731-458C-E717-4C65-DAB96D9FB96F"; +createNode nurbsCurve -n "leg_R0_ankle3Shape" -p "leg_R0_ankle"; + rename -uid "D3B9B392-46B5-F7D4-FD87-EB8483A15EBE"; setAttr ".ihi" 0; setAttr -k off ".v"; setAttr ".ove" yes; @@ -13770,8 +13847,8 @@ createNode nurbsCurve -n "leg_R0_ankle27Shape" -p "leg_R0_ankle"; 0 -0.1875 0 -0.1875 0 0 ; -createNode nurbsCurve -n "leg_R0_ankle27_0crvShape" -p "leg_R0_ankle"; - rename -uid "5B5CF71C-4BE0-B3DB-D805-A6AABD99FD49"; +createNode nurbsCurve -n "leg_R0_ankle3_0crvShape" -p "leg_R0_ankle"; + rename -uid "4B9B84D6-4E86-30CB-AE83-29AF97B24A56"; setAttr ".ihi" 0; setAttr -k off ".v"; setAttr ".ove" yes; @@ -13788,8 +13865,8 @@ createNode nurbsCurve -n "leg_R0_ankle27_0crvShape" -p "leg_R0_ankle"; 0 0 -0.1875 -0.1875 0 0 ; -createNode nurbsCurve -n "leg_R0_ankle27_1crvShape" -p "leg_R0_ankle"; - rename -uid "60921819-48D3-4D20-A1F7-4BBEB9B6089A"; +createNode nurbsCurve -n "leg_R0_ankle3_1crvShape" -p "leg_R0_ankle"; + rename -uid "77BAED00-47CD-02B9-725F-BDAE2054F52E"; setAttr ".ihi" 0; setAttr -k off ".v"; setAttr ".ove" yes; @@ -13807,10 +13884,10 @@ createNode nurbsCurve -n "leg_R0_ankle27_1crvShape" -p "leg_R0_ankle"; 0 0 -0.1875 ; createNode transform -n "leg_R0_eff" -p "leg_R0_ankle"; - rename -uid "A05D230C-41E0-8265-345A-8B982CE22EDF"; + rename -uid "222B292F-44FC-7606-CD80-BCA1AEE8DB59"; addAttr -ci true -sn "isGearGuide" -ln "isGearGuide" -dv 1 -min 0 -max 1 -at "bool"; setAttr -k off -cb on ".v"; - setAttr ".t" -type "double3" 1.9984014443252818e-015 2.4424906541753444e-015 2.1377206638691328 ; + setAttr ".t" -type "double3" 1.4432899320127035e-015 2.4424906541753444e-015 2.1377206638691333 ; setAttr -k off -cb on ".tx"; setAttr -k off -cb on ".ty"; setAttr -k off -cb on ".tz"; @@ -13819,12 +13896,12 @@ createNode transform -n "leg_R0_eff" -p "leg_R0_ankle"; setAttr -k off -cb on ".ry"; setAttr -k off -cb on ".rz"; setAttr -cb on ".ro"; - setAttr ".s" -type "double3" 1.0000000000000029 1.0000000000000002 1.0000000000000024 ; + setAttr ".s" -type "double3" 1.000000000000004 0.999999999999999 1.0000000000000031 ; setAttr -k off -cb on ".sx"; setAttr -k off -cb on ".sy"; setAttr -k off -cb on ".sz"; createNode nurbsCurve -n "leg_R0_effShape" -p "leg_R0_eff"; - rename -uid "03C5C901-4D52-F881-2D59-BBA8505C3872"; + rename -uid "D6E389CC-4393-4803-317D-8D95DFACF97B"; setAttr ".ihi" 0; setAttr -k off ".v"; setAttr ".ove" yes; @@ -13836,8 +13913,8 @@ createNode nurbsCurve -n "leg_R0_effShape" -p "leg_R0_eff"; 0.25 0 0 -0.25 0 0 ; -createNode nurbsCurve -n "leg_R0_eff25Shape" -p "leg_R0_eff"; - rename -uid "820A43F4-4217-AC39-F2A9-95921550DFFA"; +createNode nurbsCurve -n "leg_R0_eff1Shape" -p "leg_R0_eff"; + rename -uid "658AEAC5-4F67-EDD0-74D3-BEB77065ED0D"; setAttr ".ihi" 0; setAttr -k off ".v"; setAttr ".ove" yes; @@ -13849,8 +13926,8 @@ createNode nurbsCurve -n "leg_R0_eff25Shape" -p "leg_R0_eff"; 0 0.25 0 0 -0.25 0 ; -createNode nurbsCurve -n "leg_R0_eff26Shape" -p "leg_R0_eff"; - rename -uid "3DB9E0E9-472A-0FD8-0AE6-AC9D0584E514"; +createNode nurbsCurve -n "leg_R0_eff2Shape" -p "leg_R0_eff"; + rename -uid "7D1CDC6B-41D4-AC14-3070-F6A35B806F3C"; setAttr ".ihi" 0; setAttr -k off ".v"; setAttr ".ove" yes; @@ -13862,8 +13939,8 @@ createNode nurbsCurve -n "leg_R0_eff26Shape" -p "leg_R0_eff"; 0 0 0.25 0 0 -0.25 ; -createNode nurbsCurve -n "leg_R0_eff27Shape" -p "leg_R0_eff"; - rename -uid "71BB0BD0-4CAC-7F9E-D05F-118CC6BA36C9"; +createNode nurbsCurve -n "leg_R0_eff3Shape" -p "leg_R0_eff"; + rename -uid "E083588D-4BB2-CA9F-9A6D-B882020FA162"; setAttr ".ihi" 0; setAttr -k off ".v"; setAttr ".ove" yes; @@ -13880,8 +13957,8 @@ createNode nurbsCurve -n "leg_R0_eff27Shape" -p "leg_R0_eff"; 0 -0.1875 0 -0.1875 0 0 ; -createNode nurbsCurve -n "leg_R0_eff27_0crvShape" -p "leg_R0_eff"; - rename -uid "0A7E898A-4905-707D-CBEF-9B8F35293F65"; +createNode nurbsCurve -n "leg_R0_eff3_0crvShape" -p "leg_R0_eff"; + rename -uid "6D44A850-4019-6902-58B9-19A99256B98E"; setAttr ".ihi" 0; setAttr -k off ".v"; setAttr ".ove" yes; @@ -13898,8 +13975,8 @@ createNode nurbsCurve -n "leg_R0_eff27_0crvShape" -p "leg_R0_eff"; 0 0 -0.1875 -0.1875 0 0 ; -createNode nurbsCurve -n "leg_R0_eff27_1crvShape" -p "leg_R0_eff"; - rename -uid "919EA3B5-4DD6-FF64-5971-C1BCFF6EDE0E"; +createNode nurbsCurve -n "leg_R0_eff3_1crvShape" -p "leg_R0_eff"; + rename -uid "57464A7D-4164-F550-3732-D0AB17DC5FBC"; setAttr ".ihi" 0; setAttr -k off ".v"; setAttr ".ove" yes; @@ -13917,7 +13994,7 @@ createNode nurbsCurve -n "leg_R0_eff27_1crvShape" -p "leg_R0_eff"; 0 0 -0.1875 ; createNode transform -n "foot_R0_root" -p "leg_R0_ankle"; - rename -uid "7E5ADD70-4B9A-DF12-3DF9-DBAA61715DC7"; + rename -uid "3734072D-4659-F2DA-248D-E6BD559B7676"; addAttr -ci true -sn "isGearGuide" -ln "isGearGuide" -dv 1 -min 0 -max 1 -at "bool"; addAttr -ci true -sn "comp_type" -ln "comp_type" -dt "string"; addAttr -ci true -sn "comp_name" -ln "comp_name" -dt "string"; @@ -13930,16 +14007,16 @@ createNode transform -n "foot_R0_root" -p "leg_R0_ankle"; addAttr -ci true -sn "useIndex" -ln "useIndex" -min 0 -max 1 -at "bool"; addAttr -ci true -sn "parentJointIndex" -ln "parentJointIndex" -at "long"; setAttr -k off -cb on ".v"; - setAttr ".t" -type "double3" 1.2212453270876722e-015 1.9984014443252818e-015 2.2204460492503131e-016 ; + setAttr ".t" -type "double3" 4.4408920985006262e-016 1.7763568394002505e-015 -1.1102230246251565e-016 ; setAttr -k off -cb on ".tx"; setAttr -k off -cb on ".ty"; setAttr -k off -cb on ".tz"; - setAttr ".r" -type "double3" 0 -84.230890510426093 0 ; + setAttr ".r" -type "double3" 0 -84.230890510426036 0 ; setAttr -k off -cb on ".rx"; setAttr -k off -cb on ".ry"; setAttr -k off -cb on ".rz"; setAttr -cb on ".ro"; - setAttr ".s" -type "double3" 0.99979752268518451 0.99979752268518429 0.99979752268518296 ; + setAttr ".s" -type "double3" 0.99979752268518463 0.99979752268518252 0.99979752268518163 ; setAttr -k off -cb on ".sx"; setAttr -k off -cb on ".sy"; setAttr -k off -cb on ".sz"; @@ -13952,7 +14029,7 @@ createNode transform -n "foot_R0_root" -p "leg_R0_ankle"; setAttr ".useRollCtl" yes; setAttr ".parentJointIndex" -1; createNode nurbsCurve -n "foot_R0_rootShape" -p "foot_R0_root"; - rename -uid "A8B63760-4592-C335-A908-B5BAC99DED11"; + rename -uid "6BE76887-49E1-46E5-B59B-48A492C85F18"; setAttr ".ihi" 0; setAttr -k off ".v"; setAttr ".ove" yes; @@ -13964,8 +14041,8 @@ createNode nurbsCurve -n "foot_R0_rootShape" -p "foot_R0_root"; 0.25 0 0 -0.25 0 0 ; -createNode nurbsCurve -n "foot_R0_root25Shape" -p "foot_R0_root"; - rename -uid "914095FA-4A88-2B9B-287D-A08B5BC60175"; +createNode nurbsCurve -n "foot_R0_root1Shape" -p "foot_R0_root"; + rename -uid "AFB17D81-410A-2D0E-F332-A4857DFD956A"; setAttr ".ihi" 0; setAttr -k off ".v"; setAttr ".ove" yes; @@ -13977,8 +14054,8 @@ createNode nurbsCurve -n "foot_R0_root25Shape" -p "foot_R0_root"; 0 0.25 0 0 -0.25 0 ; -createNode nurbsCurve -n "foot_R0_root26Shape" -p "foot_R0_root"; - rename -uid "8562E0CE-45A8-C768-D4FB-F88550F6637D"; +createNode nurbsCurve -n "foot_R0_root2Shape" -p "foot_R0_root"; + rename -uid "A94C784C-40A7-FAC2-8096-73A8E410460D"; setAttr ".ihi" 0; setAttr -k off ".v"; setAttr ".ove" yes; @@ -13990,8 +14067,8 @@ createNode nurbsCurve -n "foot_R0_root26Shape" -p "foot_R0_root"; 0 0 0.25 0 0 -0.25 ; -createNode nurbsCurve -n "foot_R0_root27Shape" -p "foot_R0_root"; - rename -uid "722E3881-4A66-8998-06DE-04B069DAF2C0"; +createNode nurbsCurve -n "foot_R0_root3Shape" -p "foot_R0_root"; + rename -uid "13E284A7-4DA2-31D1-CB7B-CE93641583B7"; setAttr ".ihi" 0; setAttr -k off ".v"; setAttr ".ove" yes; @@ -14018,24 +14095,24 @@ createNode nurbsCurve -n "foot_R0_root27Shape" -p "foot_R0_root"; -0.125 -0.125 -0.125 ; createNode transform -n "foot_R0_0_loc" -p "foot_R0_root"; - rename -uid "897AC8A6-4509-9812-F3FC-BCA3739341E4"; + rename -uid "D353235B-4DDD-58AC-B85C-D490D38728DE"; addAttr -ci true -sn "isGearGuide" -ln "isGearGuide" -dv 1 -min 0 -max 1 -at "bool"; setAttr -k off -cb on ".v"; - setAttr ".t" -type "double3" 1.3903626031763234 -0.77423199221117323 -0.00087398468478161462 ; + setAttr ".t" -type "double3" 1.3903626031763228 -0.77423199221117389 -0.00087398468478205871 ; setAttr -k off -cb on ".tx"; setAttr -k off -cb on ".ty"; setAttr -k off -cb on ".tz"; - setAttr ".r" -type "double3" 0 0 -22.49024465344802 ; + setAttr ".r" -type "double3" 0 0 -22.490244653448059 ; setAttr -k off -cb on ".rx"; setAttr -k off -cb on ".ry"; setAttr -k off -cb on ".rz"; setAttr -cb on ".ro"; - setAttr ".s" -type "double3" 0.99999999999999822 0.99999999999999856 0.99999999999999911 ; + setAttr ".s" -type "double3" 0.99999999999999867 0.99999999999999956 1.0000000000000009 ; setAttr -k off -cb on ".sx"; setAttr -k off -cb on ".sy"; setAttr -k off -cb on ".sz"; createNode nurbsCurve -n "foot_R0_0_locShape" -p "foot_R0_0_loc"; - rename -uid "566AD260-4FBC-F468-25BC-A99D215C9C3D"; + rename -uid "FC8A81D1-49CF-52C6-A9E9-9FA3CD3FD8E5"; setAttr ".ihi" 0; setAttr -k off ".v"; setAttr ".ove" yes; @@ -14047,8 +14124,8 @@ createNode nurbsCurve -n "foot_R0_0_locShape" -p "foot_R0_0_loc"; 0.25 0 0 -0.25 0 0 ; -createNode nurbsCurve -n "foot_R0_0_loc25Shape" -p "foot_R0_0_loc"; - rename -uid "51BB368B-4DB0-3D19-3478-3E96F0BA0620"; +createNode nurbsCurve -n "foot_R0_0_loc1Shape" -p "foot_R0_0_loc"; + rename -uid "767B5B4A-4404-BB23-2942-9681AB20F15D"; setAttr ".ihi" 0; setAttr -k off ".v"; setAttr ".ove" yes; @@ -14060,8 +14137,8 @@ createNode nurbsCurve -n "foot_R0_0_loc25Shape" -p "foot_R0_0_loc"; 0 0.25 0 0 -0.25 0 ; -createNode nurbsCurve -n "foot_R0_0_loc26Shape" -p "foot_R0_0_loc"; - rename -uid "EC890CE6-494B-DAFD-17C0-B893D075ADC7"; +createNode nurbsCurve -n "foot_R0_0_loc2Shape" -p "foot_R0_0_loc"; + rename -uid "7C6CD542-47D9-6C07-5B7F-69B09DBBDD71"; setAttr ".ihi" 0; setAttr -k off ".v"; setAttr ".ove" yes; @@ -14073,8 +14150,8 @@ createNode nurbsCurve -n "foot_R0_0_loc26Shape" -p "foot_R0_0_loc"; 0 0 0.25 0 0 -0.25 ; -createNode nurbsCurve -n "foot_R0_0_loc27Shape" -p "foot_R0_0_loc"; - rename -uid "EC559A03-480B-F671-43DA-119666455D70"; +createNode nurbsCurve -n "foot_R0_0_loc3Shape" -p "foot_R0_0_loc"; + rename -uid "3ACBA2E2-43C7-12DD-CA20-69929CA8911F"; setAttr ".ihi" 0; setAttr -k off ".v"; setAttr ".ove" yes; @@ -14091,8 +14168,8 @@ createNode nurbsCurve -n "foot_R0_0_loc27Shape" -p "foot_R0_0_loc"; 0 -0.1875 0 -0.1875 0 0 ; -createNode nurbsCurve -n "foot_R0_0_loc27_0crvShape" -p "foot_R0_0_loc"; - rename -uid "5E1A3BE4-49BC-160C-8DE4-F3B31262C62A"; +createNode nurbsCurve -n "foot_R0_0_loc3_0crvShape" -p "foot_R0_0_loc"; + rename -uid "5A787437-4346-7CAB-3F1B-34A6719B13B3"; setAttr ".ihi" 0; setAttr -k off ".v"; setAttr ".ove" yes; @@ -14109,8 +14186,8 @@ createNode nurbsCurve -n "foot_R0_0_loc27_0crvShape" -p "foot_R0_0_loc"; 0 0 -0.1875 -0.1875 0 0 ; -createNode nurbsCurve -n "foot_R0_0_loc27_1crvShape" -p "foot_R0_0_loc"; - rename -uid "F8323E7C-4EB8-0B10-CFE0-B59AD49392F9"; +createNode nurbsCurve -n "foot_R0_0_loc3_1crvShape" -p "foot_R0_0_loc"; + rename -uid "A82AA2CA-453E-89B2-4185-EAA4B0B4AF74"; setAttr ".ihi" 0; setAttr -k off ".v"; setAttr ".ove" yes; @@ -14128,24 +14205,24 @@ createNode nurbsCurve -n "foot_R0_0_loc27_1crvShape" -p "foot_R0_0_loc"; 0 0 -0.1875 ; createNode transform -n "foot_R0_1_loc" -p "foot_R0_0_loc"; - rename -uid "4857E195-4757-3C0C-5C66-BC86493FF26C"; + rename -uid "099E25A7-449A-51F5-EB3D-5F88CC79B620"; addAttr -ci true -sn "isGearGuide" -ln "isGearGuide" -dv 1 -min 0 -max 1 -at "bool"; setAttr -k off -cb on ".v"; - setAttr ".t" -type "double3" 0.57241624162444316 0.052400542543842743 0.00053566803260785001 ; + setAttr ".t" -type "double3" 0.57241624162444504 0.052400542543841189 0.00053566803260851614 ; setAttr -k off -cb on ".tx"; setAttr -k off -cb on ".ty"; setAttr -k off -cb on ".tz"; - setAttr ".r" -type "double3" 0 0 22.49024465344802 ; + setAttr ".r" -type "double3" 0 0 22.490244653448027 ; setAttr -k off -cb on ".rx"; setAttr -k off -cb on ".ry"; setAttr -k off -cb on ".rz"; setAttr -cb on ".ro"; - setAttr ".s" -type "double3" 1.0000000000000016 1.0000000000000002 1.0000000000000011 ; + setAttr ".s" -type "double3" 1.0000000000000007 0.99999999999999989 0.999999999999999 ; setAttr -k off -cb on ".sx"; setAttr -k off -cb on ".sy"; setAttr -k off -cb on ".sz"; createNode nurbsCurve -n "foot_R0_1_locShape" -p "foot_R0_1_loc"; - rename -uid "8678076A-4D70-75BB-40BC-A797BCEC5332"; + rename -uid "9C55A29E-4E30-4109-78BB-60BDDD6F427E"; setAttr ".ihi" 0; setAttr -k off ".v"; setAttr ".ove" yes; @@ -14157,8 +14234,8 @@ createNode nurbsCurve -n "foot_R0_1_locShape" -p "foot_R0_1_loc"; 0.25 0 0 -0.25 0 0 ; -createNode nurbsCurve -n "foot_R0_1_loc25Shape" -p "foot_R0_1_loc"; - rename -uid "98A0AAC2-438C-FB0F-955F-9A8B042F31C1"; +createNode nurbsCurve -n "foot_R0_1_loc1Shape" -p "foot_R0_1_loc"; + rename -uid "6AD67446-488B-CDCA-26C3-A3A662C481EA"; setAttr ".ihi" 0; setAttr -k off ".v"; setAttr ".ove" yes; @@ -14170,8 +14247,8 @@ createNode nurbsCurve -n "foot_R0_1_loc25Shape" -p "foot_R0_1_loc"; 0 0.25 0 0 -0.25 0 ; -createNode nurbsCurve -n "foot_R0_1_loc26Shape" -p "foot_R0_1_loc"; - rename -uid "A8243406-4C17-9CA5-A59D-B880B8666F52"; +createNode nurbsCurve -n "foot_R0_1_loc2Shape" -p "foot_R0_1_loc"; + rename -uid "1B51556C-433A-4B7B-FB5E-299B07060F5B"; setAttr ".ihi" 0; setAttr -k off ".v"; setAttr ".ove" yes; @@ -14183,8 +14260,8 @@ createNode nurbsCurve -n "foot_R0_1_loc26Shape" -p "foot_R0_1_loc"; 0 0 0.25 0 0 -0.25 ; -createNode nurbsCurve -n "foot_R0_1_loc27Shape" -p "foot_R0_1_loc"; - rename -uid "A0B431DB-4FEC-30CD-DB32-9EB9680D7ABE"; +createNode nurbsCurve -n "foot_R0_1_loc3Shape" -p "foot_R0_1_loc"; + rename -uid "3CE175FF-427D-C9F2-6B66-F4879B08CD0D"; setAttr ".ihi" 0; setAttr -k off ".v"; setAttr ".ove" yes; @@ -14201,8 +14278,8 @@ createNode nurbsCurve -n "foot_R0_1_loc27Shape" -p "foot_R0_1_loc"; 0 -0.1875 0 -0.1875 0 0 ; -createNode nurbsCurve -n "foot_R0_1_loc27_0crvShape" -p "foot_R0_1_loc"; - rename -uid "9E0C7DEF-42F9-0F95-AF09-31B72C61F715"; +createNode nurbsCurve -n "foot_R0_1_loc3_0crvShape" -p "foot_R0_1_loc"; + rename -uid "AD8D309D-46CA-AF5B-6606-E59ACE79E46F"; setAttr ".ihi" 0; setAttr -k off ".v"; setAttr ".ove" yes; @@ -14219,8 +14296,8 @@ createNode nurbsCurve -n "foot_R0_1_loc27_0crvShape" -p "foot_R0_1_loc"; 0 0 -0.1875 -0.1875 0 0 ; -createNode nurbsCurve -n "foot_R0_1_loc27_1crvShape" -p "foot_R0_1_loc"; - rename -uid "10894C43-42F4-0AB3-F211-6D8E29A3C5B0"; +createNode nurbsCurve -n "foot_R0_1_loc3_1crvShape" -p "foot_R0_1_loc"; + rename -uid "DDD80DC6-4CCD-3B74-B722-24A88BF2EF3F"; setAttr ".ihi" 0; setAttr -k off ".v"; setAttr ".ove" yes; @@ -14238,10 +14315,10 @@ createNode nurbsCurve -n "foot_R0_1_loc27_1crvShape" -p "foot_R0_1_loc"; 0 0 -0.1875 ; createNode transform -n "foot_R0_2_loc" -p "foot_R0_1_loc"; - rename -uid "4F5A0228-48C0-620D-2D50-1D86F3DF9CA1"; + rename -uid "375AC2CA-479F-F25B-553F-E9A967B2A46C"; addAttr -ci true -sn "isGearGuide" -ln "isGearGuide" -dv 1 -min 0 -max 1 -at "bool"; setAttr -k off -cb on ".v"; - setAttr ".t" -type "double3" 0.34999482654518421 -0.34355031336095415 -0.0018389437992674118 ; + setAttr ".t" -type "double3" 0.34999482654518332 -0.34355031336095387 -0.0018389437992669677 ; setAttr -k off -cb on ".tx"; setAttr -k off -cb on ".ty"; setAttr -k off -cb on ".tz"; @@ -14250,12 +14327,12 @@ createNode transform -n "foot_R0_2_loc" -p "foot_R0_1_loc"; setAttr -k off -cb on ".ry"; setAttr -k off -cb on ".rz"; setAttr -cb on ".ro"; - setAttr ".s" -type "double3" 1.0000000000000011 1.0000000000000004 1.000000000000002 ; + setAttr ".s" -type "double3" 1 1.0000000000000016 0.99999999999999833 ; setAttr -k off -cb on ".sx"; setAttr -k off -cb on ".sy"; setAttr -k off -cb on ".sz"; createNode nurbsCurve -n "foot_R0_2_locShape" -p "foot_R0_2_loc"; - rename -uid "D6779881-41E2-AB8B-BD1C-E18015EE3E2E"; + rename -uid "CA43A168-4E6E-62C0-F171-50A6951858B5"; setAttr ".ihi" 0; setAttr -k off ".v"; setAttr ".ove" yes; @@ -14267,8 +14344,8 @@ createNode nurbsCurve -n "foot_R0_2_locShape" -p "foot_R0_2_loc"; 0.25 0 0 -0.25 0 0 ; -createNode nurbsCurve -n "foot_R0_2_loc25Shape" -p "foot_R0_2_loc"; - rename -uid "4E72952B-4146-DCD1-2749-DA82F7E0CBF9"; +createNode nurbsCurve -n "foot_R0_2_loc1Shape" -p "foot_R0_2_loc"; + rename -uid "06E6F672-4CE3-5C58-2003-47BE8E2A0C5D"; setAttr ".ihi" 0; setAttr -k off ".v"; setAttr ".ove" yes; @@ -14280,8 +14357,8 @@ createNode nurbsCurve -n "foot_R0_2_loc25Shape" -p "foot_R0_2_loc"; 0 0.25 0 0 -0.25 0 ; -createNode nurbsCurve -n "foot_R0_2_loc26Shape" -p "foot_R0_2_loc"; - rename -uid "63B44DB0-4CD8-5984-9AAF-C392377CB084"; +createNode nurbsCurve -n "foot_R0_2_loc2Shape" -p "foot_R0_2_loc"; + rename -uid "DA8F363A-49F4-63E5-92D7-D7A16B8010A6"; setAttr ".ihi" 0; setAttr -k off ".v"; setAttr ".ove" yes; @@ -14293,8 +14370,8 @@ createNode nurbsCurve -n "foot_R0_2_loc26Shape" -p "foot_R0_2_loc"; 0 0 0.25 0 0 -0.25 ; -createNode nurbsCurve -n "foot_R0_2_loc27Shape" -p "foot_R0_2_loc"; - rename -uid "367081C1-430B-C651-4F56-47B43C6C57CF"; +createNode nurbsCurve -n "foot_R0_2_loc3Shape" -p "foot_R0_2_loc"; + rename -uid "D377CD1F-4F98-C194-806A-34B9DBB78DE1"; setAttr ".ihi" 0; setAttr -k off ".v"; setAttr ".ove" yes; @@ -14311,8 +14388,8 @@ createNode nurbsCurve -n "foot_R0_2_loc27Shape" -p "foot_R0_2_loc"; 0 -0.1875 0 -0.1875 0 0 ; -createNode nurbsCurve -n "foot_R0_2_loc27_0crvShape" -p "foot_R0_2_loc"; - rename -uid "F95E3A31-4C18-5688-4D06-2EB8B3CB56AF"; +createNode nurbsCurve -n "foot_R0_2_loc3_0crvShape" -p "foot_R0_2_loc"; + rename -uid "B5AA3748-427D-A798-CAC6-20A84D0E1F48"; setAttr ".ihi" 0; setAttr -k off ".v"; setAttr ".ove" yes; @@ -14329,8 +14406,8 @@ createNode nurbsCurve -n "foot_R0_2_loc27_0crvShape" -p "foot_R0_2_loc"; 0 0 -0.1875 -0.1875 0 0 ; -createNode nurbsCurve -n "foot_R0_2_loc27_1crvShape" -p "foot_R0_2_loc"; - rename -uid "98D7B537-41CE-7A77-49B1-D3B2EA3BB2A4"; +createNode nurbsCurve -n "foot_R0_2_loc3_1crvShape" -p "foot_R0_2_loc"; + rename -uid "7613615A-4C75-8810-9136-B0B70A4C81FF"; setAttr ".ihi" 0; setAttr -k off ".v"; setAttr ".ove" yes; @@ -14348,19 +14425,19 @@ createNode nurbsCurve -n "foot_R0_2_loc27_1crvShape" -p "foot_R0_2_loc"; 0 0 -0.1875 ; createNode transform -n "foot_R0_crv" -p "foot_R0_root"; - rename -uid "125BCE9A-4298-6826-81D5-AD93A321590B"; + rename -uid "2EF2B095-4C6F-230F-9B39-5782A4E9B22D"; setAttr ".ovdt" 1; setAttr ".ove" yes; - setAttr ".t" -type "double3" 0.84123625248687028 -1.2934842521415475 1.0591437062861169 ; - setAttr ".r" -type "double3" 177.10098306027425 -84.223472754416562 -177.08621222536053 ; - setAttr ".s" -type "double3" 1.0497207713808359 1.0497207713808343 -1.0497207713808352 ; + setAttr ".t" -type "double3" 0.8412362524868694 -1.2934842521415504 1.0591437062861189 ; + setAttr ".r" -type "double3" 177.10098306027425 -84.223472754416505 -177.08621222536055 ; + setAttr ".s" -type "double3" 1.0497207713808367 1.0497207713808354 -1.0497207713808354 ; createNode nurbsCurve -n "foot_R0_crvShape" -p "foot_R0_crv"; - rename -uid "81473DCD-4B44-4E84-1545-9D978A44BDE9"; + rename -uid "B5242A2C-4422-758B-9CDE-C6B6CA71D0A3"; setAttr -k off ".v"; setAttr -s 4 ".iog[0].og"; setAttr ".tw" yes; createNode nurbsCurve -n "foot_R0_crvShapeOrig" -p "foot_R0_crv"; - rename -uid "2127B6BD-46F8-7529-30CF-25B8F987E82E"; + rename -uid "BE51C499-4515-D3EA-CD28-46B38F3A5E27"; setAttr -k off ".v"; setAttr ".io" yes; setAttr ".cc" -type "nurbsCurve" @@ -14373,10 +14450,10 @@ createNode nurbsCurve -n "foot_R0_crvShapeOrig" -p "foot_R0_crv"; 0 0 0 ; createNode transform -n "foot_R0_heel" -p "foot_R0_root"; - rename -uid "54F1C5D7-4E4A-EFD5-F5DF-9C85F362A4B6"; + rename -uid "FEBBE305-485A-EE16-5629-6B90E8E79918"; addAttr -ci true -sn "isGearGuide" -ln "isGearGuide" -dv 1 -min 0 -max 1 -at "bool"; setAttr -k off -cb on ".v"; - setAttr ".t" -type "double3" -0.51442201408343335 -1.2883323665462234 -0.0019628851482422771 ; + setAttr ".t" -type "double3" -0.51442201408343358 -1.2883323665462258 -0.0019628851482433873 ; setAttr -k off -cb on ".tx"; setAttr -k off -cb on ".ty"; setAttr -k off -cb on ".tz"; @@ -14384,12 +14461,12 @@ createNode transform -n "foot_R0_heel" -p "foot_R0_root"; setAttr -k off -cb on ".ry"; setAttr -k off -cb on ".rz"; setAttr -cb on ".ro"; - setAttr ".s" -type "double3" 1 0.99999999999999878 1.0000000000000002 ; + setAttr ".s" -type "double3" 0.99999999999999922 1 1 ; setAttr -k off -cb on ".sx"; setAttr -k off -cb on ".sy"; setAttr -k off -cb on ".sz"; createNode nurbsCurve -n "foot_R0_heelShape" -p "foot_R0_heel"; - rename -uid "A1ECC640-4CC1-A343-672A-83817A7701A9"; + rename -uid "2C9CA606-47E9-3976-0412-CAB6E7642EBD"; setAttr ".ihi" 0; setAttr -k off ".v"; setAttr ".ove" yes; @@ -14401,8 +14478,8 @@ createNode nurbsCurve -n "foot_R0_heelShape" -p "foot_R0_heel"; 0.25 0 0 -0.25 0 0 ; -createNode nurbsCurve -n "foot_R0_heel25Shape" -p "foot_R0_heel"; - rename -uid "3E2BCF5A-41BA-24BE-C7C5-BA8748A4E1B7"; +createNode nurbsCurve -n "foot_R0_heel1Shape" -p "foot_R0_heel"; + rename -uid "B9BB4283-4E29-D490-7EF8-3FBCD99DA767"; setAttr ".ihi" 0; setAttr -k off ".v"; setAttr ".ove" yes; @@ -14414,8 +14491,8 @@ createNode nurbsCurve -n "foot_R0_heel25Shape" -p "foot_R0_heel"; 0 0.25 0 0 -0.25 0 ; -createNode nurbsCurve -n "foot_R0_heel26Shape" -p "foot_R0_heel"; - rename -uid "B1ADAB25-42E9-E61E-CBB4-8A8717CAA6EF"; +createNode nurbsCurve -n "foot_R0_heel2Shape" -p "foot_R0_heel"; + rename -uid "365E4A79-498E-9EB3-EBE3-9180EE7A44DA"; setAttr ".ihi" 0; setAttr -k off ".v"; setAttr ".ove" yes; @@ -14427,8 +14504,8 @@ createNode nurbsCurve -n "foot_R0_heel26Shape" -p "foot_R0_heel"; 0 0 0.25 0 0 -0.25 ; -createNode nurbsCurve -n "foot_R0_heel27Shape" -p "foot_R0_heel"; - rename -uid "3C7D2846-4D44-1261-C0ED-AAA00F88A8EA"; +createNode nurbsCurve -n "foot_R0_heel3Shape" -p "foot_R0_heel"; + rename -uid "B0EE7408-4CBF-B300-E9FF-75B3B5F6ADF9"; setAttr ".ihi" 0; setAttr -k off ".v"; setAttr ".ove" yes; @@ -14445,8 +14522,8 @@ createNode nurbsCurve -n "foot_R0_heel27Shape" -p "foot_R0_heel"; 0 -0.1875 0 -0.1875 0 0 ; -createNode nurbsCurve -n "foot_R0_heel27_0crvShape" -p "foot_R0_heel"; - rename -uid "FAE26AAC-48AB-30B6-1F4E-29A5A8C42E53"; +createNode nurbsCurve -n "foot_R0_heel3_0crvShape" -p "foot_R0_heel"; + rename -uid "C67B34B9-4EBE-FD9C-8DB7-4DA422A43424"; setAttr ".ihi" 0; setAttr -k off ".v"; setAttr ".ove" yes; @@ -14463,8 +14540,8 @@ createNode nurbsCurve -n "foot_R0_heel27_0crvShape" -p "foot_R0_heel"; 0 0 -0.1875 -0.1875 0 0 ; -createNode nurbsCurve -n "foot_R0_heel27_1crvShape" -p "foot_R0_heel"; - rename -uid "85000C9F-44DA-562F-B70D-B2B7A8E2BAF5"; +createNode nurbsCurve -n "foot_R0_heel3_1crvShape" -p "foot_R0_heel"; + rename -uid "B485D291-4C5A-7D29-3A09-C3A9FA6BB850"; setAttr ".ihi" 0; setAttr -k off ".v"; setAttr ".ove" yes; @@ -14482,10 +14559,10 @@ createNode nurbsCurve -n "foot_R0_heel27_1crvShape" -p "foot_R0_heel"; 0 0 -0.1875 ; createNode transform -n "foot_R0_outpivot" -p "foot_R0_root"; - rename -uid "3B0EE826-4470-6AB9-1540-43BD42EC3B83"; + rename -uid "7C927E83-45BB-A4AC-2A49-A7AD7FE1FEEF"; addAttr -ci true -sn "isGearGuide" -ln "isGearGuide" -dv 1 -min 0 -max 1 -at "bool"; setAttr -k off -cb on ".v"; - setAttr ".t" -type "double3" 1.3551807145991002 -1.2852474767223807 -0.54483578923279619 ; + setAttr ".t" -type "double3" 1.3551807145991011 -1.2852474767223834 -0.5448357892327973 ; setAttr -k off -cb on ".tx"; setAttr -k off -cb on ".ty"; setAttr -k off -cb on ".tz"; @@ -14493,12 +14570,12 @@ createNode transform -n "foot_R0_outpivot" -p "foot_R0_root"; setAttr -k off -cb on ".ry"; setAttr -k off -cb on ".rz"; setAttr -cb on ".ro"; - setAttr ".s" -type "double3" 1 0.99999999999999878 1.0000000000000002 ; + setAttr ".s" -type "double3" 0.99999999999999922 1 1 ; setAttr -k off -cb on ".sx"; setAttr -k off -cb on ".sy"; setAttr -k off -cb on ".sz"; createNode nurbsCurve -n "foot_R0_outpivotShape" -p "foot_R0_outpivot"; - rename -uid "7F6374C2-4C99-4F92-B4B0-3EB55DDB72D8"; + rename -uid "B11CAED6-4903-2978-4DA3-758A93AE925C"; setAttr ".ihi" 0; setAttr -k off ".v"; setAttr ".ove" yes; @@ -14510,8 +14587,8 @@ createNode nurbsCurve -n "foot_R0_outpivotShape" -p "foot_R0_outpivot"; 0.25 0 0 -0.25 0 0 ; -createNode nurbsCurve -n "foot_R0_outpivot25Shape" -p "foot_R0_outpivot"; - rename -uid "E35CE0F4-44E2-7C3C-4C98-7DBA55A28094"; +createNode nurbsCurve -n "foot_R0_outpivot1Shape" -p "foot_R0_outpivot"; + rename -uid "AE5E578D-4400-C2F5-7CFB-F695F824FD04"; setAttr ".ihi" 0; setAttr -k off ".v"; setAttr ".ove" yes; @@ -14523,8 +14600,8 @@ createNode nurbsCurve -n "foot_R0_outpivot25Shape" -p "foot_R0_outpivot"; 0 0.25 0 0 -0.25 0 ; -createNode nurbsCurve -n "foot_R0_outpivot26Shape" -p "foot_R0_outpivot"; - rename -uid "BAE64686-4EEC-ECBA-04EB-5C9B84DB8E22"; +createNode nurbsCurve -n "foot_R0_outpivot2Shape" -p "foot_R0_outpivot"; + rename -uid "9D3DA7FF-4270-80BF-EC3D-929E06027500"; setAttr ".ihi" 0; setAttr -k off ".v"; setAttr ".ove" yes; @@ -14536,8 +14613,8 @@ createNode nurbsCurve -n "foot_R0_outpivot26Shape" -p "foot_R0_outpivot"; 0 0 0.25 0 0 -0.25 ; -createNode nurbsCurve -n "foot_R0_outpivot27Shape" -p "foot_R0_outpivot"; - rename -uid "0BC11A1E-4ECA-B633-D304-53A02A206466"; +createNode nurbsCurve -n "foot_R0_outpivot3Shape" -p "foot_R0_outpivot"; + rename -uid "E67452EF-4E5B-0D47-B519-A89FCE4E7F83"; setAttr ".ihi" 0; setAttr -k off ".v"; setAttr ".ove" yes; @@ -14554,8 +14631,8 @@ createNode nurbsCurve -n "foot_R0_outpivot27Shape" -p "foot_R0_outpivot"; 0 -0.1875 0 -0.1875 0 0 ; -createNode nurbsCurve -n "foot_R0_outpivot27_0crvShape" -p "foot_R0_outpivot"; - rename -uid "3994963B-41EF-723B-9524-F48EA7797360"; +createNode nurbsCurve -n "foot_R0_outpivot3_0crvShape" -p "foot_R0_outpivot"; + rename -uid "B302F911-4C76-E517-C228-30B63F5314AA"; setAttr ".ihi" 0; setAttr -k off ".v"; setAttr ".ove" yes; @@ -14572,8 +14649,8 @@ createNode nurbsCurve -n "foot_R0_outpivot27_0crvShape" -p "foot_R0_outpivot"; 0 0 -0.1875 -0.1875 0 0 ; -createNode nurbsCurve -n "foot_R0_outpivot27_1crvShape" -p "foot_R0_outpivot"; - rename -uid "60ECF76F-4B96-7693-FF7A-75A7B5618CC5"; +createNode nurbsCurve -n "foot_R0_outpivot3_1crvShape" -p "foot_R0_outpivot"; + rename -uid "3F205C07-4DDD-0245-3BBE-7B958A334515"; setAttr ".ihi" 0; setAttr -k off ".v"; setAttr ".ove" yes; @@ -14591,10 +14668,10 @@ createNode nurbsCurve -n "foot_R0_outpivot27_1crvShape" -p "foot_R0_outpivot"; 0 0 -0.1875 ; createNode transform -n "foot_R0_inpivot" -p "foot_R0_root"; - rename -uid "61B102C7-42EB-B120-8D03-C3B18FD71FA6"; + rename -uid "1A1EFBCA-486D-9C20-A215-7388D867D28D"; addAttr -ci true -sn "isGearGuide" -ln "isGearGuide" -dv 1 -min 0 -max 1 -at "bool"; setAttr -k off -cb on ".v"; - setAttr ".t" -type "double3" 1.3551807145991004 -1.2905939540073474 0.65234269833768666 ; + setAttr ".t" -type "double3" 1.3551807145990997 -1.2905939540073492 0.65234269833768588 ; setAttr -k off -cb on ".tx"; setAttr -k off -cb on ".ty"; setAttr -k off -cb on ".tz"; @@ -14602,12 +14679,12 @@ createNode transform -n "foot_R0_inpivot" -p "foot_R0_root"; setAttr -k off -cb on ".ry"; setAttr -k off -cb on ".rz"; setAttr -cb on ".ro"; - setAttr ".s" -type "double3" 1 0.99999999999999878 1.0000000000000002 ; + setAttr ".s" -type "double3" 0.99999999999999922 1 1 ; setAttr -k off -cb on ".sx"; setAttr -k off -cb on ".sy"; setAttr -k off -cb on ".sz"; createNode nurbsCurve -n "foot_R0_inpivotShape" -p "foot_R0_inpivot"; - rename -uid "7A8C6E77-4435-87EB-D5FD-CF8BB09A4CD3"; + rename -uid "79590ED2-410F-8AE3-51CE-C8B0DB7D3AC0"; setAttr ".ihi" 0; setAttr -k off ".v"; setAttr ".ove" yes; @@ -14619,8 +14696,8 @@ createNode nurbsCurve -n "foot_R0_inpivotShape" -p "foot_R0_inpivot"; 0.25 0 0 -0.25 0 0 ; -createNode nurbsCurve -n "foot_R0_inpivot25Shape" -p "foot_R0_inpivot"; - rename -uid "18FFB1BA-4F76-20C0-8F4C-4D9DBAB284C2"; +createNode nurbsCurve -n "foot_R0_inpivot1Shape" -p "foot_R0_inpivot"; + rename -uid "60FFD2F2-4DD1-1883-C3E5-9E8EDA24135D"; setAttr ".ihi" 0; setAttr -k off ".v"; setAttr ".ove" yes; @@ -14632,8 +14709,8 @@ createNode nurbsCurve -n "foot_R0_inpivot25Shape" -p "foot_R0_inpivot"; 0 0.25 0 0 -0.25 0 ; -createNode nurbsCurve -n "foot_R0_inpivot26Shape" -p "foot_R0_inpivot"; - rename -uid "EDF59F40-4B4E-0DF9-43CD-7F94CCFE164E"; +createNode nurbsCurve -n "foot_R0_inpivot2Shape" -p "foot_R0_inpivot"; + rename -uid "65DD7E85-4A12-F8D4-E061-1CADFF0C3E07"; setAttr ".ihi" 0; setAttr -k off ".v"; setAttr ".ove" yes; @@ -14645,8 +14722,8 @@ createNode nurbsCurve -n "foot_R0_inpivot26Shape" -p "foot_R0_inpivot"; 0 0 0.25 0 0 -0.25 ; -createNode nurbsCurve -n "foot_R0_inpivot27Shape" -p "foot_R0_inpivot"; - rename -uid "EEFAADF7-4E5B-0C4A-78B5-20AD829CC8B8"; +createNode nurbsCurve -n "foot_R0_inpivot3Shape" -p "foot_R0_inpivot"; + rename -uid "5B932B4A-4605-F909-D389-6BA113266463"; setAttr ".ihi" 0; setAttr -k off ".v"; setAttr ".ove" yes; @@ -14663,8 +14740,8 @@ createNode nurbsCurve -n "foot_R0_inpivot27Shape" -p "foot_R0_inpivot"; 0 -0.1875 0 -0.1875 0 0 ; -createNode nurbsCurve -n "foot_R0_inpivot27_0crvShape" -p "foot_R0_inpivot"; - rename -uid "3C66DD34-49A6-FFC1-33B8-86A7234A7B57"; +createNode nurbsCurve -n "foot_R0_inpivot3_0crvShape" -p "foot_R0_inpivot"; + rename -uid "8FE09C94-4077-E114-9234-96A0E936EB27"; setAttr ".ihi" 0; setAttr -k off ".v"; setAttr ".ove" yes; @@ -14681,8 +14758,8 @@ createNode nurbsCurve -n "foot_R0_inpivot27_0crvShape" -p "foot_R0_inpivot"; 0 0 -0.1875 -0.1875 0 0 ; -createNode nurbsCurve -n "foot_R0_inpivot27_1crvShape" -p "foot_R0_inpivot"; - rename -uid "B7481CE4-4E65-E21A-7CE6-42ADC8106084"; +createNode nurbsCurve -n "foot_R0_inpivot3_1crvShape" -p "foot_R0_inpivot"; + rename -uid "64F431CE-4A1E-45ED-BD1E-37A87CD888A0"; setAttr ".ihi" 0; setAttr -k off ".v"; setAttr ".ove" yes; @@ -14700,19 +14777,19 @@ createNode nurbsCurve -n "foot_R0_inpivot27_1crvShape" -p "foot_R0_inpivot"; 0 0 -0.1875 ; createNode transform -n "foot_R0_1" -p "foot_R0_root"; - rename -uid "C56BBEE6-46C4-A333-EB6E-39931E167CBA"; + rename -uid "94291B69-49FA-0E04-4391-4E94C97DC09B"; setAttr ".ovdt" 1; setAttr ".ove" yes; - setAttr ".t" -type "double3" 0.84123625248687028 -1.2934842521415475 1.0591437062861169 ; - setAttr ".r" -type "double3" 177.10098306027425 -84.223472754416562 -177.08621222536053 ; - setAttr ".s" -type "double3" 1.0497207713808359 1.0497207713808343 -1.0497207713808352 ; + setAttr ".t" -type "double3" 0.8412362524868694 -1.2934842521415504 1.0591437062861189 ; + setAttr ".r" -type "double3" 177.10098306027425 -84.223472754416505 -177.08621222536055 ; + setAttr ".s" -type "double3" 1.0497207713808367 1.0497207713808354 -1.0497207713808354 ; createNode nurbsCurve -n "foot_R0_Shape1" -p "foot_R0_1"; - rename -uid "2A0B4152-438C-6A68-BDE8-FC972BE43AFB"; + rename -uid "8C13C95D-496C-A22D-8F10-AF89006DE0B8"; setAttr -k off ".v"; setAttr -s 4 ".iog[0].og"; setAttr ".tw" yes; createNode nurbsCurve -n "foot_R0_Shape1Orig" -p "foot_R0_1"; - rename -uid "8B77A4E9-4783-0D8C-FF1E-2EACB47C71AD"; + rename -uid "1C8CA5CC-4E3D-9965-4934-A396646D44FD"; setAttr -k off ".v"; setAttr ".io" yes; setAttr ".cc" -type "nurbsCurve" @@ -14726,7 +14803,7 @@ createNode nurbsCurve -n "foot_R0_Shape1Orig" -p "foot_R0_1"; 0 0 0 ; createNode transform -n "legUI_R0_root" -p "foot_R0_root"; - rename -uid "A6C5AEF4-462A-C713-3FC3-10876D47550B"; + rename -uid "448E5974-4452-AE2B-3D1C-B4AABA0EF0F8"; addAttr -ci true -sn "isGearGuide" -ln "isGearGuide" -dv 1 -min 0 -max 1 -at "bool"; addAttr -ci true -sn "comp_type" -ln "comp_type" -dt "string"; addAttr -ci true -sn "comp_name" -ln "comp_name" -dt "string"; @@ -14755,7 +14832,7 @@ createNode transform -n "legUI_R0_root" -p "foot_R0_root"; addAttr -ci true -sn "useIndex" -ln "useIndex" -min 0 -max 1 -at "bool"; addAttr -ci true -sn "parentJointIndex" -ln "parentJointIndex" -at "long"; setAttr -k off -cb on ".v"; - setAttr ".t" -type "double3" 0.59908552650329661 0.5102979517299373 -1.4395512694570001 ; + setAttr ".t" -type "double3" 0.59908552650329583 0.51029795172993597 -1.4395512694570034 ; setAttr -k off -cb on ".tx"; setAttr -k off -cb on ".ty"; setAttr -k off -cb on ".tz"; @@ -14764,7 +14841,7 @@ createNode transform -n "legUI_R0_root" -p "foot_R0_root"; setAttr -k off -cb on ".ry"; setAttr -k off -cb on ".rz"; setAttr -cb on ".ro"; - setAttr ".s" -type "double3" 1.0000000000000036 0.99999999999999878 1.0000000000000013 ; + setAttr ".s" -type "double3" 1.0000000000000009 1 0.999999999999998 ; setAttr -k off -cb on ".sx"; setAttr -k off -cb on ".sy"; setAttr -k off -cb on ".sz"; @@ -14780,7 +14857,7 @@ createNode transform -n "legUI_R0_root" -p "foot_R0_root"; setAttr ".ctlSize" 1; setAttr ".parentJointIndex" -1; createNode nurbsCurve -n "legUI_R0_rootShape" -p "legUI_R0_root"; - rename -uid "E40C421C-4A84-1B39-991D-139340B16BE1"; + rename -uid "E93ADB80-4359-6320-F03B-3AACAC06CB2D"; setAttr ".ihi" 0; setAttr -k off ".v"; setAttr ".ove" yes; @@ -14792,8 +14869,8 @@ createNode nurbsCurve -n "legUI_R0_rootShape" -p "legUI_R0_root"; 0.25 0 0 -0.25 0 0 ; -createNode nurbsCurve -n "legUI_R0_root25Shape" -p "legUI_R0_root"; - rename -uid "54341298-4C94-50AB-7A7D-18A471485A38"; +createNode nurbsCurve -n "legUI_R0_root1Shape" -p "legUI_R0_root"; + rename -uid "3DEE63A5-4A9F-B1CB-591E-69AD7530105F"; setAttr ".ihi" 0; setAttr -k off ".v"; setAttr ".ove" yes; @@ -14805,8 +14882,8 @@ createNode nurbsCurve -n "legUI_R0_root25Shape" -p "legUI_R0_root"; 0 0.25 0 0 -0.25 0 ; -createNode nurbsCurve -n "legUI_R0_root26Shape" -p "legUI_R0_root"; - rename -uid "A746A64B-4DC1-33B7-8C51-3189BDD27A1C"; +createNode nurbsCurve -n "legUI_R0_root2Shape" -p "legUI_R0_root"; + rename -uid "261E111E-4883-6299-AB28-C5A09672C48F"; setAttr ".ihi" 0; setAttr -k off ".v"; setAttr ".ove" yes; @@ -14818,8 +14895,8 @@ createNode nurbsCurve -n "legUI_R0_root26Shape" -p "legUI_R0_root"; 0 0 0.25 0 0 -0.25 ; -createNode nurbsCurve -n "legUI_R0_root27Shape" -p "legUI_R0_root"; - rename -uid "3CC4CCB5-4FD9-1C54-7B8A-BB85914436D9"; +createNode nurbsCurve -n "legUI_R0_root3Shape" -p "legUI_R0_root"; + rename -uid "F344CF27-4CD8-A546-C767-8681537B8D88"; setAttr ".ihi" 0; setAttr -k off ".v"; setAttr ".ove" yes; @@ -14846,36 +14923,36 @@ createNode nurbsCurve -n "legUI_R0_root27Shape" -p "legUI_R0_root"; -0.125 -0.125 -0.125 ; createNode transform -n "legUI_R0_sizeRef" -p "legUI_R0_root"; - rename -uid "7976011F-40BF-3ADF-E363-47B0483FF5DA"; + rename -uid "1F0CC778-43A5-B5DE-5003-25A2FB6292A1"; addAttr -ci true -sn "isGearGuide" -ln "isGearGuide" -dv 1 -min 0 -max 1 -at "bool"; setAttr -k off -cb on ".v"; - setAttr ".t" -type "double3" -0.10551782846564928 -4.4408920985006262e-016 1.0444039858906451 ; + setAttr ".t" -type "double3" -0.10551782846565105 -4.4408920985006262e-016 1.0444039858906486 ; setAttr -k off -cb on ".tx"; setAttr -k off -cb on ".ty"; setAttr -k off -cb on ".tz"; - setAttr ".r" -type "double3" 0.029616667963943445 174.23096627485103 0.29463615418732969 ; + setAttr ".r" -type "double3" -0.029616667963955585 -5.7690337251490096 0.29463615418733258 ; setAttr -k off -cb on ".rx"; setAttr -k off -cb on ".ry"; setAttr -k off -cb on ".rz"; setAttr -cb on ".ro"; - setAttr ".s" -type "double3" 1.0497207713808316 1.0497207713808354 -1.0497207713808339 ; + setAttr ".s" -type "double3" 1.0497207713808356 1.0497207713808356 1.0497207713808376 ; setAttr -k off -cb on ".sx"; setAttr -k off -cb on ".sy"; setAttr -k off -cb on ".sz"; createNode transform -n "leg_R0_crv" -p "leg_R0_root"; - rename -uid "643C1B12-41CB-56BD-0AE4-14B43DEF6128"; + rename -uid "D1BEBCFF-4907-1F0E-68AA-4AA1C2AEF90F"; setAttr ".ovdt" 1; setAttr ".ove" yes; - setAttr ".t" -type "double3" -10.214166852209233 0.1914430359204585 0.96902196420373432 ; + setAttr ".t" -type "double3" -10.214166852209232 0.19144303592045842 0.96902196420373343 ; setAttr ".r" -type "double3" 90 -89.706856137729801 -179.99999999999815 ; - setAttr ".s" -type "double3" 1.0495082267377411 1.0495082267377378 -1.0495082267377407 ; + setAttr ".s" -type "double3" 1.0495082267377405 1.0495082267377376 -1.0495082267377409 ; createNode nurbsCurve -n "leg_R0_crvShape" -p "leg_R0_crv"; - rename -uid "0EE19EDA-4283-A073-727C-B2B759257E86"; + rename -uid "736A4E80-4CDD-A787-20E9-5994DB9F0C3C"; setAttr -k off ".v"; setAttr -s 4 ".iog[0].og"; setAttr ".tw" yes; createNode nurbsCurve -n "leg_R0_crvShapeOrig" -p "leg_R0_crv"; - rename -uid "247D980C-4DB1-CF54-A440-A9996AD8C46A"; + rename -uid "26C67394-444A-BFA4-D346-598B732EA618"; setAttr -k off ".v"; setAttr ".io" yes; setAttr ".cc" -type "nurbsCurve" @@ -14887,1078 +14964,981 @@ createNode nurbsCurve -n "leg_R0_crvShapeOrig" -p "leg_R0_crv"; 0 0 0 0 0 0 ; -createNode lightLinker -s -n "lightLinker1"; - rename -uid "7C218431-49B6-0C9A-1965-88B7508C00FD"; - setAttr -s 2 ".lnk"; - setAttr -s 2 ".slnk"; -createNode shapeEditorManager -n "shapeEditorManager"; - rename -uid "CB11AE2F-4842-E86D-1E32-5AA65E991767"; -createNode poseInterpolatorManager -n "poseInterpolatorManager"; - rename -uid "76CA94A9-4342-FECA-B366-7CB87BFEBE18"; -createNode displayLayerManager -n "layerManager"; - rename -uid "B3A00A8E-414E-2197-334B-6382C68EADDD"; -createNode displayLayer -n "defaultLayer"; - rename -uid "4BEC5440-4E24-B33C-470C-998F04382A20"; -createNode renderLayerManager -n "renderLayerManager"; - rename -uid "33D391F7-4186-E08F-068E-368DC9C3B3CA"; -createNode renderLayer -n "defaultRenderLayer"; - rename -uid "FD9A5986-45BC-EDA8-28D5-42A9E6B9702D"; - setAttr ".g" yes; createNode animCurveUU -n "spine_C0_root_st_profile1"; - rename -uid "86131292-4FB7-0B0E-7BE6-76B8788A3192"; + rename -uid "1C375BB6-4B5C-9323-FC8E-8EADEC371827"; setAttr ".tan" 18; setAttr ".wgt" no; setAttr -s 3 ".ktv[0:2]" 0 0 0.5 -1 1 0; createNode animCurveUU -n "spine_C0_root_sq_profile1"; - rename -uid "8B934DC1-49DB-E520-BE25-D8B3DA7DF803"; + rename -uid "DF48412F-47E4-14DD-40F1-3FB80B9B0E0B"; setAttr ".tan" 18; setAttr ".wgt" no; setAttr -s 3 ".ktv[0:2]" 0 0 0.5 1 1 0; -createNode unitConversion -n "unitConversion131"; - rename -uid "62E23BCA-4AD6-6048-D2A9-558E5C75D82A"; - setAttr ".cf" 0.017453292519943295; -createNode mgear_curveCns -n "mgear_curveCns411"; - rename -uid "C254DC23-473C-0AF2-79B9-ECB3EA2F6B94"; - setAttr -s 2 ".inputs"; -createNode tweak -n "tweak559"; - rename -uid "C5C98EB6-42EA-FE98-BD94-9999DE171C91"; -createNode objectSet -n "mgear_curveCns411Set"; - rename -uid "4595F037-440A-814D-D7A4-F099E8DD7402"; - setAttr ".ihi" 0; - setAttr ".vo" yes; -createNode groupId -n "mgear_curveCns411GroupId"; - rename -uid "815E3A79-410C-1707-2202-98B0829829BB"; - setAttr ".ihi" 0; -createNode groupParts -n "mgear_curveCns411GroupParts"; - rename -uid "BC1CA34D-4136-94F3-D359-2EB71A0E0E51"; - setAttr ".ihi" 0; - setAttr ".ic" -type "componentList" 1 "cv[*]"; -createNode objectSet -n "tweakSet559"; - rename -uid "6AEB18B3-44C5-427F-E114-18935C3D0608"; - setAttr ".ihi" 0; - setAttr ".vo" yes; -createNode groupId -n "groupId8687"; - rename -uid "335ED6D5-44F5-6154-EA22-A48030ADF76B"; - setAttr ".ihi" 0; -createNode groupParts -n "groupParts1118"; - rename -uid "FFB32030-4CE2-774B-A7B1-6E9110967F8C"; - setAttr ".ihi" 0; - setAttr ".ic" -type "componentList" 1 "cv[*]"; -createNode unitConversion -n "unitConversion132"; - rename -uid "EA2EA449-4A89-33D9-F02F-6C8E182A8585"; - setAttr ".cf" 0.017453292519943295; -createNode mgear_curveCns -n "mgear_curveCns412"; - rename -uid "CE28F5CE-43C5-D5AC-38C9-BEADAF840535"; - setAttr -s 2 ".inputs"; -createNode tweak -n "tweak560"; - rename -uid "463E6B21-467C-29D9-61B5-7098E824B607"; -createNode objectSet -n "mgear_curveCns412Set"; - rename -uid "4BB358DE-4777-4580-8507-12855632F466"; - setAttr ".ihi" 0; - setAttr ".vo" yes; -createNode groupId -n "mgear_curveCns412GroupId"; - rename -uid "DBEFB33B-4BE2-7D0D-1EC5-F3B3BE8651E2"; - setAttr ".ihi" 0; -createNode groupParts -n "mgear_curveCns412GroupParts"; - rename -uid "ECECE56B-40F2-1B40-2F09-3FAAEBE76C5D"; - setAttr ".ihi" 0; - setAttr ".ic" -type "componentList" 1 "cv[*]"; -createNode objectSet -n "tweakSet560"; - rename -uid "240EB338-439A-DB4A-78F4-E299A7359032"; - setAttr ".ihi" 0; - setAttr ".vo" yes; -createNode groupId -n "groupId8689"; - rename -uid "04937EA8-49A4-33AF-94DD-4E93D353C0B3"; - setAttr ".ihi" 0; -createNode groupParts -n "groupParts1120"; - rename -uid "9050DB8E-4C43-E29D-BA5D-5FB75252BAF8"; - setAttr ".ihi" 0; - setAttr ".ic" -type "componentList" 1 "cv[*]"; createNode animCurveUU -n "arm_L0_root_st_profile1"; - rename -uid "08AD7BD2-4A72-A264-075D-22AC5DD9BE91"; + rename -uid "71DAF6BC-4774-A2D8-14EA-A3BEB38EAEBC"; setAttr ".tan" 18; setAttr ".wgt" no; setAttr -s 3 ".ktv[0:2]" 0 0 0.5 -0.5 1 0; createNode animCurveUU -n "arm_L0_root_sq_profile1"; - rename -uid "ED558E52-4AAF-4365-8CFD-7299D7991019"; + rename -uid "D6F8FB05-4D40-C318-6610-F4B34BE4EE25"; setAttr ".tan" 18; setAttr ".wgt" no; setAttr -s 3 ".ktv[0:2]" 0 0 0.5 0.5 1 0; -createNode mgear_curveCns -n "mgear_curveCns413"; - rename -uid "5173493B-42E3-4348-0198-FB946EE064FE"; - setAttr -s 4 ".inputs"; -createNode tweak -n "tweak561"; - rename -uid "EE2A43C0-4FBC-B6A1-B906-77B5386E17B5"; -createNode objectSet -n "mgear_curveCns413Set"; - rename -uid "F2A5AF88-44F5-E7D0-1616-D1BD025F296B"; - setAttr ".ihi" 0; - setAttr ".vo" yes; -createNode groupId -n "mgear_curveCns413GroupId"; - rename -uid "9DAA6DA6-4A5F-5050-E68F-CCA198219B2A"; - setAttr ".ihi" 0; -createNode groupParts -n "mgear_curveCns413GroupParts"; - rename -uid "DDD3E413-48D5-C55B-2701-DAB83FE9D6CF"; - setAttr ".ihi" 0; - setAttr ".ic" -type "componentList" 1 "cv[*]"; -createNode objectSet -n "tweakSet561"; - rename -uid "C2AA61D1-4D20-AD3C-DFCF-09AE6E193E75"; - setAttr ".ihi" 0; - setAttr ".vo" yes; -createNode groupId -n "groupId8691"; - rename -uid "51F3D333-47BC-B185-AA25-3B955FDF5C16"; - setAttr ".ihi" 0; -createNode groupParts -n "groupParts1122"; - rename -uid "A6D7E6A8-46F3-CB58-DD5A-5FB991DDBB6B"; - setAttr ".ihi" 0; - setAttr ".ic" -type "componentList" 1 "cv[*]"; -createNode unitConversion -n "unitConversion133"; - rename -uid "B860C866-42DE-9E2F-13D0-6E8784EB34EA"; - setAttr ".cf" 0.017453292519943295; -createNode mgear_curveCns -n "mgear_curveCns414"; - rename -uid "A34FDD9D-493A-3001-9F58-799E59792687"; - setAttr -s 4 ".inputs"; -createNode tweak -n "tweak562"; - rename -uid "1B38FA9A-4CA6-A4F0-F021-D4A8C1869EE8"; -createNode objectSet -n "mgear_curveCns414Set"; - rename -uid "30587D29-4A7F-E784-1F45-DF857ED562A6"; - setAttr ".ihi" 0; - setAttr ".vo" yes; -createNode groupId -n "mgear_curveCns414GroupId"; - rename -uid "9C60E762-4B54-B709-C42E-CDAD6016E9FA"; - setAttr ".ihi" 0; -createNode groupParts -n "mgear_curveCns414GroupParts"; - rename -uid "EB76CEFC-40A1-FB17-F850-FB90F81E65C9"; - setAttr ".ihi" 0; - setAttr ".ic" -type "componentList" 1 "cv[*]"; -createNode objectSet -n "tweakSet562"; - rename -uid "C03989B2-4D49-595F-B4AE-AC878C9E6C44"; - setAttr ".ihi" 0; - setAttr ".vo" yes; -createNode groupId -n "groupId8693"; - rename -uid "C0801F8E-4050-208C-F46B-8391BB6C0659"; - setAttr ".ihi" 0; -createNode groupParts -n "groupParts1124"; - rename -uid "E209E005-4FA7-8446-F83A-76A5FC8D6500"; - setAttr ".ihi" 0; - setAttr ".ic" -type "componentList" 1 "cv[*]"; createNode unitConversion -n "unitConversion134"; - rename -uid "FA22B9C6-4E0F-C6B9-761D-C584E0239B92"; + rename -uid "632D3490-4E4A-951C-F26D-9A9D4808FFE8"; setAttr ".cf" 0.017453292519943295; createNode mgear_curveCns -n "mgear_curveCns415"; - rename -uid "795017E2-4AA8-0A04-5CE5-B1AF07B19920"; + rename -uid "BEFCFBB6-4A63-A948-2D28-54B0ED9A42F6"; setAttr -s 4 ".inputs"; -createNode tweak -n "tweak563"; - rename -uid "3515CA15-4513-2625-AE2D-FEBBACC2A08F"; createNode objectSet -n "mgear_curveCns415Set"; - rename -uid "E6415723-4721-9FBB-ACB4-A8887DDC006A"; + rename -uid "C6E5AFC2-4F54-9447-2110-6DA1E80A95F2"; setAttr ".ihi" 0; setAttr ".vo" yes; createNode groupId -n "mgear_curveCns415GroupId"; - rename -uid "1CA55628-4F09-4FFC-43F0-959D9A55F127"; + rename -uid "E57212BB-45B7-4D78-F6C5-4D80B715C5F7"; setAttr ".ihi" 0; createNode groupParts -n "mgear_curveCns415GroupParts"; - rename -uid "798025F1-436F-B412-C8B8-0C8A394EE2D6"; + rename -uid "5375566E-4162-D716-35DB-F698C624B1C8"; setAttr ".ihi" 0; setAttr ".ic" -type "componentList" 1 "cv[*]"; +createNode tweak -n "tweak563"; + rename -uid "CB6B71B4-406D-B708-D390-5198E221FBDE"; createNode objectSet -n "tweakSet563"; - rename -uid "C12BA378-4131-61EA-33F0-A49AEE5FC1A1"; + rename -uid "F6CBAD34-4E48-5AA7-B5B4-E197C2A57FCB"; setAttr ".ihi" 0; setAttr ".vo" yes; createNode groupId -n "groupId8695"; - rename -uid "D7DA8C1E-4C0C-A197-45B4-2791F77CBAF5"; + rename -uid "06E0CBC8-45D2-1EBA-0B80-0086F13D40F9"; setAttr ".ihi" 0; createNode groupParts -n "groupParts1126"; - rename -uid "7272383E-40F3-35D3-A3FA-E68F1F5C66F6"; + rename -uid "87A6458B-4554-E555-2192-94B1AD94AADF"; setAttr ".ihi" 0; setAttr ".ic" -type "componentList" 1 "cv[*]"; createNode unitConversion -n "unitConversion135"; - rename -uid "52B38306-4DDA-BF8C-1050-B8ABA436E38B"; + rename -uid "9E75BC36-4DF1-5B34-2619-70AA667DE448"; setAttr ".cf" 0.017453292519943295; createNode mgear_curveCns -n "mgear_curveCns416"; - rename -uid "C83CBC82-4CA1-7648-60FC-6DA7CF997E5E"; + rename -uid "85BDED8E-4C70-7C48-28D8-0EA7D5C00BFD"; setAttr -s 4 ".inputs"; -createNode tweak -n "tweak564"; - rename -uid "2A6D9454-412F-6907-C2D4-9CB9BD13EBF6"; createNode objectSet -n "mgear_curveCns416Set"; - rename -uid "C0F3A7B4-46C3-28F1-D50C-DF907B85F232"; + rename -uid "8E054827-4102-1BA2-9E67-09A56CA81621"; setAttr ".ihi" 0; setAttr ".vo" yes; createNode groupId -n "mgear_curveCns416GroupId"; - rename -uid "609F9569-448E-D89B-A4C2-FE928F2F51D6"; + rename -uid "767B48B2-420E-FBD4-67C4-52BB6567C94E"; setAttr ".ihi" 0; createNode groupParts -n "mgear_curveCns416GroupParts"; - rename -uid "1CF2E0C9-4C85-3BF9-BD33-9EB6EAB10A35"; + rename -uid "762C6E15-4243-95F2-77B3-DDA4515ED74A"; setAttr ".ihi" 0; setAttr ".ic" -type "componentList" 1 "cv[*]"; +createNode tweak -n "tweak564"; + rename -uid "36A8B594-4FB8-8C76-042A-5FB45C007152"; createNode objectSet -n "tweakSet564"; - rename -uid "164A5A74-4A06-C4B3-4A55-A09F7086B668"; + rename -uid "390318EC-4EA4-4DF4-F277-2B930C1A67AC"; setAttr ".ihi" 0; setAttr ".vo" yes; createNode groupId -n "groupId8697"; - rename -uid "D0318D02-435D-EEF0-014B-E8B61D029CBF"; + rename -uid "B0C2ECA3-4BB4-3BB6-0E34-BD9829625BB2"; setAttr ".ihi" 0; createNode groupParts -n "groupParts1128"; - rename -uid "1422E34A-4274-EC7B-F7AD-CA8D93888B44"; + rename -uid "964A3D2A-4278-5005-D875-23A718FFF443"; setAttr ".ihi" 0; setAttr ".ic" -type "componentList" 1 "cv[*]"; createNode unitConversion -n "unitConversion136"; - rename -uid "C58A66CE-4872-4BA9-7651-C4AC9AFE9100"; + rename -uid "69C17C04-4B1F-9382-8F89-DF97EAD43BF0"; setAttr ".cf" 0.017453292519943295; createNode mgear_curveCns -n "mgear_curveCns417"; - rename -uid "3CF3F509-4E6E-35AF-F1B6-459B3A06C2DE"; + rename -uid "0D5A0CB1-41EA-52D7-AA2B-C7AC1C9A000D"; setAttr -s 4 ".inputs"; -createNode tweak -n "tweak565"; - rename -uid "2CE81560-4C90-F866-71CC-D5B78A4321C9"; createNode objectSet -n "mgear_curveCns417Set"; - rename -uid "53ACF9DC-4B9C-06DC-3DE2-52B7C81C096E"; + rename -uid "711E8ABE-41C3-1876-C465-B3ACF6DCED6E"; setAttr ".ihi" 0; setAttr ".vo" yes; createNode groupId -n "mgear_curveCns417GroupId"; - rename -uid "AA9638C6-4E0B-2699-6D1A-2D836D972657"; + rename -uid "28ADB55B-4DEE-2DFD-EFC0-DC841D375453"; setAttr ".ihi" 0; createNode groupParts -n "mgear_curveCns417GroupParts"; - rename -uid "21D7D57B-4253-09D5-7D80-869CF9A0168C"; + rename -uid "399E5368-4DF7-7448-0B18-98B016065BE6"; setAttr ".ihi" 0; setAttr ".ic" -type "componentList" 1 "cv[*]"; +createNode tweak -n "tweak565"; + rename -uid "004699EF-471C-D9FC-AACD-969EA064A857"; createNode objectSet -n "tweakSet565"; - rename -uid "3FBD380B-4112-E1BB-56E6-06AA250CEE8F"; + rename -uid "46AA46AA-451A-4901-70C8-C2A2ED97D965"; setAttr ".ihi" 0; setAttr ".vo" yes; createNode groupId -n "groupId8699"; - rename -uid "77A5B50E-4A54-8936-F17A-E8901AC627E7"; + rename -uid "0657C16D-47DA-9719-707F-3A97B826CAFB"; setAttr ".ihi" 0; createNode groupParts -n "groupParts1130"; - rename -uid "7454F433-4AC9-8DA0-76ED-3D877DE08609"; + rename -uid "7B65D516-43A3-1DE9-1220-91B235BC82B3"; setAttr ".ihi" 0; setAttr ".ic" -type "componentList" 1 "cv[*]"; -createNode unitConversion -n "unitConversion137"; - rename -uid "1DF5DB6D-4594-1B51-4587-368AE123975F"; +createNode unitConversion -n "unitConversion133"; + rename -uid "8DEC9DCD-469E-5D37-DC4D-678BA848044D"; setAttr ".cf" 0.017453292519943295; -createNode mgear_curveCns -n "mgear_curveCns418"; - rename -uid "E23AF286-417B-6587-5079-BAA61414AB5A"; +createNode mgear_curveCns -n "mgear_curveCns414"; + rename -uid "7A4A35B1-4552-3F29-8E7D-D6AC44BBAC47"; setAttr -s 4 ".inputs"; -createNode tweak -n "tweak566"; - rename -uid "99F5D621-4A76-6BAC-2FFC-0DBA7D045610"; -createNode objectSet -n "mgear_curveCns418Set"; - rename -uid "A101D9FC-4FC7-627B-00FF-F0A69F13DB6B"; +createNode objectSet -n "mgear_curveCns414Set"; + rename -uid "15C55C78-48AC-E926-CF47-5ABD92C36183"; setAttr ".ihi" 0; setAttr ".vo" yes; -createNode groupId -n "mgear_curveCns418GroupId"; - rename -uid "F31365BF-42B7-20D2-98C4-34A0E10F7B8C"; +createNode groupId -n "mgear_curveCns414GroupId"; + rename -uid "632E3846-4013-15C1-CB20-F0B20A506420"; setAttr ".ihi" 0; -createNode groupParts -n "mgear_curveCns418GroupParts"; - rename -uid "B3786F30-49B3-2278-34EA-CFB15542572D"; +createNode groupParts -n "mgear_curveCns414GroupParts"; + rename -uid "799630A2-4B31-57A1-5E25-B7886B0ADBC2"; setAttr ".ihi" 0; setAttr ".ic" -type "componentList" 1 "cv[*]"; -createNode objectSet -n "tweakSet566"; - rename -uid "2C1B9099-446D-07AB-FD49-81A78A29E279"; +createNode tweak -n "tweak562"; + rename -uid "44472A0A-4B08-EF60-9752-4B89FA7C3F3A"; +createNode objectSet -n "tweakSet562"; + rename -uid "B611AB71-4430-8C2F-79CA-7A9F0C3AFD2C"; setAttr ".ihi" 0; setAttr ".vo" yes; -createNode groupId -n "groupId8701"; - rename -uid "FD1595A8-4CDE-BF87-9226-79A460665DDA"; +createNode groupId -n "groupId8693"; + rename -uid "D1910CB3-4058-4D6E-3C8F-509DD59B7F79"; setAttr ".ihi" 0; -createNode groupParts -n "groupParts1132"; - rename -uid "011960F3-4A1C-8CD1-1323-9491042E99D2"; +createNode groupParts -n "groupParts1124"; + rename -uid "24D0C828-402B-5C75-EA9D-1C9578D16FE5"; setAttr ".ihi" 0; setAttr ".ic" -type "componentList" 1 "cv[*]"; -createNode unitConversion -n "unitConversion138"; - rename -uid "B7E4C6AE-4DB3-9CCB-A84C-279D430BEEBA"; +createNode unitConversion -n "unitConversion137"; + rename -uid "3AE3D66D-4AB9-2001-6742-4CB097DC8E2A"; setAttr ".cf" 0.017453292519943295; -createNode mgear_curveCns -n "mgear_curveCns419"; - rename -uid "D9CFBA83-4078-64E0-5F49-F8BFF3C578A9"; +createNode mgear_curveCns -n "mgear_curveCns418"; + rename -uid "139932BC-4B00-3F13-D881-378EB9BC4D04"; setAttr -s 4 ".inputs"; -createNode tweak -n "tweak567"; - rename -uid "30389922-46BD-0163-B1A4-CD864E53D5D3"; -createNode objectSet -n "mgear_curveCns419Set"; - rename -uid "EA5A9E88-4C75-47DF-3069-B39246462E96"; +createNode objectSet -n "mgear_curveCns418Set"; + rename -uid "1B0CA033-4964-6BCB-B476-9985F9C8A9B4"; setAttr ".ihi" 0; setAttr ".vo" yes; -createNode groupId -n "mgear_curveCns419GroupId"; - rename -uid "3DAB2651-4A5D-6ADD-EE55-06B1FC421EBF"; +createNode groupId -n "mgear_curveCns418GroupId"; + rename -uid "0D44B01A-49BF-EFD5-BE7B-E89C99037E15"; setAttr ".ihi" 0; -createNode groupParts -n "mgear_curveCns419GroupParts"; - rename -uid "C2716E78-41EC-150B-8E95-DAB841DE8570"; +createNode groupParts -n "mgear_curveCns418GroupParts"; + rename -uid "087CA585-4D32-3F2B-C11A-DCBCF3EC734E"; setAttr ".ihi" 0; setAttr ".ic" -type "componentList" 1 "cv[*]"; -createNode objectSet -n "tweakSet567"; - rename -uid "F1DE65EA-40DC-7D0A-0DF1-98B54E535154"; +createNode tweak -n "tweak566"; + rename -uid "C5AA12AC-4D4A-5CA4-F361-5E88CE53074E"; +createNode objectSet -n "tweakSet566"; + rename -uid "262E27E2-404F-E0A4-241F-5E841CEACE0B"; setAttr ".ihi" 0; setAttr ".vo" yes; -createNode groupId -n "groupId8703"; - rename -uid "2810E626-4253-FF57-58F3-0D828937B062"; +createNode groupId -n "groupId8701"; + rename -uid "CFEE3D5F-448D-3A79-974C-B28279666365"; setAttr ".ihi" 0; -createNode groupParts -n "groupParts1134"; - rename -uid "5888866B-4CB5-3F35-4A53-85AD44998444"; +createNode groupParts -n "groupParts1132"; + rename -uid "45E7FE2B-429A-E29E-605A-E7B896155217"; setAttr ".ihi" 0; setAttr ".ic" -type "componentList" 1 "cv[*]"; -createNode animCurveUU -n "neck_C0_root_st_profile1"; - rename -uid "764BB2CA-4F2A-7D9E-F6EC-C39C6962843F"; - setAttr ".tan" 18; - setAttr ".wgt" no; - setAttr -s 3 ".ktv[0:2]" 0 0 0.5 -1 1 0; -createNode animCurveUU -n "neck_C0_root_sq_profile1"; - rename -uid "D4D0148B-446C-9393-907D-6BA5691114D3"; - setAttr ".tan" 18; - setAttr ".wgt" no; - setAttr -s 3 ".ktv[0:2]" 0 0 0.5 1 1 0; -createNode unitConversion -n "unitConversion139"; - rename -uid "7DC4E739-4A40-15B3-B5B9-EABEAD4D4769"; +createNode unitConversion -n "unitConversion138"; + rename -uid "D95D91E1-48D2-F7B9-E7F6-FDB09254EB45"; setAttr ".cf" 0.017453292519943295; -createNode mgear_curveCns -n "mgear_curveCns420"; - rename -uid "51BB92FA-4B26-10C6-4197-14A500D5FB04"; +createNode mgear_curveCns -n "mgear_curveCns419"; + rename -uid "D60703EA-4B9E-902B-8A56-C397B15B9A89"; setAttr -s 4 ".inputs"; -createNode tweak -n "tweak568"; - rename -uid "EFD3BCC4-4DEF-C936-DEB1-B5BA89E70E0F"; -createNode objectSet -n "mgear_curveCns420Set"; - rename -uid "D0ECC38F-4482-8119-56B8-68BEA8A5FE55"; +createNode objectSet -n "mgear_curveCns419Set"; + rename -uid "2E5927DF-4DE7-7163-A621-15AB86B74476"; setAttr ".ihi" 0; setAttr ".vo" yes; -createNode groupId -n "mgear_curveCns420GroupId"; - rename -uid "B73B4273-419B-8E71-9562-CBA463831488"; +createNode groupId -n "mgear_curveCns419GroupId"; + rename -uid "F34988E5-4B12-2A34-86E7-318F22C6BD7B"; setAttr ".ihi" 0; -createNode groupParts -n "mgear_curveCns420GroupParts"; - rename -uid "1D72A0C9-4955-5A89-6959-BE9B0726E7A4"; +createNode groupParts -n "mgear_curveCns419GroupParts"; + rename -uid "10530789-463F-2584-9F63-339D18F5E10A"; setAttr ".ihi" 0; setAttr ".ic" -type "componentList" 1 "cv[*]"; -createNode objectSet -n "tweakSet568"; - rename -uid "B21F9434-4459-DBBB-85E1-4F8E03E20FB3"; +createNode tweak -n "tweak567"; + rename -uid "5BF9E88E-4EB0-C6B8-7BD5-9991728F02BB"; +createNode objectSet -n "tweakSet567"; + rename -uid "B118E5A4-4F03-B5D4-1DDC-759912323837"; setAttr ".ihi" 0; setAttr ".vo" yes; -createNode groupId -n "groupId8705"; - rename -uid "DCC9D92B-4B02-C15C-CF19-678622398B97"; +createNode groupId -n "groupId8703"; + rename -uid "4112B7A1-40DF-6E64-3211-AFB0E870E0CE"; setAttr ".ihi" 0; -createNode groupParts -n "groupParts1136"; - rename -uid "247E005B-4A8A-6840-4D27-F4A1D902D1F0"; +createNode groupParts -n "groupParts1134"; + rename -uid "C40D5442-4DC3-724E-75A3-D18BDA0BF575"; setAttr ".ihi" 0; setAttr ".ic" -type "componentList" 1 "cv[*]"; -createNode mgear_curveCns -n "mgear_curveCns421"; - rename -uid "D8CBC82E-44A8-7E51-9101-A184BA4655DF"; - setAttr -s 3 ".inputs"; -createNode tweak -n "tweak569"; - rename -uid "CE3FC090-433B-33C1-9568-3FA97520F5F1"; -createNode objectSet -n "mgear_curveCns421Set"; - rename -uid "E58945C5-42D3-1C32-FA26-FC96EB9A21FC"; +createNode mgear_curveCns -n "mgear_curveCns413"; + rename -uid "D18598B3-410D-8719-FF98-ECA32C20F174"; + setAttr -s 4 ".inputs"; +createNode objectSet -n "mgear_curveCns413Set"; + rename -uid "31BB82A8-46AD-C7B2-E616-EF99017CD06D"; setAttr ".ihi" 0; setAttr ".vo" yes; -createNode groupId -n "mgear_curveCns421GroupId"; - rename -uid "04985014-4705-5F1A-CE85-D49108A916B5"; +createNode groupId -n "mgear_curveCns413GroupId"; + rename -uid "D95C2E4D-4BEA-F136-4586-73AEE6822240"; setAttr ".ihi" 0; -createNode groupParts -n "mgear_curveCns421GroupParts"; - rename -uid "18434CD7-47AE-61A6-A007-56AA737268CE"; +createNode groupParts -n "mgear_curveCns413GroupParts"; + rename -uid "2BE1656F-4988-0598-D694-E0BDC89733A1"; setAttr ".ihi" 0; setAttr ".ic" -type "componentList" 1 "cv[*]"; -createNode objectSet -n "tweakSet569"; - rename -uid "9B627779-483E-789D-8EE8-4E88D8AC6907"; +createNode tweak -n "tweak561"; + rename -uid "1BC13DDF-45EF-3324-40FE-FB8582915AA6"; +createNode objectSet -n "tweakSet561"; + rename -uid "52FA9EA1-46C3-ACDC-7D68-0096802E7262"; setAttr ".ihi" 0; setAttr ".vo" yes; -createNode groupId -n "groupId8707"; - rename -uid "CA3C463B-45CA-BBBF-76B5-DA862E234675"; +createNode groupId -n "groupId8691"; + rename -uid "339A60D9-4E00-454E-8D18-48B88217BEF6"; setAttr ".ihi" 0; -createNode groupParts -n "groupParts1138"; - rename -uid "27A424DD-4E14-D4E3-590B-2BB9E9D7B94A"; +createNode groupParts -n "groupParts1122"; + rename -uid "DD284309-4F5F-1F39-B590-FB9B13C3BA51"; setAttr ".ihi" 0; setAttr ".ic" -type "componentList" 1 "cv[*]"; -createNode mgear_curveCns -n "mgear_curveCns422"; - rename -uid "DB83A8F1-483D-BE3E-F1FD-3DA07389A062"; +createNode unitConversion -n "unitConversion132"; + rename -uid "142B6387-44B6-197E-3F07-DFB5A832E605"; + setAttr ".cf" 0.017453292519943295; +createNode mgear_curveCns -n "mgear_curveCns412"; + rename -uid "33F6780C-4129-9C7B-BDE0-E282E270D34E"; setAttr -s 2 ".inputs"; -createNode tweak -n "tweak570"; - rename -uid "B91F5AEF-4CBA-0FE9-1E32-6DB122963A15"; -createNode objectSet -n "mgear_curveCns422Set"; - rename -uid "5172BDED-45EF-B0CB-E43B-7BAF10E4405B"; +createNode objectSet -n "mgear_curveCns412Set"; + rename -uid "23A5941A-49CD-7347-759F-0E987AFD3092"; setAttr ".ihi" 0; setAttr ".vo" yes; -createNode groupId -n "mgear_curveCns422GroupId"; - rename -uid "FF278F09-45F8-88E6-9BF3-1F967C929BA2"; +createNode groupId -n "mgear_curveCns412GroupId"; + rename -uid "7C2A7D03-402D-C633-CE13-6BB499604D73"; setAttr ".ihi" 0; -createNode groupParts -n "mgear_curveCns422GroupParts"; - rename -uid "70CF8242-45F7-B941-EBEB-77893EFCD4C2"; +createNode groupParts -n "mgear_curveCns412GroupParts"; + rename -uid "A85113C1-4664-A94C-1C43-DEB19E137671"; setAttr ".ihi" 0; setAttr ".ic" -type "componentList" 1 "cv[*]"; -createNode objectSet -n "tweakSet570"; - rename -uid "66D8FE82-4976-6C29-042C-208D9B490BBE"; +createNode tweak -n "tweak560"; + rename -uid "01468970-4ED4-3514-20FF-459C1AE170A4"; +createNode objectSet -n "tweakSet560"; + rename -uid "1379BEA9-4964-FA59-DCAA-DEA9D8A695AF"; setAttr ".ihi" 0; setAttr ".vo" yes; -createNode groupId -n "groupId8709"; - rename -uid "8E1BDEFA-4D8C-ED26-6479-83B86EF17ADD"; +createNode groupId -n "groupId8689"; + rename -uid "9B582210-4923-B4A5-C2F4-08A9B2F518FA"; setAttr ".ihi" 0; -createNode groupParts -n "groupParts1140"; - rename -uid "FD1CDCF1-4928-BF13-5BE8-5E82C85F0C83"; +createNode groupParts -n "groupParts1120"; + rename -uid "31EFDB91-48F9-EEA8-ED2B-FE99CDB2F5BC"; setAttr ".ihi" 0; setAttr ".ic" -type "componentList" 1 "cv[*]"; +createNode animCurveUU -n "neck_C0_root_st_profile1"; + rename -uid "2ADAF464-4750-6366-7AA5-2A8D6B3E7E37"; + setAttr ".tan" 18; + setAttr ".wgt" no; + setAttr -s 3 ".ktv[0:2]" 0 0 0.5 -1 1 0; +createNode animCurveUU -n "neck_C0_root_sq_profile1"; + rename -uid "496A54C9-44CE-E37B-DEBC-5D89CE0BEF78"; + setAttr ".tan" 18; + setAttr ".wgt" no; + setAttr -s 3 ".ktv[0:2]" 0 0 0.5 1 1 0; createNode mgear_curveCns -n "mgear_curveCns423"; - rename -uid "FE77E5ED-4477-5BC3-36B6-21BD14B9854D"; + rename -uid "B0C67591-425B-30BC-D499-B493064DA2CF"; setAttr -s 2 ".inputs"; -createNode tweak -n "tweak571"; - rename -uid "5D08B303-4055-2495-034A-3DB9225D90EE"; createNode objectSet -n "mgear_curveCns423Set"; - rename -uid "42FEA382-41C3-62B6-893C-31B2375EA182"; + rename -uid "22E51D34-4159-9F53-0193-BF8E05E95BBC"; setAttr ".ihi" 0; setAttr ".vo" yes; createNode groupId -n "mgear_curveCns423GroupId"; - rename -uid "1B7DCCD6-4541-D65C-214D-9DACED1E40A8"; + rename -uid "1B36F7DA-4161-6342-F080-818C6736718C"; setAttr ".ihi" 0; createNode groupParts -n "mgear_curveCns423GroupParts"; - rename -uid "5E4DF6D3-43AE-3493-A659-83B72308AE97"; + rename -uid "305DE62C-4DED-169A-5D8D-8C99265AD920"; setAttr ".ihi" 0; setAttr ".ic" -type "componentList" 1 "cv[*]"; +createNode tweak -n "tweak571"; + rename -uid "DC200C92-4140-C8F3-F2B3-FA87A20BC20C"; createNode objectSet -n "tweakSet571"; - rename -uid "71F884A0-415F-03FB-3479-188C47638FB9"; + rename -uid "66158F7B-4A0C-E207-F5E2-CC9C1B497AF1"; setAttr ".ihi" 0; setAttr ".vo" yes; createNode groupId -n "groupId8711"; - rename -uid "F072D6DC-4F7E-6700-16BF-53A85B73ACD2"; + rename -uid "4E6F0F1D-40AA-A803-062C-65A9F6205CE6"; setAttr ".ihi" 0; createNode groupParts -n "groupParts1142"; - rename -uid "28A7D250-43B8-E78B-F720-2EAD9207E99D"; + rename -uid "03B3618B-46FE-DB86-89B5-6C9C65EF30D3"; setAttr ".ihi" 0; setAttr ".ic" -type "componentList" 1 "cv[*]"; createNode mgear_curveCns -n "mgear_curveCns424"; - rename -uid "6839CFD3-4B9C-426A-D441-12BF3B49951B"; + rename -uid "AA513B8E-4600-8823-C105-869902AC291F"; setAttr -s 2 ".inputs"; -createNode tweak -n "tweak572"; - rename -uid "00029F26-4F47-F456-A848-DBB54530AE89"; createNode objectSet -n "mgear_curveCns424Set"; - rename -uid "EA6EC778-4461-99D7-2821-60BDA8F4A095"; + rename -uid "30604B93-4488-1D89-2E15-9097EB247629"; setAttr ".ihi" 0; setAttr ".vo" yes; createNode groupId -n "mgear_curveCns424GroupId"; - rename -uid "339922A1-45FD-9A20-8FD2-68861B351322"; + rename -uid "322768D9-4E6D-AB92-9673-109D85F2EBDD"; setAttr ".ihi" 0; createNode groupParts -n "mgear_curveCns424GroupParts"; - rename -uid "00BD5A6F-4D57-08BD-E199-5085E7E7C8BF"; + rename -uid "8B8E33CD-44EB-F707-E9F1-E59EE75DCDFB"; setAttr ".ihi" 0; setAttr ".ic" -type "componentList" 1 "cv[*]"; +createNode tweak -n "tweak572"; + rename -uid "448566A3-4963-927A-570C-2FA1977C6BE5"; createNode objectSet -n "tweakSet572"; - rename -uid "87A41D42-4EA8-2BBA-E9DB-B79E5AA965E9"; + rename -uid "C908185A-4956-4CD4-D0C5-B0816F2EE928"; setAttr ".ihi" 0; setAttr ".vo" yes; createNode groupId -n "groupId8713"; - rename -uid "EF00F464-4470-ED06-5787-AEBB957A4B9D"; + rename -uid "6977BAE0-4FD3-7E0C-5963-CFAF072BB2B0"; setAttr ".ihi" 0; createNode groupParts -n "groupParts1144"; - rename -uid "F3C9F536-4F85-93EF-8B30-2493B127ECC3"; + rename -uid "977DB811-40A4-8E92-DA53-BAA42D422AD7"; setAttr ".ihi" 0; setAttr ".ic" -type "componentList" 1 "cv[*]"; -createNode mgear_curveCns -n "mgear_curveCns425"; - rename -uid "7E9972B4-4750-F653-13D1-F8860557B6A5"; +createNode unitConversion -n "unitConversion140"; + rename -uid "84DB524E-4B69-4E1E-1709-849821CFEABC"; + setAttr ".cf" 0.017453292519943295; +createNode mgear_curveCns -n "mgear_curveCns426"; + rename -uid "9A65CDF7-4A4A-1755-DBD7-129E0A48000E"; + setAttr -s 5 ".inputs"; +createNode objectSet -n "mgear_curveCns426Set"; + rename -uid "BBFAEA5D-4335-8732-CAA1-22849225CA14"; + setAttr ".ihi" 0; + setAttr ".vo" yes; +createNode groupId -n "mgear_curveCns426GroupId"; + rename -uid "5E9B9F44-4097-6C03-AF86-39B435450952"; + setAttr ".ihi" 0; +createNode groupParts -n "mgear_curveCns426GroupParts"; + rename -uid "A993371C-4082-A030-944D-A3B588B56A69"; + setAttr ".ihi" 0; + setAttr ".ic" -type "componentList" 1 "cv[*]"; +createNode tweak -n "tweak574"; + rename -uid "9DF7B108-481C-E7C2-A6A5-61ADEC52A594"; +createNode objectSet -n "tweakSet574"; + rename -uid "E28DC328-46B7-6564-4D83-E98382A18159"; + setAttr ".ihi" 0; + setAttr ".vo" yes; +createNode groupId -n "groupId8717"; + rename -uid "EFB93C8A-4E9E-5B84-56FC-B392EA5B60BC"; + setAttr ".ihi" 0; +createNode groupParts -n "groupParts1148"; + rename -uid "68C1221E-433E-E821-B0E2-4EAB9586233C"; + setAttr ".ihi" 0; + setAttr ".ic" -type "componentList" 1 "cv[*]"; +createNode mgear_curveCns -n "mgear_curveCns422"; + rename -uid "2CEC8943-49B6-E662-E238-988AFDE4DD1A"; setAttr -s 2 ".inputs"; -createNode tweak -n "tweak573"; - rename -uid "B271DC0B-4EC6-715B-B901-12B291D8B675"; -createNode objectSet -n "mgear_curveCns425Set"; - rename -uid "2163590B-49CE-EB4F-C2FE-1A89C05280E7"; +createNode objectSet -n "mgear_curveCns422Set"; + rename -uid "33CD17F0-4CD6-26EA-3583-05875A50EB38"; setAttr ".ihi" 0; setAttr ".vo" yes; -createNode groupId -n "mgear_curveCns425GroupId"; - rename -uid "99DA8A6D-429B-89F0-BC5C-D084AB9E5436"; +createNode groupId -n "mgear_curveCns422GroupId"; + rename -uid "A458D400-44B4-DA30-B649-F4A4FD2A9B15"; setAttr ".ihi" 0; -createNode groupParts -n "mgear_curveCns425GroupParts"; - rename -uid "C5E4345E-4724-4BC3-8A2E-3BB3D4393468"; +createNode groupParts -n "mgear_curveCns422GroupParts"; + rename -uid "3B38DECC-43C8-58C6-B35B-8B8D196F1E39"; setAttr ".ihi" 0; setAttr ".ic" -type "componentList" 1 "cv[*]"; -createNode objectSet -n "tweakSet573"; - rename -uid "AE42273F-4D42-AB0D-DA34-C8880A5E151A"; +createNode tweak -n "tweak570"; + rename -uid "0DF2F414-4D96-F371-6578-FB83D1A48721"; +createNode objectSet -n "tweakSet570"; + rename -uid "C2B3B8BD-4AD6-9004-F990-53AE0C503980"; setAttr ".ihi" 0; setAttr ".vo" yes; -createNode groupId -n "groupId8715"; - rename -uid "614E1D29-48A6-7AE7-C221-F8BDFA23DFF3"; +createNode groupId -n "groupId8709"; + rename -uid "542D96AD-418C-1A44-B8AB-2D8F87B9F958"; setAttr ".ihi" 0; -createNode groupParts -n "groupParts1146"; - rename -uid "1746E2AF-488D-5A30-8559-16A8D3B44742"; +createNode groupParts -n "groupParts1140"; + rename -uid "49F0223D-4A15-A53A-3EEE-F4A8F7993878"; setAttr ".ihi" 0; setAttr ".ic" -type "componentList" 1 "cv[*]"; -createNode unitConversion -n "unitConversion140"; - rename -uid "E65ECD78-4DB3-05FA-6A5C-47A4279BE0D6"; - setAttr ".cf" 0.017453292519943295; -createNode mgear_curveCns -n "mgear_curveCns426"; - rename -uid "AAEF2DFD-41BA-A368-C835-8097103F1708"; - setAttr -s 5 ".inputs"; -createNode tweak -n "tweak574"; - rename -uid "6BE33333-45A9-0549-EF0D-FFA2EC40E4E7"; -createNode objectSet -n "mgear_curveCns426Set"; - rename -uid "4D510C57-4EA6-2970-814F-AD9E6B6097D1"; +createNode mgear_curveCns -n "mgear_curveCns425"; + rename -uid "200865EF-486E-C9A9-2048-9B988A51A3B1"; + setAttr -s 2 ".inputs"; +createNode objectSet -n "mgear_curveCns425Set"; + rename -uid "1B44F1B1-4839-C985-2E16-659E2512D5BD"; setAttr ".ihi" 0; setAttr ".vo" yes; -createNode groupId -n "mgear_curveCns426GroupId"; - rename -uid "654CEB38-44F2-BD5F-A81F-EDB92E17C14F"; +createNode groupId -n "mgear_curveCns425GroupId"; + rename -uid "D9368D8E-47BB-70A9-22E7-028FC68B6B29"; setAttr ".ihi" 0; -createNode groupParts -n "mgear_curveCns426GroupParts"; - rename -uid "92B864C3-4EEC-0C79-6541-AC87943E0EEA"; +createNode groupParts -n "mgear_curveCns425GroupParts"; + rename -uid "B03AC915-4E5F-9E94-C2E0-C29DF1062D43"; setAttr ".ihi" 0; setAttr ".ic" -type "componentList" 1 "cv[*]"; -createNode objectSet -n "tweakSet574"; - rename -uid "33E1192C-40FE-874C-2517-B0A122F87607"; +createNode tweak -n "tweak573"; + rename -uid "F54192A7-41BF-7617-7543-84A7E154EBB3"; +createNode objectSet -n "tweakSet573"; + rename -uid "64D937F5-407D-195F-DA24-CC9CDEC44DBA"; setAttr ".ihi" 0; setAttr ".vo" yes; -createNode groupId -n "groupId8717"; - rename -uid "CEBB0356-4139-E447-CEE8-37BA2E5B6783"; +createNode groupId -n "groupId8715"; + rename -uid "80BEB2B8-4C0B-6F0E-E610-7B9C02A7642F"; setAttr ".ihi" 0; -createNode groupParts -n "groupParts1148"; - rename -uid "CF4D479E-43AD-38A1-254E-2496F2D444CE"; +createNode groupParts -n "groupParts1146"; + rename -uid "2941A893-403B-758D-9CEE-B281209BA89C"; setAttr ".ihi" 0; setAttr ".ic" -type "componentList" 1 "cv[*]"; createNode mgear_curveCns -n "mgear_curveCns427"; - rename -uid "6496BD4E-4FBC-3E17-BADF-E3A7DBDC49A9"; + rename -uid "18D127E6-4D26-D936-8F9D-12A70AF73CD9"; setAttr -s 2 ".inputs"; -createNode tweak -n "tweak575"; - rename -uid "8B6A45ED-42A1-6AD3-CFFD-4BB946358EEF"; createNode objectSet -n "mgear_curveCns427Set"; - rename -uid "61E513FF-45E8-279D-CA2C-EA9B9F41B059"; + rename -uid "A3E81AB6-4837-1D81-A24E-73B3E5BBFD11"; setAttr ".ihi" 0; setAttr ".vo" yes; createNode groupId -n "mgear_curveCns427GroupId"; - rename -uid "C6794BBE-4BAF-BEA2-F387-A59F65077D06"; + rename -uid "ED85C373-4A07-BBD3-4E8C-DF8F8EAB971D"; setAttr ".ihi" 0; createNode groupParts -n "mgear_curveCns427GroupParts"; - rename -uid "DFD2116B-43E0-C13E-79BF-1C80C02C74E3"; + rename -uid "587D6AEC-42D4-333C-5F94-B9A02E8CECFA"; setAttr ".ihi" 0; setAttr ".ic" -type "componentList" 1 "cv[*]"; +createNode tweak -n "tweak575"; + rename -uid "3308AA9F-4392-F37D-FB9B-2F82954D25A2"; createNode objectSet -n "tweakSet575"; - rename -uid "EF2839BD-4EA5-9100-1FFE-6AB24BEB95F5"; + rename -uid "8FF6E50A-4160-4CA2-255A-F388CE6FF81D"; setAttr ".ihi" 0; setAttr ".vo" yes; createNode groupId -n "groupId8719"; - rename -uid "97D0E198-4D4A-3495-EFA9-E594E0958F19"; + rename -uid "775D9DF3-479F-8647-ADE1-278A042DCB61"; setAttr ".ihi" 0; createNode groupParts -n "groupParts1150"; - rename -uid "9BE865FA-4828-0254-E573-68AF4C28F0E4"; + rename -uid "D5B3ED0F-449C-4155-18C3-EC81800ECAEE"; setAttr ".ihi" 0; setAttr ".ic" -type "componentList" 1 "cv[*]"; createNode mgear_curveCns -n "mgear_curveCns428"; - rename -uid "62264257-47A3-FDDE-D3B5-A0AB84789E38"; + rename -uid "56BBAE1E-45C9-6644-7529-78A0552651B7"; setAttr -s 2 ".inputs"; -createNode tweak -n "tweak576"; - rename -uid "E1C4776B-4175-B719-A783-57BF37BA9F84"; createNode objectSet -n "mgear_curveCns428Set"; - rename -uid "9C3A5D3B-4AF1-037F-152C-64A3381389E3"; + rename -uid "5B6E12E4-4DF1-1217-4FB9-C8AE2D4744B6"; setAttr ".ihi" 0; setAttr ".vo" yes; createNode groupId -n "mgear_curveCns428GroupId"; - rename -uid "4B978DBB-48DD-D48B-8393-25ADBB024D2C"; + rename -uid "EFC9C992-49B5-388A-0798-819540E9806E"; setAttr ".ihi" 0; createNode groupParts -n "mgear_curveCns428GroupParts"; - rename -uid "3808F352-4C9E-3118-1584-BEA7BE2CF976"; + rename -uid "D1A80227-4B36-023B-DDB9-5F9C0AD73B17"; setAttr ".ihi" 0; setAttr ".ic" -type "componentList" 1 "cv[*]"; +createNode tweak -n "tweak576"; + rename -uid "084A93E1-417B-722D-08EE-CE87F3D895A6"; createNode objectSet -n "tweakSet576"; - rename -uid "5F1CB803-4E21-08A4-2A9C-748255620757"; + rename -uid "B97FB95C-4503-C770-D381-07A044BADA09"; setAttr ".ihi" 0; setAttr ".vo" yes; createNode groupId -n "groupId8721"; - rename -uid "A208168D-462F-BCB1-D8B4-F08096F16587"; + rename -uid "A14868A6-4AED-D6EB-AE3D-05BB470B80A4"; setAttr ".ihi" 0; createNode groupParts -n "groupParts1152"; - rename -uid "8C17305D-403E-8E2A-41FF-9A822823A52C"; + rename -uid "9E1334F5-4867-CB32-16AC-FC9F71869966"; setAttr ".ihi" 0; setAttr ".ic" -type "componentList" 1 "cv[*]"; -createNode unitConversion -n "unitConversion141"; - rename -uid "87526030-4E82-7156-1768-C68FBD6CE109"; - setAttr ".cf" 0.017453292519943295; -createNode mgear_curveCns -n "mgear_curveCns429"; - rename -uid "B1ECC11D-4D75-D8EF-AE85-0F9CAA485DFA"; - setAttr -s 2 ".inputs"; -createNode tweak -n "tweak577"; - rename -uid "7D1BF52F-441D-57CC-BD5E-739A2D9286CF"; -createNode objectSet -n "mgear_curveCns429Set"; - rename -uid "22DBD876-491F-859D-8182-EF95D953B12B"; +createNode mgear_curveCns -n "mgear_curveCns421"; + rename -uid "1CA1440C-4F52-931E-15FC-A0B190C6551A"; + setAttr -s 3 ".inputs"; +createNode objectSet -n "mgear_curveCns421Set"; + rename -uid "5812A808-4583-7E82-1F13-41B41C5688AE"; setAttr ".ihi" 0; setAttr ".vo" yes; -createNode groupId -n "mgear_curveCns429GroupId"; - rename -uid "96F05BAE-4BB6-7A41-96D1-6E9D668FC0A4"; +createNode groupId -n "mgear_curveCns421GroupId"; + rename -uid "E1A0C3AB-4B48-FA2C-F00C-459F32651C25"; setAttr ".ihi" 0; -createNode groupParts -n "mgear_curveCns429GroupParts"; - rename -uid "BC6B8F8B-42AC-4BE0-65D6-4B9474E023DD"; +createNode groupParts -n "mgear_curveCns421GroupParts"; + rename -uid "50F32738-49F3-6946-06E7-C3B1628B5BCF"; setAttr ".ihi" 0; setAttr ".ic" -type "componentList" 1 "cv[*]"; -createNode objectSet -n "tweakSet577"; - rename -uid "F490BE81-4FDF-BED4-3BD2-FC9517A5F23C"; +createNode tweak -n "tweak569"; + rename -uid "D2C5A0BD-4340-3097-AA7C-7EB65EABEFAF"; +createNode objectSet -n "tweakSet569"; + rename -uid "F3610B16-492C-D00D-E42C-D6BB583DC345"; setAttr ".ihi" 0; setAttr ".vo" yes; -createNode groupId -n "groupId8723"; - rename -uid "8024EA21-4215-F6BF-BAF8-A59C978F457E"; +createNode groupId -n "groupId8707"; + rename -uid "4845CEF9-4C75-7DCC-6B26-5EA0AA5564E5"; setAttr ".ihi" 0; -createNode groupParts -n "groupParts1154"; - rename -uid "728D0AFC-41F3-1202-0F47-90BDE2F3DB85"; +createNode groupParts -n "groupParts1138"; + rename -uid "434FA5FF-4493-0814-9F21-CFA8DCB76961"; setAttr ".ihi" 0; setAttr ".ic" -type "componentList" 1 "cv[*]"; -createNode animCurveUU -n "arm_R0_root_st_profile1"; - rename -uid "637DB92B-4566-A6E2-EC8E-A38EDF3D09ED"; - setAttr ".tan" 18; - setAttr ".wgt" no; - setAttr -s 3 ".ktv[0:2]" 0 0 0.5 -0.5 1 0; -createNode animCurveUU -n "arm_R0_root_sq_profile1"; - rename -uid "213E8849-4A12-9413-E06C-6BBF575E9D5D"; - setAttr ".tan" 18; - setAttr ".wgt" no; - setAttr -s 3 ".ktv[0:2]" 0 0 0.5 0.5 1 0; -createNode mgear_curveCns -n "mgear_curveCns430"; - rename -uid "348F2FB1-40C5-B72B-8662-F9AC68CE49C1"; +createNode unitConversion -n "unitConversion139"; + rename -uid "55B0A675-4AC2-7F1D-0511-479F0D26CF02"; + setAttr ".cf" 0.017453292519943295; +createNode mgear_curveCns -n "mgear_curveCns420"; + rename -uid "32DECA05-46BC-F144-CEB0-67AA1A21C97F"; setAttr -s 4 ".inputs"; -createNode tweak -n "tweak578"; - rename -uid "CF9906E9-405E-6AE4-7D70-7BBE977B76D1"; -createNode objectSet -n "mgear_curveCns430Set"; - rename -uid "A987155E-4154-F128-A278-64AEDC0CD7D9"; +createNode objectSet -n "mgear_curveCns420Set"; + rename -uid "30D601DB-4B9F-E349-FA78-77BCC0F94F62"; setAttr ".ihi" 0; setAttr ".vo" yes; -createNode groupId -n "mgear_curveCns430GroupId"; - rename -uid "42BDE6CB-479C-AA85-A007-FBB9B20D1D20"; +createNode groupId -n "mgear_curveCns420GroupId"; + rename -uid "9C57A4D1-42FF-F814-76C3-5A976750DB04"; setAttr ".ihi" 0; -createNode groupParts -n "mgear_curveCns430GroupParts"; - rename -uid "A2502EE2-4AC5-B8DE-0ABC-CFA05B52185E"; +createNode groupParts -n "mgear_curveCns420GroupParts"; + rename -uid "32695D5D-4FAA-F308-B6FC-C09591F29BE1"; setAttr ".ihi" 0; setAttr ".ic" -type "componentList" 1 "cv[*]"; -createNode objectSet -n "tweakSet578"; - rename -uid "B326BBE1-422A-962B-4F58-09B685B9599F"; +createNode tweak -n "tweak568"; + rename -uid "55272423-482B-9DA9-E81E-68B9BCA1ADB0"; +createNode objectSet -n "tweakSet568"; + rename -uid "17F6DA79-44A8-AF04-D34B-638ABB6E4A2F"; setAttr ".ihi" 0; setAttr ".vo" yes; -createNode groupId -n "groupId8725"; - rename -uid "DB12BE78-4F4D-DD5E-1B05-798F07C2674B"; +createNode groupId -n "groupId8705"; + rename -uid "22F41757-4BF7-0962-2961-02986B3E3E04"; setAttr ".ihi" 0; -createNode groupParts -n "groupParts1156"; - rename -uid "BE645734-4274-6D69-2F0F-AA85F71A279B"; +createNode groupParts -n "groupParts1136"; + rename -uid "5A2302E3-47FF-793D-F4FC-D18754B2FE16"; setAttr ".ihi" 0; setAttr ".ic" -type "componentList" 1 "cv[*]"; -createNode unitConversion -n "unitConversion142"; - rename -uid "B9636738-4302-8912-EC19-29B6AC2B1AE9"; +createNode animCurveUU -n "arm_R0_root_st_profile"; + rename -uid "2DB12511-4175-7528-249A-919DA851A5CF"; + setAttr ".tan" 18; + setAttr ".wgt" no; + setAttr -s 3 ".ktv[0:2]" 0 0 0.5 -0.5 1 0; +createNode animCurveUU -n "arm_R0_root_sq_profile"; + rename -uid "CC41F5B6-44D9-DD0C-C8EB-409112451576"; + setAttr ".tan" 18; + setAttr ".wgt" no; + setAttr -s 3 ".ktv[0:2]" 0 0 0.5 0.5 1 0; +createNode unitConversion -n "unitConversion143"; + rename -uid "BFD5B953-4745-31FF-670F-10BE646EA802"; setAttr ".cf" 0.017453292519943295; -createNode mgear_curveCns -n "mgear_curveCns431"; - rename -uid "D9501E6E-4F0F-8587-82EC-56BDF886AA6A"; +createNode mgear_curveCns -n "mgear_curveCns443"; + rename -uid "30C53201-482D-13E1-37AF-BC8B9D97210F"; setAttr -s 4 ".inputs"; -createNode tweak -n "tweak579"; - rename -uid "F6A03781-42DB-0159-E5AF-999FA30F11C3"; -createNode objectSet -n "mgear_curveCns431Set"; - rename -uid "51C614BA-4268-0BFB-1AA2-3F872D3EF4D2"; +createNode objectSet -n "mgear_curveCns443Set"; + rename -uid "82820357-4E54-A53D-61BE-C3A9C67D4E97"; setAttr ".ihi" 0; setAttr ".vo" yes; -createNode groupId -n "mgear_curveCns431GroupId"; - rename -uid "A9482C64-4177-83E8-409F-55B3A10F50D7"; +createNode groupId -n "mgear_curveCns443GroupId"; + rename -uid "2F2623A5-4535-784B-4FE4-709F80BDA0CC"; setAttr ".ihi" 0; -createNode groupParts -n "mgear_curveCns431GroupParts"; - rename -uid "263210DF-4745-51AF-521B-078A41136A95"; +createNode groupParts -n "mgear_curveCns443GroupParts"; + rename -uid "5246773D-4FEC-FA20-B208-9C974B25A863"; setAttr ".ihi" 0; setAttr ".ic" -type "componentList" 1 "cv[*]"; -createNode objectSet -n "tweakSet579"; - rename -uid "E65579BD-4348-56FF-9450-5EAE0E4CD141"; +createNode tweak -n "tweak591"; + rename -uid "3C8BA120-4868-3FBA-13CA-33BEE2BB0A01"; +createNode objectSet -n "tweakSet591"; + rename -uid "9D5271AD-4C81-0956-55AF-38ABFFD0E36F"; setAttr ".ihi" 0; setAttr ".vo" yes; -createNode groupId -n "groupId8727"; - rename -uid "A17B4E36-42D2-CB0A-5509-3B9B843AAC60"; +createNode groupId -n "groupId8751"; + rename -uid "8E9F52AB-428B-F491-7A5F-049837A7CE0A"; setAttr ".ihi" 0; -createNode groupParts -n "groupParts1158"; - rename -uid "9B466C8C-4D46-047C-D809-34BC1D7BBDF0"; +createNode groupParts -n "groupParts1182"; + rename -uid "6625F9D7-459D-847C-9BAE-93B9C7E90AF6"; setAttr ".ihi" 0; setAttr ".ic" -type "componentList" 1 "cv[*]"; -createNode unitConversion -n "unitConversion143"; - rename -uid "36423457-4C8C-8947-0C93-29A86761F45D"; +createNode unitConversion -n "unitConversion144"; + rename -uid "380020B0-4095-010B-DA41-4E9293209FFA"; setAttr ".cf" 0.017453292519943295; -createNode mgear_curveCns -n "mgear_curveCns432"; - rename -uid "324000B2-43B4-CD63-2A45-41832E4B5719"; +createNode mgear_curveCns -n "mgear_curveCns444"; + rename -uid "24590B8C-4C5B-F6E3-F913-DDBE740AA470"; setAttr -s 4 ".inputs"; -createNode tweak -n "tweak580"; - rename -uid "40059E4D-463F-1FA7-679A-BFA7422D6DB7"; -createNode objectSet -n "mgear_curveCns432Set"; - rename -uid "82ECEA30-4E8F-FC7E-DF36-7EA6FFE2D7B1"; +createNode objectSet -n "mgear_curveCns444Set"; + rename -uid "6C0658D0-47DD-4404-61CE-13A615BC66F1"; setAttr ".ihi" 0; setAttr ".vo" yes; -createNode groupId -n "mgear_curveCns432GroupId"; - rename -uid "56FC99C2-48AE-315B-6663-0BBAA73F0284"; +createNode groupId -n "mgear_curveCns444GroupId"; + rename -uid "BDC30165-4A4E-659D-B433-1F82DB0912E1"; setAttr ".ihi" 0; -createNode groupParts -n "mgear_curveCns432GroupParts"; - rename -uid "06973B11-4CCD-BA9F-90DF-6BB17DBFD06B"; +createNode groupParts -n "mgear_curveCns444GroupParts"; + rename -uid "E00AFCA4-4E87-05E9-3CBD-E58ADBB72542"; setAttr ".ihi" 0; setAttr ".ic" -type "componentList" 1 "cv[*]"; -createNode objectSet -n "tweakSet580"; - rename -uid "CF667DF2-4396-76DF-2769-04ACD1E62121"; +createNode tweak -n "tweak592"; + rename -uid "7829EDB6-443F-E3B2-295C-39A1CF7C0AE3"; +createNode objectSet -n "tweakSet592"; + rename -uid "93FA4287-4C7F-D85E-B6F3-7EBACA22A84B"; setAttr ".ihi" 0; setAttr ".vo" yes; -createNode groupId -n "groupId8729"; - rename -uid "6887B69F-4D75-A0F8-4484-B685B1C31151"; +createNode groupId -n "groupId8753"; + rename -uid "98A506D2-4BE8-59E3-37AE-67ADFDE8E4DC"; setAttr ".ihi" 0; -createNode groupParts -n "groupParts1160"; - rename -uid "90CE59B4-48D4-CF21-52F1-0A9FF7478480"; +createNode groupParts -n "groupParts1184"; + rename -uid "23037226-4A27-C88E-06C7-46A691A8C18B"; setAttr ".ihi" 0; setAttr ".ic" -type "componentList" 1 "cv[*]"; -createNode unitConversion -n "unitConversion144"; - rename -uid "0D2473EE-46D6-71CA-68AD-869EFCCD2B19"; +createNode unitConversion -n "unitConversion145"; + rename -uid "9648D09A-4F5A-1A47-1B4F-C581A33D2D9D"; setAttr ".cf" 0.017453292519943295; -createNode mgear_curveCns -n "mgear_curveCns433"; - rename -uid "6D46A20F-4E87-FE32-6211-F7A61D0891BD"; +createNode mgear_curveCns -n "mgear_curveCns445"; + rename -uid "AB4AF995-43AB-D65B-B46B-DA916C2A6BDA"; setAttr -s 4 ".inputs"; -createNode tweak -n "tweak581"; - rename -uid "4F0DB648-4054-C5E9-47B7-99B79277624E"; -createNode objectSet -n "mgear_curveCns433Set"; - rename -uid "BAC70D31-4C96-C1F6-407D-20B944FA5615"; +createNode objectSet -n "mgear_curveCns445Set"; + rename -uid "EF31AB96-4D67-EE31-D89A-BDB275ED566C"; setAttr ".ihi" 0; setAttr ".vo" yes; -createNode groupId -n "mgear_curveCns433GroupId"; - rename -uid "72969D48-4A9E-0719-FE53-1EAA91E5AC7E"; +createNode groupId -n "mgear_curveCns445GroupId"; + rename -uid "0CE3889B-4D7A-6A08-7104-B2A68492E02C"; setAttr ".ihi" 0; -createNode groupParts -n "mgear_curveCns433GroupParts"; - rename -uid "921F45B4-4AB8-2BC5-6C40-4F8DEF2B0335"; +createNode groupParts -n "mgear_curveCns445GroupParts"; + rename -uid "21BC1621-4EED-D465-0FDA-02B928F2A4DB"; setAttr ".ihi" 0; setAttr ".ic" -type "componentList" 1 "cv[*]"; -createNode objectSet -n "tweakSet581"; - rename -uid "7F038BCA-42E9-1CFE-F5A7-6C8345AE9F48"; +createNode tweak -n "tweak593"; + rename -uid "5847BCAC-49FF-B703-6144-ECAFC7A8291C"; +createNode objectSet -n "tweakSet593"; + rename -uid "4B33D7B5-4297-2FF3-0447-D9BF3DC758DB"; setAttr ".ihi" 0; setAttr ".vo" yes; -createNode groupId -n "groupId8731"; - rename -uid "606E0992-4E8A-31E0-3BB6-0086F1C868F1"; +createNode groupId -n "groupId8755"; + rename -uid "198FAA27-4A11-43E7-2480-7397425B36F1"; setAttr ".ihi" 0; -createNode groupParts -n "groupParts1162"; - rename -uid "DAA21534-448C-1E41-1A24-C48EA370286F"; +createNode groupParts -n "groupParts1186"; + rename -uid "81891ED9-42E1-0C5B-78B3-05B60EAA09F5"; setAttr ".ihi" 0; setAttr ".ic" -type "componentList" 1 "cv[*]"; -createNode unitConversion -n "unitConversion145"; - rename -uid "FD8A4B63-45D8-2139-CD3D-EBAB7982ED7C"; +createNode unitConversion -n "unitConversion142"; + rename -uid "14BEE0DB-431E-A5E5-25A7-618F12261533"; setAttr ".cf" 0.017453292519943295; -createNode mgear_curveCns -n "mgear_curveCns434"; - rename -uid "189972D6-4DC2-6D33-2B22-ECB3B18275A3"; +createNode mgear_curveCns -n "mgear_curveCns442"; + rename -uid "FEFD2E23-4AD9-0D93-B5C9-F6B04AFCA44C"; setAttr -s 4 ".inputs"; -createNode tweak -n "tweak582"; - rename -uid "D33B237A-4C76-500D-16B7-70A4D2F15498"; -createNode objectSet -n "mgear_curveCns434Set"; - rename -uid "29A6FB0E-4A05-C25F-FA09-2290EF6D9C16"; +createNode objectSet -n "mgear_curveCns442Set"; + rename -uid "64D32F2D-4317-99BB-11D6-79AB96C617B7"; setAttr ".ihi" 0; setAttr ".vo" yes; -createNode groupId -n "mgear_curveCns434GroupId"; - rename -uid "16BB488A-45A4-6733-3FA5-5798CCD1C309"; +createNode groupId -n "mgear_curveCns442GroupId"; + rename -uid "C6CC45F9-42C3-A02E-FBE4-4DA90C3B68AF"; setAttr ".ihi" 0; -createNode groupParts -n "mgear_curveCns434GroupParts"; - rename -uid "8447E106-47FB-9EBA-AC21-5DB65C28A798"; +createNode groupParts -n "mgear_curveCns442GroupParts"; + rename -uid "BD6FA755-407B-9677-9497-9896522962CF"; setAttr ".ihi" 0; setAttr ".ic" -type "componentList" 1 "cv[*]"; -createNode objectSet -n "tweakSet582"; - rename -uid "2CB22691-472B-D3C9-4FA4-9EB95B3AAB59"; +createNode tweak -n "tweak590"; + rename -uid "A565A1CC-4FC3-26C0-CC3E-ADA894857A5E"; +createNode objectSet -n "tweakSet590"; + rename -uid "087C36C9-448E-F368-D115-0EB6504E812F"; setAttr ".ihi" 0; setAttr ".vo" yes; -createNode groupId -n "groupId8733"; - rename -uid "1D5D9171-49D2-97A9-250C-BAAEEF1A9B13"; +createNode groupId -n "groupId8749"; + rename -uid "440CA677-4A1D-2200-8090-65BC55F821C1"; setAttr ".ihi" 0; -createNode groupParts -n "groupParts1164"; - rename -uid "F814FD2C-4501-4AE9-D512-DBAD4B49DA34"; +createNode groupParts -n "groupParts1180"; + rename -uid "2E440EE0-4F80-8039-A648-4C8C5E27077A"; setAttr ".ihi" 0; setAttr ".ic" -type "componentList" 1 "cv[*]"; createNode unitConversion -n "unitConversion146"; - rename -uid "9005297F-488C-3407-F1D1-F0B417B11B7C"; + rename -uid "B687F0B7-4707-22ED-3EBB-8385444CB7A6"; setAttr ".cf" 0.017453292519943295; -createNode mgear_curveCns -n "mgear_curveCns435"; - rename -uid "49BB732B-472D-C49E-0B61-DDB1AB153A01"; +createNode mgear_curveCns -n "mgear_curveCns446"; + rename -uid "AAE05EEB-4E84-B369-E932-DD867786C006"; setAttr -s 4 ".inputs"; -createNode tweak -n "tweak583"; - rename -uid "FE119985-43F8-A8C7-77E3-058F7EDD7E33"; -createNode objectSet -n "mgear_curveCns435Set"; - rename -uid "C359E15C-4E18-A6EA-DB0E-D4B51A3461BB"; +createNode objectSet -n "mgear_curveCns446Set"; + rename -uid "A86E8DD0-4EDC-D3B6-4B02-09A57F70772A"; setAttr ".ihi" 0; setAttr ".vo" yes; -createNode groupId -n "mgear_curveCns435GroupId"; - rename -uid "DB00AA2B-4936-9C25-5618-F08A756F8D52"; +createNode groupId -n "mgear_curveCns446GroupId"; + rename -uid "A9F25727-43B6-5DFB-13DF-9B8AAE35A852"; setAttr ".ihi" 0; -createNode groupParts -n "mgear_curveCns435GroupParts"; - rename -uid "4308A096-47B4-9CA9-91CE-36B74B72D14C"; +createNode groupParts -n "mgear_curveCns446GroupParts"; + rename -uid "FC83433E-4260-A3CE-B513-9BBE3B38FA9D"; setAttr ".ihi" 0; setAttr ".ic" -type "componentList" 1 "cv[*]"; -createNode objectSet -n "tweakSet583"; - rename -uid "344FC4F3-4472-11DD-4E8C-7E95BC4D9E87"; +createNode tweak -n "tweak594"; + rename -uid "5F151F1F-41DE-EA55-152E-98ABA4C3F7BA"; +createNode objectSet -n "tweakSet594"; + rename -uid "129259D0-4358-2316-3233-97A97A3ADCB7"; setAttr ".ihi" 0; setAttr ".vo" yes; -createNode groupId -n "groupId8735"; - rename -uid "94B91D9B-4982-64F1-76B5-B2AD227356A6"; +createNode groupId -n "groupId8757"; + rename -uid "881AE4E7-477D-9EE7-09F6-C79350C3D51B"; setAttr ".ihi" 0; -createNode groupParts -n "groupParts1166"; - rename -uid "7AEB5AFA-4C40-6B60-8FBE-96ABC89E8692"; +createNode groupParts -n "groupParts1188"; + rename -uid "98ABF1FA-46A4-54F9-0CEC-0A89FFD95019"; setAttr ".ihi" 0; setAttr ".ic" -type "componentList" 1 "cv[*]"; createNode unitConversion -n "unitConversion147"; - rename -uid "34CE390F-4301-E08E-C67B-6683C4BF1204"; + rename -uid "99896CFA-4ADD-4134-2EE1-EF8020040442"; setAttr ".cf" 0.017453292519943295; -createNode mgear_curveCns -n "mgear_curveCns436"; - rename -uid "FA6BCF03-4699-32AC-5F07-9FB6870BCFAB"; +createNode mgear_curveCns -n "mgear_curveCns447"; + rename -uid "4CCC7548-4C43-DC81-DDD6-639BF4673B7C"; setAttr -s 4 ".inputs"; -createNode tweak -n "tweak584"; - rename -uid "EC980DD2-4C43-5ADD-26D9-BA9588EE885A"; -createNode objectSet -n "mgear_curveCns436Set"; - rename -uid "AE5D1901-44AF-DEF3-8EFF-EB94B2511F7D"; +createNode objectSet -n "mgear_curveCns447Set"; + rename -uid "B0BCA107-4FDD-0093-B33F-39903663D6AC"; setAttr ".ihi" 0; setAttr ".vo" yes; -createNode groupId -n "mgear_curveCns436GroupId"; - rename -uid "18B83AB1-4B1C-CB37-AEDF-CA87861BA935"; +createNode groupId -n "mgear_curveCns447GroupId"; + rename -uid "587E570E-4D39-67DD-F9A2-5999AF2DC55E"; setAttr ".ihi" 0; -createNode groupParts -n "mgear_curveCns436GroupParts"; - rename -uid "FFC5760D-4C6F-C609-CFEA-DEA0C6A6A371"; +createNode groupParts -n "mgear_curveCns447GroupParts"; + rename -uid "575D9ECA-4780-1C3E-D251-778DDAB38A72"; setAttr ".ihi" 0; setAttr ".ic" -type "componentList" 1 "cv[*]"; -createNode objectSet -n "tweakSet584"; - rename -uid "E6A1B06F-4075-81B2-5E63-E8932D818F76"; +createNode tweak -n "tweak595"; + rename -uid "F6A652BF-4318-E2ED-9A8F-15AC7C44582A"; +createNode objectSet -n "tweakSet595"; + rename -uid "CB057CFA-4790-BCA2-44F9-A1BC51730229"; setAttr ".ihi" 0; setAttr ".vo" yes; -createNode groupId -n "groupId8737"; - rename -uid "72F34A1E-44A7-2ABA-23EC-658780A61AF7"; +createNode groupId -n "groupId8759"; + rename -uid "E9504203-47E0-3AA4-2756-C7AC01F9C587"; setAttr ".ihi" 0; -createNode groupParts -n "groupParts1168"; - rename -uid "8C5D39ED-465D-B3CD-BA5D-EEB2CF9002FC"; +createNode groupParts -n "groupParts1190"; + rename -uid "B52ED559-48B9-BCE5-CA7C-D2826A588B93"; setAttr ".ihi" 0; setAttr ".ic" -type "componentList" 1 "cv[*]"; -createNode animCurveUU -n "leg_L0_root_st_profile1"; - rename -uid "6F9C144C-4D97-D234-F24D-D49BE3C7275A"; - setAttr ".tan" 18; - setAttr ".wgt" no; - setAttr -s 3 ".ktv[0:2]" 0 0 0.5 -1 1 0; -createNode animCurveUU -n "leg_L0_root_sq_profile1"; - rename -uid "C68FAA89-4AA2-32B7-A80D-DA8D835D2D90"; - setAttr ".tan" 18; - setAttr ".wgt" no; - setAttr -s 3 ".ktv[0:2]" 0 0 0.5 1 1 0; -createNode mgear_curveCns -n "mgear_curveCns437"; - rename -uid "CA945228-44EC-1AC7-A08F-6D9A93A8849B"; +createNode mgear_curveCns -n "mgear_curveCns441"; + rename -uid "AEFDBD59-4115-7E19-3C92-68A238066C36"; setAttr -s 4 ".inputs"; -createNode tweak -n "tweak585"; - rename -uid "AA16C151-4E94-D990-CFCA-0B87B3A576F2"; -createNode objectSet -n "mgear_curveCns437Set"; - rename -uid "592F10A3-4F63-8D21-F6AA-139A8B49B38C"; +createNode objectSet -n "mgear_curveCns441Set"; + rename -uid "7CD7A3BF-4238-E99C-F31B-D2B0A9983D63"; setAttr ".ihi" 0; setAttr ".vo" yes; -createNode groupId -n "mgear_curveCns437GroupId"; - rename -uid "B24B1CF8-44FE-2BD8-9ECB-EDA9E9CB4D23"; +createNode groupId -n "mgear_curveCns441GroupId"; + rename -uid "E691CE4F-4B9F-9247-0DC5-57BE3E5DFF82"; setAttr ".ihi" 0; -createNode groupParts -n "mgear_curveCns437GroupParts"; - rename -uid "46E2A1E9-43B8-AD5B-7383-98BE9856CE9F"; +createNode groupParts -n "mgear_curveCns441GroupParts"; + rename -uid "0237440D-4F19-DE2F-A0A9-F89F88D72B7B"; setAttr ".ihi" 0; setAttr ".ic" -type "componentList" 1 "cv[*]"; -createNode objectSet -n "tweakSet585"; - rename -uid "2D25710B-48AC-7339-22C2-DD88C9EBE343"; +createNode tweak -n "tweak589"; + rename -uid "0790108A-4973-58B8-331A-F8AB95079B7C"; +createNode objectSet -n "tweakSet589"; + rename -uid "8F846CCF-4860-3CCD-4B3E-C7BCB7E95E26"; setAttr ".ihi" 0; setAttr ".vo" yes; -createNode groupId -n "groupId8739"; - rename -uid "380C1CEB-4460-5E92-636A-2DA4AD1E2860"; +createNode groupId -n "groupId8747"; + rename -uid "61E1804B-447E-B88A-F77A-9D83E46D5975"; setAttr ".ihi" 0; -createNode groupParts -n "groupParts1170"; - rename -uid "3709B094-4B26-93B2-686C-A79AA5120720"; +createNode groupParts -n "groupParts1178"; + rename -uid "B5C1067B-42BF-8507-A142-5D94C6C82111"; setAttr ".ihi" 0; setAttr ".ic" -type "componentList" 1 "cv[*]"; -createNode mgear_curveCns -n "mgear_curveCns438"; - rename -uid "AD815CC8-48A4-8BC9-AA33-3A8D439272A6"; - setAttr -s 4 ".inputs"; -createNode tweak -n "tweak586"; - rename -uid "5E1F7A4C-4FCF-F5F7-909B-EF932C3AEA57"; -createNode objectSet -n "mgear_curveCns438Set"; - rename -uid "479BB742-4E87-CCAF-49C0-079D4E74B765"; +createNode unitConversion -n "unitConversion141"; + rename -uid "CEF83599-4CCF-F0DB-1C89-80A6E9B41394"; + setAttr ".cf" 0.017453292519943295; +createNode mgear_curveCns -n "mgear_curveCns440"; + rename -uid "36E583FC-4FBB-D5AE-CE54-2FBF16606A61"; + setAttr -s 2 ".inputs"; +createNode objectSet -n "mgear_curveCns440Set"; + rename -uid "B3B051A5-40DC-4D7A-6BEF-A694C5B1E8B5"; setAttr ".ihi" 0; setAttr ".vo" yes; -createNode groupId -n "mgear_curveCns438GroupId"; - rename -uid "7E01C3E1-426F-EC94-D6EB-D89FCDF95897"; +createNode groupId -n "mgear_curveCns440GroupId"; + rename -uid "9EE25E55-49EB-0E1E-EE1C-CA88476BCE7C"; setAttr ".ihi" 0; -createNode groupParts -n "mgear_curveCns438GroupParts"; - rename -uid "B83133D1-4ACB-B397-A5DE-12AE33A10B83"; +createNode groupParts -n "mgear_curveCns440GroupParts"; + rename -uid "2805B6F3-485C-9F09-B4E0-CFBFAD0DDA5A"; setAttr ".ihi" 0; setAttr ".ic" -type "componentList" 1 "cv[*]"; -createNode objectSet -n "tweakSet586"; - rename -uid "122F4E57-444C-EAB0-2A93-E0941F969415"; +createNode tweak -n "tweak588"; + rename -uid "C7FE40A8-42ED-668E-436A-7890B2494789"; +createNode objectSet -n "tweakSet588"; + rename -uid "385DE1FC-4761-EFEC-7CB3-F7B1EE487CF9"; setAttr ".ihi" 0; setAttr ".vo" yes; -createNode groupId -n "groupId8741"; - rename -uid "0B3E8A81-4350-48FF-B1D1-2187278E158F"; +createNode groupId -n "groupId8745"; + rename -uid "0C0FC293-445B-C3D1-CC9F-62A7491B9F06"; setAttr ".ihi" 0; -createNode groupParts -n "groupParts1172"; - rename -uid "C69A0639-443A-F62E-1C32-86B46F3C9418"; +createNode groupParts -n "groupParts1176"; + rename -uid "9FC7CC11-4348-038C-B218-8DBB8C1BA4E4"; setAttr ".ihi" 0; setAttr ".ic" -type "componentList" 1 "cv[*]"; -createNode mgear_curveCns -n "mgear_curveCns439"; - rename -uid "F4780B70-41EA-9AA7-3C6F-ED8FC7A6236A"; - setAttr -s 5 ".inputs"; -createNode tweak -n "tweak587"; - rename -uid "9717ADF9-4633-AEE9-B53B-0CAD3284EF7B"; +createNode unitConversion -n "unitConversion131"; + rename -uid "BBD1CB1C-4F62-4188-5A50-3686BB2374E2"; + setAttr ".cf" 0.017453292519943295; +createNode mgear_curveCns -n "mgear_curveCns411"; + rename -uid "08F3E21F-4B06-0356-7D16-EEBE4134C543"; + setAttr -s 2 ".inputs"; +createNode objectSet -n "mgear_curveCns411Set"; + rename -uid "5A582EA6-4A3A-4B62-0F93-4C95656F5BB2"; + setAttr ".ihi" 0; + setAttr ".vo" yes; +createNode groupId -n "mgear_curveCns411GroupId"; + rename -uid "F5466900-4553-A4E5-B194-46BC61B6E316"; + setAttr ".ihi" 0; +createNode groupParts -n "mgear_curveCns411GroupParts"; + rename -uid "50667983-4418-661D-192A-5CAE90921C02"; + setAttr ".ihi" 0; + setAttr ".ic" -type "componentList" 1 "cv[*]"; +createNode tweak -n "tweak559"; + rename -uid "C111B88C-44B1-50CD-D3A8-A58D51C6A560"; +createNode objectSet -n "tweakSet559"; + rename -uid "4F8A15D5-4D18-7ADE-C3B6-5595F9195D04"; + setAttr ".ihi" 0; + setAttr ".vo" yes; +createNode groupId -n "groupId8687"; + rename -uid "D88A5970-4D84-0204-A654-49B38D533AA8"; + setAttr ".ihi" 0; +createNode groupParts -n "groupParts1118"; + rename -uid "362539CF-4339-BC58-D28A-4CB816F2E1B1"; + setAttr ".ihi" 0; + setAttr ".ic" -type "componentList" 1 "cv[*]"; +createNode animCurveUU -n "leg_L0_root_st_profile1"; + rename -uid "59D4CF91-420F-D345-78D8-848A28FA1649"; + setAttr ".tan" 18; + setAttr ".wgt" no; + setAttr -s 3 ".ktv[0:2]" 0 0 0.5 -1 1 0; +createNode animCurveUU -n "leg_L0_root_sq_profile1"; + rename -uid "4458A47B-42B8-8010-D527-D481ABB45F09"; + setAttr ".tan" 18; + setAttr ".wgt" no; + setAttr -s 3 ".ktv[0:2]" 0 0 0.5 1 1 0; +createNode mgear_curveCns -n "mgear_curveCns438"; + rename -uid "13C86E04-4DF4-0A34-7474-4A9313DC5C8C"; + setAttr -s 4 ".inputs"; +createNode objectSet -n "mgear_curveCns438Set"; + rename -uid "3AE01A4E-4C10-0FC6-C5EB-12A2EA51CC43"; + setAttr ".ihi" 0; + setAttr ".vo" yes; +createNode groupId -n "mgear_curveCns438GroupId"; + rename -uid "EE24DCEF-4EA4-7038-B427-6699D1C855E4"; + setAttr ".ihi" 0; +createNode groupParts -n "mgear_curveCns438GroupParts"; + rename -uid "5140C9DB-4A94-172D-FC5F-1D8170ADBA8C"; + setAttr ".ihi" 0; + setAttr ".ic" -type "componentList" 1 "cv[*]"; +createNode tweak -n "tweak586"; + rename -uid "5F7CFDA9-41F3-E77B-AB5C-86AE692FF1BB"; +createNode objectSet -n "tweakSet586"; + rename -uid "9586CE03-47E0-3409-1F2F-1290C8DEEEAF"; + setAttr ".ihi" 0; + setAttr ".vo" yes; +createNode groupId -n "groupId8741"; + rename -uid "D0091B92-4D7C-99E7-B99A-B29118E24FD2"; + setAttr ".ihi" 0; +createNode groupParts -n "groupParts1172"; + rename -uid "8CAD272F-43FC-4D53-9DB5-BC99766A70AF"; + setAttr ".ihi" 0; + setAttr ".ic" -type "componentList" 1 "cv[*]"; +createNode mgear_curveCns -n "mgear_curveCns439"; + rename -uid "F76C9672-41BC-CFDE-9E17-8FB1FF3B67DE"; + setAttr -s 5 ".inputs"; createNode objectSet -n "mgear_curveCns439Set"; - rename -uid "2C54006B-4AEF-9C02-D4B2-D6A1013BEFCE"; + rename -uid "9F3E9A1C-4955-C517-9845-1795874DF17D"; setAttr ".ihi" 0; setAttr ".vo" yes; createNode groupId -n "mgear_curveCns439GroupId"; - rename -uid "10AF0D11-45D3-75CB-6007-FDA7BA2653F8"; + rename -uid "55CD349A-4A0E-4D2F-018C-279113B9F6A6"; setAttr ".ihi" 0; createNode groupParts -n "mgear_curveCns439GroupParts"; - rename -uid "B72A41CB-4AC9-B289-63CA-E6BFD19788C3"; + rename -uid "3C5F0BED-4DA8-0E22-996B-659FEDD70D07"; setAttr ".ihi" 0; setAttr ".ic" -type "componentList" 1 "cv[*]"; +createNode tweak -n "tweak587"; + rename -uid "D90051B7-40D2-FC6B-533B-4A8BF036FE5C"; createNode objectSet -n "tweakSet587"; - rename -uid "5B3E51CB-4AA6-263B-E03D-03A57E1176CB"; + rename -uid "B271E63D-4082-5014-9A1D-51B2EB28F37B"; setAttr ".ihi" 0; setAttr ".vo" yes; createNode groupId -n "groupId8743"; - rename -uid "D134E9D1-4E69-6668-D316-3984F67240E8"; + rename -uid "66E1C800-4099-DEE0-53F8-EC81852230A2"; setAttr ".ihi" 0; createNode groupParts -n "groupParts1174"; - rename -uid "E6CF5782-4B8F-1937-BBA0-C8A22FD8CDF5"; + rename -uid "19F9B247-469E-560E-0131-8EAE1A5B1E22"; + setAttr ".ihi" 0; + setAttr ".ic" -type "componentList" 1 "cv[*]"; +createNode mgear_curveCns -n "mgear_curveCns437"; + rename -uid "1A4064EB-4759-7F66-ACB5-E19EC377718A"; + setAttr -s 4 ".inputs"; +createNode objectSet -n "mgear_curveCns437Set"; + rename -uid "2BAA369E-4B16-7751-231F-C2B3D552A91F"; + setAttr ".ihi" 0; + setAttr ".vo" yes; +createNode groupId -n "mgear_curveCns437GroupId"; + rename -uid "A4224A04-402B-7DDB-5C66-0DA023058932"; + setAttr ".ihi" 0; +createNode groupParts -n "mgear_curveCns437GroupParts"; + rename -uid "27FD7DED-440C-8012-D3EE-08BA5A6E1777"; + setAttr ".ihi" 0; + setAttr ".ic" -type "componentList" 1 "cv[*]"; +createNode tweak -n "tweak585"; + rename -uid "278A459E-4775-53D5-6293-47AF86BD0291"; +createNode objectSet -n "tweakSet585"; + rename -uid "03CE92A3-498D-6A55-0EBD-8A80BDC756DD"; + setAttr ".ihi" 0; + setAttr ".vo" yes; +createNode groupId -n "groupId8739"; + rename -uid "AEFF13B1-48AC-02DA-16A4-E083A5B14C49"; + setAttr ".ihi" 0; +createNode groupParts -n "groupParts1170"; + rename -uid "2BA32F74-4303-416A-B7E1-408F4B34F6CB"; setAttr ".ihi" 0; setAttr ".ic" -type "componentList" 1 "cv[*]"; createNode animCurveUU -n "leg_R0_root_st_profile"; - rename -uid "C8CDE234-4A8F-C1F8-1964-C687DC6391C9"; + rename -uid "9DDCC9D9-4FD2-7038-9CAB-1EB8796E0C03"; setAttr ".tan" 18; setAttr ".wgt" no; setAttr -s 3 ".ktv[0:2]" 0 0 0.5 -1 1 0; createNode animCurveUU -n "leg_R0_root_sq_profile"; - rename -uid "11D9731B-4A4D-6835-6DBB-759CC672DBD6"; + rename -uid "B93CEEFB-49C9-DA56-0B5B-AE8724E1F3C0"; setAttr ".tan" 18; setAttr ".wgt" no; setAttr -s 3 ".ktv[0:2]" 0 0 0.5 1 1 0; -createNode mgear_curveCns -n "mgear_curveCns440"; - rename -uid "70F136BF-488A-8A8A-B53E-E59A1146C53E"; +createNode mgear_curveCns -n "mgear_curveCns449"; + rename -uid "8E458E37-4AB0-66E7-BF66-28AF0B22E464"; setAttr -s 4 ".inputs"; -createNode tweak -n "tweak588"; - rename -uid "A4175B9A-4296-16C9-FF83-32A629C4C611"; -createNode objectSet -n "mgear_curveCns440Set"; - rename -uid "E87BF3CC-4DE0-A57D-40A4-808DAF0D3BA4"; +createNode objectSet -n "mgear_curveCns449Set"; + rename -uid "52F3C0A8-49C8-8F75-E85F-CF9A3E2E06E7"; setAttr ".ihi" 0; setAttr ".vo" yes; -createNode groupId -n "mgear_curveCns440GroupId"; - rename -uid "31354F13-449C-F77B-CB2E-1CBD85C01D12"; +createNode groupId -n "mgear_curveCns449GroupId"; + rename -uid "B68C6CF3-4D72-EA54-3055-89943CE08F03"; setAttr ".ihi" 0; -createNode groupParts -n "mgear_curveCns440GroupParts"; - rename -uid "6A263843-41FB-BAAF-980A-B18B02C3045F"; +createNode groupParts -n "mgear_curveCns449GroupParts"; + rename -uid "5925DD59-430F-2392-B30B-F59CF86E32A0"; setAttr ".ihi" 0; setAttr ".ic" -type "componentList" 1 "cv[*]"; -createNode objectSet -n "tweakSet588"; - rename -uid "D02AD947-4F68-C6BB-49D8-72A3DB80B85C"; +createNode tweak -n "tweak597"; + rename -uid "95CF7E65-49EA-0120-4DAA-BA968D2282F2"; +createNode objectSet -n "tweakSet597"; + rename -uid "098D353D-4291-68D7-1A1E-4DA0AE3DD51D"; setAttr ".ihi" 0; setAttr ".vo" yes; -createNode groupId -n "groupId8745"; - rename -uid "F26D3FEA-4392-1988-5EAC-989086DF22D0"; +createNode groupId -n "groupId8763"; + rename -uid "6472AC46-421F-312E-784F-CFADC62AB9BE"; setAttr ".ihi" 0; -createNode groupParts -n "groupParts1176"; - rename -uid "EEF0A8C4-41E6-0F8C-3123-5C9E09B0215C"; +createNode groupParts -n "groupParts1194"; + rename -uid "3C8B6830-4F09-0029-29C3-DF949A12CEA2"; setAttr ".ihi" 0; setAttr ".ic" -type "componentList" 1 "cv[*]"; -createNode mgear_curveCns -n "mgear_curveCns441"; - rename -uid "8F3D6F74-4DF7-6F2A-BD67-B6ACE9DA804A"; - setAttr -s 4 ".inputs"; -createNode tweak -n "tweak589"; - rename -uid "69FE70ED-4A0F-1C86-9484-3BAC9F2AF2B9"; -createNode objectSet -n "mgear_curveCns441Set"; - rename -uid "6FC7587C-48F0-0BEF-6C31-BCB9A5DBEB06"; +createNode mgear_curveCns -n "mgear_curveCns450"; + rename -uid "77E3E106-470A-EAAE-F07B-939FA1F9C0AA"; + setAttr -s 5 ".inputs"; +createNode objectSet -n "mgear_curveCns450Set"; + rename -uid "80712821-4315-A132-86CB-90986959A6D3"; setAttr ".ihi" 0; setAttr ".vo" yes; -createNode groupId -n "mgear_curveCns441GroupId"; - rename -uid "D6556C99-4213-5C17-D7E7-20BB553C59BE"; +createNode groupId -n "mgear_curveCns450GroupId"; + rename -uid "9639714E-43FE-D73A-53E2-C1B1C19E1B49"; setAttr ".ihi" 0; -createNode groupParts -n "mgear_curveCns441GroupParts"; - rename -uid "593A7337-4352-B3FE-A15E-41B9577BE238"; +createNode groupParts -n "mgear_curveCns450GroupParts"; + rename -uid "9E9D82EE-41D9-37C7-4033-0FA7EA984CB5"; setAttr ".ihi" 0; setAttr ".ic" -type "componentList" 1 "cv[*]"; -createNode objectSet -n "tweakSet589"; - rename -uid "1B6C42C4-4918-06FF-B689-A4A05EDAEFBA"; +createNode tweak -n "tweak598"; + rename -uid "CC5B69EF-45C1-9937-7249-58900D7C2088"; +createNode objectSet -n "tweakSet598"; + rename -uid "BB540FD5-449A-1E82-37C5-9F8852B71B0F"; setAttr ".ihi" 0; setAttr ".vo" yes; -createNode groupId -n "groupId8747"; - rename -uid "1876125A-49CC-524E-FD62-AA9112D643A8"; +createNode groupId -n "groupId8765"; + rename -uid "158D82D2-4060-618B-110A-C58988193903"; setAttr ".ihi" 0; -createNode groupParts -n "groupParts1178"; - rename -uid "C67982B6-4346-598E-6793-06A984D00928"; +createNode groupParts -n "groupParts1196"; + rename -uid "AC296BDB-4FE0-D868-45B6-65A99A29F6E8"; setAttr ".ihi" 0; setAttr ".ic" -type "componentList" 1 "cv[*]"; -createNode mgear_curveCns -n "mgear_curveCns442"; - rename -uid "8612C551-469C-63E6-A5A9-2F84CA405673"; - setAttr -s 5 ".inputs"; -createNode tweak -n "tweak590"; - rename -uid "3704EEAA-480A-1DCA-788B-82BF2DB4E50B"; -createNode objectSet -n "mgear_curveCns442Set"; - rename -uid "65CFCB30-4227-431E-04E5-BB840F6D830F"; +createNode mgear_curveCns -n "mgear_curveCns448"; + rename -uid "19E0C624-4B56-536F-C71A-A590AE4AC34B"; + setAttr -s 4 ".inputs"; +createNode objectSet -n "mgear_curveCns448Set"; + rename -uid "A18DE6A4-4328-F0F9-49B9-58A8E66AF063"; setAttr ".ihi" 0; setAttr ".vo" yes; -createNode groupId -n "mgear_curveCns442GroupId"; - rename -uid "554C7142-4D71-327B-5B12-D6BBBE5D6871"; +createNode groupId -n "mgear_curveCns448GroupId"; + rename -uid "C0E05451-4D2A-B5C8-2672-A4BFEB2A0742"; setAttr ".ihi" 0; -createNode groupParts -n "mgear_curveCns442GroupParts"; - rename -uid "CF950B57-41AB-137D-CB49-4298C8B3F05C"; +createNode groupParts -n "mgear_curveCns448GroupParts"; + rename -uid "3E85FE8E-433C-27AA-96A3-D4B983413F06"; setAttr ".ihi" 0; setAttr ".ic" -type "componentList" 1 "cv[*]"; -createNode objectSet -n "tweakSet590"; - rename -uid "3C60F627-4B3B-4854-524C-9DA4E5446920"; +createNode tweak -n "tweak596"; + rename -uid "B912DFD1-432E-2B9A-B894-AA9E2FCB9431"; +createNode objectSet -n "tweakSet596"; + rename -uid "2FA81C07-488D-23FD-A6CC-03A3011FF60B"; setAttr ".ihi" 0; setAttr ".vo" yes; -createNode groupId -n "groupId8749"; - rename -uid "B8B422C8-4CE3-5919-5742-3F896269C7A1"; +createNode groupId -n "groupId8761"; + rename -uid "01F20B11-4894-D1B8-09B2-FF9E4DF96CE7"; setAttr ".ihi" 0; -createNode groupParts -n "groupParts1180"; - rename -uid "96BA0227-4E65-A8AA-C76C-9E98BD07B719"; +createNode groupParts -n "groupParts1192"; + rename -uid "B0B0BF58-4F9D-1DC1-6D7E-2CAC0937C53F"; setAttr ".ihi" 0; setAttr ".ic" -type "componentList" 1 "cv[*]"; -createNode script -n "uiConfigurationScriptNode"; - rename -uid "093946A3-4A4E-10B7-F93B-50A3E5F1F0BE"; - setAttr ".b" -type "string" ( - "// Maya Mel UI Configuration File.\n//\n// This script is machine generated. Edit at your own risk.\n//\n//\n\nglobal string $gMainPane;\nif (`paneLayout -exists $gMainPane`) {\n\n\tglobal int $gUseScenePanelConfig;\n\tint $useSceneConfig = $gUseScenePanelConfig;\n\tint $menusOkayInPanels = `optionVar -q allowMenusInPanels`;\tint $nVisPanes = `paneLayout -q -nvp $gMainPane`;\n\tint $nPanes = 0;\n\tstring $editorName;\n\tstring $panelName;\n\tstring $itemFilterName;\n\tstring $panelConfig;\n\n\t//\n\t// get current state of the UI\n\t//\n\tsceneUIReplacement -update $gMainPane;\n\n\t$panelName = `sceneUIReplacement -getNextPanel \"modelPanel\" (localizedPanelLabel(\"Top View\")) `;\n\tif (\"\" == $panelName) {\n\t\tif ($useSceneConfig) {\n\t\t\t$panelName = `modelPanel -unParent -l (localizedPanelLabel(\"Top View\")) -mbv $menusOkayInPanels `;\n\t\t\t$editorName = $panelName;\n modelEditor -e \n -camera \"top\" \n -useInteractiveMode 0\n -displayLights \"default\" \n -displayAppearance \"smoothShaded\" \n" - + " -activeOnly 0\n -ignorePanZoom 0\n -wireframeOnShaded 0\n -headsUpDisplay 1\n -holdOuts 1\n -selectionHiliteDisplay 1\n -useDefaultMaterial 0\n -bufferMode \"double\" \n -twoSidedLighting 0\n -backfaceCulling 0\n -xray 0\n -jointXray 0\n -activeComponentsXray 0\n -displayTextures 0\n -smoothWireframe 0\n -lineWidth 1\n -textureAnisotropic 0\n -textureHilight 1\n -textureSampling 2\n -textureDisplay \"modulate\" \n -textureMaxSize 32768\n -fogging 0\n -fogSource \"fragment\" \n -fogMode \"linear\" \n -fogStart 0\n -fogEnd 100\n -fogDensity 0.1\n -fogColor 0.5 0.5 0.5 1 \n -depthOfFieldPreview 1\n -maxConstantTransparency 1\n" - + " -rendererName \"vp2Renderer\" \n -objectFilterShowInHUD 1\n -isFiltered 0\n -colorResolution 256 256 \n -bumpResolution 512 512 \n -textureCompression 0\n -transparencyAlgorithm \"frontAndBackCull\" \n -transpInShadows 0\n -cullingOverride \"none\" \n -lowQualityLighting 0\n -maximumNumHardwareLights 1\n -occlusionCulling 0\n -shadingModel 0\n -useBaseRenderer 0\n -useReducedRenderer 0\n -smallObjectCulling 0\n -smallObjectThreshold -1 \n -interactiveDisableShadows 0\n -interactiveBackFaceCull 0\n -sortTransparent 1\n -nurbsCurves 1\n -nurbsSurfaces 1\n -polymeshes 1\n -subdivSurfaces 1\n -planes 1\n -lights 1\n -cameras 1\n -controlVertices 1\n" - + " -hulls 1\n -grid 1\n -imagePlane 1\n -joints 1\n -ikHandles 1\n -deformers 1\n -dynamics 1\n -particleInstancers 1\n -fluids 1\n -hairSystems 1\n -follicles 1\n -nCloths 1\n -nParticles 1\n -nRigids 1\n -dynamicConstraints 1\n -locators 1\n -manipulators 1\n -pluginShapes 1\n -dimensions 1\n -handles 1\n -pivots 1\n -textures 1\n -strokes 1\n -motionTrails 1\n -clipGhosts 1\n -greasePencils 1\n -shadows 0\n -captureSequenceNumber -1\n -width 1\n -height 1\n -sceneRenderFilter 0\n $editorName;\n modelEditor -e -viewSelected 0 $editorName;\n modelEditor -e \n" - + " -pluginObjects \"gpuCacheDisplayFilter\" 1 \n $editorName;\n\t\t}\n\t} else {\n\t\t$label = `panel -q -label $panelName`;\n\t\tmodelPanel -edit -l (localizedPanelLabel(\"Top View\")) -mbv $menusOkayInPanels $panelName;\n\t\t$editorName = $panelName;\n modelEditor -e \n -camera \"top\" \n -useInteractiveMode 0\n -displayLights \"default\" \n -displayAppearance \"smoothShaded\" \n -activeOnly 0\n -ignorePanZoom 0\n -wireframeOnShaded 0\n -headsUpDisplay 1\n -holdOuts 1\n -selectionHiliteDisplay 1\n -useDefaultMaterial 0\n -bufferMode \"double\" \n -twoSidedLighting 0\n -backfaceCulling 0\n -xray 0\n -jointXray 0\n -activeComponentsXray 0\n -displayTextures 0\n -smoothWireframe 0\n -lineWidth 1\n -textureAnisotropic 0\n -textureHilight 1\n -textureSampling 2\n -textureDisplay \"modulate\" \n" - + " -textureMaxSize 32768\n -fogging 0\n -fogSource \"fragment\" \n -fogMode \"linear\" \n -fogStart 0\n -fogEnd 100\n -fogDensity 0.1\n -fogColor 0.5 0.5 0.5 1 \n -depthOfFieldPreview 1\n -maxConstantTransparency 1\n -rendererName \"vp2Renderer\" \n -objectFilterShowInHUD 1\n -isFiltered 0\n -colorResolution 256 256 \n -bumpResolution 512 512 \n -textureCompression 0\n -transparencyAlgorithm \"frontAndBackCull\" \n -transpInShadows 0\n -cullingOverride \"none\" \n -lowQualityLighting 0\n -maximumNumHardwareLights 1\n -occlusionCulling 0\n -shadingModel 0\n -useBaseRenderer 0\n -useReducedRenderer 0\n -smallObjectCulling 0\n -smallObjectThreshold -1 \n -interactiveDisableShadows 0\n -interactiveBackFaceCull 0\n -sortTransparent 1\n" - + " -nurbsCurves 1\n -nurbsSurfaces 1\n -polymeshes 1\n -subdivSurfaces 1\n -planes 1\n -lights 1\n -cameras 1\n -controlVertices 1\n -hulls 1\n -grid 1\n -imagePlane 1\n -joints 1\n -ikHandles 1\n -deformers 1\n -dynamics 1\n -particleInstancers 1\n -fluids 1\n -hairSystems 1\n -follicles 1\n -nCloths 1\n -nParticles 1\n -nRigids 1\n -dynamicConstraints 1\n -locators 1\n -manipulators 1\n -pluginShapes 1\n -dimensions 1\n -handles 1\n -pivots 1\n -textures 1\n -strokes 1\n -motionTrails 1\n -clipGhosts 1\n -greasePencils 1\n -shadows 0\n -captureSequenceNumber -1\n -width 1\n -height 1\n -sceneRenderFilter 0\n $editorName;\n" - + " modelEditor -e -viewSelected 0 $editorName;\n modelEditor -e \n -pluginObjects \"gpuCacheDisplayFilter\" 1 \n $editorName;\n\t\tif (!$useSceneConfig) {\n\t\t\tpanel -e -l $label $panelName;\n\t\t}\n\t}\n\n\n\t$panelName = `sceneUIReplacement -getNextPanel \"modelPanel\" (localizedPanelLabel(\"Side View\")) `;\n\tif (\"\" == $panelName) {\n\t\tif ($useSceneConfig) {\n\t\t\t$panelName = `modelPanel -unParent -l (localizedPanelLabel(\"Side View\")) -mbv $menusOkayInPanels `;\n\t\t\t$editorName = $panelName;\n modelEditor -e \n -camera \"side\" \n -useInteractiveMode 0\n -displayLights \"default\" \n -displayAppearance \"smoothShaded\" \n -activeOnly 0\n -ignorePanZoom 0\n -wireframeOnShaded 0\n -headsUpDisplay 1\n -holdOuts 1\n -selectionHiliteDisplay 1\n -useDefaultMaterial 0\n -bufferMode \"double\" \n -twoSidedLighting 0\n -backfaceCulling 0\n" - + " -xray 0\n -jointXray 0\n -activeComponentsXray 0\n -displayTextures 0\n -smoothWireframe 0\n -lineWidth 1\n -textureAnisotropic 0\n -textureHilight 1\n -textureSampling 2\n -textureDisplay \"modulate\" \n -textureMaxSize 32768\n -fogging 0\n -fogSource \"fragment\" \n -fogMode \"linear\" \n -fogStart 0\n -fogEnd 100\n -fogDensity 0.1\n -fogColor 0.5 0.5 0.5 1 \n -depthOfFieldPreview 1\n -maxConstantTransparency 1\n -rendererName \"vp2Renderer\" \n -objectFilterShowInHUD 1\n -isFiltered 0\n -colorResolution 256 256 \n -bumpResolution 512 512 \n -textureCompression 0\n -transparencyAlgorithm \"frontAndBackCull\" \n -transpInShadows 0\n -cullingOverride \"none\" \n" - + " -lowQualityLighting 0\n -maximumNumHardwareLights 1\n -occlusionCulling 0\n -shadingModel 0\n -useBaseRenderer 0\n -useReducedRenderer 0\n -smallObjectCulling 0\n -smallObjectThreshold -1 \n -interactiveDisableShadows 0\n -interactiveBackFaceCull 0\n -sortTransparent 1\n -nurbsCurves 1\n -nurbsSurfaces 1\n -polymeshes 1\n -subdivSurfaces 1\n -planes 1\n -lights 1\n -cameras 1\n -controlVertices 1\n -hulls 1\n -grid 1\n -imagePlane 1\n -joints 1\n -ikHandles 1\n -deformers 1\n -dynamics 1\n -particleInstancers 1\n -fluids 1\n -hairSystems 1\n -follicles 1\n -nCloths 1\n -nParticles 1\n" - + " -nRigids 1\n -dynamicConstraints 1\n -locators 1\n -manipulators 1\n -pluginShapes 1\n -dimensions 1\n -handles 1\n -pivots 1\n -textures 1\n -strokes 1\n -motionTrails 1\n -clipGhosts 1\n -greasePencils 1\n -shadows 0\n -captureSequenceNumber -1\n -width 1\n -height 1\n -sceneRenderFilter 0\n $editorName;\n modelEditor -e -viewSelected 0 $editorName;\n modelEditor -e \n -pluginObjects \"gpuCacheDisplayFilter\" 1 \n $editorName;\n\t\t}\n\t} else {\n\t\t$label = `panel -q -label $panelName`;\n\t\tmodelPanel -edit -l (localizedPanelLabel(\"Side View\")) -mbv $menusOkayInPanels $panelName;\n\t\t$editorName = $panelName;\n modelEditor -e \n -camera \"side\" \n -useInteractiveMode 0\n -displayLights \"default\" \n" - + " -displayAppearance \"smoothShaded\" \n -activeOnly 0\n -ignorePanZoom 0\n -wireframeOnShaded 0\n -headsUpDisplay 1\n -holdOuts 1\n -selectionHiliteDisplay 1\n -useDefaultMaterial 0\n -bufferMode \"double\" \n -twoSidedLighting 0\n -backfaceCulling 0\n -xray 0\n -jointXray 0\n -activeComponentsXray 0\n -displayTextures 0\n -smoothWireframe 0\n -lineWidth 1\n -textureAnisotropic 0\n -textureHilight 1\n -textureSampling 2\n -textureDisplay \"modulate\" \n -textureMaxSize 32768\n -fogging 0\n -fogSource \"fragment\" \n -fogMode \"linear\" \n -fogStart 0\n -fogEnd 100\n -fogDensity 0.1\n -fogColor 0.5 0.5 0.5 1 \n -depthOfFieldPreview 1\n -maxConstantTransparency 1\n -rendererName \"vp2Renderer\" \n -objectFilterShowInHUD 1\n" - + " -isFiltered 0\n -colorResolution 256 256 \n -bumpResolution 512 512 \n -textureCompression 0\n -transparencyAlgorithm \"frontAndBackCull\" \n -transpInShadows 0\n -cullingOverride \"none\" \n -lowQualityLighting 0\n -maximumNumHardwareLights 1\n -occlusionCulling 0\n -shadingModel 0\n -useBaseRenderer 0\n -useReducedRenderer 0\n -smallObjectCulling 0\n -smallObjectThreshold -1 \n -interactiveDisableShadows 0\n -interactiveBackFaceCull 0\n -sortTransparent 1\n -nurbsCurves 1\n -nurbsSurfaces 1\n -polymeshes 1\n -subdivSurfaces 1\n -planes 1\n -lights 1\n -cameras 1\n -controlVertices 1\n -hulls 1\n -grid 1\n -imagePlane 1\n -joints 1\n -ikHandles 1\n -deformers 1\n -dynamics 1\n -particleInstancers 1\n" - + " -fluids 1\n -hairSystems 1\n -follicles 1\n -nCloths 1\n -nParticles 1\n -nRigids 1\n -dynamicConstraints 1\n -locators 1\n -manipulators 1\n -pluginShapes 1\n -dimensions 1\n -handles 1\n -pivots 1\n -textures 1\n -strokes 1\n -motionTrails 1\n -clipGhosts 1\n -greasePencils 1\n -shadows 0\n -captureSequenceNumber -1\n -width 1\n -height 1\n -sceneRenderFilter 0\n $editorName;\n modelEditor -e -viewSelected 0 $editorName;\n modelEditor -e \n -pluginObjects \"gpuCacheDisplayFilter\" 1 \n $editorName;\n\t\tif (!$useSceneConfig) {\n\t\t\tpanel -e -l $label $panelName;\n\t\t}\n\t}\n\n\n\t$panelName = `sceneUIReplacement -getNextPanel \"modelPanel\" (localizedPanelLabel(\"Front View\")) `;\n\tif (\"\" == $panelName) {\n\t\tif ($useSceneConfig) {\n\t\t\t$panelName = `modelPanel -unParent -l (localizedPanelLabel(\"Front View\")) -mbv $menusOkayInPanels `;\n" - + "\t\t\t$editorName = $panelName;\n modelEditor -e \n -camera \"front\" \n -useInteractiveMode 0\n -displayLights \"default\" \n -displayAppearance \"smoothShaded\" \n -activeOnly 0\n -ignorePanZoom 0\n -wireframeOnShaded 0\n -headsUpDisplay 1\n -holdOuts 1\n -selectionHiliteDisplay 1\n -useDefaultMaterial 0\n -bufferMode \"double\" \n -twoSidedLighting 0\n -backfaceCulling 0\n -xray 0\n -jointXray 0\n -activeComponentsXray 0\n -displayTextures 0\n -smoothWireframe 0\n -lineWidth 1\n -textureAnisotropic 0\n -textureHilight 1\n -textureSampling 2\n -textureDisplay \"modulate\" \n -textureMaxSize 32768\n -fogging 0\n -fogSource \"fragment\" \n -fogMode \"linear\" \n" - + " -fogStart 0\n -fogEnd 100\n -fogDensity 0.1\n -fogColor 0.5 0.5 0.5 1 \n -depthOfFieldPreview 1\n -maxConstantTransparency 1\n -rendererName \"vp2Renderer\" \n -objectFilterShowInHUD 1\n -isFiltered 0\n -colorResolution 256 256 \n -bumpResolution 512 512 \n -textureCompression 0\n -transparencyAlgorithm \"frontAndBackCull\" \n -transpInShadows 0\n -cullingOverride \"none\" \n -lowQualityLighting 0\n -maximumNumHardwareLights 1\n -occlusionCulling 0\n -shadingModel 0\n -useBaseRenderer 0\n -useReducedRenderer 0\n -smallObjectCulling 0\n -smallObjectThreshold -1 \n -interactiveDisableShadows 0\n -interactiveBackFaceCull 0\n -sortTransparent 1\n -nurbsCurves 1\n" - + " -nurbsSurfaces 1\n -polymeshes 1\n -subdivSurfaces 1\n -planes 1\n -lights 1\n -cameras 1\n -controlVertices 1\n -hulls 1\n -grid 1\n -imagePlane 1\n -joints 1\n -ikHandles 1\n -deformers 1\n -dynamics 1\n -particleInstancers 1\n -fluids 1\n -hairSystems 1\n -follicles 1\n -nCloths 1\n -nParticles 1\n -nRigids 1\n -dynamicConstraints 1\n -locators 1\n -manipulators 1\n -pluginShapes 1\n -dimensions 1\n -handles 1\n -pivots 1\n -textures 1\n -strokes 1\n -motionTrails 1\n -clipGhosts 1\n -greasePencils 1\n -shadows 0\n -captureSequenceNumber -1\n" - + " -width 1\n -height 1\n -sceneRenderFilter 0\n $editorName;\n modelEditor -e -viewSelected 0 $editorName;\n modelEditor -e \n -pluginObjects \"gpuCacheDisplayFilter\" 1 \n $editorName;\n\t\t}\n\t} else {\n\t\t$label = `panel -q -label $panelName`;\n\t\tmodelPanel -edit -l (localizedPanelLabel(\"Front View\")) -mbv $menusOkayInPanels $panelName;\n\t\t$editorName = $panelName;\n modelEditor -e \n -camera \"front\" \n -useInteractiveMode 0\n -displayLights \"default\" \n -displayAppearance \"smoothShaded\" \n -activeOnly 0\n -ignorePanZoom 0\n -wireframeOnShaded 0\n -headsUpDisplay 1\n -holdOuts 1\n -selectionHiliteDisplay 1\n -useDefaultMaterial 0\n -bufferMode \"double\" \n -twoSidedLighting 0\n -backfaceCulling 0\n -xray 0\n -jointXray 0\n -activeComponentsXray 0\n" - + " -displayTextures 0\n -smoothWireframe 0\n -lineWidth 1\n -textureAnisotropic 0\n -textureHilight 1\n -textureSampling 2\n -textureDisplay \"modulate\" \n -textureMaxSize 32768\n -fogging 0\n -fogSource \"fragment\" \n -fogMode \"linear\" \n -fogStart 0\n -fogEnd 100\n -fogDensity 0.1\n -fogColor 0.5 0.5 0.5 1 \n -depthOfFieldPreview 1\n -maxConstantTransparency 1\n -rendererName \"vp2Renderer\" \n -objectFilterShowInHUD 1\n -isFiltered 0\n -colorResolution 256 256 \n -bumpResolution 512 512 \n -textureCompression 0\n -transparencyAlgorithm \"frontAndBackCull\" \n -transpInShadows 0\n -cullingOverride \"none\" \n -lowQualityLighting 0\n -maximumNumHardwareLights 1\n -occlusionCulling 0\n -shadingModel 0\n -useBaseRenderer 0\n" - + " -useReducedRenderer 0\n -smallObjectCulling 0\n -smallObjectThreshold -1 \n -interactiveDisableShadows 0\n -interactiveBackFaceCull 0\n -sortTransparent 1\n -nurbsCurves 1\n -nurbsSurfaces 1\n -polymeshes 1\n -subdivSurfaces 1\n -planes 1\n -lights 1\n -cameras 1\n -controlVertices 1\n -hulls 1\n -grid 1\n -imagePlane 1\n -joints 1\n -ikHandles 1\n -deformers 1\n -dynamics 1\n -particleInstancers 1\n -fluids 1\n -hairSystems 1\n -follicles 1\n -nCloths 1\n -nParticles 1\n -nRigids 1\n -dynamicConstraints 1\n -locators 1\n -manipulators 1\n -pluginShapes 1\n -dimensions 1\n -handles 1\n -pivots 1\n -textures 1\n -strokes 1\n -motionTrails 1\n" - + " -clipGhosts 1\n -greasePencils 1\n -shadows 0\n -captureSequenceNumber -1\n -width 1\n -height 1\n -sceneRenderFilter 0\n $editorName;\n modelEditor -e -viewSelected 0 $editorName;\n modelEditor -e \n -pluginObjects \"gpuCacheDisplayFilter\" 1 \n $editorName;\n\t\tif (!$useSceneConfig) {\n\t\t\tpanel -e -l $label $panelName;\n\t\t}\n\t}\n\n\n\t$panelName = `sceneUIReplacement -getNextPanel \"modelPanel\" (localizedPanelLabel(\"Persp View\")) `;\n\tif (\"\" == $panelName) {\n\t\tif ($useSceneConfig) {\n\t\t\t$panelName = `modelPanel -unParent -l (localizedPanelLabel(\"Persp View\")) -mbv $menusOkayInPanels `;\n\t\t\t$editorName = $panelName;\n modelEditor -e \n -camera \"persp\" \n -useInteractiveMode 0\n -displayLights \"default\" \n -displayAppearance \"smoothShaded\" \n -activeOnly 0\n -ignorePanZoom 0\n -wireframeOnShaded 0\n -headsUpDisplay 1\n" - + " -holdOuts 1\n -selectionHiliteDisplay 1\n -useDefaultMaterial 0\n -bufferMode \"double\" \n -twoSidedLighting 0\n -backfaceCulling 0\n -xray 0\n -jointXray 0\n -activeComponentsXray 0\n -displayTextures 0\n -smoothWireframe 0\n -lineWidth 1\n -textureAnisotropic 0\n -textureHilight 1\n -textureSampling 2\n -textureDisplay \"modulate\" \n -textureMaxSize 32768\n -fogging 0\n -fogSource \"fragment\" \n -fogMode \"linear\" \n -fogStart 0\n -fogEnd 100\n -fogDensity 0.1\n -fogColor 0.5 0.5 0.5 1 \n -depthOfFieldPreview 1\n -maxConstantTransparency 1\n -rendererName \"vp2Renderer\" \n -objectFilterShowInHUD 1\n -isFiltered 0\n" - + " -colorResolution 256 256 \n -bumpResolution 512 512 \n -textureCompression 0\n -transparencyAlgorithm \"frontAndBackCull\" \n -transpInShadows 0\n -cullingOverride \"none\" \n -lowQualityLighting 0\n -maximumNumHardwareLights 1\n -occlusionCulling 0\n -shadingModel 0\n -useBaseRenderer 0\n -useReducedRenderer 0\n -smallObjectCulling 0\n -smallObjectThreshold -1 \n -interactiveDisableShadows 0\n -interactiveBackFaceCull 0\n -sortTransparent 1\n -nurbsCurves 1\n -nurbsSurfaces 1\n -polymeshes 1\n -subdivSurfaces 1\n -planes 1\n -lights 1\n -cameras 1\n -controlVertices 1\n -hulls 1\n -grid 1\n -imagePlane 1\n -joints 1\n" - + " -ikHandles 1\n -deformers 1\n -dynamics 1\n -particleInstancers 1\n -fluids 1\n -hairSystems 1\n -follicles 1\n -nCloths 1\n -nParticles 1\n -nRigids 1\n -dynamicConstraints 1\n -locators 1\n -manipulators 1\n -pluginShapes 1\n -dimensions 1\n -handles 1\n -pivots 1\n -textures 1\n -strokes 1\n -motionTrails 1\n -clipGhosts 1\n -greasePencils 1\n -shadows 0\n -captureSequenceNumber -1\n -width 1168\n -height 740\n -sceneRenderFilter 0\n $editorName;\n modelEditor -e -viewSelected 0 $editorName;\n modelEditor -e \n -pluginObjects \"gpuCacheDisplayFilter\" 1 \n $editorName;\n\t\t}\n\t} else {\n" - + "\t\t$label = `panel -q -label $panelName`;\n\t\tmodelPanel -edit -l (localizedPanelLabel(\"Persp View\")) -mbv $menusOkayInPanels $panelName;\n\t\t$editorName = $panelName;\n modelEditor -e \n -camera \"persp\" \n -useInteractiveMode 0\n -displayLights \"default\" \n -displayAppearance \"smoothShaded\" \n -activeOnly 0\n -ignorePanZoom 0\n -wireframeOnShaded 0\n -headsUpDisplay 1\n -holdOuts 1\n -selectionHiliteDisplay 1\n -useDefaultMaterial 0\n -bufferMode \"double\" \n -twoSidedLighting 0\n -backfaceCulling 0\n -xray 0\n -jointXray 0\n -activeComponentsXray 0\n -displayTextures 0\n -smoothWireframe 0\n -lineWidth 1\n -textureAnisotropic 0\n -textureHilight 1\n -textureSampling 2\n -textureDisplay \"modulate\" \n -textureMaxSize 32768\n -fogging 0\n -fogSource \"fragment\" \n" - + " -fogMode \"linear\" \n -fogStart 0\n -fogEnd 100\n -fogDensity 0.1\n -fogColor 0.5 0.5 0.5 1 \n -depthOfFieldPreview 1\n -maxConstantTransparency 1\n -rendererName \"vp2Renderer\" \n -objectFilterShowInHUD 1\n -isFiltered 0\n -colorResolution 256 256 \n -bumpResolution 512 512 \n -textureCompression 0\n -transparencyAlgorithm \"frontAndBackCull\" \n -transpInShadows 0\n -cullingOverride \"none\" \n -lowQualityLighting 0\n -maximumNumHardwareLights 1\n -occlusionCulling 0\n -shadingModel 0\n -useBaseRenderer 0\n -useReducedRenderer 0\n -smallObjectCulling 0\n -smallObjectThreshold -1 \n -interactiveDisableShadows 0\n -interactiveBackFaceCull 0\n -sortTransparent 1\n -nurbsCurves 1\n -nurbsSurfaces 1\n -polymeshes 1\n -subdivSurfaces 1\n" - + " -planes 1\n -lights 1\n -cameras 1\n -controlVertices 1\n -hulls 1\n -grid 1\n -imagePlane 1\n -joints 1\n -ikHandles 1\n -deformers 1\n -dynamics 1\n -particleInstancers 1\n -fluids 1\n -hairSystems 1\n -follicles 1\n -nCloths 1\n -nParticles 1\n -nRigids 1\n -dynamicConstraints 1\n -locators 1\n -manipulators 1\n -pluginShapes 1\n -dimensions 1\n -handles 1\n -pivots 1\n -textures 1\n -strokes 1\n -motionTrails 1\n -clipGhosts 1\n -greasePencils 1\n -shadows 0\n -captureSequenceNumber -1\n -width 1168\n -height 740\n -sceneRenderFilter 0\n $editorName;\n modelEditor -e -viewSelected 0 $editorName;\n modelEditor -e \n -pluginObjects \"gpuCacheDisplayFilter\" 1 \n" - + " $editorName;\n\t\tif (!$useSceneConfig) {\n\t\t\tpanel -e -l $label $panelName;\n\t\t}\n\t}\n\n\n\t$panelName = `sceneUIReplacement -getNextPanel \"outlinerPanel\" (localizedPanelLabel(\"Outliner\")) `;\n\tif (\"\" == $panelName) {\n\t\tif ($useSceneConfig) {\n\t\t\t$panelName = `outlinerPanel -unParent -l (localizedPanelLabel(\"Outliner\")) -mbv $menusOkayInPanels `;\n\t\t\t$editorName = $panelName;\n outlinerEditor -e \n -showShapes 0\n -showAssignedMaterials 0\n -showReferenceNodes 1\n -showReferenceMembers 1\n -showAttributes 0\n -showConnected 0\n -showAnimCurvesOnly 0\n -showMuteInfo 0\n -organizeByLayer 1\n -showAnimLayerWeight 1\n -autoExpandLayers 1\n -autoExpand 0\n -showDagOnly 1\n -showAssets 1\n -showContainedOnly 1\n -showPublishedAsConnected 0\n -showContainerContents 1\n -ignoreDagHierarchy 0\n" - + " -expandConnections 0\n -showUpstreamCurves 1\n -showUnitlessCurves 1\n -showCompounds 1\n -showLeafs 1\n -showNumericAttrsOnly 0\n -highlightActive 1\n -autoSelectNewObjects 0\n -doNotSelectNewObjects 0\n -dropIsParent 1\n -transmitFilters 0\n -setFilter \"defaultSetFilter\" \n -showSetMembers 1\n -allowMultiSelection 1\n -alwaysToggleSelect 0\n -directSelect 0\n -isSet 0\n -isSetMember 0\n -displayMode \"DAG\" \n -expandObjects 0\n -setsIgnoreFilters 1\n -containersIgnoreFilters 0\n -editAttrName 0\n -showAttrValues 0\n -highlightSecondary 0\n -showUVAttrsOnly 0\n -showTextureNodesOnly 0\n -attrAlphaOrder \"default\" \n -animLayerFilterOptions \"allAffecting\" \n" - + " -sortOrder \"none\" \n -longNames 0\n -niceNames 1\n -showNamespace 1\n -showPinIcons 0\n -mapMotionTrails 0\n -ignoreHiddenAttribute 0\n -ignoreOutlinerColor 0\n -renderFilterVisible 0\n -renderFilterIndex 0\n -selectionOrder \"chronological\" \n -expandAttribute 0\n $editorName;\n\t\t}\n\t} else {\n\t\t$label = `panel -q -label $panelName`;\n\t\toutlinerPanel -edit -l (localizedPanelLabel(\"Outliner\")) -mbv $menusOkayInPanels $panelName;\n\t\t$editorName = $panelName;\n outlinerEditor -e \n -showShapes 0\n -showAssignedMaterials 0\n -showReferenceNodes 1\n -showReferenceMembers 1\n -showAttributes 0\n -showConnected 0\n -showAnimCurvesOnly 0\n -showMuteInfo 0\n -organizeByLayer 1\n -showAnimLayerWeight 1\n -autoExpandLayers 1\n -autoExpand 0\n" - + " -showDagOnly 1\n -showAssets 1\n -showContainedOnly 1\n -showPublishedAsConnected 0\n -showContainerContents 1\n -ignoreDagHierarchy 0\n -expandConnections 0\n -showUpstreamCurves 1\n -showUnitlessCurves 1\n -showCompounds 1\n -showLeafs 1\n -showNumericAttrsOnly 0\n -highlightActive 1\n -autoSelectNewObjects 0\n -doNotSelectNewObjects 0\n -dropIsParent 1\n -transmitFilters 0\n -setFilter \"defaultSetFilter\" \n -showSetMembers 1\n -allowMultiSelection 1\n -alwaysToggleSelect 0\n -directSelect 0\n -isSet 0\n -isSetMember 0\n -displayMode \"DAG\" \n -expandObjects 0\n -setsIgnoreFilters 1\n -containersIgnoreFilters 0\n -editAttrName 0\n -showAttrValues 0\n -highlightSecondary 0\n -showUVAttrsOnly 0\n" - + " -showTextureNodesOnly 0\n -attrAlphaOrder \"default\" \n -animLayerFilterOptions \"allAffecting\" \n -sortOrder \"none\" \n -longNames 0\n -niceNames 1\n -showNamespace 1\n -showPinIcons 0\n -mapMotionTrails 0\n -ignoreHiddenAttribute 0\n -ignoreOutlinerColor 0\n -renderFilterVisible 0\n -renderFilterIndex 0\n -selectionOrder \"chronological\" \n -expandAttribute 0\n $editorName;\n\t\tif (!$useSceneConfig) {\n\t\t\tpanel -e -l $label $panelName;\n\t\t}\n\t}\n\n\n\t$panelName = `sceneUIReplacement -getNextScriptedPanel \"graphEditor\" (localizedPanelLabel(\"Graph Editor\")) `;\n\tif (\"\" == $panelName) {\n\t\tif ($useSceneConfig) {\n\t\t\t$panelName = `scriptedPanel -unParent -type \"graphEditor\" -l (localizedPanelLabel(\"Graph Editor\")) -mbv $menusOkayInPanels `;\n\n\t\t\t$editorName = ($panelName+\"OutlineEd\");\n outlinerEditor -e \n -showShapes 1\n -showAssignedMaterials 0\n" - + " -showReferenceNodes 0\n -showReferenceMembers 0\n -showAttributes 1\n -showConnected 1\n -showAnimCurvesOnly 1\n -showMuteInfo 0\n -organizeByLayer 1\n -showAnimLayerWeight 1\n -autoExpandLayers 1\n -autoExpand 1\n -showDagOnly 0\n -showAssets 1\n -showContainedOnly 0\n -showPublishedAsConnected 0\n -showContainerContents 0\n -ignoreDagHierarchy 0\n -expandConnections 1\n -showUpstreamCurves 1\n -showUnitlessCurves 1\n -showCompounds 0\n -showLeafs 1\n -showNumericAttrsOnly 1\n -highlightActive 0\n -autoSelectNewObjects 1\n -doNotSelectNewObjects 0\n -dropIsParent 1\n -transmitFilters 1\n -setFilter \"0\" \n -showSetMembers 0\n" - + " -allowMultiSelection 1\n -alwaysToggleSelect 0\n -directSelect 0\n -displayMode \"DAG\" \n -expandObjects 0\n -setsIgnoreFilters 1\n -containersIgnoreFilters 0\n -editAttrName 0\n -showAttrValues 0\n -highlightSecondary 0\n -showUVAttrsOnly 0\n -showTextureNodesOnly 0\n -attrAlphaOrder \"default\" \n -animLayerFilterOptions \"allAffecting\" \n -sortOrder \"none\" \n -longNames 0\n -niceNames 1\n -showNamespace 1\n -showPinIcons 1\n -mapMotionTrails 1\n -ignoreHiddenAttribute 0\n -ignoreOutlinerColor 0\n -renderFilterVisible 0\n $editorName;\n\n\t\t\t$editorName = ($panelName+\"GraphEd\");\n animCurveEditor -e \n -displayKeys 1\n -displayTangents 0\n -displayActiveKeys 0\n" - + " -displayActiveKeyTangents 1\n -displayInfinities 0\n -displayValues 0\n -autoFit 0\n -snapTime \"integer\" \n -snapValue \"none\" \n -showResults \"off\" \n -showBufferCurves \"off\" \n -smoothness \"fine\" \n -resultSamples 1\n -resultScreenSamples 0\n -resultUpdate \"delayed\" \n -showUpstreamCurves 1\n -showCurveNames 0\n -showActiveCurveNames 0\n -stackedCurves 0\n -stackedCurvesMin -1\n -stackedCurvesMax 1\n -stackedCurvesSpace 0.2\n -displayNormalized 0\n -preSelectionHighlight 0\n -constrainDrag 0\n -classicMode 1\n $editorName;\n\t\t}\n\t} else {\n\t\t$label = `panel -q -label $panelName`;\n\t\tscriptedPanel -edit -l (localizedPanelLabel(\"Graph Editor\")) -mbv $menusOkayInPanels $panelName;\n\n\t\t\t$editorName = ($panelName+\"OutlineEd\");\n" - + " outlinerEditor -e \n -showShapes 1\n -showAssignedMaterials 0\n -showReferenceNodes 0\n -showReferenceMembers 0\n -showAttributes 1\n -showConnected 1\n -showAnimCurvesOnly 1\n -showMuteInfo 0\n -organizeByLayer 1\n -showAnimLayerWeight 1\n -autoExpandLayers 1\n -autoExpand 1\n -showDagOnly 0\n -showAssets 1\n -showContainedOnly 0\n -showPublishedAsConnected 0\n -showContainerContents 0\n -ignoreDagHierarchy 0\n -expandConnections 1\n -showUpstreamCurves 1\n -showUnitlessCurves 1\n -showCompounds 0\n -showLeafs 1\n -showNumericAttrsOnly 1\n -highlightActive 0\n -autoSelectNewObjects 1\n -doNotSelectNewObjects 0\n -dropIsParent 1\n" - + " -transmitFilters 1\n -setFilter \"0\" \n -showSetMembers 0\n -allowMultiSelection 1\n -alwaysToggleSelect 0\n -directSelect 0\n -displayMode \"DAG\" \n -expandObjects 0\n -setsIgnoreFilters 1\n -containersIgnoreFilters 0\n -editAttrName 0\n -showAttrValues 0\n -highlightSecondary 0\n -showUVAttrsOnly 0\n -showTextureNodesOnly 0\n -attrAlphaOrder \"default\" \n -animLayerFilterOptions \"allAffecting\" \n -sortOrder \"none\" \n -longNames 0\n -niceNames 1\n -showNamespace 1\n -showPinIcons 1\n -mapMotionTrails 1\n -ignoreHiddenAttribute 0\n -ignoreOutlinerColor 0\n -renderFilterVisible 0\n $editorName;\n\n\t\t\t$editorName = ($panelName+\"GraphEd\");\n animCurveEditor -e \n" - + " -displayKeys 1\n -displayTangents 0\n -displayActiveKeys 0\n -displayActiveKeyTangents 1\n -displayInfinities 0\n -displayValues 0\n -autoFit 0\n -snapTime \"integer\" \n -snapValue \"none\" \n -showResults \"off\" \n -showBufferCurves \"off\" \n -smoothness \"fine\" \n -resultSamples 1\n -resultScreenSamples 0\n -resultUpdate \"delayed\" \n -showUpstreamCurves 1\n -showCurveNames 0\n -showActiveCurveNames 0\n -stackedCurves 0\n -stackedCurvesMin -1\n -stackedCurvesMax 1\n -stackedCurvesSpace 0.2\n -displayNormalized 0\n -preSelectionHighlight 0\n -constrainDrag 0\n -classicMode 1\n $editorName;\n\t\tif (!$useSceneConfig) {\n\t\t\tpanel -e -l $label $panelName;\n" - + "\t\t}\n\t}\n\n\n\t$panelName = `sceneUIReplacement -getNextScriptedPanel \"dopeSheetPanel\" (localizedPanelLabel(\"Dope Sheet\")) `;\n\tif (\"\" == $panelName) {\n\t\tif ($useSceneConfig) {\n\t\t\t$panelName = `scriptedPanel -unParent -type \"dopeSheetPanel\" -l (localizedPanelLabel(\"Dope Sheet\")) -mbv $menusOkayInPanels `;\n\n\t\t\t$editorName = ($panelName+\"OutlineEd\");\n outlinerEditor -e \n -showShapes 1\n -showAssignedMaterials 0\n -showReferenceNodes 0\n -showReferenceMembers 0\n -showAttributes 1\n -showConnected 1\n -showAnimCurvesOnly 1\n -showMuteInfo 0\n -organizeByLayer 1\n -showAnimLayerWeight 1\n -autoExpandLayers 1\n -autoExpand 0\n -showDagOnly 0\n -showAssets 1\n -showContainedOnly 0\n -showPublishedAsConnected 0\n -showContainerContents 0\n -ignoreDagHierarchy 0\n -expandConnections 1\n" - + " -showUpstreamCurves 1\n -showUnitlessCurves 0\n -showCompounds 1\n -showLeafs 1\n -showNumericAttrsOnly 1\n -highlightActive 0\n -autoSelectNewObjects 0\n -doNotSelectNewObjects 1\n -dropIsParent 1\n -transmitFilters 0\n -setFilter \"0\" \n -showSetMembers 0\n -allowMultiSelection 1\n -alwaysToggleSelect 0\n -directSelect 0\n -displayMode \"DAG\" \n -expandObjects 0\n -setsIgnoreFilters 1\n -containersIgnoreFilters 0\n -editAttrName 0\n -showAttrValues 0\n -highlightSecondary 0\n -showUVAttrsOnly 0\n -showTextureNodesOnly 0\n -attrAlphaOrder \"default\" \n -animLayerFilterOptions \"allAffecting\" \n -sortOrder \"none\" \n -longNames 0\n" - + " -niceNames 1\n -showNamespace 1\n -showPinIcons 0\n -mapMotionTrails 1\n -ignoreHiddenAttribute 0\n -ignoreOutlinerColor 0\n -renderFilterVisible 0\n $editorName;\n\n\t\t\t$editorName = ($panelName+\"DopeSheetEd\");\n dopeSheetEditor -e \n -displayKeys 1\n -displayTangents 0\n -displayActiveKeys 0\n -displayActiveKeyTangents 0\n -displayInfinities 0\n -displayValues 0\n -autoFit 0\n -snapTime \"integer\" \n -snapValue \"none\" \n -outliner \"dopeSheetPanel1OutlineEd\" \n -showSummary 1\n -showScene 0\n -hierarchyBelow 0\n -showTicks 1\n -selectionWindow 0 0 0 0 \n $editorName;\n\t\t}\n\t} else {\n\t\t$label = `panel -q -label $panelName`;\n\t\tscriptedPanel -edit -l (localizedPanelLabel(\"Dope Sheet\")) -mbv $menusOkayInPanels $panelName;\n" - + "\n\t\t\t$editorName = ($panelName+\"OutlineEd\");\n outlinerEditor -e \n -showShapes 1\n -showAssignedMaterials 0\n -showReferenceNodes 0\n -showReferenceMembers 0\n -showAttributes 1\n -showConnected 1\n -showAnimCurvesOnly 1\n -showMuteInfo 0\n -organizeByLayer 1\n -showAnimLayerWeight 1\n -autoExpandLayers 1\n -autoExpand 0\n -showDagOnly 0\n -showAssets 1\n -showContainedOnly 0\n -showPublishedAsConnected 0\n -showContainerContents 0\n -ignoreDagHierarchy 0\n -expandConnections 1\n -showUpstreamCurves 1\n -showUnitlessCurves 0\n -showCompounds 1\n -showLeafs 1\n -showNumericAttrsOnly 1\n -highlightActive 0\n -autoSelectNewObjects 0\n -doNotSelectNewObjects 1\n" - + " -dropIsParent 1\n -transmitFilters 0\n -setFilter \"0\" \n -showSetMembers 0\n -allowMultiSelection 1\n -alwaysToggleSelect 0\n -directSelect 0\n -displayMode \"DAG\" \n -expandObjects 0\n -setsIgnoreFilters 1\n -containersIgnoreFilters 0\n -editAttrName 0\n -showAttrValues 0\n -highlightSecondary 0\n -showUVAttrsOnly 0\n -showTextureNodesOnly 0\n -attrAlphaOrder \"default\" \n -animLayerFilterOptions \"allAffecting\" \n -sortOrder \"none\" \n -longNames 0\n -niceNames 1\n -showNamespace 1\n -showPinIcons 0\n -mapMotionTrails 1\n -ignoreHiddenAttribute 0\n -ignoreOutlinerColor 0\n -renderFilterVisible 0\n $editorName;\n\n\t\t\t$editorName = ($panelName+\"DopeSheetEd\");\n" - + " dopeSheetEditor -e \n -displayKeys 1\n -displayTangents 0\n -displayActiveKeys 0\n -displayActiveKeyTangents 0\n -displayInfinities 0\n -displayValues 0\n -autoFit 0\n -snapTime \"integer\" \n -snapValue \"none\" \n -outliner \"dopeSheetPanel1OutlineEd\" \n -showSummary 1\n -showScene 0\n -hierarchyBelow 0\n -showTicks 1\n -selectionWindow 0 0 0 0 \n $editorName;\n\t\tif (!$useSceneConfig) {\n\t\t\tpanel -e -l $label $panelName;\n\t\t}\n\t}\n\n\n\t$panelName = `sceneUIReplacement -getNextScriptedPanel \"clipEditorPanel\" (localizedPanelLabel(\"Trax Editor\")) `;\n\tif (\"\" == $panelName) {\n\t\tif ($useSceneConfig) {\n\t\t\t$panelName = `scriptedPanel -unParent -type \"clipEditorPanel\" -l (localizedPanelLabel(\"Trax Editor\")) -mbv $menusOkayInPanels `;\n\n\t\t\t$editorName = clipEditorNameFromPanel($panelName);\n clipEditor -e \n" - + " -displayKeys 0\n -displayTangents 0\n -displayActiveKeys 0\n -displayActiveKeyTangents 0\n -displayInfinities 0\n -displayValues 0\n -autoFit 0\n -snapTime \"none\" \n -snapValue \"none\" \n -initialized 0\n -manageSequencer 0 \n $editorName;\n\t\t}\n\t} else {\n\t\t$label = `panel -q -label $panelName`;\n\t\tscriptedPanel -edit -l (localizedPanelLabel(\"Trax Editor\")) -mbv $menusOkayInPanels $panelName;\n\n\t\t\t$editorName = clipEditorNameFromPanel($panelName);\n clipEditor -e \n -displayKeys 0\n -displayTangents 0\n -displayActiveKeys 0\n -displayActiveKeyTangents 0\n -displayInfinities 0\n -displayValues 0\n -autoFit 0\n -snapTime \"none\" \n -snapValue \"none\" \n -initialized 0\n -manageSequencer 0 \n" - + " $editorName;\n\t\tif (!$useSceneConfig) {\n\t\t\tpanel -e -l $label $panelName;\n\t\t}\n\t}\n\n\n\t$panelName = `sceneUIReplacement -getNextScriptedPanel \"sequenceEditorPanel\" (localizedPanelLabel(\"Camera Sequencer\")) `;\n\tif (\"\" == $panelName) {\n\t\tif ($useSceneConfig) {\n\t\t\t$panelName = `scriptedPanel -unParent -type \"sequenceEditorPanel\" -l (localizedPanelLabel(\"Camera Sequencer\")) -mbv $menusOkayInPanels `;\n\n\t\t\t$editorName = sequenceEditorNameFromPanel($panelName);\n clipEditor -e \n -displayKeys 0\n -displayTangents 0\n -displayActiveKeys 0\n -displayActiveKeyTangents 0\n -displayInfinities 0\n -displayValues 0\n -autoFit 0\n -snapTime \"none\" \n -snapValue \"none\" \n -initialized 0\n -manageSequencer 1 \n $editorName;\n\t\t}\n\t} else {\n\t\t$label = `panel -q -label $panelName`;\n\t\tscriptedPanel -edit -l (localizedPanelLabel(\"Camera Sequencer\")) -mbv $menusOkayInPanels $panelName;\n" - + "\n\t\t\t$editorName = sequenceEditorNameFromPanel($panelName);\n clipEditor -e \n -displayKeys 0\n -displayTangents 0\n -displayActiveKeys 0\n -displayActiveKeyTangents 0\n -displayInfinities 0\n -displayValues 0\n -autoFit 0\n -snapTime \"none\" \n -snapValue \"none\" \n -initialized 0\n -manageSequencer 1 \n $editorName;\n\t\tif (!$useSceneConfig) {\n\t\t\tpanel -e -l $label $panelName;\n\t\t}\n\t}\n\n\n\t$panelName = `sceneUIReplacement -getNextScriptedPanel \"hyperGraphPanel\" (localizedPanelLabel(\"Hypergraph Hierarchy\")) `;\n\tif (\"\" == $panelName) {\n\t\tif ($useSceneConfig) {\n\t\t\t$panelName = `scriptedPanel -unParent -type \"hyperGraphPanel\" -l (localizedPanelLabel(\"Hypergraph Hierarchy\")) -mbv $menusOkayInPanels `;\n\n\t\t\t$editorName = ($panelName+\"HyperGraphEd\");\n hyperGraph -e \n -graphLayoutStyle \"hierarchicalLayout\" \n -orientation \"horiz\" \n" - + " -mergeConnections 0\n -zoom 1\n -animateTransition 0\n -showRelationships 1\n -showShapes 0\n -showDeformers 0\n -showExpressions 0\n -showConstraints 0\n -showConnectionFromSelected 0\n -showConnectionToSelected 0\n -showConstraintLabels 0\n -showUnderworld 0\n -showInvisible 0\n -transitionFrames 1\n -opaqueContainers 0\n -freeform 0\n -imagePosition 0 0 \n -imageScale 1\n -imageEnabled 0\n -graphType \"DAG\" \n -heatMapDisplay 0\n -updateSelection 1\n -updateNodeAdded 1\n -useDrawOverrideColor 0\n -limitGraphTraversal -1\n -range 0 0 \n -iconSize \"smallIcons\" \n -showCachedConnections 0\n $editorName;\n\t\t}\n\t} else {\n" - + "\t\t$label = `panel -q -label $panelName`;\n\t\tscriptedPanel -edit -l (localizedPanelLabel(\"Hypergraph Hierarchy\")) -mbv $menusOkayInPanels $panelName;\n\n\t\t\t$editorName = ($panelName+\"HyperGraphEd\");\n hyperGraph -e \n -graphLayoutStyle \"hierarchicalLayout\" \n -orientation \"horiz\" \n -mergeConnections 0\n -zoom 1\n -animateTransition 0\n -showRelationships 1\n -showShapes 0\n -showDeformers 0\n -showExpressions 0\n -showConstraints 0\n -showConnectionFromSelected 0\n -showConnectionToSelected 0\n -showConstraintLabels 0\n -showUnderworld 0\n -showInvisible 0\n -transitionFrames 1\n -opaqueContainers 0\n -freeform 0\n -imagePosition 0 0 \n -imageScale 1\n -imageEnabled 0\n -graphType \"DAG\" \n -heatMapDisplay 0\n" - + " -updateSelection 1\n -updateNodeAdded 1\n -useDrawOverrideColor 0\n -limitGraphTraversal -1\n -range 0 0 \n -iconSize \"smallIcons\" \n -showCachedConnections 0\n $editorName;\n\t\tif (!$useSceneConfig) {\n\t\t\tpanel -e -l $label $panelName;\n\t\t}\n\t}\n\n\n\t$panelName = `sceneUIReplacement -getNextScriptedPanel \"visorPanel\" (localizedPanelLabel(\"Visor\")) `;\n\tif (\"\" == $panelName) {\n\t\tif ($useSceneConfig) {\n\t\t\t$panelName = `scriptedPanel -unParent -type \"visorPanel\" -l (localizedPanelLabel(\"Visor\")) -mbv $menusOkayInPanels `;\n\t\t}\n\t} else {\n\t\t$label = `panel -q -label $panelName`;\n\t\tscriptedPanel -edit -l (localizedPanelLabel(\"Visor\")) -mbv $menusOkayInPanels $panelName;\n\t\tif (!$useSceneConfig) {\n\t\t\tpanel -e -l $label $panelName;\n\t\t}\n\t}\n\n\n\t$panelName = `sceneUIReplacement -getNextScriptedPanel \"createNodePanel\" (localizedPanelLabel(\"Create Node\")) `;\n\tif (\"\" == $panelName) {\n\t\tif ($useSceneConfig) {\n\t\t\t$panelName = `scriptedPanel -unParent -type \"createNodePanel\" -l (localizedPanelLabel(\"Create Node\")) -mbv $menusOkayInPanels `;\n" - + "\t\t}\n\t} else {\n\t\t$label = `panel -q -label $panelName`;\n\t\tscriptedPanel -edit -l (localizedPanelLabel(\"Create Node\")) -mbv $menusOkayInPanels $panelName;\n\t\tif (!$useSceneConfig) {\n\t\t\tpanel -e -l $label $panelName;\n\t\t}\n\t}\n\n\n\t$panelName = `sceneUIReplacement -getNextScriptedPanel \"polyTexturePlacementPanel\" (localizedPanelLabel(\"UV Editor\")) `;\n\tif (\"\" == $panelName) {\n\t\tif ($useSceneConfig) {\n\t\t\t$panelName = `scriptedPanel -unParent -type \"polyTexturePlacementPanel\" -l (localizedPanelLabel(\"UV Editor\")) -mbv $menusOkayInPanels `;\n\t\t}\n\t} else {\n\t\t$label = `panel -q -label $panelName`;\n\t\tscriptedPanel -edit -l (localizedPanelLabel(\"UV Editor\")) -mbv $menusOkayInPanels $panelName;\n\t\tif (!$useSceneConfig) {\n\t\t\tpanel -e -l $label $panelName;\n\t\t}\n\t}\n\n\n\t$panelName = `sceneUIReplacement -getNextScriptedPanel \"renderWindowPanel\" (localizedPanelLabel(\"Render View\")) `;\n\tif (\"\" == $panelName) {\n\t\tif ($useSceneConfig) {\n\t\t\t$panelName = `scriptedPanel -unParent -type \"renderWindowPanel\" -l (localizedPanelLabel(\"Render View\")) -mbv $menusOkayInPanels `;\n" - + "\t\t}\n\t} else {\n\t\t$label = `panel -q -label $panelName`;\n\t\tscriptedPanel -edit -l (localizedPanelLabel(\"Render View\")) -mbv $menusOkayInPanels $panelName;\n\t\tif (!$useSceneConfig) {\n\t\t\tpanel -e -l $label $panelName;\n\t\t}\n\t}\n\n\n\t$panelName = `sceneUIReplacement -getNextPanel \"shapePanel\" (localizedPanelLabel(\"Shape Editor\")) `;\n\tif (\"\" == $panelName) {\n\t\tif ($useSceneConfig) {\n\t\t\tshapePanel -unParent -l (localizedPanelLabel(\"Shape Editor\")) -mbv $menusOkayInPanels ;\n\t\t}\n\t} else {\n\t\t$label = `panel -q -label $panelName`;\n\t\tshapePanel -edit -l (localizedPanelLabel(\"Shape Editor\")) -mbv $menusOkayInPanels $panelName;\n\t\tif (!$useSceneConfig) {\n\t\t\tpanel -e -l $label $panelName;\n\t\t}\n\t}\n\n\n\t$panelName = `sceneUIReplacement -getNextPanel \"posePanel\" (localizedPanelLabel(\"Pose Editor\")) `;\n\tif (\"\" == $panelName) {\n\t\tif ($useSceneConfig) {\n\t\t\tposePanel -unParent -l (localizedPanelLabel(\"Pose Editor\")) -mbv $menusOkayInPanels ;\n\t\t}\n\t} else {\n\t\t$label = `panel -q -label $panelName`;\n\t\tposePanel -edit -l (localizedPanelLabel(\"Pose Editor\")) -mbv $menusOkayInPanels $panelName;\n" - + "\t\tif (!$useSceneConfig) {\n\t\t\tpanel -e -l $label $panelName;\n\t\t}\n\t}\n\n\n\t$panelName = `sceneUIReplacement -getNextScriptedPanel \"dynRelEdPanel\" (localizedPanelLabel(\"Dynamic Relationships\")) `;\n\tif (\"\" == $panelName) {\n\t\tif ($useSceneConfig) {\n\t\t\t$panelName = `scriptedPanel -unParent -type \"dynRelEdPanel\" -l (localizedPanelLabel(\"Dynamic Relationships\")) -mbv $menusOkayInPanels `;\n\t\t}\n\t} else {\n\t\t$label = `panel -q -label $panelName`;\n\t\tscriptedPanel -edit -l (localizedPanelLabel(\"Dynamic Relationships\")) -mbv $menusOkayInPanels $panelName;\n\t\tif (!$useSceneConfig) {\n\t\t\tpanel -e -l $label $panelName;\n\t\t}\n\t}\n\n\n\t$panelName = `sceneUIReplacement -getNextScriptedPanel \"relationshipPanel\" (localizedPanelLabel(\"Relationship Editor\")) `;\n\tif (\"\" == $panelName) {\n\t\tif ($useSceneConfig) {\n\t\t\t$panelName = `scriptedPanel -unParent -type \"relationshipPanel\" -l (localizedPanelLabel(\"Relationship Editor\")) -mbv $menusOkayInPanels `;\n\t\t}\n\t} else {\n\t\t$label = `panel -q -label $panelName`;\n\t\tscriptedPanel -edit -l (localizedPanelLabel(\"Relationship Editor\")) -mbv $menusOkayInPanels $panelName;\n" - + "\t\tif (!$useSceneConfig) {\n\t\t\tpanel -e -l $label $panelName;\n\t\t}\n\t}\n\n\n\t$panelName = `sceneUIReplacement -getNextScriptedPanel \"referenceEditorPanel\" (localizedPanelLabel(\"Reference Editor\")) `;\n\tif (\"\" == $panelName) {\n\t\tif ($useSceneConfig) {\n\t\t\t$panelName = `scriptedPanel -unParent -type \"referenceEditorPanel\" -l (localizedPanelLabel(\"Reference Editor\")) -mbv $menusOkayInPanels `;\n\t\t}\n\t} else {\n\t\t$label = `panel -q -label $panelName`;\n\t\tscriptedPanel -edit -l (localizedPanelLabel(\"Reference Editor\")) -mbv $menusOkayInPanels $panelName;\n\t\tif (!$useSceneConfig) {\n\t\t\tpanel -e -l $label $panelName;\n\t\t}\n\t}\n\n\n\t$panelName = `sceneUIReplacement -getNextScriptedPanel \"componentEditorPanel\" (localizedPanelLabel(\"Component Editor\")) `;\n\tif (\"\" == $panelName) {\n\t\tif ($useSceneConfig) {\n\t\t\t$panelName = `scriptedPanel -unParent -type \"componentEditorPanel\" -l (localizedPanelLabel(\"Component Editor\")) -mbv $menusOkayInPanels `;\n\t\t}\n\t} else {\n\t\t$label = `panel -q -label $panelName`;\n\t\tscriptedPanel -edit -l (localizedPanelLabel(\"Component Editor\")) -mbv $menusOkayInPanels $panelName;\n" - + "\t\tif (!$useSceneConfig) {\n\t\t\tpanel -e -l $label $panelName;\n\t\t}\n\t}\n\n\n\t$panelName = `sceneUIReplacement -getNextScriptedPanel \"dynPaintScriptedPanelType\" (localizedPanelLabel(\"Paint Effects\")) `;\n\tif (\"\" == $panelName) {\n\t\tif ($useSceneConfig) {\n\t\t\t$panelName = `scriptedPanel -unParent -type \"dynPaintScriptedPanelType\" -l (localizedPanelLabel(\"Paint Effects\")) -mbv $menusOkayInPanels `;\n\t\t}\n\t} else {\n\t\t$label = `panel -q -label $panelName`;\n\t\tscriptedPanel -edit -l (localizedPanelLabel(\"Paint Effects\")) -mbv $menusOkayInPanels $panelName;\n\t\tif (!$useSceneConfig) {\n\t\t\tpanel -e -l $label $panelName;\n\t\t}\n\t}\n\n\n\t$panelName = `sceneUIReplacement -getNextScriptedPanel \"scriptEditorPanel\" (localizedPanelLabel(\"Script Editor\")) `;\n\tif (\"\" == $panelName) {\n\t\tif ($useSceneConfig) {\n\t\t\t$panelName = `scriptedPanel -unParent -type \"scriptEditorPanel\" -l (localizedPanelLabel(\"Script Editor\")) -mbv $menusOkayInPanels `;\n\t\t}\n\t} else {\n\t\t$label = `panel -q -label $panelName`;\n\t\tscriptedPanel -edit -l (localizedPanelLabel(\"Script Editor\")) -mbv $menusOkayInPanels $panelName;\n" - + "\t\tif (!$useSceneConfig) {\n\t\t\tpanel -e -l $label $panelName;\n\t\t}\n\t}\n\n\n\t$panelName = `sceneUIReplacement -getNextScriptedPanel \"profilerPanel\" (localizedPanelLabel(\"Profiler Tool\")) `;\n\tif (\"\" == $panelName) {\n\t\tif ($useSceneConfig) {\n\t\t\t$panelName = `scriptedPanel -unParent -type \"profilerPanel\" -l (localizedPanelLabel(\"Profiler Tool\")) -mbv $menusOkayInPanels `;\n\t\t}\n\t} else {\n\t\t$label = `panel -q -label $panelName`;\n\t\tscriptedPanel -edit -l (localizedPanelLabel(\"Profiler Tool\")) -mbv $menusOkayInPanels $panelName;\n\t\tif (!$useSceneConfig) {\n\t\t\tpanel -e -l $label $panelName;\n\t\t}\n\t}\n\n\n\t$panelName = `sceneUIReplacement -getNextScriptedPanel \"contentBrowserPanel\" (localizedPanelLabel(\"Content Browser\")) `;\n\tif (\"\" == $panelName) {\n\t\tif ($useSceneConfig) {\n\t\t\t$panelName = `scriptedPanel -unParent -type \"contentBrowserPanel\" -l (localizedPanelLabel(\"Content Browser\")) -mbv $menusOkayInPanels `;\n\t\t}\n\t} else {\n\t\t$label = `panel -q -label $panelName`;\n\t\tscriptedPanel -edit -l (localizedPanelLabel(\"Content Browser\")) -mbv $menusOkayInPanels $panelName;\n" - + "\t\tif (!$useSceneConfig) {\n\t\t\tpanel -e -l $label $panelName;\n\t\t}\n\t}\n\n\n\t$panelName = `sceneUIReplacement -getNextScriptedPanel \"Stereo\" (localizedPanelLabel(\"Stereo\")) `;\n\tif (\"\" == $panelName) {\n\t\tif ($useSceneConfig) {\n\t\t\t$panelName = `scriptedPanel -unParent -type \"Stereo\" -l (localizedPanelLabel(\"Stereo\")) -mbv $menusOkayInPanels `;\nstring $editorName = ($panelName+\"Editor\");\n stereoCameraView -e \n -camera \"persp\" \n -useInteractiveMode 0\n -displayLights \"default\" \n -displayAppearance \"wireframe\" \n -activeOnly 0\n -ignorePanZoom 0\n -wireframeOnShaded 0\n -headsUpDisplay 1\n -holdOuts 1\n -selectionHiliteDisplay 1\n -useDefaultMaterial 0\n -bufferMode \"double\" \n -twoSidedLighting 1\n -backfaceCulling 0\n -xray 0\n -jointXray 0\n -activeComponentsXray 0\n -displayTextures 0\n" - + " -smoothWireframe 0\n -lineWidth 1\n -textureAnisotropic 0\n -textureHilight 1\n -textureSampling 2\n -textureDisplay \"modulate\" \n -textureMaxSize 32768\n -fogging 0\n -fogSource \"fragment\" \n -fogMode \"linear\" \n -fogStart 0\n -fogEnd 100\n -fogDensity 0.1\n -fogColor 0.5 0.5 0.5 1 \n -depthOfFieldPreview 1\n -maxConstantTransparency 1\n -objectFilterShowInHUD 1\n -isFiltered 0\n -colorResolution 4 4 \n -bumpResolution 4 4 \n -textureCompression 0\n -transparencyAlgorithm \"frontAndBackCull\" \n -transpInShadows 0\n -cullingOverride \"none\" \n -lowQualityLighting 0\n -maximumNumHardwareLights 0\n -occlusionCulling 0\n -shadingModel 0\n" - + " -useBaseRenderer 0\n -useReducedRenderer 0\n -smallObjectCulling 0\n -smallObjectThreshold -1 \n -interactiveDisableShadows 0\n -interactiveBackFaceCull 0\n -sortTransparent 1\n -nurbsCurves 1\n -nurbsSurfaces 1\n -polymeshes 1\n -subdivSurfaces 1\n -planes 1\n -lights 1\n -cameras 1\n -controlVertices 1\n -hulls 1\n -grid 1\n -imagePlane 1\n -joints 1\n -ikHandles 1\n -deformers 1\n -dynamics 1\n -particleInstancers 1\n -fluids 1\n -hairSystems 1\n -follicles 1\n -nCloths 1\n -nParticles 1\n -nRigids 1\n -dynamicConstraints 1\n -locators 1\n -manipulators 1\n -pluginShapes 1\n" - + " -dimensions 1\n -handles 1\n -pivots 1\n -textures 1\n -strokes 1\n -motionTrails 1\n -clipGhosts 1\n -greasePencils 1\n -shadows 0\n -captureSequenceNumber -1\n -width 0\n -height 0\n -sceneRenderFilter 0\n -displayMode \"centerEye\" \n -viewColor 0 0 0 1 \n -useCustomBackground 1\n $editorName;\n stereoCameraView -e -viewSelected 0 $editorName;\n stereoCameraView -e \n -pluginObjects \"gpuCacheDisplayFilter\" 1 \n $editorName;\n\t\t}\n\t} else {\n\t\t$label = `panel -q -label $panelName`;\n\t\tscriptedPanel -edit -l (localizedPanelLabel(\"Stereo\")) -mbv $menusOkayInPanels $panelName;\nstring $editorName = ($panelName+\"Editor\");\n stereoCameraView -e \n -camera \"persp\" \n -useInteractiveMode 0\n -displayLights \"default\" \n" - + " -displayAppearance \"wireframe\" \n -activeOnly 0\n -ignorePanZoom 0\n -wireframeOnShaded 0\n -headsUpDisplay 1\n -holdOuts 1\n -selectionHiliteDisplay 1\n -useDefaultMaterial 0\n -bufferMode \"double\" \n -twoSidedLighting 1\n -backfaceCulling 0\n -xray 0\n -jointXray 0\n -activeComponentsXray 0\n -displayTextures 0\n -smoothWireframe 0\n -lineWidth 1\n -textureAnisotropic 0\n -textureHilight 1\n -textureSampling 2\n -textureDisplay \"modulate\" \n -textureMaxSize 32768\n -fogging 0\n -fogSource \"fragment\" \n -fogMode \"linear\" \n -fogStart 0\n -fogEnd 100\n -fogDensity 0.1\n -fogColor 0.5 0.5 0.5 1 \n -depthOfFieldPreview 1\n" - + " -maxConstantTransparency 1\n -objectFilterShowInHUD 1\n -isFiltered 0\n -colorResolution 4 4 \n -bumpResolution 4 4 \n -textureCompression 0\n -transparencyAlgorithm \"frontAndBackCull\" \n -transpInShadows 0\n -cullingOverride \"none\" \n -lowQualityLighting 0\n -maximumNumHardwareLights 0\n -occlusionCulling 0\n -shadingModel 0\n -useBaseRenderer 0\n -useReducedRenderer 0\n -smallObjectCulling 0\n -smallObjectThreshold -1 \n -interactiveDisableShadows 0\n -interactiveBackFaceCull 0\n -sortTransparent 1\n -nurbsCurves 1\n -nurbsSurfaces 1\n -polymeshes 1\n -subdivSurfaces 1\n -planes 1\n -lights 1\n -cameras 1\n -controlVertices 1\n" - + " -hulls 1\n -grid 1\n -imagePlane 1\n -joints 1\n -ikHandles 1\n -deformers 1\n -dynamics 1\n -particleInstancers 1\n -fluids 1\n -hairSystems 1\n -follicles 1\n -nCloths 1\n -nParticles 1\n -nRigids 1\n -dynamicConstraints 1\n -locators 1\n -manipulators 1\n -pluginShapes 1\n -dimensions 1\n -handles 1\n -pivots 1\n -textures 1\n -strokes 1\n -motionTrails 1\n -clipGhosts 1\n -greasePencils 1\n -shadows 0\n -captureSequenceNumber -1\n -width 0\n -height 0\n -sceneRenderFilter 0\n -displayMode \"centerEye\" \n -viewColor 0 0 0 1 \n -useCustomBackground 1\n" - + " $editorName;\n stereoCameraView -e -viewSelected 0 $editorName;\n stereoCameraView -e \n -pluginObjects \"gpuCacheDisplayFilter\" 1 \n $editorName;\n\t\tif (!$useSceneConfig) {\n\t\t\tpanel -e -l $label $panelName;\n\t\t}\n\t}\n\n\n\t$panelName = `sceneUIReplacement -getNextScriptedPanel \"hyperShadePanel\" (localizedPanelLabel(\"Hypershade\")) `;\n\tif (\"\" == $panelName) {\n\t\tif ($useSceneConfig) {\n\t\t\t$panelName = `scriptedPanel -unParent -type \"hyperShadePanel\" -l (localizedPanelLabel(\"Hypershade\")) -mbv $menusOkayInPanels `;\n\t\t}\n\t} else {\n\t\t$label = `panel -q -label $panelName`;\n\t\tscriptedPanel -edit -l (localizedPanelLabel(\"Hypershade\")) -mbv $menusOkayInPanels $panelName;\n\t\tif (!$useSceneConfig) {\n\t\t\tpanel -e -l $label $panelName;\n\t\t}\n\t}\n\n\n\t$panelName = `sceneUIReplacement -getNextScriptedPanel \"nodeEditorPanel\" (localizedPanelLabel(\"Node Editor\")) `;\n\tif (\"\" == $panelName) {\n\t\tif ($useSceneConfig) {\n\t\t\t$panelName = `scriptedPanel -unParent -type \"nodeEditorPanel\" -l (localizedPanelLabel(\"Node Editor\")) -mbv $menusOkayInPanels `;\n" - + "\n\t\t\t$editorName = ($panelName+\"NodeEditorEd\");\n nodeEditor -e \n -allAttributes 0\n -allNodes 0\n -autoSizeNodes 1\n -consistentNameSize 1\n -createNodeCommand \"nodeEdCreateNodeCommand\" \n -defaultPinnedState 0\n -additiveGraphingMode 0\n -settingsChangedCallback \"nodeEdSyncControls\" \n -traversalDepthLimit -1\n -keyPressCommand \"nodeEdKeyPressCommand\" \n -nodeTitleMode \"name\" \n -gridSnap 0\n -gridVisibility 1\n -popupMenuScript \"nodeEdBuildPanelMenus\" \n -showNamespace 1\n -showShapes 1\n -showSGShapes 0\n -showTransforms 1\n -useAssets 1\n -syncedSelection 1\n -extendToShapes 1\n -activeTab -1\n -editorMode \"default\" \n $editorName;\n\t\t}\n\t} else {\n\t\t$label = `panel -q -label $panelName`;\n" - + "\t\tscriptedPanel -edit -l (localizedPanelLabel(\"Node Editor\")) -mbv $menusOkayInPanels $panelName;\n\n\t\t\t$editorName = ($panelName+\"NodeEditorEd\");\n nodeEditor -e \n -allAttributes 0\n -allNodes 0\n -autoSizeNodes 1\n -consistentNameSize 1\n -createNodeCommand \"nodeEdCreateNodeCommand\" \n -defaultPinnedState 0\n -additiveGraphingMode 0\n -settingsChangedCallback \"nodeEdSyncControls\" \n -traversalDepthLimit -1\n -keyPressCommand \"nodeEdKeyPressCommand\" \n -nodeTitleMode \"name\" \n -gridSnap 0\n -gridVisibility 1\n -popupMenuScript \"nodeEdBuildPanelMenus\" \n -showNamespace 1\n -showShapes 1\n -showSGShapes 0\n -showTransforms 1\n -useAssets 1\n -syncedSelection 1\n -extendToShapes 1\n -activeTab -1\n -editorMode \"default\" \n" - + " $editorName;\n\t\tif (!$useSceneConfig) {\n\t\t\tpanel -e -l $label $panelName;\n\t\t}\n\t}\n\n\n\tif ($useSceneConfig) {\n string $configName = `getPanel -cwl (localizedPanelLabel(\"Current Layout\"))`;\n if (\"\" != $configName) {\n\t\t\tpanelConfiguration -edit -label (localizedPanelLabel(\"Current Layout\")) \n\t\t\t\t-defaultImage \"\"\n\t\t\t\t-image \"\"\n\t\t\t\t-sc false\n\t\t\t\t-configString \"global string $gMainPane; paneLayout -e -cn \\\"left3\\\" -ps 1 80 78 -ps 2 20 100 -ps 3 80 22 $gMainPane;\"\n\t\t\t\t-removeAllPanels\n\t\t\t\t-ap true\n\t\t\t\t\t(localizedPanelLabel(\"Persp View\")) \n\t\t\t\t\t\"modelPanel\"\n" - + "\t\t\t\t\t\"$panelName = `modelPanel -unParent -l (localizedPanelLabel(\\\"Persp View\\\")) -mbv $menusOkayInPanels `;\\n$editorName = $panelName;\\nmodelEditor -e \\n -cam `findStartUpCamera persp` \\n -useInteractiveMode 0\\n -displayLights \\\"default\\\" \\n -displayAppearance \\\"smoothShaded\\\" \\n -activeOnly 0\\n -ignorePanZoom 0\\n -wireframeOnShaded 0\\n -headsUpDisplay 1\\n -holdOuts 1\\n -selectionHiliteDisplay 1\\n -useDefaultMaterial 0\\n -bufferMode \\\"double\\\" \\n -twoSidedLighting 0\\n -backfaceCulling 0\\n -xray 0\\n -jointXray 0\\n -activeComponentsXray 0\\n -displayTextures 0\\n -smoothWireframe 0\\n -lineWidth 1\\n -textureAnisotropic 0\\n -textureHilight 1\\n -textureSampling 2\\n -textureDisplay \\\"modulate\\\" \\n -textureMaxSize 32768\\n -fogging 0\\n -fogSource \\\"fragment\\\" \\n -fogMode \\\"linear\\\" \\n -fogStart 0\\n -fogEnd 100\\n -fogDensity 0.1\\n -fogColor 0.5 0.5 0.5 1 \\n -depthOfFieldPreview 1\\n -maxConstantTransparency 1\\n -rendererName \\\"vp2Renderer\\\" \\n -objectFilterShowInHUD 1\\n -isFiltered 0\\n -colorResolution 256 256 \\n -bumpResolution 512 512 \\n -textureCompression 0\\n -transparencyAlgorithm \\\"frontAndBackCull\\\" \\n -transpInShadows 0\\n -cullingOverride \\\"none\\\" \\n -lowQualityLighting 0\\n -maximumNumHardwareLights 1\\n -occlusionCulling 0\\n -shadingModel 0\\n -useBaseRenderer 0\\n -useReducedRenderer 0\\n -smallObjectCulling 0\\n -smallObjectThreshold -1 \\n -interactiveDisableShadows 0\\n -interactiveBackFaceCull 0\\n -sortTransparent 1\\n -nurbsCurves 1\\n -nurbsSurfaces 1\\n -polymeshes 1\\n -subdivSurfaces 1\\n -planes 1\\n -lights 1\\n -cameras 1\\n -controlVertices 1\\n -hulls 1\\n -grid 1\\n -imagePlane 1\\n -joints 1\\n -ikHandles 1\\n -deformers 1\\n -dynamics 1\\n -particleInstancers 1\\n -fluids 1\\n -hairSystems 1\\n -follicles 1\\n -nCloths 1\\n -nParticles 1\\n -nRigids 1\\n -dynamicConstraints 1\\n -locators 1\\n -manipulators 1\\n -pluginShapes 1\\n -dimensions 1\\n -handles 1\\n -pivots 1\\n -textures 1\\n -strokes 1\\n -motionTrails 1\\n -clipGhosts 1\\n -greasePencils 1\\n -shadows 0\\n -captureSequenceNumber -1\\n -width 1168\\n -height 740\\n -sceneRenderFilter 0\\n $editorName;\\nmodelEditor -e -viewSelected 0 $editorName;\\nmodelEditor -e \\n -pluginObjects \\\"gpuCacheDisplayFilter\\\" 1 \\n $editorName\"\n" - + "\t\t\t\t\t\"modelPanel -edit -l (localizedPanelLabel(\\\"Persp View\\\")) -mbv $menusOkayInPanels $panelName;\\n$editorName = $panelName;\\nmodelEditor -e \\n -cam `findStartUpCamera persp` \\n -useInteractiveMode 0\\n -displayLights \\\"default\\\" \\n -displayAppearance \\\"smoothShaded\\\" \\n -activeOnly 0\\n -ignorePanZoom 0\\n -wireframeOnShaded 0\\n -headsUpDisplay 1\\n -holdOuts 1\\n -selectionHiliteDisplay 1\\n -useDefaultMaterial 0\\n -bufferMode \\\"double\\\" \\n -twoSidedLighting 0\\n -backfaceCulling 0\\n -xray 0\\n -jointXray 0\\n -activeComponentsXray 0\\n -displayTextures 0\\n -smoothWireframe 0\\n -lineWidth 1\\n -textureAnisotropic 0\\n -textureHilight 1\\n -textureSampling 2\\n -textureDisplay \\\"modulate\\\" \\n -textureMaxSize 32768\\n -fogging 0\\n -fogSource \\\"fragment\\\" \\n -fogMode \\\"linear\\\" \\n -fogStart 0\\n -fogEnd 100\\n -fogDensity 0.1\\n -fogColor 0.5 0.5 0.5 1 \\n -depthOfFieldPreview 1\\n -maxConstantTransparency 1\\n -rendererName \\\"vp2Renderer\\\" \\n -objectFilterShowInHUD 1\\n -isFiltered 0\\n -colorResolution 256 256 \\n -bumpResolution 512 512 \\n -textureCompression 0\\n -transparencyAlgorithm \\\"frontAndBackCull\\\" \\n -transpInShadows 0\\n -cullingOverride \\\"none\\\" \\n -lowQualityLighting 0\\n -maximumNumHardwareLights 1\\n -occlusionCulling 0\\n -shadingModel 0\\n -useBaseRenderer 0\\n -useReducedRenderer 0\\n -smallObjectCulling 0\\n -smallObjectThreshold -1 \\n -interactiveDisableShadows 0\\n -interactiveBackFaceCull 0\\n -sortTransparent 1\\n -nurbsCurves 1\\n -nurbsSurfaces 1\\n -polymeshes 1\\n -subdivSurfaces 1\\n -planes 1\\n -lights 1\\n -cameras 1\\n -controlVertices 1\\n -hulls 1\\n -grid 1\\n -imagePlane 1\\n -joints 1\\n -ikHandles 1\\n -deformers 1\\n -dynamics 1\\n -particleInstancers 1\\n -fluids 1\\n -hairSystems 1\\n -follicles 1\\n -nCloths 1\\n -nParticles 1\\n -nRigids 1\\n -dynamicConstraints 1\\n -locators 1\\n -manipulators 1\\n -pluginShapes 1\\n -dimensions 1\\n -handles 1\\n -pivots 1\\n -textures 1\\n -strokes 1\\n -motionTrails 1\\n -clipGhosts 1\\n -greasePencils 1\\n -shadows 0\\n -captureSequenceNumber -1\\n -width 1168\\n -height 740\\n -sceneRenderFilter 0\\n $editorName;\\nmodelEditor -e -viewSelected 0 $editorName;\\nmodelEditor -e \\n -pluginObjects \\\"gpuCacheDisplayFilter\\\" 1 \\n $editorName\"\n" - + "\t\t\t\t-ap false\n\t\t\t\t\t(localizedPanelLabel(\"Outliner\")) \n\t\t\t\t\t\"outlinerPanel\"\n\t\t\t\t\t\"$panelName = `outlinerPanel -unParent -l (localizedPanelLabel(\\\"Outliner\\\")) -mbv $menusOkayInPanels `;\\n$editorName = $panelName;\\noutlinerEditor -e \\n -showShapes 0\\n -showAssignedMaterials 0\\n -showReferenceNodes 1\\n -showReferenceMembers 1\\n -showAttributes 0\\n -showConnected 0\\n -showAnimCurvesOnly 0\\n -showMuteInfo 0\\n -organizeByLayer 1\\n -showAnimLayerWeight 1\\n -autoExpandLayers 1\\n -autoExpand 0\\n -showDagOnly 1\\n -showAssets 1\\n -showContainedOnly 1\\n -showPublishedAsConnected 0\\n -showContainerContents 1\\n -ignoreDagHierarchy 0\\n -expandConnections 0\\n -showUpstreamCurves 1\\n -showUnitlessCurves 1\\n -showCompounds 1\\n -showLeafs 1\\n -showNumericAttrsOnly 0\\n -highlightActive 1\\n -autoSelectNewObjects 0\\n -doNotSelectNewObjects 0\\n -dropIsParent 1\\n -transmitFilters 0\\n -setFilter \\\"defaultSetFilter\\\" \\n -showSetMembers 1\\n -allowMultiSelection 1\\n -alwaysToggleSelect 0\\n -directSelect 0\\n -isSet 0\\n -isSetMember 0\\n -displayMode \\\"DAG\\\" \\n -expandObjects 0\\n -setsIgnoreFilters 1\\n -containersIgnoreFilters 0\\n -editAttrName 0\\n -showAttrValues 0\\n -highlightSecondary 0\\n -showUVAttrsOnly 0\\n -showTextureNodesOnly 0\\n -attrAlphaOrder \\\"default\\\" \\n -animLayerFilterOptions \\\"allAffecting\\\" \\n -sortOrder \\\"none\\\" \\n -longNames 0\\n -niceNames 1\\n -showNamespace 1\\n -showPinIcons 0\\n -mapMotionTrails 0\\n -ignoreHiddenAttribute 0\\n -ignoreOutlinerColor 0\\n -renderFilterVisible 0\\n -renderFilterIndex 0\\n -selectionOrder \\\"chronological\\\" \\n -expandAttribute 0\\n $editorName\"\n" - + "\t\t\t\t\t\"outlinerPanel -edit -l (localizedPanelLabel(\\\"Outliner\\\")) -mbv $menusOkayInPanels $panelName;\\n$editorName = $panelName;\\noutlinerEditor -e \\n -showShapes 0\\n -showAssignedMaterials 0\\n -showReferenceNodes 1\\n -showReferenceMembers 1\\n -showAttributes 0\\n -showConnected 0\\n -showAnimCurvesOnly 0\\n -showMuteInfo 0\\n -organizeByLayer 1\\n -showAnimLayerWeight 1\\n -autoExpandLayers 1\\n -autoExpand 0\\n -showDagOnly 1\\n -showAssets 1\\n -showContainedOnly 1\\n -showPublishedAsConnected 0\\n -showContainerContents 1\\n -ignoreDagHierarchy 0\\n -expandConnections 0\\n -showUpstreamCurves 1\\n -showUnitlessCurves 1\\n -showCompounds 1\\n -showLeafs 1\\n -showNumericAttrsOnly 0\\n -highlightActive 1\\n -autoSelectNewObjects 0\\n -doNotSelectNewObjects 0\\n -dropIsParent 1\\n -transmitFilters 0\\n -setFilter \\\"defaultSetFilter\\\" \\n -showSetMembers 1\\n -allowMultiSelection 1\\n -alwaysToggleSelect 0\\n -directSelect 0\\n -isSet 0\\n -isSetMember 0\\n -displayMode \\\"DAG\\\" \\n -expandObjects 0\\n -setsIgnoreFilters 1\\n -containersIgnoreFilters 0\\n -editAttrName 0\\n -showAttrValues 0\\n -highlightSecondary 0\\n -showUVAttrsOnly 0\\n -showTextureNodesOnly 0\\n -attrAlphaOrder \\\"default\\\" \\n -animLayerFilterOptions \\\"allAffecting\\\" \\n -sortOrder \\\"none\\\" \\n -longNames 0\\n -niceNames 1\\n -showNamespace 1\\n -showPinIcons 0\\n -mapMotionTrails 0\\n -ignoreHiddenAttribute 0\\n -ignoreOutlinerColor 0\\n -renderFilterVisible 0\\n -renderFilterIndex 0\\n -selectionOrder \\\"chronological\\\" \\n -expandAttribute 0\\n $editorName\"\n" - + "\t\t\t\t-ap false\n\t\t\t\t\t(localizedPanelLabel(\"Script Editor\")) \n\t\t\t\t\t\"scriptedPanel\"\n\t\t\t\t\t\"$panelName = `scriptedPanel -unParent -type \\\"scriptEditorPanel\\\" -l (localizedPanelLabel(\\\"Script Editor\\\")) -mbv $menusOkayInPanels `\"\n\t\t\t\t\t\"scriptedPanel -edit -l (localizedPanelLabel(\\\"Script Editor\\\")) -mbv $menusOkayInPanels $panelName\"\n\t\t\t\t$configName;\n\n setNamedPanelLayout (localizedPanelLabel(\"Current Layout\"));\n }\n\n panelHistory -e -clear mainPanelHistory;\n setFocus `paneLayout -q -p1 $gMainPane`;\n sceneUIReplacement -deleteRemaining;\n sceneUIReplacement -clear;\n\t}\n\n\ngrid -spacing 5 -size 12 -divisions 5 -displayAxes yes -displayGridLines yes -displayDivisionLines yes -displayPerspectiveLabels no -displayOrthographicLabels no -displayAxesBold yes -perspectiveLabelPosition axis -orthographicLabelPosition edge;\nviewManip -drawCompass 0 -compassAngle 0 -frontParameters \"\" -homeParameters \"\" -selectionLockParameters \"\";\n}\n"); - setAttr ".st" 3; -createNode script -n "sceneConfigurationScriptNode"; - rename -uid "DFA6B35A-4AC5-B3F6-2B5A-798628D34796"; - setAttr ".b" -type "string" "playbackOptions -min 1 -max 120 -ast 1 -aet 200 "; - setAttr ".st" 6; select -ne :time1; setAttr ".o" 1; setAttr ".unw" 1; @@ -15976,6 +15956,7 @@ select -ne :defaultShaderList1; select -ne :postProcessList1; setAttr -s 2 ".p"; select -ne :defaultRenderingList1; + setAttr -s 2 ".r"; select -ne :initialShadingGroup; setAttr ".ro" yes; select -ne :initialParticleSE; @@ -15985,6 +15966,8 @@ select -ne :defaultResolution; select -ne :hardwareRenderGlobals; setAttr ".ctrs" 256; setAttr ".btrs" 512; +select -ne :ikSystem; + setAttr -s 4 ".sol"; connectAttr "spine_C0_root_st_profile1.o" "spine_C0_root.st_profile"; connectAttr "spine_C0_root_sq_profile1.o" "spine_C0_root.sq_profile"; connectAttr "arm_L0_root_st_profile1.o" "arm_L0_root.st_profile"; @@ -16241,29 +16224,29 @@ connectAttr "groupId8689.id" "shoulder_L0_crvShape.iog.og[1].gid"; connectAttr "tweakSet560.mwc" "shoulder_L0_crvShape.iog.og[1].gco"; connectAttr "neck_C0_root_st_profile1.o" "neck_C0_root.st_profile"; connectAttr "neck_C0_root_sq_profile1.o" "neck_C0_root.sq_profile"; -connectAttr "mgear_curveCns423.og[0]" "|guide|local_C0_root|body_C0_root|spine_C0_root|spine_C0_eff|neck_C0_root|neck_C0_neck|neck_C0_head|mouth_C0_root|mouth_C0_rotcenter|mouth_C0_lipup|mouth_C0_crv|mouth_C0_crvShape.cr" +connectAttr "mgear_curveCns423.og[0]" "|guide|global_C0_root|local_C0_root|body_C0_root|spine_C0_root|spine_C0_eff|neck_C0_root|neck_C0_neck|neck_C0_head|mouth_C0_root|mouth_C0_rotcenter|mouth_C0_lipup|mouth_C0_crv|mouth_C0_crvShape.cr" ; -connectAttr "tweak571.pl[0].cp[0]" "|guide|local_C0_root|body_C0_root|spine_C0_root|spine_C0_eff|neck_C0_root|neck_C0_neck|neck_C0_head|mouth_C0_root|mouth_C0_rotcenter|mouth_C0_lipup|mouth_C0_crv|mouth_C0_crvShape.twl" +connectAttr "tweak571.pl[0].cp[0]" "|guide|global_C0_root|local_C0_root|body_C0_root|spine_C0_root|spine_C0_eff|neck_C0_root|neck_C0_neck|neck_C0_head|mouth_C0_root|mouth_C0_rotcenter|mouth_C0_lipup|mouth_C0_crv|mouth_C0_crvShape.twl" ; -connectAttr "mgear_curveCns423GroupId.id" "|guide|local_C0_root|body_C0_root|spine_C0_root|spine_C0_eff|neck_C0_root|neck_C0_neck|neck_C0_head|mouth_C0_root|mouth_C0_rotcenter|mouth_C0_lipup|mouth_C0_crv|mouth_C0_crvShape.iog.og[0].gid" +connectAttr "mgear_curveCns423GroupId.id" "|guide|global_C0_root|local_C0_root|body_C0_root|spine_C0_root|spine_C0_eff|neck_C0_root|neck_C0_neck|neck_C0_head|mouth_C0_root|mouth_C0_rotcenter|mouth_C0_lipup|mouth_C0_crv|mouth_C0_crvShape.iog.og[0].gid" ; -connectAttr "mgear_curveCns423Set.mwc" "|guide|local_C0_root|body_C0_root|spine_C0_root|spine_C0_eff|neck_C0_root|neck_C0_neck|neck_C0_head|mouth_C0_root|mouth_C0_rotcenter|mouth_C0_lipup|mouth_C0_crv|mouth_C0_crvShape.iog.og[0].gco" +connectAttr "mgear_curveCns423Set.mwc" "|guide|global_C0_root|local_C0_root|body_C0_root|spine_C0_root|spine_C0_eff|neck_C0_root|neck_C0_neck|neck_C0_head|mouth_C0_root|mouth_C0_rotcenter|mouth_C0_lipup|mouth_C0_crv|mouth_C0_crvShape.iog.og[0].gco" ; -connectAttr "groupId8711.id" "|guide|local_C0_root|body_C0_root|spine_C0_root|spine_C0_eff|neck_C0_root|neck_C0_neck|neck_C0_head|mouth_C0_root|mouth_C0_rotcenter|mouth_C0_lipup|mouth_C0_crv|mouth_C0_crvShape.iog.og[1].gid" +connectAttr "groupId8711.id" "|guide|global_C0_root|local_C0_root|body_C0_root|spine_C0_root|spine_C0_eff|neck_C0_root|neck_C0_neck|neck_C0_head|mouth_C0_root|mouth_C0_rotcenter|mouth_C0_lipup|mouth_C0_crv|mouth_C0_crvShape.iog.og[1].gid" ; -connectAttr "tweakSet571.mwc" "|guide|local_C0_root|body_C0_root|spine_C0_root|spine_C0_eff|neck_C0_root|neck_C0_neck|neck_C0_head|mouth_C0_root|mouth_C0_rotcenter|mouth_C0_lipup|mouth_C0_crv|mouth_C0_crvShape.iog.og[1].gco" +connectAttr "tweakSet571.mwc" "|guide|global_C0_root|local_C0_root|body_C0_root|spine_C0_root|spine_C0_eff|neck_C0_root|neck_C0_neck|neck_C0_head|mouth_C0_root|mouth_C0_rotcenter|mouth_C0_lipup|mouth_C0_crv|mouth_C0_crvShape.iog.og[1].gco" ; -connectAttr "mgear_curveCns424.og[0]" "|guide|local_C0_root|body_C0_root|spine_C0_root|spine_C0_eff|neck_C0_root|neck_C0_neck|neck_C0_head|mouth_C0_root|mouth_C0_rotcenter|mouth_C0_liplow|mouth_C0_crv|mouth_C0_crvShape.cr" +connectAttr "mgear_curveCns424.og[0]" "|guide|global_C0_root|local_C0_root|body_C0_root|spine_C0_root|spine_C0_eff|neck_C0_root|neck_C0_neck|neck_C0_head|mouth_C0_root|mouth_C0_rotcenter|mouth_C0_liplow|mouth_C0_crv|mouth_C0_crvShape.cr" ; -connectAttr "tweak572.pl[0].cp[0]" "|guide|local_C0_root|body_C0_root|spine_C0_root|spine_C0_eff|neck_C0_root|neck_C0_neck|neck_C0_head|mouth_C0_root|mouth_C0_rotcenter|mouth_C0_liplow|mouth_C0_crv|mouth_C0_crvShape.twl" +connectAttr "tweak572.pl[0].cp[0]" "|guide|global_C0_root|local_C0_root|body_C0_root|spine_C0_root|spine_C0_eff|neck_C0_root|neck_C0_neck|neck_C0_head|mouth_C0_root|mouth_C0_rotcenter|mouth_C0_liplow|mouth_C0_crv|mouth_C0_crvShape.twl" ; -connectAttr "mgear_curveCns424GroupId.id" "|guide|local_C0_root|body_C0_root|spine_C0_root|spine_C0_eff|neck_C0_root|neck_C0_neck|neck_C0_head|mouth_C0_root|mouth_C0_rotcenter|mouth_C0_liplow|mouth_C0_crv|mouth_C0_crvShape.iog.og[0].gid" +connectAttr "mgear_curveCns424GroupId.id" "|guide|global_C0_root|local_C0_root|body_C0_root|spine_C0_root|spine_C0_eff|neck_C0_root|neck_C0_neck|neck_C0_head|mouth_C0_root|mouth_C0_rotcenter|mouth_C0_liplow|mouth_C0_crv|mouth_C0_crvShape.iog.og[0].gid" ; -connectAttr "mgear_curveCns424Set.mwc" "|guide|local_C0_root|body_C0_root|spine_C0_root|spine_C0_eff|neck_C0_root|neck_C0_neck|neck_C0_head|mouth_C0_root|mouth_C0_rotcenter|mouth_C0_liplow|mouth_C0_crv|mouth_C0_crvShape.iog.og[0].gco" +connectAttr "mgear_curveCns424Set.mwc" "|guide|global_C0_root|local_C0_root|body_C0_root|spine_C0_root|spine_C0_eff|neck_C0_root|neck_C0_neck|neck_C0_head|mouth_C0_root|mouth_C0_rotcenter|mouth_C0_liplow|mouth_C0_crv|mouth_C0_crvShape.iog.og[0].gco" ; -connectAttr "groupId8713.id" "|guide|local_C0_root|body_C0_root|spine_C0_root|spine_C0_eff|neck_C0_root|neck_C0_neck|neck_C0_head|mouth_C0_root|mouth_C0_rotcenter|mouth_C0_liplow|mouth_C0_crv|mouth_C0_crvShape.iog.og[1].gid" +connectAttr "groupId8713.id" "|guide|global_C0_root|local_C0_root|body_C0_root|spine_C0_root|spine_C0_eff|neck_C0_root|neck_C0_neck|neck_C0_head|mouth_C0_root|mouth_C0_rotcenter|mouth_C0_liplow|mouth_C0_crv|mouth_C0_crvShape.iog.og[1].gid" ; -connectAttr "tweakSet572.mwc" "|guide|local_C0_root|body_C0_root|spine_C0_root|spine_C0_eff|neck_C0_root|neck_C0_neck|neck_C0_head|mouth_C0_root|mouth_C0_rotcenter|mouth_C0_liplow|mouth_C0_crv|mouth_C0_crvShape.iog.og[1].gco" +connectAttr "tweakSet572.mwc" "|guide|global_C0_root|local_C0_root|body_C0_root|spine_C0_root|spine_C0_eff|neck_C0_root|neck_C0_neck|neck_C0_head|mouth_C0_root|mouth_C0_rotcenter|mouth_C0_liplow|mouth_C0_crv|mouth_C0_crvShape.iog.og[1].gco" ; connectAttr "tongue_C0_blade_pointConstraint9.ctx" "tongue_C0_blade.tx" -l on; connectAttr "tongue_C0_blade_pointConstraint9.cty" "tongue_C0_blade.ty" -l on; @@ -16299,17 +16282,17 @@ connectAttr "mgear_curveCns426GroupId.id" "tongue_C0_crvShape.iog.og[0].gid"; connectAttr "mgear_curveCns426Set.mwc" "tongue_C0_crvShape.iog.og[0].gco"; connectAttr "groupId8717.id" "tongue_C0_crvShape.iog.og[1].gid"; connectAttr "tweakSet574.mwc" "tongue_C0_crvShape.iog.og[1].gco"; -connectAttr "mgear_curveCns422.og[0]" "|guide|local_C0_root|body_C0_root|spine_C0_root|spine_C0_eff|neck_C0_root|neck_C0_neck|neck_C0_head|mouth_C0_root|mouth_C0_crv|mouth_C0_crvShape.cr" +connectAttr "mgear_curveCns422.og[0]" "|guide|global_C0_root|local_C0_root|body_C0_root|spine_C0_root|spine_C0_eff|neck_C0_root|neck_C0_neck|neck_C0_head|mouth_C0_root|mouth_C0_crv|mouth_C0_crvShape.cr" ; -connectAttr "tweak570.pl[0].cp[0]" "|guide|local_C0_root|body_C0_root|spine_C0_root|spine_C0_eff|neck_C0_root|neck_C0_neck|neck_C0_head|mouth_C0_root|mouth_C0_crv|mouth_C0_crvShape.twl" +connectAttr "tweak570.pl[0].cp[0]" "|guide|global_C0_root|local_C0_root|body_C0_root|spine_C0_root|spine_C0_eff|neck_C0_root|neck_C0_neck|neck_C0_head|mouth_C0_root|mouth_C0_crv|mouth_C0_crvShape.twl" ; -connectAttr "mgear_curveCns422GroupId.id" "|guide|local_C0_root|body_C0_root|spine_C0_root|spine_C0_eff|neck_C0_root|neck_C0_neck|neck_C0_head|mouth_C0_root|mouth_C0_crv|mouth_C0_crvShape.iog.og[0].gid" +connectAttr "mgear_curveCns422GroupId.id" "|guide|global_C0_root|local_C0_root|body_C0_root|spine_C0_root|spine_C0_eff|neck_C0_root|neck_C0_neck|neck_C0_head|mouth_C0_root|mouth_C0_crv|mouth_C0_crvShape.iog.og[0].gid" ; -connectAttr "mgear_curveCns422Set.mwc" "|guide|local_C0_root|body_C0_root|spine_C0_root|spine_C0_eff|neck_C0_root|neck_C0_neck|neck_C0_head|mouth_C0_root|mouth_C0_crv|mouth_C0_crvShape.iog.og[0].gco" +connectAttr "mgear_curveCns422Set.mwc" "|guide|global_C0_root|local_C0_root|body_C0_root|spine_C0_root|spine_C0_eff|neck_C0_root|neck_C0_neck|neck_C0_head|mouth_C0_root|mouth_C0_crv|mouth_C0_crvShape.iog.og[0].gco" ; -connectAttr "groupId8709.id" "|guide|local_C0_root|body_C0_root|spine_C0_root|spine_C0_eff|neck_C0_root|neck_C0_neck|neck_C0_head|mouth_C0_root|mouth_C0_crv|mouth_C0_crvShape.iog.og[1].gid" +connectAttr "groupId8709.id" "|guide|global_C0_root|local_C0_root|body_C0_root|spine_C0_root|spine_C0_eff|neck_C0_root|neck_C0_neck|neck_C0_head|mouth_C0_root|mouth_C0_crv|mouth_C0_crvShape.iog.og[1].gid" ; -connectAttr "tweakSet570.mwc" "|guide|local_C0_root|body_C0_root|spine_C0_root|spine_C0_eff|neck_C0_root|neck_C0_neck|neck_C0_head|mouth_C0_root|mouth_C0_crv|mouth_C0_crvShape.iog.og[1].gco" +connectAttr "tweakSet570.mwc" "|guide|global_C0_root|local_C0_root|body_C0_root|spine_C0_root|spine_C0_eff|neck_C0_root|neck_C0_neck|neck_C0_head|mouth_C0_root|mouth_C0_crv|mouth_C0_crvShape.iog.og[1].gco" ; connectAttr "mgear_curveCns425.og[0]" "mouth_C0_crv9Shape.cr"; connectAttr "tweak573.pl[0].cp[0]" "mouth_C0_crv9Shape.twl"; @@ -16369,258 +16352,258 @@ connectAttr "mgear_curveCns420GroupId.id" "neck_C0_neck_crvShape.iog.og[0].gid"; connectAttr "mgear_curveCns420Set.mwc" "neck_C0_neck_crvShape.iog.og[0].gco"; connectAttr "groupId8705.id" "neck_C0_neck_crvShape.iog.og[1].gid"; connectAttr "tweakSet568.mwc" "neck_C0_neck_crvShape.iog.og[1].gco"; -connectAttr "arm_R0_root_st_profile1.o" "arm_R0_root.st_profile"; -connectAttr "arm_R0_root_sq_profile1.o" "arm_R0_root.sq_profile"; -connectAttr "finger_R3_blade_pointConstraint4.ctx" "finger_R3_blade.tx" -l on; -connectAttr "finger_R3_blade_pointConstraint4.cty" "finger_R3_blade.ty" -l on; -connectAttr "finger_R3_blade_pointConstraint4.ctz" "finger_R3_blade.tz" -l on; -connectAttr "finger_R3_blade_aimConstraint4.crx" "finger_R3_blade.rx" -l on; -connectAttr "finger_R3_blade_aimConstraint4.cry" "finger_R3_blade.ry" -l on; -connectAttr "finger_R3_blade_aimConstraint4.crz" "finger_R3_blade.rz" -l on; -connectAttr "finger_R3_blade.pim" "finger_R3_blade_aimConstraint4.cpim"; -connectAttr "finger_R3_blade.t" "finger_R3_blade_aimConstraint4.ct"; -connectAttr "finger_R3_blade.rp" "finger_R3_blade_aimConstraint4.crp"; -connectAttr "finger_R3_blade.rpt" "finger_R3_blade_aimConstraint4.crt"; -connectAttr "finger_R3_blade.ro" "finger_R3_blade_aimConstraint4.cro"; -connectAttr "finger_R3_0_loc.t" "finger_R3_blade_aimConstraint4.tg[0].tt"; -connectAttr "finger_R3_0_loc.rp" "finger_R3_blade_aimConstraint4.tg[0].trp"; -connectAttr "finger_R3_0_loc.rpt" "finger_R3_blade_aimConstraint4.tg[0].trt"; -connectAttr "finger_R3_0_loc.pm" "finger_R3_blade_aimConstraint4.tg[0].tpm"; -connectAttr "finger_R3_blade_aimConstraint4.w0" "finger_R3_blade_aimConstraint4.tg[0].tw" - ; -connectAttr "finger_R3_root.wm" "finger_R3_blade_aimConstraint4.wum"; -connectAttr "unitConversion143.o" "finger_R3_blade_aimConstraint4.ox"; -connectAttr "finger_R3_blade.pim" "finger_R3_blade_pointConstraint4.cpim"; -connectAttr "finger_R3_blade.rp" "finger_R3_blade_pointConstraint4.crp"; -connectAttr "finger_R3_blade.rpt" "finger_R3_blade_pointConstraint4.crt"; -connectAttr "finger_R3_root.t" "finger_R3_blade_pointConstraint4.tg[0].tt"; -connectAttr "finger_R3_root.rp" "finger_R3_blade_pointConstraint4.tg[0].trp"; -connectAttr "finger_R3_root.rpt" "finger_R3_blade_pointConstraint4.tg[0].trt"; -connectAttr "finger_R3_root.pm" "finger_R3_blade_pointConstraint4.tg[0].tpm"; -connectAttr "finger_R3_blade_pointConstraint4.w0" "finger_R3_blade_pointConstraint4.tg[0].tw" - ; -connectAttr "mgear_curveCns432.og[0]" "finger_R3_crvShape.cr"; -connectAttr "tweak580.pl[0].cp[0]" "finger_R3_crvShape.twl"; -connectAttr "mgear_curveCns432GroupId.id" "finger_R3_crvShape.iog.og[0].gid"; -connectAttr "mgear_curveCns432Set.mwc" "finger_R3_crvShape.iog.og[0].gco"; -connectAttr "groupId8729.id" "finger_R3_crvShape.iog.og[1].gid"; -connectAttr "tweakSet580.mwc" "finger_R3_crvShape.iog.og[1].gco"; -connectAttr "finger_R2_blade_pointConstraint4.ctx" "finger_R2_blade.tx" -l on; -connectAttr "finger_R2_blade_pointConstraint4.cty" "finger_R2_blade.ty" -l on; -connectAttr "finger_R2_blade_pointConstraint4.ctz" "finger_R2_blade.tz" -l on; -connectAttr "finger_R2_blade_aimConstraint4.crx" "finger_R2_blade.rx" -l on; -connectAttr "finger_R2_blade_aimConstraint4.cry" "finger_R2_blade.ry" -l on; -connectAttr "finger_R2_blade_aimConstraint4.crz" "finger_R2_blade.rz" -l on; -connectAttr "finger_R2_blade.pim" "finger_R2_blade_aimConstraint4.cpim"; -connectAttr "finger_R2_blade.t" "finger_R2_blade_aimConstraint4.ct"; -connectAttr "finger_R2_blade.rp" "finger_R2_blade_aimConstraint4.crp"; -connectAttr "finger_R2_blade.rpt" "finger_R2_blade_aimConstraint4.crt"; -connectAttr "finger_R2_blade.ro" "finger_R2_blade_aimConstraint4.cro"; -connectAttr "finger_R2_0_loc.t" "finger_R2_blade_aimConstraint4.tg[0].tt"; -connectAttr "finger_R2_0_loc.rp" "finger_R2_blade_aimConstraint4.tg[0].trp"; -connectAttr "finger_R2_0_loc.rpt" "finger_R2_blade_aimConstraint4.tg[0].trt"; -connectAttr "finger_R2_0_loc.pm" "finger_R2_blade_aimConstraint4.tg[0].tpm"; -connectAttr "finger_R2_blade_aimConstraint4.w0" "finger_R2_blade_aimConstraint4.tg[0].tw" - ; -connectAttr "finger_R2_root.wm" "finger_R2_blade_aimConstraint4.wum"; -connectAttr "unitConversion144.o" "finger_R2_blade_aimConstraint4.ox"; -connectAttr "finger_R2_blade.pim" "finger_R2_blade_pointConstraint4.cpim"; -connectAttr "finger_R2_blade.rp" "finger_R2_blade_pointConstraint4.crp"; -connectAttr "finger_R2_blade.rpt" "finger_R2_blade_pointConstraint4.crt"; -connectAttr "finger_R2_root.t" "finger_R2_blade_pointConstraint4.tg[0].tt"; -connectAttr "finger_R2_root.rp" "finger_R2_blade_pointConstraint4.tg[0].trp"; -connectAttr "finger_R2_root.rpt" "finger_R2_blade_pointConstraint4.tg[0].trt"; -connectAttr "finger_R2_root.pm" "finger_R2_blade_pointConstraint4.tg[0].tpm"; -connectAttr "finger_R2_blade_pointConstraint4.w0" "finger_R2_blade_pointConstraint4.tg[0].tw" - ; -connectAttr "mgear_curveCns433.og[0]" "finger_R2_crvShape.cr"; -connectAttr "tweak581.pl[0].cp[0]" "finger_R2_crvShape.twl"; -connectAttr "mgear_curveCns433GroupId.id" "finger_R2_crvShape.iog.og[0].gid"; -connectAttr "mgear_curveCns433Set.mwc" "finger_R2_crvShape.iog.og[0].gco"; -connectAttr "groupId8731.id" "finger_R2_crvShape.iog.og[1].gid"; -connectAttr "tweakSet581.mwc" "finger_R2_crvShape.iog.og[1].gco"; -connectAttr "finger_R1_blade_pointConstraint4.ctx" "finger_R1_blade.tx" -l on; -connectAttr "finger_R1_blade_pointConstraint4.cty" "finger_R1_blade.ty" -l on; -connectAttr "finger_R1_blade_pointConstraint4.ctz" "finger_R1_blade.tz" -l on; -connectAttr "finger_R1_blade_aimConstraint4.crx" "finger_R1_blade.rx" -l on; -connectAttr "finger_R1_blade_aimConstraint4.cry" "finger_R1_blade.ry" -l on; -connectAttr "finger_R1_blade_aimConstraint4.crz" "finger_R1_blade.rz" -l on; -connectAttr "finger_R1_blade.pim" "finger_R1_blade_aimConstraint4.cpim"; -connectAttr "finger_R1_blade.t" "finger_R1_blade_aimConstraint4.ct"; -connectAttr "finger_R1_blade.rp" "finger_R1_blade_aimConstraint4.crp"; -connectAttr "finger_R1_blade.rpt" "finger_R1_blade_aimConstraint4.crt"; -connectAttr "finger_R1_blade.ro" "finger_R1_blade_aimConstraint4.cro"; -connectAttr "finger_R1_0_loc.t" "finger_R1_blade_aimConstraint4.tg[0].tt"; -connectAttr "finger_R1_0_loc.rp" "finger_R1_blade_aimConstraint4.tg[0].trp"; -connectAttr "finger_R1_0_loc.rpt" "finger_R1_blade_aimConstraint4.tg[0].trt"; -connectAttr "finger_R1_0_loc.pm" "finger_R1_blade_aimConstraint4.tg[0].tpm"; -connectAttr "finger_R1_blade_aimConstraint4.w0" "finger_R1_blade_aimConstraint4.tg[0].tw" - ; -connectAttr "finger_R1_root.wm" "finger_R1_blade_aimConstraint4.wum"; -connectAttr "unitConversion145.o" "finger_R1_blade_aimConstraint4.ox"; -connectAttr "finger_R1_blade.pim" "finger_R1_blade_pointConstraint4.cpim"; -connectAttr "finger_R1_blade.rp" "finger_R1_blade_pointConstraint4.crp"; -connectAttr "finger_R1_blade.rpt" "finger_R1_blade_pointConstraint4.crt"; -connectAttr "finger_R1_root.t" "finger_R1_blade_pointConstraint4.tg[0].tt"; -connectAttr "finger_R1_root.rp" "finger_R1_blade_pointConstraint4.tg[0].trp"; -connectAttr "finger_R1_root.rpt" "finger_R1_blade_pointConstraint4.tg[0].trt"; -connectAttr "finger_R1_root.pm" "finger_R1_blade_pointConstraint4.tg[0].tpm"; -connectAttr "finger_R1_blade_pointConstraint4.w0" "finger_R1_blade_pointConstraint4.tg[0].tw" - ; -connectAttr "mgear_curveCns434.og[0]" "finger_R1_crvShape.cr"; -connectAttr "tweak582.pl[0].cp[0]" "finger_R1_crvShape.twl"; -connectAttr "mgear_curveCns434GroupId.id" "finger_R1_crvShape.iog.og[0].gid"; -connectAttr "mgear_curveCns434Set.mwc" "finger_R1_crvShape.iog.og[0].gco"; -connectAttr "groupId8733.id" "finger_R1_crvShape.iog.og[1].gid"; -connectAttr "tweakSet582.mwc" "finger_R1_crvShape.iog.og[1].gco"; -connectAttr "meta_R0_blade_pointConstraint4.ctx" "meta_R0_blade.tx" -l on; -connectAttr "meta_R0_blade_pointConstraint4.cty" "meta_R0_blade.ty" -l on; -connectAttr "meta_R0_blade_pointConstraint4.ctz" "meta_R0_blade.tz" -l on; -connectAttr "meta_R0_blade_aimConstraint4.crx" "meta_R0_blade.rx" -l on; -connectAttr "meta_R0_blade_aimConstraint4.cry" "meta_R0_blade.ry" -l on; -connectAttr "meta_R0_blade_aimConstraint4.crz" "meta_R0_blade.rz" -l on; -connectAttr "meta_R0_blade.pim" "meta_R0_blade_aimConstraint4.cpim"; -connectAttr "meta_R0_blade.t" "meta_R0_blade_aimConstraint4.ct"; -connectAttr "meta_R0_blade.rp" "meta_R0_blade_aimConstraint4.crp"; -connectAttr "meta_R0_blade.rpt" "meta_R0_blade_aimConstraint4.crt"; -connectAttr "meta_R0_blade.ro" "meta_R0_blade_aimConstraint4.cro"; -connectAttr "meta_R0_0_loc.t" "meta_R0_blade_aimConstraint4.tg[0].tt"; -connectAttr "meta_R0_0_loc.rp" "meta_R0_blade_aimConstraint4.tg[0].trp"; -connectAttr "meta_R0_0_loc.rpt" "meta_R0_blade_aimConstraint4.tg[0].trt"; -connectAttr "meta_R0_0_loc.pm" "meta_R0_blade_aimConstraint4.tg[0].tpm"; -connectAttr "meta_R0_blade_aimConstraint4.w0" "meta_R0_blade_aimConstraint4.tg[0].tw" - ; -connectAttr "meta_R0_root.wm" "meta_R0_blade_aimConstraint4.wum"; -connectAttr "unitConversion142.o" "meta_R0_blade_aimConstraint4.ox"; -connectAttr "meta_R0_blade.pim" "meta_R0_blade_pointConstraint4.cpim"; -connectAttr "meta_R0_blade.rp" "meta_R0_blade_pointConstraint4.crp"; -connectAttr "meta_R0_blade.rpt" "meta_R0_blade_pointConstraint4.crt"; -connectAttr "meta_R0_root.t" "meta_R0_blade_pointConstraint4.tg[0].tt"; -connectAttr "meta_R0_root.rp" "meta_R0_blade_pointConstraint4.tg[0].trp"; -connectAttr "meta_R0_root.rpt" "meta_R0_blade_pointConstraint4.tg[0].trt"; -connectAttr "meta_R0_root.pm" "meta_R0_blade_pointConstraint4.tg[0].tpm"; -connectAttr "meta_R0_blade_pointConstraint4.w0" "meta_R0_blade_pointConstraint4.tg[0].tw" - ; -connectAttr "mgear_curveCns431.og[0]" "meta_R0_crvShape.cr"; -connectAttr "tweak579.pl[0].cp[0]" "meta_R0_crvShape.twl"; -connectAttr "mgear_curveCns431GroupId.id" "meta_R0_crvShape.iog.og[0].gid"; -connectAttr "mgear_curveCns431Set.mwc" "meta_R0_crvShape.iog.og[0].gco"; -connectAttr "groupId8727.id" "meta_R0_crvShape.iog.og[1].gid"; -connectAttr "tweakSet579.mwc" "meta_R0_crvShape.iog.og[1].gco"; -connectAttr "finger_R0_blade_pointConstraint4.ctx" "finger_R0_blade.tx" -l on; -connectAttr "finger_R0_blade_pointConstraint4.cty" "finger_R0_blade.ty" -l on; -connectAttr "finger_R0_blade_pointConstraint4.ctz" "finger_R0_blade.tz" -l on; -connectAttr "finger_R0_blade_aimConstraint4.crx" "finger_R0_blade.rx" -l on; -connectAttr "finger_R0_blade_aimConstraint4.cry" "finger_R0_blade.ry" -l on; -connectAttr "finger_R0_blade_aimConstraint4.crz" "finger_R0_blade.rz" -l on; -connectAttr "finger_R0_blade.pim" "finger_R0_blade_aimConstraint4.cpim"; -connectAttr "finger_R0_blade.t" "finger_R0_blade_aimConstraint4.ct"; -connectAttr "finger_R0_blade.rp" "finger_R0_blade_aimConstraint4.crp"; -connectAttr "finger_R0_blade.rpt" "finger_R0_blade_aimConstraint4.crt"; -connectAttr "finger_R0_blade.ro" "finger_R0_blade_aimConstraint4.cro"; -connectAttr "finger_R0_0_loc.t" "finger_R0_blade_aimConstraint4.tg[0].tt"; -connectAttr "finger_R0_0_loc.rp" "finger_R0_blade_aimConstraint4.tg[0].trp"; -connectAttr "finger_R0_0_loc.rpt" "finger_R0_blade_aimConstraint4.tg[0].trt"; -connectAttr "finger_R0_0_loc.pm" "finger_R0_blade_aimConstraint4.tg[0].tpm"; -connectAttr "finger_R0_blade_aimConstraint4.w0" "finger_R0_blade_aimConstraint4.tg[0].tw" - ; -connectAttr "finger_R0_root.wm" "finger_R0_blade_aimConstraint4.wum"; -connectAttr "unitConversion146.o" "finger_R0_blade_aimConstraint4.ox"; -connectAttr "finger_R0_blade.pim" "finger_R0_blade_pointConstraint4.cpim"; -connectAttr "finger_R0_blade.rp" "finger_R0_blade_pointConstraint4.crp"; -connectAttr "finger_R0_blade.rpt" "finger_R0_blade_pointConstraint4.crt"; -connectAttr "finger_R0_root.t" "finger_R0_blade_pointConstraint4.tg[0].tt"; -connectAttr "finger_R0_root.rp" "finger_R0_blade_pointConstraint4.tg[0].trp"; -connectAttr "finger_R0_root.rpt" "finger_R0_blade_pointConstraint4.tg[0].trt"; -connectAttr "finger_R0_root.pm" "finger_R0_blade_pointConstraint4.tg[0].tpm"; -connectAttr "finger_R0_blade_pointConstraint4.w0" "finger_R0_blade_pointConstraint4.tg[0].tw" - ; -connectAttr "mgear_curveCns435.og[0]" "finger_R0_crvShape.cr"; -connectAttr "tweak583.pl[0].cp[0]" "finger_R0_crvShape.twl"; -connectAttr "mgear_curveCns435GroupId.id" "finger_R0_crvShape.iog.og[0].gid"; -connectAttr "mgear_curveCns435Set.mwc" "finger_R0_crvShape.iog.og[0].gco"; -connectAttr "groupId8735.id" "finger_R0_crvShape.iog.og[1].gid"; -connectAttr "tweakSet583.mwc" "finger_R0_crvShape.iog.og[1].gco"; -connectAttr "thumb_R0_blade_pointConstraint4.ctx" "thumb_R0_blade.tx" -l on; -connectAttr "thumb_R0_blade_pointConstraint4.cty" "thumb_R0_blade.ty" -l on; -connectAttr "thumb_R0_blade_pointConstraint4.ctz" "thumb_R0_blade.tz" -l on; -connectAttr "thumb_R0_blade_aimConstraint4.crx" "thumb_R0_blade.rx" -l on; -connectAttr "thumb_R0_blade_aimConstraint4.cry" "thumb_R0_blade.ry" -l on; -connectAttr "thumb_R0_blade_aimConstraint4.crz" "thumb_R0_blade.rz" -l on; -connectAttr "thumb_R0_blade.pim" "thumb_R0_blade_aimConstraint4.cpim"; -connectAttr "thumb_R0_blade.t" "thumb_R0_blade_aimConstraint4.ct"; -connectAttr "thumb_R0_blade.rp" "thumb_R0_blade_aimConstraint4.crp"; -connectAttr "thumb_R0_blade.rpt" "thumb_R0_blade_aimConstraint4.crt"; -connectAttr "thumb_R0_blade.ro" "thumb_R0_blade_aimConstraint4.cro"; -connectAttr "thumb_R0_0_loc.t" "thumb_R0_blade_aimConstraint4.tg[0].tt"; -connectAttr "thumb_R0_0_loc.rp" "thumb_R0_blade_aimConstraint4.tg[0].trp"; -connectAttr "thumb_R0_0_loc.rpt" "thumb_R0_blade_aimConstraint4.tg[0].trt"; -connectAttr "thumb_R0_0_loc.pm" "thumb_R0_blade_aimConstraint4.tg[0].tpm"; -connectAttr "thumb_R0_blade_aimConstraint4.w0" "thumb_R0_blade_aimConstraint4.tg[0].tw" - ; -connectAttr "thumb_R0_root.wm" "thumb_R0_blade_aimConstraint4.wum"; -connectAttr "unitConversion147.o" "thumb_R0_blade_aimConstraint4.ox"; -connectAttr "thumb_R0_blade.pim" "thumb_R0_blade_pointConstraint4.cpim"; -connectAttr "thumb_R0_blade.rp" "thumb_R0_blade_pointConstraint4.crp"; -connectAttr "thumb_R0_blade.rpt" "thumb_R0_blade_pointConstraint4.crt"; -connectAttr "thumb_R0_root.t" "thumb_R0_blade_pointConstraint4.tg[0].tt"; -connectAttr "thumb_R0_root.rp" "thumb_R0_blade_pointConstraint4.tg[0].trp"; -connectAttr "thumb_R0_root.rpt" "thumb_R0_blade_pointConstraint4.tg[0].trt"; -connectAttr "thumb_R0_root.pm" "thumb_R0_blade_pointConstraint4.tg[0].tpm"; -connectAttr "thumb_R0_blade_pointConstraint4.w0" "thumb_R0_blade_pointConstraint4.tg[0].tw" - ; -connectAttr "mgear_curveCns436.og[0]" "thumb_R0_crvShape.cr"; -connectAttr "tweak584.pl[0].cp[0]" "thumb_R0_crvShape.twl"; -connectAttr "mgear_curveCns436GroupId.id" "thumb_R0_crvShape.iog.og[0].gid"; -connectAttr "mgear_curveCns436Set.mwc" "thumb_R0_crvShape.iog.og[0].gco"; -connectAttr "groupId8737.id" "thumb_R0_crvShape.iog.og[1].gid"; -connectAttr "tweakSet584.mwc" "thumb_R0_crvShape.iog.og[1].gco"; -connectAttr "mgear_curveCns430.og[0]" "arm_R0_crvShape.cr"; -connectAttr "tweak578.pl[0].cp[0]" "arm_R0_crvShape.twl"; -connectAttr "mgear_curveCns430GroupId.id" "arm_R0_crvShape.iog.og[0].gid"; -connectAttr "mgear_curveCns430Set.mwc" "arm_R0_crvShape.iog.og[0].gco"; -connectAttr "groupId8725.id" "arm_R0_crvShape.iog.og[1].gid"; -connectAttr "tweakSet578.mwc" "arm_R0_crvShape.iog.og[1].gco"; -connectAttr "shoulder_R0_blade_pointConstraint4.ctx" "shoulder_R0_blade.tx" -l on - ; -connectAttr "shoulder_R0_blade_pointConstraint4.cty" "shoulder_R0_blade.ty" -l on - ; -connectAttr "shoulder_R0_blade_pointConstraint4.ctz" "shoulder_R0_blade.tz" -l on - ; -connectAttr "shoulder_R0_blade_aimConstraint4.crx" "shoulder_R0_blade.rx" -l on; -connectAttr "shoulder_R0_blade_aimConstraint4.cry" "shoulder_R0_blade.ry" -l on; -connectAttr "shoulder_R0_blade_aimConstraint4.crz" "shoulder_R0_blade.rz" -l on; -connectAttr "shoulder_R0_blade.pim" "shoulder_R0_blade_aimConstraint4.cpim"; -connectAttr "shoulder_R0_blade.t" "shoulder_R0_blade_aimConstraint4.ct"; -connectAttr "shoulder_R0_blade.rp" "shoulder_R0_blade_aimConstraint4.crp"; -connectAttr "shoulder_R0_blade.rpt" "shoulder_R0_blade_aimConstraint4.crt"; -connectAttr "shoulder_R0_blade.ro" "shoulder_R0_blade_aimConstraint4.cro"; -connectAttr "shoulder_R0_tip.t" "shoulder_R0_blade_aimConstraint4.tg[0].tt"; -connectAttr "shoulder_R0_tip.rp" "shoulder_R0_blade_aimConstraint4.tg[0].trp"; -connectAttr "shoulder_R0_tip.rpt" "shoulder_R0_blade_aimConstraint4.tg[0].trt"; -connectAttr "shoulder_R0_tip.pm" "shoulder_R0_blade_aimConstraint4.tg[0].tpm"; -connectAttr "shoulder_R0_blade_aimConstraint4.w0" "shoulder_R0_blade_aimConstraint4.tg[0].tw" - ; -connectAttr "shoulder_R0_root.wm" "shoulder_R0_blade_aimConstraint4.wum"; -connectAttr "unitConversion141.o" "shoulder_R0_blade_aimConstraint4.ox"; -connectAttr "shoulder_R0_blade.pim" "shoulder_R0_blade_pointConstraint4.cpim"; -connectAttr "shoulder_R0_blade.rp" "shoulder_R0_blade_pointConstraint4.crp"; -connectAttr "shoulder_R0_blade.rpt" "shoulder_R0_blade_pointConstraint4.crt"; -connectAttr "shoulder_R0_root.t" "shoulder_R0_blade_pointConstraint4.tg[0].tt"; -connectAttr "shoulder_R0_root.rp" "shoulder_R0_blade_pointConstraint4.tg[0].trp" - ; -connectAttr "shoulder_R0_root.rpt" "shoulder_R0_blade_pointConstraint4.tg[0].trt" - ; -connectAttr "shoulder_R0_root.pm" "shoulder_R0_blade_pointConstraint4.tg[0].tpm" - ; -connectAttr "shoulder_R0_blade_pointConstraint4.w0" "shoulder_R0_blade_pointConstraint4.tg[0].tw" - ; -connectAttr "mgear_curveCns429.og[0]" "shoulder_R0_crvShape.cr"; -connectAttr "tweak577.pl[0].cp[0]" "shoulder_R0_crvShape.twl"; -connectAttr "mgear_curveCns429GroupId.id" "shoulder_R0_crvShape.iog.og[0].gid"; -connectAttr "mgear_curveCns429Set.mwc" "shoulder_R0_crvShape.iog.og[0].gco"; -connectAttr "groupId8723.id" "shoulder_R0_crvShape.iog.og[1].gid"; -connectAttr "tweakSet577.mwc" "shoulder_R0_crvShape.iog.og[1].gco"; +connectAttr "arm_R0_root_st_profile.o" "arm_R0_root.st_profile"; +connectAttr "arm_R0_root_sq_profile.o" "arm_R0_root.sq_profile"; +connectAttr "finger_R3_blade_pointConstraint1.ctx" "finger_R3_blade.tx" -l on; +connectAttr "finger_R3_blade_pointConstraint1.cty" "finger_R3_blade.ty" -l on; +connectAttr "finger_R3_blade_pointConstraint1.ctz" "finger_R3_blade.tz" -l on; +connectAttr "finger_R3_blade_aimConstraint1.crx" "finger_R3_blade.rx" -l on; +connectAttr "finger_R3_blade_aimConstraint1.cry" "finger_R3_blade.ry" -l on; +connectAttr "finger_R3_blade_aimConstraint1.crz" "finger_R3_blade.rz" -l on; +connectAttr "finger_R3_blade.pim" "finger_R3_blade_aimConstraint1.cpim"; +connectAttr "finger_R3_blade.t" "finger_R3_blade_aimConstraint1.ct"; +connectAttr "finger_R3_blade.rp" "finger_R3_blade_aimConstraint1.crp"; +connectAttr "finger_R3_blade.rpt" "finger_R3_blade_aimConstraint1.crt"; +connectAttr "finger_R3_blade.ro" "finger_R3_blade_aimConstraint1.cro"; +connectAttr "finger_R3_0_loc.t" "finger_R3_blade_aimConstraint1.tg[0].tt"; +connectAttr "finger_R3_0_loc.rp" "finger_R3_blade_aimConstraint1.tg[0].trp"; +connectAttr "finger_R3_0_loc.rpt" "finger_R3_blade_aimConstraint1.tg[0].trt"; +connectAttr "finger_R3_0_loc.pm" "finger_R3_blade_aimConstraint1.tg[0].tpm"; +connectAttr "finger_R3_blade_aimConstraint1.w0" "finger_R3_blade_aimConstraint1.tg[0].tw" + ; +connectAttr "finger_R3_root.wm" "finger_R3_blade_aimConstraint1.wum"; +connectAttr "unitConversion143.o" "finger_R3_blade_aimConstraint1.ox"; +connectAttr "finger_R3_blade.pim" "finger_R3_blade_pointConstraint1.cpim"; +connectAttr "finger_R3_blade.rp" "finger_R3_blade_pointConstraint1.crp"; +connectAttr "finger_R3_blade.rpt" "finger_R3_blade_pointConstraint1.crt"; +connectAttr "finger_R3_root.t" "finger_R3_blade_pointConstraint1.tg[0].tt"; +connectAttr "finger_R3_root.rp" "finger_R3_blade_pointConstraint1.tg[0].trp"; +connectAttr "finger_R3_root.rpt" "finger_R3_blade_pointConstraint1.tg[0].trt"; +connectAttr "finger_R3_root.pm" "finger_R3_blade_pointConstraint1.tg[0].tpm"; +connectAttr "finger_R3_blade_pointConstraint1.w0" "finger_R3_blade_pointConstraint1.tg[0].tw" + ; +connectAttr "mgear_curveCns443.og[0]" "finger_R3_crvShape.cr"; +connectAttr "tweak591.pl[0].cp[0]" "finger_R3_crvShape.twl"; +connectAttr "mgear_curveCns443GroupId.id" "finger_R3_crvShape.iog.og[0].gid"; +connectAttr "mgear_curveCns443Set.mwc" "finger_R3_crvShape.iog.og[0].gco"; +connectAttr "groupId8751.id" "finger_R3_crvShape.iog.og[1].gid"; +connectAttr "tweakSet591.mwc" "finger_R3_crvShape.iog.og[1].gco"; +connectAttr "finger_R2_blade_pointConstraint1.ctx" "finger_R2_blade.tx" -l on; +connectAttr "finger_R2_blade_pointConstraint1.cty" "finger_R2_blade.ty" -l on; +connectAttr "finger_R2_blade_pointConstraint1.ctz" "finger_R2_blade.tz" -l on; +connectAttr "finger_R2_blade_aimConstraint1.crx" "finger_R2_blade.rx" -l on; +connectAttr "finger_R2_blade_aimConstraint1.cry" "finger_R2_blade.ry" -l on; +connectAttr "finger_R2_blade_aimConstraint1.crz" "finger_R2_blade.rz" -l on; +connectAttr "finger_R2_blade.pim" "finger_R2_blade_aimConstraint1.cpim"; +connectAttr "finger_R2_blade.t" "finger_R2_blade_aimConstraint1.ct"; +connectAttr "finger_R2_blade.rp" "finger_R2_blade_aimConstraint1.crp"; +connectAttr "finger_R2_blade.rpt" "finger_R2_blade_aimConstraint1.crt"; +connectAttr "finger_R2_blade.ro" "finger_R2_blade_aimConstraint1.cro"; +connectAttr "finger_R2_0_loc.t" "finger_R2_blade_aimConstraint1.tg[0].tt"; +connectAttr "finger_R2_0_loc.rp" "finger_R2_blade_aimConstraint1.tg[0].trp"; +connectAttr "finger_R2_0_loc.rpt" "finger_R2_blade_aimConstraint1.tg[0].trt"; +connectAttr "finger_R2_0_loc.pm" "finger_R2_blade_aimConstraint1.tg[0].tpm"; +connectAttr "finger_R2_blade_aimConstraint1.w0" "finger_R2_blade_aimConstraint1.tg[0].tw" + ; +connectAttr "finger_R2_root.wm" "finger_R2_blade_aimConstraint1.wum"; +connectAttr "unitConversion144.o" "finger_R2_blade_aimConstraint1.ox"; +connectAttr "finger_R2_blade.pim" "finger_R2_blade_pointConstraint1.cpim"; +connectAttr "finger_R2_blade.rp" "finger_R2_blade_pointConstraint1.crp"; +connectAttr "finger_R2_blade.rpt" "finger_R2_blade_pointConstraint1.crt"; +connectAttr "finger_R2_root.t" "finger_R2_blade_pointConstraint1.tg[0].tt"; +connectAttr "finger_R2_root.rp" "finger_R2_blade_pointConstraint1.tg[0].trp"; +connectAttr "finger_R2_root.rpt" "finger_R2_blade_pointConstraint1.tg[0].trt"; +connectAttr "finger_R2_root.pm" "finger_R2_blade_pointConstraint1.tg[0].tpm"; +connectAttr "finger_R2_blade_pointConstraint1.w0" "finger_R2_blade_pointConstraint1.tg[0].tw" + ; +connectAttr "mgear_curveCns444.og[0]" "finger_R2_crvShape.cr"; +connectAttr "tweak592.pl[0].cp[0]" "finger_R2_crvShape.twl"; +connectAttr "mgear_curveCns444GroupId.id" "finger_R2_crvShape.iog.og[0].gid"; +connectAttr "mgear_curveCns444Set.mwc" "finger_R2_crvShape.iog.og[0].gco"; +connectAttr "groupId8753.id" "finger_R2_crvShape.iog.og[1].gid"; +connectAttr "tweakSet592.mwc" "finger_R2_crvShape.iog.og[1].gco"; +connectAttr "finger_R1_blade_pointConstraint1.ctx" "finger_R1_blade.tx" -l on; +connectAttr "finger_R1_blade_pointConstraint1.cty" "finger_R1_blade.ty" -l on; +connectAttr "finger_R1_blade_pointConstraint1.ctz" "finger_R1_blade.tz" -l on; +connectAttr "finger_R1_blade_aimConstraint1.crx" "finger_R1_blade.rx" -l on; +connectAttr "finger_R1_blade_aimConstraint1.cry" "finger_R1_blade.ry" -l on; +connectAttr "finger_R1_blade_aimConstraint1.crz" "finger_R1_blade.rz" -l on; +connectAttr "finger_R1_blade.pim" "finger_R1_blade_aimConstraint1.cpim"; +connectAttr "finger_R1_blade.t" "finger_R1_blade_aimConstraint1.ct"; +connectAttr "finger_R1_blade.rp" "finger_R1_blade_aimConstraint1.crp"; +connectAttr "finger_R1_blade.rpt" "finger_R1_blade_aimConstraint1.crt"; +connectAttr "finger_R1_blade.ro" "finger_R1_blade_aimConstraint1.cro"; +connectAttr "finger_R1_0_loc.t" "finger_R1_blade_aimConstraint1.tg[0].tt"; +connectAttr "finger_R1_0_loc.rp" "finger_R1_blade_aimConstraint1.tg[0].trp"; +connectAttr "finger_R1_0_loc.rpt" "finger_R1_blade_aimConstraint1.tg[0].trt"; +connectAttr "finger_R1_0_loc.pm" "finger_R1_blade_aimConstraint1.tg[0].tpm"; +connectAttr "finger_R1_blade_aimConstraint1.w0" "finger_R1_blade_aimConstraint1.tg[0].tw" + ; +connectAttr "finger_R1_root.wm" "finger_R1_blade_aimConstraint1.wum"; +connectAttr "unitConversion145.o" "finger_R1_blade_aimConstraint1.ox"; +connectAttr "finger_R1_blade.pim" "finger_R1_blade_pointConstraint1.cpim"; +connectAttr "finger_R1_blade.rp" "finger_R1_blade_pointConstraint1.crp"; +connectAttr "finger_R1_blade.rpt" "finger_R1_blade_pointConstraint1.crt"; +connectAttr "finger_R1_root.t" "finger_R1_blade_pointConstraint1.tg[0].tt"; +connectAttr "finger_R1_root.rp" "finger_R1_blade_pointConstraint1.tg[0].trp"; +connectAttr "finger_R1_root.rpt" "finger_R1_blade_pointConstraint1.tg[0].trt"; +connectAttr "finger_R1_root.pm" "finger_R1_blade_pointConstraint1.tg[0].tpm"; +connectAttr "finger_R1_blade_pointConstraint1.w0" "finger_R1_blade_pointConstraint1.tg[0].tw" + ; +connectAttr "mgear_curveCns445.og[0]" "finger_R1_crvShape.cr"; +connectAttr "tweak593.pl[0].cp[0]" "finger_R1_crvShape.twl"; +connectAttr "mgear_curveCns445GroupId.id" "finger_R1_crvShape.iog.og[0].gid"; +connectAttr "mgear_curveCns445Set.mwc" "finger_R1_crvShape.iog.og[0].gco"; +connectAttr "groupId8755.id" "finger_R1_crvShape.iog.og[1].gid"; +connectAttr "tweakSet593.mwc" "finger_R1_crvShape.iog.og[1].gco"; +connectAttr "meta_R0_blade_pointConstraint1.ctx" "meta_R0_blade.tx" -l on; +connectAttr "meta_R0_blade_pointConstraint1.cty" "meta_R0_blade.ty" -l on; +connectAttr "meta_R0_blade_pointConstraint1.ctz" "meta_R0_blade.tz" -l on; +connectAttr "meta_R0_blade_aimConstraint1.crx" "meta_R0_blade.rx" -l on; +connectAttr "meta_R0_blade_aimConstraint1.cry" "meta_R0_blade.ry" -l on; +connectAttr "meta_R0_blade_aimConstraint1.crz" "meta_R0_blade.rz" -l on; +connectAttr "meta_R0_blade.pim" "meta_R0_blade_aimConstraint1.cpim"; +connectAttr "meta_R0_blade.t" "meta_R0_blade_aimConstraint1.ct"; +connectAttr "meta_R0_blade.rp" "meta_R0_blade_aimConstraint1.crp"; +connectAttr "meta_R0_blade.rpt" "meta_R0_blade_aimConstraint1.crt"; +connectAttr "meta_R0_blade.ro" "meta_R0_blade_aimConstraint1.cro"; +connectAttr "meta_R0_0_loc.t" "meta_R0_blade_aimConstraint1.tg[0].tt"; +connectAttr "meta_R0_0_loc.rp" "meta_R0_blade_aimConstraint1.tg[0].trp"; +connectAttr "meta_R0_0_loc.rpt" "meta_R0_blade_aimConstraint1.tg[0].trt"; +connectAttr "meta_R0_0_loc.pm" "meta_R0_blade_aimConstraint1.tg[0].tpm"; +connectAttr "meta_R0_blade_aimConstraint1.w0" "meta_R0_blade_aimConstraint1.tg[0].tw" + ; +connectAttr "meta_R0_root.wm" "meta_R0_blade_aimConstraint1.wum"; +connectAttr "unitConversion142.o" "meta_R0_blade_aimConstraint1.ox"; +connectAttr "meta_R0_blade.pim" "meta_R0_blade_pointConstraint1.cpim"; +connectAttr "meta_R0_blade.rp" "meta_R0_blade_pointConstraint1.crp"; +connectAttr "meta_R0_blade.rpt" "meta_R0_blade_pointConstraint1.crt"; +connectAttr "meta_R0_root.t" "meta_R0_blade_pointConstraint1.tg[0].tt"; +connectAttr "meta_R0_root.rp" "meta_R0_blade_pointConstraint1.tg[0].trp"; +connectAttr "meta_R0_root.rpt" "meta_R0_blade_pointConstraint1.tg[0].trt"; +connectAttr "meta_R0_root.pm" "meta_R0_blade_pointConstraint1.tg[0].tpm"; +connectAttr "meta_R0_blade_pointConstraint1.w0" "meta_R0_blade_pointConstraint1.tg[0].tw" + ; +connectAttr "mgear_curveCns442.og[0]" "meta_R0_crvShape.cr"; +connectAttr "tweak590.pl[0].cp[0]" "meta_R0_crvShape.twl"; +connectAttr "mgear_curveCns442GroupId.id" "meta_R0_crvShape.iog.og[0].gid"; +connectAttr "mgear_curveCns442Set.mwc" "meta_R0_crvShape.iog.og[0].gco"; +connectAttr "groupId8749.id" "meta_R0_crvShape.iog.og[1].gid"; +connectAttr "tweakSet590.mwc" "meta_R0_crvShape.iog.og[1].gco"; +connectAttr "finger_R0_blade_pointConstraint1.ctx" "finger_R0_blade.tx" -l on; +connectAttr "finger_R0_blade_pointConstraint1.cty" "finger_R0_blade.ty" -l on; +connectAttr "finger_R0_blade_pointConstraint1.ctz" "finger_R0_blade.tz" -l on; +connectAttr "finger_R0_blade_aimConstraint1.crx" "finger_R0_blade.rx" -l on; +connectAttr "finger_R0_blade_aimConstraint1.cry" "finger_R0_blade.ry" -l on; +connectAttr "finger_R0_blade_aimConstraint1.crz" "finger_R0_blade.rz" -l on; +connectAttr "finger_R0_blade.pim" "finger_R0_blade_aimConstraint1.cpim"; +connectAttr "finger_R0_blade.t" "finger_R0_blade_aimConstraint1.ct"; +connectAttr "finger_R0_blade.rp" "finger_R0_blade_aimConstraint1.crp"; +connectAttr "finger_R0_blade.rpt" "finger_R0_blade_aimConstraint1.crt"; +connectAttr "finger_R0_blade.ro" "finger_R0_blade_aimConstraint1.cro"; +connectAttr "finger_R0_0_loc.t" "finger_R0_blade_aimConstraint1.tg[0].tt"; +connectAttr "finger_R0_0_loc.rp" "finger_R0_blade_aimConstraint1.tg[0].trp"; +connectAttr "finger_R0_0_loc.rpt" "finger_R0_blade_aimConstraint1.tg[0].trt"; +connectAttr "finger_R0_0_loc.pm" "finger_R0_blade_aimConstraint1.tg[0].tpm"; +connectAttr "finger_R0_blade_aimConstraint1.w0" "finger_R0_blade_aimConstraint1.tg[0].tw" + ; +connectAttr "finger_R0_root.wm" "finger_R0_blade_aimConstraint1.wum"; +connectAttr "unitConversion146.o" "finger_R0_blade_aimConstraint1.ox"; +connectAttr "finger_R0_blade.pim" "finger_R0_blade_pointConstraint1.cpim"; +connectAttr "finger_R0_blade.rp" "finger_R0_blade_pointConstraint1.crp"; +connectAttr "finger_R0_blade.rpt" "finger_R0_blade_pointConstraint1.crt"; +connectAttr "finger_R0_root.t" "finger_R0_blade_pointConstraint1.tg[0].tt"; +connectAttr "finger_R0_root.rp" "finger_R0_blade_pointConstraint1.tg[0].trp"; +connectAttr "finger_R0_root.rpt" "finger_R0_blade_pointConstraint1.tg[0].trt"; +connectAttr "finger_R0_root.pm" "finger_R0_blade_pointConstraint1.tg[0].tpm"; +connectAttr "finger_R0_blade_pointConstraint1.w0" "finger_R0_blade_pointConstraint1.tg[0].tw" + ; +connectAttr "mgear_curveCns446.og[0]" "finger_R0_crvShape.cr"; +connectAttr "tweak594.pl[0].cp[0]" "finger_R0_crvShape.twl"; +connectAttr "mgear_curveCns446GroupId.id" "finger_R0_crvShape.iog.og[0].gid"; +connectAttr "mgear_curveCns446Set.mwc" "finger_R0_crvShape.iog.og[0].gco"; +connectAttr "groupId8757.id" "finger_R0_crvShape.iog.og[1].gid"; +connectAttr "tweakSet594.mwc" "finger_R0_crvShape.iog.og[1].gco"; +connectAttr "thumb_R0_blade_pointConstraint1.ctx" "thumb_R0_blade.tx" -l on; +connectAttr "thumb_R0_blade_pointConstraint1.cty" "thumb_R0_blade.ty" -l on; +connectAttr "thumb_R0_blade_pointConstraint1.ctz" "thumb_R0_blade.tz" -l on; +connectAttr "thumb_R0_blade_aimConstraint1.crx" "thumb_R0_blade.rx" -l on; +connectAttr "thumb_R0_blade_aimConstraint1.cry" "thumb_R0_blade.ry" -l on; +connectAttr "thumb_R0_blade_aimConstraint1.crz" "thumb_R0_blade.rz" -l on; +connectAttr "thumb_R0_blade.pim" "thumb_R0_blade_aimConstraint1.cpim"; +connectAttr "thumb_R0_blade.t" "thumb_R0_blade_aimConstraint1.ct"; +connectAttr "thumb_R0_blade.rp" "thumb_R0_blade_aimConstraint1.crp"; +connectAttr "thumb_R0_blade.rpt" "thumb_R0_blade_aimConstraint1.crt"; +connectAttr "thumb_R0_blade.ro" "thumb_R0_blade_aimConstraint1.cro"; +connectAttr "thumb_R0_0_loc.t" "thumb_R0_blade_aimConstraint1.tg[0].tt"; +connectAttr "thumb_R0_0_loc.rp" "thumb_R0_blade_aimConstraint1.tg[0].trp"; +connectAttr "thumb_R0_0_loc.rpt" "thumb_R0_blade_aimConstraint1.tg[0].trt"; +connectAttr "thumb_R0_0_loc.pm" "thumb_R0_blade_aimConstraint1.tg[0].tpm"; +connectAttr "thumb_R0_blade_aimConstraint1.w0" "thumb_R0_blade_aimConstraint1.tg[0].tw" + ; +connectAttr "thumb_R0_root.wm" "thumb_R0_blade_aimConstraint1.wum"; +connectAttr "unitConversion147.o" "thumb_R0_blade_aimConstraint1.ox"; +connectAttr "thumb_R0_blade.pim" "thumb_R0_blade_pointConstraint1.cpim"; +connectAttr "thumb_R0_blade.rp" "thumb_R0_blade_pointConstraint1.crp"; +connectAttr "thumb_R0_blade.rpt" "thumb_R0_blade_pointConstraint1.crt"; +connectAttr "thumb_R0_root.t" "thumb_R0_blade_pointConstraint1.tg[0].tt"; +connectAttr "thumb_R0_root.rp" "thumb_R0_blade_pointConstraint1.tg[0].trp"; +connectAttr "thumb_R0_root.rpt" "thumb_R0_blade_pointConstraint1.tg[0].trt"; +connectAttr "thumb_R0_root.pm" "thumb_R0_blade_pointConstraint1.tg[0].tpm"; +connectAttr "thumb_R0_blade_pointConstraint1.w0" "thumb_R0_blade_pointConstraint1.tg[0].tw" + ; +connectAttr "mgear_curveCns447.og[0]" "thumb_R0_crvShape.cr"; +connectAttr "tweak595.pl[0].cp[0]" "thumb_R0_crvShape.twl"; +connectAttr "mgear_curveCns447GroupId.id" "thumb_R0_crvShape.iog.og[0].gid"; +connectAttr "mgear_curveCns447Set.mwc" "thumb_R0_crvShape.iog.og[0].gco"; +connectAttr "groupId8759.id" "thumb_R0_crvShape.iog.og[1].gid"; +connectAttr "tweakSet595.mwc" "thumb_R0_crvShape.iog.og[1].gco"; +connectAttr "mgear_curveCns441.og[0]" "arm_R0_crvShape.cr"; +connectAttr "tweak589.pl[0].cp[0]" "arm_R0_crvShape.twl"; +connectAttr "mgear_curveCns441GroupId.id" "arm_R0_crvShape.iog.og[0].gid"; +connectAttr "mgear_curveCns441Set.mwc" "arm_R0_crvShape.iog.og[0].gco"; +connectAttr "groupId8747.id" "arm_R0_crvShape.iog.og[1].gid"; +connectAttr "tweakSet589.mwc" "arm_R0_crvShape.iog.og[1].gco"; +connectAttr "shoulder_R0_blade_pointConstraint1.ctx" "shoulder_R0_blade.tx" -l on + ; +connectAttr "shoulder_R0_blade_pointConstraint1.cty" "shoulder_R0_blade.ty" -l on + ; +connectAttr "shoulder_R0_blade_pointConstraint1.ctz" "shoulder_R0_blade.tz" -l on + ; +connectAttr "shoulder_R0_blade_aimConstraint1.crx" "shoulder_R0_blade.rx" -l on; +connectAttr "shoulder_R0_blade_aimConstraint1.cry" "shoulder_R0_blade.ry" -l on; +connectAttr "shoulder_R0_blade_aimConstraint1.crz" "shoulder_R0_blade.rz" -l on; +connectAttr "shoulder_R0_blade.pim" "shoulder_R0_blade_aimConstraint1.cpim"; +connectAttr "shoulder_R0_blade.t" "shoulder_R0_blade_aimConstraint1.ct"; +connectAttr "shoulder_R0_blade.rp" "shoulder_R0_blade_aimConstraint1.crp"; +connectAttr "shoulder_R0_blade.rpt" "shoulder_R0_blade_aimConstraint1.crt"; +connectAttr "shoulder_R0_blade.ro" "shoulder_R0_blade_aimConstraint1.cro"; +connectAttr "shoulder_R0_tip.t" "shoulder_R0_blade_aimConstraint1.tg[0].tt"; +connectAttr "shoulder_R0_tip.rp" "shoulder_R0_blade_aimConstraint1.tg[0].trp"; +connectAttr "shoulder_R0_tip.rpt" "shoulder_R0_blade_aimConstraint1.tg[0].trt"; +connectAttr "shoulder_R0_tip.pm" "shoulder_R0_blade_aimConstraint1.tg[0].tpm"; +connectAttr "shoulder_R0_blade_aimConstraint1.w0" "shoulder_R0_blade_aimConstraint1.tg[0].tw" + ; +connectAttr "shoulder_R0_root.wm" "shoulder_R0_blade_aimConstraint1.wum"; +connectAttr "unitConversion141.o" "shoulder_R0_blade_aimConstraint1.ox"; +connectAttr "shoulder_R0_blade.pim" "shoulder_R0_blade_pointConstraint1.cpim"; +connectAttr "shoulder_R0_blade.rp" "shoulder_R0_blade_pointConstraint1.crp"; +connectAttr "shoulder_R0_blade.rpt" "shoulder_R0_blade_pointConstraint1.crt"; +connectAttr "shoulder_R0_root.t" "shoulder_R0_blade_pointConstraint1.tg[0].tt"; +connectAttr "shoulder_R0_root.rp" "shoulder_R0_blade_pointConstraint1.tg[0].trp" + ; +connectAttr "shoulder_R0_root.rpt" "shoulder_R0_blade_pointConstraint1.tg[0].trt" + ; +connectAttr "shoulder_R0_root.pm" "shoulder_R0_blade_pointConstraint1.tg[0].tpm" + ; +connectAttr "shoulder_R0_blade_pointConstraint1.w0" "shoulder_R0_blade_pointConstraint1.tg[0].tw" + ; +connectAttr "mgear_curveCns440.og[0]" "shoulder_R0_crvShape.cr"; +connectAttr "tweak588.pl[0].cp[0]" "shoulder_R0_crvShape.twl"; +connectAttr "mgear_curveCns440GroupId.id" "shoulder_R0_crvShape.iog.og[0].gid"; +connectAttr "mgear_curveCns440Set.mwc" "shoulder_R0_crvShape.iog.og[0].gco"; +connectAttr "groupId8745.id" "shoulder_R0_crvShape.iog.og[1].gid"; +connectAttr "tweakSet588.mwc" "shoulder_R0_crvShape.iog.og[1].gco"; connectAttr "spine_C0_blade_pointConstraint9.ctx" "spine_C0_blade.tx" -l on; connectAttr "spine_C0_blade_pointConstraint9.cty" "spine_C0_blade.ty" -l on; connectAttr "spine_C0_blade_pointConstraint9.ctz" "spine_C0_blade.tz" -l on; @@ -16677,101 +16660,24 @@ connectAttr "groupId8739.id" "leg_L0_crvShape.iog.og[1].gid"; connectAttr "tweakSet585.mwc" "leg_L0_crvShape.iog.og[1].gco"; connectAttr "leg_R0_root_st_profile.o" "leg_R0_root.st_profile"; connectAttr "leg_R0_root_sq_profile.o" "leg_R0_root.sq_profile"; -connectAttr "mgear_curveCns441.og[0]" "foot_R0_crvShape.cr"; -connectAttr "tweak589.pl[0].cp[0]" "foot_R0_crvShape.twl"; -connectAttr "mgear_curveCns441GroupId.id" "foot_R0_crvShape.iog.og[0].gid"; -connectAttr "mgear_curveCns441Set.mwc" "foot_R0_crvShape.iog.og[0].gco"; -connectAttr "groupId8747.id" "foot_R0_crvShape.iog.og[1].gid"; -connectAttr "tweakSet589.mwc" "foot_R0_crvShape.iog.og[1].gco"; -connectAttr "mgear_curveCns442.og[0]" "foot_R0_Shape1.cr"; -connectAttr "tweak590.pl[0].cp[0]" "foot_R0_Shape1.twl"; -connectAttr "mgear_curveCns442GroupId.id" "foot_R0_Shape1.iog.og[0].gid"; -connectAttr "mgear_curveCns442Set.mwc" "foot_R0_Shape1.iog.og[0].gco"; -connectAttr "groupId8749.id" "foot_R0_Shape1.iog.og[1].gid"; -connectAttr "tweakSet590.mwc" "foot_R0_Shape1.iog.og[1].gco"; -connectAttr "mgear_curveCns440.og[0]" "leg_R0_crvShape.cr"; -connectAttr "tweak588.pl[0].cp[0]" "leg_R0_crvShape.twl"; -connectAttr "mgear_curveCns440GroupId.id" "leg_R0_crvShape.iog.og[0].gid"; -connectAttr "mgear_curveCns440Set.mwc" "leg_R0_crvShape.iog.og[0].gco"; -connectAttr "groupId8745.id" "leg_R0_crvShape.iog.og[1].gid"; -connectAttr "tweakSet588.mwc" "leg_R0_crvShape.iog.og[1].gco"; -relationship "link" ":lightLinker1" ":initialShadingGroup.message" ":defaultLightSet.message"; -relationship "link" ":lightLinker1" ":initialParticleSE.message" ":defaultLightSet.message"; -relationship "shadowLink" ":lightLinker1" ":initialShadingGroup.message" ":defaultLightSet.message"; -relationship "shadowLink" ":lightLinker1" ":initialParticleSE.message" ":defaultLightSet.message"; -connectAttr "layerManager.dli[0]" "defaultLayer.id"; -connectAttr "renderLayerManager.rlmi[0]" "defaultRenderLayer.rlid"; -connectAttr "spine_C0_blade.bladeRollOffset" "unitConversion131.i"; -connectAttr "mgear_curveCns411GroupParts.og" "mgear_curveCns411.ip[0].ig"; -connectAttr "mgear_curveCns411GroupId.id" "mgear_curveCns411.ip[0].gi"; -connectAttr "spine_C0_root.wm" "mgear_curveCns411.inputs[0]"; -connectAttr "spine_C0_eff.wm" "mgear_curveCns411.inputs[1]"; -connectAttr "groupParts1118.og" "tweak559.ip[0].ig"; -connectAttr "groupId8687.id" "tweak559.ip[0].gi"; -connectAttr "mgear_curveCns411GroupId.msg" "mgear_curveCns411Set.gn" -na; -connectAttr "spine_C0_crvShape.iog.og[0]" "mgear_curveCns411Set.dsm" -na; -connectAttr "mgear_curveCns411.msg" "mgear_curveCns411Set.ub[0]"; -connectAttr "tweak559.og[0]" "mgear_curveCns411GroupParts.ig"; -connectAttr "mgear_curveCns411GroupId.id" "mgear_curveCns411GroupParts.gi"; -connectAttr "groupId8687.msg" "tweakSet559.gn" -na; -connectAttr "spine_C0_crvShape.iog.og[1]" "tweakSet559.dsm" -na; -connectAttr "tweak559.msg" "tweakSet559.ub[0]"; -connectAttr "spine_C0_crvShapeOrig.ws" "groupParts1118.ig"; -connectAttr "groupId8687.id" "groupParts1118.gi"; -connectAttr "shoulder_L0_blade.bladeRollOffset" "unitConversion132.i"; -connectAttr "mgear_curveCns412GroupParts.og" "mgear_curveCns412.ip[0].ig"; -connectAttr "mgear_curveCns412GroupId.id" "mgear_curveCns412.ip[0].gi"; -connectAttr "shoulder_L0_root.wm" "mgear_curveCns412.inputs[0]"; -connectAttr "shoulder_L0_tip.wm" "mgear_curveCns412.inputs[1]"; -connectAttr "groupParts1120.og" "tweak560.ip[0].ig"; -connectAttr "groupId8689.id" "tweak560.ip[0].gi"; -connectAttr "mgear_curveCns412GroupId.msg" "mgear_curveCns412Set.gn" -na; -connectAttr "shoulder_L0_crvShape.iog.og[0]" "mgear_curveCns412Set.dsm" -na; -connectAttr "mgear_curveCns412.msg" "mgear_curveCns412Set.ub[0]"; -connectAttr "tweak560.og[0]" "mgear_curveCns412GroupParts.ig"; -connectAttr "mgear_curveCns412GroupId.id" "mgear_curveCns412GroupParts.gi"; -connectAttr "groupId8689.msg" "tweakSet560.gn" -na; -connectAttr "shoulder_L0_crvShape.iog.og[1]" "tweakSet560.dsm" -na; -connectAttr "tweak560.msg" "tweakSet560.ub[0]"; -connectAttr "shoulder_L0_crvShapeOrig.ws" "groupParts1120.ig"; -connectAttr "groupId8689.id" "groupParts1120.gi"; -connectAttr "mgear_curveCns413GroupParts.og" "mgear_curveCns413.ip[0].ig"; -connectAttr "mgear_curveCns413GroupId.id" "mgear_curveCns413.ip[0].gi"; -connectAttr "arm_L0_root.wm" "mgear_curveCns413.inputs[0]"; -connectAttr "arm_L0_elbow.wm" "mgear_curveCns413.inputs[1]"; -connectAttr "arm_L0_wrist.wm" "mgear_curveCns413.inputs[2]"; -connectAttr "arm_L0_eff.wm" "mgear_curveCns413.inputs[3]"; -connectAttr "groupParts1122.og" "tweak561.ip[0].ig"; -connectAttr "groupId8691.id" "tweak561.ip[0].gi"; -connectAttr "mgear_curveCns413GroupId.msg" "mgear_curveCns413Set.gn" -na; -connectAttr "arm_L0_crvShape.iog.og[0]" "mgear_curveCns413Set.dsm" -na; -connectAttr "mgear_curveCns413.msg" "mgear_curveCns413Set.ub[0]"; -connectAttr "tweak561.og[0]" "mgear_curveCns413GroupParts.ig"; -connectAttr "mgear_curveCns413GroupId.id" "mgear_curveCns413GroupParts.gi"; -connectAttr "groupId8691.msg" "tweakSet561.gn" -na; -connectAttr "arm_L0_crvShape.iog.og[1]" "tweakSet561.dsm" -na; -connectAttr "tweak561.msg" "tweakSet561.ub[0]"; -connectAttr "arm_L0_crvShapeOrig.ws" "groupParts1122.ig"; -connectAttr "groupId8691.id" "groupParts1122.gi"; -connectAttr "meta_L0_blade.bladeRollOffset" "unitConversion133.i"; -connectAttr "mgear_curveCns414GroupParts.og" "mgear_curveCns414.ip[0].ig"; -connectAttr "mgear_curveCns414GroupId.id" "mgear_curveCns414.ip[0].gi"; -connectAttr "meta_L0_root.wm" "mgear_curveCns414.inputs[0]"; -connectAttr "meta_L0_0_loc.wm" "mgear_curveCns414.inputs[1]"; -connectAttr "meta_L0_1_loc.wm" "mgear_curveCns414.inputs[2]"; -connectAttr "meta_L0_2_loc.wm" "mgear_curveCns414.inputs[3]"; -connectAttr "groupParts1124.og" "tweak562.ip[0].ig"; -connectAttr "groupId8693.id" "tweak562.ip[0].gi"; -connectAttr "mgear_curveCns414GroupId.msg" "mgear_curveCns414Set.gn" -na; -connectAttr "meta_L0_crvShape.iog.og[0]" "mgear_curveCns414Set.dsm" -na; -connectAttr "mgear_curveCns414.msg" "mgear_curveCns414Set.ub[0]"; -connectAttr "tweak562.og[0]" "mgear_curveCns414GroupParts.ig"; -connectAttr "mgear_curveCns414GroupId.id" "mgear_curveCns414GroupParts.gi"; -connectAttr "groupId8693.msg" "tweakSet562.gn" -na; -connectAttr "meta_L0_crvShape.iog.og[1]" "tweakSet562.dsm" -na; -connectAttr "tweak562.msg" "tweakSet562.ub[0]"; -connectAttr "meta_L0_crvShapeOrig.ws" "groupParts1124.ig"; -connectAttr "groupId8693.id" "groupParts1124.gi"; +connectAttr "mgear_curveCns449.og[0]" "foot_R0_crvShape.cr"; +connectAttr "tweak597.pl[0].cp[0]" "foot_R0_crvShape.twl"; +connectAttr "mgear_curveCns449GroupId.id" "foot_R0_crvShape.iog.og[0].gid"; +connectAttr "mgear_curveCns449Set.mwc" "foot_R0_crvShape.iog.og[0].gco"; +connectAttr "groupId8763.id" "foot_R0_crvShape.iog.og[1].gid"; +connectAttr "tweakSet597.mwc" "foot_R0_crvShape.iog.og[1].gco"; +connectAttr "mgear_curveCns450.og[0]" "foot_R0_Shape1.cr"; +connectAttr "tweak598.pl[0].cp[0]" "foot_R0_Shape1.twl"; +connectAttr "mgear_curveCns450GroupId.id" "foot_R0_Shape1.iog.og[0].gid"; +connectAttr "mgear_curveCns450Set.mwc" "foot_R0_Shape1.iog.og[0].gco"; +connectAttr "groupId8765.id" "foot_R0_Shape1.iog.og[1].gid"; +connectAttr "tweakSet598.mwc" "foot_R0_Shape1.iog.og[1].gco"; +connectAttr "mgear_curveCns448.og[0]" "leg_R0_crvShape.cr"; +connectAttr "tweak596.pl[0].cp[0]" "leg_R0_crvShape.twl"; +connectAttr "mgear_curveCns448GroupId.id" "leg_R0_crvShape.iog.og[0].gid"; +connectAttr "mgear_curveCns448Set.mwc" "leg_R0_crvShape.iog.og[0].gco"; +connectAttr "groupId8761.id" "leg_R0_crvShape.iog.og[1].gid"; +connectAttr "tweakSet596.mwc" "leg_R0_crvShape.iog.og[1].gco"; connectAttr "finger_L3_blade.bladeRollOffset" "unitConversion134.i"; connectAttr "mgear_curveCns415GroupParts.og" "mgear_curveCns415.ip[0].ig"; connectAttr "mgear_curveCns415GroupId.id" "mgear_curveCns415.ip[0].gi"; @@ -16779,13 +16685,13 @@ connectAttr "finger_L3_root.wm" "mgear_curveCns415.inputs[0]"; connectAttr "finger_L3_0_loc.wm" "mgear_curveCns415.inputs[1]"; connectAttr "finger_L3_1_loc.wm" "mgear_curveCns415.inputs[2]"; connectAttr "finger_L3_2_loc.wm" "mgear_curveCns415.inputs[3]"; -connectAttr "groupParts1126.og" "tweak563.ip[0].ig"; -connectAttr "groupId8695.id" "tweak563.ip[0].gi"; connectAttr "mgear_curveCns415GroupId.msg" "mgear_curveCns415Set.gn" -na; connectAttr "finger_L3_crvShape.iog.og[0]" "mgear_curveCns415Set.dsm" -na; connectAttr "mgear_curveCns415.msg" "mgear_curveCns415Set.ub[0]"; connectAttr "tweak563.og[0]" "mgear_curveCns415GroupParts.ig"; connectAttr "mgear_curveCns415GroupId.id" "mgear_curveCns415GroupParts.gi"; +connectAttr "groupParts1126.og" "tweak563.ip[0].ig"; +connectAttr "groupId8695.id" "tweak563.ip[0].gi"; connectAttr "groupId8695.msg" "tweakSet563.gn" -na; connectAttr "finger_L3_crvShape.iog.og[1]" "tweakSet563.dsm" -na; connectAttr "tweak563.msg" "tweakSet563.ub[0]"; @@ -16798,13 +16704,13 @@ connectAttr "finger_L2_root.wm" "mgear_curveCns416.inputs[0]"; connectAttr "finger_L2_0_loc.wm" "mgear_curveCns416.inputs[1]"; connectAttr "finger_L2_1_loc.wm" "mgear_curveCns416.inputs[2]"; connectAttr "finger_L2_2_loc.wm" "mgear_curveCns416.inputs[3]"; -connectAttr "groupParts1128.og" "tweak564.ip[0].ig"; -connectAttr "groupId8697.id" "tweak564.ip[0].gi"; connectAttr "mgear_curveCns416GroupId.msg" "mgear_curveCns416Set.gn" -na; connectAttr "finger_L2_crvShape.iog.og[0]" "mgear_curveCns416Set.dsm" -na; connectAttr "mgear_curveCns416.msg" "mgear_curveCns416Set.ub[0]"; connectAttr "tweak564.og[0]" "mgear_curveCns416GroupParts.ig"; connectAttr "mgear_curveCns416GroupId.id" "mgear_curveCns416GroupParts.gi"; +connectAttr "groupParts1128.og" "tweak564.ip[0].ig"; +connectAttr "groupId8697.id" "tweak564.ip[0].gi"; connectAttr "groupId8697.msg" "tweakSet564.gn" -na; connectAttr "finger_L2_crvShape.iog.og[1]" "tweakSet564.dsm" -na; connectAttr "tweak564.msg" "tweakSet564.ub[0]"; @@ -16817,18 +16723,37 @@ connectAttr "finger_L1_root.wm" "mgear_curveCns417.inputs[0]"; connectAttr "finger_L1_0_loc.wm" "mgear_curveCns417.inputs[1]"; connectAttr "finger_L1_1_loc.wm" "mgear_curveCns417.inputs[2]"; connectAttr "finger_L1_2_loc.wm" "mgear_curveCns417.inputs[3]"; -connectAttr "groupParts1130.og" "tweak565.ip[0].ig"; -connectAttr "groupId8699.id" "tweak565.ip[0].gi"; connectAttr "mgear_curveCns417GroupId.msg" "mgear_curveCns417Set.gn" -na; connectAttr "finger_L1_crvShape.iog.og[0]" "mgear_curveCns417Set.dsm" -na; connectAttr "mgear_curveCns417.msg" "mgear_curveCns417Set.ub[0]"; connectAttr "tweak565.og[0]" "mgear_curveCns417GroupParts.ig"; connectAttr "mgear_curveCns417GroupId.id" "mgear_curveCns417GroupParts.gi"; +connectAttr "groupParts1130.og" "tweak565.ip[0].ig"; +connectAttr "groupId8699.id" "tweak565.ip[0].gi"; connectAttr "groupId8699.msg" "tweakSet565.gn" -na; connectAttr "finger_L1_crvShape.iog.og[1]" "tweakSet565.dsm" -na; connectAttr "tweak565.msg" "tweakSet565.ub[0]"; connectAttr "finger_L1_crvShapeOrig.ws" "groupParts1130.ig"; connectAttr "groupId8699.id" "groupParts1130.gi"; +connectAttr "meta_L0_blade.bladeRollOffset" "unitConversion133.i"; +connectAttr "mgear_curveCns414GroupParts.og" "mgear_curveCns414.ip[0].ig"; +connectAttr "mgear_curveCns414GroupId.id" "mgear_curveCns414.ip[0].gi"; +connectAttr "meta_L0_root.wm" "mgear_curveCns414.inputs[0]"; +connectAttr "meta_L0_0_loc.wm" "mgear_curveCns414.inputs[1]"; +connectAttr "meta_L0_1_loc.wm" "mgear_curveCns414.inputs[2]"; +connectAttr "meta_L0_2_loc.wm" "mgear_curveCns414.inputs[3]"; +connectAttr "mgear_curveCns414GroupId.msg" "mgear_curveCns414Set.gn" -na; +connectAttr "meta_L0_crvShape.iog.og[0]" "mgear_curveCns414Set.dsm" -na; +connectAttr "mgear_curveCns414.msg" "mgear_curveCns414Set.ub[0]"; +connectAttr "tweak562.og[0]" "mgear_curveCns414GroupParts.ig"; +connectAttr "mgear_curveCns414GroupId.id" "mgear_curveCns414GroupParts.gi"; +connectAttr "groupParts1124.og" "tweak562.ip[0].ig"; +connectAttr "groupId8693.id" "tweak562.ip[0].gi"; +connectAttr "groupId8693.msg" "tweakSet562.gn" -na; +connectAttr "meta_L0_crvShape.iog.og[1]" "tweakSet562.dsm" -na; +connectAttr "tweak562.msg" "tweakSet562.ub[0]"; +connectAttr "meta_L0_crvShapeOrig.ws" "groupParts1124.ig"; +connectAttr "groupId8693.id" "groupParts1124.gi"; connectAttr "finger_L0_blade.bladeRollOffset" "unitConversion137.i"; connectAttr "mgear_curveCns418GroupParts.og" "mgear_curveCns418.ip[0].ig"; connectAttr "mgear_curveCns418GroupId.id" "mgear_curveCns418.ip[0].gi"; @@ -16836,13 +16761,13 @@ connectAttr "finger_L0_root.wm" "mgear_curveCns418.inputs[0]"; connectAttr "finger_L0_0_loc.wm" "mgear_curveCns418.inputs[1]"; connectAttr "finger_L0_1_loc.wm" "mgear_curveCns418.inputs[2]"; connectAttr "finger_L0_2_loc.wm" "mgear_curveCns418.inputs[3]"; -connectAttr "groupParts1132.og" "tweak566.ip[0].ig"; -connectAttr "groupId8701.id" "tweak566.ip[0].gi"; connectAttr "mgear_curveCns418GroupId.msg" "mgear_curveCns418Set.gn" -na; connectAttr "finger_L0_crvShape.iog.og[0]" "mgear_curveCns418Set.dsm" -na; connectAttr "mgear_curveCns418.msg" "mgear_curveCns418Set.ub[0]"; connectAttr "tweak566.og[0]" "mgear_curveCns418GroupParts.ig"; connectAttr "mgear_curveCns418GroupId.id" "mgear_curveCns418GroupParts.gi"; +connectAttr "groupParts1132.og" "tweak566.ip[0].ig"; +connectAttr "groupId8701.id" "tweak566.ip[0].gi"; connectAttr "groupId8701.msg" "tweakSet566.gn" -na; connectAttr "finger_L0_crvShape.iog.og[1]" "tweakSet566.dsm" -na; connectAttr "tweak566.msg" "tweakSet566.ub[0]"; @@ -16855,127 +16780,91 @@ connectAttr "thumb_L0_root.wm" "mgear_curveCns419.inputs[0]"; connectAttr "thumb_L0_0_loc.wm" "mgear_curveCns419.inputs[1]"; connectAttr "thumb_L0_1_loc.wm" "mgear_curveCns419.inputs[2]"; connectAttr "thumb_L0_2_loc.wm" "mgear_curveCns419.inputs[3]"; -connectAttr "groupParts1134.og" "tweak567.ip[0].ig"; -connectAttr "groupId8703.id" "tweak567.ip[0].gi"; connectAttr "mgear_curveCns419GroupId.msg" "mgear_curveCns419Set.gn" -na; connectAttr "thumb_L0_crvShape.iog.og[0]" "mgear_curveCns419Set.dsm" -na; connectAttr "mgear_curveCns419.msg" "mgear_curveCns419Set.ub[0]"; connectAttr "tweak567.og[0]" "mgear_curveCns419GroupParts.ig"; connectAttr "mgear_curveCns419GroupId.id" "mgear_curveCns419GroupParts.gi"; +connectAttr "groupParts1134.og" "tweak567.ip[0].ig"; +connectAttr "groupId8703.id" "tweak567.ip[0].gi"; connectAttr "groupId8703.msg" "tweakSet567.gn" -na; connectAttr "thumb_L0_crvShape.iog.og[1]" "tweakSet567.dsm" -na; connectAttr "tweak567.msg" "tweakSet567.ub[0]"; connectAttr "thumb_L0_crvShapeOrig.ws" "groupParts1134.ig"; connectAttr "groupId8703.id" "groupParts1134.gi"; -connectAttr "neck_C0_blade.bladeRollOffset" "unitConversion139.i"; -connectAttr "mgear_curveCns420GroupParts.og" "mgear_curveCns420.ip[0].ig"; -connectAttr "mgear_curveCns420GroupId.id" "mgear_curveCns420.ip[0].gi"; -connectAttr "neck_C0_root.wm" "mgear_curveCns420.inputs[0]"; -connectAttr "neck_C0_tan0.wm" "mgear_curveCns420.inputs[1]"; -connectAttr "neck_C0_tan1.wm" "mgear_curveCns420.inputs[2]"; -connectAttr "neck_C0_neck.wm" "mgear_curveCns420.inputs[3]"; -connectAttr "groupParts1136.og" "tweak568.ip[0].ig"; -connectAttr "groupId8705.id" "tweak568.ip[0].gi"; -connectAttr "mgear_curveCns420GroupId.msg" "mgear_curveCns420Set.gn" -na; -connectAttr "neck_C0_neck_crvShape.iog.og[0]" "mgear_curveCns420Set.dsm" -na; -connectAttr "mgear_curveCns420.msg" "mgear_curveCns420Set.ub[0]"; -connectAttr "tweak568.og[0]" "mgear_curveCns420GroupParts.ig"; -connectAttr "mgear_curveCns420GroupId.id" "mgear_curveCns420GroupParts.gi"; -connectAttr "groupId8705.msg" "tweakSet568.gn" -na; -connectAttr "neck_C0_neck_crvShape.iog.og[1]" "tweakSet568.dsm" -na; -connectAttr "tweak568.msg" "tweakSet568.ub[0]"; -connectAttr "neck_C0_neck_crvShapeOrig.ws" "groupParts1136.ig"; -connectAttr "groupId8705.id" "groupParts1136.gi"; -connectAttr "mgear_curveCns421GroupParts.og" "mgear_curveCns421.ip[0].ig"; -connectAttr "mgear_curveCns421GroupId.id" "mgear_curveCns421.ip[0].gi"; -connectAttr "neck_C0_neck.wm" "mgear_curveCns421.inputs[0]"; -connectAttr "neck_C0_head.wm" "mgear_curveCns421.inputs[1]"; -connectAttr "neck_C0_eff.wm" "mgear_curveCns421.inputs[2]"; -connectAttr "groupParts1138.og" "tweak569.ip[0].ig"; -connectAttr "groupId8707.id" "tweak569.ip[0].gi"; -connectAttr "mgear_curveCns421GroupId.msg" "mgear_curveCns421Set.gn" -na; -connectAttr "neck_C0_head_crvShape.iog.og[0]" "mgear_curveCns421Set.dsm" -na; -connectAttr "mgear_curveCns421.msg" "mgear_curveCns421Set.ub[0]"; -connectAttr "tweak569.og[0]" "mgear_curveCns421GroupParts.ig"; -connectAttr "mgear_curveCns421GroupId.id" "mgear_curveCns421GroupParts.gi"; -connectAttr "groupId8707.msg" "tweakSet569.gn" -na; -connectAttr "neck_C0_head_crvShape.iog.og[1]" "tweakSet569.dsm" -na; -connectAttr "tweak569.msg" "tweakSet569.ub[0]"; -connectAttr "neck_C0_head_crvShapeOrig.ws" "groupParts1138.ig"; -connectAttr "groupId8707.id" "groupParts1138.gi"; -connectAttr "mgear_curveCns422GroupParts.og" "mgear_curveCns422.ip[0].ig"; -connectAttr "mgear_curveCns422GroupId.id" "mgear_curveCns422.ip[0].gi"; -connectAttr "mouth_C0_root.wm" "mgear_curveCns422.inputs[0]"; -connectAttr "mouth_C0_rotcenter.wm" "mgear_curveCns422.inputs[1]"; -connectAttr "groupParts1140.og" "tweak570.ip[0].ig"; -connectAttr "groupId8709.id" "tweak570.ip[0].gi"; -connectAttr "mgear_curveCns422GroupId.msg" "mgear_curveCns422Set.gn" -na; -connectAttr "|guide|local_C0_root|body_C0_root|spine_C0_root|spine_C0_eff|neck_C0_root|neck_C0_neck|neck_C0_head|mouth_C0_root|mouth_C0_crv|mouth_C0_crvShape.iog.og[0]" "mgear_curveCns422Set.dsm" - -na; -connectAttr "mgear_curveCns422.msg" "mgear_curveCns422Set.ub[0]"; -connectAttr "tweak570.og[0]" "mgear_curveCns422GroupParts.ig"; -connectAttr "mgear_curveCns422GroupId.id" "mgear_curveCns422GroupParts.gi"; -connectAttr "groupId8709.msg" "tweakSet570.gn" -na; -connectAttr "|guide|local_C0_root|body_C0_root|spine_C0_root|spine_C0_eff|neck_C0_root|neck_C0_neck|neck_C0_head|mouth_C0_root|mouth_C0_crv|mouth_C0_crvShape.iog.og[1]" "tweakSet570.dsm" - -na; -connectAttr "tweak570.msg" "tweakSet570.ub[0]"; -connectAttr "|guide|local_C0_root|body_C0_root|spine_C0_root|spine_C0_eff|neck_C0_root|neck_C0_neck|neck_C0_head|mouth_C0_root|mouth_C0_crv|mouth_C0_crvShapeOrig.ws" "groupParts1140.ig" - ; -connectAttr "groupId8709.id" "groupParts1140.gi"; +connectAttr "mgear_curveCns413GroupParts.og" "mgear_curveCns413.ip[0].ig"; +connectAttr "mgear_curveCns413GroupId.id" "mgear_curveCns413.ip[0].gi"; +connectAttr "arm_L0_root.wm" "mgear_curveCns413.inputs[0]"; +connectAttr "arm_L0_elbow.wm" "mgear_curveCns413.inputs[1]"; +connectAttr "arm_L0_wrist.wm" "mgear_curveCns413.inputs[2]"; +connectAttr "arm_L0_eff.wm" "mgear_curveCns413.inputs[3]"; +connectAttr "mgear_curveCns413GroupId.msg" "mgear_curveCns413Set.gn" -na; +connectAttr "arm_L0_crvShape.iog.og[0]" "mgear_curveCns413Set.dsm" -na; +connectAttr "mgear_curveCns413.msg" "mgear_curveCns413Set.ub[0]"; +connectAttr "tweak561.og[0]" "mgear_curveCns413GroupParts.ig"; +connectAttr "mgear_curveCns413GroupId.id" "mgear_curveCns413GroupParts.gi"; +connectAttr "groupParts1122.og" "tweak561.ip[0].ig"; +connectAttr "groupId8691.id" "tweak561.ip[0].gi"; +connectAttr "groupId8691.msg" "tweakSet561.gn" -na; +connectAttr "arm_L0_crvShape.iog.og[1]" "tweakSet561.dsm" -na; +connectAttr "tweak561.msg" "tweakSet561.ub[0]"; +connectAttr "arm_L0_crvShapeOrig.ws" "groupParts1122.ig"; +connectAttr "groupId8691.id" "groupParts1122.gi"; +connectAttr "shoulder_L0_blade.bladeRollOffset" "unitConversion132.i"; +connectAttr "mgear_curveCns412GroupParts.og" "mgear_curveCns412.ip[0].ig"; +connectAttr "mgear_curveCns412GroupId.id" "mgear_curveCns412.ip[0].gi"; +connectAttr "shoulder_L0_root.wm" "mgear_curveCns412.inputs[0]"; +connectAttr "shoulder_L0_tip.wm" "mgear_curveCns412.inputs[1]"; +connectAttr "mgear_curveCns412GroupId.msg" "mgear_curveCns412Set.gn" -na; +connectAttr "shoulder_L0_crvShape.iog.og[0]" "mgear_curveCns412Set.dsm" -na; +connectAttr "mgear_curveCns412.msg" "mgear_curveCns412Set.ub[0]"; +connectAttr "tweak560.og[0]" "mgear_curveCns412GroupParts.ig"; +connectAttr "mgear_curveCns412GroupId.id" "mgear_curveCns412GroupParts.gi"; +connectAttr "groupParts1120.og" "tweak560.ip[0].ig"; +connectAttr "groupId8689.id" "tweak560.ip[0].gi"; +connectAttr "groupId8689.msg" "tweakSet560.gn" -na; +connectAttr "shoulder_L0_crvShape.iog.og[1]" "tweakSet560.dsm" -na; +connectAttr "tweak560.msg" "tweakSet560.ub[0]"; +connectAttr "shoulder_L0_crvShapeOrig.ws" "groupParts1120.ig"; +connectAttr "groupId8689.id" "groupParts1120.gi"; connectAttr "mgear_curveCns423GroupParts.og" "mgear_curveCns423.ip[0].ig"; connectAttr "mgear_curveCns423GroupId.id" "mgear_curveCns423.ip[0].gi"; connectAttr "mouth_C0_lipup.wm" "mgear_curveCns423.inputs[0]"; connectAttr "mouth_C0_rotcenter.wm" "mgear_curveCns423.inputs[1]"; -connectAttr "groupParts1142.og" "tweak571.ip[0].ig"; -connectAttr "groupId8711.id" "tweak571.ip[0].gi"; connectAttr "mgear_curveCns423GroupId.msg" "mgear_curveCns423Set.gn" -na; -connectAttr "|guide|local_C0_root|body_C0_root|spine_C0_root|spine_C0_eff|neck_C0_root|neck_C0_neck|neck_C0_head|mouth_C0_root|mouth_C0_rotcenter|mouth_C0_lipup|mouth_C0_crv|mouth_C0_crvShape.iog.og[0]" "mgear_curveCns423Set.dsm" +connectAttr "|guide|global_C0_root|local_C0_root|body_C0_root|spine_C0_root|spine_C0_eff|neck_C0_root|neck_C0_neck|neck_C0_head|mouth_C0_root|mouth_C0_rotcenter|mouth_C0_lipup|mouth_C0_crv|mouth_C0_crvShape.iog.og[0]" "mgear_curveCns423Set.dsm" -na; connectAttr "mgear_curveCns423.msg" "mgear_curveCns423Set.ub[0]"; connectAttr "tweak571.og[0]" "mgear_curveCns423GroupParts.ig"; connectAttr "mgear_curveCns423GroupId.id" "mgear_curveCns423GroupParts.gi"; +connectAttr "groupParts1142.og" "tweak571.ip[0].ig"; +connectAttr "groupId8711.id" "tweak571.ip[0].gi"; connectAttr "groupId8711.msg" "tweakSet571.gn" -na; -connectAttr "|guide|local_C0_root|body_C0_root|spine_C0_root|spine_C0_eff|neck_C0_root|neck_C0_neck|neck_C0_head|mouth_C0_root|mouth_C0_rotcenter|mouth_C0_lipup|mouth_C0_crv|mouth_C0_crvShape.iog.og[1]" "tweakSet571.dsm" +connectAttr "|guide|global_C0_root|local_C0_root|body_C0_root|spine_C0_root|spine_C0_eff|neck_C0_root|neck_C0_neck|neck_C0_head|mouth_C0_root|mouth_C0_rotcenter|mouth_C0_lipup|mouth_C0_crv|mouth_C0_crvShape.iog.og[1]" "tweakSet571.dsm" -na; connectAttr "tweak571.msg" "tweakSet571.ub[0]"; -connectAttr "|guide|local_C0_root|body_C0_root|spine_C0_root|spine_C0_eff|neck_C0_root|neck_C0_neck|neck_C0_head|mouth_C0_root|mouth_C0_rotcenter|mouth_C0_lipup|mouth_C0_crv|mouth_C0_crvShapeOrig.ws" "groupParts1142.ig" +connectAttr "|guide|global_C0_root|local_C0_root|body_C0_root|spine_C0_root|spine_C0_eff|neck_C0_root|neck_C0_neck|neck_C0_head|mouth_C0_root|mouth_C0_rotcenter|mouth_C0_lipup|mouth_C0_crv|mouth_C0_crvShapeOrig.ws" "groupParts1142.ig" ; connectAttr "groupId8711.id" "groupParts1142.gi"; connectAttr "mgear_curveCns424GroupParts.og" "mgear_curveCns424.ip[0].ig"; connectAttr "mgear_curveCns424GroupId.id" "mgear_curveCns424.ip[0].gi"; connectAttr "mouth_C0_liplow.wm" "mgear_curveCns424.inputs[0]"; connectAttr "mouth_C0_rotcenter.wm" "mgear_curveCns424.inputs[1]"; -connectAttr "groupParts1144.og" "tweak572.ip[0].ig"; -connectAttr "groupId8713.id" "tweak572.ip[0].gi"; connectAttr "mgear_curveCns424GroupId.msg" "mgear_curveCns424Set.gn" -na; -connectAttr "|guide|local_C0_root|body_C0_root|spine_C0_root|spine_C0_eff|neck_C0_root|neck_C0_neck|neck_C0_head|mouth_C0_root|mouth_C0_rotcenter|mouth_C0_liplow|mouth_C0_crv|mouth_C0_crvShape.iog.og[0]" "mgear_curveCns424Set.dsm" +connectAttr "|guide|global_C0_root|local_C0_root|body_C0_root|spine_C0_root|spine_C0_eff|neck_C0_root|neck_C0_neck|neck_C0_head|mouth_C0_root|mouth_C0_rotcenter|mouth_C0_liplow|mouth_C0_crv|mouth_C0_crvShape.iog.og[0]" "mgear_curveCns424Set.dsm" -na; connectAttr "mgear_curveCns424.msg" "mgear_curveCns424Set.ub[0]"; connectAttr "tweak572.og[0]" "mgear_curveCns424GroupParts.ig"; connectAttr "mgear_curveCns424GroupId.id" "mgear_curveCns424GroupParts.gi"; +connectAttr "groupParts1144.og" "tweak572.ip[0].ig"; +connectAttr "groupId8713.id" "tweak572.ip[0].gi"; connectAttr "groupId8713.msg" "tweakSet572.gn" -na; -connectAttr "|guide|local_C0_root|body_C0_root|spine_C0_root|spine_C0_eff|neck_C0_root|neck_C0_neck|neck_C0_head|mouth_C0_root|mouth_C0_rotcenter|mouth_C0_liplow|mouth_C0_crv|mouth_C0_crvShape.iog.og[1]" "tweakSet572.dsm" +connectAttr "|guide|global_C0_root|local_C0_root|body_C0_root|spine_C0_root|spine_C0_eff|neck_C0_root|neck_C0_neck|neck_C0_head|mouth_C0_root|mouth_C0_rotcenter|mouth_C0_liplow|mouth_C0_crv|mouth_C0_crvShape.iog.og[1]" "tweakSet572.dsm" -na; connectAttr "tweak572.msg" "tweakSet572.ub[0]"; -connectAttr "|guide|local_C0_root|body_C0_root|spine_C0_root|spine_C0_eff|neck_C0_root|neck_C0_neck|neck_C0_head|mouth_C0_root|mouth_C0_rotcenter|mouth_C0_liplow|mouth_C0_crv|mouth_C0_crvShapeOrig.ws" "groupParts1144.ig" +connectAttr "|guide|global_C0_root|local_C0_root|body_C0_root|spine_C0_root|spine_C0_eff|neck_C0_root|neck_C0_neck|neck_C0_head|mouth_C0_root|mouth_C0_rotcenter|mouth_C0_liplow|mouth_C0_crv|mouth_C0_crvShapeOrig.ws" "groupParts1144.ig" ; connectAttr "groupId8713.id" "groupParts1144.gi"; -connectAttr "mgear_curveCns425GroupParts.og" "mgear_curveCns425.ip[0].ig"; -connectAttr "mgear_curveCns425GroupId.id" "mgear_curveCns425.ip[0].gi"; -connectAttr "mouth_C0_root.wm" "mgear_curveCns425.inputs[0]"; -connectAttr "mouth_C0_jaw.wm" "mgear_curveCns425.inputs[1]"; -connectAttr "groupParts1146.og" "tweak573.ip[0].ig"; -connectAttr "groupId8715.id" "tweak573.ip[0].gi"; -connectAttr "mgear_curveCns425GroupId.msg" "mgear_curveCns425Set.gn" -na; -connectAttr "mouth_C0_crv9Shape.iog.og[0]" "mgear_curveCns425Set.dsm" -na; -connectAttr "mgear_curveCns425.msg" "mgear_curveCns425Set.ub[0]"; -connectAttr "tweak573.og[0]" "mgear_curveCns425GroupParts.ig"; -connectAttr "mgear_curveCns425GroupId.id" "mgear_curveCns425GroupParts.gi"; -connectAttr "groupId8715.msg" "tweakSet573.gn" -na; -connectAttr "mouth_C0_crv9Shape.iog.og[1]" "tweakSet573.dsm" -na; -connectAttr "tweak573.msg" "tweakSet573.ub[0]"; -connectAttr "mouth_C0_crv9ShapeOrig.ws" "groupParts1146.ig"; -connectAttr "groupId8715.id" "groupParts1146.gi"; connectAttr "tongue_C0_blade.bladeRollOffset" "unitConversion140.i"; connectAttr "mgear_curveCns426GroupParts.og" "mgear_curveCns426.ip[0].ig"; connectAttr "mgear_curveCns426GroupId.id" "mgear_curveCns426.ip[0].gi"; @@ -16984,29 +16873,64 @@ connectAttr "tongue_C0_0_loc.wm" "mgear_curveCns426.inputs[1]"; connectAttr "tongue_C0_1_loc.wm" "mgear_curveCns426.inputs[2]"; connectAttr "tongue_C0_2_loc.wm" "mgear_curveCns426.inputs[3]"; connectAttr "tongue_C0_3_loc.wm" "mgear_curveCns426.inputs[4]"; -connectAttr "groupParts1148.og" "tweak574.ip[0].ig"; -connectAttr "groupId8717.id" "tweak574.ip[0].gi"; connectAttr "mgear_curveCns426GroupId.msg" "mgear_curveCns426Set.gn" -na; connectAttr "tongue_C0_crvShape.iog.og[0]" "mgear_curveCns426Set.dsm" -na; connectAttr "mgear_curveCns426.msg" "mgear_curveCns426Set.ub[0]"; connectAttr "tweak574.og[0]" "mgear_curveCns426GroupParts.ig"; connectAttr "mgear_curveCns426GroupId.id" "mgear_curveCns426GroupParts.gi"; +connectAttr "groupParts1148.og" "tweak574.ip[0].ig"; +connectAttr "groupId8717.id" "tweak574.ip[0].gi"; connectAttr "groupId8717.msg" "tweakSet574.gn" -na; connectAttr "tongue_C0_crvShape.iog.og[1]" "tweakSet574.dsm" -na; connectAttr "tweak574.msg" "tweakSet574.ub[0]"; connectAttr "tongue_C0_crvShapeOrig.ws" "groupParts1148.ig"; connectAttr "groupId8717.id" "groupParts1148.gi"; +connectAttr "mgear_curveCns422GroupParts.og" "mgear_curveCns422.ip[0].ig"; +connectAttr "mgear_curveCns422GroupId.id" "mgear_curveCns422.ip[0].gi"; +connectAttr "mouth_C0_root.wm" "mgear_curveCns422.inputs[0]"; +connectAttr "mouth_C0_rotcenter.wm" "mgear_curveCns422.inputs[1]"; +connectAttr "mgear_curveCns422GroupId.msg" "mgear_curveCns422Set.gn" -na; +connectAttr "|guide|global_C0_root|local_C0_root|body_C0_root|spine_C0_root|spine_C0_eff|neck_C0_root|neck_C0_neck|neck_C0_head|mouth_C0_root|mouth_C0_crv|mouth_C0_crvShape.iog.og[0]" "mgear_curveCns422Set.dsm" + -na; +connectAttr "mgear_curveCns422.msg" "mgear_curveCns422Set.ub[0]"; +connectAttr "tweak570.og[0]" "mgear_curveCns422GroupParts.ig"; +connectAttr "mgear_curveCns422GroupId.id" "mgear_curveCns422GroupParts.gi"; +connectAttr "groupParts1140.og" "tweak570.ip[0].ig"; +connectAttr "groupId8709.id" "tweak570.ip[0].gi"; +connectAttr "groupId8709.msg" "tweakSet570.gn" -na; +connectAttr "|guide|global_C0_root|local_C0_root|body_C0_root|spine_C0_root|spine_C0_eff|neck_C0_root|neck_C0_neck|neck_C0_head|mouth_C0_root|mouth_C0_crv|mouth_C0_crvShape.iog.og[1]" "tweakSet570.dsm" + -na; +connectAttr "tweak570.msg" "tweakSet570.ub[0]"; +connectAttr "|guide|global_C0_root|local_C0_root|body_C0_root|spine_C0_root|spine_C0_eff|neck_C0_root|neck_C0_neck|neck_C0_head|mouth_C0_root|mouth_C0_crv|mouth_C0_crvShapeOrig.ws" "groupParts1140.ig" + ; +connectAttr "groupId8709.id" "groupParts1140.gi"; +connectAttr "mgear_curveCns425GroupParts.og" "mgear_curveCns425.ip[0].ig"; +connectAttr "mgear_curveCns425GroupId.id" "mgear_curveCns425.ip[0].gi"; +connectAttr "mouth_C0_root.wm" "mgear_curveCns425.inputs[0]"; +connectAttr "mouth_C0_jaw.wm" "mgear_curveCns425.inputs[1]"; +connectAttr "mgear_curveCns425GroupId.msg" "mgear_curveCns425Set.gn" -na; +connectAttr "mouth_C0_crv9Shape.iog.og[0]" "mgear_curveCns425Set.dsm" -na; +connectAttr "mgear_curveCns425.msg" "mgear_curveCns425Set.ub[0]"; +connectAttr "tweak573.og[0]" "mgear_curveCns425GroupParts.ig"; +connectAttr "mgear_curveCns425GroupId.id" "mgear_curveCns425GroupParts.gi"; +connectAttr "groupParts1146.og" "tweak573.ip[0].ig"; +connectAttr "groupId8715.id" "tweak573.ip[0].gi"; +connectAttr "groupId8715.msg" "tweakSet573.gn" -na; +connectAttr "mouth_C0_crv9Shape.iog.og[1]" "tweakSet573.dsm" -na; +connectAttr "tweak573.msg" "tweakSet573.ub[0]"; +connectAttr "mouth_C0_crv9ShapeOrig.ws" "groupParts1146.ig"; +connectAttr "groupId8715.id" "groupParts1146.gi"; connectAttr "mgear_curveCns427GroupParts.og" "mgear_curveCns427.ip[0].ig"; connectAttr "mgear_curveCns427GroupId.id" "mgear_curveCns427.ip[0].gi"; connectAttr "eye_R0_root.wm" "mgear_curveCns427.inputs[0]"; connectAttr "eye_R0_look.wm" "mgear_curveCns427.inputs[1]"; -connectAttr "groupParts1150.og" "tweak575.ip[0].ig"; -connectAttr "groupId8719.id" "tweak575.ip[0].gi"; connectAttr "mgear_curveCns427GroupId.msg" "mgear_curveCns427Set.gn" -na; connectAttr "eye_R0_crvShape.iog.og[0]" "mgear_curveCns427Set.dsm" -na; connectAttr "mgear_curveCns427.msg" "mgear_curveCns427Set.ub[0]"; connectAttr "tweak575.og[0]" "mgear_curveCns427GroupParts.ig"; connectAttr "mgear_curveCns427GroupId.id" "mgear_curveCns427GroupParts.gi"; +connectAttr "groupParts1150.og" "tweak575.ip[0].ig"; +connectAttr "groupId8719.id" "tweak575.ip[0].gi"; connectAttr "groupId8719.msg" "tweakSet575.gn" -na; connectAttr "eye_R0_crvShape.iog.og[1]" "tweakSet575.dsm" -na; connectAttr "tweak575.msg" "tweakSet575.ub[0]"; @@ -17016,198 +16940,233 @@ connectAttr "mgear_curveCns428GroupParts.og" "mgear_curveCns428.ip[0].ig"; connectAttr "mgear_curveCns428GroupId.id" "mgear_curveCns428.ip[0].gi"; connectAttr "eye_L0_root.wm" "mgear_curveCns428.inputs[0]"; connectAttr "eye_L0_look.wm" "mgear_curveCns428.inputs[1]"; -connectAttr "groupParts1152.og" "tweak576.ip[0].ig"; -connectAttr "groupId8721.id" "tweak576.ip[0].gi"; connectAttr "mgear_curveCns428GroupId.msg" "mgear_curveCns428Set.gn" -na; connectAttr "eye_L0_crvShape.iog.og[0]" "mgear_curveCns428Set.dsm" -na; connectAttr "mgear_curveCns428.msg" "mgear_curveCns428Set.ub[0]"; connectAttr "tweak576.og[0]" "mgear_curveCns428GroupParts.ig"; connectAttr "mgear_curveCns428GroupId.id" "mgear_curveCns428GroupParts.gi"; +connectAttr "groupParts1152.og" "tweak576.ip[0].ig"; +connectAttr "groupId8721.id" "tweak576.ip[0].gi"; connectAttr "groupId8721.msg" "tweakSet576.gn" -na; connectAttr "eye_L0_crvShape.iog.og[1]" "tweakSet576.dsm" -na; connectAttr "tweak576.msg" "tweakSet576.ub[0]"; connectAttr "eye_L0_crvShapeOrig.ws" "groupParts1152.ig"; connectAttr "groupId8721.id" "groupParts1152.gi"; -connectAttr "shoulder_R0_blade.bladeRollOffset" "unitConversion141.i"; -connectAttr "mgear_curveCns429GroupParts.og" "mgear_curveCns429.ip[0].ig"; -connectAttr "mgear_curveCns429GroupId.id" "mgear_curveCns429.ip[0].gi"; -connectAttr "shoulder_R0_root.wm" "mgear_curveCns429.inputs[0]"; -connectAttr "shoulder_R0_tip.wm" "mgear_curveCns429.inputs[1]"; -connectAttr "groupParts1154.og" "tweak577.ip[0].ig"; -connectAttr "groupId8723.id" "tweak577.ip[0].gi"; -connectAttr "mgear_curveCns429GroupId.msg" "mgear_curveCns429Set.gn" -na; -connectAttr "shoulder_R0_crvShape.iog.og[0]" "mgear_curveCns429Set.dsm" -na; -connectAttr "mgear_curveCns429.msg" "mgear_curveCns429Set.ub[0]"; -connectAttr "tweak577.og[0]" "mgear_curveCns429GroupParts.ig"; -connectAttr "mgear_curveCns429GroupId.id" "mgear_curveCns429GroupParts.gi"; -connectAttr "groupId8723.msg" "tweakSet577.gn" -na; -connectAttr "shoulder_R0_crvShape.iog.og[1]" "tweakSet577.dsm" -na; -connectAttr "tweak577.msg" "tweakSet577.ub[0]"; -connectAttr "shoulder_R0_crvShapeOrig.ws" "groupParts1154.ig"; -connectAttr "groupId8723.id" "groupParts1154.gi"; -connectAttr "mgear_curveCns430GroupParts.og" "mgear_curveCns430.ip[0].ig"; -connectAttr "mgear_curveCns430GroupId.id" "mgear_curveCns430.ip[0].gi"; -connectAttr "arm_R0_root.wm" "mgear_curveCns430.inputs[0]"; -connectAttr "arm_R0_elbow.wm" "mgear_curveCns430.inputs[1]"; -connectAttr "arm_R0_wrist.wm" "mgear_curveCns430.inputs[2]"; -connectAttr "arm_R0_eff.wm" "mgear_curveCns430.inputs[3]"; -connectAttr "groupParts1156.og" "tweak578.ip[0].ig"; -connectAttr "groupId8725.id" "tweak578.ip[0].gi"; -connectAttr "mgear_curveCns430GroupId.msg" "mgear_curveCns430Set.gn" -na; -connectAttr "arm_R0_crvShape.iog.og[0]" "mgear_curveCns430Set.dsm" -na; -connectAttr "mgear_curveCns430.msg" "mgear_curveCns430Set.ub[0]"; -connectAttr "tweak578.og[0]" "mgear_curveCns430GroupParts.ig"; -connectAttr "mgear_curveCns430GroupId.id" "mgear_curveCns430GroupParts.gi"; -connectAttr "groupId8725.msg" "tweakSet578.gn" -na; -connectAttr "arm_R0_crvShape.iog.og[1]" "tweakSet578.dsm" -na; -connectAttr "tweak578.msg" "tweakSet578.ub[0]"; -connectAttr "arm_R0_crvShapeOrig.ws" "groupParts1156.ig"; -connectAttr "groupId8725.id" "groupParts1156.gi"; -connectAttr "meta_R0_blade.bladeRollOffset" "unitConversion142.i"; -connectAttr "mgear_curveCns431GroupParts.og" "mgear_curveCns431.ip[0].ig"; -connectAttr "mgear_curveCns431GroupId.id" "mgear_curveCns431.ip[0].gi"; -connectAttr "meta_R0_root.wm" "mgear_curveCns431.inputs[0]"; -connectAttr "meta_R0_0_loc.wm" "mgear_curveCns431.inputs[1]"; -connectAttr "meta_R0_1_loc.wm" "mgear_curveCns431.inputs[2]"; -connectAttr "meta_R0_2_loc.wm" "mgear_curveCns431.inputs[3]"; -connectAttr "groupParts1158.og" "tweak579.ip[0].ig"; -connectAttr "groupId8727.id" "tweak579.ip[0].gi"; -connectAttr "mgear_curveCns431GroupId.msg" "mgear_curveCns431Set.gn" -na; -connectAttr "meta_R0_crvShape.iog.og[0]" "mgear_curveCns431Set.dsm" -na; -connectAttr "mgear_curveCns431.msg" "mgear_curveCns431Set.ub[0]"; -connectAttr "tweak579.og[0]" "mgear_curveCns431GroupParts.ig"; -connectAttr "mgear_curveCns431GroupId.id" "mgear_curveCns431GroupParts.gi"; -connectAttr "groupId8727.msg" "tweakSet579.gn" -na; -connectAttr "meta_R0_crvShape.iog.og[1]" "tweakSet579.dsm" -na; -connectAttr "tweak579.msg" "tweakSet579.ub[0]"; -connectAttr "meta_R0_crvShapeOrig.ws" "groupParts1158.ig"; -connectAttr "groupId8727.id" "groupParts1158.gi"; +connectAttr "mgear_curveCns421GroupParts.og" "mgear_curveCns421.ip[0].ig"; +connectAttr "mgear_curveCns421GroupId.id" "mgear_curveCns421.ip[0].gi"; +connectAttr "neck_C0_neck.wm" "mgear_curveCns421.inputs[0]"; +connectAttr "neck_C0_head.wm" "mgear_curveCns421.inputs[1]"; +connectAttr "neck_C0_eff.wm" "mgear_curveCns421.inputs[2]"; +connectAttr "mgear_curveCns421GroupId.msg" "mgear_curveCns421Set.gn" -na; +connectAttr "neck_C0_head_crvShape.iog.og[0]" "mgear_curveCns421Set.dsm" -na; +connectAttr "mgear_curveCns421.msg" "mgear_curveCns421Set.ub[0]"; +connectAttr "tweak569.og[0]" "mgear_curveCns421GroupParts.ig"; +connectAttr "mgear_curveCns421GroupId.id" "mgear_curveCns421GroupParts.gi"; +connectAttr "groupParts1138.og" "tweak569.ip[0].ig"; +connectAttr "groupId8707.id" "tweak569.ip[0].gi"; +connectAttr "groupId8707.msg" "tweakSet569.gn" -na; +connectAttr "neck_C0_head_crvShape.iog.og[1]" "tweakSet569.dsm" -na; +connectAttr "tweak569.msg" "tweakSet569.ub[0]"; +connectAttr "neck_C0_head_crvShapeOrig.ws" "groupParts1138.ig"; +connectAttr "groupId8707.id" "groupParts1138.gi"; +connectAttr "neck_C0_blade.bladeRollOffset" "unitConversion139.i"; +connectAttr "mgear_curveCns420GroupParts.og" "mgear_curveCns420.ip[0].ig"; +connectAttr "mgear_curveCns420GroupId.id" "mgear_curveCns420.ip[0].gi"; +connectAttr "neck_C0_root.wm" "mgear_curveCns420.inputs[0]"; +connectAttr "neck_C0_tan0.wm" "mgear_curveCns420.inputs[1]"; +connectAttr "neck_C0_tan1.wm" "mgear_curveCns420.inputs[2]"; +connectAttr "neck_C0_neck.wm" "mgear_curveCns420.inputs[3]"; +connectAttr "mgear_curveCns420GroupId.msg" "mgear_curveCns420Set.gn" -na; +connectAttr "neck_C0_neck_crvShape.iog.og[0]" "mgear_curveCns420Set.dsm" -na; +connectAttr "mgear_curveCns420.msg" "mgear_curveCns420Set.ub[0]"; +connectAttr "tweak568.og[0]" "mgear_curveCns420GroupParts.ig"; +connectAttr "mgear_curveCns420GroupId.id" "mgear_curveCns420GroupParts.gi"; +connectAttr "groupParts1136.og" "tweak568.ip[0].ig"; +connectAttr "groupId8705.id" "tweak568.ip[0].gi"; +connectAttr "groupId8705.msg" "tweakSet568.gn" -na; +connectAttr "neck_C0_neck_crvShape.iog.og[1]" "tweakSet568.dsm" -na; +connectAttr "tweak568.msg" "tweakSet568.ub[0]"; +connectAttr "neck_C0_neck_crvShapeOrig.ws" "groupParts1136.ig"; +connectAttr "groupId8705.id" "groupParts1136.gi"; connectAttr "finger_R3_blade.bladeRollOffset" "unitConversion143.i"; -connectAttr "mgear_curveCns432GroupParts.og" "mgear_curveCns432.ip[0].ig"; -connectAttr "mgear_curveCns432GroupId.id" "mgear_curveCns432.ip[0].gi"; -connectAttr "finger_R3_root.wm" "mgear_curveCns432.inputs[0]"; -connectAttr "finger_R3_0_loc.wm" "mgear_curveCns432.inputs[1]"; -connectAttr "finger_R3_1_loc.wm" "mgear_curveCns432.inputs[2]"; -connectAttr "finger_R3_2_loc.wm" "mgear_curveCns432.inputs[3]"; -connectAttr "groupParts1160.og" "tweak580.ip[0].ig"; -connectAttr "groupId8729.id" "tweak580.ip[0].gi"; -connectAttr "mgear_curveCns432GroupId.msg" "mgear_curveCns432Set.gn" -na; -connectAttr "finger_R3_crvShape.iog.og[0]" "mgear_curveCns432Set.dsm" -na; -connectAttr "mgear_curveCns432.msg" "mgear_curveCns432Set.ub[0]"; -connectAttr "tweak580.og[0]" "mgear_curveCns432GroupParts.ig"; -connectAttr "mgear_curveCns432GroupId.id" "mgear_curveCns432GroupParts.gi"; -connectAttr "groupId8729.msg" "tweakSet580.gn" -na; -connectAttr "finger_R3_crvShape.iog.og[1]" "tweakSet580.dsm" -na; -connectAttr "tweak580.msg" "tweakSet580.ub[0]"; -connectAttr "finger_R3_crvShapeOrig.ws" "groupParts1160.ig"; -connectAttr "groupId8729.id" "groupParts1160.gi"; +connectAttr "mgear_curveCns443GroupParts.og" "mgear_curveCns443.ip[0].ig"; +connectAttr "mgear_curveCns443GroupId.id" "mgear_curveCns443.ip[0].gi"; +connectAttr "finger_R3_root.wm" "mgear_curveCns443.inputs[0]"; +connectAttr "finger_R3_0_loc.wm" "mgear_curveCns443.inputs[1]"; +connectAttr "finger_R3_1_loc.wm" "mgear_curveCns443.inputs[2]"; +connectAttr "finger_R3_2_loc.wm" "mgear_curveCns443.inputs[3]"; +connectAttr "mgear_curveCns443GroupId.msg" "mgear_curveCns443Set.gn" -na; +connectAttr "finger_R3_crvShape.iog.og[0]" "mgear_curveCns443Set.dsm" -na; +connectAttr "mgear_curveCns443.msg" "mgear_curveCns443Set.ub[0]"; +connectAttr "tweak591.og[0]" "mgear_curveCns443GroupParts.ig"; +connectAttr "mgear_curveCns443GroupId.id" "mgear_curveCns443GroupParts.gi"; +connectAttr "groupParts1182.og" "tweak591.ip[0].ig"; +connectAttr "groupId8751.id" "tweak591.ip[0].gi"; +connectAttr "groupId8751.msg" "tweakSet591.gn" -na; +connectAttr "finger_R3_crvShape.iog.og[1]" "tweakSet591.dsm" -na; +connectAttr "tweak591.msg" "tweakSet591.ub[0]"; +connectAttr "finger_R3_crvShapeOrig.ws" "groupParts1182.ig"; +connectAttr "groupId8751.id" "groupParts1182.gi"; connectAttr "finger_R2_blade.bladeRollOffset" "unitConversion144.i"; -connectAttr "mgear_curveCns433GroupParts.og" "mgear_curveCns433.ip[0].ig"; -connectAttr "mgear_curveCns433GroupId.id" "mgear_curveCns433.ip[0].gi"; -connectAttr "finger_R2_root.wm" "mgear_curveCns433.inputs[0]"; -connectAttr "finger_R2_0_loc.wm" "mgear_curveCns433.inputs[1]"; -connectAttr "finger_R2_1_loc.wm" "mgear_curveCns433.inputs[2]"; -connectAttr "finger_R2_2_loc.wm" "mgear_curveCns433.inputs[3]"; -connectAttr "groupParts1162.og" "tweak581.ip[0].ig"; -connectAttr "groupId8731.id" "tweak581.ip[0].gi"; -connectAttr "mgear_curveCns433GroupId.msg" "mgear_curveCns433Set.gn" -na; -connectAttr "finger_R2_crvShape.iog.og[0]" "mgear_curveCns433Set.dsm" -na; -connectAttr "mgear_curveCns433.msg" "mgear_curveCns433Set.ub[0]"; -connectAttr "tweak581.og[0]" "mgear_curveCns433GroupParts.ig"; -connectAttr "mgear_curveCns433GroupId.id" "mgear_curveCns433GroupParts.gi"; -connectAttr "groupId8731.msg" "tweakSet581.gn" -na; -connectAttr "finger_R2_crvShape.iog.og[1]" "tweakSet581.dsm" -na; -connectAttr "tweak581.msg" "tweakSet581.ub[0]"; -connectAttr "finger_R2_crvShapeOrig.ws" "groupParts1162.ig"; -connectAttr "groupId8731.id" "groupParts1162.gi"; +connectAttr "mgear_curveCns444GroupParts.og" "mgear_curveCns444.ip[0].ig"; +connectAttr "mgear_curveCns444GroupId.id" "mgear_curveCns444.ip[0].gi"; +connectAttr "finger_R2_root.wm" "mgear_curveCns444.inputs[0]"; +connectAttr "finger_R2_0_loc.wm" "mgear_curveCns444.inputs[1]"; +connectAttr "finger_R2_1_loc.wm" "mgear_curveCns444.inputs[2]"; +connectAttr "finger_R2_2_loc.wm" "mgear_curveCns444.inputs[3]"; +connectAttr "mgear_curveCns444GroupId.msg" "mgear_curveCns444Set.gn" -na; +connectAttr "finger_R2_crvShape.iog.og[0]" "mgear_curveCns444Set.dsm" -na; +connectAttr "mgear_curveCns444.msg" "mgear_curveCns444Set.ub[0]"; +connectAttr "tweak592.og[0]" "mgear_curveCns444GroupParts.ig"; +connectAttr "mgear_curveCns444GroupId.id" "mgear_curveCns444GroupParts.gi"; +connectAttr "groupParts1184.og" "tweak592.ip[0].ig"; +connectAttr "groupId8753.id" "tweak592.ip[0].gi"; +connectAttr "groupId8753.msg" "tweakSet592.gn" -na; +connectAttr "finger_R2_crvShape.iog.og[1]" "tweakSet592.dsm" -na; +connectAttr "tweak592.msg" "tweakSet592.ub[0]"; +connectAttr "finger_R2_crvShapeOrig.ws" "groupParts1184.ig"; +connectAttr "groupId8753.id" "groupParts1184.gi"; connectAttr "finger_R1_blade.bladeRollOffset" "unitConversion145.i"; -connectAttr "mgear_curveCns434GroupParts.og" "mgear_curveCns434.ip[0].ig"; -connectAttr "mgear_curveCns434GroupId.id" "mgear_curveCns434.ip[0].gi"; -connectAttr "finger_R1_root.wm" "mgear_curveCns434.inputs[0]"; -connectAttr "finger_R1_0_loc.wm" "mgear_curveCns434.inputs[1]"; -connectAttr "finger_R1_1_loc.wm" "mgear_curveCns434.inputs[2]"; -connectAttr "finger_R1_2_loc.wm" "mgear_curveCns434.inputs[3]"; -connectAttr "groupParts1164.og" "tweak582.ip[0].ig"; -connectAttr "groupId8733.id" "tweak582.ip[0].gi"; -connectAttr "mgear_curveCns434GroupId.msg" "mgear_curveCns434Set.gn" -na; -connectAttr "finger_R1_crvShape.iog.og[0]" "mgear_curveCns434Set.dsm" -na; -connectAttr "mgear_curveCns434.msg" "mgear_curveCns434Set.ub[0]"; -connectAttr "tweak582.og[0]" "mgear_curveCns434GroupParts.ig"; -connectAttr "mgear_curveCns434GroupId.id" "mgear_curveCns434GroupParts.gi"; -connectAttr "groupId8733.msg" "tweakSet582.gn" -na; -connectAttr "finger_R1_crvShape.iog.og[1]" "tweakSet582.dsm" -na; -connectAttr "tweak582.msg" "tweakSet582.ub[0]"; -connectAttr "finger_R1_crvShapeOrig.ws" "groupParts1164.ig"; -connectAttr "groupId8733.id" "groupParts1164.gi"; +connectAttr "mgear_curveCns445GroupParts.og" "mgear_curveCns445.ip[0].ig"; +connectAttr "mgear_curveCns445GroupId.id" "mgear_curveCns445.ip[0].gi"; +connectAttr "finger_R1_root.wm" "mgear_curveCns445.inputs[0]"; +connectAttr "finger_R1_0_loc.wm" "mgear_curveCns445.inputs[1]"; +connectAttr "finger_R1_1_loc.wm" "mgear_curveCns445.inputs[2]"; +connectAttr "finger_R1_2_loc.wm" "mgear_curveCns445.inputs[3]"; +connectAttr "mgear_curveCns445GroupId.msg" "mgear_curveCns445Set.gn" -na; +connectAttr "finger_R1_crvShape.iog.og[0]" "mgear_curveCns445Set.dsm" -na; +connectAttr "mgear_curveCns445.msg" "mgear_curveCns445Set.ub[0]"; +connectAttr "tweak593.og[0]" "mgear_curveCns445GroupParts.ig"; +connectAttr "mgear_curveCns445GroupId.id" "mgear_curveCns445GroupParts.gi"; +connectAttr "groupParts1186.og" "tweak593.ip[0].ig"; +connectAttr "groupId8755.id" "tweak593.ip[0].gi"; +connectAttr "groupId8755.msg" "tweakSet593.gn" -na; +connectAttr "finger_R1_crvShape.iog.og[1]" "tweakSet593.dsm" -na; +connectAttr "tweak593.msg" "tweakSet593.ub[0]"; +connectAttr "finger_R1_crvShapeOrig.ws" "groupParts1186.ig"; +connectAttr "groupId8755.id" "groupParts1186.gi"; +connectAttr "meta_R0_blade.bladeRollOffset" "unitConversion142.i"; +connectAttr "mgear_curveCns442GroupParts.og" "mgear_curveCns442.ip[0].ig"; +connectAttr "mgear_curveCns442GroupId.id" "mgear_curveCns442.ip[0].gi"; +connectAttr "meta_R0_root.wm" "mgear_curveCns442.inputs[0]"; +connectAttr "meta_R0_0_loc.wm" "mgear_curveCns442.inputs[1]"; +connectAttr "meta_R0_1_loc.wm" "mgear_curveCns442.inputs[2]"; +connectAttr "meta_R0_2_loc.wm" "mgear_curveCns442.inputs[3]"; +connectAttr "mgear_curveCns442GroupId.msg" "mgear_curveCns442Set.gn" -na; +connectAttr "meta_R0_crvShape.iog.og[0]" "mgear_curveCns442Set.dsm" -na; +connectAttr "mgear_curveCns442.msg" "mgear_curveCns442Set.ub[0]"; +connectAttr "tweak590.og[0]" "mgear_curveCns442GroupParts.ig"; +connectAttr "mgear_curveCns442GroupId.id" "mgear_curveCns442GroupParts.gi"; +connectAttr "groupParts1180.og" "tweak590.ip[0].ig"; +connectAttr "groupId8749.id" "tweak590.ip[0].gi"; +connectAttr "groupId8749.msg" "tweakSet590.gn" -na; +connectAttr "meta_R0_crvShape.iog.og[1]" "tweakSet590.dsm" -na; +connectAttr "tweak590.msg" "tweakSet590.ub[0]"; +connectAttr "meta_R0_crvShapeOrig.ws" "groupParts1180.ig"; +connectAttr "groupId8749.id" "groupParts1180.gi"; connectAttr "finger_R0_blade.bladeRollOffset" "unitConversion146.i"; -connectAttr "mgear_curveCns435GroupParts.og" "mgear_curveCns435.ip[0].ig"; -connectAttr "mgear_curveCns435GroupId.id" "mgear_curveCns435.ip[0].gi"; -connectAttr "finger_R0_root.wm" "mgear_curveCns435.inputs[0]"; -connectAttr "finger_R0_0_loc.wm" "mgear_curveCns435.inputs[1]"; -connectAttr "finger_R0_1_loc.wm" "mgear_curveCns435.inputs[2]"; -connectAttr "finger_R0_2_loc.wm" "mgear_curveCns435.inputs[3]"; -connectAttr "groupParts1166.og" "tweak583.ip[0].ig"; -connectAttr "groupId8735.id" "tweak583.ip[0].gi"; -connectAttr "mgear_curveCns435GroupId.msg" "mgear_curveCns435Set.gn" -na; -connectAttr "finger_R0_crvShape.iog.og[0]" "mgear_curveCns435Set.dsm" -na; -connectAttr "mgear_curveCns435.msg" "mgear_curveCns435Set.ub[0]"; -connectAttr "tweak583.og[0]" "mgear_curveCns435GroupParts.ig"; -connectAttr "mgear_curveCns435GroupId.id" "mgear_curveCns435GroupParts.gi"; -connectAttr "groupId8735.msg" "tweakSet583.gn" -na; -connectAttr "finger_R0_crvShape.iog.og[1]" "tweakSet583.dsm" -na; -connectAttr "tweak583.msg" "tweakSet583.ub[0]"; -connectAttr "finger_R0_crvShapeOrig.ws" "groupParts1166.ig"; -connectAttr "groupId8735.id" "groupParts1166.gi"; +connectAttr "mgear_curveCns446GroupParts.og" "mgear_curveCns446.ip[0].ig"; +connectAttr "mgear_curveCns446GroupId.id" "mgear_curveCns446.ip[0].gi"; +connectAttr "finger_R0_root.wm" "mgear_curveCns446.inputs[0]"; +connectAttr "finger_R0_0_loc.wm" "mgear_curveCns446.inputs[1]"; +connectAttr "finger_R0_1_loc.wm" "mgear_curveCns446.inputs[2]"; +connectAttr "finger_R0_2_loc.wm" "mgear_curveCns446.inputs[3]"; +connectAttr "mgear_curveCns446GroupId.msg" "mgear_curveCns446Set.gn" -na; +connectAttr "finger_R0_crvShape.iog.og[0]" "mgear_curveCns446Set.dsm" -na; +connectAttr "mgear_curveCns446.msg" "mgear_curveCns446Set.ub[0]"; +connectAttr "tweak594.og[0]" "mgear_curveCns446GroupParts.ig"; +connectAttr "mgear_curveCns446GroupId.id" "mgear_curveCns446GroupParts.gi"; +connectAttr "groupParts1188.og" "tweak594.ip[0].ig"; +connectAttr "groupId8757.id" "tweak594.ip[0].gi"; +connectAttr "groupId8757.msg" "tweakSet594.gn" -na; +connectAttr "finger_R0_crvShape.iog.og[1]" "tweakSet594.dsm" -na; +connectAttr "tweak594.msg" "tweakSet594.ub[0]"; +connectAttr "finger_R0_crvShapeOrig.ws" "groupParts1188.ig"; +connectAttr "groupId8757.id" "groupParts1188.gi"; connectAttr "thumb_R0_blade.bladeRollOffset" "unitConversion147.i"; -connectAttr "mgear_curveCns436GroupParts.og" "mgear_curveCns436.ip[0].ig"; -connectAttr "mgear_curveCns436GroupId.id" "mgear_curveCns436.ip[0].gi"; -connectAttr "thumb_R0_root.wm" "mgear_curveCns436.inputs[0]"; -connectAttr "thumb_R0_0_loc.wm" "mgear_curveCns436.inputs[1]"; -connectAttr "thumb_R0_1_loc.wm" "mgear_curveCns436.inputs[2]"; -connectAttr "thumb_R0_2_loc.wm" "mgear_curveCns436.inputs[3]"; -connectAttr "groupParts1168.og" "tweak584.ip[0].ig"; -connectAttr "groupId8737.id" "tweak584.ip[0].gi"; -connectAttr "mgear_curveCns436GroupId.msg" "mgear_curveCns436Set.gn" -na; -connectAttr "thumb_R0_crvShape.iog.og[0]" "mgear_curveCns436Set.dsm" -na; -connectAttr "mgear_curveCns436.msg" "mgear_curveCns436Set.ub[0]"; -connectAttr "tweak584.og[0]" "mgear_curveCns436GroupParts.ig"; -connectAttr "mgear_curveCns436GroupId.id" "mgear_curveCns436GroupParts.gi"; -connectAttr "groupId8737.msg" "tweakSet584.gn" -na; -connectAttr "thumb_R0_crvShape.iog.og[1]" "tweakSet584.dsm" -na; -connectAttr "tweak584.msg" "tweakSet584.ub[0]"; -connectAttr "thumb_R0_crvShapeOrig.ws" "groupParts1168.ig"; -connectAttr "groupId8737.id" "groupParts1168.gi"; -connectAttr "mgear_curveCns437GroupParts.og" "mgear_curveCns437.ip[0].ig"; -connectAttr "mgear_curveCns437GroupId.id" "mgear_curveCns437.ip[0].gi"; -connectAttr "leg_L0_root.wm" "mgear_curveCns437.inputs[0]"; -connectAttr "leg_L0_knee.wm" "mgear_curveCns437.inputs[1]"; -connectAttr "leg_L0_ankle.wm" "mgear_curveCns437.inputs[2]"; -connectAttr "leg_L0_eff.wm" "mgear_curveCns437.inputs[3]"; -connectAttr "groupParts1170.og" "tweak585.ip[0].ig"; -connectAttr "groupId8739.id" "tweak585.ip[0].gi"; -connectAttr "mgear_curveCns437GroupId.msg" "mgear_curveCns437Set.gn" -na; -connectAttr "leg_L0_crvShape.iog.og[0]" "mgear_curveCns437Set.dsm" -na; -connectAttr "mgear_curveCns437.msg" "mgear_curveCns437Set.ub[0]"; -connectAttr "tweak585.og[0]" "mgear_curveCns437GroupParts.ig"; -connectAttr "mgear_curveCns437GroupId.id" "mgear_curveCns437GroupParts.gi"; -connectAttr "groupId8739.msg" "tweakSet585.gn" -na; -connectAttr "leg_L0_crvShape.iog.og[1]" "tweakSet585.dsm" -na; -connectAttr "tweak585.msg" "tweakSet585.ub[0]"; -connectAttr "leg_L0_crvShapeOrig.ws" "groupParts1170.ig"; -connectAttr "groupId8739.id" "groupParts1170.gi"; +connectAttr "mgear_curveCns447GroupParts.og" "mgear_curveCns447.ip[0].ig"; +connectAttr "mgear_curveCns447GroupId.id" "mgear_curveCns447.ip[0].gi"; +connectAttr "thumb_R0_root.wm" "mgear_curveCns447.inputs[0]"; +connectAttr "thumb_R0_0_loc.wm" "mgear_curveCns447.inputs[1]"; +connectAttr "thumb_R0_1_loc.wm" "mgear_curveCns447.inputs[2]"; +connectAttr "thumb_R0_2_loc.wm" "mgear_curveCns447.inputs[3]"; +connectAttr "mgear_curveCns447GroupId.msg" "mgear_curveCns447Set.gn" -na; +connectAttr "thumb_R0_crvShape.iog.og[0]" "mgear_curveCns447Set.dsm" -na; +connectAttr "mgear_curveCns447.msg" "mgear_curveCns447Set.ub[0]"; +connectAttr "tweak595.og[0]" "mgear_curveCns447GroupParts.ig"; +connectAttr "mgear_curveCns447GroupId.id" "mgear_curveCns447GroupParts.gi"; +connectAttr "groupParts1190.og" "tweak595.ip[0].ig"; +connectAttr "groupId8759.id" "tweak595.ip[0].gi"; +connectAttr "groupId8759.msg" "tweakSet595.gn" -na; +connectAttr "thumb_R0_crvShape.iog.og[1]" "tweakSet595.dsm" -na; +connectAttr "tweak595.msg" "tweakSet595.ub[0]"; +connectAttr "thumb_R0_crvShapeOrig.ws" "groupParts1190.ig"; +connectAttr "groupId8759.id" "groupParts1190.gi"; +connectAttr "mgear_curveCns441GroupParts.og" "mgear_curveCns441.ip[0].ig"; +connectAttr "mgear_curveCns441GroupId.id" "mgear_curveCns441.ip[0].gi"; +connectAttr "arm_R0_root.wm" "mgear_curveCns441.inputs[0]"; +connectAttr "arm_R0_elbow.wm" "mgear_curveCns441.inputs[1]"; +connectAttr "arm_R0_wrist.wm" "mgear_curveCns441.inputs[2]"; +connectAttr "arm_R0_eff.wm" "mgear_curveCns441.inputs[3]"; +connectAttr "mgear_curveCns441GroupId.msg" "mgear_curveCns441Set.gn" -na; +connectAttr "arm_R0_crvShape.iog.og[0]" "mgear_curveCns441Set.dsm" -na; +connectAttr "mgear_curveCns441.msg" "mgear_curveCns441Set.ub[0]"; +connectAttr "tweak589.og[0]" "mgear_curveCns441GroupParts.ig"; +connectAttr "mgear_curveCns441GroupId.id" "mgear_curveCns441GroupParts.gi"; +connectAttr "groupParts1178.og" "tweak589.ip[0].ig"; +connectAttr "groupId8747.id" "tweak589.ip[0].gi"; +connectAttr "groupId8747.msg" "tweakSet589.gn" -na; +connectAttr "arm_R0_crvShape.iog.og[1]" "tweakSet589.dsm" -na; +connectAttr "tweak589.msg" "tweakSet589.ub[0]"; +connectAttr "arm_R0_crvShapeOrig.ws" "groupParts1178.ig"; +connectAttr "groupId8747.id" "groupParts1178.gi"; +connectAttr "shoulder_R0_blade.bladeRollOffset" "unitConversion141.i"; +connectAttr "mgear_curveCns440GroupParts.og" "mgear_curveCns440.ip[0].ig"; +connectAttr "mgear_curveCns440GroupId.id" "mgear_curveCns440.ip[0].gi"; +connectAttr "shoulder_R0_root.wm" "mgear_curveCns440.inputs[0]"; +connectAttr "shoulder_R0_tip.wm" "mgear_curveCns440.inputs[1]"; +connectAttr "mgear_curveCns440GroupId.msg" "mgear_curveCns440Set.gn" -na; +connectAttr "shoulder_R0_crvShape.iog.og[0]" "mgear_curveCns440Set.dsm" -na; +connectAttr "mgear_curveCns440.msg" "mgear_curveCns440Set.ub[0]"; +connectAttr "tweak588.og[0]" "mgear_curveCns440GroupParts.ig"; +connectAttr "mgear_curveCns440GroupId.id" "mgear_curveCns440GroupParts.gi"; +connectAttr "groupParts1176.og" "tweak588.ip[0].ig"; +connectAttr "groupId8745.id" "tweak588.ip[0].gi"; +connectAttr "groupId8745.msg" "tweakSet588.gn" -na; +connectAttr "shoulder_R0_crvShape.iog.og[1]" "tweakSet588.dsm" -na; +connectAttr "tweak588.msg" "tweakSet588.ub[0]"; +connectAttr "shoulder_R0_crvShapeOrig.ws" "groupParts1176.ig"; +connectAttr "groupId8745.id" "groupParts1176.gi"; +connectAttr "spine_C0_blade.bladeRollOffset" "unitConversion131.i"; +connectAttr "mgear_curveCns411GroupParts.og" "mgear_curveCns411.ip[0].ig"; +connectAttr "mgear_curveCns411GroupId.id" "mgear_curveCns411.ip[0].gi"; +connectAttr "spine_C0_root.wm" "mgear_curveCns411.inputs[0]"; +connectAttr "spine_C0_eff.wm" "mgear_curveCns411.inputs[1]"; +connectAttr "mgear_curveCns411GroupId.msg" "mgear_curveCns411Set.gn" -na; +connectAttr "spine_C0_crvShape.iog.og[0]" "mgear_curveCns411Set.dsm" -na; +connectAttr "mgear_curveCns411.msg" "mgear_curveCns411Set.ub[0]"; +connectAttr "tweak559.og[0]" "mgear_curveCns411GroupParts.ig"; +connectAttr "mgear_curveCns411GroupId.id" "mgear_curveCns411GroupParts.gi"; +connectAttr "groupParts1118.og" "tweak559.ip[0].ig"; +connectAttr "groupId8687.id" "tweak559.ip[0].gi"; +connectAttr "groupId8687.msg" "tweakSet559.gn" -na; +connectAttr "spine_C0_crvShape.iog.og[1]" "tweakSet559.dsm" -na; +connectAttr "tweak559.msg" "tweakSet559.ub[0]"; +connectAttr "spine_C0_crvShapeOrig.ws" "groupParts1118.ig"; +connectAttr "groupId8687.id" "groupParts1118.gi"; connectAttr "mgear_curveCns438GroupParts.og" "mgear_curveCns438.ip[0].ig"; connectAttr "mgear_curveCns438GroupId.id" "mgear_curveCns438.ip[0].gi"; connectAttr "foot_L0_root.wm" "mgear_curveCns438.inputs[0]"; connectAttr "foot_L0_0_loc.wm" "mgear_curveCns438.inputs[1]"; connectAttr "foot_L0_1_loc.wm" "mgear_curveCns438.inputs[2]"; connectAttr "foot_L0_2_loc.wm" "mgear_curveCns438.inputs[3]"; -connectAttr "groupParts1172.og" "tweak586.ip[0].ig"; -connectAttr "groupId8741.id" "tweak586.ip[0].gi"; connectAttr "mgear_curveCns438GroupId.msg" "mgear_curveCns438Set.gn" -na; connectAttr "foot_L0_crvShape.iog.og[0]" "mgear_curveCns438Set.dsm" -na; connectAttr "mgear_curveCns438.msg" "mgear_curveCns438Set.ub[0]"; connectAttr "tweak586.og[0]" "mgear_curveCns438GroupParts.ig"; connectAttr "mgear_curveCns438GroupId.id" "mgear_curveCns438GroupParts.gi"; +connectAttr "groupParts1172.og" "tweak586.ip[0].ig"; +connectAttr "groupId8741.id" "tweak586.ip[0].gi"; connectAttr "groupId8741.msg" "tweakSet586.gn" -na; connectAttr "foot_L0_crvShape.iog.og[1]" "tweakSet586.dsm" -na; connectAttr "tweak586.msg" "tweakSet586.ub[0]"; @@ -17220,72 +17179,89 @@ connectAttr "foot_L0_heel.wm" "mgear_curveCns439.inputs[1]"; connectAttr "foot_L0_outpivot.wm" "mgear_curveCns439.inputs[2]"; connectAttr "foot_L0_heel.wm" "mgear_curveCns439.inputs[3]"; connectAttr "foot_L0_inpivot.wm" "mgear_curveCns439.inputs[4]"; -connectAttr "groupParts1174.og" "tweak587.ip[0].ig"; -connectAttr "groupId8743.id" "tweak587.ip[0].gi"; connectAttr "mgear_curveCns439GroupId.msg" "mgear_curveCns439Set.gn" -na; connectAttr "foot_L0_Shape1.iog.og[0]" "mgear_curveCns439Set.dsm" -na; connectAttr "mgear_curveCns439.msg" "mgear_curveCns439Set.ub[0]"; connectAttr "tweak587.og[0]" "mgear_curveCns439GroupParts.ig"; connectAttr "mgear_curveCns439GroupId.id" "mgear_curveCns439GroupParts.gi"; +connectAttr "groupParts1174.og" "tweak587.ip[0].ig"; +connectAttr "groupId8743.id" "tweak587.ip[0].gi"; connectAttr "groupId8743.msg" "tweakSet587.gn" -na; connectAttr "foot_L0_Shape1.iog.og[1]" "tweakSet587.dsm" -na; connectAttr "tweak587.msg" "tweakSet587.ub[0]"; -connectAttr "foot_L0_Shape1Orig.ws" "groupParts1174.ig"; +connectAttr "foot_L0_Shape1Orig1.ws" "groupParts1174.ig"; connectAttr "groupId8743.id" "groupParts1174.gi"; -connectAttr "mgear_curveCns440GroupParts.og" "mgear_curveCns440.ip[0].ig"; -connectAttr "mgear_curveCns440GroupId.id" "mgear_curveCns440.ip[0].gi"; -connectAttr "leg_R0_root.wm" "mgear_curveCns440.inputs[0]"; -connectAttr "leg_R0_knee.wm" "mgear_curveCns440.inputs[1]"; -connectAttr "leg_R0_ankle.wm" "mgear_curveCns440.inputs[2]"; -connectAttr "leg_R0_eff.wm" "mgear_curveCns440.inputs[3]"; -connectAttr "groupParts1176.og" "tweak588.ip[0].ig"; -connectAttr "groupId8745.id" "tweak588.ip[0].gi"; -connectAttr "mgear_curveCns440GroupId.msg" "mgear_curveCns440Set.gn" -na; -connectAttr "leg_R0_crvShape.iog.og[0]" "mgear_curveCns440Set.dsm" -na; -connectAttr "mgear_curveCns440.msg" "mgear_curveCns440Set.ub[0]"; -connectAttr "tweak588.og[0]" "mgear_curveCns440GroupParts.ig"; -connectAttr "mgear_curveCns440GroupId.id" "mgear_curveCns440GroupParts.gi"; -connectAttr "groupId8745.msg" "tweakSet588.gn" -na; -connectAttr "leg_R0_crvShape.iog.og[1]" "tweakSet588.dsm" -na; -connectAttr "tweak588.msg" "tweakSet588.ub[0]"; -connectAttr "leg_R0_crvShapeOrig.ws" "groupParts1176.ig"; -connectAttr "groupId8745.id" "groupParts1176.gi"; -connectAttr "mgear_curveCns441GroupParts.og" "mgear_curveCns441.ip[0].ig"; -connectAttr "mgear_curveCns441GroupId.id" "mgear_curveCns441.ip[0].gi"; -connectAttr "foot_R0_root.wm" "mgear_curveCns441.inputs[0]"; -connectAttr "foot_R0_0_loc.wm" "mgear_curveCns441.inputs[1]"; -connectAttr "foot_R0_1_loc.wm" "mgear_curveCns441.inputs[2]"; -connectAttr "foot_R0_2_loc.wm" "mgear_curveCns441.inputs[3]"; -connectAttr "groupParts1178.og" "tweak589.ip[0].ig"; -connectAttr "groupId8747.id" "tweak589.ip[0].gi"; -connectAttr "mgear_curveCns441GroupId.msg" "mgear_curveCns441Set.gn" -na; -connectAttr "foot_R0_crvShape.iog.og[0]" "mgear_curveCns441Set.dsm" -na; -connectAttr "mgear_curveCns441.msg" "mgear_curveCns441Set.ub[0]"; -connectAttr "tweak589.og[0]" "mgear_curveCns441GroupParts.ig"; -connectAttr "mgear_curveCns441GroupId.id" "mgear_curveCns441GroupParts.gi"; -connectAttr "groupId8747.msg" "tweakSet589.gn" -na; -connectAttr "foot_R0_crvShape.iog.og[1]" "tweakSet589.dsm" -na; -connectAttr "tweak589.msg" "tweakSet589.ub[0]"; -connectAttr "foot_R0_crvShapeOrig.ws" "groupParts1178.ig"; -connectAttr "groupId8747.id" "groupParts1178.gi"; -connectAttr "mgear_curveCns442GroupParts.og" "mgear_curveCns442.ip[0].ig"; -connectAttr "mgear_curveCns442GroupId.id" "mgear_curveCns442.ip[0].gi"; -connectAttr "foot_R0_root.wm" "mgear_curveCns442.inputs[0]"; -connectAttr "foot_R0_heel.wm" "mgear_curveCns442.inputs[1]"; -connectAttr "foot_R0_outpivot.wm" "mgear_curveCns442.inputs[2]"; -connectAttr "foot_R0_heel.wm" "mgear_curveCns442.inputs[3]"; -connectAttr "foot_R0_inpivot.wm" "mgear_curveCns442.inputs[4]"; -connectAttr "groupParts1180.og" "tweak590.ip[0].ig"; -connectAttr "groupId8749.id" "tweak590.ip[0].gi"; -connectAttr "mgear_curveCns442GroupId.msg" "mgear_curveCns442Set.gn" -na; -connectAttr "foot_R0_Shape1.iog.og[0]" "mgear_curveCns442Set.dsm" -na; -connectAttr "mgear_curveCns442.msg" "mgear_curveCns442Set.ub[0]"; -connectAttr "tweak590.og[0]" "mgear_curveCns442GroupParts.ig"; -connectAttr "mgear_curveCns442GroupId.id" "mgear_curveCns442GroupParts.gi"; -connectAttr "groupId8749.msg" "tweakSet590.gn" -na; -connectAttr "foot_R0_Shape1.iog.og[1]" "tweakSet590.dsm" -na; -connectAttr "tweak590.msg" "tweakSet590.ub[0]"; -connectAttr "foot_R0_Shape1Orig.ws" "groupParts1180.ig"; -connectAttr "groupId8749.id" "groupParts1180.gi"; -connectAttr "defaultRenderLayer.msg" ":defaultRenderingList1.r" -na; +connectAttr "mgear_curveCns437GroupParts.og" "mgear_curveCns437.ip[0].ig"; +connectAttr "mgear_curveCns437GroupId.id" "mgear_curveCns437.ip[0].gi"; +connectAttr "leg_L0_root.wm" "mgear_curveCns437.inputs[0]"; +connectAttr "leg_L0_knee.wm" "mgear_curveCns437.inputs[1]"; +connectAttr "leg_L0_ankle.wm" "mgear_curveCns437.inputs[2]"; +connectAttr "leg_L0_eff.wm" "mgear_curveCns437.inputs[3]"; +connectAttr "mgear_curveCns437GroupId.msg" "mgear_curveCns437Set.gn" -na; +connectAttr "leg_L0_crvShape.iog.og[0]" "mgear_curveCns437Set.dsm" -na; +connectAttr "mgear_curveCns437.msg" "mgear_curveCns437Set.ub[0]"; +connectAttr "tweak585.og[0]" "mgear_curveCns437GroupParts.ig"; +connectAttr "mgear_curveCns437GroupId.id" "mgear_curveCns437GroupParts.gi"; +connectAttr "groupParts1170.og" "tweak585.ip[0].ig"; +connectAttr "groupId8739.id" "tweak585.ip[0].gi"; +connectAttr "groupId8739.msg" "tweakSet585.gn" -na; +connectAttr "leg_L0_crvShape.iog.og[1]" "tweakSet585.dsm" -na; +connectAttr "tweak585.msg" "tweakSet585.ub[0]"; +connectAttr "leg_L0_crvShapeOrig.ws" "groupParts1170.ig"; +connectAttr "groupId8739.id" "groupParts1170.gi"; +connectAttr "mgear_curveCns449GroupParts.og" "mgear_curveCns449.ip[0].ig"; +connectAttr "mgear_curveCns449GroupId.id" "mgear_curveCns449.ip[0].gi"; +connectAttr "foot_R0_root.wm" "mgear_curveCns449.inputs[0]"; +connectAttr "foot_R0_0_loc.wm" "mgear_curveCns449.inputs[1]"; +connectAttr "foot_R0_1_loc.wm" "mgear_curveCns449.inputs[2]"; +connectAttr "foot_R0_2_loc.wm" "mgear_curveCns449.inputs[3]"; +connectAttr "mgear_curveCns449GroupId.msg" "mgear_curveCns449Set.gn" -na; +connectAttr "foot_R0_crvShape.iog.og[0]" "mgear_curveCns449Set.dsm" -na; +connectAttr "mgear_curveCns449.msg" "mgear_curveCns449Set.ub[0]"; +connectAttr "tweak597.og[0]" "mgear_curveCns449GroupParts.ig"; +connectAttr "mgear_curveCns449GroupId.id" "mgear_curveCns449GroupParts.gi"; +connectAttr "groupParts1194.og" "tweak597.ip[0].ig"; +connectAttr "groupId8763.id" "tweak597.ip[0].gi"; +connectAttr "groupId8763.msg" "tweakSet597.gn" -na; +connectAttr "foot_R0_crvShape.iog.og[1]" "tweakSet597.dsm" -na; +connectAttr "tweak597.msg" "tweakSet597.ub[0]"; +connectAttr "foot_R0_crvShapeOrig.ws" "groupParts1194.ig"; +connectAttr "groupId8763.id" "groupParts1194.gi"; +connectAttr "mgear_curveCns450GroupParts.og" "mgear_curveCns450.ip[0].ig"; +connectAttr "mgear_curveCns450GroupId.id" "mgear_curveCns450.ip[0].gi"; +connectAttr "foot_R0_root.wm" "mgear_curveCns450.inputs[0]"; +connectAttr "foot_R0_heel.wm" "mgear_curveCns450.inputs[1]"; +connectAttr "foot_R0_outpivot.wm" "mgear_curveCns450.inputs[2]"; +connectAttr "foot_R0_heel.wm" "mgear_curveCns450.inputs[3]"; +connectAttr "foot_R0_inpivot.wm" "mgear_curveCns450.inputs[4]"; +connectAttr "mgear_curveCns450GroupId.msg" "mgear_curveCns450Set.gn" -na; +connectAttr "foot_R0_Shape1.iog.og[0]" "mgear_curveCns450Set.dsm" -na; +connectAttr "mgear_curveCns450.msg" "mgear_curveCns450Set.ub[0]"; +connectAttr "tweak598.og[0]" "mgear_curveCns450GroupParts.ig"; +connectAttr "mgear_curveCns450GroupId.id" "mgear_curveCns450GroupParts.gi"; +connectAttr "groupParts1196.og" "tweak598.ip[0].ig"; +connectAttr "groupId8765.id" "tweak598.ip[0].gi"; +connectAttr "groupId8765.msg" "tweakSet598.gn" -na; +connectAttr "foot_R0_Shape1.iog.og[1]" "tweakSet598.dsm" -na; +connectAttr "tweak598.msg" "tweakSet598.ub[0]"; +connectAttr "foot_R0_Shape1Orig.ws" "groupParts1196.ig"; +connectAttr "groupId8765.id" "groupParts1196.gi"; +connectAttr "mgear_curveCns448GroupParts.og" "mgear_curveCns448.ip[0].ig"; +connectAttr "mgear_curveCns448GroupId.id" "mgear_curveCns448.ip[0].gi"; +connectAttr "leg_R0_root.wm" "mgear_curveCns448.inputs[0]"; +connectAttr "leg_R0_knee.wm" "mgear_curveCns448.inputs[1]"; +connectAttr "leg_R0_ankle.wm" "mgear_curveCns448.inputs[2]"; +connectAttr "leg_R0_eff.wm" "mgear_curveCns448.inputs[3]"; +connectAttr "mgear_curveCns448GroupId.msg" "mgear_curveCns448Set.gn" -na; +connectAttr "leg_R0_crvShape.iog.og[0]" "mgear_curveCns448Set.dsm" -na; +connectAttr "mgear_curveCns448.msg" "mgear_curveCns448Set.ub[0]"; +connectAttr "tweak596.og[0]" "mgear_curveCns448GroupParts.ig"; +connectAttr "mgear_curveCns448GroupId.id" "mgear_curveCns448GroupParts.gi"; +connectAttr "groupParts1192.og" "tweak596.ip[0].ig"; +connectAttr "groupId8761.id" "tweak596.ip[0].gi"; +connectAttr "groupId8761.msg" "tweakSet596.gn" -na; +connectAttr "leg_R0_crvShape.iog.og[1]" "tweakSet596.dsm" -na; +connectAttr "tweak596.msg" "tweakSet596.ub[0]"; +connectAttr "leg_R0_crvShapeOrig.ws" "groupParts1192.ig"; +connectAttr "groupId8761.id" "groupParts1192.gi"; // End of biped_guide.ma From 36c43daf23e96f1e689c6c211ace1ad069de05d6 Mon Sep 17 00:00:00 2001 From: miquelcampos Date: Mon, 16 Oct 2017 18:16:18 +0900 Subject: [PATCH 011/134] Shifter: Update quadruped Guide: new global_c0_ctl and new references updated --- .../shifter/component/_templates/quadruped.ma | 3322 ++++++++--------- 1 file changed, 1651 insertions(+), 1671 deletions(-) diff --git a/scripts/mgear/maya/shifter/component/_templates/quadruped.ma b/scripts/mgear/maya/shifter/component/_templates/quadruped.ma index 526007d..2082fbd 100644 --- a/scripts/mgear/maya/shifter/component/_templates/quadruped.ma +++ b/scripts/mgear/maya/shifter/component/_templates/quadruped.ma @@ -1,6 +1,6 @@ //Maya ASCII 2016R2 scene //Name: quadruped.ma -//Last modified: Thu, Aug 31, 2017 05:01:40 PM +//Last modified: Mon, Oct 16, 2017 06:14:47 PM //Codeset: 932 requires maya "2016R2"; requires -nodeType "mgear_curveCns" "mgear_solvers" "2.1.0"; @@ -11,69 +11,8 @@ fileInfo "product" "Maya 2016"; fileInfo "version" "2016 Extension 2 SP2"; fileInfo "cutIdentifier" "201608220310-1001477-2"; fileInfo "osv" "Microsoft Windows 8 Business Edition, 64-bit (Build 9200)\n"; -createNode transform -s -n "persp"; - rename -uid "9EB04C39-4CA5-A2D4-E719-90A4EFF56BEA"; - setAttr ".v" no; - setAttr ".t" -type "double3" 23.273298183925821 16.065928680063944 24.269170946091947 ; - setAttr ".r" -type "double3" -25.538352729602433 43.800000000000004 -4.4066638166574991e-015 ; -createNode camera -s -n "perspShape" -p "persp"; - rename -uid "83D02861-4A39-4322-8F70-F2A64414C93B"; - setAttr -k off ".v" no; - setAttr ".fl" 34.999999999999993; - setAttr ".coi" 37.265978198907575; - setAttr ".imn" -type "string" "persp"; - setAttr ".den" -type "string" "persp_depth"; - setAttr ".man" -type "string" "persp_mask"; - setAttr ".hc" -type "string" "viewSet -p %camera"; -createNode transform -s -n "top"; - rename -uid "006C2ED0-40E2-1C15-780C-C3B9B43810BA"; - setAttr ".v" no; - setAttr ".t" -type "double3" 0 1000.1 0 ; - setAttr ".r" -type "double3" -89.999999999999986 0 0 ; -createNode camera -s -n "topShape" -p "top"; - rename -uid "F17352EE-4569-AAB5-0AE9-498CD07B6BD8"; - setAttr -k off ".v" no; - setAttr ".rnd" no; - setAttr ".coi" 1000.1; - setAttr ".ow" 30; - setAttr ".imn" -type "string" "top"; - setAttr ".den" -type "string" "top_depth"; - setAttr ".man" -type "string" "top_mask"; - setAttr ".hc" -type "string" "viewSet -t %camera"; - setAttr ".o" yes; -createNode transform -s -n "front"; - rename -uid "29391A99-4929-5870-CA84-0CADD3CBD195"; - setAttr ".v" no; - setAttr ".t" -type "double3" 0 0 1000.1 ; -createNode camera -s -n "frontShape" -p "front"; - rename -uid "1F4ED48C-4259-1EB1-3823-61B5A6822927"; - setAttr -k off ".v" no; - setAttr ".rnd" no; - setAttr ".coi" 1000.1; - setAttr ".ow" 30; - setAttr ".imn" -type "string" "front"; - setAttr ".den" -type "string" "front_depth"; - setAttr ".man" -type "string" "front_mask"; - setAttr ".hc" -type "string" "viewSet -f %camera"; - setAttr ".o" yes; -createNode transform -s -n "side"; - rename -uid "1DE1D1C0-42F6-6E42-873E-FA940FFC53EF"; - setAttr ".v" no; - setAttr ".t" -type "double3" 1000.1 0 0 ; - setAttr ".r" -type "double3" 0 89.999999999999986 0 ; -createNode camera -s -n "sideShape" -p "side"; - rename -uid "06DC7C10-42CC-8374-76C1-B09119D731F1"; - setAttr -k off ".v" no; - setAttr ".rnd" no; - setAttr ".coi" 1000.1; - setAttr ".ow" 30; - setAttr ".imn" -type "string" "side"; - setAttr ".den" -type "string" "side_depth"; - setAttr ".man" -type "string" "side_mask"; - setAttr ".hc" -type "string" "viewSet -s %camera"; - setAttr ".o" yes; createNode transform -n "guide"; - rename -uid "516C4948-4112-FE22-6EE7-1496C50AAB03"; + rename -uid "410C1E3E-4D85-0458-ADAA-34AE47C82F33"; addAttr -ci true -sn "rig_name" -ln "rig_name" -dt "string"; addAttr -ci true -k true -sn "mode" -ln "mode" -min 0 -max 1 -en "Final:WIP" -at "enum"; addAttr -ci true -k true -sn "step" -ln "step" -min 0 -max 6 -en "All Steps:Objects:Properties:Operators:Connect:Joints:Finalize" @@ -122,10 +61,153 @@ createNode transform -n "guide"; setAttr ".maya_version" -type "string" "2016.0"; setAttr ".gear_version" -type "string" "2.2.4"; createNode transform -n "controllers_org" -p "guide"; - rename -uid "20FB1EF1-438C-18DB-79F6-B5AF8B315CF6"; + rename -uid "CBDC45CE-4F83-DF55-84F8-268B4BD1DAFC"; setAttr ".v" no; -createNode transform -n "local_C0_root" -p "guide"; - rename -uid "098261EF-4ED0-4B03-274F-2FAA61E8488C"; +createNode transform -n "global_C0_root" -p "guide"; + rename -uid "7E439C90-43C8-4669-35AC-1996F3ED419D"; + addAttr -ci true -sn "isGearGuide" -ln "isGearGuide" -dv 1 -min 0 -max 1 -at "bool"; + addAttr -ci true -sn "comp_type" -ln "comp_type" -dt "string"; + addAttr -ci true -sn "comp_name" -ln "comp_name" -dt "string"; + addAttr -ci true -sn "comp_side" -ln "comp_side" -dt "string"; + addAttr -ci true -sn "comp_index" -ln "comp_index" -min 0 -at "long"; + addAttr -ci true -sn "connector" -ln "connector" -dt "string"; + addAttr -ci true -sn "ui_host" -ln "ui_host" -dt "string"; + addAttr -ci true -sn "ctlGrp" -ln "ctlGrp" -dt "string"; + addAttr -ci true -sn "icon" -ln "icon" -dt "string"; + addAttr -ci true -sn "ikrefarray" -ln "ikrefarray" -dt "string"; + addAttr -ci true -sn "joint" -ln "joint" -min 0 -max 1 -at "bool"; + addAttr -ci true -sn "uniScale" -ln "uniScale" -min 0 -max 1 -at "bool"; + addAttr -ci true -sn "k_tx" -ln "k_tx" -min 0 -max 1 -at "bool"; + addAttr -ci true -sn "k_ty" -ln "k_ty" -min 0 -max 1 -at "bool"; + addAttr -ci true -sn "k_tz" -ln "k_tz" -min 0 -max 1 -at "bool"; + addAttr -ci true -sn "k_ro" -ln "k_ro" -min 0 -max 1 -at "bool"; + addAttr -ci true -sn "k_rx" -ln "k_rx" -min 0 -max 1 -at "bool"; + addAttr -ci true -sn "k_ry" -ln "k_ry" -min 0 -max 1 -at "bool"; + addAttr -ci true -sn "k_rz" -ln "k_rz" -min 0 -max 1 -at "bool"; + addAttr -ci true -sn "k_sx" -ln "k_sx" -min 0 -max 1 -at "bool"; + addAttr -ci true -sn "k_sy" -ln "k_sy" -min 0 -max 1 -at "bool"; + addAttr -ci true -sn "k_sz" -ln "k_sz" -min 0 -max 1 -at "bool"; + addAttr -ci true -sn "default_rotorder" -ln "default_rotorder" -min 0 -max 5 -at "long"; + addAttr -ci true -sn "neutralRotation" -ln "neutralRotation" -min 0 -max 1 -at "bool"; + addAttr -ci true -sn "ctlSize" -ln "ctlSize" -at "double"; + addAttr -ci true -sn "useIndex" -ln "useIndex" -min 0 -max 1 -at "bool"; + addAttr -ci true -sn "parentJointIndex" -ln "parentJointIndex" -at "long"; + setAttr -k off -cb on ".v"; + setAttr -k off -cb on ".tx"; + setAttr -k off -cb on ".ty"; + setAttr -k off -cb on ".tz"; + setAttr -k off -cb on ".rx"; + setAttr -k off -cb on ".ry"; + setAttr -k off -cb on ".rz"; + setAttr -cb on ".ro"; + setAttr -k off -cb on ".sx"; + setAttr -k off -cb on ".sy"; + setAttr -k off -cb on ".sz"; + setAttr ".comp_type" -type "string" "control_01"; + setAttr ".comp_name" -type "string" "global"; + setAttr ".comp_side" -type "string" "C"; + setAttr ".connector" -type "string" "standard"; + setAttr ".ui_host" -type "string" ""; + setAttr ".ctlGrp" -type "string" ""; + setAttr ".icon" -type "string" "square"; + setAttr ".ikrefarray" -type "string" ""; + setAttr ".uniScale" yes; + setAttr ".k_tx" yes; + setAttr ".k_ty" yes; + setAttr ".k_tz" yes; + setAttr ".k_ro" yes; + setAttr ".k_rx" yes; + setAttr ".k_ry" yes; + setAttr ".k_rz" yes; + setAttr ".k_sx" yes; + setAttr ".k_sy" yes; + setAttr ".k_sz" yes; + setAttr ".neutralRotation" yes; + setAttr ".ctlSize" 6; + setAttr ".parentJointIndex" -1; +createNode nurbsCurve -n "global_C0_rootShape" -p "global_C0_root"; + rename -uid "9DE7DA98-4BE3-E410-4133-788B40892D98"; + setAttr ".ihi" 0; + setAttr -k off ".v"; + setAttr ".ove" yes; + setAttr ".ovc" 13; + setAttr ".cc" -type "nurbsCurve" + 1 1 0 no 3 + 2 0 1 + 2 + 0.25 0 0 + -0.25 0 0 + ; +createNode nurbsCurve -n "global_C0_root1Shape" -p "global_C0_root"; + rename -uid "29B21D6A-43AF-C63D-784F-9490393FCE62"; + setAttr ".ihi" 0; + setAttr -k off ".v"; + setAttr ".ove" yes; + setAttr ".ovc" 13; + setAttr ".cc" -type "nurbsCurve" + 1 1 0 no 3 + 2 0 1 + 2 + 0 0.25 0 + 0 -0.25 0 + ; +createNode nurbsCurve -n "global_C0_root2Shape" -p "global_C0_root"; + rename -uid "4DE8A3CB-446B-11ED-090C-3BA0D6DFA6D0"; + setAttr ".ihi" 0; + setAttr -k off ".v"; + setAttr ".ove" yes; + setAttr ".ovc" 13; + setAttr ".cc" -type "nurbsCurve" + 1 1 0 no 3 + 2 0 1 + 2 + 0 0 0.25 + 0 0 -0.25 + ; +createNode nurbsCurve -n "global_C0_root3Shape" -p "global_C0_root"; + rename -uid "22BD5B2B-46CA-BC24-94AE-309490400CD2"; + setAttr ".ihi" 0; + setAttr -k off ".v"; + setAttr ".ove" yes; + setAttr ".ovc" 13; + setAttr ".cc" -type "nurbsCurve" + 1 15 0 no 3 + 16 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 + 16 + 0.125 0.125 0.125 + 0.125 0.125 -0.125 + -0.125 0.125 -0.125 + -0.125 -0.125 -0.125 + -0.125 -0.125 0.125 + -0.125 0.125 0.125 + -0.125 0.125 -0.125 + -0.125 0.125 0.125 + 0.125 0.125 0.125 + 0.125 -0.125 0.125 + -0.125 -0.125 0.125 + 0.125 -0.125 0.125 + 0.125 -0.125 -0.125 + 0.125 0.125 -0.125 + 0.125 -0.125 -0.125 + -0.125 -0.125 -0.125 + ; +createNode transform -n "global_C0_sizeRef" -p "global_C0_root"; + rename -uid "EB35E645-4074-703A-59B2-E1A9093FE10B"; + addAttr -ci true -sn "isGearGuide" -ln "isGearGuide" -dv 1 -min 0 -max 1 -at "bool"; + setAttr -k off -cb on ".v"; + setAttr ".t" -type "double3" 0 0 1 ; + setAttr -k off -cb on ".tx"; + setAttr -k off -cb on ".ty"; + setAttr -k off -cb on ".tz"; + setAttr -k off -cb on ".rx"; + setAttr -k off -cb on ".ry"; + setAttr -k off -cb on ".rz"; + setAttr -cb on ".ro"; + setAttr -k off -cb on ".sx"; + setAttr -k off -cb on ".sy"; + setAttr -k off -cb on ".sz"; +createNode transform -n "local_C0_root" -p "global_C0_root"; + rename -uid "405AE403-4794-3F7D-B313-07A799E44214"; addAttr -ci true -sn "isGearGuide" -ln "isGearGuide" -dv 1 -min 0 -max 1 -at "bool"; addAttr -ci true -sn "comp_type" -ln "comp_type" -dt "string"; addAttr -ci true -sn "comp_name" -ln "comp_name" -dt "string"; @@ -184,10 +266,10 @@ createNode transform -n "local_C0_root" -p "guide"; setAttr ".k_sy" yes; setAttr ".k_sz" yes; setAttr ".neutralRotation" yes; - setAttr ".ctlSize" 1; + setAttr ".ctlSize" 5; setAttr ".parentJointIndex" -1; createNode nurbsCurve -n "local_C0_rootShape" -p "local_C0_root"; - rename -uid "25CAF1CC-4DC5-065E-BA56-44B821EE967D"; + rename -uid "8FDF3F4E-4E07-4D9E-9AD4-4480B30BD737"; setAttr ".ihi" 0; setAttr -k off ".v"; setAttr ".ove" yes; @@ -200,7 +282,7 @@ createNode nurbsCurve -n "local_C0_rootShape" -p "local_C0_root"; -0.25 0 0 ; createNode nurbsCurve -n "local_C0_root19Shape" -p "local_C0_root"; - rename -uid "2967813C-454B-46EE-273B-A089F7702061"; + rename -uid "08FED65C-463F-3950-608F-1BB097361465"; setAttr ".ihi" 0; setAttr -k off ".v"; setAttr ".ove" yes; @@ -213,7 +295,7 @@ createNode nurbsCurve -n "local_C0_root19Shape" -p "local_C0_root"; 0 -0.25 0 ; createNode nurbsCurve -n "local_C0_root20Shape" -p "local_C0_root"; - rename -uid "DF64F88D-4990-274A-F081-DD91D896BA06"; + rename -uid "6A80E677-4AAB-0CCA-902A-F9A549DB37FA"; setAttr ".ihi" 0; setAttr -k off ".v"; setAttr ".ove" yes; @@ -226,7 +308,7 @@ createNode nurbsCurve -n "local_C0_root20Shape" -p "local_C0_root"; 0 0 -0.25 ; createNode nurbsCurve -n "local_C0_root21Shape" -p "local_C0_root"; - rename -uid "112CE2F8-4A36-CB82-1ED6-97BCD005C248"; + rename -uid "A7AF4883-443B-AC56-5626-799262DE0C74"; setAttr ".ihi" 0; setAttr -k off ".v"; setAttr ".ove" yes; @@ -253,7 +335,7 @@ createNode nurbsCurve -n "local_C0_root21Shape" -p "local_C0_root"; -0.125 -0.125 -0.125 ; createNode transform -n "local_C0_sizeRef" -p "local_C0_root"; - rename -uid "563C660D-4F7C-A37E-A02D-BF9BD0520473"; + rename -uid "F01DBB5B-4BB7-F196-2DAF-AA8CFDB5D8FF"; addAttr -ci true -sn "isGearGuide" -ln "isGearGuide" -dv 1 -min 0 -max 1 -at "bool"; setAttr -k off -cb on ".v"; setAttr ".t" -type "double3" 0 0 1 ; @@ -268,7 +350,7 @@ createNode transform -n "local_C0_sizeRef" -p "local_C0_root"; setAttr -k off -cb on ".sy"; setAttr -k off -cb on ".sz"; createNode transform -n "body_C0_root" -p "local_C0_root"; - rename -uid "25F08E71-4127-CE9F-83BF-89894C683FB6"; + rename -uid "451B26AC-40C5-9589-BDB5-8C831E7055FA"; addAttr -ci true -sn "isGearGuide" -ln "isGearGuide" -dv 1 -min 0 -max 1 -at "bool"; addAttr -ci true -sn "comp_type" -ln "comp_type" -dt "string"; addAttr -ci true -sn "comp_name" -ln "comp_name" -dt "string"; @@ -331,7 +413,7 @@ createNode transform -n "body_C0_root" -p "local_C0_root"; setAttr ".ctlSize" 1; setAttr ".parentJointIndex" -1; createNode nurbsCurve -n "body_C0_rootShape" -p "body_C0_root"; - rename -uid "7F2583ED-43B5-7DAE-1E91-9FBDCF9561E1"; + rename -uid "6DBF09CB-48AF-D001-24AD-E8848CA337EE"; setAttr ".ihi" 0; setAttr -k off ".v"; setAttr ".ove" yes; @@ -344,7 +426,7 @@ createNode nurbsCurve -n "body_C0_rootShape" -p "body_C0_root"; -0.25 0 0 ; createNode nurbsCurve -n "body_C0_root19Shape" -p "body_C0_root"; - rename -uid "1E21B3FC-4651-43ED-ADD0-6D97AB009545"; + rename -uid "9E0BBBAE-4396-9590-2F31-CA8E1287EBF2"; setAttr ".ihi" 0; setAttr -k off ".v"; setAttr ".ove" yes; @@ -357,7 +439,7 @@ createNode nurbsCurve -n "body_C0_root19Shape" -p "body_C0_root"; 0 -0.25 0 ; createNode nurbsCurve -n "body_C0_root20Shape" -p "body_C0_root"; - rename -uid "258CCFB1-47A6-3F52-4BB0-1789EC850ADC"; + rename -uid "A4F91249-4671-B0AB-3E67-91A1254087D9"; setAttr ".ihi" 0; setAttr -k off ".v"; setAttr ".ove" yes; @@ -370,7 +452,7 @@ createNode nurbsCurve -n "body_C0_root20Shape" -p "body_C0_root"; 0 0 -0.25 ; createNode nurbsCurve -n "body_C0_root21Shape" -p "body_C0_root"; - rename -uid "8D9CF2D1-4DD3-56B6-89A6-A49DA6419984"; + rename -uid "4652393D-41C3-09A0-37E9-D1A2AC75279C"; setAttr ".ihi" 0; setAttr -k off ".v"; setAttr ".ove" yes; @@ -397,7 +479,7 @@ createNode nurbsCurve -n "body_C0_root21Shape" -p "body_C0_root"; -0.125 -0.125 -0.125 ; createNode transform -n "body_C0_sizeRef" -p "body_C0_root"; - rename -uid "0363DEC1-498F-8BA3-BBEB-49B043E3D527"; + rename -uid "24C4187A-4210-C1C0-11D8-8D969E0AA58A"; addAttr -ci true -sn "isGearGuide" -ln "isGearGuide" -dv 1 -min 0 -max 1 -at "bool"; setAttr -k off -cb on ".v"; setAttr ".t" -type "double3" 0 0 1 ; @@ -412,7 +494,7 @@ createNode transform -n "body_C0_sizeRef" -p "body_C0_root"; setAttr -k off -cb on ".sy"; setAttr -k off -cb on ".sz"; createNode transform -n "spine_C0_root" -p "body_C0_root"; - rename -uid "E1261AA7-4AAE-F1F2-51A9-DD942952DE90"; + rename -uid "2D61D14F-4D50-BD47-770B-A8B3F0821123"; addAttr -ci true -sn "isGearGuide" -ln "isGearGuide" -dv 1 -min 0 -max 1 -at "bool"; addAttr -ci true -sn "comp_type" -ln "comp_type" -dt "string"; addAttr -ci true -sn "comp_name" -ln "comp_name" -dt "string"; @@ -461,7 +543,7 @@ createNode transform -n "spine_C0_root" -p "body_C0_root"; setAttr -k on ".sq_profile"; setAttr ".parentJointIndex" -1; createNode nurbsCurve -n "spine_C0_rootShape" -p "spine_C0_root"; - rename -uid "860DE25A-42A1-B59B-D036-95A38BE98695"; + rename -uid "D76AD581-456B-E27F-44BA-F5A1784FD0DF"; setAttr ".ihi" 0; setAttr -k off ".v"; setAttr ".ove" yes; @@ -474,7 +556,7 @@ createNode nurbsCurve -n "spine_C0_rootShape" -p "spine_C0_root"; -0.25 0 0 ; createNode nurbsCurve -n "spine_C0_root19Shape" -p "spine_C0_root"; - rename -uid "AD77C0AD-4589-D56E-AFD3-AB92F15E91D7"; + rename -uid "DC9EF553-495F-D0EB-14D3-A4864CC23908"; setAttr ".ihi" 0; setAttr -k off ".v"; setAttr ".ove" yes; @@ -487,7 +569,7 @@ createNode nurbsCurve -n "spine_C0_root19Shape" -p "spine_C0_root"; 0 -0.25 0 ; createNode nurbsCurve -n "spine_C0_root20Shape" -p "spine_C0_root"; - rename -uid "3B79BEE4-4B8E-3C00-20A2-E9BB276332DC"; + rename -uid "DD3C41DA-4396-1679-1EF0-C595E9F86BA8"; setAttr ".ihi" 0; setAttr -k off ".v"; setAttr ".ove" yes; @@ -500,7 +582,7 @@ createNode nurbsCurve -n "spine_C0_root20Shape" -p "spine_C0_root"; 0 0 -0.25 ; createNode nurbsCurve -n "spine_C0_root21Shape" -p "spine_C0_root"; - rename -uid "9BAA6F9D-43FF-0567-0246-70B67EB9E7E7"; + rename -uid "C6AE6BA9-4EB6-BF48-6B20-559C5FA5F2C9"; setAttr ".ihi" 0; setAttr -k off ".v"; setAttr ".ove" yes; @@ -527,7 +609,7 @@ createNode nurbsCurve -n "spine_C0_root21Shape" -p "spine_C0_root"; -0.125 -0.125 -0.125 ; createNode transform -n "spine_C0_eff" -p "spine_C0_root"; - rename -uid "91866F13-4BDC-5D02-CAD4-7ABFDE625B05"; + rename -uid "52A6854A-4465-C098-9686-329099BE9914"; addAttr -ci true -sn "isGearGuide" -ln "isGearGuide" -dv 1 -min 0 -max 1 -at "bool"; setAttr -k off -cb on ".v"; setAttr ".t" -type "double3" 0 6.6115768831256645 -2.9361299538902146e-015 ; @@ -542,7 +624,7 @@ createNode transform -n "spine_C0_eff" -p "spine_C0_root"; setAttr -k off -cb on ".sy"; setAttr -k off -cb on ".sz"; createNode nurbsCurve -n "spine_C0_effShape" -p "spine_C0_eff"; - rename -uid "CA63296A-4844-D995-39D8-C580EB17B822"; + rename -uid "F1B99CBE-42C4-2385-E001-989ECBAFA5B1"; setAttr ".ihi" 0; setAttr -k off ".v"; setAttr ".ove" yes; @@ -555,7 +637,7 @@ createNode nurbsCurve -n "spine_C0_effShape" -p "spine_C0_eff"; -0.25 0 0 ; createNode nurbsCurve -n "spine_C0_eff19Shape" -p "spine_C0_eff"; - rename -uid "D3110FDB-45D5-4B63-99A9-89B124E8F4E5"; + rename -uid "24A6D6EA-484C-C934-3FBF-3E8BDB43A9DB"; setAttr ".ihi" 0; setAttr -k off ".v"; setAttr ".ove" yes; @@ -568,7 +650,7 @@ createNode nurbsCurve -n "spine_C0_eff19Shape" -p "spine_C0_eff"; 0 -0.25 0 ; createNode nurbsCurve -n "spine_C0_eff20Shape" -p "spine_C0_eff"; - rename -uid "2BA01F0D-49D1-E9F7-CE9A-7E8366D7A70F"; + rename -uid "4E603BDB-47B4-6C33-72E2-3493E6FC5A87"; setAttr ".ihi" 0; setAttr -k off ".v"; setAttr ".ove" yes; @@ -581,7 +663,7 @@ createNode nurbsCurve -n "spine_C0_eff20Shape" -p "spine_C0_eff"; 0 0 -0.25 ; createNode nurbsCurve -n "spine_C0_eff21Shape" -p "spine_C0_eff"; - rename -uid "100FC6F9-4273-BC49-1C1A-83A0B9E70A00"; + rename -uid "2BF99C1E-4047-2BD2-9CCF-C391DB2C8838"; setAttr ".ihi" 0; setAttr -k off ".v"; setAttr ".ove" yes; @@ -599,7 +681,7 @@ createNode nurbsCurve -n "spine_C0_eff21Shape" -p "spine_C0_eff"; -0.1875 0 0 ; createNode nurbsCurve -n "spine_C0_eff21_0crvShape" -p "spine_C0_eff"; - rename -uid "F6C6E365-439F-C395-8805-26B8DDD2D4C4"; + rename -uid "72264602-4963-EE92-62EF-2DA5C09C2239"; setAttr ".ihi" 0; setAttr -k off ".v"; setAttr ".ove" yes; @@ -617,7 +699,7 @@ createNode nurbsCurve -n "spine_C0_eff21_0crvShape" -p "spine_C0_eff"; -0.1875 0 0 ; createNode nurbsCurve -n "spine_C0_eff21_1crvShape" -p "spine_C0_eff"; - rename -uid "17998A01-4BB8-59D3-0994-1BAC7E6AE64C"; + rename -uid "B985523F-468F-24E8-9E2A-E8B371A5A6F6"; setAttr ".ihi" 0; setAttr -k off ".v"; setAttr ".ove" yes; @@ -635,7 +717,7 @@ createNode nurbsCurve -n "spine_C0_eff21_1crvShape" -p "spine_C0_eff"; 0 0 -0.1875 ; createNode transform -n "neck_C0_root" -p "spine_C0_eff"; - rename -uid "FFE74659-4156-2D51-FE27-56950129F616"; + rename -uid "2DDDB7B0-45F4-7CF9-9F99-87897C37E0D7"; addAttr -ci true -sn "isGearGuide" -ln "isGearGuide" -dv 1 -min 0 -max 1 -at "bool"; addAttr -ci true -sn "comp_type" -ln "comp_type" -dt "string"; addAttr -ci true -sn "comp_name" -ln "comp_name" -dt "string"; @@ -685,7 +767,7 @@ createNode transform -n "neck_C0_root" -p "spine_C0_eff"; setAttr -k on ".sq_profile"; setAttr ".parentJointIndex" -1; createNode nurbsCurve -n "neck_C0_rootShape" -p "neck_C0_root"; - rename -uid "1183D53B-454B-9565-F055-BAA91D45BBE9"; + rename -uid "4E4B5B2B-4CB2-70BF-90A5-078548AF1681"; setAttr ".ihi" 0; setAttr -k off ".v"; setAttr ".ove" yes; @@ -698,7 +780,7 @@ createNode nurbsCurve -n "neck_C0_rootShape" -p "neck_C0_root"; -0.25 0 0 ; createNode nurbsCurve -n "neck_C0_root19Shape" -p "neck_C0_root"; - rename -uid "98CFA199-4C98-12BC-3B41-6987B34BEED7"; + rename -uid "16537738-424A-AD15-EF90-089722B0F996"; setAttr ".ihi" 0; setAttr -k off ".v"; setAttr ".ove" yes; @@ -711,7 +793,7 @@ createNode nurbsCurve -n "neck_C0_root19Shape" -p "neck_C0_root"; 0 -0.25 0 ; createNode nurbsCurve -n "neck_C0_root20Shape" -p "neck_C0_root"; - rename -uid "A300B3EA-427D-35CB-9B06-98B97DC2C0AE"; + rename -uid "C09420C9-44AB-9C9B-C3B0-EBA99BE6AD5B"; setAttr ".ihi" 0; setAttr -k off ".v"; setAttr ".ove" yes; @@ -724,7 +806,7 @@ createNode nurbsCurve -n "neck_C0_root20Shape" -p "neck_C0_root"; 0 0 -0.25 ; createNode nurbsCurve -n "neck_C0_root21Shape" -p "neck_C0_root"; - rename -uid "97D9C524-4728-4278-37C9-79AFD67238DD"; + rename -uid "5C5A1F7C-443D-5A0D-FEA1-54B9B57932C1"; setAttr ".ihi" 0; setAttr -k off ".v"; setAttr ".ove" yes; @@ -751,7 +833,7 @@ createNode nurbsCurve -n "neck_C0_root21Shape" -p "neck_C0_root"; -0.125 -0.125 -0.125 ; createNode transform -n "neck_C0_neck" -p "neck_C0_root"; - rename -uid "A351EFC0-4327-4B4B-1E70-AFBF86333D48"; + rename -uid "A5047793-44C6-5EB8-FF80-69A8A0608B54"; addAttr -ci true -sn "isGearGuide" -ln "isGearGuide" -dv 1 -min 0 -max 1 -at "bool"; setAttr -k off -cb on ".v"; setAttr ".t" -type "double3" -0.24124837670655674 3.6642870257638149 -8.7131531609605358e-016 ; @@ -767,7 +849,7 @@ createNode transform -n "neck_C0_neck" -p "neck_C0_root"; setAttr -k off -cb on ".sy"; setAttr -k off -cb on ".sz"; createNode nurbsCurve -n "neck_C0_neckShape" -p "neck_C0_neck"; - rename -uid "96476E6E-4A09-FBD8-8028-F3B737EB913F"; + rename -uid "05A66C1F-4D97-00BC-C1F4-BC96AC64EFD2"; setAttr ".ihi" 0; setAttr -k off ".v"; setAttr ".ove" yes; @@ -780,7 +862,7 @@ createNode nurbsCurve -n "neck_C0_neckShape" -p "neck_C0_neck"; -0.25 0 0 ; createNode nurbsCurve -n "neck_C0_neck19Shape" -p "neck_C0_neck"; - rename -uid "CE3970AA-4278-C8D0-B4DB-9BBDE906E305"; + rename -uid "659A8B36-4472-02EF-0070-EEB931EE1E42"; setAttr ".ihi" 0; setAttr -k off ".v"; setAttr ".ove" yes; @@ -793,7 +875,7 @@ createNode nurbsCurve -n "neck_C0_neck19Shape" -p "neck_C0_neck"; 0 -0.25 0 ; createNode nurbsCurve -n "neck_C0_neck20Shape" -p "neck_C0_neck"; - rename -uid "41C8D2CF-4973-D6A2-F765-6B9B2B917D10"; + rename -uid "83C3A1C4-4190-94B8-9E46-6690D4CD83F1"; setAttr ".ihi" 0; setAttr -k off ".v"; setAttr ".ove" yes; @@ -806,7 +888,7 @@ createNode nurbsCurve -n "neck_C0_neck20Shape" -p "neck_C0_neck"; 0 0 -0.25 ; createNode nurbsCurve -n "neck_C0_neck21Shape" -p "neck_C0_neck"; - rename -uid "08EF9A6D-40A2-749C-3333-BB8EFF2C2952"; + rename -uid "05BC8718-4B7F-8EFB-5DA1-A19276CC3D2B"; setAttr ".ihi" 0; setAttr -k off ".v"; setAttr ".ove" yes; @@ -824,7 +906,7 @@ createNode nurbsCurve -n "neck_C0_neck21Shape" -p "neck_C0_neck"; -0.1875 0 0 ; createNode nurbsCurve -n "neck_C0_neck21_0crvShape" -p "neck_C0_neck"; - rename -uid "12F1FA3C-4E09-9005-D420-E5AB194F4116"; + rename -uid "39DA5915-4EFA-2A81-2C18-139826F84B44"; setAttr ".ihi" 0; setAttr -k off ".v"; setAttr ".ove" yes; @@ -842,7 +924,7 @@ createNode nurbsCurve -n "neck_C0_neck21_0crvShape" -p "neck_C0_neck"; -0.1875 0 0 ; createNode nurbsCurve -n "neck_C0_neck21_1crvShape" -p "neck_C0_neck"; - rename -uid "C03CDAD3-4C61-C055-D625-27ACC00F46A0"; + rename -uid "4BEE180B-476B-39EF-5365-AA89E8FB24B4"; setAttr ".ihi" 0; setAttr -k off ".v"; setAttr ".ove" yes; @@ -860,7 +942,7 @@ createNode nurbsCurve -n "neck_C0_neck21_1crvShape" -p "neck_C0_neck"; 0 0 -0.1875 ; createNode transform -n "neck_C0_head" -p "neck_C0_neck"; - rename -uid "57A1D09F-4AC8-CA64-1B00-9AAB7CD963FD"; + rename -uid "F8152750-4C21-D28A-A0EC-9D9A53AFC41C"; addAttr -ci true -sn "isGearGuide" -ln "isGearGuide" -dv 1 -min 0 -max 1 -at "bool"; setAttr -k off -cb on ".v"; setAttr ".t" -type "double3" 2.6645352591003757e-015 -7.1054273576010019e-015 3.7470892997998061e-030 ; @@ -877,7 +959,7 @@ createNode transform -n "neck_C0_head" -p "neck_C0_neck"; setAttr -k off -cb on ".sy"; setAttr -k off -cb on ".sz"; createNode nurbsCurve -n "neck_C0_headShape" -p "neck_C0_head"; - rename -uid "1FC8DAA2-4EF2-222C-6C8A-A389DFEBA4FA"; + rename -uid "60969E24-4485-B51F-D635-F0B86219158E"; setAttr ".ihi" 0; setAttr -k off ".v"; setAttr ".ove" yes; @@ -890,7 +972,7 @@ createNode nurbsCurve -n "neck_C0_headShape" -p "neck_C0_head"; -0.25 0 0 ; createNode nurbsCurve -n "neck_C0_head19Shape" -p "neck_C0_head"; - rename -uid "7B74EF89-456A-AB4F-9345-739D55E44F8C"; + rename -uid "30494E3C-493F-F56F-9CA8-A088C2DB6E75"; setAttr ".ihi" 0; setAttr -k off ".v"; setAttr ".ove" yes; @@ -903,7 +985,7 @@ createNode nurbsCurve -n "neck_C0_head19Shape" -p "neck_C0_head"; 0 -0.25 0 ; createNode nurbsCurve -n "neck_C0_head20Shape" -p "neck_C0_head"; - rename -uid "61D6359C-4E4F-60F9-0451-09891327C900"; + rename -uid "BC2FE157-456F-1CE4-A26E-02BFBA3ECA6A"; setAttr ".ihi" 0; setAttr -k off ".v"; setAttr ".ove" yes; @@ -916,7 +998,7 @@ createNode nurbsCurve -n "neck_C0_head20Shape" -p "neck_C0_head"; 0 0 -0.25 ; createNode nurbsCurve -n "neck_C0_head21Shape" -p "neck_C0_head"; - rename -uid "7A441075-4716-B1B0-B7ED-71B2D7A5D791"; + rename -uid "9D675684-4B3B-6AE8-0DFB-99B45E04FF69"; setAttr ".ihi" 0; setAttr -k off ".v"; setAttr ".ove" yes; @@ -934,7 +1016,7 @@ createNode nurbsCurve -n "neck_C0_head21Shape" -p "neck_C0_head"; -0.1875 0 0 ; createNode nurbsCurve -n "neck_C0_head21_0crvShape" -p "neck_C0_head"; - rename -uid "9732F673-4957-FF96-43DE-5BBA670DD088"; + rename -uid "ADEDFA4B-4F54-04B9-67EE-0EA5CF5F62FC"; setAttr ".ihi" 0; setAttr -k off ".v"; setAttr ".ove" yes; @@ -952,7 +1034,7 @@ createNode nurbsCurve -n "neck_C0_head21_0crvShape" -p "neck_C0_head"; -0.1875 0 0 ; createNode nurbsCurve -n "neck_C0_head21_1crvShape" -p "neck_C0_head"; - rename -uid "8637BF61-46D3-4096-D334-DB93B5D168D0"; + rename -uid "AA88DF36-428C-253E-2295-B78D1E7D9FAD"; setAttr ".ihi" 0; setAttr -k off ".v"; setAttr ".ove" yes; @@ -970,7 +1052,7 @@ createNode nurbsCurve -n "neck_C0_head21_1crvShape" -p "neck_C0_head"; 0 0 -0.1875 ; createNode transform -n "neck_C0_eff" -p "neck_C0_head"; - rename -uid "BA78CFE6-4FB0-EEAE-40CA-D4B764B8C489"; + rename -uid "D9FFE892-486F-775C-574A-0D94A0310E4D"; addAttr -ci true -sn "isGearGuide" -ln "isGearGuide" -dv 1 -min 0 -max 1 -at "bool"; setAttr -k off -cb on ".v"; setAttr ".t" -type "double3" 0.028362147187278808 2.6770463465994707 4.5418821062020015e-015 ; @@ -986,7 +1068,7 @@ createNode transform -n "neck_C0_eff" -p "neck_C0_head"; setAttr -k off -cb on ".sy"; setAttr -k off -cb on ".sz"; createNode nurbsCurve -n "neck_C0_effShape" -p "neck_C0_eff"; - rename -uid "A6777EFE-4AC3-F0FB-375A-DB82F27E0B14"; + rename -uid "00E52EBA-4947-369D-0D0F-F3B998CFA1CB"; setAttr ".ihi" 0; setAttr -k off ".v"; setAttr ".ove" yes; @@ -999,7 +1081,7 @@ createNode nurbsCurve -n "neck_C0_effShape" -p "neck_C0_eff"; -0.25 0 0 ; createNode nurbsCurve -n "neck_C0_eff19Shape" -p "neck_C0_eff"; - rename -uid "D9390EC9-4232-1D1F-D35F-4D8406412391"; + rename -uid "D19650E0-45E8-0833-24C2-B68494BCF733"; setAttr ".ihi" 0; setAttr -k off ".v"; setAttr ".ove" yes; @@ -1012,7 +1094,7 @@ createNode nurbsCurve -n "neck_C0_eff19Shape" -p "neck_C0_eff"; 0 -0.25 0 ; createNode nurbsCurve -n "neck_C0_eff20Shape" -p "neck_C0_eff"; - rename -uid "F43D0005-44B3-FE70-C79B-54BD4228E93B"; + rename -uid "96F18B0F-45C0-3850-F4BF-1B859D5286D7"; setAttr ".ihi" 0; setAttr -k off ".v"; setAttr ".ove" yes; @@ -1025,7 +1107,7 @@ createNode nurbsCurve -n "neck_C0_eff20Shape" -p "neck_C0_eff"; 0 0 -0.25 ; createNode nurbsCurve -n "neck_C0_eff21Shape" -p "neck_C0_eff"; - rename -uid "34512E59-4027-B0AE-094C-99925AE80EAD"; + rename -uid "B007CA0C-4D61-4282-44FB-AD9E4A826226"; setAttr ".ihi" 0; setAttr -k off ".v"; setAttr ".ove" yes; @@ -1043,7 +1125,7 @@ createNode nurbsCurve -n "neck_C0_eff21Shape" -p "neck_C0_eff"; -0.1875 0 0 ; createNode nurbsCurve -n "neck_C0_eff21_0crvShape" -p "neck_C0_eff"; - rename -uid "7B20B3C3-4D29-9D2B-0D6A-CDB7D41FD785"; + rename -uid "715DBFE7-4DDA-A8BF-79E0-A68117246001"; setAttr ".ihi" 0; setAttr -k off ".v"; setAttr ".ove" yes; @@ -1061,7 +1143,7 @@ createNode nurbsCurve -n "neck_C0_eff21_0crvShape" -p "neck_C0_eff"; -0.1875 0 0 ; createNode nurbsCurve -n "neck_C0_eff21_1crvShape" -p "neck_C0_eff"; - rename -uid "32552CB1-4BE3-1145-6D05-BF8EE5E7F4F3"; + rename -uid "2CF08974-40CC-99CC-4FBD-7EB14D74C482"; setAttr ".ihi" 0; setAttr -k off ".v"; setAttr ".ove" yes; @@ -1079,7 +1161,7 @@ createNode nurbsCurve -n "neck_C0_eff21_1crvShape" -p "neck_C0_eff"; 0 0 -0.1875 ; createNode transform -n "spineUI_C0_root" -p "neck_C0_eff"; - rename -uid "C3949E80-4351-9311-62F5-DA82F526D055"; + rename -uid "9C17D727-4F3D-AC3C-418B-61887B3E7543"; addAttr -ci true -sn "isGearGuide" -ln "isGearGuide" -dv 1 -min 0 -max 1 -at "bool"; addAttr -ci true -sn "comp_type" -ln "comp_type" -dt "string"; addAttr -ci true -sn "comp_name" -ln "comp_name" -dt "string"; @@ -1134,7 +1216,7 @@ createNode transform -n "spineUI_C0_root" -p "neck_C0_eff"; setAttr ".ctlSize" 1; setAttr ".parentJointIndex" -1; createNode nurbsCurve -n "spineUI_C0_rootShape" -p "spineUI_C0_root"; - rename -uid "C7BFD03A-4E18-891F-0A85-B4B56B543613"; + rename -uid "D85D3E23-45C4-3DE4-F9D0-7198FEFAE47D"; setAttr ".ihi" 0; setAttr -k off ".v"; setAttr ".ove" yes; @@ -1147,7 +1229,7 @@ createNode nurbsCurve -n "spineUI_C0_rootShape" -p "spineUI_C0_root"; -0.25 0 0 ; createNode nurbsCurve -n "spineUI_C0_root19Shape" -p "spineUI_C0_root"; - rename -uid "3250339C-47FC-D5C9-5314-B0B84F27412D"; + rename -uid "CDA45FEC-4ED3-2DDD-13D1-BA8BA46AC4B3"; setAttr ".ihi" 0; setAttr -k off ".v"; setAttr ".ove" yes; @@ -1160,7 +1242,7 @@ createNode nurbsCurve -n "spineUI_C0_root19Shape" -p "spineUI_C0_root"; 0 -0.25 0 ; createNode nurbsCurve -n "spineUI_C0_root20Shape" -p "spineUI_C0_root"; - rename -uid "C6C57DF0-41A9-98AE-7719-928F940DA24E"; + rename -uid "FE176A1F-4B1B-3BDD-854C-6CB742DCCAE0"; setAttr ".ihi" 0; setAttr -k off ".v"; setAttr ".ove" yes; @@ -1173,7 +1255,7 @@ createNode nurbsCurve -n "spineUI_C0_root20Shape" -p "spineUI_C0_root"; 0 0 -0.25 ; createNode nurbsCurve -n "spineUI_C0_root21Shape" -p "spineUI_C0_root"; - rename -uid "43178BBA-4761-CA73-7BA8-9BBD7AC4D443"; + rename -uid "141C2F25-49DF-C23F-E6F9-90AE3D1BA2B7"; setAttr ".ihi" 0; setAttr -k off ".v"; setAttr ".ove" yes; @@ -1200,7 +1282,7 @@ createNode nurbsCurve -n "spineUI_C0_root21Shape" -p "spineUI_C0_root"; -0.125 -0.125 -0.125 ; createNode transform -n "spineUI_C0_sizeRef" -p "spineUI_C0_root"; - rename -uid "C02F48C0-4402-55CC-DED8-A99188CB20E8"; + rename -uid "2C6B53F2-4B4C-B7BC-9503-59AF5567F60C"; addAttr -ci true -sn "isGearGuide" -ln "isGearGuide" -dv 1 -min 0 -max 1 -at "bool"; setAttr -k off -cb on ".v"; setAttr ".t" -type "double3" 8.8817841970012523e-016 0 1 ; @@ -1216,7 +1298,7 @@ createNode transform -n "spineUI_C0_sizeRef" -p "spineUI_C0_root"; setAttr -k off -cb on ".sy"; setAttr -k off -cb on ".sz"; createNode transform -n "headUI_C0_root" -p "neck_C0_eff"; - rename -uid "B0AA035E-447A-7A2A-FF1D-7499C4FE70A5"; + rename -uid "86BFFE5F-4011-B9DE-578D-918C39CFC7AC"; addAttr -ci true -sn "isGearGuide" -ln "isGearGuide" -dv 1 -min 0 -max 1 -at "bool"; addAttr -ci true -sn "comp_type" -ln "comp_type" -dt "string"; addAttr -ci true -sn "comp_name" -ln "comp_name" -dt "string"; @@ -1270,7 +1352,7 @@ createNode transform -n "headUI_C0_root" -p "neck_C0_eff"; setAttr ".ctlSize" 0.5; setAttr ".parentJointIndex" -1; createNode nurbsCurve -n "headUI_C0_rootShape" -p "headUI_C0_root"; - rename -uid "DDDC3BA8-4106-CAFB-FE8E-27976F46ACC6"; + rename -uid "DFF72A63-4F69-C8A8-9F23-83BFB371AF9A"; setAttr ".ihi" 0; setAttr -k off ".v"; setAttr ".ove" yes; @@ -1283,7 +1365,7 @@ createNode nurbsCurve -n "headUI_C0_rootShape" -p "headUI_C0_root"; -0.25 0 0 ; createNode nurbsCurve -n "headUI_C0_root10Shape" -p "headUI_C0_root"; - rename -uid "DA430C66-437A-EFDA-0E0F-E4A01C0AFB47"; + rename -uid "B0AB637A-422A-7B98-6FB3-719BC1B4CA46"; setAttr ".ihi" 0; setAttr -k off ".v"; setAttr ".ove" yes; @@ -1296,7 +1378,7 @@ createNode nurbsCurve -n "headUI_C0_root10Shape" -p "headUI_C0_root"; 0 -0.25 0 ; createNode nurbsCurve -n "headUI_C0_root11Shape" -p "headUI_C0_root"; - rename -uid "47649688-4B65-0948-A773-399DB17214D9"; + rename -uid "E3707466-4785-DD98-12A5-4DB0F4E98AF6"; setAttr ".ihi" 0; setAttr -k off ".v"; setAttr ".ove" yes; @@ -1309,7 +1391,7 @@ createNode nurbsCurve -n "headUI_C0_root11Shape" -p "headUI_C0_root"; 0 0 -0.25 ; createNode nurbsCurve -n "headUI_C0_root12Shape" -p "headUI_C0_root"; - rename -uid "9CA43DDD-4F7B-B116-D7A3-F798EDD37FE3"; + rename -uid "0997146B-4393-F307-2DDE-6E8780F50212"; setAttr ".ihi" 0; setAttr -k off ".v"; setAttr ".ove" yes; @@ -1336,7 +1418,7 @@ createNode nurbsCurve -n "headUI_C0_root12Shape" -p "headUI_C0_root"; -0.125 -0.125 -0.125 ; createNode transform -n "headUI_C0_sizeRef" -p "headUI_C0_root"; - rename -uid "E736EBD7-40D1-6BFC-4CB8-7690EB334D87"; + rename -uid "5853BD55-4B20-0CF7-3050-5EB7DBD981B1"; addAttr -ci true -sn "isGearGuide" -ln "isGearGuide" -dv 1 -min 0 -max 1 -at "bool"; setAttr -k off -cb on ".v"; setAttr ".t" -type "double3" 2.3915877472269305 -0.0015955193487808828 -1.0620785493044065e-015 ; @@ -1353,7 +1435,7 @@ createNode transform -n "headUI_C0_sizeRef" -p "headUI_C0_root"; setAttr -k off -cb on ".sy"; setAttr -k off -cb on ".sz"; createNode transform -n "mouth_C0_root" -p "neck_C0_head"; - rename -uid "D841AAF3-47DE-97A5-AE7E-FD995C00DE83"; + rename -uid "36F0E7FF-4F27-224F-DE9A-3C8A3B3CA4F0"; addAttr -ci true -sn "isGearGuide" -ln "isGearGuide" -dv 1 -min 0 -max 1 -at "bool"; addAttr -ci true -sn "comp_type" -ln "comp_type" -dt "string"; addAttr -ci true -sn "comp_name" -ln "comp_name" -dt "string"; @@ -1386,7 +1468,7 @@ createNode transform -n "mouth_C0_root" -p "neck_C0_head"; setAttr ".ctlGrp" -type "string" ""; setAttr ".parentJointIndex" -1; createNode nurbsCurve -n "mouth_C0_rootShape" -p "mouth_C0_root"; - rename -uid "36191686-4714-E199-A4D3-BD9AD1637C4F"; + rename -uid "40CA334A-42C3-8AB0-C612-A78F3AD9052E"; setAttr ".ihi" 0; setAttr -k off ".v"; setAttr ".ove" yes; @@ -1399,7 +1481,7 @@ createNode nurbsCurve -n "mouth_C0_rootShape" -p "mouth_C0_root"; -0.25 0 0 ; createNode nurbsCurve -n "mouth_C0_root19Shape" -p "mouth_C0_root"; - rename -uid "277CC323-492D-F29E-BFDB-12905103EA5E"; + rename -uid "711A2BEF-43E1-EB8A-E5DD-B2B621F46F6A"; setAttr ".ihi" 0; setAttr -k off ".v"; setAttr ".ove" yes; @@ -1412,7 +1494,7 @@ createNode nurbsCurve -n "mouth_C0_root19Shape" -p "mouth_C0_root"; 0 -0.25 0 ; createNode nurbsCurve -n "mouth_C0_root20Shape" -p "mouth_C0_root"; - rename -uid "3DCD461A-4ADD-8363-049F-E98230C73134"; + rename -uid "E9829553-4065-5BDC-EC31-0B82D3A71440"; setAttr ".ihi" 0; setAttr -k off ".v"; setAttr ".ove" yes; @@ -1425,7 +1507,7 @@ createNode nurbsCurve -n "mouth_C0_root20Shape" -p "mouth_C0_root"; 0 0 -0.25 ; createNode nurbsCurve -n "mouth_C0_root21Shape" -p "mouth_C0_root"; - rename -uid "56564634-4483-A6DF-F637-E397C2953D73"; + rename -uid "EA9C8A0E-4267-11D2-28D5-429D260E885E"; setAttr ".ihi" 0; setAttr -k off ".v"; setAttr ".ove" yes; @@ -1452,7 +1534,7 @@ createNode nurbsCurve -n "mouth_C0_root21Shape" -p "mouth_C0_root"; -0.125 -0.125 -0.125 ; createNode transform -n "mouth_C0_rotcenter" -p "mouth_C0_root"; - rename -uid "8703B666-4DB2-B6EA-EB01-5DBDAC852A4C"; + rename -uid "9E51B959-49A7-3E07-436C-F88554D53639"; addAttr -ci true -sn "isGearGuide" -ln "isGearGuide" -dv 1 -min 0 -max 1 -at "bool"; setAttr -k off -cb on ".v"; setAttr ".t" -type "double3" 2.9976714398398449e-029 -3.5527136788005009e-015 2.1316282072803006e-014 ; @@ -1468,7 +1550,7 @@ createNode transform -n "mouth_C0_rotcenter" -p "mouth_C0_root"; setAttr -k off -cb on ".sy"; setAttr -k off -cb on ".sz"; createNode nurbsCurve -n "mouth_C0_rotcenterShape" -p "mouth_C0_rotcenter"; - rename -uid "10B04249-4F0B-A56C-8B36-AD9DF2B248F0"; + rename -uid "CC0F29E5-4958-20E2-5EA6-CB92A21EC7F4"; setAttr ".ihi" 0; setAttr -k off ".v"; setAttr ".ove" yes; @@ -1481,7 +1563,7 @@ createNode nurbsCurve -n "mouth_C0_rotcenterShape" -p "mouth_C0_rotcenter"; -0.25 0 0 ; createNode nurbsCurve -n "mouth_C0_rotcenter19Shape" -p "mouth_C0_rotcenter"; - rename -uid "BC946AE7-4534-29BF-D727-E29FF496D2B3"; + rename -uid "20FC48DF-4271-5A19-BA84-52BA51609F05"; setAttr ".ihi" 0; setAttr -k off ".v"; setAttr ".ove" yes; @@ -1494,7 +1576,7 @@ createNode nurbsCurve -n "mouth_C0_rotcenter19Shape" -p "mouth_C0_rotcenter"; 0 -0.25 0 ; createNode nurbsCurve -n "mouth_C0_rotcenter20Shape" -p "mouth_C0_rotcenter"; - rename -uid "2B7C6618-4270-E01B-4BA8-66B45C7E59D0"; + rename -uid "B82B5A8B-4551-F60D-81B4-2D9B32AF9B4A"; setAttr ".ihi" 0; setAttr -k off ".v"; setAttr ".ove" yes; @@ -1507,7 +1589,7 @@ createNode nurbsCurve -n "mouth_C0_rotcenter20Shape" -p "mouth_C0_rotcenter"; 0 0 -0.25 ; createNode nurbsCurve -n "mouth_C0_rotcenter21Shape" -p "mouth_C0_rotcenter"; - rename -uid "6AF38691-449B-C056-6C37-8897F63B7123"; + rename -uid "54F7A784-475B-8AF9-8AEB-599735F92152"; setAttr ".ihi" 0; setAttr -k off ".v"; setAttr ".ove" yes; @@ -1525,7 +1607,7 @@ createNode nurbsCurve -n "mouth_C0_rotcenter21Shape" -p "mouth_C0_rotcenter"; -0.1875 0 0 ; createNode nurbsCurve -n "mouth_C0_rotcenter21_0crvShape" -p "mouth_C0_rotcenter"; - rename -uid "F3E45F69-4BC7-B863-BE31-549E8CD949A9"; + rename -uid "11DD6553-494B-51BB-014A-4D8F5A75F9BD"; setAttr ".ihi" 0; setAttr -k off ".v"; setAttr ".ove" yes; @@ -1543,7 +1625,7 @@ createNode nurbsCurve -n "mouth_C0_rotcenter21_0crvShape" -p "mouth_C0_rotcenter -0.1875 0 0 ; createNode nurbsCurve -n "mouth_C0_rotcenter21_1crvShape" -p "mouth_C0_rotcenter"; - rename -uid "349C8520-4BB0-6251-2BF4-6A9ABE7E1049"; + rename -uid "C1889638-436C-19BA-8521-409E7E5D35A2"; setAttr ".ihi" 0; setAttr -k off ".v"; setAttr ".ove" yes; @@ -1561,7 +1643,7 @@ createNode nurbsCurve -n "mouth_C0_rotcenter21_1crvShape" -p "mouth_C0_rotcenter 0 0 -0.1875 ; createNode transform -n "mouth_C0_lipup" -p "mouth_C0_rotcenter"; - rename -uid "8208F79C-44FF-5F79-D955-46B5D3864E8A"; + rename -uid "2B5E0084-4E43-6AD9-CD19-7189666A4EDE"; addAttr -ci true -sn "isGearGuide" -ln "isGearGuide" -dv 1 -min 0 -max 1 -at "bool"; setAttr -k off -cb on ".v"; setAttr ".t" -type "double3" 4.2971167579553764e-015 -0.83057537847144047 2.6485854255406984 ; @@ -1577,7 +1659,7 @@ createNode transform -n "mouth_C0_lipup" -p "mouth_C0_rotcenter"; setAttr -k off -cb on ".sy"; setAttr -k off -cb on ".sz"; createNode nurbsCurve -n "mouth_C0_lipupShape" -p "mouth_C0_lipup"; - rename -uid "2277C8E1-43CC-D24D-55AE-3FBFC37EABDB"; + rename -uid "E6946427-4E6B-D365-D7E1-45BD2FD8871A"; setAttr ".ihi" 0; setAttr -k off ".v"; setAttr ".ove" yes; @@ -1590,7 +1672,7 @@ createNode nurbsCurve -n "mouth_C0_lipupShape" -p "mouth_C0_lipup"; -0.25 0 0 ; createNode nurbsCurve -n "mouth_C0_lipup19Shape" -p "mouth_C0_lipup"; - rename -uid "99781C56-4FF4-FB53-E25E-6B986D367380"; + rename -uid "D0CB347F-42EB-F4A4-4585-779F698C31FE"; setAttr ".ihi" 0; setAttr -k off ".v"; setAttr ".ove" yes; @@ -1603,7 +1685,7 @@ createNode nurbsCurve -n "mouth_C0_lipup19Shape" -p "mouth_C0_lipup"; 0 -0.25 0 ; createNode nurbsCurve -n "mouth_C0_lipup20Shape" -p "mouth_C0_lipup"; - rename -uid "83396BF8-4974-19B6-CCB5-B78B24A71C9B"; + rename -uid "EA2C8128-4F2C-5D84-BE50-B7A4A6694E92"; setAttr ".ihi" 0; setAttr -k off ".v"; setAttr ".ove" yes; @@ -1616,7 +1698,7 @@ createNode nurbsCurve -n "mouth_C0_lipup20Shape" -p "mouth_C0_lipup"; 0 0 -0.25 ; createNode nurbsCurve -n "mouth_C0_lipup21Shape" -p "mouth_C0_lipup"; - rename -uid "5EDD7F60-40C6-51B6-0DE9-DF8FA700D334"; + rename -uid "9F37C0A6-4349-7037-A343-07AC29E310DA"; setAttr ".ihi" 0; setAttr -k off ".v"; setAttr ".ove" yes; @@ -1634,7 +1716,7 @@ createNode nurbsCurve -n "mouth_C0_lipup21Shape" -p "mouth_C0_lipup"; -0.1875 0 0 ; createNode nurbsCurve -n "mouth_C0_lipup21_0crvShape" -p "mouth_C0_lipup"; - rename -uid "5AD34162-407E-8797-5825-398B29EAAA7B"; + rename -uid "3E8764D8-417A-6F54-6CEC-B79D608CC44E"; setAttr ".ihi" 0; setAttr -k off ".v"; setAttr ".ove" yes; @@ -1652,7 +1734,7 @@ createNode nurbsCurve -n "mouth_C0_lipup21_0crvShape" -p "mouth_C0_lipup"; -0.1875 0 0 ; createNode nurbsCurve -n "mouth_C0_lipup21_1crvShape" -p "mouth_C0_lipup"; - rename -uid "0980A657-436E-AA99-5BF7-26A872965A7B"; + rename -uid "F51B9F0C-414B-10E7-AE77-B090918C442F"; setAttr ".ihi" 0; setAttr -k off ".v"; setAttr ".ove" yes; @@ -1670,18 +1752,18 @@ createNode nurbsCurve -n "mouth_C0_lipup21_1crvShape" -p "mouth_C0_lipup"; 0 0 -0.1875 ; createNode transform -n "mouth_C0_crv" -p "mouth_C0_lipup"; - rename -uid "890BADFA-4F57-8B66-06C0-41831BA901E0"; + rename -uid "DC6A1753-438B-B4FF-A408-C49BB28A8D46"; setAttr ".ovdt" 1; setAttr ".ove" yes; setAttr ".t" -type "double3" -1.3722175990868861e-014 -14.161367226604183 -19.457469484456148 ; setAttr ".s" -type "double3" 4.4504433171691238 4.4504433171691282 4.4504433171691229 ; -createNode nurbsCurve -n "mouth_C0_crvShape" -p "|guide|local_C0_root|body_C0_root|spine_C0_root|spine_C0_eff|neck_C0_root|neck_C0_neck|neck_C0_head|mouth_C0_root|mouth_C0_rotcenter|mouth_C0_lipup|mouth_C0_crv"; - rename -uid "8EE8E809-48A1-F189-0A30-0E849F1AC185"; +createNode nurbsCurve -n "mouth_C0_crvShape" -p "|guide|global_C0_root|local_C0_root|body_C0_root|spine_C0_root|spine_C0_eff|neck_C0_root|neck_C0_neck|neck_C0_head|mouth_C0_root|mouth_C0_rotcenter|mouth_C0_lipup|mouth_C0_crv"; + rename -uid "4B85A4F3-4021-64A6-BE8D-2AB9152713C1"; setAttr -k off ".v"; setAttr -s 4 ".iog[0].og"; setAttr ".tw" yes; -createNode nurbsCurve -n "mouth_C0_crvShapeOrig" -p "|guide|local_C0_root|body_C0_root|spine_C0_root|spine_C0_eff|neck_C0_root|neck_C0_neck|neck_C0_head|mouth_C0_root|mouth_C0_rotcenter|mouth_C0_lipup|mouth_C0_crv"; - rename -uid "FA350108-41D1-95C9-2B51-0496DB6FDF2A"; +createNode nurbsCurve -n "mouth_C0_crvShapeOrig" -p "|guide|global_C0_root|local_C0_root|body_C0_root|spine_C0_root|spine_C0_eff|neck_C0_root|neck_C0_neck|neck_C0_head|mouth_C0_root|mouth_C0_rotcenter|mouth_C0_lipup|mouth_C0_crv"; + rename -uid "F39209B6-4787-AAD9-A710-17A85F90CCCB"; setAttr -k off ".v"; setAttr ".io" yes; setAttr ".cc" -type "nurbsCurve" @@ -1692,7 +1774,7 @@ createNode nurbsCurve -n "mouth_C0_crvShapeOrig" -p "|guide|local_C0_root|body_C 0 0 0 ; createNode transform -n "mouth_C0_liplow" -p "mouth_C0_rotcenter"; - rename -uid "ABB95FF0-4336-2D2C-5005-6C81D5668CC9"; + rename -uid "1C7BE26C-4735-4270-CC32-24B07AEF5CBA"; addAttr -ci true -sn "isGearGuide" -ln "isGearGuide" -dv 1 -min 0 -max 1 -at "bool"; setAttr -k off -cb on ".v"; setAttr ".t" -type "double3" 3.7198567879251422e-015 -1.1237321151316078 2.4565606483465565 ; @@ -1708,7 +1790,7 @@ createNode transform -n "mouth_C0_liplow" -p "mouth_C0_rotcenter"; setAttr -k off -cb on ".sy"; setAttr -k off -cb on ".sz"; createNode nurbsCurve -n "mouth_C0_liplowShape" -p "mouth_C0_liplow"; - rename -uid "D3160EF2-4075-35A6-1BFD-37B5EB76E942"; + rename -uid "7CF2FC64-4C8A-B820-20AA-51B55B9D94D1"; setAttr ".ihi" 0; setAttr -k off ".v"; setAttr ".ove" yes; @@ -1721,7 +1803,7 @@ createNode nurbsCurve -n "mouth_C0_liplowShape" -p "mouth_C0_liplow"; -0.25 0 0 ; createNode nurbsCurve -n "mouth_C0_liplow19Shape" -p "mouth_C0_liplow"; - rename -uid "165042A1-43B5-82CF-C748-428242E882EA"; + rename -uid "AD67E42D-403D-D563-3589-988061499BDE"; setAttr ".ihi" 0; setAttr -k off ".v"; setAttr ".ove" yes; @@ -1734,7 +1816,7 @@ createNode nurbsCurve -n "mouth_C0_liplow19Shape" -p "mouth_C0_liplow"; 0 -0.25 0 ; createNode nurbsCurve -n "mouth_C0_liplow20Shape" -p "mouth_C0_liplow"; - rename -uid "48F28A05-434A-5558-CB04-1AA233A27B8F"; + rename -uid "A769A2FD-4BE2-7D64-D156-8D907301FB7E"; setAttr ".ihi" 0; setAttr -k off ".v"; setAttr ".ove" yes; @@ -1747,7 +1829,7 @@ createNode nurbsCurve -n "mouth_C0_liplow20Shape" -p "mouth_C0_liplow"; 0 0 -0.25 ; createNode nurbsCurve -n "mouth_C0_liplow21Shape" -p "mouth_C0_liplow"; - rename -uid "DBB55BB7-4743-FC4A-A528-54A664F49E46"; + rename -uid "A03BEEBD-40C3-CE41-398A-D9AEEB6996B7"; setAttr ".ihi" 0; setAttr -k off ".v"; setAttr ".ove" yes; @@ -1765,7 +1847,7 @@ createNode nurbsCurve -n "mouth_C0_liplow21Shape" -p "mouth_C0_liplow"; -0.1875 0 0 ; createNode nurbsCurve -n "mouth_C0_liplow21_0crvShape" -p "mouth_C0_liplow"; - rename -uid "943FC26D-4AA9-54B8-EB89-0CB8CF9DF96F"; + rename -uid "B7E49BD9-4286-A0AD-4A9A-04B05572346F"; setAttr ".ihi" 0; setAttr -k off ".v"; setAttr ".ove" yes; @@ -1783,7 +1865,7 @@ createNode nurbsCurve -n "mouth_C0_liplow21_0crvShape" -p "mouth_C0_liplow"; -0.1875 0 0 ; createNode nurbsCurve -n "mouth_C0_liplow21_1crvShape" -p "mouth_C0_liplow"; - rename -uid "7A8254CE-4D66-E25E-EA9D-159D9F746A52"; + rename -uid "8B540692-44EB-F4DA-6D48-9A9884FC3254"; setAttr ".ihi" 0; setAttr -k off ".v"; setAttr ".ove" yes; @@ -1801,18 +1883,18 @@ createNode nurbsCurve -n "mouth_C0_liplow21_1crvShape" -p "mouth_C0_liplow"; 0 0 -0.1875 ; createNode transform -n "mouth_C0_crv" -p "mouth_C0_liplow"; - rename -uid "0BD27BC7-492D-3CF1-063A-F68EFB8D34E9"; + rename -uid "5B9696D5-4A33-6F6C-B4C9-55AB55AE8CAC"; setAttr ".ovdt" 1; setAttr ".ove" yes; setAttr ".t" -type "double3" -1.3144916020838624e-014 -13.868210489944016 -19.265444707262002 ; setAttr ".s" -type "double3" 4.4504433171691238 4.4504433171691282 4.4504433171691229 ; -createNode nurbsCurve -n "mouth_C0_crvShape" -p "|guide|local_C0_root|body_C0_root|spine_C0_root|spine_C0_eff|neck_C0_root|neck_C0_neck|neck_C0_head|mouth_C0_root|mouth_C0_rotcenter|mouth_C0_liplow|mouth_C0_crv"; - rename -uid "8D1DD79C-4910-4A62-5B96-3CB03FED0EFF"; +createNode nurbsCurve -n "mouth_C0_crvShape" -p "|guide|global_C0_root|local_C0_root|body_C0_root|spine_C0_root|spine_C0_eff|neck_C0_root|neck_C0_neck|neck_C0_head|mouth_C0_root|mouth_C0_rotcenter|mouth_C0_liplow|mouth_C0_crv"; + rename -uid "A41A1D5E-48ED-DF47-EC4B-00A22B00C1AD"; setAttr -k off ".v"; setAttr -s 4 ".iog[0].og"; setAttr ".tw" yes; -createNode nurbsCurve -n "mouth_C0_crvShapeOrig" -p "|guide|local_C0_root|body_C0_root|spine_C0_root|spine_C0_eff|neck_C0_root|neck_C0_neck|neck_C0_head|mouth_C0_root|mouth_C0_rotcenter|mouth_C0_liplow|mouth_C0_crv"; - rename -uid "B7C78B89-4940-D07C-ADD6-D0A8CFEE3509"; +createNode nurbsCurve -n "mouth_C0_crvShapeOrig" -p "|guide|global_C0_root|local_C0_root|body_C0_root|spine_C0_root|spine_C0_eff|neck_C0_root|neck_C0_neck|neck_C0_head|mouth_C0_root|mouth_C0_rotcenter|mouth_C0_liplow|mouth_C0_crv"; + rename -uid "C2B5FF5C-45C3-55C8-FCB9-D1B113C13254"; setAttr -k off ".v"; setAttr ".io" yes; setAttr ".cc" -type "nurbsCurve" @@ -1823,7 +1905,7 @@ createNode nurbsCurve -n "mouth_C0_crvShapeOrig" -p "|guide|local_C0_root|body_C 0 0 0 ; createNode transform -n "mouth_C0_jaw" -p "mouth_C0_root"; - rename -uid "B265A8EE-4757-0D91-DFFC-C890E595AECC"; + rename -uid "526FC737-44E7-E5FE-74EE-F4976B6E5C29"; addAttr -ci true -sn "isGearGuide" -ln "isGearGuide" -dv 1 -min 0 -max 1 -at "bool"; setAttr -k off -cb on ".v"; setAttr ".t" -type "double3" 3.3132158019282496e-029 -1.9431960625636933 2.006989566316264 ; @@ -1839,7 +1921,7 @@ createNode transform -n "mouth_C0_jaw" -p "mouth_C0_root"; setAttr -k off -cb on ".sy"; setAttr -k off -cb on ".sz"; createNode nurbsCurve -n "mouth_C0_jawShape" -p "mouth_C0_jaw"; - rename -uid "CB88587D-40AE-144E-F095-728D516E3FF3"; + rename -uid "486F83B2-4443-BFA3-7D39-48ABC7945DF4"; setAttr ".ihi" 0; setAttr -k off ".v"; setAttr ".ove" yes; @@ -1852,7 +1934,7 @@ createNode nurbsCurve -n "mouth_C0_jawShape" -p "mouth_C0_jaw"; -0.25 0 0 ; createNode nurbsCurve -n "mouth_C0_jaw19Shape" -p "mouth_C0_jaw"; - rename -uid "A8352041-4E4D-0A90-E64F-8C822FF1855F"; + rename -uid "2AD85104-428C-E3C1-5725-ADB9601D592C"; setAttr ".ihi" 0; setAttr -k off ".v"; setAttr ".ove" yes; @@ -1865,7 +1947,7 @@ createNode nurbsCurve -n "mouth_C0_jaw19Shape" -p "mouth_C0_jaw"; 0 -0.25 0 ; createNode nurbsCurve -n "mouth_C0_jaw20Shape" -p "mouth_C0_jaw"; - rename -uid "F2192253-4EFE-568B-D342-6B8CB4769E3B"; + rename -uid "6B933D92-4068-6118-CB12-05BB91AB4006"; setAttr ".ihi" 0; setAttr -k off ".v"; setAttr ".ove" yes; @@ -1878,7 +1960,7 @@ createNode nurbsCurve -n "mouth_C0_jaw20Shape" -p "mouth_C0_jaw"; 0 0 -0.25 ; createNode nurbsCurve -n "mouth_C0_jaw21Shape" -p "mouth_C0_jaw"; - rename -uid "E9EA10EB-41CB-D38D-EF84-26BC097A3E72"; + rename -uid "C50FCD44-4C37-957B-889A-0688B6449F49"; setAttr ".ihi" 0; setAttr -k off ".v"; setAttr ".ove" yes; @@ -1896,7 +1978,7 @@ createNode nurbsCurve -n "mouth_C0_jaw21Shape" -p "mouth_C0_jaw"; -0.1875 0 0 ; createNode nurbsCurve -n "mouth_C0_jaw21_0crvShape" -p "mouth_C0_jaw"; - rename -uid "516CAF7A-4B04-4CFE-1317-B8BD8D5F29F7"; + rename -uid "B0C4816A-492D-1528-C0A5-FD826FB4009E"; setAttr ".ihi" 0; setAttr -k off ".v"; setAttr ".ove" yes; @@ -1914,7 +1996,7 @@ createNode nurbsCurve -n "mouth_C0_jaw21_0crvShape" -p "mouth_C0_jaw"; -0.1875 0 0 ; createNode nurbsCurve -n "mouth_C0_jaw21_1crvShape" -p "mouth_C0_jaw"; - rename -uid "91A4CAEA-4B96-8020-6BC7-CB93A6EE73D4"; + rename -uid "DE97B9B1-47D1-5C15-6685-138C27B7F2D5"; setAttr ".ihi" 0; setAttr -k off ".v"; setAttr ".ove" yes; @@ -1932,18 +2014,18 @@ createNode nurbsCurve -n "mouth_C0_jaw21_1crvShape" -p "mouth_C0_jaw"; 0 0 -0.1875 ; createNode transform -n "mouth_C0_crv" -p "mouth_C0_root"; - rename -uid "F41D9D3A-46FC-6C8F-239C-E2A1BB88E633"; + rename -uid "4F522166-4C5A-0E3B-8004-6A8791113BE1"; setAttr ".ovdt" 1; setAttr ".ove" yes; setAttr ".t" -type "double3" -9.4250592329134309e-015 -14.991942605075595 -16.808884058915393 ; setAttr ".s" -type "double3" 4.4504433171691176 4.4504433171691185 4.4504433171691149 ; -createNode nurbsCurve -n "mouth_C0_crvShape" -p "|guide|local_C0_root|body_C0_root|spine_C0_root|spine_C0_eff|neck_C0_root|neck_C0_neck|neck_C0_head|mouth_C0_root|mouth_C0_crv"; - rename -uid "728B1211-48F4-B070-96B5-8980058A8F11"; +createNode nurbsCurve -n "mouth_C0_crvShape" -p "|guide|global_C0_root|local_C0_root|body_C0_root|spine_C0_root|spine_C0_eff|neck_C0_root|neck_C0_neck|neck_C0_head|mouth_C0_root|mouth_C0_crv"; + rename -uid "E8A54D73-4925-DE5C-70E8-A9ACE08760D6"; setAttr -k off ".v"; setAttr -s 4 ".iog[0].og"; setAttr ".tw" yes; -createNode nurbsCurve -n "mouth_C0_crvShapeOrig" -p "|guide|local_C0_root|body_C0_root|spine_C0_root|spine_C0_eff|neck_C0_root|neck_C0_neck|neck_C0_head|mouth_C0_root|mouth_C0_crv"; - rename -uid "6C9A0FAA-4D66-4D63-B56B-39A83F0897C0"; +createNode nurbsCurve -n "mouth_C0_crvShapeOrig" -p "|guide|global_C0_root|local_C0_root|body_C0_root|spine_C0_root|spine_C0_eff|neck_C0_root|neck_C0_neck|neck_C0_head|mouth_C0_root|mouth_C0_crv"; + rename -uid "5BF8D945-4F6D-8BCE-4E67-88AFE8325184"; setAttr -k off ".v"; setAttr ".io" yes; setAttr ".cc" -type "nurbsCurve" @@ -1954,18 +2036,18 @@ createNode nurbsCurve -n "mouth_C0_crvShapeOrig" -p "|guide|local_C0_root|body_C 0 0 0 ; createNode transform -n "mouth_C0_crv7" -p "mouth_C0_root"; - rename -uid "A4F2FE17-442A-CA5D-0523-01860C0942C4"; + rename -uid "FB255D8F-4EB2-9983-86D2-1896A9DE4CC9"; setAttr ".ovdt" 1; setAttr ".ove" yes; setAttr ".t" -type "double3" -9.4250592329134309e-015 -14.991942605075595 -16.808884058915393 ; setAttr ".s" -type "double3" 4.4504433171691176 4.4504433171691185 4.4504433171691149 ; createNode nurbsCurve -n "mouth_C0_crv7Shape" -p "mouth_C0_crv7"; - rename -uid "2E63BEAD-4852-8230-2E2F-6696C9EDDF32"; + rename -uid "72ABF2EE-409D-A6C0-89B1-CE885E606CE2"; setAttr -k off ".v"; setAttr -s 4 ".iog[0].og"; setAttr ".tw" yes; createNode nurbsCurve -n "mouth_C0_crv7ShapeOrig" -p "mouth_C0_crv7"; - rename -uid "B459A6BF-4CCD-CCC3-2B98-2B8024586BBB"; + rename -uid "D0A4FD87-4047-4045-95C0-6E867A800E81"; setAttr -k off ".v"; setAttr ".io" yes; setAttr ".cc" -type "nurbsCurve" @@ -1976,7 +2058,7 @@ createNode nurbsCurve -n "mouth_C0_crv7ShapeOrig" -p "mouth_C0_crv7"; 0 0 0 ; createNode transform -n "eyeslook_C0_root" -p "neck_C0_head"; - rename -uid "9AF4105A-4DAF-41AD-4E50-F68E444C1188"; + rename -uid "D9226848-4342-9EA5-A43A-088C0312C8D6"; addAttr -ci true -sn "isGearGuide" -ln "isGearGuide" -dv 1 -min 0 -max 1 -at "bool"; addAttr -ci true -sn "comp_type" -ln "comp_type" -dt "string"; addAttr -ci true -sn "comp_name" -ln "comp_name" -dt "string"; @@ -2041,7 +2123,7 @@ createNode transform -n "eyeslook_C0_root" -p "neck_C0_head"; setAttr ".ctlSize" 1; setAttr ".parentJointIndex" -1; createNode nurbsCurve -n "eyeslook_C0_rootShape" -p "eyeslook_C0_root"; - rename -uid "F302D617-448E-5D1A-97FE-189DA7E3A55F"; + rename -uid "62CDB7CD-40C1-5F81-1783-F7AC07A87258"; setAttr ".ihi" 0; setAttr -k off ".v"; setAttr ".ove" yes; @@ -2054,7 +2136,7 @@ createNode nurbsCurve -n "eyeslook_C0_rootShape" -p "eyeslook_C0_root"; -0.25 0 0 ; createNode nurbsCurve -n "eyeslook_C0_root19Shape" -p "eyeslook_C0_root"; - rename -uid "91B7DE14-45A0-93A9-827A-00AFB6F25B69"; + rename -uid "98368975-49F9-C534-356A-47B04A33DBF3"; setAttr ".ihi" 0; setAttr -k off ".v"; setAttr ".ove" yes; @@ -2067,7 +2149,7 @@ createNode nurbsCurve -n "eyeslook_C0_root19Shape" -p "eyeslook_C0_root"; 0 -0.25 0 ; createNode nurbsCurve -n "eyeslook_C0_root20Shape" -p "eyeslook_C0_root"; - rename -uid "0D7DA6E9-490B-C2F5-F173-C084A41ED275"; + rename -uid "7DBBE8A0-4042-716A-48BB-DD9379ED1300"; setAttr ".ihi" 0; setAttr -k off ".v"; setAttr ".ove" yes; @@ -2080,7 +2162,7 @@ createNode nurbsCurve -n "eyeslook_C0_root20Shape" -p "eyeslook_C0_root"; 0 0 -0.25 ; createNode nurbsCurve -n "eyeslook_C0_root21Shape" -p "eyeslook_C0_root"; - rename -uid "2172155B-41DF-C2CA-349E-CF853A737EDC"; + rename -uid "1468C6A3-4992-82B6-358A-09ACA131CB57"; setAttr ".ihi" 0; setAttr -k off ".v"; setAttr ".ove" yes; @@ -2107,7 +2189,7 @@ createNode nurbsCurve -n "eyeslook_C0_root21Shape" -p "eyeslook_C0_root"; -0.125 -0.125 -0.125 ; createNode transform -n "eyeslook_C0_sizeRef" -p "eyeslook_C0_root"; - rename -uid "52110D1B-4704-3447-59F9-E88C35F1096E"; + rename -uid "CAC2B5C7-48F6-ACD9-78C8-E29D67EBF72D"; addAttr -ci true -sn "isGearGuide" -ln "isGearGuide" -dv 1 -min 0 -max 1 -at "bool"; setAttr -k off -cb on ".v"; setAttr ".t" -type "double3" 1.1102230246251558e-015 0 1 ; @@ -2123,7 +2205,7 @@ createNode transform -n "eyeslook_C0_sizeRef" -p "eyeslook_C0_root"; setAttr -k off -cb on ".sy"; setAttr -k off -cb on ".sz"; createNode transform -n "eye_L0_root" -p "neck_C0_head"; - rename -uid "359EFD96-40E1-93CB-9060-7CBC8AD3F975"; + rename -uid "6946944E-4A19-2B11-208A-5A8F3C027F85"; addAttr -ci true -sn "isGearGuide" -ln "isGearGuide" -dv 1 -min 0 -max 1 -at "bool"; addAttr -ci true -sn "comp_type" -ln "comp_type" -dt "string"; addAttr -ci true -sn "comp_name" -ln "comp_name" -dt "string"; @@ -2161,7 +2243,7 @@ createNode transform -n "eye_L0_root" -p "neck_C0_head"; setAttr ".ikrefarray" -type "string" "eyesAim_C0_root"; setAttr ".parentJointIndex" -1; createNode nurbsCurve -n "eye_L0_rootShape" -p "eye_L0_root"; - rename -uid "EBA79DF1-45B3-5463-6CF1-31A4738A6946"; + rename -uid "79EF865B-4DFD-39B4-C36A-46A898D74F8C"; setAttr ".ihi" 0; setAttr -k off ".v"; setAttr ".ove" yes; @@ -2174,7 +2256,7 @@ createNode nurbsCurve -n "eye_L0_rootShape" -p "eye_L0_root"; -0.25 0 0 ; createNode nurbsCurve -n "eye_L0_root19Shape" -p "eye_L0_root"; - rename -uid "CA1FD827-4BEC-12A5-182F-DD8671B59E0F"; + rename -uid "B1F9CA83-4A02-F502-FCFB-818B37AC92DD"; setAttr ".ihi" 0; setAttr -k off ".v"; setAttr ".ove" yes; @@ -2187,7 +2269,7 @@ createNode nurbsCurve -n "eye_L0_root19Shape" -p "eye_L0_root"; 0 -0.25 0 ; createNode nurbsCurve -n "eye_L0_root20Shape" -p "eye_L0_root"; - rename -uid "F64315D3-4EC3-C2E8-5C6E-AF87E5434CEB"; + rename -uid "03D5A0BB-4978-A3F1-7ABC-458EAC5E9158"; setAttr ".ihi" 0; setAttr -k off ".v"; setAttr ".ove" yes; @@ -2200,7 +2282,7 @@ createNode nurbsCurve -n "eye_L0_root20Shape" -p "eye_L0_root"; 0 0 -0.25 ; createNode nurbsCurve -n "eye_L0_root21Shape" -p "eye_L0_root"; - rename -uid "A8A78025-40E6-73B1-4840-6B80187CD37B"; + rename -uid "C9ADE007-48F9-7B93-D87C-E6A2EB2C459D"; setAttr ".ihi" 0; setAttr -k off ".v"; setAttr ".ove" yes; @@ -2227,7 +2309,7 @@ createNode nurbsCurve -n "eye_L0_root21Shape" -p "eye_L0_root"; -0.125 -0.125 -0.125 ; createNode transform -n "eye_L0_look" -p "eye_L0_root"; - rename -uid "4C63385C-4C16-702E-63B7-21B9BF1DE3B1"; + rename -uid "06FB62DE-4FC7-0F98-F91B-E694B2BC5D7C"; addAttr -ci true -sn "isGearGuide" -ln "isGearGuide" -dv 1 -min 0 -max 1 -at "bool"; setAttr -k off -cb on ".v"; setAttr ".t" -type "double3" -5.5511151231257827e-016 7.9936057773011271e-015 2.0321341905376475 ; @@ -2243,7 +2325,7 @@ createNode transform -n "eye_L0_look" -p "eye_L0_root"; setAttr -k off -cb on ".sy"; setAttr -k off -cb on ".sz"; createNode nurbsCurve -n "eye_L0_lookShape" -p "eye_L0_look"; - rename -uid "04045B00-4930-117F-73C6-8BA856954B31"; + rename -uid "6F1FA038-44D0-7D26-FEAF-52BD1753B2F7"; setAttr ".ihi" 0; setAttr -k off ".v"; setAttr ".ove" yes; @@ -2256,7 +2338,7 @@ createNode nurbsCurve -n "eye_L0_lookShape" -p "eye_L0_look"; -0.25 0 0 ; createNode nurbsCurve -n "eye_L0_look19Shape" -p "eye_L0_look"; - rename -uid "20EF492C-4D69-B33C-AD4A-2B81C8586F06"; + rename -uid "15090577-4C90-A82A-38E8-5FBBFB7A4CC4"; setAttr ".ihi" 0; setAttr -k off ".v"; setAttr ".ove" yes; @@ -2269,7 +2351,7 @@ createNode nurbsCurve -n "eye_L0_look19Shape" -p "eye_L0_look"; 0 -0.25 0 ; createNode nurbsCurve -n "eye_L0_look20Shape" -p "eye_L0_look"; - rename -uid "7FB79EDE-47A8-19EA-E4F6-439E5FEC6547"; + rename -uid "E37518F7-46F7-734D-8415-14A6065DA918"; setAttr ".ihi" 0; setAttr -k off ".v"; setAttr ".ove" yes; @@ -2282,7 +2364,7 @@ createNode nurbsCurve -n "eye_L0_look20Shape" -p "eye_L0_look"; 0 0 -0.25 ; createNode nurbsCurve -n "eye_L0_look21Shape" -p "eye_L0_look"; - rename -uid "B98DBC9B-4554-246A-150F-9EA2317DD2A3"; + rename -uid "5257146E-4AB6-A55E-AB69-98B8E6555F1D"; setAttr ".ihi" 0; setAttr -k off ".v"; setAttr ".ove" yes; @@ -2300,7 +2382,7 @@ createNode nurbsCurve -n "eye_L0_look21Shape" -p "eye_L0_look"; -0.1875 0 0 ; createNode nurbsCurve -n "eye_L0_look21_0crvShape" -p "eye_L0_look"; - rename -uid "558860D3-409F-FFD9-6394-BAA26B967E0A"; + rename -uid "C9B1C340-43E9-E3D6-371C-D0ACA870E66A"; setAttr ".ihi" 0; setAttr -k off ".v"; setAttr ".ove" yes; @@ -2318,7 +2400,7 @@ createNode nurbsCurve -n "eye_L0_look21_0crvShape" -p "eye_L0_look"; -0.1875 0 0 ; createNode nurbsCurve -n "eye_L0_look21_1crvShape" -p "eye_L0_look"; - rename -uid "F2264568-45D4-5AEE-6225-9B98C40F3A8F"; + rename -uid "234372F7-4748-8FEE-6DCE-16B94C538F62"; setAttr ".ihi" 0; setAttr -k off ".v"; setAttr ".ove" yes; @@ -2336,19 +2418,19 @@ createNode nurbsCurve -n "eye_L0_look21_1crvShape" -p "eye_L0_look"; 0 0 -0.1875 ; createNode transform -n "eye_L0_crv" -p "eye_L0_root"; - rename -uid "11A5D0D3-48CB-CC82-F136-E0A82F6F191F"; + rename -uid "DE0E0EA5-4F6C-0940-F979-01809BD849CC"; setAttr ".ovdt" 1; setAttr ".ove" yes; setAttr ".t" -type "double3" 0.69889742974753399 -3.4976629291575771 -3.5292331821335634 ; setAttr ".r" -type "double3" 0 -14.006447505262578 0 ; setAttr ".s" -type "double3" 1.0000000000000011 0.99999999999999811 1.000000000000002 ; createNode nurbsCurve -n "eye_L0_crvShape" -p "eye_L0_crv"; - rename -uid "E324F924-44A1-370D-C5B7-35A55A600909"; + rename -uid "C9866E35-4D63-7DFD-3001-34B35F77456F"; setAttr -k off ".v"; setAttr -s 4 ".iog[0].og"; setAttr ".tw" yes; createNode nurbsCurve -n "eye_L0_crvShapeOrig" -p "eye_L0_crv"; - rename -uid "0FED39C0-4C22-D444-A572-22A58A715360"; + rename -uid "F8439122-4C28-5C53-D6B0-139E5E16E52C"; setAttr -k off ".v"; setAttr ".io" yes; setAttr ".cc" -type "nurbsCurve" @@ -2359,7 +2441,7 @@ createNode nurbsCurve -n "eye_L0_crvShapeOrig" -p "eye_L0_crv"; 0 0 0 ; createNode transform -n "eye_R0_root" -p "neck_C0_head"; - rename -uid "A7D65803-4EE9-BDF9-9BCC-3E896ADA1038"; + rename -uid "FD9E7880-4FF9-AA20-BC5C-FC9780F5B108"; addAttr -ci true -sn "isGearGuide" -ln "isGearGuide" -dv 1 -min 0 -max 1 -at "bool"; addAttr -ci true -sn "comp_type" -ln "comp_type" -dt "string"; addAttr -ci true -sn "comp_name" -ln "comp_name" -dt "string"; @@ -2397,7 +2479,7 @@ createNode transform -n "eye_R0_root" -p "neck_C0_head"; setAttr ".ikrefarray" -type "string" "eyesAim_C0_root"; setAttr ".parentJointIndex" -1; createNode nurbsCurve -n "eye_R0_rootShape" -p "eye_R0_root"; - rename -uid "C9F48B07-4F67-1DF0-81DD-D5B99639DBF6"; + rename -uid "E2974B72-4C48-5257-BC5E-51925008D558"; setAttr ".ihi" 0; setAttr -k off ".v"; setAttr ".ove" yes; @@ -2410,7 +2492,7 @@ createNode nurbsCurve -n "eye_R0_rootShape" -p "eye_R0_root"; -0.25 0 0 ; createNode nurbsCurve -n "eye_R0_root10Shape" -p "eye_R0_root"; - rename -uid "CD320243-40B3-A928-5436-629E9000B1D2"; + rename -uid "34329639-4734-D239-13AF-1A94868E6723"; setAttr ".ihi" 0; setAttr -k off ".v"; setAttr ".ove" yes; @@ -2423,7 +2505,7 @@ createNode nurbsCurve -n "eye_R0_root10Shape" -p "eye_R0_root"; 0 -0.25 0 ; createNode nurbsCurve -n "eye_R0_root11Shape" -p "eye_R0_root"; - rename -uid "809AF5C7-4AD2-B992-47ED-E89B1F5A0827"; + rename -uid "25E8976E-4540-00B8-F00A-84B45D12A56D"; setAttr ".ihi" 0; setAttr -k off ".v"; setAttr ".ove" yes; @@ -2436,7 +2518,7 @@ createNode nurbsCurve -n "eye_R0_root11Shape" -p "eye_R0_root"; 0 0 -0.25 ; createNode nurbsCurve -n "eye_R0_root12Shape" -p "eye_R0_root"; - rename -uid "4786CEBE-4F2B-462F-B106-C8A6C85BC43F"; + rename -uid "2F5A294B-4205-40F4-3009-9599C9FAD557"; setAttr ".ihi" 0; setAttr -k off ".v"; setAttr ".ove" yes; @@ -2463,7 +2545,7 @@ createNode nurbsCurve -n "eye_R0_root12Shape" -p "eye_R0_root"; -0.125 -0.125 -0.125 ; createNode transform -n "eye_R0_look" -p "eye_R0_root"; - rename -uid "CA80CF76-4E8C-F5AC-4C84-F580E35E6DEC"; + rename -uid "AE5B571D-4E02-F02E-E184-E79C39C8C72C"; addAttr -ci true -sn "isGearGuide" -ln "isGearGuide" -dv 1 -min 0 -max 1 -at "bool"; setAttr -k off -cb on ".v"; setAttr ".t" -type "double3" -3.3306690738754696e-016 7.9936057773011271e-015 2.0321341905376418 ; @@ -2479,7 +2561,7 @@ createNode transform -n "eye_R0_look" -p "eye_R0_root"; setAttr -k off -cb on ".sy"; setAttr -k off -cb on ".sz"; createNode nurbsCurve -n "eye_R0_lookShape" -p "eye_R0_look"; - rename -uid "36562C7D-48FC-701D-86F0-EAADA26EB2AD"; + rename -uid "D91BF218-407C-F76E-0254-E9B8E705D4E9"; setAttr ".ihi" 0; setAttr -k off ".v"; setAttr ".ove" yes; @@ -2492,7 +2574,7 @@ createNode nurbsCurve -n "eye_R0_lookShape" -p "eye_R0_look"; -0.25 0 0 ; createNode nurbsCurve -n "eye_R0_look10Shape" -p "eye_R0_look"; - rename -uid "942484D5-4CF0-062F-0C28-29AEE28B77A6"; + rename -uid "1442E189-4C27-EC95-49BC-82A835D66E38"; setAttr ".ihi" 0; setAttr -k off ".v"; setAttr ".ove" yes; @@ -2505,7 +2587,7 @@ createNode nurbsCurve -n "eye_R0_look10Shape" -p "eye_R0_look"; 0 -0.25 0 ; createNode nurbsCurve -n "eye_R0_look11Shape" -p "eye_R0_look"; - rename -uid "37482EC7-46B8-BCBF-1E8B-51B1A1BA9B67"; + rename -uid "8008CF29-4244-F982-688B-C1815760A521"; setAttr ".ihi" 0; setAttr -k off ".v"; setAttr ".ove" yes; @@ -2518,7 +2600,7 @@ createNode nurbsCurve -n "eye_R0_look11Shape" -p "eye_R0_look"; 0 0 -0.25 ; createNode nurbsCurve -n "eye_R0_look12Shape" -p "eye_R0_look"; - rename -uid "16F9AB3C-4E81-4581-9664-F4ABAC28A4CA"; + rename -uid "E44D2C73-4105-AA55-B454-FB89D267AA9D"; setAttr ".ihi" 0; setAttr -k off ".v"; setAttr ".ove" yes; @@ -2536,7 +2618,7 @@ createNode nurbsCurve -n "eye_R0_look12Shape" -p "eye_R0_look"; -0.1875 0 0 ; createNode nurbsCurve -n "eye_R0_look12_0crvShape" -p "eye_R0_look"; - rename -uid "6C777E2F-4693-E1E4-DA21-1BA0370B02D5"; + rename -uid "8C06A311-40C9-6B4B-683B-BB9F1413E372"; setAttr ".ihi" 0; setAttr -k off ".v"; setAttr ".ove" yes; @@ -2554,7 +2636,7 @@ createNode nurbsCurve -n "eye_R0_look12_0crvShape" -p "eye_R0_look"; -0.1875 0 0 ; createNode nurbsCurve -n "eye_R0_look12_1crvShape" -p "eye_R0_look"; - rename -uid "AF498102-4259-7626-4776-968C7377F396"; + rename -uid "6A9C2700-442A-7685-B70F-4CBE6C1F0B81"; setAttr ".ihi" 0; setAttr -k off ".v"; setAttr ".ove" yes; @@ -2572,19 +2654,19 @@ createNode nurbsCurve -n "eye_R0_look12_1crvShape" -p "eye_R0_look"; 0 0 -0.1875 ; createNode transform -n "eye_R0_crv" -p "eye_R0_root"; - rename -uid "8CB50376-4218-05C6-58F0-CCBC150E8B06"; + rename -uid "A6635ED5-4D77-7DCD-82C8-62AD28D90FBF"; setAttr ".ovdt" 1; setAttr ".ove" yes; setAttr ".t" -type "double3" 0.69889742974753455 -3.4976629291575767 -3.5292331821335621 ; setAttr ".r" -type "double3" 0 165.99355249473743 0 ; setAttr ".s" -type "double3" 1.0000000000000009 0.99999999999999822 -1.0000000000000011 ; createNode nurbsCurve -n "eye_R0_crvShape" -p "eye_R0_crv"; - rename -uid "976B5B40-485C-52C2-01B8-419E722F188D"; + rename -uid "8E865766-4310-ADB2-AC86-B2AB0407FA4C"; setAttr -k off ".v"; setAttr -s 4 ".iog[0].og"; setAttr ".tw" yes; createNode nurbsCurve -n "eye_R0_crvShapeOrig" -p "eye_R0_crv"; - rename -uid "D59D13B5-42E8-8DAF-AC6A-749787C78C3B"; + rename -uid "EE6EF71B-428C-44CE-B238-E2ACE2D76508"; setAttr -k off ".v"; setAttr ".io" yes; setAttr ".cc" -type "nurbsCurve" @@ -2595,7 +2677,7 @@ createNode nurbsCurve -n "eye_R0_crvShapeOrig" -p "eye_R0_crv"; 0 0 0 ; createNode transform -n "neck_C0_tan1" -p "neck_C0_neck"; - rename -uid "C97E4194-4DFA-1437-3236-0EA7C3E3C0D6"; + rename -uid "727C9A47-4F96-8F2B-C69D-099187C75E8C"; addAttr -ci true -sn "isGearGuide" -ln "isGearGuide" -dv 1 -min 0 -max 1 -at "bool"; setAttr -k off -cb on ".v"; setAttr ".t" -type "double3" 0.094534318000986772 -0.76996010281298766 1.5833033991300372e-016 ; @@ -2611,7 +2693,7 @@ createNode transform -n "neck_C0_tan1" -p "neck_C0_neck"; setAttr -k off -cb on ".sy"; setAttr -k off -cb on ".sz"; createNode nurbsCurve -n "neck_C0_tanShape1" -p "neck_C0_tan1"; - rename -uid "C712ACAF-4CFD-6A50-1A7E-919D3E1F716D"; + rename -uid "93B0F503-4AE9-561B-8171-88ABFB0AF7CA"; setAttr ".ihi" 0; setAttr -k off ".v"; setAttr ".ove" yes; @@ -2623,8 +2705,8 @@ createNode nurbsCurve -n "neck_C0_tanShape1" -p "neck_C0_tan1"; 0.25 0 0 -0.25 0 0 ; -createNode nurbsCurve -n "neck_C0_tanShape14" -p "neck_C0_tan1"; - rename -uid "6D21397D-419C-6D6F-C04E-56A428439A95"; +createNode nurbsCurve -n "neck_C0_tanShape4" -p "neck_C0_tan1"; + rename -uid "6C4AF4BD-49BC-7B24-A884-C3A51F332CD8"; setAttr ".ihi" 0; setAttr -k off ".v"; setAttr ".ove" yes; @@ -2636,8 +2718,8 @@ createNode nurbsCurve -n "neck_C0_tanShape14" -p "neck_C0_tan1"; 0 0.25 0 0 -0.25 0 ; -createNode nurbsCurve -n "neck_C0_tanShape15" -p "neck_C0_tan1"; - rename -uid "582746AD-4BBA-1452-0A20-2BBC05FFFB4E"; +createNode nurbsCurve -n "neck_C0_tanShape5" -p "neck_C0_tan1"; + rename -uid "7E9A90E1-4326-3391-51B8-5C97A7E79BB6"; setAttr ".ihi" 0; setAttr -k off ".v"; setAttr ".ove" yes; @@ -2649,8 +2731,8 @@ createNode nurbsCurve -n "neck_C0_tanShape15" -p "neck_C0_tan1"; 0 0 0.25 0 0 -0.25 ; -createNode nurbsCurve -n "neck_C0_tanShape16" -p "neck_C0_tan1"; - rename -uid "108EFCDD-441B-9BAA-4570-B7824BB33F6B"; +createNode nurbsCurve -n "neck_C0_tanShape6" -p "neck_C0_tan1"; + rename -uid "3CA7D249-483E-703A-3C30-D89B5C6FE28E"; setAttr ".ihi" 0; setAttr -k off ".v"; setAttr ".ove" yes; @@ -2668,7 +2750,7 @@ createNode nurbsCurve -n "neck_C0_tanShape16" -p "neck_C0_tan1"; -0.1875 0 0 ; createNode nurbsCurve -n "neck_C0_tan14_0crvShape" -p "neck_C0_tan1"; - rename -uid "D28DE1E2-41FA-0325-37C9-55BC1E01502F"; + rename -uid "9FF1437B-43AF-C32D-FC19-0591E4FAB91B"; setAttr ".ihi" 0; setAttr -k off ".v"; setAttr ".ove" yes; @@ -2686,7 +2768,7 @@ createNode nurbsCurve -n "neck_C0_tan14_0crvShape" -p "neck_C0_tan1"; -0.1875 0 0 ; createNode nurbsCurve -n "neck_C0_tan14_1crvShape" -p "neck_C0_tan1"; - rename -uid "1DF5D472-49B2-A63F-E333-63A25C3F31D0"; + rename -uid "D86B1C1A-4C8A-50C2-66E5-4AA1F5DC2027"; setAttr ".ihi" 0; setAttr -k off ".v"; setAttr ".ove" yes; @@ -2704,19 +2786,19 @@ createNode nurbsCurve -n "neck_C0_tan14_1crvShape" -p "neck_C0_tan1"; 0 0 -0.1875 ; createNode transform -n "neck_C0_head_crv" -p "neck_C0_neck"; - rename -uid "1420B166-4435-9480-7DE9-3CB4A9907112"; + rename -uid "5299B2DE-4224-2EB6-3372-0D97F3FF9787"; setAttr ".ovdt" 1; setAttr ".ove" yes; setAttr ".t" -type "double3" 4.2174105108550703 -10.274847894363646 4.4383048488342812e-016 ; setAttr ".r" -type "double3" -70.964236232861765 89.999999999999943 0 ; setAttr ".s" -type "double3" 2.3915882794427565 2.3915882794427543 2.3915882794427561 ; createNode nurbsCurve -n "neck_C0_head_crvShape" -p "neck_C0_head_crv"; - rename -uid "53197311-49B5-9294-DA7D-6A81F3C72E39"; + rename -uid "049CFF13-4114-B219-0EA3-AC815119299F"; setAttr -k off ".v"; setAttr -s 4 ".iog[0].og"; setAttr ".tw" yes; createNode nurbsCurve -n "neck_C0_head_crvShapeOrig" -p "neck_C0_head_crv"; - rename -uid "E388E532-44C8-6F23-5966-B595F8EEB514"; + rename -uid "251FEA07-4712-2522-8472-1394FD916D52"; setAttr -k off ".v"; setAttr ".io" yes; setAttr ".cc" -type "nurbsCurve" @@ -2728,7 +2810,7 @@ createNode nurbsCurve -n "neck_C0_head_crvShapeOrig" -p "neck_C0_head_crv"; 0 0 0 ; createNode transform -n "neck_C0_tan0" -p "neck_C0_root"; - rename -uid "DC70A3F7-4E6F-9FAB-900D-468FB1CB0EB3"; + rename -uid "56E305C5-407B-9831-0D24-8A9DB24F48BC"; addAttr -ci true -sn "isGearGuide" -ln "isGearGuide" -dv 1 -min 0 -max 1 -at "bool"; setAttr -k off -cb on ".v"; setAttr ".t" -type "double3" -0.016734587625118369 0.81123959492320008 -2.1361002026221281e-016 ; @@ -2744,7 +2826,7 @@ createNode transform -n "neck_C0_tan0" -p "neck_C0_root"; setAttr -k off -cb on ".sy"; setAttr -k off -cb on ".sz"; createNode nurbsCurve -n "neck_C0_tanShape0" -p "neck_C0_tan0"; - rename -uid "73E80A61-43F5-1198-71CE-CC929CC6C570"; + rename -uid "FF2E7F71-4E66-2904-D842-47AC5A1102DA"; setAttr ".ihi" 0; setAttr -k off ".v"; setAttr ".ove" yes; @@ -2756,8 +2838,8 @@ createNode nurbsCurve -n "neck_C0_tanShape0" -p "neck_C0_tan0"; 0.25 0 0 -0.25 0 0 ; -createNode nurbsCurve -n "neck_C0_tanShape13" -p "neck_C0_tan0"; - rename -uid "5B9E0013-463A-7AEE-5CD8-3683A76C0429"; +createNode nurbsCurve -n "neck_C0_tanShape1" -p "neck_C0_tan0"; + rename -uid "4DE6DD5A-4489-0A41-9CFB-BE970D2AB56D"; setAttr ".ihi" 0; setAttr -k off ".v"; setAttr ".ove" yes; @@ -2769,8 +2851,8 @@ createNode nurbsCurve -n "neck_C0_tanShape13" -p "neck_C0_tan0"; 0 0.25 0 0 -0.25 0 ; -createNode nurbsCurve -n "neck_C0_tanShape14" -p "neck_C0_tan0"; - rename -uid "C370CD32-461C-79CB-27C3-89BAA82F2295"; +createNode nurbsCurve -n "neck_C0_tanShape2" -p "neck_C0_tan0"; + rename -uid "B4A8269C-4997-40A0-436E-CBBAE83D06F7"; setAttr ".ihi" 0; setAttr -k off ".v"; setAttr ".ove" yes; @@ -2782,8 +2864,8 @@ createNode nurbsCurve -n "neck_C0_tanShape14" -p "neck_C0_tan0"; 0 0 0.25 0 0 -0.25 ; -createNode nurbsCurve -n "neck_C0_tanShape15" -p "neck_C0_tan0"; - rename -uid "0FA7556F-4D05-DD56-5BDA-27A16FD8CC25"; +createNode nurbsCurve -n "neck_C0_tanShape3" -p "neck_C0_tan0"; + rename -uid "401F3B73-4EC8-EF5E-4969-20A702F7E618"; setAttr ".ihi" 0; setAttr -k off ".v"; setAttr ".ove" yes; @@ -2800,8 +2882,8 @@ createNode nurbsCurve -n "neck_C0_tanShape15" -p "neck_C0_tan0"; 0 -0.1875 0 -0.1875 0 0 ; -createNode nurbsCurve -n "neck_C0_tan13_0crvShape" -p "neck_C0_tan0"; - rename -uid "EF8085FE-4F1A-24B3-A8D3-C1B0CDC5B395"; +createNode nurbsCurve -n "neck_C0_tan13_0crvShape0" -p "neck_C0_tan0"; + rename -uid "FC13CBCF-48E2-6166-5347-C8861B6262B8"; setAttr ".ihi" 0; setAttr -k off ".v"; setAttr ".ove" yes; @@ -2818,8 +2900,8 @@ createNode nurbsCurve -n "neck_C0_tan13_0crvShape" -p "neck_C0_tan0"; 0 0 -0.1875 -0.1875 0 0 ; -createNode nurbsCurve -n "neck_C0_tan13_1crvShape" -p "neck_C0_tan0"; - rename -uid "9B639553-4A2C-6A0F-9514-AE97D4B13FCE"; +createNode nurbsCurve -n "neck_C0_tan13_1crvShape0" -p "neck_C0_tan0"; + rename -uid "E0CEC0F8-477F-D12A-C0D5-3DA712085C2C"; setAttr ".ihi" 0; setAttr -k off ".v"; setAttr ".ove" yes; @@ -2837,7 +2919,7 @@ createNode nurbsCurve -n "neck_C0_tan13_1crvShape" -p "neck_C0_tan0"; 0 0 -0.1875 ; createNode transform -n "neck_C0_blade" -p "neck_C0_root"; - rename -uid "124F8325-4ACB-AE4B-0C7A-0B818BB308AA"; + rename -uid "E20E60D9-4862-612E-6948-14B68E83271B"; addAttr -ci true -k true -sn "bladeRollOffset" -ln "bladeRollOffset" -at "float"; setAttr -l on -k off -cb on ".v"; setAttr -k off -cb on ".tx"; @@ -2853,7 +2935,7 @@ createNode transform -n "neck_C0_blade" -p "neck_C0_root"; setAttr -l on -k off -cb on ".sz"; setAttr -k on ".bladeRollOffset" -360; createNode nurbsCurve -n "neck_C0_bladeShape" -p "neck_C0_blade"; - rename -uid "539FD8A5-4EF0-1809-CBD1-91BDD0DDCFBA"; + rename -uid "078074D4-4B01-C08F-1CBB-75AC28EC066A"; setAttr ".ihi" 0; setAttr -k off ".v"; setAttr ".ove" yes; @@ -2868,7 +2950,7 @@ createNode nurbsCurve -n "neck_C0_bladeShape" -p "neck_C0_blade"; 0 0 0 ; createNode aimConstraint -n "neck_C0_blade_aimConstraint7" -p "neck_C0_blade"; - rename -uid "C9B12D72-44D6-E9C7-A7DD-31915BA2107D"; + rename -uid "ADDEEF8E-4971-2424-50F2-ED81835F0BDB"; addAttr -dcb 0 -ci true -sn "w0" -ln "neck_C0_tan0W0" -dv 1 -at "double"; setAttr -k on ".nds"; setAttr -k off ".v"; @@ -2887,7 +2969,7 @@ createNode aimConstraint -n "neck_C0_blade_aimConstraint7" -p "neck_C0_blade"; setAttr ".rsrr" -type "double3" -540 -2.8249000307521022e-030 451.18175355423011 ; setAttr -k on ".w0"; createNode pointConstraint -n "neck_C0_blade_pointConstraint7" -p "neck_C0_blade"; - rename -uid "544DA690-4484-2409-A78D-E49A9E94C8C5"; + rename -uid "FCBCCD59-411F-1D8E-34DC-939AAC057BF8"; addAttr -dcb 0 -ci true -k true -sn "w0" -ln "neck_C0_rootW0" -dv 1 -min 0 -at "double"; setAttr -k on ".nds"; setAttr -k off ".v"; @@ -2905,19 +2987,19 @@ createNode pointConstraint -n "neck_C0_blade_pointConstraint7" -p "neck_C0_blade -6.4094948549207209e-031 ; setAttr -k on ".w0"; createNode transform -n "neck_C0_neck_crv" -p "neck_C0_root"; - rename -uid "281BCA50-4F2D-7D3B-D4DF-948CEF74ED25"; + rename -uid "CB3CDC63-4F4D-0D32-4051-ACAA2607D63E"; setAttr ".ovdt" 1; setAttr ".ove" yes; setAttr ".t" -type "double3" 3.976162134148518 -6.6105608685998307 -4.274848312126261e-016 ; - setAttr ".r" -type "double3" -70.964236232861779 89.999999999999957 0 ; + setAttr ".r" -type "double3" -70.964236232861793 89.999999999999957 0 ; setAttr ".s" -type "double3" 2.391588279442757 2.3915882794427565 2.3915882794427565 ; createNode nurbsCurve -n "neck_C0_neck_crvShape" -p "neck_C0_neck_crv"; - rename -uid "A32E6F01-439A-89FE-C535-62817FD49C9B"; + rename -uid "96897850-4EB4-C197-2AC2-C99379432238"; setAttr -k off ".v"; setAttr -s 4 ".iog[0].og"; setAttr ".tw" yes; createNode nurbsCurve -n "neck_C0_neck_crvShapeOrig" -p "neck_C0_neck_crv"; - rename -uid "E3F2ED72-4D18-B7C3-319E-E38B36705EE7"; + rename -uid "B1B3DE30-4E42-72A7-3E12-BABBCE9A547E"; setAttr -k off ".v"; setAttr ".io" yes; setAttr ".cc" -type "nurbsCurve" @@ -2930,7 +3012,7 @@ createNode nurbsCurve -n "neck_C0_neck_crvShapeOrig" -p "neck_C0_neck_crv"; 0 0 0 ; createNode transform -n "shoulder_L0_root" -p "spine_C0_eff"; - rename -uid "D880E8E4-4B8D-E511-EDEE-478152521CE0"; + rename -uid "8420FDA3-4558-D555-216D-54A85866B763"; addAttr -ci true -sn "isGearGuide" -ln "isGearGuide" -dv 1 -min 0 -max 1 -at "bool"; addAttr -ci true -sn "comp_type" -ln "comp_type" -dt "string"; addAttr -ci true -sn "comp_name" -ln "comp_name" -dt "string"; @@ -2970,7 +3052,7 @@ createNode transform -n "shoulder_L0_root" -p "spine_C0_eff"; setAttr ".ikrefarray" -type "string" ""; setAttr ".parentJointIndex" -1; createNode nurbsCurve -n "shoulder_L0_rootShape" -p "shoulder_L0_root"; - rename -uid "398D3B69-491F-3F6C-19EC-EDA836CE294B"; + rename -uid "52097B2C-4DE3-D6FA-341D-80AF1FEE3FFB"; setAttr ".ihi" 0; setAttr -k off ".v"; setAttr ".ove" yes; @@ -2983,7 +3065,7 @@ createNode nurbsCurve -n "shoulder_L0_rootShape" -p "shoulder_L0_root"; -0.25 0 0 ; createNode nurbsCurve -n "shoulder_L0_root19Shape" -p "shoulder_L0_root"; - rename -uid "99BD728C-43A9-B332-16C8-0CA821CFA6F7"; + rename -uid "7FBD9A65-4F4E-1803-B4DD-45B065372063"; setAttr ".ihi" 0; setAttr -k off ".v"; setAttr ".ove" yes; @@ -2996,7 +3078,7 @@ createNode nurbsCurve -n "shoulder_L0_root19Shape" -p "shoulder_L0_root"; 0 -0.25 0 ; createNode nurbsCurve -n "shoulder_L0_root20Shape" -p "shoulder_L0_root"; - rename -uid "368A5487-488B-8C8C-66AB-D29381AF6BA5"; + rename -uid "74B2FAEF-4C3D-D229-7785-6DA2EB26390F"; setAttr ".ihi" 0; setAttr -k off ".v"; setAttr ".ove" yes; @@ -3009,7 +3091,7 @@ createNode nurbsCurve -n "shoulder_L0_root20Shape" -p "shoulder_L0_root"; 0 0 -0.25 ; createNode nurbsCurve -n "shoulder_L0_root21Shape" -p "shoulder_L0_root"; - rename -uid "EA0AC171-4240-1E59-0BD9-A588DAE50406"; + rename -uid "39BD3C6D-4CCF-37E6-B468-56ABB0BE0C1D"; setAttr ".ihi" 0; setAttr -k off ".v"; setAttr ".ove" yes; @@ -3036,7 +3118,7 @@ createNode nurbsCurve -n "shoulder_L0_root21Shape" -p "shoulder_L0_root"; -0.125 -0.125 -0.125 ; createNode transform -n "shoulder_L0_0_loc" -p "shoulder_L0_root"; - rename -uid "761A6FC6-4628-FFF6-5411-7897EB4E82B2"; + rename -uid "C0FE6F06-46C3-F998-E8CB-C692B9380BB4"; addAttr -ci true -sn "isGearGuide" -ln "isGearGuide" -dv 1 -min 0 -max 1 -at "bool"; setAttr -k off -cb on ".v"; setAttr ".t" -type "double3" 0.83252561455724661 -0.20882616370654938 0.20663608494886754 ; @@ -3052,7 +3134,7 @@ createNode transform -n "shoulder_L0_0_loc" -p "shoulder_L0_root"; setAttr -k off -cb on ".sy"; setAttr -k off -cb on ".sz"; createNode nurbsCurve -n "shoulder_L0_0_locShape" -p "shoulder_L0_0_loc"; - rename -uid "F0CDDC5C-414B-7EA6-1349-288D472DC977"; + rename -uid "F16F8FD9-4233-4BA7-293D-A7A18E134DCD"; setAttr ".ihi" 0; setAttr -k off ".v"; setAttr ".ove" yes; @@ -3065,7 +3147,7 @@ createNode nurbsCurve -n "shoulder_L0_0_locShape" -p "shoulder_L0_0_loc"; -0.25 0 0 ; createNode nurbsCurve -n "shoulder_L0_0_loc19Shape" -p "shoulder_L0_0_loc"; - rename -uid "F5C777C0-4DC1-7A4E-0705-0394B9B1FBAF"; + rename -uid "15A40232-4209-A1A6-379C-0BBE04B0B0B1"; setAttr ".ihi" 0; setAttr -k off ".v"; setAttr ".ove" yes; @@ -3078,7 +3160,7 @@ createNode nurbsCurve -n "shoulder_L0_0_loc19Shape" -p "shoulder_L0_0_loc"; 0 -0.25 0 ; createNode nurbsCurve -n "shoulder_L0_0_loc20Shape" -p "shoulder_L0_0_loc"; - rename -uid "33962063-4896-479A-4D3A-C99978F43C93"; + rename -uid "25A7DF8B-431E-C855-7D0F-EB8B2894F5DF"; setAttr ".ihi" 0; setAttr -k off ".v"; setAttr ".ove" yes; @@ -3091,7 +3173,7 @@ createNode nurbsCurve -n "shoulder_L0_0_loc20Shape" -p "shoulder_L0_0_loc"; 0 0 -0.25 ; createNode nurbsCurve -n "shoulder_L0_0_loc21Shape" -p "shoulder_L0_0_loc"; - rename -uid "7E823A09-4131-AD38-3797-C687AC9E337C"; + rename -uid "91F27373-4BF9-B944-FA5E-B38BCC30A8F9"; setAttr ".ihi" 0; setAttr -k off ".v"; setAttr ".ove" yes; @@ -3109,7 +3191,7 @@ createNode nurbsCurve -n "shoulder_L0_0_loc21Shape" -p "shoulder_L0_0_loc"; -0.1875 0 0 ; createNode nurbsCurve -n "shoulder_L0_0_loc21_0crvShape" -p "shoulder_L0_0_loc"; - rename -uid "EFDBE27E-4BA3-704C-BFE0-9E89469E5B91"; + rename -uid "291EFF06-4FEE-626B-C959-1EBBE6EB303F"; setAttr ".ihi" 0; setAttr -k off ".v"; setAttr ".ove" yes; @@ -3127,7 +3209,7 @@ createNode nurbsCurve -n "shoulder_L0_0_loc21_0crvShape" -p "shoulder_L0_0_loc"; -0.1875 0 0 ; createNode nurbsCurve -n "shoulder_L0_0_loc21_1crvShape" -p "shoulder_L0_0_loc"; - rename -uid "89FA6657-4C28-7E68-A7A9-0D8DA866FA83"; + rename -uid "9F17FF66-46DF-70BD-E34A-6F9CC89C2A10"; setAttr ".ihi" 0; setAttr -k off ".v"; setAttr ".ove" yes; @@ -3145,7 +3227,7 @@ createNode nurbsCurve -n "shoulder_L0_0_loc21_1crvShape" -p "shoulder_L0_0_loc"; 0 0 -0.1875 ; createNode transform -n "legFront_L0_root" -p "shoulder_L0_0_loc"; - rename -uid "3D36F3B2-42BC-76D0-A708-F099C9FF465A"; + rename -uid "CC228F5F-40C4-6101-250D-3B971CD7ED2E"; addAttr -ci true -sn "isGearGuide" -ln "isGearGuide" -dv 1 -min 0 -max 1 -at "bool"; addAttr -ci true -sn "comp_type" -ln "comp_type" -dt "string"; addAttr -ci true -sn "comp_name" -ln "comp_name" -dt "string"; @@ -3190,8 +3272,8 @@ createNode transform -n "legFront_L0_root" -p "shoulder_L0_0_loc"; setAttr ".ctlGrp" -type "string" ""; setAttr ".blend" 1; setAttr ".full3BonesIK" 1; - setAttr ".ikrefarray" -type "string" "local_C0_root,spine_C0_root"; - setAttr ".upvrefarray" -type "string" "local_C0_root,spine_C0_root"; + setAttr ".ikrefarray" -type "string" "local_C0_root,spine_C0_root,global_C0_root"; + setAttr ".upvrefarray" -type "string" "local_C0_root,spine_C0_root,global_C0_root"; setAttr ".maxstretch" 1.5; setAttr -k on ".ikSolver" 1; setAttr ".ikOri" yes; @@ -3202,7 +3284,7 @@ createNode transform -n "legFront_L0_root" -p "shoulder_L0_0_loc"; setAttr -k on ".sq_profile"; setAttr ".parentJointIndex" -1; createNode nurbsCurve -n "legFront_L0_rootShape" -p "legFront_L0_root"; - rename -uid "31E29A5D-49F9-2C3E-9222-20855B929577"; + rename -uid "CE447A0A-47D3-F72B-1450-82A8D29FE775"; setAttr ".ihi" 0; setAttr -k off ".v"; setAttr ".ove" yes; @@ -3215,7 +3297,7 @@ createNode nurbsCurve -n "legFront_L0_rootShape" -p "legFront_L0_root"; -0.25 0 0 ; createNode nurbsCurve -n "legFront_L0_root19Shape" -p "legFront_L0_root"; - rename -uid "DC250096-4092-0588-FE80-CCAA3B4ED571"; + rename -uid "A7D94E9B-4AE2-CEBA-3CA6-D5ACFB1482AA"; setAttr ".ihi" 0; setAttr -k off ".v"; setAttr ".ove" yes; @@ -3228,7 +3310,7 @@ createNode nurbsCurve -n "legFront_L0_root19Shape" -p "legFront_L0_root"; 0 -0.25 0 ; createNode nurbsCurve -n "legFront_L0_root20Shape" -p "legFront_L0_root"; - rename -uid "47BD2EB6-4D06-A18A-DA20-BFA6C57A4C15"; + rename -uid "BD4579F7-4EA3-B093-5E71-2DBFDB14C3DC"; setAttr ".ihi" 0; setAttr -k off ".v"; setAttr ".ove" yes; @@ -3241,7 +3323,7 @@ createNode nurbsCurve -n "legFront_L0_root20Shape" -p "legFront_L0_root"; 0 0 -0.25 ; createNode nurbsCurve -n "legFront_L0_root21Shape" -p "legFront_L0_root"; - rename -uid "D0B5EA86-4BE6-EE36-186C-EDAA73226356"; + rename -uid "6F751258-4802-F68C-3D85-E682A5B693F0"; setAttr ".ihi" 0; setAttr -k off ".v"; setAttr ".ove" yes; @@ -3268,7 +3350,7 @@ createNode nurbsCurve -n "legFront_L0_root21Shape" -p "legFront_L0_root"; -0.125 -0.125 -0.125 ; createNode transform -n "legFront_L0_knee" -p "legFront_L0_root"; - rename -uid "2AEFDCD7-4F90-C5D9-4300-6685595C6F0F"; + rename -uid "64486636-43B8-536A-968E-17980CFCA184"; addAttr -ci true -sn "isGearGuide" -ln "isGearGuide" -dv 1 -min 0 -max 1 -at "bool"; setAttr -k off -cb on ".v"; setAttr ".t" -type "double3" 3.1086244689504383e-015 -2.1240863021370493 -0.48633856256837404 ; @@ -3284,7 +3366,7 @@ createNode transform -n "legFront_L0_knee" -p "legFront_L0_root"; setAttr -k off -cb on ".sy"; setAttr -k off -cb on ".sz"; createNode nurbsCurve -n "legFront_L0_kneeShape" -p "legFront_L0_knee"; - rename -uid "5779439B-4B02-2BF6-D020-D2ABC2353172"; + rename -uid "28072697-4411-228E-63B6-B192E87CDBE2"; setAttr ".ihi" 0; setAttr -k off ".v"; setAttr ".ove" yes; @@ -3297,7 +3379,7 @@ createNode nurbsCurve -n "legFront_L0_kneeShape" -p "legFront_L0_knee"; -0.25 0 0 ; createNode nurbsCurve -n "legFront_L0_knee19Shape" -p "legFront_L0_knee"; - rename -uid "DA7889A2-419C-20BA-F87A-01AE9956BCD9"; + rename -uid "4CB73FB3-4579-F4EA-4B90-138DCBCF485B"; setAttr ".ihi" 0; setAttr -k off ".v"; setAttr ".ove" yes; @@ -3310,7 +3392,7 @@ createNode nurbsCurve -n "legFront_L0_knee19Shape" -p "legFront_L0_knee"; 0 -0.25 0 ; createNode nurbsCurve -n "legFront_L0_knee20Shape" -p "legFront_L0_knee"; - rename -uid "F34E82BB-4C72-D04C-2B21-CCAD28230B35"; + rename -uid "670837A9-4A50-6776-C7EA-BAA4DC41F1BB"; setAttr ".ihi" 0; setAttr -k off ".v"; setAttr ".ove" yes; @@ -3323,7 +3405,7 @@ createNode nurbsCurve -n "legFront_L0_knee20Shape" -p "legFront_L0_knee"; 0 0 -0.25 ; createNode nurbsCurve -n "legFront_L0_knee21Shape" -p "legFront_L0_knee"; - rename -uid "E0EA6959-49FD-25ED-61BE-09AE77B5716E"; + rename -uid "47813DCB-4FCC-E3BB-E0ED-839585928F2C"; setAttr ".ihi" 0; setAttr -k off ".v"; setAttr ".ove" yes; @@ -3341,7 +3423,7 @@ createNode nurbsCurve -n "legFront_L0_knee21Shape" -p "legFront_L0_knee"; -0.1875 0 0 ; createNode nurbsCurve -n "legFront_L0_knee21_0crvShape" -p "legFront_L0_knee"; - rename -uid "8C49884A-49A4-0FCF-51AD-2CAA5775C164"; + rename -uid "C0311EFA-4A20-5E90-DEDB-0991757179FE"; setAttr ".ihi" 0; setAttr -k off ".v"; setAttr ".ove" yes; @@ -3359,7 +3441,7 @@ createNode nurbsCurve -n "legFront_L0_knee21_0crvShape" -p "legFront_L0_knee"; -0.1875 0 0 ; createNode nurbsCurve -n "legFront_L0_knee21_1crvShape" -p "legFront_L0_knee"; - rename -uid "8A6467DE-4DE9-E828-249E-7692A4BB9678"; + rename -uid "D92E7E6F-4CF1-1512-30F6-67A6275B834C"; setAttr ".ihi" 0; setAttr -k off ".v"; setAttr ".ove" yes; @@ -3377,7 +3459,7 @@ createNode nurbsCurve -n "legFront_L0_knee21_1crvShape" -p "legFront_L0_knee"; 0 0 -0.1875 ; createNode transform -n "legFront_L0_ankle" -p "legFront_L0_knee"; - rename -uid "66225303-4062-7BB6-523C-FF81F6E32F9A"; + rename -uid "F2FD4BAD-431B-7479-1892-D6A52B49E068"; addAttr -ci true -sn "isGearGuide" -ln "isGearGuide" -dv 1 -min 0 -max 1 -at "bool"; setAttr -k off -cb on ".v"; setAttr ".t" -type "double3" 5.773159728050814e-015 -2.3651516407059168 0.073902270404610171 ; @@ -3393,7 +3475,7 @@ createNode transform -n "legFront_L0_ankle" -p "legFront_L0_knee"; setAttr -k off -cb on ".sy"; setAttr -k off -cb on ".sz"; createNode nurbsCurve -n "legFront_L0_ankleShape" -p "legFront_L0_ankle"; - rename -uid "0781A4AA-4ECE-6970-8B4B-D8B838BBFCBE"; + rename -uid "33475878-41E4-934D-F598-E38EA73D13DD"; setAttr ".ihi" 0; setAttr -k off ".v"; setAttr ".ove" yes; @@ -3406,7 +3488,7 @@ createNode nurbsCurve -n "legFront_L0_ankleShape" -p "legFront_L0_ankle"; -0.25 0 0 ; createNode nurbsCurve -n "legFront_L0_ankle19Shape" -p "legFront_L0_ankle"; - rename -uid "DAE891CF-4E45-F03D-68CC-46A1BB391014"; + rename -uid "5C0C670F-4BFA-0C0D-D2C7-D1B1A3558030"; setAttr ".ihi" 0; setAttr -k off ".v"; setAttr ".ove" yes; @@ -3419,7 +3501,7 @@ createNode nurbsCurve -n "legFront_L0_ankle19Shape" -p "legFront_L0_ankle"; 0 -0.25 0 ; createNode nurbsCurve -n "legFront_L0_ankle20Shape" -p "legFront_L0_ankle"; - rename -uid "90F9F0B2-4E7E-C4FD-BF90-BFA6F0005690"; + rename -uid "3F519FF1-41E1-EBEF-2463-D29885054B14"; setAttr ".ihi" 0; setAttr -k off ".v"; setAttr ".ove" yes; @@ -3432,7 +3514,7 @@ createNode nurbsCurve -n "legFront_L0_ankle20Shape" -p "legFront_L0_ankle"; 0 0 -0.25 ; createNode nurbsCurve -n "legFront_L0_ankle21Shape" -p "legFront_L0_ankle"; - rename -uid "0294A94F-4587-96FE-4D1C-AE999D8BECDF"; + rename -uid "BF60B122-4CBC-4BED-E441-50A563E91A2E"; setAttr ".ihi" 0; setAttr -k off ".v"; setAttr ".ove" yes; @@ -3450,7 +3532,7 @@ createNode nurbsCurve -n "legFront_L0_ankle21Shape" -p "legFront_L0_ankle"; -0.1875 0 0 ; createNode nurbsCurve -n "legFront_L0_ankle21_0crvShape" -p "legFront_L0_ankle"; - rename -uid "AEA0DED4-4D87-E3A0-4EF8-62AD51BEC5C8"; + rename -uid "552FE9AE-4585-D73C-A63C-8E8AEFBAF760"; setAttr ".ihi" 0; setAttr -k off ".v"; setAttr ".ove" yes; @@ -3468,7 +3550,7 @@ createNode nurbsCurve -n "legFront_L0_ankle21_0crvShape" -p "legFront_L0_ankle"; -0.1875 0 0 ; createNode nurbsCurve -n "legFront_L0_ankle21_1crvShape" -p "legFront_L0_ankle"; - rename -uid "C27A562B-4A3F-3810-29D7-628D5BDF163D"; + rename -uid "40AE7EED-47AA-FCC6-FA46-3F824B688537"; setAttr ".ihi" 0; setAttr -k off ".v"; setAttr ".ove" yes; @@ -3486,7 +3568,7 @@ createNode nurbsCurve -n "legFront_L0_ankle21_1crvShape" -p "legFront_L0_ankle"; 0 0 -0.1875 ; createNode transform -n "legFront_L0_foot" -p "legFront_L0_ankle"; - rename -uid "3D7E94E4-4BDC-A452-55A2-34B5D7599131"; + rename -uid "4458F3EF-4DF6-1ADA-7F5C-DCA7C751F319"; addAttr -ci true -sn "isGearGuide" -ln "isGearGuide" -dv 1 -min 0 -max 1 -at "bool"; setAttr -k off -cb on ".v"; setAttr ".t" -type "double3" 1.7763568394002505e-015 -1.1294425054275508 0.023148533894220336 ; @@ -3502,7 +3584,7 @@ createNode transform -n "legFront_L0_foot" -p "legFront_L0_ankle"; setAttr -k off -cb on ".sy"; setAttr -k off -cb on ".sz"; createNode nurbsCurve -n "legFront_L0_footShape" -p "legFront_L0_foot"; - rename -uid "DD382AA8-4101-E59C-1DFD-D8BE2C1FF1D0"; + rename -uid "8A6D0694-4035-8DF0-BD99-9ABA2A2E5CBF"; setAttr ".ihi" 0; setAttr -k off ".v"; setAttr ".ove" yes; @@ -3515,7 +3597,7 @@ createNode nurbsCurve -n "legFront_L0_footShape" -p "legFront_L0_foot"; -0.25 0 0 ; createNode nurbsCurve -n "legFront_L0_foot19Shape" -p "legFront_L0_foot"; - rename -uid "151DCA58-409A-22FA-9AFB-419F99C77AE1"; + rename -uid "E9DCA08A-4690-8B72-532D-619943C42406"; setAttr ".ihi" 0; setAttr -k off ".v"; setAttr ".ove" yes; @@ -3528,7 +3610,7 @@ createNode nurbsCurve -n "legFront_L0_foot19Shape" -p "legFront_L0_foot"; 0 -0.25 0 ; createNode nurbsCurve -n "legFront_L0_foot20Shape" -p "legFront_L0_foot"; - rename -uid "E2DC5392-4F23-34C4-6CAA-B4A673A3B16B"; + rename -uid "7FB7D4B7-44C1-42E8-95DF-86A21B4DD5CF"; setAttr ".ihi" 0; setAttr -k off ".v"; setAttr ".ove" yes; @@ -3541,7 +3623,7 @@ createNode nurbsCurve -n "legFront_L0_foot20Shape" -p "legFront_L0_foot"; 0 0 -0.25 ; createNode nurbsCurve -n "legFront_L0_foot21Shape" -p "legFront_L0_foot"; - rename -uid "6E8D036C-420F-4898-6CC1-778538F32906"; + rename -uid "BB03D7A5-48CC-C0FB-9573-558E26E34C41"; setAttr ".ihi" 0; setAttr -k off ".v"; setAttr ".ove" yes; @@ -3559,7 +3641,7 @@ createNode nurbsCurve -n "legFront_L0_foot21Shape" -p "legFront_L0_foot"; -0.1875 0 0 ; createNode nurbsCurve -n "legFront_L0_foot21_0crvShape" -p "legFront_L0_foot"; - rename -uid "71E05959-4D0F-B787-17D3-25886C09B3AD"; + rename -uid "1B0215A7-4C9A-8157-61B0-9083A112E09E"; setAttr ".ihi" 0; setAttr -k off ".v"; setAttr ".ove" yes; @@ -3577,7 +3659,7 @@ createNode nurbsCurve -n "legFront_L0_foot21_0crvShape" -p "legFront_L0_foot"; -0.1875 0 0 ; createNode nurbsCurve -n "legFront_L0_foot21_1crvShape" -p "legFront_L0_foot"; - rename -uid "C3392648-4A46-D0F8-1BB2-79ACA7DB4227"; + rename -uid "38D7CF39-4395-8E40-B8AD-25A5A7C3C7AC"; setAttr ".ihi" 0; setAttr -k off ".v"; setAttr ".ove" yes; @@ -3595,7 +3677,7 @@ createNode nurbsCurve -n "legFront_L0_foot21_1crvShape" -p "legFront_L0_foot"; 0 0 -0.1875 ; createNode transform -n "legFront_L0_eff" -p "legFront_L0_foot"; - rename -uid "FCE8A8EE-4F5C-928E-0B1D-45AC2A74ABE0"; + rename -uid "C76A7E89-4802-E2B4-2529-2F8C813E6191"; addAttr -ci true -sn "isGearGuide" -ln "isGearGuide" -dv 1 -min 0 -max 1 -at "bool"; setAttr -k off -cb on ".v"; setAttr ".t" -type "double3" 3.1086244689504383e-015 8.8817841970012523e-016 0.5965779785192078 ; @@ -3611,7 +3693,7 @@ createNode transform -n "legFront_L0_eff" -p "legFront_L0_foot"; setAttr -k off -cb on ".sy"; setAttr -k off -cb on ".sz"; createNode nurbsCurve -n "legFront_L0_effShape" -p "legFront_L0_eff"; - rename -uid "807C4461-4ED3-4E3C-2954-55BCBE707D2D"; + rename -uid "E1187598-4227-AD8B-8A1E-C38DEEBE18BF"; setAttr ".ihi" 0; setAttr -k off ".v"; setAttr ".ove" yes; @@ -3624,7 +3706,7 @@ createNode nurbsCurve -n "legFront_L0_effShape" -p "legFront_L0_eff"; -0.25 0 0 ; createNode nurbsCurve -n "legFront_L0_eff19Shape" -p "legFront_L0_eff"; - rename -uid "A310817E-4FDD-468A-4341-1CA2713C026B"; + rename -uid "2E05F7EB-4623-9715-73A8-2D9F20F83EEA"; setAttr ".ihi" 0; setAttr -k off ".v"; setAttr ".ove" yes; @@ -3637,7 +3719,7 @@ createNode nurbsCurve -n "legFront_L0_eff19Shape" -p "legFront_L0_eff"; 0 -0.25 0 ; createNode nurbsCurve -n "legFront_L0_eff20Shape" -p "legFront_L0_eff"; - rename -uid "D102970F-4873-0D93-CE6E-28A688C7CA3D"; + rename -uid "A3AC8B02-481F-CF78-F9E9-26914C74CF71"; setAttr ".ihi" 0; setAttr -k off ".v"; setAttr ".ove" yes; @@ -3650,7 +3732,7 @@ createNode nurbsCurve -n "legFront_L0_eff20Shape" -p "legFront_L0_eff"; 0 0 -0.25 ; createNode nurbsCurve -n "legFront_L0_eff21Shape" -p "legFront_L0_eff"; - rename -uid "3DD429D4-400D-B6C8-060D-C29C5F2706DF"; + rename -uid "0361AF3D-48A6-1625-21B6-AD93AD0269B4"; setAttr ".ihi" 0; setAttr -k off ".v"; setAttr ".ove" yes; @@ -3668,7 +3750,7 @@ createNode nurbsCurve -n "legFront_L0_eff21Shape" -p "legFront_L0_eff"; -0.1875 0 0 ; createNode nurbsCurve -n "legFront_L0_eff21_0crvShape" -p "legFront_L0_eff"; - rename -uid "D3D1129E-433E-1AE7-8CAB-AFB73D470E61"; + rename -uid "0DF34D6D-44C5-4CD2-8B86-88A16DE5C795"; setAttr ".ihi" 0; setAttr -k off ".v"; setAttr ".ove" yes; @@ -3686,7 +3768,7 @@ createNode nurbsCurve -n "legFront_L0_eff21_0crvShape" -p "legFront_L0_eff"; -0.1875 0 0 ; createNode nurbsCurve -n "legFront_L0_eff21_1crvShape" -p "legFront_L0_eff"; - rename -uid "A2AFF24A-4B7A-65D4-3F37-EFB6D3E0506B"; + rename -uid "33E31DA6-4591-FB2C-39D9-878A6323974D"; setAttr ".ihi" 0; setAttr -k off ".v"; setAttr ".ove" yes; @@ -3704,7 +3786,7 @@ createNode nurbsCurve -n "legFront_L0_eff21_1crvShape" -p "legFront_L0_eff"; 0 0 -0.1875 ; createNode transform -n "footFront_L0_root" -p "legFront_L0_foot"; - rename -uid "982CEBC3-4C1F-B446-C204-06AFA9AA209D"; + rename -uid "9D4E145A-4D24-6823-491E-12B5B98FCC8C"; addAttr -ci true -sn "isGearGuide" -ln "isGearGuide" -dv 1 -min 0 -max 1 -at "bool"; addAttr -ci true -sn "comp_type" -ln "comp_type" -dt "string"; addAttr -ci true -sn "comp_name" -ln "comp_name" -dt "string"; @@ -3738,7 +3820,7 @@ createNode transform -n "footFront_L0_root" -p "legFront_L0_foot"; setAttr ".useRollCtl" yes; setAttr ".parentJointIndex" -1; createNode nurbsCurve -n "footFront_L0_rootShape" -p "footFront_L0_root"; - rename -uid "20085FE0-4415-3DBD-91DA-C8916DB45564"; + rename -uid "8F269CA7-42E9-41D4-9B72-C98E963F3A92"; setAttr ".ihi" 0; setAttr -k off ".v"; setAttr ".ove" yes; @@ -3751,7 +3833,7 @@ createNode nurbsCurve -n "footFront_L0_rootShape" -p "footFront_L0_root"; -0.25 0 0 ; createNode nurbsCurve -n "footFront_L0_root19Shape" -p "footFront_L0_root"; - rename -uid "C6C75C14-4D24-EE27-9EAC-F9A7E7430ED2"; + rename -uid "1637B650-44F9-7B51-745E-919BFCEAFB10"; setAttr ".ihi" 0; setAttr -k off ".v"; setAttr ".ove" yes; @@ -3764,7 +3846,7 @@ createNode nurbsCurve -n "footFront_L0_root19Shape" -p "footFront_L0_root"; 0 -0.25 0 ; createNode nurbsCurve -n "footFront_L0_root20Shape" -p "footFront_L0_root"; - rename -uid "C51F64BF-4459-B92D-E333-C685A0DC6AD0"; + rename -uid "A2D560FE-4006-ACDC-97CF-E49BDFF2C789"; setAttr ".ihi" 0; setAttr -k off ".v"; setAttr ".ove" yes; @@ -3777,7 +3859,7 @@ createNode nurbsCurve -n "footFront_L0_root20Shape" -p "footFront_L0_root"; 0 0 -0.25 ; createNode nurbsCurve -n "footFront_L0_root21Shape" -p "footFront_L0_root"; - rename -uid "3BA64BFF-4602-9AC7-E43D-97B54E1364E8"; + rename -uid "B18AF3C8-440B-F5F8-E51B-B79E2C51D78E"; setAttr ".ihi" 0; setAttr -k off ".v"; setAttr ".ove" yes; @@ -3804,7 +3886,7 @@ createNode nurbsCurve -n "footFront_L0_root21Shape" -p "footFront_L0_root"; -0.125 -0.125 -0.125 ; createNode transform -n "footFront_L0_0_loc" -p "footFront_L0_root"; - rename -uid "16B8A87E-446B-C3EB-D907-8BAB425C96D5"; + rename -uid "9210DD27-45EE-98A3-A326-40887903E7EE"; addAttr -ci true -sn "isGearGuide" -ln "isGearGuide" -dv 1 -min 0 -max 1 -at "bool"; setAttr -k off -cb on ".v"; setAttr ".t" -type "double3" 5.3290705182007514e-015 8.8817841970012523e-016 0.75996190873517477 ; @@ -3820,7 +3902,7 @@ createNode transform -n "footFront_L0_0_loc" -p "footFront_L0_root"; setAttr -k off -cb on ".sy"; setAttr -k off -cb on ".sz"; createNode nurbsCurve -n "footFront_L0_0_locShape" -p "footFront_L0_0_loc"; - rename -uid "D67FAAF5-4131-8BCB-9121-39B5434422F4"; + rename -uid "456B646B-4AFF-D9C7-EC67-AEB63CE899BA"; setAttr ".ihi" 0; setAttr -k off ".v"; setAttr ".ove" yes; @@ -3833,7 +3915,7 @@ createNode nurbsCurve -n "footFront_L0_0_locShape" -p "footFront_L0_0_loc"; -0.25 0 0 ; createNode nurbsCurve -n "footFront_L0_0_loc19Shape" -p "footFront_L0_0_loc"; - rename -uid "D7F994A2-4D8F-877E-B668-C6912F0E5A32"; + rename -uid "A04CFEEF-46F3-EEB9-67E3-AFAD9D362F23"; setAttr ".ihi" 0; setAttr -k off ".v"; setAttr ".ove" yes; @@ -3846,7 +3928,7 @@ createNode nurbsCurve -n "footFront_L0_0_loc19Shape" -p "footFront_L0_0_loc"; 0 -0.25 0 ; createNode nurbsCurve -n "footFront_L0_0_loc20Shape" -p "footFront_L0_0_loc"; - rename -uid "C3F86907-4377-0672-2D70-B58DF53AF107"; + rename -uid "381B43D7-417B-D683-52B6-3F87CF510C92"; setAttr ".ihi" 0; setAttr -k off ".v"; setAttr ".ove" yes; @@ -3859,7 +3941,7 @@ createNode nurbsCurve -n "footFront_L0_0_loc20Shape" -p "footFront_L0_0_loc"; 0 0 -0.25 ; createNode nurbsCurve -n "footFront_L0_0_loc21Shape" -p "footFront_L0_0_loc"; - rename -uid "FCD1F3E0-4401-57C9-B213-E4A1BFCE5ACD"; + rename -uid "AFFCF9E0-4F26-D3D1-E712-9984DACD6C27"; setAttr ".ihi" 0; setAttr -k off ".v"; setAttr ".ove" yes; @@ -3877,7 +3959,7 @@ createNode nurbsCurve -n "footFront_L0_0_loc21Shape" -p "footFront_L0_0_loc"; -0.1875 0 0 ; createNode nurbsCurve -n "footFront_L0_0_loc21_0crvShape" -p "footFront_L0_0_loc"; - rename -uid "5D19FCC9-4AC0-4EC9-4967-FC98E112AFF3"; + rename -uid "B22C9AA4-4A1C-574F-DF9E-FDAFEA902F69"; setAttr ".ihi" 0; setAttr -k off ".v"; setAttr ".ove" yes; @@ -3895,7 +3977,7 @@ createNode nurbsCurve -n "footFront_L0_0_loc21_0crvShape" -p "footFront_L0_0_loc -0.1875 0 0 ; createNode nurbsCurve -n "footFront_L0_0_loc21_1crvShape" -p "footFront_L0_0_loc"; - rename -uid "17E5C158-4942-361C-C702-FC959A4BF51A"; + rename -uid "14D66390-4F70-36C0-A0BE-17A9C04828C5"; setAttr ".ihi" 0; setAttr -k off ".v"; setAttr ".ove" yes; @@ -3913,7 +3995,7 @@ createNode nurbsCurve -n "footFront_L0_0_loc21_1crvShape" -p "footFront_L0_0_loc 0 0 -0.1875 ; createNode transform -n "footFront_L0_1_loc" -p "footFront_L0_0_loc"; - rename -uid "F3B203DF-4C0E-1AD2-2881-86926C7A9219"; + rename -uid "BA0E83FB-46FF-1CED-7399-7591D2DF8DD1"; addAttr -ci true -sn "isGearGuide" -ln "isGearGuide" -dv 1 -min 0 -max 1 -at "bool"; setAttr -k off -cb on ".v"; setAttr ".t" -type "double3" -2.6645352591003757e-015 -0.31771180755405098 0.73937999249395148 ; @@ -3929,7 +4011,7 @@ createNode transform -n "footFront_L0_1_loc" -p "footFront_L0_0_loc"; setAttr -k off -cb on ".sy"; setAttr -k off -cb on ".sz"; createNode nurbsCurve -n "footFront_L0_1_locShape" -p "footFront_L0_1_loc"; - rename -uid "521D893C-4B72-613C-3FC7-92B86A62ABD0"; + rename -uid "17A0EFE5-47CE-E5C5-C2C0-BAAB0F655A49"; setAttr ".ihi" 0; setAttr -k off ".v"; setAttr ".ove" yes; @@ -3942,7 +4024,7 @@ createNode nurbsCurve -n "footFront_L0_1_locShape" -p "footFront_L0_1_loc"; -0.25 0 0 ; createNode nurbsCurve -n "footFront_L0_1_loc19Shape" -p "footFront_L0_1_loc"; - rename -uid "0689B6EC-42BE-ED3C-4CC2-9D885E14E797"; + rename -uid "EEB4A478-4F19-3123-9F86-DD9D2FF447D2"; setAttr ".ihi" 0; setAttr -k off ".v"; setAttr ".ove" yes; @@ -3955,7 +4037,7 @@ createNode nurbsCurve -n "footFront_L0_1_loc19Shape" -p "footFront_L0_1_loc"; 0 -0.25 0 ; createNode nurbsCurve -n "footFront_L0_1_loc20Shape" -p "footFront_L0_1_loc"; - rename -uid "CE522339-4F9D-02BD-F2E9-A787D8FC6563"; + rename -uid "352DA60F-420E-65D4-F2B3-8EB38C7BE9E1"; setAttr ".ihi" 0; setAttr -k off ".v"; setAttr ".ove" yes; @@ -3968,7 +4050,7 @@ createNode nurbsCurve -n "footFront_L0_1_loc20Shape" -p "footFront_L0_1_loc"; 0 0 -0.25 ; createNode nurbsCurve -n "footFront_L0_1_loc21Shape" -p "footFront_L0_1_loc"; - rename -uid "6291940A-4E78-F402-4A2F-54907B5E9318"; + rename -uid "1C1A984E-4BCB-FA47-88DC-81B03452DA43"; setAttr ".ihi" 0; setAttr -k off ".v"; setAttr ".ove" yes; @@ -3986,7 +4068,7 @@ createNode nurbsCurve -n "footFront_L0_1_loc21Shape" -p "footFront_L0_1_loc"; -0.1875 0 0 ; createNode nurbsCurve -n "footFront_L0_1_loc21_0crvShape" -p "footFront_L0_1_loc"; - rename -uid "41D78CF3-4BCE-4E99-7256-9DB238CAF84A"; + rename -uid "FB4B28D7-41E1-90A4-21D4-86AA249931E0"; setAttr ".ihi" 0; setAttr -k off ".v"; setAttr ".ove" yes; @@ -4004,7 +4086,7 @@ createNode nurbsCurve -n "footFront_L0_1_loc21_0crvShape" -p "footFront_L0_1_loc -0.1875 0 0 ; createNode nurbsCurve -n "footFront_L0_1_loc21_1crvShape" -p "footFront_L0_1_loc"; - rename -uid "BB65AFE8-48EB-BE50-342B-94A2A3987126"; + rename -uid "4404B694-464B-49C5-2614-3CB7EBD4838D"; setAttr ".ihi" 0; setAttr -k off ".v"; setAttr ".ove" yes; @@ -4022,18 +4104,18 @@ createNode nurbsCurve -n "footFront_L0_1_loc21_1crvShape" -p "footFront_L0_1_loc 0 0 -0.1875 ; createNode transform -n "footFront_L0_crv" -p "footFront_L0_root"; - rename -uid "CC103ACA-4103-D40F-17FA-14B2D3E48986"; + rename -uid "EF5F4824-443C-1D38-E405-328821181FB6"; setAttr ".ovdt" 1; setAttr ".ove" yes; setAttr ".t" -type "double3" -7.3687973355373595 -0.60300743522685729 -16.239037496288901 ; setAttr ".s" -type "double3" 7.9431701648148092 7.9431701648148092 7.943170164814811 ; createNode nurbsCurve -n "footFront_L0_crvShape" -p "footFront_L0_crv"; - rename -uid "0DDADE6A-4910-18DC-B027-31A5C77420AC"; + rename -uid "358B7DA4-4533-4ECD-221D-90999BEDBFE2"; setAttr -k off ".v"; setAttr -s 4 ".iog[0].og"; setAttr ".tw" yes; createNode nurbsCurve -n "footFront_L0_crvShapeOrig" -p "footFront_L0_crv"; - rename -uid "2A62288C-4337-AEF9-7B23-8F81F15735E6"; + rename -uid "2D3AC4B0-4306-DFD1-25DF-C19D4B6AE50A"; setAttr -k off ".v"; setAttr ".io" yes; setAttr ".cc" -type "nurbsCurve" @@ -4045,7 +4127,7 @@ createNode nurbsCurve -n "footFront_L0_crvShapeOrig" -p "footFront_L0_crv"; 0 0 0 ; createNode transform -n "footFront_L0_heel" -p "footFront_L0_root"; - rename -uid "5E670701-4911-A8CF-7D60-B5AD3944E001"; + rename -uid "AE4CE432-4983-53B9-B62E-25AA434724C1"; addAttr -ci true -sn "isGearGuide" -ln "isGearGuide" -dv 1 -min 0 -max 1 -at "bool"; setAttr -k off -cb on ".v"; setAttr ".t" -type "double3" 1.0658141036401503e-014 -0.3177118075540506 -0.067899908672082177 ; @@ -4061,7 +4143,7 @@ createNode transform -n "footFront_L0_heel" -p "footFront_L0_root"; setAttr -k off -cb on ".sy"; setAttr -k off -cb on ".sz"; createNode nurbsCurve -n "footFront_L0_heelShape" -p "footFront_L0_heel"; - rename -uid "D5D2AC95-41D0-788F-AEAF-26973AFFFECC"; + rename -uid "D8567762-44F3-5D45-09AF-47A8EB3FD6E1"; setAttr ".ihi" 0; setAttr -k off ".v"; setAttr ".ove" yes; @@ -4074,7 +4156,7 @@ createNode nurbsCurve -n "footFront_L0_heelShape" -p "footFront_L0_heel"; -0.25 0 0 ; createNode nurbsCurve -n "footFront_L0_heel19Shape" -p "footFront_L0_heel"; - rename -uid "267AC7A0-438D-FA86-149A-818ACB5ACEEE"; + rename -uid "3BFD7560-4814-F0A2-DA25-AD95FCA520C2"; setAttr ".ihi" 0; setAttr -k off ".v"; setAttr ".ove" yes; @@ -4087,7 +4169,7 @@ createNode nurbsCurve -n "footFront_L0_heel19Shape" -p "footFront_L0_heel"; 0 -0.25 0 ; createNode nurbsCurve -n "footFront_L0_heel20Shape" -p "footFront_L0_heel"; - rename -uid "B9DCCAB3-4E32-69F1-C050-EE8A4F7666C5"; + rename -uid "C13B7266-4F08-C786-14D6-45AF8619FA9E"; setAttr ".ihi" 0; setAttr -k off ".v"; setAttr ".ove" yes; @@ -4100,7 +4182,7 @@ createNode nurbsCurve -n "footFront_L0_heel20Shape" -p "footFront_L0_heel"; 0 0 -0.25 ; createNode nurbsCurve -n "footFront_L0_heel21Shape" -p "footFront_L0_heel"; - rename -uid "13663EA2-41A9-9329-EC51-3F8F2311CC05"; + rename -uid "D02C79BD-413C-BF61-22C0-F7897F49BE65"; setAttr ".ihi" 0; setAttr -k off ".v"; setAttr ".ove" yes; @@ -4118,7 +4200,7 @@ createNode nurbsCurve -n "footFront_L0_heel21Shape" -p "footFront_L0_heel"; -0.1875 0 0 ; createNode nurbsCurve -n "footFront_L0_heel21_0crvShape" -p "footFront_L0_heel"; - rename -uid "CEB316FF-49DD-A98D-CD65-04B9A5966038"; + rename -uid "36E6E4CB-4A09-EB58-DD65-0D9FA48AFAB6"; setAttr ".ihi" 0; setAttr -k off ".v"; setAttr ".ove" yes; @@ -4136,7 +4218,7 @@ createNode nurbsCurve -n "footFront_L0_heel21_0crvShape" -p "footFront_L0_heel"; -0.1875 0 0 ; createNode nurbsCurve -n "footFront_L0_heel21_1crvShape" -p "footFront_L0_heel"; - rename -uid "392D2864-4593-A36B-395E-988BFB229E8F"; + rename -uid "77CFBEFC-4D3B-B0F4-C732-FB93B15C356F"; setAttr ".ihi" 0; setAttr -k off ".v"; setAttr ".ove" yes; @@ -4154,7 +4236,7 @@ createNode nurbsCurve -n "footFront_L0_heel21_1crvShape" -p "footFront_L0_heel"; 0 0 -0.1875 ; createNode transform -n "footFront_L0_outpivot" -p "footFront_L0_root"; - rename -uid "BCC036DE-4D8B-A543-F9F5-E99CB158CEAC"; + rename -uid "84A7312E-4797-0AEA-544D-E7BBDD17061D"; addAttr -ci true -sn "isGearGuide" -ln "isGearGuide" -dv 1 -min 0 -max 1 -at "bool"; setAttr -k off -cb on ".v"; setAttr ".t" -type "double3" 1.1000376131120619 -0.31771180755404888 0.69157185350466577 ; @@ -4170,7 +4252,7 @@ createNode transform -n "footFront_L0_outpivot" -p "footFront_L0_root"; setAttr -k off -cb on ".sy"; setAttr -k off -cb on ".sz"; createNode nurbsCurve -n "footFront_L0_outpivotShape" -p "footFront_L0_outpivot"; - rename -uid "F12FF8D8-4273-1712-3A66-2EA272D692ED"; + rename -uid "A60062FF-4E30-D15E-9506-D5B2E7E7D1C5"; setAttr ".ihi" 0; setAttr -k off ".v"; setAttr ".ove" yes; @@ -4183,7 +4265,7 @@ createNode nurbsCurve -n "footFront_L0_outpivotShape" -p "footFront_L0_outpivot" -0.25 0 0 ; createNode nurbsCurve -n "footFront_L0_outpivot19Shape" -p "footFront_L0_outpivot"; - rename -uid "1274B9EE-4C9D-8A7B-F7C3-FDA32F6C6A97"; + rename -uid "DF5B1317-4EED-2BBD-6685-598F08519E66"; setAttr ".ihi" 0; setAttr -k off ".v"; setAttr ".ove" yes; @@ -4196,7 +4278,7 @@ createNode nurbsCurve -n "footFront_L0_outpivot19Shape" -p "footFront_L0_outpivo 0 -0.25 0 ; createNode nurbsCurve -n "footFront_L0_outpivot20Shape" -p "footFront_L0_outpivot"; - rename -uid "B870E74A-45DD-71F7-99A0-F5BF1C792657"; + rename -uid "37F5D3F4-46B4-8E34-5EAE-97ABD57A50C1"; setAttr ".ihi" 0; setAttr -k off ".v"; setAttr ".ove" yes; @@ -4209,7 +4291,7 @@ createNode nurbsCurve -n "footFront_L0_outpivot20Shape" -p "footFront_L0_outpivo 0 0 -0.25 ; createNode nurbsCurve -n "footFront_L0_outpivot21Shape" -p "footFront_L0_outpivot"; - rename -uid "A097E9CE-47C7-1E56-6FD2-C98EB7198193"; + rename -uid "B2AEC9E7-4BC9-7B09-A7BF-4087ADA6C83A"; setAttr ".ihi" 0; setAttr -k off ".v"; setAttr ".ove" yes; @@ -4227,7 +4309,7 @@ createNode nurbsCurve -n "footFront_L0_outpivot21Shape" -p "footFront_L0_outpivo -0.1875 0 0 ; createNode nurbsCurve -n "footFront_L0_outpivot21_0crvShape" -p "footFront_L0_outpivot"; - rename -uid "0726373A-45B6-186B-3154-ADB8DE13E64B"; + rename -uid "06E247BA-47AC-6387-F8B4-2C9FCE0A01B9"; setAttr ".ihi" 0; setAttr -k off ".v"; setAttr ".ove" yes; @@ -4245,7 +4327,7 @@ createNode nurbsCurve -n "footFront_L0_outpivot21_0crvShape" -p "footFront_L0_ou -0.1875 0 0 ; createNode nurbsCurve -n "footFront_L0_outpivot21_1crvShape" -p "footFront_L0_outpivot"; - rename -uid "91153EC6-4286-D4E4-C1AA-A6BFE6E542A4"; + rename -uid "93489D82-4DB0-2237-0572-63A222E20B03"; setAttr ".ihi" 0; setAttr -k off ".v"; setAttr ".ove" yes; @@ -4263,7 +4345,7 @@ createNode nurbsCurve -n "footFront_L0_outpivot21_1crvShape" -p "footFront_L0_ou 0 0 -0.1875 ; createNode transform -n "footFront_L0_inpivot" -p "footFront_L0_root"; - rename -uid "9D1A2D1C-462E-FD0E-27C9-2FBD4690D6D9"; + rename -uid "F87FBCD9-4D71-D9E5-16A6-75B7B2587D2A"; addAttr -ci true -sn "isGearGuide" -ln "isGearGuide" -dv 1 -min 0 -max 1 -at "bool"; setAttr -k off -cb on ".v"; setAttr ".t" -type "double3" -1.0162439288722931 -0.31771180755405115 0.86340011285664531 ; @@ -4279,7 +4361,7 @@ createNode transform -n "footFront_L0_inpivot" -p "footFront_L0_root"; setAttr -k off -cb on ".sy"; setAttr -k off -cb on ".sz"; createNode nurbsCurve -n "footFront_L0_inpivotShape" -p "footFront_L0_inpivot"; - rename -uid "A349E77E-449A-5EA0-8549-12A24CEB0020"; + rename -uid "7720973B-4EAD-8614-7365-AE98DFCD0214"; setAttr ".ihi" 0; setAttr -k off ".v"; setAttr ".ove" yes; @@ -4292,7 +4374,7 @@ createNode nurbsCurve -n "footFront_L0_inpivotShape" -p "footFront_L0_inpivot"; -0.25 0 0 ; createNode nurbsCurve -n "footFront_L0_inpivot19Shape" -p "footFront_L0_inpivot"; - rename -uid "052BE28E-4005-159D-4C00-19849909BFA6"; + rename -uid "CDA6567C-4116-7993-0277-CAAF46E3102C"; setAttr ".ihi" 0; setAttr -k off ".v"; setAttr ".ove" yes; @@ -4305,7 +4387,7 @@ createNode nurbsCurve -n "footFront_L0_inpivot19Shape" -p "footFront_L0_inpivot" 0 -0.25 0 ; createNode nurbsCurve -n "footFront_L0_inpivot20Shape" -p "footFront_L0_inpivot"; - rename -uid "7EB7D408-425C-959A-E4F0-789EEAE126C0"; + rename -uid "022E1DEB-45E0-0F63-983C-EFA1A6B6F2BA"; setAttr ".ihi" 0; setAttr -k off ".v"; setAttr ".ove" yes; @@ -4318,7 +4400,7 @@ createNode nurbsCurve -n "footFront_L0_inpivot20Shape" -p "footFront_L0_inpivot" 0 0 -0.25 ; createNode nurbsCurve -n "footFront_L0_inpivot21Shape" -p "footFront_L0_inpivot"; - rename -uid "0FF409A6-46BB-3A04-0563-CDA6CADB2D3E"; + rename -uid "9DA96D1F-4DAC-952F-3843-87A6AC30B1D9"; setAttr ".ihi" 0; setAttr -k off ".v"; setAttr ".ove" yes; @@ -4336,7 +4418,7 @@ createNode nurbsCurve -n "footFront_L0_inpivot21Shape" -p "footFront_L0_inpivot" -0.1875 0 0 ; createNode nurbsCurve -n "footFront_L0_inpivot21_0crvShape" -p "footFront_L0_inpivot"; - rename -uid "1110AE93-4906-D423-2091-4F9748697D1F"; + rename -uid "AFD54613-4EF9-77CB-CB31-609706F1E399"; setAttr ".ihi" 0; setAttr -k off ".v"; setAttr ".ove" yes; @@ -4354,7 +4436,7 @@ createNode nurbsCurve -n "footFront_L0_inpivot21_0crvShape" -p "footFront_L0_inp -0.1875 0 0 ; createNode nurbsCurve -n "footFront_L0_inpivot21_1crvShape" -p "footFront_L0_inpivot"; - rename -uid "D7D3ABBF-43DD-1C48-A2B8-70B80419AE10"; + rename -uid "CC2E6B9C-4D43-AD74-B24A-618669B60AE7"; setAttr ".ihi" 0; setAttr -k off ".v"; setAttr ".ove" yes; @@ -4372,18 +4454,18 @@ createNode nurbsCurve -n "footFront_L0_inpivot21_1crvShape" -p "footFront_L0_inp 0 0 -0.1875 ; createNode transform -n "footFront_L0_1" -p "footFront_L0_root"; - rename -uid "BFC73865-4A35-81FA-077B-E3AEEC399C3C"; + rename -uid "1E3B08E4-4E0B-43FD-6BA6-13B154AE833F"; setAttr ".ovdt" 1; setAttr ".ove" yes; setAttr ".t" -type "double3" -7.3687973355373595 -0.60300743522685729 -16.239037496288901 ; setAttr ".s" -type "double3" 7.9431701648148092 7.9431701648148092 7.943170164814811 ; createNode nurbsCurve -n "footFront_L0_Shape1" -p "footFront_L0_1"; - rename -uid "606288B4-4534-DC14-F56C-08AABBC72994"; + rename -uid "F5DFCF5C-4059-9A80-57AA-089A76E5452A"; setAttr -k off ".v"; setAttr -s 4 ".iog[0].og"; setAttr ".tw" yes; -createNode nurbsCurve -n "footFront_L0_Shape1Orig" -p "footFront_L0_1"; - rename -uid "07D0094F-4031-0033-5206-7095B067F158"; +createNode nurbsCurve -n "footFront_L0_Shape1Orig1" -p "footFront_L0_1"; + rename -uid "1E9197DE-429B-6EE4-9B0D-D8967957D749"; setAttr -k off ".v"; setAttr ".io" yes; setAttr ".cc" -type "nurbsCurve" @@ -4397,7 +4479,7 @@ createNode nurbsCurve -n "footFront_L0_Shape1Orig" -p "footFront_L0_1"; 0 0 0 ; createNode transform -n "frontLegUI_L0_root" -p "footFront_L0_root"; - rename -uid "E11EAD9A-4D98-3698-B460-2A926DB6A820"; + rename -uid "BC012ED8-42C7-71AD-59B3-93BD03A2FF01"; addAttr -ci true -sn "isGearGuide" -ln "isGearGuide" -dv 1 -min 0 -max 1 -at "bool"; addAttr -ci true -sn "comp_type" -ln "comp_type" -dt "string"; addAttr -ci true -sn "comp_name" -ln "comp_name" -dt "string"; @@ -4451,7 +4533,7 @@ createNode transform -n "frontLegUI_L0_root" -p "footFront_L0_root"; setAttr ".ctlSize" 0.5; setAttr ".parentJointIndex" -1; createNode nurbsCurve -n "frontLegUI_L0_rootShape" -p "frontLegUI_L0_root"; - rename -uid "5C479F60-4029-911F-5D88-3B8BF732F6B7"; + rename -uid "91E626F7-4935-694D-77AE-82817F786341"; setAttr ".ihi" 0; setAttr -k off ".v"; setAttr ".ove" yes; @@ -4464,7 +4546,7 @@ createNode nurbsCurve -n "frontLegUI_L0_rootShape" -p "frontLegUI_L0_root"; -0.25 0 0 ; createNode nurbsCurve -n "frontLegUI_L0_root19Shape" -p "frontLegUI_L0_root"; - rename -uid "6753FD21-47B1-AFF5-5384-10BDACA8920C"; + rename -uid "7D686BD4-45DD-DAC7-F876-A190D1C9C5D4"; setAttr ".ihi" 0; setAttr -k off ".v"; setAttr ".ove" yes; @@ -4477,7 +4559,7 @@ createNode nurbsCurve -n "frontLegUI_L0_root19Shape" -p "frontLegUI_L0_root"; 0 -0.25 0 ; createNode nurbsCurve -n "frontLegUI_L0_root20Shape" -p "frontLegUI_L0_root"; - rename -uid "6D8D8E4E-4588-3E0B-2B64-02B9AFC59C7D"; + rename -uid "BE28A04B-4C87-FA0D-6597-0986EC91BBDB"; setAttr ".ihi" 0; setAttr -k off ".v"; setAttr ".ove" yes; @@ -4490,7 +4572,7 @@ createNode nurbsCurve -n "frontLegUI_L0_root20Shape" -p "frontLegUI_L0_root"; 0 0 -0.25 ; createNode nurbsCurve -n "frontLegUI_L0_root21Shape" -p "frontLegUI_L0_root"; - rename -uid "F8862D03-48FA-33E8-FFE6-92AA4EB84CED"; + rename -uid "07620351-4575-A16C-3DA8-4F96F8509839"; setAttr ".ihi" 0; setAttr -k off ".v"; setAttr ".ove" yes; @@ -4517,7 +4599,7 @@ createNode nurbsCurve -n "frontLegUI_L0_root21Shape" -p "frontLegUI_L0_root"; -0.125 -0.125 -0.125 ; createNode transform -n "frontLegUI_L0_sizeRef" -p "frontLegUI_L0_root"; - rename -uid "9233C775-4FFB-0E39-EB70-329D696176B4"; + rename -uid "89486ECC-4B57-2937-6515-E5914CCA7811"; addAttr -ci true -sn "isGearGuide" -ln "isGearGuide" -dv 1 -min 0 -max 1 -at "bool"; setAttr -k off -cb on ".v"; setAttr ".t" -type "double3" 8.8817841970012523e-016 3.3306690738754696e-016 0.99999999999999911 ; @@ -4533,18 +4615,18 @@ createNode transform -n "frontLegUI_L0_sizeRef" -p "frontLegUI_L0_root"; setAttr -k off -cb on ".sy"; setAttr -k off -cb on ".sz"; createNode transform -n "legFront_L0_crv1" -p "legFront_L0_root"; - rename -uid "1B4C520E-40B6-7470-07D4-8AA377906E05"; + rename -uid "70EA73F9-4D0D-4053-00D0-758A8E8FF1A5"; setAttr ".ovdt" 1; setAttr ".ove" yes; setAttr ".t" -type "double3" -2.3211356138011676 -5.8086248814742651 -5.5045062328919334 ; setAttr ".s" -type "double3" 2.5020602842634889 2.5020602842634863 2.5020602842634885 ; createNode nurbsCurve -n "legFront_L0_crvShape1" -p "legFront_L0_crv1"; - rename -uid "84EADDA7-4001-5CC7-149E-3EB2E4F3B3A2"; + rename -uid "8A05E1F7-444A-A937-CAC2-07BC39555D1E"; setAttr -k off ".v"; setAttr -s 4 ".iog[0].og"; setAttr ".tw" yes; -createNode nurbsCurve -n "legFront_L0_crvShape1Orig" -p "legFront_L0_crv1"; - rename -uid "E29C8A67-426E-205A-FE52-60ACDC14487A"; +createNode nurbsCurve -n "legFront_L0_crvShape1Orig1" -p "legFront_L0_crv1"; + rename -uid "DBE61757-4E29-5E59-9A96-DD943B992074"; setAttr -k off ".v"; setAttr ".io" yes; setAttr ".cc" -type "nurbsCurve" @@ -4558,7 +4640,7 @@ createNode nurbsCurve -n "legFront_L0_crvShape1Orig" -p "legFront_L0_crv1"; 0 0 0 ; createNode transform -n "shoulder_L0_blade" -p "shoulder_L0_root"; - rename -uid "B5B4DE8C-4FE0-B228-4AE8-97B2577E2BB6"; + rename -uid "7309DBD4-4628-617F-D9C8-AEAC92D917E5"; addAttr -ci true -k true -sn "bladeRollOffset" -ln "bladeRollOffset" -at "float"; setAttr -l on -k off -cb on ".v"; setAttr -k off -cb on ".tx"; @@ -4574,7 +4656,7 @@ createNode transform -n "shoulder_L0_blade" -p "shoulder_L0_root"; setAttr -l on -k off -cb on ".sz"; setAttr -k on ".bladeRollOffset"; createNode nurbsCurve -n "shoulder_L0_bladeShape" -p "shoulder_L0_blade"; - rename -uid "DDD8DCB0-46AC-A658-4DD1-D9877503DFAE"; + rename -uid "6B71284B-41CA-6D45-7D51-E1A07C657215"; setAttr ".ihi" 0; setAttr -k off ".v"; setAttr ".ove" yes; @@ -4589,7 +4671,7 @@ createNode nurbsCurve -n "shoulder_L0_bladeShape" -p "shoulder_L0_blade"; 0 0 0 ; createNode aimConstraint -n "shoulder_L0_blade_aimConstraint7" -p "shoulder_L0_blade"; - rename -uid "C46CAB94-46D8-3393-8351-969A47EA827E"; + rename -uid "4EBA0134-428C-1BB2-3962-0387428CF806"; addAttr -dcb 0 -ci true -sn "w0" -ln "shoulder_L0_0_locW0" -dv 1 -at "double"; setAttr -k on ".nds"; setAttr -k off ".v"; @@ -4607,7 +4689,7 @@ createNode aimConstraint -n "shoulder_L0_blade_aimConstraint7" -p "shoulder_L0_b setAttr ".rsrr" -type "double3" 3.359975138206766 -13.536129435773097 -14.081236533000178 ; setAttr -k on ".w0"; createNode pointConstraint -n "shoulder_L0_blade_pointConstraint7" -p "shoulder_L0_blade"; - rename -uid "5DC01363-4CA9-C806-A317-E899C3502B64"; + rename -uid "B87C2D0B-4460-E342-E8FE-9DBC44DD8754"; addAttr -dcb 0 -ci true -k true -sn "w0" -ln "shoulder_L0_rootW0" -dv 1 -min 0 -at "double"; setAttr -k on ".nds"; @@ -4624,18 +4706,18 @@ createNode pointConstraint -n "shoulder_L0_blade_pointConstraint7" -p "shoulder_ setAttr ".erp" yes; setAttr -k on ".w0"; createNode transform -n "shoulder_L0_crv" -p "shoulder_L0_root"; - rename -uid "173997AE-47AF-C969-8CB9-7A9A8B831B63"; + rename -uid "F9FEF86C-4525-95FC-1F4C-908FBA067161"; setAttr ".ovdt" 1; setAttr ".ove" yes; setAttr ".t" -type "double3" -0.09516410914756232 -2.5303629060493171 -1.9933533667490368 ; setAttr ".s" -type "double3" 1.0000000000000007 1 1 ; createNode nurbsCurve -n "shoulder_L0_crvShape" -p "shoulder_L0_crv"; - rename -uid "B2338669-4C2F-2E37-E6D5-54B6153F5A19"; + rename -uid "A4822224-4231-A281-2253-05B156623E52"; setAttr -k off ".v"; setAttr -s 4 ".iog[0].og"; setAttr ".tw" yes; createNode nurbsCurve -n "shoulder_L0_crvShapeOrig" -p "shoulder_L0_crv"; - rename -uid "9012A895-40B4-7C0B-CAEC-60BE454F644A"; + rename -uid "F145FBA5-45D8-126E-C67C-0199A1077ED0"; setAttr -k off ".v"; setAttr ".io" yes; setAttr ".cc" -type "nurbsCurve" @@ -4646,7 +4728,7 @@ createNode nurbsCurve -n "shoulder_L0_crvShapeOrig" -p "shoulder_L0_crv"; 0 0 0 ; createNode transform -n "shoulder_R0_root" -p "spine_C0_eff"; - rename -uid "E01C0505-4E01-50DA-5B1B-1D9F9804BEF4"; + rename -uid "511AA17D-4A20-B043-FE5D-278EFDEAC979"; addAttr -ci true -sn "isGearGuide" -ln "isGearGuide" -dv 1 -min 0 -max 1 -at "bool"; addAttr -ci true -sn "comp_type" -ln "comp_type" -dt "string"; addAttr -ci true -sn "comp_name" -ln "comp_name" -dt "string"; @@ -4662,11 +4744,11 @@ createNode transform -n "shoulder_R0_root" -p "spine_C0_eff"; addAttr -ci true -sn "useIndex" -ln "useIndex" -min 0 -max 1 -at "bool"; addAttr -ci true -sn "parentJointIndex" -ln "parentJointIndex" -at "long"; setAttr -k off -cb on ".v"; - setAttr ".t" -type "double3" -0.23232496368006927 0.19745119313991832 0.20082401790608281 ; + setAttr ".t" -type "double3" -0.23232496368006927 0.19745119313991832 0.20082401790608298 ; setAttr -k off -cb on ".tx"; setAttr -k off -cb on ".ty"; setAttr -k off -cb on ".tz"; - setAttr ".r" -type "double3" 90 -89.999999999999972 0 ; + setAttr ".r" -type "double3" 89.999999999999986 -89.999999999999957 0 ; setAttr -k off -cb on ".rx"; setAttr -k off -cb on ".ry"; setAttr -k off -cb on ".rz"; @@ -4686,7 +4768,7 @@ createNode transform -n "shoulder_R0_root" -p "spine_C0_eff"; setAttr ".ikrefarray" -type "string" ""; setAttr ".parentJointIndex" -1; createNode nurbsCurve -n "shoulder_R0_rootShape" -p "shoulder_R0_root"; - rename -uid "7E62FAFE-4803-C52C-2A62-4C90FC14CE1F"; + rename -uid "B1FAB1D7-44D3-57D3-F5AF-CE8B9579854C"; setAttr ".ihi" 0; setAttr -k off ".v"; setAttr ".ove" yes; @@ -4698,8 +4780,8 @@ createNode nurbsCurve -n "shoulder_R0_rootShape" -p "shoulder_R0_root"; 0.25 0 0 -0.25 0 0 ; -createNode nurbsCurve -n "shoulder_R0_root10Shape" -p "shoulder_R0_root"; - rename -uid "C90ADE2A-455D-D943-AC0C-6088A5865435"; +createNode nurbsCurve -n "shoulder_R0_root1Shape" -p "shoulder_R0_root"; + rename -uid "8B604321-43F9-D551-8ACB-93BFD7BFF219"; setAttr ".ihi" 0; setAttr -k off ".v"; setAttr ".ove" yes; @@ -4711,8 +4793,8 @@ createNode nurbsCurve -n "shoulder_R0_root10Shape" -p "shoulder_R0_root"; 0 0.25 0 0 -0.25 0 ; -createNode nurbsCurve -n "shoulder_R0_root11Shape" -p "shoulder_R0_root"; - rename -uid "4B07530C-4BEB-52F6-5953-3C85D24C1FD5"; +createNode nurbsCurve -n "shoulder_R0_root2Shape" -p "shoulder_R0_root"; + rename -uid "D393A3AE-42E0-3647-C624-1882006EA824"; setAttr ".ihi" 0; setAttr -k off ".v"; setAttr ".ove" yes; @@ -4724,8 +4806,8 @@ createNode nurbsCurve -n "shoulder_R0_root11Shape" -p "shoulder_R0_root"; 0 0 0.25 0 0 -0.25 ; -createNode nurbsCurve -n "shoulder_R0_root12Shape" -p "shoulder_R0_root"; - rename -uid "9C013EA6-4BCF-6567-72C7-FF895705133A"; +createNode nurbsCurve -n "shoulder_R0_root3Shape" -p "shoulder_R0_root"; + rename -uid "62835E66-4515-4CAF-8B16-BC94F7317D8A"; setAttr ".ihi" 0; setAttr -k off ".v"; setAttr ".ove" yes; @@ -4752,10 +4834,10 @@ createNode nurbsCurve -n "shoulder_R0_root12Shape" -p "shoulder_R0_root"; -0.125 -0.125 -0.125 ; createNode transform -n "shoulder_R0_0_loc" -p "shoulder_R0_root"; - rename -uid "6B61DFC4-4C06-8E57-5AEE-E1BC26621681"; + rename -uid "CCD12C3E-42CA-E466-BE4C-99A339ECE785"; addAttr -ci true -sn "isGearGuide" -ln "isGearGuide" -dv 1 -min 0 -max 1 -at "bool"; setAttr -k off -cb on ".v"; - setAttr ".t" -type "double3" 0.83252561455724616 -0.20882616370655338 0.2066360849488682 ; + setAttr ".t" -type "double3" 0.83252561455724627 -0.20882616370655027 0.2066360849488682 ; setAttr -k off -cb on ".tx"; setAttr -k off -cb on ".ty"; setAttr -k off -cb on ".tz"; @@ -4763,12 +4845,12 @@ createNode transform -n "shoulder_R0_0_loc" -p "shoulder_R0_root"; setAttr -k off -cb on ".ry"; setAttr -k off -cb on ".rz"; setAttr -cb on ".ro"; - setAttr ".s" -type "double3" 1.0000000000000007 0.99999999999999956 1 ; + setAttr ".s" -type "double3" 1.0000000000000007 0.99999999999999989 1 ; setAttr -k off -cb on ".sx"; setAttr -k off -cb on ".sy"; setAttr -k off -cb on ".sz"; createNode nurbsCurve -n "shoulder_R0_0_locShape" -p "shoulder_R0_0_loc"; - rename -uid "D8092B6B-472A-5F52-B94F-919E5DDFD4FD"; + rename -uid "32C6CF4E-4FD1-67FD-5EFB-39A5116D0FE5"; setAttr ".ihi" 0; setAttr -k off ".v"; setAttr ".ove" yes; @@ -4780,8 +4862,8 @@ createNode nurbsCurve -n "shoulder_R0_0_locShape" -p "shoulder_R0_0_loc"; 0.25 0 0 -0.25 0 0 ; -createNode nurbsCurve -n "shoulder_R0_0_loc10Shape" -p "shoulder_R0_0_loc"; - rename -uid "DD789668-4EA1-2786-A9E6-5AA7CBCBD6F5"; +createNode nurbsCurve -n "shoulder_R0_0_loc1Shape" -p "shoulder_R0_0_loc"; + rename -uid "B9AF32FB-4B3C-4D1F-0B4F-5E8ED72C7B39"; setAttr ".ihi" 0; setAttr -k off ".v"; setAttr ".ove" yes; @@ -4793,8 +4875,8 @@ createNode nurbsCurve -n "shoulder_R0_0_loc10Shape" -p "shoulder_R0_0_loc"; 0 0.25 0 0 -0.25 0 ; -createNode nurbsCurve -n "shoulder_R0_0_loc11Shape" -p "shoulder_R0_0_loc"; - rename -uid "A366567C-424F-75DA-A56A-C1A1AA986CAE"; +createNode nurbsCurve -n "shoulder_R0_0_loc2Shape" -p "shoulder_R0_0_loc"; + rename -uid "6A314E6E-43C3-D387-D313-E685A8EB11EC"; setAttr ".ihi" 0; setAttr -k off ".v"; setAttr ".ove" yes; @@ -4806,8 +4888,8 @@ createNode nurbsCurve -n "shoulder_R0_0_loc11Shape" -p "shoulder_R0_0_loc"; 0 0 0.25 0 0 -0.25 ; -createNode nurbsCurve -n "shoulder_R0_0_loc12Shape" -p "shoulder_R0_0_loc"; - rename -uid "E47BCEE0-40D2-DDFD-55CC-3DA2EAD312B0"; +createNode nurbsCurve -n "shoulder_R0_0_loc3Shape" -p "shoulder_R0_0_loc"; + rename -uid "378327BD-4B81-C220-BC94-9C990F331D14"; setAttr ".ihi" 0; setAttr -k off ".v"; setAttr ".ove" yes; @@ -4824,8 +4906,8 @@ createNode nurbsCurve -n "shoulder_R0_0_loc12Shape" -p "shoulder_R0_0_loc"; 0 -0.1875 0 -0.1875 0 0 ; -createNode nurbsCurve -n "shoulder_R0_0_loc12_0crvShape" -p "shoulder_R0_0_loc"; - rename -uid "D4538F47-4941-E754-2946-88B0C498B40C"; +createNode nurbsCurve -n "shoulder_R0_0_loc3_0crvShape" -p "shoulder_R0_0_loc"; + rename -uid "0E26F936-4766-5449-3C7D-FDAD797B3135"; setAttr ".ihi" 0; setAttr -k off ".v"; setAttr ".ove" yes; @@ -4842,8 +4924,8 @@ createNode nurbsCurve -n "shoulder_R0_0_loc12_0crvShape" -p "shoulder_R0_0_loc"; 0 0 -0.1875 -0.1875 0 0 ; -createNode nurbsCurve -n "shoulder_R0_0_loc12_1crvShape" -p "shoulder_R0_0_loc"; - rename -uid "C22C1501-48DE-6248-ED17-DE87732A31D7"; +createNode nurbsCurve -n "shoulder_R0_0_loc3_1crvShape" -p "shoulder_R0_0_loc"; + rename -uid "55E36521-4803-7878-DDE6-CCBE04222BE4"; setAttr ".ihi" 0; setAttr -k off ".v"; setAttr ".ove" yes; @@ -4861,7 +4943,7 @@ createNode nurbsCurve -n "shoulder_R0_0_loc12_1crvShape" -p "shoulder_R0_0_loc"; 0 0 -0.1875 ; createNode transform -n "legFront_R0_root" -p "shoulder_R0_0_loc"; - rename -uid "FFFEAEA1-44AF-FB87-3A7A-D89351BF2B97"; + rename -uid "E091009A-4F49-FA69-40E0-5EAA584ED7DE"; addAttr -ci true -sn "isGearGuide" -ln "isGearGuide" -dv 1 -min 0 -max 1 -at "bool"; addAttr -ci true -sn "comp_type" -ln "comp_type" -dt "string"; addAttr -ci true -sn "comp_name" -ln "comp_name" -dt "string"; @@ -4886,7 +4968,7 @@ createNode transform -n "legFront_R0_root" -p "shoulder_R0_0_loc"; addAttr -ci true -sn "useIndex" -ln "useIndex" -min 0 -max 1 -at "bool"; addAttr -ci true -sn "parentJointIndex" -ln "parentJointIndex" -at "long"; setAttr -k off -cb on ".v"; - setAttr ".t" -type "double3" -7.7715611723760958e-016 -4.4408920985006262e-016 -8.8817841970012523e-016 ; + setAttr ".t" -type "double3" -9.9920072216264089e-016 -3.1086244689504383e-015 -4.4408920985006262e-016 ; setAttr -k off -cb on ".tx"; setAttr -k off -cb on ".ty"; setAttr -k off -cb on ".tz"; @@ -4894,7 +4976,7 @@ createNode transform -n "legFront_R0_root" -p "shoulder_R0_0_loc"; setAttr -k off -cb on ".ry"; setAttr -k off -cb on ".rz"; setAttr -cb on ".ro"; - setAttr ".s" -type "double3" 0.39967062595950276 0.39967062595950326 0.39967062595950281 ; + setAttr ".s" -type "double3" 0.39967062595950276 0.39967062595950315 0.39967062595950281 ; setAttr -k off -cb on ".sx"; setAttr -k off -cb on ".sy"; setAttr -k off -cb on ".sz"; @@ -4906,8 +4988,8 @@ createNode transform -n "legFront_R0_root" -p "shoulder_R0_0_loc"; setAttr ".ctlGrp" -type "string" ""; setAttr ".blend" 1; setAttr ".full3BonesIK" 1; - setAttr ".ikrefarray" -type "string" "local_C0_root,spine_C0_root"; - setAttr ".upvrefarray" -type "string" "local_C0_root,spine_C0_root"; + setAttr ".ikrefarray" -type "string" "local_C0_root,spine_C0_root,global_C0_root"; + setAttr ".upvrefarray" -type "string" "local_C0_root,spine_C0_root,global_C0_root"; setAttr ".maxstretch" 1.5; setAttr -k on ".ikSolver" 1; setAttr ".ikOri" yes; @@ -4918,7 +5000,7 @@ createNode transform -n "legFront_R0_root" -p "shoulder_R0_0_loc"; setAttr -k on ".sq_profile"; setAttr ".parentJointIndex" -1; createNode nurbsCurve -n "legFront_R0_rootShape" -p "legFront_R0_root"; - rename -uid "07655FE8-4BB5-3BE3-777D-C59960232BA9"; + rename -uid "E8421493-4322-8527-486D-7183C1D4D003"; setAttr ".ihi" 0; setAttr -k off ".v"; setAttr ".ove" yes; @@ -4930,8 +5012,8 @@ createNode nurbsCurve -n "legFront_R0_rootShape" -p "legFront_R0_root"; 0.25 0 0 -0.25 0 0 ; -createNode nurbsCurve -n "legFront_R0_root10Shape" -p "legFront_R0_root"; - rename -uid "88B4B2E8-4F24-DA5B-9A32-2881BB14F10F"; +createNode nurbsCurve -n "legFront_R0_root1Shape" -p "legFront_R0_root"; + rename -uid "4D5C9579-4A1A-26BF-883A-DFB9DAAFA635"; setAttr ".ihi" 0; setAttr -k off ".v"; setAttr ".ove" yes; @@ -4943,8 +5025,8 @@ createNode nurbsCurve -n "legFront_R0_root10Shape" -p "legFront_R0_root"; 0 0.25 0 0 -0.25 0 ; -createNode nurbsCurve -n "legFront_R0_root11Shape" -p "legFront_R0_root"; - rename -uid "ECD3CEFD-49C7-9AA5-192E-8BB8D24BB91A"; +createNode nurbsCurve -n "legFront_R0_root2Shape" -p "legFront_R0_root"; + rename -uid "03D7C974-4BED-E63C-84A5-0C89312740F4"; setAttr ".ihi" 0; setAttr -k off ".v"; setAttr ".ove" yes; @@ -4956,8 +5038,8 @@ createNode nurbsCurve -n "legFront_R0_root11Shape" -p "legFront_R0_root"; 0 0 0.25 0 0 -0.25 ; -createNode nurbsCurve -n "legFront_R0_root12Shape" -p "legFront_R0_root"; - rename -uid "79FD85C4-4300-8564-2B2E-56B8874049D1"; +createNode nurbsCurve -n "legFront_R0_root3Shape" -p "legFront_R0_root"; + rename -uid "36020B22-40E8-6DBD-90A8-D48889328351"; setAttr ".ihi" 0; setAttr -k off ".v"; setAttr ".ove" yes; @@ -4984,10 +5066,10 @@ createNode nurbsCurve -n "legFront_R0_root12Shape" -p "legFront_R0_root"; -0.125 -0.125 -0.125 ; createNode transform -n "legFront_R0_knee" -p "legFront_R0_root"; - rename -uid "C89A64C7-48D5-3BAE-808F-1AADF7F80562"; + rename -uid "32AFCE0F-4173-8021-E5B4-2B87AB6B0A41"; addAttr -ci true -sn "isGearGuide" -ln "isGearGuide" -dv 1 -min 0 -max 1 -at "bool"; setAttr -k off -cb on ".v"; - setAttr ".t" -type "double3" 1.7763568394002505e-015 -2.124086302137048 -0.48633856256837049 ; + setAttr ".t" -type "double3" 1.3322676295501878e-015 -2.1240863021370489 -0.48633856256837316 ; setAttr -l on -k off -cb on ".tx"; setAttr -k off -cb on ".ty"; setAttr -k off -cb on ".tz"; @@ -4995,12 +5077,12 @@ createNode transform -n "legFront_R0_knee" -p "legFront_R0_root"; setAttr -l on -k off -cb on ".ry"; setAttr -l on -k off -cb on ".rz"; setAttr -cb on ".ro"; - setAttr ".s" -type "double3" 1.0000000000000002 1 1.0000000000000007 ; + setAttr ".s" -type "double3" 1.0000000000000002 0.99999999999999956 1.0000000000000007 ; setAttr -k off -cb on ".sx"; setAttr -k off -cb on ".sy"; setAttr -k off -cb on ".sz"; createNode nurbsCurve -n "legFront_R0_kneeShape" -p "legFront_R0_knee"; - rename -uid "7E494F76-49F0-0FF7-280C-3BBCCD709EE5"; + rename -uid "40686C9E-4CDD-9EB5-950C-43AC1EEF59E4"; setAttr ".ihi" 0; setAttr -k off ".v"; setAttr ".ove" yes; @@ -5012,8 +5094,8 @@ createNode nurbsCurve -n "legFront_R0_kneeShape" -p "legFront_R0_knee"; 0.25 0 0 -0.25 0 0 ; -createNode nurbsCurve -n "legFront_R0_knee10Shape" -p "legFront_R0_knee"; - rename -uid "CFDDEDF3-4E70-C762-DBBC-5D88EBB903EC"; +createNode nurbsCurve -n "legFront_R0_knee1Shape" -p "legFront_R0_knee"; + rename -uid "E1C22D70-45DB-9874-7AD3-ACB4A158F841"; setAttr ".ihi" 0; setAttr -k off ".v"; setAttr ".ove" yes; @@ -5025,8 +5107,8 @@ createNode nurbsCurve -n "legFront_R0_knee10Shape" -p "legFront_R0_knee"; 0 0.25 0 0 -0.25 0 ; -createNode nurbsCurve -n "legFront_R0_knee11Shape" -p "legFront_R0_knee"; - rename -uid "634FA4BE-4D51-8663-E979-709D85CF833F"; +createNode nurbsCurve -n "legFront_R0_knee2Shape" -p "legFront_R0_knee"; + rename -uid "20F1EDA7-4284-254A-1CEA-A5ADE7B3977C"; setAttr ".ihi" 0; setAttr -k off ".v"; setAttr ".ove" yes; @@ -5038,8 +5120,8 @@ createNode nurbsCurve -n "legFront_R0_knee11Shape" -p "legFront_R0_knee"; 0 0 0.25 0 0 -0.25 ; -createNode nurbsCurve -n "legFront_R0_knee12Shape" -p "legFront_R0_knee"; - rename -uid "26078915-4EB2-7ED3-420E-C89555584938"; +createNode nurbsCurve -n "legFront_R0_knee3Shape" -p "legFront_R0_knee"; + rename -uid "2DBAF0C4-42A4-E2F7-48F0-30860A148E8D"; setAttr ".ihi" 0; setAttr -k off ".v"; setAttr ".ove" yes; @@ -5056,8 +5138,8 @@ createNode nurbsCurve -n "legFront_R0_knee12Shape" -p "legFront_R0_knee"; 0 -0.1875 0 -0.1875 0 0 ; -createNode nurbsCurve -n "legFront_R0_knee12_0crvShape" -p "legFront_R0_knee"; - rename -uid "6E78269A-4DF5-6268-343B-17805214D08A"; +createNode nurbsCurve -n "legFront_R0_knee3_0crvShape" -p "legFront_R0_knee"; + rename -uid "02C3E02F-43D6-4633-4EB7-99BF6905B975"; setAttr ".ihi" 0; setAttr -k off ".v"; setAttr ".ove" yes; @@ -5074,8 +5156,8 @@ createNode nurbsCurve -n "legFront_R0_knee12_0crvShape" -p "legFront_R0_knee"; 0 0 -0.1875 -0.1875 0 0 ; -createNode nurbsCurve -n "legFront_R0_knee12_1crvShape" -p "legFront_R0_knee"; - rename -uid "0D15373A-437E-7EAC-06EA-7C83AFB1C412"; +createNode nurbsCurve -n "legFront_R0_knee3_1crvShape" -p "legFront_R0_knee"; + rename -uid "38F23D74-41AE-8244-EDE6-ADB11D14D967"; setAttr ".ihi" 0; setAttr -k off ".v"; setAttr ".ove" yes; @@ -5093,10 +5175,10 @@ createNode nurbsCurve -n "legFront_R0_knee12_1crvShape" -p "legFront_R0_knee"; 0 0 -0.1875 ; createNode transform -n "legFront_R0_ankle" -p "legFront_R0_knee"; - rename -uid "F3766919-4580-9EC0-4916-869C2FBE014C"; + rename -uid "B670F120-4B71-8DDA-88EC-25923E279ACD"; addAttr -ci true -sn "isGearGuide" -ln "isGearGuide" -dv 1 -min 0 -max 1 -at "bool"; setAttr -k off -cb on ".v"; - setAttr ".t" -type "double3" 1.3322676295501878e-015 -2.3651516407059203 0.073902270404604842 ; + setAttr ".t" -type "double3" 4.4408920985006262e-015 -2.3651516407059177 0.073902270404609283 ; setAttr -l on -k off -cb on ".tx"; setAttr -k off -cb on ".ty"; setAttr -k off -cb on ".tz"; @@ -5104,12 +5186,12 @@ createNode transform -n "legFront_R0_ankle" -p "legFront_R0_knee"; setAttr -l on -k off -cb on ".ry"; setAttr -l on -k off -cb on ".rz"; setAttr -cb on ".ro"; - setAttr ".s" -type "double3" 0.99999999999999933 0.99999999999999978 0.99999999999999956 ; + setAttr ".s" -type "double3" 1.0000000000000002 0.99999999999999967 0.99999999999999944 ; setAttr -k off -cb on ".sx"; setAttr -k off -cb on ".sy"; setAttr -k off -cb on ".sz"; createNode nurbsCurve -n "legFront_R0_ankleShape" -p "legFront_R0_ankle"; - rename -uid "ED1EED79-47EA-B69C-660B-59BD714BF38A"; + rename -uid "7D8F2FA7-4207-C49A-22B8-85825F6F1F37"; setAttr ".ihi" 0; setAttr -k off ".v"; setAttr ".ove" yes; @@ -5121,8 +5203,8 @@ createNode nurbsCurve -n "legFront_R0_ankleShape" -p "legFront_R0_ankle"; 0.25 0 0 -0.25 0 0 ; -createNode nurbsCurve -n "legFront_R0_ankle10Shape" -p "legFront_R0_ankle"; - rename -uid "7617FD41-4BFE-AD2E-E55A-729B1AD96E2C"; +createNode nurbsCurve -n "legFront_R0_ankle1Shape" -p "legFront_R0_ankle"; + rename -uid "38A37E48-4958-FB4A-85CB-C2BC2EB04D4F"; setAttr ".ihi" 0; setAttr -k off ".v"; setAttr ".ove" yes; @@ -5134,8 +5216,8 @@ createNode nurbsCurve -n "legFront_R0_ankle10Shape" -p "legFront_R0_ankle"; 0 0.25 0 0 -0.25 0 ; -createNode nurbsCurve -n "legFront_R0_ankle11Shape" -p "legFront_R0_ankle"; - rename -uid "B3CEC763-4460-3D56-84D6-BFB4B2DC88F0"; +createNode nurbsCurve -n "legFront_R0_ankle2Shape" -p "legFront_R0_ankle"; + rename -uid "0A3A3DAB-4FFD-8035-1B24-B0A7C6CE1E0C"; setAttr ".ihi" 0; setAttr -k off ".v"; setAttr ".ove" yes; @@ -5147,8 +5229,8 @@ createNode nurbsCurve -n "legFront_R0_ankle11Shape" -p "legFront_R0_ankle"; 0 0 0.25 0 0 -0.25 ; -createNode nurbsCurve -n "legFront_R0_ankle12Shape" -p "legFront_R0_ankle"; - rename -uid "B4834EFD-4D57-ED01-6766-D58CBD4776D6"; +createNode nurbsCurve -n "legFront_R0_ankle3Shape" -p "legFront_R0_ankle"; + rename -uid "E0DA3CB3-4830-405E-672F-C5A6E011A73F"; setAttr ".ihi" 0; setAttr -k off ".v"; setAttr ".ove" yes; @@ -5165,8 +5247,8 @@ createNode nurbsCurve -n "legFront_R0_ankle12Shape" -p "legFront_R0_ankle"; 0 -0.1875 0 -0.1875 0 0 ; -createNode nurbsCurve -n "legFront_R0_ankle12_0crvShape" -p "legFront_R0_ankle"; - rename -uid "EE05D62B-4216-E40A-2459-6299610853E1"; +createNode nurbsCurve -n "legFront_R0_ankle3_0crvShape" -p "legFront_R0_ankle"; + rename -uid "FB817882-48BB-BB72-0120-D88D62F2925C"; setAttr ".ihi" 0; setAttr -k off ".v"; setAttr ".ove" yes; @@ -5183,8 +5265,8 @@ createNode nurbsCurve -n "legFront_R0_ankle12_0crvShape" -p "legFront_R0_ankle"; 0 0 -0.1875 -0.1875 0 0 ; -createNode nurbsCurve -n "legFront_R0_ankle12_1crvShape" -p "legFront_R0_ankle"; - rename -uid "E2D38D59-445F-0AF5-9FB4-B2879BE87F5F"; +createNode nurbsCurve -n "legFront_R0_ankle3_1crvShape" -p "legFront_R0_ankle"; + rename -uid "43FB16C7-4344-51EE-8CE3-DC971534FB2C"; setAttr ".ihi" 0; setAttr -k off ".v"; setAttr ".ove" yes; @@ -5202,10 +5284,10 @@ createNode nurbsCurve -n "legFront_R0_ankle12_1crvShape" -p "legFront_R0_ankle"; 0 0 -0.1875 ; createNode transform -n "legFront_R0_foot" -p "legFront_R0_ankle"; - rename -uid "383584B1-4BB1-6BE0-1D44-CABAFE177676"; + rename -uid "1CDC322E-4060-6A5E-A14B-44BC2DC7B332"; addAttr -ci true -sn "isGearGuide" -ln "isGearGuide" -dv 1 -min 0 -max 1 -at "bool"; setAttr -k off -cb on ".v"; - setAttr ".t" -type "double3" 1.3322676295501878e-015 -1.1294425054275468 0.023148533894220336 ; + setAttr ".t" -type "double3" 0 -1.1294425054275503 0.023148533894219447 ; setAttr -l on -k off -cb on ".tx"; setAttr -k off -cb on ".ty"; setAttr -k off -cb on ".tz"; @@ -5213,12 +5295,12 @@ createNode transform -n "legFront_R0_foot" -p "legFront_R0_ankle"; setAttr -l on -k off -cb on ".ry"; setAttr -l on -k off -cb on ".rz"; setAttr -cb on ".ro"; - setAttr ".s" -type "double3" 1.0000000000000007 0.99999999999999967 1.0000000000000002 ; + setAttr ".s" -type "double3" 0.99999999999999989 1.0000000000000002 1.0000000000000004 ; setAttr -k off -cb on ".sx"; setAttr -k off -cb on ".sy"; setAttr -k off -cb on ".sz"; createNode nurbsCurve -n "legFront_R0_footShape" -p "legFront_R0_foot"; - rename -uid "14C39B7F-4D89-9051-9DC4-BA9C280A111D"; + rename -uid "2560C5A8-4758-1467-0E0E-719885F2B646"; setAttr ".ihi" 0; setAttr -k off ".v"; setAttr ".ove" yes; @@ -5230,8 +5312,8 @@ createNode nurbsCurve -n "legFront_R0_footShape" -p "legFront_R0_foot"; 0.25 0 0 -0.25 0 0 ; -createNode nurbsCurve -n "legFront_R0_foot10Shape" -p "legFront_R0_foot"; - rename -uid "A047CF0E-4535-FEAD-38CF-88B3386E42F5"; +createNode nurbsCurve -n "legFront_R0_foot1Shape" -p "legFront_R0_foot"; + rename -uid "DB2AE7A5-4180-7E68-5BA0-25B12653ECF4"; setAttr ".ihi" 0; setAttr -k off ".v"; setAttr ".ove" yes; @@ -5243,8 +5325,8 @@ createNode nurbsCurve -n "legFront_R0_foot10Shape" -p "legFront_R0_foot"; 0 0.25 0 0 -0.25 0 ; -createNode nurbsCurve -n "legFront_R0_foot11Shape" -p "legFront_R0_foot"; - rename -uid "21F60BB3-48E4-1AF5-9B8F-EC80038050E2"; +createNode nurbsCurve -n "legFront_R0_foot2Shape" -p "legFront_R0_foot"; + rename -uid "93B35DC7-4FD2-0E71-E94D-BCA6CD6A4897"; setAttr ".ihi" 0; setAttr -k off ".v"; setAttr ".ove" yes; @@ -5256,8 +5338,8 @@ createNode nurbsCurve -n "legFront_R0_foot11Shape" -p "legFront_R0_foot"; 0 0 0.25 0 0 -0.25 ; -createNode nurbsCurve -n "legFront_R0_foot12Shape" -p "legFront_R0_foot"; - rename -uid "40E13276-43EB-D3A7-8E56-8C96EF7C8790"; +createNode nurbsCurve -n "legFront_R0_foot3Shape" -p "legFront_R0_foot"; + rename -uid "018AFD1A-4511-14F4-09E2-D9B572B27144"; setAttr ".ihi" 0; setAttr -k off ".v"; setAttr ".ove" yes; @@ -5274,8 +5356,8 @@ createNode nurbsCurve -n "legFront_R0_foot12Shape" -p "legFront_R0_foot"; 0 -0.1875 0 -0.1875 0 0 ; -createNode nurbsCurve -n "legFront_R0_foot12_0crvShape" -p "legFront_R0_foot"; - rename -uid "EB027F52-42C0-A10C-D0CB-F888F6A94C74"; +createNode nurbsCurve -n "legFront_R0_foot3_0crvShape" -p "legFront_R0_foot"; + rename -uid "E7306891-4D19-A798-53FE-649F14393739"; setAttr ".ihi" 0; setAttr -k off ".v"; setAttr ".ove" yes; @@ -5292,8 +5374,8 @@ createNode nurbsCurve -n "legFront_R0_foot12_0crvShape" -p "legFront_R0_foot"; 0 0 -0.1875 -0.1875 0 0 ; -createNode nurbsCurve -n "legFront_R0_foot12_1crvShape" -p "legFront_R0_foot"; - rename -uid "EEB1E42D-4309-A74B-3E06-D28EFC34021B"; +createNode nurbsCurve -n "legFront_R0_foot3_1crvShape" -p "legFront_R0_foot"; + rename -uid "C94E93F9-4D31-BD64-5112-2097E7B7111E"; setAttr ".ihi" 0; setAttr -k off ".v"; setAttr ".ove" yes; @@ -5311,10 +5393,10 @@ createNode nurbsCurve -n "legFront_R0_foot12_1crvShape" -p "legFront_R0_foot"; 0 0 -0.1875 ; createNode transform -n "legFront_R0_eff" -p "legFront_R0_foot"; - rename -uid "01F4DC4C-4E97-0353-225B-8B9CA9F3DCBF"; + rename -uid "63CD4CB1-4212-63CC-D2C8-4182C56E4BCE"; addAttr -ci true -sn "isGearGuide" -ln "isGearGuide" -dv 1 -min 0 -max 1 -at "bool"; setAttr -k off -cb on ".v"; - setAttr ".t" -type "double3" 8.8817841970012523e-016 6.9388939039072284e-016 0.59657797851921224 ; + setAttr ".t" -type "double3" 2.6645352591003757e-015 8.8817841970012523e-016 0.59657797851920691 ; setAttr -k off -cb on ".tx"; setAttr -k off -cb on ".ty"; setAttr -k off -cb on ".tz"; @@ -5322,12 +5404,12 @@ createNode transform -n "legFront_R0_eff" -p "legFront_R0_foot"; setAttr -k off -cb on ".ry"; setAttr -k off -cb on ".rz"; setAttr -cb on ".ro"; - setAttr ".s" -type "double3" 0.99999999999999978 0.99999999999999967 0.999999999999999 ; + setAttr ".s" -type "double3" 0.99999999999999944 0.99999999999999922 0.99999999999999867 ; setAttr -k off -cb on ".sx"; setAttr -k off -cb on ".sy"; setAttr -k off -cb on ".sz"; createNode nurbsCurve -n "legFront_R0_effShape" -p "legFront_R0_eff"; - rename -uid "0F29FD14-4E61-92A1-C1CD-67863FD0C51B"; + rename -uid "FAF374E2-4851-56B3-E8C2-B39995B9CE38"; setAttr ".ihi" 0; setAttr -k off ".v"; setAttr ".ove" yes; @@ -5339,8 +5421,8 @@ createNode nurbsCurve -n "legFront_R0_effShape" -p "legFront_R0_eff"; 0.25 0 0 -0.25 0 0 ; -createNode nurbsCurve -n "legFront_R0_eff10Shape" -p "legFront_R0_eff"; - rename -uid "0D3F04CB-4982-A0B5-0EFF-17B1F6CFBF6E"; +createNode nurbsCurve -n "legFront_R0_eff1Shape" -p "legFront_R0_eff"; + rename -uid "FB1E547D-4B7C-5790-9A67-1A915C131448"; setAttr ".ihi" 0; setAttr -k off ".v"; setAttr ".ove" yes; @@ -5352,8 +5434,8 @@ createNode nurbsCurve -n "legFront_R0_eff10Shape" -p "legFront_R0_eff"; 0 0.25 0 0 -0.25 0 ; -createNode nurbsCurve -n "legFront_R0_eff11Shape" -p "legFront_R0_eff"; - rename -uid "15DBBA13-4324-231F-6877-008A3CB7F000"; +createNode nurbsCurve -n "legFront_R0_eff2Shape" -p "legFront_R0_eff"; + rename -uid "46B9F2E4-421B-EC6B-10B4-069EA880787A"; setAttr ".ihi" 0; setAttr -k off ".v"; setAttr ".ove" yes; @@ -5365,8 +5447,8 @@ createNode nurbsCurve -n "legFront_R0_eff11Shape" -p "legFront_R0_eff"; 0 0 0.25 0 0 -0.25 ; -createNode nurbsCurve -n "legFront_R0_eff12Shape" -p "legFront_R0_eff"; - rename -uid "C42F0425-4D8F-05FE-9F08-968EFD30AC4C"; +createNode nurbsCurve -n "legFront_R0_eff3Shape" -p "legFront_R0_eff"; + rename -uid "A6773FBA-4FA7-9278-8930-97B9B1D52851"; setAttr ".ihi" 0; setAttr -k off ".v"; setAttr ".ove" yes; @@ -5383,8 +5465,8 @@ createNode nurbsCurve -n "legFront_R0_eff12Shape" -p "legFront_R0_eff"; 0 -0.1875 0 -0.1875 0 0 ; -createNode nurbsCurve -n "legFront_R0_eff12_0crvShape" -p "legFront_R0_eff"; - rename -uid "99A21E1D-4A99-7D41-66BF-27A8EAB508E6"; +createNode nurbsCurve -n "legFront_R0_eff3_0crvShape" -p "legFront_R0_eff"; + rename -uid "FFDCDB71-466A-F0C6-F58C-D9AB00DF5FC0"; setAttr ".ihi" 0; setAttr -k off ".v"; setAttr ".ove" yes; @@ -5401,8 +5483,8 @@ createNode nurbsCurve -n "legFront_R0_eff12_0crvShape" -p "legFront_R0_eff"; 0 0 -0.1875 -0.1875 0 0 ; -createNode nurbsCurve -n "legFront_R0_eff12_1crvShape" -p "legFront_R0_eff"; - rename -uid "FF9E6EDC-4A15-8DF5-FF5D-0399360002BD"; +createNode nurbsCurve -n "legFront_R0_eff3_1crvShape" -p "legFront_R0_eff"; + rename -uid "6ABDD94C-45C6-15B7-2B12-E28A4E978653"; setAttr ".ihi" 0; setAttr -k off ".v"; setAttr ".ove" yes; @@ -5420,7 +5502,7 @@ createNode nurbsCurve -n "legFront_R0_eff12_1crvShape" -p "legFront_R0_eff"; 0 0 -0.1875 ; createNode transform -n "footFront_R0_root" -p "legFront_R0_foot"; - rename -uid "B8DA80C7-4C85-5D23-690D-58BE487AA35F"; + rename -uid "99D04758-4090-69EF-124B-9DBEB1618BDB"; addAttr -ci true -sn "isGearGuide" -ln "isGearGuide" -dv 1 -min 0 -max 1 -at "bool"; addAttr -ci true -sn "comp_type" -ln "comp_type" -dt "string"; addAttr -ci true -sn "comp_name" -ln "comp_name" -dt "string"; @@ -5433,7 +5515,7 @@ createNode transform -n "footFront_R0_root" -p "legFront_R0_foot"; addAttr -ci true -sn "useIndex" -ln "useIndex" -min 0 -max 1 -at "bool"; addAttr -ci true -sn "parentJointIndex" -ln "parentJointIndex" -at "long"; setAttr -k off -cb on ".v"; - setAttr ".t" -type "double3" 1.7763568394002505e-015 7.2164496600635175e-016 8.8817841970012523e-016 ; + setAttr ".t" -type "double3" 2.6645352591003757e-015 7.7715611723760958e-016 -3.5527136788005009e-015 ; setAttr -k off -cb on ".tx"; setAttr -k off -cb on ".ty"; setAttr -k off -cb on ".tz"; @@ -5441,7 +5523,7 @@ createNode transform -n "footFront_R0_root" -p "legFront_R0_foot"; setAttr -k off -cb on ".ry"; setAttr -k off -cb on ".rz"; setAttr -cb on ".ro"; - setAttr ".s" -type "double3" 0.31499517602514093 0.31499517602514099 0.31499517602514077 ; + setAttr ".s" -type "double3" 0.31499517602514088 0.31499517602514093 0.31499517602514077 ; setAttr -k off -cb on ".sx"; setAttr -k off -cb on ".sy"; setAttr -k off -cb on ".sz"; @@ -5454,7 +5536,7 @@ createNode transform -n "footFront_R0_root" -p "legFront_R0_foot"; setAttr ".useRollCtl" yes; setAttr ".parentJointIndex" -1; createNode nurbsCurve -n "footFront_R0_rootShape" -p "footFront_R0_root"; - rename -uid "EAB50775-43B8-C4A9-557C-89912C787DEB"; + rename -uid "4C6FC73D-4D55-0487-8EDE-4CAC238B5B5D"; setAttr ".ihi" 0; setAttr -k off ".v"; setAttr ".ove" yes; @@ -5466,8 +5548,8 @@ createNode nurbsCurve -n "footFront_R0_rootShape" -p "footFront_R0_root"; 0.25 0 0 -0.25 0 0 ; -createNode nurbsCurve -n "footFront_R0_root10Shape" -p "footFront_R0_root"; - rename -uid "9CBD4C8C-4600-281E-4173-D5A863970C31"; +createNode nurbsCurve -n "footFront_R0_root1Shape" -p "footFront_R0_root"; + rename -uid "0439C1B2-4640-BEB3-AD29-7D8F34F833CC"; setAttr ".ihi" 0; setAttr -k off ".v"; setAttr ".ove" yes; @@ -5479,8 +5561,8 @@ createNode nurbsCurve -n "footFront_R0_root10Shape" -p "footFront_R0_root"; 0 0.25 0 0 -0.25 0 ; -createNode nurbsCurve -n "footFront_R0_root11Shape" -p "footFront_R0_root"; - rename -uid "EB7FAB82-4583-301B-9EF1-F893A65EB747"; +createNode nurbsCurve -n "footFront_R0_root2Shape" -p "footFront_R0_root"; + rename -uid "22C3035F-4CCF-50F3-0818-A7ACA13AFD7A"; setAttr ".ihi" 0; setAttr -k off ".v"; setAttr ".ove" yes; @@ -5492,8 +5574,8 @@ createNode nurbsCurve -n "footFront_R0_root11Shape" -p "footFront_R0_root"; 0 0 0.25 0 0 -0.25 ; -createNode nurbsCurve -n "footFront_R0_root12Shape" -p "footFront_R0_root"; - rename -uid "E5D3BF68-4389-24DA-65E5-3184F001B1C6"; +createNode nurbsCurve -n "footFront_R0_root3Shape" -p "footFront_R0_root"; + rename -uid "74932CE5-47BA-C3FF-0DE8-49B6C1504B77"; setAttr ".ihi" 0; setAttr -k off ".v"; setAttr ".ove" yes; @@ -5520,10 +5602,10 @@ createNode nurbsCurve -n "footFront_R0_root12Shape" -p "footFront_R0_root"; -0.125 -0.125 -0.125 ; createNode transform -n "footFront_R0_0_loc" -p "footFront_R0_root"; - rename -uid "0FA9C238-4E9D-F0B5-3D6B-249180F98EB4"; + rename -uid "CE98A608-460A-FEF6-F424-538A14CD09B6"; addAttr -ci true -sn "isGearGuide" -ln "isGearGuide" -dv 1 -min 0 -max 1 -at "bool"; setAttr -k off -cb on ".v"; - setAttr ".t" -type "double3" -3.5527136788005009e-015 6.6613381477509392e-016 0.75996190873515701 ; + setAttr ".t" -type "double3" 5.3290705182007514e-015 7.7715611723760958e-016 0.75996190873517477 ; setAttr -k off -cb on ".tx"; setAttr -k off -cb on ".ty"; setAttr -k off -cb on ".tz"; @@ -5531,12 +5613,12 @@ createNode transform -n "footFront_R0_0_loc" -p "footFront_R0_root"; setAttr -k off -cb on ".ry"; setAttr -k off -cb on ".rz"; setAttr -cb on ".ro"; - setAttr ".s" -type "double3" 0.99999999999999878 0.99999999999999956 0.99999999999999922 ; + setAttr ".s" -type "double3" 1 1.0000000000000004 1.0000000000000007 ; setAttr -k off -cb on ".sx"; setAttr -k off -cb on ".sy"; setAttr -k off -cb on ".sz"; createNode nurbsCurve -n "footFront_R0_0_locShape" -p "footFront_R0_0_loc"; - rename -uid "5D0C9C67-46EF-1AD3-1576-B3934B82CCE0"; + rename -uid "7B6AD316-4531-E7F7-1F83-BAB4524B2530"; setAttr ".ihi" 0; setAttr -k off ".v"; setAttr ".ove" yes; @@ -5548,8 +5630,8 @@ createNode nurbsCurve -n "footFront_R0_0_locShape" -p "footFront_R0_0_loc"; 0.25 0 0 -0.25 0 0 ; -createNode nurbsCurve -n "footFront_R0_0_loc10Shape" -p "footFront_R0_0_loc"; - rename -uid "5CEA8544-4DF4-D925-9AF5-0BA06A619920"; +createNode nurbsCurve -n "footFront_R0_0_loc1Shape" -p "footFront_R0_0_loc"; + rename -uid "A2EE855B-4F15-8BE3-68C8-F6A4448A7F66"; setAttr ".ihi" 0; setAttr -k off ".v"; setAttr ".ove" yes; @@ -5561,8 +5643,8 @@ createNode nurbsCurve -n "footFront_R0_0_loc10Shape" -p "footFront_R0_0_loc"; 0 0.25 0 0 -0.25 0 ; -createNode nurbsCurve -n "footFront_R0_0_loc11Shape" -p "footFront_R0_0_loc"; - rename -uid "73C46E51-4538-21DD-7E5F-33A8C37594C0"; +createNode nurbsCurve -n "footFront_R0_0_loc2Shape" -p "footFront_R0_0_loc"; + rename -uid "D074C882-4BDB-66F6-4B36-82A50B72E338"; setAttr ".ihi" 0; setAttr -k off ".v"; setAttr ".ove" yes; @@ -5574,8 +5656,8 @@ createNode nurbsCurve -n "footFront_R0_0_loc11Shape" -p "footFront_R0_0_loc"; 0 0 0.25 0 0 -0.25 ; -createNode nurbsCurve -n "footFront_R0_0_loc12Shape" -p "footFront_R0_0_loc"; - rename -uid "ABD8EB98-4414-7ABF-7619-518BDD1D5E0B"; +createNode nurbsCurve -n "footFront_R0_0_loc3Shape" -p "footFront_R0_0_loc"; + rename -uid "6110BA49-4371-D4C1-1FE9-FDB92D25F510"; setAttr ".ihi" 0; setAttr -k off ".v"; setAttr ".ove" yes; @@ -5592,8 +5674,8 @@ createNode nurbsCurve -n "footFront_R0_0_loc12Shape" -p "footFront_R0_0_loc"; 0 -0.1875 0 -0.1875 0 0 ; -createNode nurbsCurve -n "footFront_R0_0_loc12_0crvShape" -p "footFront_R0_0_loc"; - rename -uid "95D17BE1-4DBE-4924-0520-5D944950E6CC"; +createNode nurbsCurve -n "footFront_R0_0_loc3_0crvShape" -p "footFront_R0_0_loc"; + rename -uid "6C3DBADC-4E0C-1E06-788A-9C88D4283C16"; setAttr ".ihi" 0; setAttr -k off ".v"; setAttr ".ove" yes; @@ -5610,8 +5692,8 @@ createNode nurbsCurve -n "footFront_R0_0_loc12_0crvShape" -p "footFront_R0_0_loc 0 0 -0.1875 -0.1875 0 0 ; -createNode nurbsCurve -n "footFront_R0_0_loc12_1crvShape" -p "footFront_R0_0_loc"; - rename -uid "1D78C470-48E7-703D-429E-2BA76EDE9EEF"; +createNode nurbsCurve -n "footFront_R0_0_loc3_1crvShape" -p "footFront_R0_0_loc"; + rename -uid "18FFB24F-4441-190F-C858-0B895FCD05E3"; setAttr ".ihi" 0; setAttr -k off ".v"; setAttr ".ove" yes; @@ -5629,10 +5711,10 @@ createNode nurbsCurve -n "footFront_R0_0_loc12_1crvShape" -p "footFront_R0_0_loc 0 0 -0.1875 ; createNode transform -n "footFront_R0_1_loc" -p "footFront_R0_0_loc"; - rename -uid "5C344468-443B-8124-50B1-24B3AF188AB3"; + rename -uid "C3C1E183-4F51-E597-7CD0-62911371400B"; addAttr -ci true -sn "isGearGuide" -ln "isGearGuide" -dv 1 -min 0 -max 1 -at "bool"; setAttr -k off -cb on ".v"; - setAttr ".t" -type "double3" 6.2172489379008766e-015 -0.31771180755405148 0.73937999249395858 ; + setAttr ".t" -type "double3" -3.5527136788005009e-015 -0.31771180755405082 0.73937999249394792 ; setAttr -k off -cb on ".tx"; setAttr -k off -cb on ".ty"; setAttr -k off -cb on ".tz"; @@ -5640,12 +5722,12 @@ createNode transform -n "footFront_R0_1_loc" -p "footFront_R0_0_loc"; setAttr -k off -cb on ".ry"; setAttr -k off -cb on ".rz"; setAttr -cb on ".ro"; - setAttr ".s" -type "double3" 1.0000000000000011 1.0000000000000009 1.0000000000000018 ; + setAttr ".s" -type "double3" 1 1.0000000000000002 1.0000000000000002 ; setAttr -k off -cb on ".sx"; setAttr -k off -cb on ".sy"; setAttr -k off -cb on ".sz"; createNode nurbsCurve -n "footFront_R0_1_locShape" -p "footFront_R0_1_loc"; - rename -uid "D38DE9CA-4A9C-5228-51F4-3584431E5348"; + rename -uid "BD0006F1-4DE5-23BD-29A9-189490929B7E"; setAttr ".ihi" 0; setAttr -k off ".v"; setAttr ".ove" yes; @@ -5657,8 +5739,8 @@ createNode nurbsCurve -n "footFront_R0_1_locShape" -p "footFront_R0_1_loc"; 0.25 0 0 -0.25 0 0 ; -createNode nurbsCurve -n "footFront_R0_1_loc10Shape" -p "footFront_R0_1_loc"; - rename -uid "2C72425B-42A4-5D66-781E-72BCCB6480FA"; +createNode nurbsCurve -n "footFront_R0_1_loc1Shape" -p "footFront_R0_1_loc"; + rename -uid "3A310A5A-4D5F-F2F0-3CF5-638C42387539"; setAttr ".ihi" 0; setAttr -k off ".v"; setAttr ".ove" yes; @@ -5670,8 +5752,8 @@ createNode nurbsCurve -n "footFront_R0_1_loc10Shape" -p "footFront_R0_1_loc"; 0 0.25 0 0 -0.25 0 ; -createNode nurbsCurve -n "footFront_R0_1_loc11Shape" -p "footFront_R0_1_loc"; - rename -uid "E9108443-4CDE-8440-EA61-69BB3902E20A"; +createNode nurbsCurve -n "footFront_R0_1_loc2Shape" -p "footFront_R0_1_loc"; + rename -uid "C596B9BC-43BA-CD4E-462D-C5BE2EC021BD"; setAttr ".ihi" 0; setAttr -k off ".v"; setAttr ".ove" yes; @@ -5683,8 +5765,8 @@ createNode nurbsCurve -n "footFront_R0_1_loc11Shape" -p "footFront_R0_1_loc"; 0 0 0.25 0 0 -0.25 ; -createNode nurbsCurve -n "footFront_R0_1_loc12Shape" -p "footFront_R0_1_loc"; - rename -uid "EB952584-4FD0-9A82-60A3-48AC4FCC36CA"; +createNode nurbsCurve -n "footFront_R0_1_loc3Shape" -p "footFront_R0_1_loc"; + rename -uid "7794D06B-419F-999C-56EB-819B095DF5A2"; setAttr ".ihi" 0; setAttr -k off ".v"; setAttr ".ove" yes; @@ -5701,8 +5783,8 @@ createNode nurbsCurve -n "footFront_R0_1_loc12Shape" -p "footFront_R0_1_loc"; 0 -0.1875 0 -0.1875 0 0 ; -createNode nurbsCurve -n "footFront_R0_1_loc12_0crvShape" -p "footFront_R0_1_loc"; - rename -uid "C4DD2A3F-459F-ADD0-990E-C29D40A73E8B"; +createNode nurbsCurve -n "footFront_R0_1_loc3_0crvShape" -p "footFront_R0_1_loc"; + rename -uid "A4D4A6D1-4C63-155F-BEDC-74A0FF483B43"; setAttr ".ihi" 0; setAttr -k off ".v"; setAttr ".ove" yes; @@ -5719,8 +5801,8 @@ createNode nurbsCurve -n "footFront_R0_1_loc12_0crvShape" -p "footFront_R0_1_loc 0 0 -0.1875 -0.1875 0 0 ; -createNode nurbsCurve -n "footFront_R0_1_loc12_1crvShape" -p "footFront_R0_1_loc"; - rename -uid "B7BF237E-4F77-05EC-F77F-88B00781B057"; +createNode nurbsCurve -n "footFront_R0_1_loc3_1crvShape" -p "footFront_R0_1_loc"; + rename -uid "A8A93811-4DE5-3AD2-4746-339E137587F0"; setAttr ".ihi" 0; setAttr -k off ".v"; setAttr ".ove" yes; @@ -5738,19 +5820,19 @@ createNode nurbsCurve -n "footFront_R0_1_loc12_1crvShape" -p "footFront_R0_1_loc 0 0 -0.1875 ; createNode transform -n "footFront_R0_crv" -p "footFront_R0_root"; - rename -uid "C65E6299-4190-424B-24A8-C890340510DA"; + rename -uid "636B96CC-4563-C3BE-8755-AC8B8A8A3FD6"; setAttr ".ovdt" 1; setAttr ".ove" yes; - setAttr ".t" -type "double3" -7.3687973355373462 -0.60300743522684519 -16.239037496288915 ; - setAttr ".r" -type "double3" 0 179.99999999999997 0 ; - setAttr ".s" -type "double3" 7.9431701648148065 7.9431701648148056 -7.9431701648148083 ; + setAttr ".t" -type "double3" -7.3687973355373479 -0.60300743522685085 -16.239037496288905 ; + setAttr ".r" -type "double3" 0 180 0 ; + setAttr ".s" -type "double3" 7.9431701648148074 7.9431701648148074 -7.9431701648148092 ; createNode nurbsCurve -n "footFront_R0_crvShape" -p "footFront_R0_crv"; - rename -uid "A5086AC3-4369-B884-68D6-79B4905D8BF1"; + rename -uid "9832A372-48F8-C2C3-E3E9-4AAF848D49C5"; setAttr -k off ".v"; setAttr -s 4 ".iog[0].og"; setAttr ".tw" yes; createNode nurbsCurve -n "footFront_R0_crvShapeOrig" -p "footFront_R0_crv"; - rename -uid "F48F9699-49FD-9A34-32B2-9895F5DD7FF5"; + rename -uid "8C8F79AF-4565-6A23-B782-7A8610AB3461"; setAttr -k off ".v"; setAttr ".io" yes; setAttr ".cc" -type "nurbsCurve" @@ -5762,10 +5844,10 @@ createNode nurbsCurve -n "footFront_R0_crvShapeOrig" -p "footFront_R0_crv"; 0 0 0 ; createNode transform -n "footFront_R0_heel" -p "footFront_R0_root"; - rename -uid "DAFA7C1C-4C08-FFE8-1EAA-53B00D2EC81C"; + rename -uid "C6FCAB5F-4E66-2B48-D5F7-9B9377B694E6"; addAttr -ci true -sn "isGearGuide" -ln "isGearGuide" -dv 1 -min 0 -max 1 -at "bool"; setAttr -k off -cb on ".v"; - setAttr ".t" -type "double3" 2.6645352591003757e-015 -0.31771180755405065 -0.06789990867209994 ; + setAttr ".t" -type "double3" 1.0658141036401503e-014 -0.31771180755405071 -0.067899908672082177 ; setAttr -k off -cb on ".tx"; setAttr -k off -cb on ".ty"; setAttr -k off -cb on ".tz"; @@ -5773,12 +5855,12 @@ createNode transform -n "footFront_R0_heel" -p "footFront_R0_root"; setAttr -k off -cb on ".ry"; setAttr -k off -cb on ".rz"; setAttr -cb on ".ro"; - setAttr ".s" -type "double3" 0.99999999999999878 0.99999999999999956 0.99999999999999922 ; + setAttr ".s" -type "double3" 1 1.0000000000000004 1.0000000000000007 ; setAttr -k off -cb on ".sx"; setAttr -k off -cb on ".sy"; setAttr -k off -cb on ".sz"; createNode nurbsCurve -n "footFront_R0_heelShape" -p "footFront_R0_heel"; - rename -uid "C1BE6A53-471A-6959-08DA-EC9C3A3E48B1"; + rename -uid "20F89F00-49A4-087F-A822-FEB76B62A286"; setAttr ".ihi" 0; setAttr -k off ".v"; setAttr ".ove" yes; @@ -5790,8 +5872,8 @@ createNode nurbsCurve -n "footFront_R0_heelShape" -p "footFront_R0_heel"; 0.25 0 0 -0.25 0 0 ; -createNode nurbsCurve -n "footFront_R0_heel10Shape" -p "footFront_R0_heel"; - rename -uid "6F35DF19-46E9-67A4-0DA4-99BF6F1D6F35"; +createNode nurbsCurve -n "footFront_R0_heel1Shape" -p "footFront_R0_heel"; + rename -uid "D95A0642-4F29-1517-12DA-91A65698E222"; setAttr ".ihi" 0; setAttr -k off ".v"; setAttr ".ove" yes; @@ -5803,8 +5885,8 @@ createNode nurbsCurve -n "footFront_R0_heel10Shape" -p "footFront_R0_heel"; 0 0.25 0 0 -0.25 0 ; -createNode nurbsCurve -n "footFront_R0_heel11Shape" -p "footFront_R0_heel"; - rename -uid "1D8D355C-4C59-DD8B-F9DE-B1A81CE1D3E0"; +createNode nurbsCurve -n "footFront_R0_heel2Shape" -p "footFront_R0_heel"; + rename -uid "FB774452-4495-F40A-CF9C-2591174F800D"; setAttr ".ihi" 0; setAttr -k off ".v"; setAttr ".ove" yes; @@ -5816,8 +5898,8 @@ createNode nurbsCurve -n "footFront_R0_heel11Shape" -p "footFront_R0_heel"; 0 0 0.25 0 0 -0.25 ; -createNode nurbsCurve -n "footFront_R0_heel12Shape" -p "footFront_R0_heel"; - rename -uid "B782335C-4738-4381-0700-3BA096B712B9"; +createNode nurbsCurve -n "footFront_R0_heel3Shape" -p "footFront_R0_heel"; + rename -uid "4C4CF61E-4289-F971-EFF9-B1A2325B4D24"; setAttr ".ihi" 0; setAttr -k off ".v"; setAttr ".ove" yes; @@ -5834,8 +5916,8 @@ createNode nurbsCurve -n "footFront_R0_heel12Shape" -p "footFront_R0_heel"; 0 -0.1875 0 -0.1875 0 0 ; -createNode nurbsCurve -n "footFront_R0_heel12_0crvShape" -p "footFront_R0_heel"; - rename -uid "5B83E7B9-4F0F-C19B-ADCA-6589514DBD85"; +createNode nurbsCurve -n "footFront_R0_heel3_0crvShape" -p "footFront_R0_heel"; + rename -uid "AA893B58-4BB2-E7F5-FEBD-309E70CB6AF2"; setAttr ".ihi" 0; setAttr -k off ".v"; setAttr ".ove" yes; @@ -5852,8 +5934,8 @@ createNode nurbsCurve -n "footFront_R0_heel12_0crvShape" -p "footFront_R0_heel"; 0 0 -0.1875 -0.1875 0 0 ; -createNode nurbsCurve -n "footFront_R0_heel12_1crvShape" -p "footFront_R0_heel"; - rename -uid "90EB0F17-4BB7-1B2C-33F4-28B657C41C28"; +createNode nurbsCurve -n "footFront_R0_heel3_1crvShape" -p "footFront_R0_heel"; + rename -uid "51FD4D10-4680-EDA3-BACE-D098B299D272"; setAttr ".ihi" 0; setAttr -k off ".v"; setAttr ".ove" yes; @@ -5871,10 +5953,10 @@ createNode nurbsCurve -n "footFront_R0_heel12_1crvShape" -p "footFront_R0_heel"; 0 0 -0.1875 ; createNode transform -n "footFront_R0_outpivot" -p "footFront_R0_root"; - rename -uid "BE36B4A3-4868-B349-FD60-E3AC8E5E8D42"; + rename -uid "D5AC151D-4434-9727-3276-6396049BBE87"; addAttr -ci true -sn "isGearGuide" -ln "isGearGuide" -dv 1 -min 0 -max 1 -at "bool"; setAttr -k off -cb on ".v"; - setAttr ".t" -type "double3" 1.1000376131120593 -0.31771180755405043 0.691571853504648 ; + setAttr ".t" -type "double3" 1.1000376131120593 -0.31771180755404999 0.69157185350466577 ; setAttr -k off -cb on ".tx"; setAttr -k off -cb on ".ty"; setAttr -k off -cb on ".tz"; @@ -5882,12 +5964,12 @@ createNode transform -n "footFront_R0_outpivot" -p "footFront_R0_root"; setAttr -k off -cb on ".ry"; setAttr -k off -cb on ".rz"; setAttr -cb on ".ro"; - setAttr ".s" -type "double3" 0.99999999999999878 0.99999999999999956 0.99999999999999922 ; + setAttr ".s" -type "double3" 1 1.0000000000000004 1.0000000000000007 ; setAttr -k off -cb on ".sx"; setAttr -k off -cb on ".sy"; setAttr -k off -cb on ".sz"; createNode nurbsCurve -n "footFront_R0_outpivotShape" -p "footFront_R0_outpivot"; - rename -uid "DCC3B158-4800-3887-BF91-72A64B8B23F7"; + rename -uid "C3C99581-4564-BFA3-E59F-BFB97AB22F87"; setAttr ".ihi" 0; setAttr -k off ".v"; setAttr ".ove" yes; @@ -5899,8 +5981,8 @@ createNode nurbsCurve -n "footFront_R0_outpivotShape" -p "footFront_R0_outpivot" 0.25 0 0 -0.25 0 0 ; -createNode nurbsCurve -n "footFront_R0_outpivot10Shape" -p "footFront_R0_outpivot"; - rename -uid "044FC4D7-46BB-A288-F62E-8D9EA7A7A755"; +createNode nurbsCurve -n "footFront_R0_outpivot1Shape" -p "footFront_R0_outpivot"; + rename -uid "2BF6E798-441F-800A-57A5-3B824C287DB3"; setAttr ".ihi" 0; setAttr -k off ".v"; setAttr ".ove" yes; @@ -5912,8 +5994,8 @@ createNode nurbsCurve -n "footFront_R0_outpivot10Shape" -p "footFront_R0_outpivo 0 0.25 0 0 -0.25 0 ; -createNode nurbsCurve -n "footFront_R0_outpivot11Shape" -p "footFront_R0_outpivot"; - rename -uid "94511FBC-4A34-9F4D-A6A0-9D84D11BDC52"; +createNode nurbsCurve -n "footFront_R0_outpivot2Shape" -p "footFront_R0_outpivot"; + rename -uid "54DE553E-40F1-FDCB-3B6F-37A1AE918D24"; setAttr ".ihi" 0; setAttr -k off ".v"; setAttr ".ove" yes; @@ -5925,8 +6007,8 @@ createNode nurbsCurve -n "footFront_R0_outpivot11Shape" -p "footFront_R0_outpivo 0 0 0.25 0 0 -0.25 ; -createNode nurbsCurve -n "footFront_R0_outpivot12Shape" -p "footFront_R0_outpivot"; - rename -uid "682BF1D2-41E2-2D8D-8CD9-668F0229E503"; +createNode nurbsCurve -n "footFront_R0_outpivot3Shape" -p "footFront_R0_outpivot"; + rename -uid "28D0E9CF-48F0-6C40-7292-259154B0AFF0"; setAttr ".ihi" 0; setAttr -k off ".v"; setAttr ".ove" yes; @@ -5943,8 +6025,8 @@ createNode nurbsCurve -n "footFront_R0_outpivot12Shape" -p "footFront_R0_outpivo 0 -0.1875 0 -0.1875 0 0 ; -createNode nurbsCurve -n "footFront_R0_outpivot12_0crvShape" -p "footFront_R0_outpivot"; - rename -uid "FAAC3365-414F-F52F-9F05-F680E56670AE"; +createNode nurbsCurve -n "footFront_R0_outpivot3_0crvShape" -p "footFront_R0_outpivot"; + rename -uid "CE02B642-4C97-0518-3CD5-DFA502D1611C"; setAttr ".ihi" 0; setAttr -k off ".v"; setAttr ".ove" yes; @@ -5961,8 +6043,8 @@ createNode nurbsCurve -n "footFront_R0_outpivot12_0crvShape" -p "footFront_R0_ou 0 0 -0.1875 -0.1875 0 0 ; -createNode nurbsCurve -n "footFront_R0_outpivot12_1crvShape" -p "footFront_R0_outpivot"; - rename -uid "FAEADD12-4C8C-ADDB-6CFA-708A1542AFDA"; +createNode nurbsCurve -n "footFront_R0_outpivot3_1crvShape" -p "footFront_R0_outpivot"; + rename -uid "79C0EE33-4816-DBF5-BE46-27B0802FDBC7"; setAttr ".ihi" 0; setAttr -k off ".v"; setAttr ".ove" yes; @@ -5980,10 +6062,10 @@ createNode nurbsCurve -n "footFront_R0_outpivot12_1crvShape" -p "footFront_R0_ou 0 0 -0.1875 ; createNode transform -n "footFront_R0_inpivot" -p "footFront_R0_root"; - rename -uid "59CF860A-412A-06CD-7BC5-43B67BAC02FD"; + rename -uid "1A3B79BC-4FDB-2A7C-AD2C-BF9AE698DC2F"; addAttr -ci true -sn "isGearGuide" -ln "isGearGuide" -dv 1 -min 0 -max 1 -at "bool"; setAttr -k off -cb on ".v"; - setAttr ".t" -type "double3" -1.016243928872302 -0.31771180755405048 0.86340011285661333 ; + setAttr ".t" -type "double3" -1.0162439288722949 -0.31771180755405037 0.86340011285664531 ; setAttr -k off -cb on ".tx"; setAttr -k off -cb on ".ty"; setAttr -k off -cb on ".tz"; @@ -5991,12 +6073,12 @@ createNode transform -n "footFront_R0_inpivot" -p "footFront_R0_root"; setAttr -k off -cb on ".ry"; setAttr -k off -cb on ".rz"; setAttr -cb on ".ro"; - setAttr ".s" -type "double3" 0.99999999999999878 0.99999999999999956 0.99999999999999922 ; + setAttr ".s" -type "double3" 1 1.0000000000000004 1.0000000000000007 ; setAttr -k off -cb on ".sx"; setAttr -k off -cb on ".sy"; setAttr -k off -cb on ".sz"; createNode nurbsCurve -n "footFront_R0_inpivotShape" -p "footFront_R0_inpivot"; - rename -uid "8B2B88DD-4928-C0AE-841D-2CBA04EF9DCA"; + rename -uid "FD61D5FC-4AAF-4A84-3C79-6D9A1314C6B4"; setAttr ".ihi" 0; setAttr -k off ".v"; setAttr ".ove" yes; @@ -6008,8 +6090,8 @@ createNode nurbsCurve -n "footFront_R0_inpivotShape" -p "footFront_R0_inpivot"; 0.25 0 0 -0.25 0 0 ; -createNode nurbsCurve -n "footFront_R0_inpivot10Shape" -p "footFront_R0_inpivot"; - rename -uid "B63325B1-4C77-629C-E241-A0BE0BAB0BB5"; +createNode nurbsCurve -n "footFront_R0_inpivot1Shape" -p "footFront_R0_inpivot"; + rename -uid "2EDEB4DD-41E3-A83C-427F-599002C58472"; setAttr ".ihi" 0; setAttr -k off ".v"; setAttr ".ove" yes; @@ -6021,8 +6103,8 @@ createNode nurbsCurve -n "footFront_R0_inpivot10Shape" -p "footFront_R0_inpivot" 0 0.25 0 0 -0.25 0 ; -createNode nurbsCurve -n "footFront_R0_inpivot11Shape" -p "footFront_R0_inpivot"; - rename -uid "4499581C-47A7-7D92-BAB6-60876CF21E07"; +createNode nurbsCurve -n "footFront_R0_inpivot2Shape" -p "footFront_R0_inpivot"; + rename -uid "6E25A42A-484A-A004-AD6A-418D6D8ECB68"; setAttr ".ihi" 0; setAttr -k off ".v"; setAttr ".ove" yes; @@ -6034,8 +6116,8 @@ createNode nurbsCurve -n "footFront_R0_inpivot11Shape" -p "footFront_R0_inpivot" 0 0 0.25 0 0 -0.25 ; -createNode nurbsCurve -n "footFront_R0_inpivot12Shape" -p "footFront_R0_inpivot"; - rename -uid "3002322E-4D93-099F-6EF7-89B2D1F64255"; +createNode nurbsCurve -n "footFront_R0_inpivot3Shape" -p "footFront_R0_inpivot"; + rename -uid "837E93D5-4541-747D-7088-9A8BB5A80BD4"; setAttr ".ihi" 0; setAttr -k off ".v"; setAttr ".ove" yes; @@ -6052,8 +6134,8 @@ createNode nurbsCurve -n "footFront_R0_inpivot12Shape" -p "footFront_R0_inpivot" 0 -0.1875 0 -0.1875 0 0 ; -createNode nurbsCurve -n "footFront_R0_inpivot12_0crvShape" -p "footFront_R0_inpivot"; - rename -uid "D9FE326D-4A3D-036A-317B-96B38795ACAA"; +createNode nurbsCurve -n "footFront_R0_inpivot3_0crvShape" -p "footFront_R0_inpivot"; + rename -uid "7CAA3DE6-4893-C174-0516-4998704AA54A"; setAttr ".ihi" 0; setAttr -k off ".v"; setAttr ".ove" yes; @@ -6070,8 +6152,8 @@ createNode nurbsCurve -n "footFront_R0_inpivot12_0crvShape" -p "footFront_R0_inp 0 0 -0.1875 -0.1875 0 0 ; -createNode nurbsCurve -n "footFront_R0_inpivot12_1crvShape" -p "footFront_R0_inpivot"; - rename -uid "3343EF93-4F79-C665-8AE8-78A396334372"; +createNode nurbsCurve -n "footFront_R0_inpivot3_1crvShape" -p "footFront_R0_inpivot"; + rename -uid "267AB165-43B5-1970-05C1-37B5BE3E2327"; setAttr ".ihi" 0; setAttr -k off ".v"; setAttr ".ove" yes; @@ -6089,19 +6171,19 @@ createNode nurbsCurve -n "footFront_R0_inpivot12_1crvShape" -p "footFront_R0_inp 0 0 -0.1875 ; createNode transform -n "footFront_R0_1" -p "footFront_R0_root"; - rename -uid "518D2CDD-4C4B-53F8-2B77-79A0B0BA57E5"; + rename -uid "7DB7FFA1-4403-F86B-8D79-5A8945265C3D"; setAttr ".ovdt" 1; setAttr ".ove" yes; - setAttr ".t" -type "double3" -7.3687973355373462 -0.60300743522684519 -16.239037496288915 ; - setAttr ".r" -type "double3" 0 179.99999999999997 0 ; - setAttr ".s" -type "double3" 7.9431701648148065 7.9431701648148056 -7.9431701648148083 ; + setAttr ".t" -type "double3" -7.3687973355373479 -0.60300743522685085 -16.239037496288905 ; + setAttr ".r" -type "double3" 0 180 0 ; + setAttr ".s" -type "double3" 7.9431701648148074 7.9431701648148074 -7.9431701648148092 ; createNode nurbsCurve -n "footFront_R0_Shape1" -p "footFront_R0_1"; - rename -uid "D885791C-4E84-7812-B7BD-C29168A10B8A"; + rename -uid "A95942CB-48FC-22AB-22CC-D0836A6C1952"; setAttr -k off ".v"; setAttr -s 4 ".iog[0].og"; setAttr ".tw" yes; createNode nurbsCurve -n "footFront_R0_Shape1Orig" -p "footFront_R0_1"; - rename -uid "3635DDBF-4F9A-4F65-EC56-9D931B359CAD"; + rename -uid "B48FDC01-484D-D04A-F6D2-EA96341855C6"; setAttr -k off ".v"; setAttr ".io" yes; setAttr ".cc" -type "nurbsCurve" @@ -6115,7 +6197,7 @@ createNode nurbsCurve -n "footFront_R0_Shape1Orig" -p "footFront_R0_1"; 0 0 0 ; createNode transform -n "frontLegUI_R0_root" -p "footFront_R0_root"; - rename -uid "BC6566C4-4768-2635-C7E7-549BEDBD3379"; + rename -uid "810383A8-4A0E-C921-F555-59856745D311"; addAttr -ci true -sn "isGearGuide" -ln "isGearGuide" -dv 1 -min 0 -max 1 -at "bool"; addAttr -ci true -sn "comp_type" -ln "comp_type" -dt "string"; addAttr -ci true -sn "comp_name" -ln "comp_name" -dt "string"; @@ -6144,7 +6226,7 @@ createNode transform -n "frontLegUI_R0_root" -p "footFront_R0_root"; addAttr -ci true -sn "useIndex" -ln "useIndex" -min 0 -max 1 -at "bool"; addAttr -ci true -sn "parentJointIndex" -ln "parentJointIndex" -at "long"; setAttr -k off -cb on ".v"; - setAttr ".t" -type "double3" 10.017876024668174 5.4248605945583073 2.5678955088137805 ; + setAttr ".t" -type "double3" 10.017876024668173 5.4248605945583162 2.5678955088138089 ; setAttr -k off -cb on ".tx"; setAttr -k off -cb on ".ty"; setAttr -k off -cb on ".tz"; @@ -6152,7 +6234,7 @@ createNode transform -n "frontLegUI_R0_root" -p "footFront_R0_root"; setAttr -k off -cb on ".ry"; setAttr -k off -cb on ".rz"; setAttr -cb on ".ro"; - setAttr ".s" -type "double3" 7.9431701648148039 7.9431701648148048 7.9431701648148065 ; + setAttr ".s" -type "double3" 7.943170164814811 7.943170164814811 7.9431701648148163 ; setAttr -k off -cb on ".sx"; setAttr -k off -cb on ".sy"; setAttr -k off -cb on ".sz"; @@ -6169,7 +6251,7 @@ createNode transform -n "frontLegUI_R0_root" -p "footFront_R0_root"; setAttr ".ctlSize" 0.5; setAttr ".parentJointIndex" -1; createNode nurbsCurve -n "frontLegUI_R0_rootShape" -p "frontLegUI_R0_root"; - rename -uid "1B8419A7-4544-70B7-8FAD-37A21813A135"; + rename -uid "EA2B3706-42A8-27D4-1912-91A62AA75693"; setAttr ".ihi" 0; setAttr -k off ".v"; setAttr ".ove" yes; @@ -6181,8 +6263,8 @@ createNode nurbsCurve -n "frontLegUI_R0_rootShape" -p "frontLegUI_R0_root"; 0.25 0 0 -0.25 0 0 ; -createNode nurbsCurve -n "frontLegUI_R0_root10Shape" -p "frontLegUI_R0_root"; - rename -uid "43029193-4CB0-E75B-5D7A-5FB7C7FF1AE1"; +createNode nurbsCurve -n "frontLegUI_R0_root1Shape" -p "frontLegUI_R0_root"; + rename -uid "1844F2B5-43E7-8C42-A8D7-B28886D1B4DE"; setAttr ".ihi" 0; setAttr -k off ".v"; setAttr ".ove" yes; @@ -6194,8 +6276,8 @@ createNode nurbsCurve -n "frontLegUI_R0_root10Shape" -p "frontLegUI_R0_root"; 0 0.25 0 0 -0.25 0 ; -createNode nurbsCurve -n "frontLegUI_R0_root11Shape" -p "frontLegUI_R0_root"; - rename -uid "4449163A-4D77-512A-3410-DB82C6CEEC1B"; +createNode nurbsCurve -n "frontLegUI_R0_root2Shape" -p "frontLegUI_R0_root"; + rename -uid "02E9DAD7-442C-1549-33C4-F4A3FDD193BF"; setAttr ".ihi" 0; setAttr -k off ".v"; setAttr ".ove" yes; @@ -6207,8 +6289,8 @@ createNode nurbsCurve -n "frontLegUI_R0_root11Shape" -p "frontLegUI_R0_root"; 0 0 0.25 0 0 -0.25 ; -createNode nurbsCurve -n "frontLegUI_R0_root12Shape" -p "frontLegUI_R0_root"; - rename -uid "A189D3F6-409B-DB8D-444F-168FB5A3D06E"; +createNode nurbsCurve -n "frontLegUI_R0_root3Shape" -p "frontLegUI_R0_root"; + rename -uid "C8ED4C1D-4F88-712A-BD6F-5FB7ABC91278"; setAttr ".ihi" 0; setAttr -k off ".v"; setAttr ".ove" yes; @@ -6235,36 +6317,35 @@ createNode nurbsCurve -n "frontLegUI_R0_root12Shape" -p "frontLegUI_R0_root"; -0.125 -0.125 -0.125 ; createNode transform -n "frontLegUI_R0_sizeRef" -p "frontLegUI_R0_root"; - rename -uid "CC108105-4C2E-D174-474F-4CBFA2F3532F"; + rename -uid "E578BAB4-4EF4-684F-9907-E6BF8970186E"; addAttr -ci true -sn "isGearGuide" -ln "isGearGuide" -dv 1 -min 0 -max 1 -at "bool"; setAttr -k off -cb on ".v"; - setAttr ".t" -type "double3" -4.4408920985006262e-016 3.3306690738754696e-016 1 ; + setAttr ".t" -type "double3" 4.4408920985006262e-016 3.3306690738754696e-016 1 ; setAttr -k off -cb on ".tx"; setAttr -k off -cb on ".ty"; setAttr -k off -cb on ".tz"; - setAttr ".r" -type "double3" 0 179.99999999999997 0 ; setAttr -k off -cb on ".rx"; setAttr -k off -cb on ".ry"; setAttr -k off -cb on ".rz"; setAttr -cb on ".ro"; - setAttr ".s" -type "double3" 1.0000000000000004 1.0000000000000002 -1.0000000000000002 ; + setAttr ".s" -type "double3" 0.99999999999999956 0.99999999999999967 0.99999999999999889 ; setAttr -k off -cb on ".sx"; setAttr -k off -cb on ".sy"; setAttr -k off -cb on ".sz"; createNode transform -n "legFront_R0_crv1" -p "legFront_R0_root"; - rename -uid "E9537FE1-458F-ABF1-B02B-F88E85429C84"; + rename -uid "CDDB0D08-4D0C-5224-1732-C9AE92C9DE58"; setAttr ".ovdt" 1; setAttr ".ove" yes; - setAttr ".t" -type "double3" -2.3211356138011703 -5.8086248814742625 -5.5045062328919352 ; + setAttr ".t" -type "double3" -2.3211356138011685 -5.8086248814742651 -5.504506232891937 ; setAttr ".r" -type "double3" 0 179.99999999999994 0 ; - setAttr ".s" -type "double3" 2.5020602842634889 2.5020602842634871 -2.5020602842634885 ; + setAttr ".s" -type "double3" 2.5020602842634889 2.5020602842634871 -2.5020602842634889 ; createNode nurbsCurve -n "legFront_R0_crvShape1" -p "legFront_R0_crv1"; - rename -uid "04523F3F-441D-FB6D-6292-55B997920FA4"; + rename -uid "FF1E86F3-4F87-7E58-B5CB-26AC27D77854"; setAttr -k off ".v"; setAttr -s 4 ".iog[0].og"; setAttr ".tw" yes; createNode nurbsCurve -n "legFront_R0_crvShape1Orig" -p "legFront_R0_crv1"; - rename -uid "35A45456-4CCB-2191-BA1D-AB81DE25CEEC"; + rename -uid "713B7474-4B17-1E21-BB6B-6B85F5309B98"; setAttr -k off ".v"; setAttr ".io" yes; setAttr ".cc" -type "nurbsCurve" @@ -6278,7 +6359,7 @@ createNode nurbsCurve -n "legFront_R0_crvShape1Orig" -p "legFront_R0_crv1"; 0 0 0 ; createNode transform -n "shoulder_R0_blade" -p "shoulder_R0_root"; - rename -uid "EA15F08A-4881-98A0-AA96-CFA1F309A7BD"; + rename -uid "E423A847-46E4-1F4F-C5AD-BDB9E57ED0D9"; addAttr -ci true -k true -sn "bladeRollOffset" -ln "bladeRollOffset" -at "float"; setAttr -l on -k off -cb on ".v"; setAttr -k off -cb on ".tx"; @@ -6288,13 +6369,13 @@ createNode transform -n "shoulder_R0_blade" -p "shoulder_R0_root"; setAttr -k off -cb on ".ry"; setAttr -k off -cb on ".rz"; setAttr -cb on ".ro"; - setAttr ".s" -type "double3" 1.0000000000000004 0.99999999999999833 0.99999999999999911 ; + setAttr ".s" -type "double3" 1.0000000000000004 0.999999999999999 0.99999999999999922 ; setAttr -l on -k off -cb on ".sx"; setAttr -l on -k off -cb on ".sy"; setAttr -l on -k off -cb on ".sz"; setAttr -k on ".bladeRollOffset"; createNode nurbsCurve -n "shoulder_R0_bladeShape" -p "shoulder_R0_blade"; - rename -uid "CB14B792-4C76-00EE-C8C4-208012661A30"; + rename -uid "A4B1FB2C-41FC-6EFF-A0D5-3BA39F9B45F1"; setAttr ".ihi" 0; setAttr -k off ".v"; setAttr ".ove" yes; @@ -6308,8 +6389,8 @@ createNode nurbsCurve -n "shoulder_R0_bladeShape" -p "shoulder_R0_blade"; 0 0.42205831527236448 0 0 0 0 ; -createNode aimConstraint -n "shoulder_R0_blade_aimConstraint4" -p "shoulder_R0_blade"; - rename -uid "B5F265BD-4C2D-64FC-689C-709B82D5B908"; +createNode aimConstraint -n "shoulder_R0_blade_aimConstraint1" -p "shoulder_R0_blade"; + rename -uid "689D9D71-489F-B245-80C5-118F5678A17B"; addAttr -dcb 0 -ci true -sn "w0" -ln "shoulder_R0_0_locW0" -dv 1 -at "double"; setAttr -k on ".nds"; setAttr -k off ".v"; @@ -6324,10 +6405,10 @@ createNode aimConstraint -n "shoulder_R0_blade_aimConstraint4" -p "shoulder_R0_b setAttr -k off ".sz"; setAttr ".erp" yes; setAttr ".wut" 2; - setAttr ".rsrr" -type "double3" 3.3599751382068015 -13.536129435773125 -14.081236533000443 ; + setAttr ".rsrr" -type "double3" 3.3599751382067859 -13.53612943577315 -14.081236533000286 ; setAttr -k on ".w0"; -createNode pointConstraint -n "shoulder_R0_blade_pointConstraint4" -p "shoulder_R0_blade"; - rename -uid "D4AB7003-455C-F9D7-FAD9-EC8AB8748B1C"; +createNode pointConstraint -n "shoulder_R0_blade_pointConstraint1" -p "shoulder_R0_blade"; + rename -uid "C03D78F2-4DED-B1ED-86A9-BC8CB912C6BF"; addAttr -dcb 0 -ci true -k true -sn "w0" -ln "shoulder_R0_rootW0" -dv 1 -min 0 -at "double"; setAttr -k on ".nds"; @@ -6345,19 +6426,19 @@ createNode pointConstraint -n "shoulder_R0_blade_pointConstraint4" -p "shoulder_ setAttr ".rst" -type "double3" 0 -4.4408920985006262e-016 0 ; setAttr -k on ".w0"; createNode transform -n "shoulder_R0_crv" -p "shoulder_R0_root"; - rename -uid "73EB224E-44A3-881B-5566-2C8E5F61B741"; + rename -uid "91552044-4392-BA8C-EC4A-8A8377D34205"; setAttr ".ovdt" 1; setAttr ".ove" yes; - setAttr ".t" -type "double3" -0.095164109147563639 -2.5303629060493167 -1.9933533667490371 ; + setAttr ".t" -type "double3" -0.095164109147563028 -2.5303629060493176 -1.9933533667490371 ; setAttr ".r" -type "double3" 0 179.99999999999997 0 ; - setAttr ".s" -type "double3" 1.0000000000000007 0.99999999999999989 -1 ; + setAttr ".s" -type "double3" 1.0000000000000007 1 -1 ; createNode nurbsCurve -n "shoulder_R0_crvShape" -p "shoulder_R0_crv"; - rename -uid "B750A4E2-432D-CAFE-CCC4-86AFC4C54D0C"; + rename -uid "3C5BE165-4AC9-8902-59ED-579E975E3F4E"; setAttr -k off ".v"; setAttr -s 4 ".iog[0].og"; setAttr ".tw" yes; createNode nurbsCurve -n "shoulder_R0_crvShapeOrig" -p "shoulder_R0_crv"; - rename -uid "E222585F-4243-AD73-702D-408A976A675A"; + rename -uid "088FDDD5-4F1A-2BFC-E939-218C6DA3DDD7"; setAttr -k off ".v"; setAttr ".io" yes; setAttr ".cc" -type "nurbsCurve" @@ -6368,7 +6449,7 @@ createNode nurbsCurve -n "shoulder_R0_crvShapeOrig" -p "shoulder_R0_crv"; 0 0 0 ; createNode transform -n "spine_C0_blade" -p "spine_C0_root"; - rename -uid "A4E43FB1-407E-E873-B546-2D8729932EAD"; + rename -uid "9E4715F0-4B74-6FC7-4CC2-9980467F0259"; addAttr -ci true -k true -sn "bladeRollOffset" -ln "bladeRollOffset" -at "float"; setAttr -l on -k off -cb on ".v"; setAttr -k off -cb on ".tx"; @@ -6384,7 +6465,7 @@ createNode transform -n "spine_C0_blade" -p "spine_C0_root"; setAttr -l on -k off -cb on ".sz"; setAttr -k on ".bladeRollOffset"; createNode nurbsCurve -n "spine_C0_bladeShape" -p "spine_C0_blade"; - rename -uid "5BFCD162-48BB-28F8-68D1-B58F69A5DD7D"; + rename -uid "55861B4B-4531-AE15-2666-EEAD527BCDB3"; setAttr ".ihi" 0; setAttr -k off ".v"; setAttr ".ove" yes; @@ -6399,7 +6480,7 @@ createNode nurbsCurve -n "spine_C0_bladeShape" -p "spine_C0_blade"; 0 0 0 ; createNode aimConstraint -n "spine_C0_blade_aimConstraint7" -p "spine_C0_blade"; - rename -uid "D7D08250-40E3-086D-826D-CF854D435EDA"; + rename -uid "8EBFB292-48C8-14A8-4478-6E9DCBBA88E2"; addAttr -dcb 0 -ci true -sn "w0" -ln "spine_C0_effW0" -dv 1 -at "double"; setAttr -k on ".nds"; setAttr -k off ".v"; @@ -6418,7 +6499,7 @@ createNode aimConstraint -n "spine_C0_blade_aimConstraint7" -p "spine_C0_blade"; 89.999999999999986 ; setAttr -k on ".w0"; createNode pointConstraint -n "spine_C0_blade_pointConstraint7" -p "spine_C0_blade"; - rename -uid "27525293-4D60-4FCE-3BA7-B3962CFB34E8"; + rename -uid "59DFA766-4741-63BC-07FD-B6AF151841D8"; addAttr -dcb 0 -ci true -k true -sn "w0" -ln "spine_C0_rootW0" -dv 1 -min 0 -at "double"; setAttr -k on ".nds"; setAttr -k off ".v"; @@ -6432,22 +6513,22 @@ createNode pointConstraint -n "spine_C0_blade_pointConstraint7" -p "spine_C0_bla setAttr -k off ".sy"; setAttr -k off ".sz"; setAttr ".erp" yes; - setAttr ".rst" -type "double3" 0 -4.4408920985006262e-016 3.944304526105059e-031 ; + setAttr ".rst" -type "double3" 0 -4.4408920985006262e-016 3.9443045261050599e-031 ; setAttr -k on ".w0"; createNode transform -n "spine_C0_crv" -p "spine_C0_root"; - rename -uid "838C192A-4DC9-D1C1-D365-E0B09E2349C2"; + rename -uid "CE0A26A5-45C7-4FD2-FFCA-228CBC0A3ABC"; setAttr ".ovdt" 1; setAttr ".ove" yes; setAttr ".t" -type "double3" 5.1074785620942285 2.6024712577026077 -3.4239055234572094e-015 ; setAttr ".r" -type "double3" -89.999999999999986 89.999999999999957 0 ; setAttr ".s" -type "double3" 2.1102915763618237 2.1102915763618237 2.1102915763618237 ; createNode nurbsCurve -n "spine_C0_crvShape" -p "spine_C0_crv"; - rename -uid "09ADBA57-4BCF-0159-15F2-2DAAD47D7467"; + rename -uid "C4BE312F-416E-4089-9555-5EB545DC88AB"; setAttr -k off ".v"; setAttr -s 4 ".iog[0].og"; setAttr ".tw" yes; createNode nurbsCurve -n "spine_C0_crvShapeOrig" -p "spine_C0_crv"; - rename -uid "1A27F58B-4862-00BA-17E0-9DA6404A21ED"; + rename -uid "BB860B9D-44F2-CBF3-0A5F-1D9B7C4437E8"; setAttr -k off ".v"; setAttr ".io" yes; setAttr ".cc" -type "nurbsCurve" @@ -6458,7 +6539,7 @@ createNode nurbsCurve -n "spine_C0_crvShapeOrig" -p "spine_C0_crv"; 0 0 0 ; createNode transform -n "legBack_L0_root" -p "spine_C0_root"; - rename -uid "854BDE46-4693-1151-296D-35B7DF3DB8D2"; + rename -uid "BDB0EC8A-4226-38D6-D1CC-ACB702179421"; addAttr -ci true -sn "isGearGuide" -ln "isGearGuide" -dv 1 -min 0 -max 1 -at "bool"; addAttr -ci true -sn "comp_type" -ln "comp_type" -dt "string"; addAttr -ci true -sn "comp_name" -ln "comp_name" -dt "string"; @@ -6504,8 +6585,8 @@ createNode transform -n "legBack_L0_root" -p "spine_C0_root"; setAttr ".ctlGrp" -type "string" ""; setAttr ".blend" 1; setAttr ".full3BonesIK" 1; - setAttr ".ikrefarray" -type "string" "local_C0_root,spine_C0_root"; - setAttr ".upvrefarray" -type "string" "local_C0_root,spine_C0_root"; + setAttr ".ikrefarray" -type "string" "local_C0_root,spine_C0_root,global_C0_root"; + setAttr ".upvrefarray" -type "string" "local_C0_root,spine_C0_root,global_C0_root"; setAttr ".maxstretch" 1.5; setAttr ".ikOri" yes; setAttr ".div0" 2; @@ -6515,7 +6596,7 @@ createNode transform -n "legBack_L0_root" -p "spine_C0_root"; setAttr -k on ".sq_profile"; setAttr ".parentJointIndex" -1; createNode nurbsCurve -n "legBack_L0_rootShape" -p "legBack_L0_root"; - rename -uid "EDFBE52A-42B9-8BC2-6D46-9DB12B3F89D9"; + rename -uid "2D0B5578-4914-3274-19BE-CD8A6525E16B"; setAttr ".ihi" 0; setAttr -k off ".v"; setAttr ".ove" yes; @@ -6528,7 +6609,7 @@ createNode nurbsCurve -n "legBack_L0_rootShape" -p "legBack_L0_root"; -0.25 0 0 ; createNode nurbsCurve -n "legBack_L0_root19Shape" -p "legBack_L0_root"; - rename -uid "60C1920F-41B4-2AD9-F650-0BAE7DB7BE3B"; + rename -uid "552FCEF5-4FC7-AB2D-1CF7-A482821708A0"; setAttr ".ihi" 0; setAttr -k off ".v"; setAttr ".ove" yes; @@ -6541,7 +6622,7 @@ createNode nurbsCurve -n "legBack_L0_root19Shape" -p "legBack_L0_root"; 0 -0.25 0 ; createNode nurbsCurve -n "legBack_L0_root20Shape" -p "legBack_L0_root"; - rename -uid "A9DA7C41-4673-9114-B7C9-2BB1C2CF2E06"; + rename -uid "894AC13F-4FB1-0B7B-E0D1-669C4985C61E"; setAttr ".ihi" 0; setAttr -k off ".v"; setAttr ".ove" yes; @@ -6554,7 +6635,7 @@ createNode nurbsCurve -n "legBack_L0_root20Shape" -p "legBack_L0_root"; 0 0 -0.25 ; createNode nurbsCurve -n "legBack_L0_root21Shape" -p "legBack_L0_root"; - rename -uid "B5B90D0B-49DB-60FA-FFAC-7F8807103B17"; + rename -uid "20E9000A-4F09-B0C0-266C-91AE24EE78F8"; setAttr ".ihi" 0; setAttr -k off ".v"; setAttr ".ove" yes; @@ -6581,7 +6662,7 @@ createNode nurbsCurve -n "legBack_L0_root21Shape" -p "legBack_L0_root"; -0.125 -0.125 -0.125 ; createNode transform -n "legBack_L0_knee" -p "legBack_L0_root"; - rename -uid "7D2F618C-4AAD-16A1-47D0-4AB02094DB32"; + rename -uid "FF6007E8-4AE2-6631-A97B-D0820F726B92"; addAttr -ci true -sn "isGearGuide" -ln "isGearGuide" -dv 1 -min 0 -max 1 -at "bool"; setAttr -k off -cb on ".v"; setAttr ".t" -type "double3" 5.1070259132757201e-015 -1.1559508743798506 0.33714517700502245 ; @@ -6597,7 +6678,7 @@ createNode transform -n "legBack_L0_knee" -p "legBack_L0_root"; setAttr -k off -cb on ".sy"; setAttr -k off -cb on ".sz"; createNode nurbsCurve -n "legBack_L0_kneeShape" -p "legBack_L0_knee"; - rename -uid "969129EF-4F2A-0429-7D98-1A9480AF7DC7"; + rename -uid "6C0D73CB-4E9F-ADFB-452F-0180573F9BE7"; setAttr ".ihi" 0; setAttr -k off ".v"; setAttr ".ove" yes; @@ -6610,7 +6691,7 @@ createNode nurbsCurve -n "legBack_L0_kneeShape" -p "legBack_L0_knee"; -0.25 0 0 ; createNode nurbsCurve -n "legBack_L0_knee19Shape" -p "legBack_L0_knee"; - rename -uid "B86CD4C8-4948-D917-FD8B-05B95E4BCE1F"; + rename -uid "0AAD4238-42D1-FBF4-25D1-EBBFEEEE978C"; setAttr ".ihi" 0; setAttr -k off ".v"; setAttr ".ove" yes; @@ -6623,7 +6704,7 @@ createNode nurbsCurve -n "legBack_L0_knee19Shape" -p "legBack_L0_knee"; 0 -0.25 0 ; createNode nurbsCurve -n "legBack_L0_knee20Shape" -p "legBack_L0_knee"; - rename -uid "1B266969-428C-62DF-CF0A-9C865261A807"; + rename -uid "6FDD8E27-4AEA-7461-1E50-84AA6496C771"; setAttr ".ihi" 0; setAttr -k off ".v"; setAttr ".ove" yes; @@ -6636,7 +6717,7 @@ createNode nurbsCurve -n "legBack_L0_knee20Shape" -p "legBack_L0_knee"; 0 0 -0.25 ; createNode nurbsCurve -n "legBack_L0_knee21Shape" -p "legBack_L0_knee"; - rename -uid "CB9A4CA0-480B-9A8B-0905-1C988D560B8E"; + rename -uid "10B16924-48BE-5192-7887-34A18041759F"; setAttr ".ihi" 0; setAttr -k off ".v"; setAttr ".ove" yes; @@ -6654,7 +6735,7 @@ createNode nurbsCurve -n "legBack_L0_knee21Shape" -p "legBack_L0_knee"; -0.1875 0 0 ; createNode nurbsCurve -n "legBack_L0_knee21_0crvShape" -p "legBack_L0_knee"; - rename -uid "2B3876DD-42DA-399D-CDE6-FF8BCB1065B8"; + rename -uid "AFE1B7EF-4CAD-885D-C87D-1D902D1823BD"; setAttr ".ihi" 0; setAttr -k off ".v"; setAttr ".ove" yes; @@ -6672,7 +6753,7 @@ createNode nurbsCurve -n "legBack_L0_knee21_0crvShape" -p "legBack_L0_knee"; -0.1875 0 0 ; createNode nurbsCurve -n "legBack_L0_knee21_1crvShape" -p "legBack_L0_knee"; - rename -uid "757147EF-45E4-1441-A26D-9C871E65E44F"; + rename -uid "3A815501-4D30-DA5C-EC82-D187AA771307"; setAttr ".ihi" 0; setAttr -k off ".v"; setAttr ".ove" yes; @@ -6690,7 +6771,7 @@ createNode nurbsCurve -n "legBack_L0_knee21_1crvShape" -p "legBack_L0_knee"; 0 0 -0.1875 ; createNode transform -n "legBack_L0_ankle" -p "legBack_L0_knee"; - rename -uid "9BA356FA-4E32-E318-E602-0C89C5464BDB"; + rename -uid "8599C415-481F-B26C-72E4-E48F0CF5AB88"; addAttr -ci true -sn "isGearGuide" -ln "isGearGuide" -dv 1 -min 0 -max 1 -at "bool"; setAttr -k off -cb on ".v"; setAttr ".t" -type "double3" 3.1086244689504383e-015 -1.4950431842245466 -0.57333193410462346 ; @@ -6706,7 +6787,7 @@ createNode transform -n "legBack_L0_ankle" -p "legBack_L0_knee"; setAttr -k off -cb on ".sy"; setAttr -k off -cb on ".sz"; createNode nurbsCurve -n "legBack_L0_ankleShape" -p "legBack_L0_ankle"; - rename -uid "B6B969AA-4F82-CEA7-F261-06B82D5660BE"; + rename -uid "8D6DCCED-4A63-E7B5-F2B5-868635DF7F8A"; setAttr ".ihi" 0; setAttr -k off ".v"; setAttr ".ove" yes; @@ -6719,7 +6800,7 @@ createNode nurbsCurve -n "legBack_L0_ankleShape" -p "legBack_L0_ankle"; -0.25 0 0 ; createNode nurbsCurve -n "legBack_L0_ankle19Shape" -p "legBack_L0_ankle"; - rename -uid "DA9583C7-404C-F38B-7579-DC8461BFFEDE"; + rename -uid "1B23A36E-40F4-630D-17FA-598A374845DA"; setAttr ".ihi" 0; setAttr -k off ".v"; setAttr ".ove" yes; @@ -6732,7 +6813,7 @@ createNode nurbsCurve -n "legBack_L0_ankle19Shape" -p "legBack_L0_ankle"; 0 -0.25 0 ; createNode nurbsCurve -n "legBack_L0_ankle20Shape" -p "legBack_L0_ankle"; - rename -uid "223B152F-4A51-C012-D632-9B82C853AD67"; + rename -uid "55DD6972-4485-D83B-D8EF-11A4B872C036"; setAttr ".ihi" 0; setAttr -k off ".v"; setAttr ".ove" yes; @@ -6745,7 +6826,7 @@ createNode nurbsCurve -n "legBack_L0_ankle20Shape" -p "legBack_L0_ankle"; 0 0 -0.25 ; createNode nurbsCurve -n "legBack_L0_ankle21Shape" -p "legBack_L0_ankle"; - rename -uid "70A8D3F8-469F-0BEA-4E26-8F8078C112F7"; + rename -uid "0F3425A0-4DF4-AFED-05FE-F6A874526D57"; setAttr ".ihi" 0; setAttr -k off ".v"; setAttr ".ove" yes; @@ -6763,7 +6844,7 @@ createNode nurbsCurve -n "legBack_L0_ankle21Shape" -p "legBack_L0_ankle"; -0.1875 0 0 ; createNode nurbsCurve -n "legBack_L0_ankle21_0crvShape" -p "legBack_L0_ankle"; - rename -uid "9E131D60-46CD-938C-D251-619C7FE2959F"; + rename -uid "4DD8AA9D-43EE-61EF-3EA3-56928542F858"; setAttr ".ihi" 0; setAttr -k off ".v"; setAttr ".ove" yes; @@ -6781,7 +6862,7 @@ createNode nurbsCurve -n "legBack_L0_ankle21_0crvShape" -p "legBack_L0_ankle"; -0.1875 0 0 ; createNode nurbsCurve -n "legBack_L0_ankle21_1crvShape" -p "legBack_L0_ankle"; - rename -uid "DB30C279-469E-FB3F-A409-B89AB29EC79A"; + rename -uid "910719FA-4936-4AEC-630A-B894486AF6EA"; setAttr ".ihi" 0; setAttr -k off ".v"; setAttr ".ove" yes; @@ -6799,7 +6880,7 @@ createNode nurbsCurve -n "legBack_L0_ankle21_1crvShape" -p "legBack_L0_ankle"; 0 0 -0.1875 ; createNode transform -n "legBack_L0_foot" -p "legBack_L0_ankle"; - rename -uid "A6FA1C45-4178-C2E7-2FD3-16892A317B95"; + rename -uid "403C2BAD-462D-AF1B-A32D-1BAA8241577C"; addAttr -ci true -sn "isGearGuide" -ln "isGearGuide" -dv 1 -min 0 -max 1 -at "bool"; setAttr -k off -cb on ".v"; setAttr ".t" -type "double3" 1.5543122344752192e-015 -0.5480558075197921 0.15050522089872964 ; @@ -6815,7 +6896,7 @@ createNode transform -n "legBack_L0_foot" -p "legBack_L0_ankle"; setAttr -k off -cb on ".sy"; setAttr -k off -cb on ".sz"; createNode nurbsCurve -n "legBack_L0_footShape" -p "legBack_L0_foot"; - rename -uid "F38B4CA4-43B6-E2DA-8C52-5CB51EF90CF2"; + rename -uid "0581E5CF-4B68-0B37-DB88-F7B321A37517"; setAttr ".ihi" 0; setAttr -k off ".v"; setAttr ".ove" yes; @@ -6828,7 +6909,7 @@ createNode nurbsCurve -n "legBack_L0_footShape" -p "legBack_L0_foot"; -0.25 0 0 ; createNode nurbsCurve -n "legBack_L0_foot19Shape" -p "legBack_L0_foot"; - rename -uid "1886A8BC-4BF1-1476-7FBA-B99044CDE3AF"; + rename -uid "88E59D56-4D61-F7E0-4C93-27A413048C82"; setAttr ".ihi" 0; setAttr -k off ".v"; setAttr ".ove" yes; @@ -6841,7 +6922,7 @@ createNode nurbsCurve -n "legBack_L0_foot19Shape" -p "legBack_L0_foot"; 0 -0.25 0 ; createNode nurbsCurve -n "legBack_L0_foot20Shape" -p "legBack_L0_foot"; - rename -uid "CAD69A2D-4E4F-DB4B-7020-E5B804C9A5D6"; + rename -uid "28C2B126-45F5-0406-675F-39A414EB5BF6"; setAttr ".ihi" 0; setAttr -k off ".v"; setAttr ".ove" yes; @@ -6854,7 +6935,7 @@ createNode nurbsCurve -n "legBack_L0_foot20Shape" -p "legBack_L0_foot"; 0 0 -0.25 ; createNode nurbsCurve -n "legBack_L0_foot21Shape" -p "legBack_L0_foot"; - rename -uid "EC14D4F7-4A07-942B-2F10-3999CFA07ADB"; + rename -uid "0AA4151B-4E20-6E1A-400C-A88C162CDAFE"; setAttr ".ihi" 0; setAttr -k off ".v"; setAttr ".ove" yes; @@ -6872,7 +6953,7 @@ createNode nurbsCurve -n "legBack_L0_foot21Shape" -p "legBack_L0_foot"; -0.1875 0 0 ; createNode nurbsCurve -n "legBack_L0_foot21_0crvShape" -p "legBack_L0_foot"; - rename -uid "30D586DC-4109-522D-A8F0-B6B423E6831C"; + rename -uid "CAF2DE47-464A-C5AD-BF0C-ABAAE0A92E1D"; setAttr ".ihi" 0; setAttr -k off ".v"; setAttr ".ove" yes; @@ -6890,7 +6971,7 @@ createNode nurbsCurve -n "legBack_L0_foot21_0crvShape" -p "legBack_L0_foot"; -0.1875 0 0 ; createNode nurbsCurve -n "legBack_L0_foot21_1crvShape" -p "legBack_L0_foot"; - rename -uid "6A264FFA-4DE6-34CF-B4B2-B693F50C4E0E"; + rename -uid "8F8A2E9F-4E8E-F394-7181-B0A6F20A73CF"; setAttr ".ihi" 0; setAttr -k off ".v"; setAttr ".ove" yes; @@ -6908,7 +6989,7 @@ createNode nurbsCurve -n "legBack_L0_foot21_1crvShape" -p "legBack_L0_foot"; 0 0 -0.1875 ; createNode transform -n "legBack_L0_eff" -p "legBack_L0_foot"; - rename -uid "3B367956-47FD-1895-1A66-31B21897B0AD"; + rename -uid "76858053-47A1-67A7-F211-A899D5E32BBA"; addAttr -ci true -sn "isGearGuide" -ln "isGearGuide" -dv 1 -min 0 -max 1 -at "bool"; setAttr -k off -cb on ".v"; setAttr ".t" -type "double3" 2.6645352591003757e-015 7.4940054162198066e-016 0.28135643819707434 ; @@ -6924,7 +7005,7 @@ createNode transform -n "legBack_L0_eff" -p "legBack_L0_foot"; setAttr -k off -cb on ".sy"; setAttr -k off -cb on ".sz"; createNode nurbsCurve -n "legBack_L0_effShape" -p "legBack_L0_eff"; - rename -uid "31432837-47DE-D006-83E9-9EBFB2D3CDCA"; + rename -uid "1F828126-4967-081D-FC74-FE9FA07564DF"; setAttr ".ihi" 0; setAttr -k off ".v"; setAttr ".ove" yes; @@ -6937,7 +7018,7 @@ createNode nurbsCurve -n "legBack_L0_effShape" -p "legBack_L0_eff"; -0.25 0 0 ; createNode nurbsCurve -n "legBack_L0_eff19Shape" -p "legBack_L0_eff"; - rename -uid "26F3746E-4311-959B-4048-81A370C60425"; + rename -uid "2B47682E-4E39-912A-B862-7894373DEC57"; setAttr ".ihi" 0; setAttr -k off ".v"; setAttr ".ove" yes; @@ -6950,7 +7031,7 @@ createNode nurbsCurve -n "legBack_L0_eff19Shape" -p "legBack_L0_eff"; 0 -0.25 0 ; createNode nurbsCurve -n "legBack_L0_eff20Shape" -p "legBack_L0_eff"; - rename -uid "0640291F-478D-FFF6-4B73-7C9B75DDA6AC"; + rename -uid "94E13331-4069-1BA1-4337-75A6928F80DE"; setAttr ".ihi" 0; setAttr -k off ".v"; setAttr ".ove" yes; @@ -6963,7 +7044,7 @@ createNode nurbsCurve -n "legBack_L0_eff20Shape" -p "legBack_L0_eff"; 0 0 -0.25 ; createNode nurbsCurve -n "legBack_L0_eff21Shape" -p "legBack_L0_eff"; - rename -uid "2A446466-4956-F88C-3EA6-57BB25C5C70E"; + rename -uid "B951A57D-4F7D-FE34-2FF4-069857E5ECBF"; setAttr ".ihi" 0; setAttr -k off ".v"; setAttr ".ove" yes; @@ -6981,7 +7062,7 @@ createNode nurbsCurve -n "legBack_L0_eff21Shape" -p "legBack_L0_eff"; -0.1875 0 0 ; createNode nurbsCurve -n "legBack_L0_eff21_0crvShape" -p "legBack_L0_eff"; - rename -uid "6D5A8213-42AD-95E7-5D02-758F048CF300"; + rename -uid "44A68BD1-4FD9-9DCE-2263-169687549E94"; setAttr ".ihi" 0; setAttr -k off ".v"; setAttr ".ove" yes; @@ -6999,7 +7080,7 @@ createNode nurbsCurve -n "legBack_L0_eff21_0crvShape" -p "legBack_L0_eff"; -0.1875 0 0 ; createNode nurbsCurve -n "legBack_L0_eff21_1crvShape" -p "legBack_L0_eff"; - rename -uid "65F06023-4C0E-C90D-7B36-808D69BB99FD"; + rename -uid "C97D7B08-41EE-F696-56E5-69B8E322815F"; setAttr ".ihi" 0; setAttr -k off ".v"; setAttr ".ove" yes; @@ -7017,7 +7098,7 @@ createNode nurbsCurve -n "legBack_L0_eff21_1crvShape" -p "legBack_L0_eff"; 0 0 -0.1875 ; createNode transform -n "footBack_L0_root" -p "legBack_L0_foot"; - rename -uid "57B2D17E-41DB-71B6-EEC0-EAB0520D50DF"; + rename -uid "91977E37-4189-6EEA-9934-BF83082C8AF4"; addAttr -ci true -sn "isGearGuide" -ln "isGearGuide" -dv 1 -min 0 -max 1 -at "bool"; addAttr -ci true -sn "comp_type" -ln "comp_type" -dt "string"; addAttr -ci true -sn "comp_name" -ln "comp_name" -dt "string"; @@ -7051,7 +7132,7 @@ createNode transform -n "footBack_L0_root" -p "legBack_L0_foot"; setAttr ".useRollCtl" yes; setAttr ".parentJointIndex" -1; createNode nurbsCurve -n "footBack_L0_rootShape" -p "footBack_L0_root"; - rename -uid "4DB617DD-4C72-3BBA-9A17-329BAD1C5741"; + rename -uid "04D0109E-4E1A-643A-AE44-7BA92E61B1C1"; setAttr ".ihi" 0; setAttr -k off ".v"; setAttr ".ove" yes; @@ -7064,7 +7145,7 @@ createNode nurbsCurve -n "footBack_L0_rootShape" -p "footBack_L0_root"; -0.25 0 0 ; createNode nurbsCurve -n "footBack_L0_root19Shape" -p "footBack_L0_root"; - rename -uid "96FA23F1-46CA-A985-C5FF-D58AE8F33C84"; + rename -uid "D8F9BB5C-404B-88ED-7612-2CB36A45059F"; setAttr ".ihi" 0; setAttr -k off ".v"; setAttr ".ove" yes; @@ -7077,7 +7158,7 @@ createNode nurbsCurve -n "footBack_L0_root19Shape" -p "footBack_L0_root"; 0 -0.25 0 ; createNode nurbsCurve -n "footBack_L0_root20Shape" -p "footBack_L0_root"; - rename -uid "7D9DD3A3-40FB-CCEA-7972-F1AA054A73E0"; + rename -uid "7ECE42E4-49DE-B81D-3738-6996EEC65FA5"; setAttr ".ihi" 0; setAttr -k off ".v"; setAttr ".ove" yes; @@ -7090,7 +7171,7 @@ createNode nurbsCurve -n "footBack_L0_root20Shape" -p "footBack_L0_root"; 0 0 -0.25 ; createNode nurbsCurve -n "footBack_L0_root21Shape" -p "footBack_L0_root"; - rename -uid "A0E680D8-4692-EF9C-750D-29B58C262798"; + rename -uid "C0412FBB-436D-5615-5742-D4A223CC39F0"; setAttr ".ihi" 0; setAttr -k off ".v"; setAttr ".ove" yes; @@ -7117,7 +7198,7 @@ createNode nurbsCurve -n "footBack_L0_root21Shape" -p "footBack_L0_root"; -0.125 -0.125 -0.125 ; createNode transform -n "footBack_L0_0_loc" -p "footBack_L0_root"; - rename -uid "F89BE2B3-4F9C-F833-64FB-2EA171C96CEB"; + rename -uid "A2012E36-4800-A9C1-FC04-BDADE45BC90B"; addAttr -ci true -sn "isGearGuide" -ln "isGearGuide" -dv 1 -min 0 -max 1 -at "bool"; setAttr -k off -cb on ".v"; setAttr ".t" -type "double3" -1.7763568394002505e-014 2.2204460492503131e-016 0.54565565303279762 ; @@ -7133,7 +7214,7 @@ createNode transform -n "footBack_L0_0_loc" -p "footBack_L0_root"; setAttr -k off -cb on ".sy"; setAttr -k off -cb on ".sz"; createNode nurbsCurve -n "footBack_L0_0_locShape" -p "footBack_L0_0_loc"; - rename -uid "2CD8B7DA-4BE7-0613-6E23-16B9DE864C77"; + rename -uid "869F2A94-4922-CF4C-61C0-9BB64E86672F"; setAttr ".ihi" 0; setAttr -k off ".v"; setAttr ".ove" yes; @@ -7146,7 +7227,7 @@ createNode nurbsCurve -n "footBack_L0_0_locShape" -p "footBack_L0_0_loc"; -0.25 0 0 ; createNode nurbsCurve -n "footBack_L0_0_loc19Shape" -p "footBack_L0_0_loc"; - rename -uid "AA33CA2C-4E75-7073-1F2D-A0BFF2C19F36"; + rename -uid "7BA74D78-4401-7D2B-0B62-AAB9D31BC1EC"; setAttr ".ihi" 0; setAttr -k off ".v"; setAttr ".ove" yes; @@ -7159,7 +7240,7 @@ createNode nurbsCurve -n "footBack_L0_0_loc19Shape" -p "footBack_L0_0_loc"; 0 -0.25 0 ; createNode nurbsCurve -n "footBack_L0_0_loc20Shape" -p "footBack_L0_0_loc"; - rename -uid "06F0B543-4A94-D78B-F0CE-6EBA08385CD1"; + rename -uid "E45202FD-41A8-E2C3-185C-D48B30F8CB22"; setAttr ".ihi" 0; setAttr -k off ".v"; setAttr ".ove" yes; @@ -7172,7 +7253,7 @@ createNode nurbsCurve -n "footBack_L0_0_loc20Shape" -p "footBack_L0_0_loc"; 0 0 -0.25 ; createNode nurbsCurve -n "footBack_L0_0_loc21Shape" -p "footBack_L0_0_loc"; - rename -uid "D44E59FB-470F-6986-6AF1-1DAC3A90CA01"; + rename -uid "47A85AC6-4E3F-4E4C-D021-459FC4B63C0A"; setAttr ".ihi" 0; setAttr -k off ".v"; setAttr ".ove" yes; @@ -7190,7 +7271,7 @@ createNode nurbsCurve -n "footBack_L0_0_loc21Shape" -p "footBack_L0_0_loc"; -0.1875 0 0 ; createNode nurbsCurve -n "footBack_L0_0_loc21_0crvShape" -p "footBack_L0_0_loc"; - rename -uid "118AE9CC-42E6-5956-1E8E-48B03F0F07D9"; + rename -uid "4100A738-4135-A82B-AE40-B185867773BE"; setAttr ".ihi" 0; setAttr -k off ".v"; setAttr ".ove" yes; @@ -7208,7 +7289,7 @@ createNode nurbsCurve -n "footBack_L0_0_loc21_0crvShape" -p "footBack_L0_0_loc"; -0.1875 0 0 ; createNode nurbsCurve -n "footBack_L0_0_loc21_1crvShape" -p "footBack_L0_0_loc"; - rename -uid "A12BF87E-45C9-6B20-D00B-3D9DA743BD0F"; + rename -uid "A448AC90-4712-FF5F-717E-07BE4D660C7F"; setAttr ".ihi" 0; setAttr -k off ".v"; setAttr ".ove" yes; @@ -7226,7 +7307,7 @@ createNode nurbsCurve -n "footBack_L0_0_loc21_1crvShape" -p "footBack_L0_0_loc"; 0 0 -0.1875 ; createNode transform -n "footBack_L0_1_loc" -p "footBack_L0_0_loc"; - rename -uid "D5F26F2F-4ADF-757A-C864-E088AE5A3680"; + rename -uid "A1987AC5-45EC-9C92-5B0B-E99C9AC53905"; addAttr -ci true -sn "isGearGuide" -ln "isGearGuide" -dv 1 -min 0 -max 1 -at "bool"; setAttr -k off -cb on ".v"; setAttr ".t" -type "double3" 5.3290705182007514e-015 -0.34547277013915562 0.77046072389792997 ; @@ -7242,7 +7323,7 @@ createNode transform -n "footBack_L0_1_loc" -p "footBack_L0_0_loc"; setAttr -k off -cb on ".sy"; setAttr -k off -cb on ".sz"; createNode nurbsCurve -n "footBack_L0_1_locShape" -p "footBack_L0_1_loc"; - rename -uid "961CC71C-4A37-C6E0-C668-CCAF28D14386"; + rename -uid "89950501-4D47-BD8D-8432-63A58F0824C4"; setAttr ".ihi" 0; setAttr -k off ".v"; setAttr ".ove" yes; @@ -7255,7 +7336,7 @@ createNode nurbsCurve -n "footBack_L0_1_locShape" -p "footBack_L0_1_loc"; -0.25 0 0 ; createNode nurbsCurve -n "footBack_L0_1_loc19Shape" -p "footBack_L0_1_loc"; - rename -uid "01461B0A-4934-5C3D-92AC-19AE5A7E4E55"; + rename -uid "98C6B219-4853-5D77-3477-3C91ED15447B"; setAttr ".ihi" 0; setAttr -k off ".v"; setAttr ".ove" yes; @@ -7268,7 +7349,7 @@ createNode nurbsCurve -n "footBack_L0_1_loc19Shape" -p "footBack_L0_1_loc"; 0 -0.25 0 ; createNode nurbsCurve -n "footBack_L0_1_loc20Shape" -p "footBack_L0_1_loc"; - rename -uid "863C51CA-4BE1-691D-FF29-25A27FE4E21B"; + rename -uid "2419AB6B-4323-28CD-8BE4-798EBFB69834"; setAttr ".ihi" 0; setAttr -k off ".v"; setAttr ".ove" yes; @@ -7281,7 +7362,7 @@ createNode nurbsCurve -n "footBack_L0_1_loc20Shape" -p "footBack_L0_1_loc"; 0 0 -0.25 ; createNode nurbsCurve -n "footBack_L0_1_loc21Shape" -p "footBack_L0_1_loc"; - rename -uid "D0EE717C-4E73-96B1-87F6-418CDFC312E1"; + rename -uid "DDA03361-4123-DD06-8B01-25827B25D6A0"; setAttr ".ihi" 0; setAttr -k off ".v"; setAttr ".ove" yes; @@ -7299,7 +7380,7 @@ createNode nurbsCurve -n "footBack_L0_1_loc21Shape" -p "footBack_L0_1_loc"; -0.1875 0 0 ; createNode nurbsCurve -n "footBack_L0_1_loc21_0crvShape" -p "footBack_L0_1_loc"; - rename -uid "4ACC4D1B-470F-BBA1-1C98-3683D133D0E2"; + rename -uid "A1A12062-4F1A-2F0F-F289-1F9D510490E4"; setAttr ".ihi" 0; setAttr -k off ".v"; setAttr ".ove" yes; @@ -7317,7 +7398,7 @@ createNode nurbsCurve -n "footBack_L0_1_loc21_0crvShape" -p "footBack_L0_1_loc"; -0.1875 0 0 ; createNode nurbsCurve -n "footBack_L0_1_loc21_1crvShape" -p "footBack_L0_1_loc"; - rename -uid "C2B963C3-4089-55B7-545F-64B89B0A2979"; + rename -uid "8A64324A-4693-C68B-3FE2-76AB4AEF2F49"; setAttr ".ihi" 0; setAttr -k off ".v"; setAttr ".ove" yes; @@ -7335,18 +7416,18 @@ createNode nurbsCurve -n "footBack_L0_1_loc21_1crvShape" -p "footBack_L0_1_loc"; 0 0 -0.1875 ; createNode transform -n "footBack_L0_crv" -p "footBack_L0_root"; - rename -uid "63ABB344-4ED8-6DA5-0837-E7ABB598C0AF"; + rename -uid "8431B7B2-43DD-B732-685D-44922C80F1FF"; setAttr ".ovdt" 1; setAttr ".ove" yes; setAttr ".t" -type "double3" -10.980332218718949 -0.49678747209358587 11.584116504196627 ; setAttr ".s" -type "double3" 8.6433157474725757 8.6433157474725757 8.6433157474725792 ; createNode nurbsCurve -n "footBack_L0_crvShape" -p "footBack_L0_crv"; - rename -uid "1727B23F-48B4-2D53-0BA4-0A8A4D716F82"; + rename -uid "F813FE96-452B-73CE-95E4-31A9C88058A0"; setAttr -k off ".v"; setAttr -s 4 ".iog[0].og"; setAttr ".tw" yes; createNode nurbsCurve -n "footBack_L0_crvShapeOrig" -p "footBack_L0_crv"; - rename -uid "75FE958F-40EE-10CC-724A-BAA2629E4ACD"; + rename -uid "CA337E73-457B-8A40-D337-1DAFDEDB9860"; setAttr -k off ".v"; setAttr ".io" yes; setAttr ".cc" -type "nurbsCurve" @@ -7358,7 +7439,7 @@ createNode nurbsCurve -n "footBack_L0_crvShapeOrig" -p "footBack_L0_crv"; 0 0 0 ; createNode transform -n "footBack_L0_heel" -p "footBack_L0_root"; - rename -uid "6A7D6F66-42A9-00EC-FF70-5282A7E9331A"; + rename -uid "E69DC031-443D-F99A-7DE9-8EBFAA833BF7"; addAttr -ci true -sn "isGearGuide" -ln "isGearGuide" -dv 1 -min 0 -max 1 -at "bool"; setAttr -k off -cb on ".v"; setAttr ".t" -type "double3" -1.9539925233402755e-014 -0.34547277013915645 -0.37260003933978325 ; @@ -7374,7 +7455,7 @@ createNode transform -n "footBack_L0_heel" -p "footBack_L0_root"; setAttr -k off -cb on ".sy"; setAttr -k off -cb on ".sz"; createNode nurbsCurve -n "footBack_L0_heelShape" -p "footBack_L0_heel"; - rename -uid "D497058E-44A5-C17C-1C96-988A72F4EE99"; + rename -uid "42A696E6-41DD-304A-618A-8DB31269F3FD"; setAttr ".ihi" 0; setAttr -k off ".v"; setAttr ".ove" yes; @@ -7387,7 +7468,7 @@ createNode nurbsCurve -n "footBack_L0_heelShape" -p "footBack_L0_heel"; -0.25 0 0 ; createNode nurbsCurve -n "footBack_L0_heel19Shape" -p "footBack_L0_heel"; - rename -uid "1A39734D-452B-9055-1CAE-149990C6C9AB"; + rename -uid "E0851BC1-439D-FFC1-B4C3-30A7BB6FDE4E"; setAttr ".ihi" 0; setAttr -k off ".v"; setAttr ".ove" yes; @@ -7400,7 +7481,7 @@ createNode nurbsCurve -n "footBack_L0_heel19Shape" -p "footBack_L0_heel"; 0 -0.25 0 ; createNode nurbsCurve -n "footBack_L0_heel20Shape" -p "footBack_L0_heel"; - rename -uid "78F46460-4EED-372A-6F84-38A83AA4E608"; + rename -uid "6852CBB1-4A92-65D5-69CD-CE98C282D974"; setAttr ".ihi" 0; setAttr -k off ".v"; setAttr ".ove" yes; @@ -7413,7 +7494,7 @@ createNode nurbsCurve -n "footBack_L0_heel20Shape" -p "footBack_L0_heel"; 0 0 -0.25 ; createNode nurbsCurve -n "footBack_L0_heel21Shape" -p "footBack_L0_heel"; - rename -uid "03E11FD8-4749-05A0-7445-8BBFAE59AC16"; + rename -uid "1F25FD35-47F7-493B-BA97-0BB00B7DE992"; setAttr ".ihi" 0; setAttr -k off ".v"; setAttr ".ove" yes; @@ -7431,7 +7512,7 @@ createNode nurbsCurve -n "footBack_L0_heel21Shape" -p "footBack_L0_heel"; -0.1875 0 0 ; createNode nurbsCurve -n "footBack_L0_heel21_0crvShape" -p "footBack_L0_heel"; - rename -uid "5EFAE98F-4374-D5BA-07EF-4290B7D4408D"; + rename -uid "730561AE-48DC-D54E-925E-AC9D56DA19A6"; setAttr ".ihi" 0; setAttr -k off ".v"; setAttr ".ove" yes; @@ -7449,7 +7530,7 @@ createNode nurbsCurve -n "footBack_L0_heel21_0crvShape" -p "footBack_L0_heel"; -0.1875 0 0 ; createNode nurbsCurve -n "footBack_L0_heel21_1crvShape" -p "footBack_L0_heel"; - rename -uid "0F4E1E72-46E7-867A-2939-9696992BA621"; + rename -uid "E1A156B4-4076-EF0A-132E-53BFA0BB36BE"; setAttr ".ihi" 0; setAttr -k off ".v"; setAttr ".ove" yes; @@ -7467,7 +7548,7 @@ createNode nurbsCurve -n "footBack_L0_heel21_1crvShape" -p "footBack_L0_heel"; 0 0 -0.1875 ; createNode transform -n "footBack_L0_outpivot" -p "footBack_L0_root"; - rename -uid "4939D217-41F2-0863-B3CA-AC9A36047787"; + rename -uid "B7886E06-4F18-3AB6-3281-3BA39035267D"; addAttr -ci true -sn "isGearGuide" -ln "isGearGuide" -dv 1 -min 0 -max 1 -at "bool"; setAttr -k off -cb on ".v"; setAttr ".t" -type "double3" 1.0422206583139726 -0.34547277013915523 0.11497296198779061 ; @@ -7483,7 +7564,7 @@ createNode transform -n "footBack_L0_outpivot" -p "footBack_L0_root"; setAttr -k off -cb on ".sy"; setAttr -k off -cb on ".sz"; createNode nurbsCurve -n "footBack_L0_outpivotShape" -p "footBack_L0_outpivot"; - rename -uid "6491462A-4FD3-98C0-59DF-46B7B56BD9BE"; + rename -uid "8B50CE45-4CA3-1BBD-7C6E-AEA8DE0096C2"; setAttr ".ihi" 0; setAttr -k off ".v"; setAttr ".ove" yes; @@ -7496,7 +7577,7 @@ createNode nurbsCurve -n "footBack_L0_outpivotShape" -p "footBack_L0_outpivot"; -0.25 0 0 ; createNode nurbsCurve -n "footBack_L0_outpivot19Shape" -p "footBack_L0_outpivot"; - rename -uid "ECE926A3-4369-053C-F2BF-54BD16934D05"; + rename -uid "1FD910E3-433A-07AA-42C4-E39A34BD6CF1"; setAttr ".ihi" 0; setAttr -k off ".v"; setAttr ".ove" yes; @@ -7509,7 +7590,7 @@ createNode nurbsCurve -n "footBack_L0_outpivot19Shape" -p "footBack_L0_outpivot" 0 -0.25 0 ; createNode nurbsCurve -n "footBack_L0_outpivot20Shape" -p "footBack_L0_outpivot"; - rename -uid "1AD9ABF2-4B86-BA3A-E174-71A1E357AB75"; + rename -uid "584FB068-4286-98BA-1A81-80BD9A829C06"; setAttr ".ihi" 0; setAttr -k off ".v"; setAttr ".ove" yes; @@ -7522,7 +7603,7 @@ createNode nurbsCurve -n "footBack_L0_outpivot20Shape" -p "footBack_L0_outpivot" 0 0 -0.25 ; createNode nurbsCurve -n "footBack_L0_outpivot21Shape" -p "footBack_L0_outpivot"; - rename -uid "B3452A3A-4E07-11A4-2504-418B95BC4D23"; + rename -uid "9C32BC3F-4C5C-BDB5-AF9D-17A89535AED8"; setAttr ".ihi" 0; setAttr -k off ".v"; setAttr ".ove" yes; @@ -7540,7 +7621,7 @@ createNode nurbsCurve -n "footBack_L0_outpivot21Shape" -p "footBack_L0_outpivot" -0.1875 0 0 ; createNode nurbsCurve -n "footBack_L0_outpivot21_0crvShape" -p "footBack_L0_outpivot"; - rename -uid "233BCAB1-4365-8EC1-53C8-E7B2DC96ECE9"; + rename -uid "2BDB9D6C-493B-4033-150E-E285CD3F4482"; setAttr ".ihi" 0; setAttr -k off ".v"; setAttr ".ove" yes; @@ -7558,7 +7639,7 @@ createNode nurbsCurve -n "footBack_L0_outpivot21_0crvShape" -p "footBack_L0_outp -0.1875 0 0 ; createNode nurbsCurve -n "footBack_L0_outpivot21_1crvShape" -p "footBack_L0_outpivot"; - rename -uid "FB0F32A2-4DCB-2670-158B-2FB1F443102F"; + rename -uid "6DACE284-4401-5E56-FAA2-1FB8D0FA8D58"; setAttr ".ihi" 0; setAttr -k off ".v"; setAttr ".ove" yes; @@ -7576,7 +7657,7 @@ createNode nurbsCurve -n "footBack_L0_outpivot21_1crvShape" -p "footBack_L0_outp 0 0 -0.1875 ; createNode transform -n "footBack_L0_inpivot" -p "footBack_L0_root"; - rename -uid "0936F62B-446B-42B9-421C-F3885735F121"; + rename -uid "D33DB17B-413C-15D4-0FC6-43A3EFBB812B"; addAttr -ci true -sn "isGearGuide" -ln "isGearGuide" -dv 1 -min 0 -max 1 -at "bool"; setAttr -k off -cb on ".v"; setAttr ".t" -type "double3" -1.1682146826215725 -0.34547277013915723 0.21228136011732168 ; @@ -7592,7 +7673,7 @@ createNode transform -n "footBack_L0_inpivot" -p "footBack_L0_root"; setAttr -k off -cb on ".sy"; setAttr -k off -cb on ".sz"; createNode nurbsCurve -n "footBack_L0_inpivotShape" -p "footBack_L0_inpivot"; - rename -uid "70DDA392-4980-3559-EC11-D8976297DE7B"; + rename -uid "602EA6E5-42FB-AF2B-4324-DE9683B15142"; setAttr ".ihi" 0; setAttr -k off ".v"; setAttr ".ove" yes; @@ -7605,7 +7686,7 @@ createNode nurbsCurve -n "footBack_L0_inpivotShape" -p "footBack_L0_inpivot"; -0.25 0 0 ; createNode nurbsCurve -n "footBack_L0_inpivot19Shape" -p "footBack_L0_inpivot"; - rename -uid "715EDCE4-44C3-7BAF-02A8-4E9760E9BDB9"; + rename -uid "98675451-405C-E392-6205-EDA9FAA37C01"; setAttr ".ihi" 0; setAttr -k off ".v"; setAttr ".ove" yes; @@ -7618,7 +7699,7 @@ createNode nurbsCurve -n "footBack_L0_inpivot19Shape" -p "footBack_L0_inpivot"; 0 -0.25 0 ; createNode nurbsCurve -n "footBack_L0_inpivot20Shape" -p "footBack_L0_inpivot"; - rename -uid "511B19BB-42C2-B859-4FAE-31917D4D5D05"; + rename -uid "174ABD0B-4B98-617D-A384-F197CBF9C908"; setAttr ".ihi" 0; setAttr -k off ".v"; setAttr ".ove" yes; @@ -7631,7 +7712,7 @@ createNode nurbsCurve -n "footBack_L0_inpivot20Shape" -p "footBack_L0_inpivot"; 0 0 -0.25 ; createNode nurbsCurve -n "footBack_L0_inpivot21Shape" -p "footBack_L0_inpivot"; - rename -uid "66014143-49F7-4498-E118-35A9D5D5CBED"; + rename -uid "7097AB6E-497F-C370-2C10-A49BFE43032F"; setAttr ".ihi" 0; setAttr -k off ".v"; setAttr ".ove" yes; @@ -7649,7 +7730,7 @@ createNode nurbsCurve -n "footBack_L0_inpivot21Shape" -p "footBack_L0_inpivot"; -0.1875 0 0 ; createNode nurbsCurve -n "footBack_L0_inpivot21_0crvShape" -p "footBack_L0_inpivot"; - rename -uid "80E5CA0E-4636-6CF6-3545-399E67AEB30F"; + rename -uid "EF29CA29-4167-1B2F-68F4-5799A96BA8B6"; setAttr ".ihi" 0; setAttr -k off ".v"; setAttr ".ove" yes; @@ -7667,7 +7748,7 @@ createNode nurbsCurve -n "footBack_L0_inpivot21_0crvShape" -p "footBack_L0_inpiv -0.1875 0 0 ; createNode nurbsCurve -n "footBack_L0_inpivot21_1crvShape" -p "footBack_L0_inpivot"; - rename -uid "E5317E4E-4A9C-A325-33A4-1B88E7BB2199"; + rename -uid "582DFBB6-4084-A3C1-983B-C189F3A18262"; setAttr ".ihi" 0; setAttr -k off ".v"; setAttr ".ove" yes; @@ -7685,18 +7766,18 @@ createNode nurbsCurve -n "footBack_L0_inpivot21_1crvShape" -p "footBack_L0_inpiv 0 0 -0.1875 ; createNode transform -n "footBack_L0_1" -p "footBack_L0_root"; - rename -uid "D56713DC-4375-0C3E-FFEA-B1AEE3D104FB"; + rename -uid "C2F826E6-4EC5-C1C0-26D6-D3A0DF1F260B"; setAttr ".ovdt" 1; setAttr ".ove" yes; setAttr ".t" -type "double3" -10.980332218718949 -0.49678747209358587 11.584116504196627 ; setAttr ".s" -type "double3" 8.6433157474725757 8.6433157474725757 8.6433157474725792 ; createNode nurbsCurve -n "footBack_L0_Shape1" -p "footBack_L0_1"; - rename -uid "8665E698-4D20-900B-7CCF-C2B4799AF333"; + rename -uid "29546393-41C4-BB4A-BC90-F4B3C0AE6753"; setAttr -k off ".v"; setAttr -s 4 ".iog[0].og"; setAttr ".tw" yes; -createNode nurbsCurve -n "footBack_L0_Shape1Orig" -p "footBack_L0_1"; - rename -uid "6D2E4E8E-47BA-65E6-8A16-2ABC9B243782"; +createNode nurbsCurve -n "footBack_L0_Shape1Orig1" -p "footBack_L0_1"; + rename -uid "35625F3C-48E3-34DF-71A3-AEB571F5B8F7"; setAttr -k off ".v"; setAttr ".io" yes; setAttr ".cc" -type "nurbsCurve" @@ -7710,7 +7791,7 @@ createNode nurbsCurve -n "footBack_L0_Shape1Orig" -p "footBack_L0_1"; 0 0 0 ; createNode transform -n "backLegUI_L0_root" -p "footBack_L0_root"; - rename -uid "FF1A60DF-4575-9038-D4C4-E69B405A2624"; + rename -uid "499AA056-4EE3-83B3-61BB-C6A197D2866E"; addAttr -ci true -sn "isGearGuide" -ln "isGearGuide" -dv 1 -min 0 -max 1 -at "bool"; addAttr -ci true -sn "comp_type" -ln "comp_type" -dt "string"; addAttr -ci true -sn "comp_name" -ln "comp_name" -dt "string"; @@ -7764,7 +7845,7 @@ createNode transform -n "backLegUI_L0_root" -p "footBack_L0_root"; setAttr ".ctlSize" 0.5; setAttr ".parentJointIndex" -1; createNode nurbsCurve -n "backLegUI_L0_rootShape" -p "backLegUI_L0_root"; - rename -uid "FE6F4329-4473-D499-76A9-319BC8489836"; + rename -uid "B133EE6C-4BA8-128A-3A37-62B6C2331CC3"; setAttr ".ihi" 0; setAttr -k off ".v"; setAttr ".ove" yes; @@ -7777,7 +7858,7 @@ createNode nurbsCurve -n "backLegUI_L0_rootShape" -p "backLegUI_L0_root"; -0.25 0 0 ; createNode nurbsCurve -n "backLegUI_L0_root19Shape" -p "backLegUI_L0_root"; - rename -uid "0D757D60-4A62-8047-6326-3F9C98243753"; + rename -uid "365B133E-41E7-461D-344D-14A1CEE508F8"; setAttr ".ihi" 0; setAttr -k off ".v"; setAttr ".ove" yes; @@ -7790,7 +7871,7 @@ createNode nurbsCurve -n "backLegUI_L0_root19Shape" -p "backLegUI_L0_root"; 0 -0.25 0 ; createNode nurbsCurve -n "backLegUI_L0_root20Shape" -p "backLegUI_L0_root"; - rename -uid "C123B782-4D07-EB78-DEA7-F1B07BB8098D"; + rename -uid "3B0E94E0-424E-F7D2-7998-ADA46503078A"; setAttr ".ihi" 0; setAttr -k off ".v"; setAttr ".ove" yes; @@ -7803,7 +7884,7 @@ createNode nurbsCurve -n "backLegUI_L0_root20Shape" -p "backLegUI_L0_root"; 0 0 -0.25 ; createNode nurbsCurve -n "backLegUI_L0_root21Shape" -p "backLegUI_L0_root"; - rename -uid "3086495F-4148-EA58-1C57-3A85AED4C7E4"; + rename -uid "81CC9C7B-4EDE-8C8D-D4C1-308B2D5ECC00"; setAttr ".ihi" 0; setAttr -k off ".v"; setAttr ".ove" yes; @@ -7830,7 +7911,7 @@ createNode nurbsCurve -n "backLegUI_L0_root21Shape" -p "backLegUI_L0_root"; -0.125 -0.125 -0.125 ; createNode transform -n "backLegUI_L0_sizeRef" -p "backLegUI_L0_root"; - rename -uid "262F5E58-4741-9888-A072-4795AE23BBE3"; + rename -uid "728B3BB0-44CE-B73A-17C2-77B59F4D89E6"; addAttr -ci true -sn "isGearGuide" -ln "isGearGuide" -dv 1 -min 0 -max 1 -at "bool"; setAttr -k off -cb on ".v"; setAttr ".t" -type "double3" 4.4408920985006262e-016 3.3306690738754696e-016 0.99999999999999956 ; @@ -7846,18 +7927,18 @@ createNode transform -n "backLegUI_L0_sizeRef" -p "backLegUI_L0_root"; setAttr -k off -cb on ".sy"; setAttr -k off -cb on ".sz"; createNode transform -n "legBack_L0_crv1" -p "legBack_L0_root"; - rename -uid "77F741B5-446C-EE8F-C04B-708DF6D326B1"; + rename -uid "1DBBB5A4-447F-042B-3B55-62A7AE8C52A3"; setAttr ".ovdt" 1; setAttr ".ove" yes; setAttr ".t" -type "double3" -1.7959711117807502 -3.2803056907023973 1.8090460715460559 ; setAttr ".s" -type "double3" 1.4137227438343885 1.4137227438343878 1.4137227438343878 ; createNode nurbsCurve -n "legBack_L0_crvShape1" -p "legBack_L0_crv1"; - rename -uid "250B84CD-4E9A-A0B9-7F54-A0899BBC1692"; + rename -uid "9924AF2D-479A-DFB8-700E-78906282D8FE"; setAttr -k off ".v"; setAttr -s 4 ".iog[0].og"; setAttr ".tw" yes; -createNode nurbsCurve -n "legBack_L0_crvShape1Orig" -p "legBack_L0_crv1"; - rename -uid "14124FDA-4CC1-FA1A-FEA9-818688E2B65E"; +createNode nurbsCurve -n "legBack_L0_crvShape1Orig1" -p "legBack_L0_crv1"; + rename -uid "BA92EA3F-4414-7064-6E51-C99DF6552AA8"; setAttr -k off ".v"; setAttr ".io" yes; setAttr ".cc" -type "nurbsCurve" @@ -7871,7 +7952,7 @@ createNode nurbsCurve -n "legBack_L0_crvShape1Orig" -p "legBack_L0_crv1"; 0 0 0 ; createNode transform -n "legBack_R0_root" -p "spine_C0_root"; - rename -uid "17B59BF6-4B89-E645-EADA-DFB3F6F14B84"; + rename -uid "0E73891C-46B9-E14E-A683-FC9DA99D8622"; addAttr -ci true -sn "isGearGuide" -ln "isGearGuide" -dv 1 -min 0 -max 1 -at "bool"; addAttr -ci true -sn "comp_type" -ln "comp_type" -dt "string"; addAttr -ci true -sn "comp_name" -ln "comp_name" -dt "string"; @@ -7896,11 +7977,11 @@ createNode transform -n "legBack_R0_root" -p "spine_C0_root"; addAttr -ci true -sn "useIndex" -ln "useIndex" -min 0 -max 1 -at "bool"; addAttr -ci true -sn "parentJointIndex" -ln "parentJointIndex" -at "long"; setAttr -k off -cb on ".v"; - setAttr ".t" -type "double3" 0.21090213141048153 -0.097927178047042762 2.6808811877076875 ; + setAttr ".t" -type "double3" 0.21090213141048153 -0.09792717804704365 2.6808811877076875 ; setAttr -k off -cb on ".tx"; setAttr -k off -cb on ".ty"; setAttr -k off -cb on ".tz"; - setAttr ".r" -type "double3" 90 -89.999999999999972 0 ; + setAttr ".r" -type "double3" 89.999999999999986 -89.999999999999957 0 ; setAttr -k off -cb on ".rx"; setAttr -k off -cb on ".ry"; setAttr -k off -cb on ".rz"; @@ -7917,8 +7998,8 @@ createNode transform -n "legBack_R0_root" -p "spine_C0_root"; setAttr ".ctlGrp" -type "string" ""; setAttr ".blend" 1; setAttr ".full3BonesIK" 1; - setAttr ".ikrefarray" -type "string" "local_C0_root,spine_C0_root"; - setAttr ".upvrefarray" -type "string" "local_C0_root,spine_C0_root"; + setAttr ".ikrefarray" -type "string" "local_C0_root,spine_C0_root,global_C0_root"; + setAttr ".upvrefarray" -type "string" "local_C0_root,spine_C0_root,global_C0_root"; setAttr ".maxstretch" 1.5; setAttr ".ikOri" yes; setAttr ".div0" 2; @@ -7928,7 +8009,7 @@ createNode transform -n "legBack_R0_root" -p "spine_C0_root"; setAttr -k on ".sq_profile"; setAttr ".parentJointIndex" -1; createNode nurbsCurve -n "legBack_R0_rootShape" -p "legBack_R0_root"; - rename -uid "2DEE1F1F-4F24-948F-9562-728DDCF162D2"; + rename -uid "FAAD7EB7-4ACD-05CD-BBFA-E8949DDC1632"; setAttr ".ihi" 0; setAttr -k off ".v"; setAttr ".ove" yes; @@ -7940,8 +8021,8 @@ createNode nurbsCurve -n "legBack_R0_rootShape" -p "legBack_R0_root"; 0.25 0 0 -0.25 0 0 ; -createNode nurbsCurve -n "legBack_R0_root10Shape" -p "legBack_R0_root"; - rename -uid "0ACF8406-4B43-539E-13A3-F5A468BBF2B9"; +createNode nurbsCurve -n "legBack_R0_root1Shape" -p "legBack_R0_root"; + rename -uid "F1A58CC0-4621-523B-CF36-55A8286BF59B"; setAttr ".ihi" 0; setAttr -k off ".v"; setAttr ".ove" yes; @@ -7953,8 +8034,8 @@ createNode nurbsCurve -n "legBack_R0_root10Shape" -p "legBack_R0_root"; 0 0.25 0 0 -0.25 0 ; -createNode nurbsCurve -n "legBack_R0_root11Shape" -p "legBack_R0_root"; - rename -uid "1F08688C-428B-42C5-CDB8-ECAAB83ED017"; +createNode nurbsCurve -n "legBack_R0_root2Shape" -p "legBack_R0_root"; + rename -uid "DD303FF3-4572-0DFC-DB34-B9957848CFF7"; setAttr ".ihi" 0; setAttr -k off ".v"; setAttr ".ove" yes; @@ -7966,8 +8047,8 @@ createNode nurbsCurve -n "legBack_R0_root11Shape" -p "legBack_R0_root"; 0 0 0.25 0 0 -0.25 ; -createNode nurbsCurve -n "legBack_R0_root12Shape" -p "legBack_R0_root"; - rename -uid "7DBC7168-4DE7-EDCC-7C7A-C5AAC889BC9B"; +createNode nurbsCurve -n "legBack_R0_root3Shape" -p "legBack_R0_root"; + rename -uid "EF467F6C-4214-EF7E-8699-A78A1CEC0B82"; setAttr ".ihi" 0; setAttr -k off ".v"; setAttr ".ove" yes; @@ -7994,10 +8075,10 @@ createNode nurbsCurve -n "legBack_R0_root12Shape" -p "legBack_R0_root"; -0.125 -0.125 -0.125 ; createNode transform -n "legBack_R0_knee" -p "legBack_R0_root"; - rename -uid "7797E937-4E89-5F32-AC7E-20B1ED448529"; + rename -uid "946AF9FC-4EBA-3BAA-EA14-B19C99228381"; addAttr -ci true -sn "isGearGuide" -ln "isGearGuide" -dv 1 -min 0 -max 1 -at "bool"; setAttr -k off -cb on ".v"; - setAttr ".t" -type "double3" 2.6645352591003757e-015 -1.155950874379851 0.33714517700502311 ; + setAttr ".t" -type "double3" 3.5527136788005009e-015 -1.1559508743798506 0.33714517700502222 ; setAttr -l on -k off -cb on ".tx"; setAttr -k off -cb on ".ty"; setAttr -k off -cb on ".tz"; @@ -8005,12 +8086,12 @@ createNode transform -n "legBack_R0_knee" -p "legBack_R0_root"; setAttr -l on -k off -cb on ".ry"; setAttr -l on -k off -cb on ".rz"; setAttr -cb on ".ro"; - setAttr ".s" -type "double3" 1.0000000000000007 1.0000000000000009 1.0000000000000004 ; + setAttr ".s" -type "double3" 1.0000000000000007 1.0000000000000007 1.0000000000000004 ; setAttr -k off -cb on ".sx"; setAttr -k off -cb on ".sy"; setAttr -k off -cb on ".sz"; createNode nurbsCurve -n "legBack_R0_kneeShape" -p "legBack_R0_knee"; - rename -uid "84AA65A4-4E52-DC46-11DA-72B4B878298F"; + rename -uid "F684946D-4D6B-899F-6C81-02BB6B2BCBB6"; setAttr ".ihi" 0; setAttr -k off ".v"; setAttr ".ove" yes; @@ -8022,8 +8103,8 @@ createNode nurbsCurve -n "legBack_R0_kneeShape" -p "legBack_R0_knee"; 0.25 0 0 -0.25 0 0 ; -createNode nurbsCurve -n "legBack_R0_knee10Shape" -p "legBack_R0_knee"; - rename -uid "5E904C90-4EEC-5B3C-6147-EC8FCA779A48"; +createNode nurbsCurve -n "legBack_R0_knee1Shape" -p "legBack_R0_knee"; + rename -uid "1D286B1E-4414-6C03-1FB2-3AB4122EFB9B"; setAttr ".ihi" 0; setAttr -k off ".v"; setAttr ".ove" yes; @@ -8035,8 +8116,8 @@ createNode nurbsCurve -n "legBack_R0_knee10Shape" -p "legBack_R0_knee"; 0 0.25 0 0 -0.25 0 ; -createNode nurbsCurve -n "legBack_R0_knee11Shape" -p "legBack_R0_knee"; - rename -uid "7761FFA8-47BF-104B-8CAE-A4812EB6DD80"; +createNode nurbsCurve -n "legBack_R0_knee2Shape" -p "legBack_R0_knee"; + rename -uid "A712AB77-4C83-3610-26F8-44AE8AF68FE8"; setAttr ".ihi" 0; setAttr -k off ".v"; setAttr ".ove" yes; @@ -8048,8 +8129,8 @@ createNode nurbsCurve -n "legBack_R0_knee11Shape" -p "legBack_R0_knee"; 0 0 0.25 0 0 -0.25 ; -createNode nurbsCurve -n "legBack_R0_knee12Shape" -p "legBack_R0_knee"; - rename -uid "9F7D6015-47A6-D044-F21D-63B9E03A745F"; +createNode nurbsCurve -n "legBack_R0_knee3Shape" -p "legBack_R0_knee"; + rename -uid "852C6E81-45BD-4FBC-67CD-87A2643AC005"; setAttr ".ihi" 0; setAttr -k off ".v"; setAttr ".ove" yes; @@ -8066,8 +8147,8 @@ createNode nurbsCurve -n "legBack_R0_knee12Shape" -p "legBack_R0_knee"; 0 -0.1875 0 -0.1875 0 0 ; -createNode nurbsCurve -n "legBack_R0_knee12_0crvShape" -p "legBack_R0_knee"; - rename -uid "84001720-423B-0DA1-DCDB-9CB59E700B8B"; +createNode nurbsCurve -n "legBack_R0_knee3_0crvShape" -p "legBack_R0_knee"; + rename -uid "861EFFF2-4982-942E-ABC7-FD911A291A13"; setAttr ".ihi" 0; setAttr -k off ".v"; setAttr ".ove" yes; @@ -8084,8 +8165,8 @@ createNode nurbsCurve -n "legBack_R0_knee12_0crvShape" -p "legBack_R0_knee"; 0 0 -0.1875 -0.1875 0 0 ; -createNode nurbsCurve -n "legBack_R0_knee12_1crvShape" -p "legBack_R0_knee"; - rename -uid "A3C22943-429E-4ED3-17C5-24B8636044E3"; +createNode nurbsCurve -n "legBack_R0_knee3_1crvShape" -p "legBack_R0_knee"; + rename -uid "121C6BB3-4CD2-AC23-76E0-3A920F8AB7E9"; setAttr ".ihi" 0; setAttr -k off ".v"; setAttr ".ove" yes; @@ -8103,10 +8184,10 @@ createNode nurbsCurve -n "legBack_R0_knee12_1crvShape" -p "legBack_R0_knee"; 0 0 -0.1875 ; createNode transform -n "legBack_R0_ankle" -p "legBack_R0_knee"; - rename -uid "7B54364E-42A4-F730-8628-6B995B5DE9E0"; + rename -uid "A76AA381-41D1-9758-1A6F-4993888908B0"; addAttr -ci true -sn "isGearGuide" -ln "isGearGuide" -dv 1 -min 0 -max 1 -at "bool"; setAttr -k off -cb on ".v"; - setAttr ".t" -type "double3" 2.2204460492503131e-015 -1.4950431842245462 -0.57333193410462435 ; + setAttr ".t" -type "double3" 2.2204460492503131e-015 -1.4950431842245462 -0.57333193410462346 ; setAttr -l on -k off -cb on ".tx"; setAttr -k off -cb on ".ty"; setAttr -k off -cb on ".tz"; @@ -8114,12 +8195,12 @@ createNode transform -n "legBack_R0_ankle" -p "legBack_R0_knee"; setAttr -l on -k off -cb on ".ry"; setAttr -l on -k off -cb on ".rz"; setAttr -cb on ".ro"; - setAttr ".s" -type "double3" 0.99999999999999944 0.99999999999999878 1.0000000000000002 ; + setAttr ".s" -type "double3" 1.0000000000000004 0.99999999999999989 1.0000000000000004 ; setAttr -k off -cb on ".sx"; setAttr -k off -cb on ".sy"; setAttr -k off -cb on ".sz"; createNode nurbsCurve -n "legBack_R0_ankleShape" -p "legBack_R0_ankle"; - rename -uid "5A5F5526-4666-C282-53E1-609C5B3813C8"; + rename -uid "45D2296C-457F-52AC-DBB2-9AA88833393E"; setAttr ".ihi" 0; setAttr -k off ".v"; setAttr ".ove" yes; @@ -8131,8 +8212,8 @@ createNode nurbsCurve -n "legBack_R0_ankleShape" -p "legBack_R0_ankle"; 0.25 0 0 -0.25 0 0 ; -createNode nurbsCurve -n "legBack_R0_ankle10Shape" -p "legBack_R0_ankle"; - rename -uid "74A43E7F-49DF-5FA1-7686-09B814567BCE"; +createNode nurbsCurve -n "legBack_R0_ankle1Shape" -p "legBack_R0_ankle"; + rename -uid "05DBDA7F-43A8-EA98-97FE-18A5B75FD222"; setAttr ".ihi" 0; setAttr -k off ".v"; setAttr ".ove" yes; @@ -8144,8 +8225,8 @@ createNode nurbsCurve -n "legBack_R0_ankle10Shape" -p "legBack_R0_ankle"; 0 0.25 0 0 -0.25 0 ; -createNode nurbsCurve -n "legBack_R0_ankle11Shape" -p "legBack_R0_ankle"; - rename -uid "E28CBBA1-4C80-5348-6771-7DB778617F79"; +createNode nurbsCurve -n "legBack_R0_ankle2Shape" -p "legBack_R0_ankle"; + rename -uid "568E0EA0-4396-81E9-B347-62BE30DE37CB"; setAttr ".ihi" 0; setAttr -k off ".v"; setAttr ".ove" yes; @@ -8157,8 +8238,8 @@ createNode nurbsCurve -n "legBack_R0_ankle11Shape" -p "legBack_R0_ankle"; 0 0 0.25 0 0 -0.25 ; -createNode nurbsCurve -n "legBack_R0_ankle12Shape" -p "legBack_R0_ankle"; - rename -uid "5E0E7E30-43F2-E8B1-2A21-22983E432142"; +createNode nurbsCurve -n "legBack_R0_ankle3Shape" -p "legBack_R0_ankle"; + rename -uid "8E9953D7-4B67-6ABF-D8C4-0EBE25242808"; setAttr ".ihi" 0; setAttr -k off ".v"; setAttr ".ove" yes; @@ -8175,8 +8256,8 @@ createNode nurbsCurve -n "legBack_R0_ankle12Shape" -p "legBack_R0_ankle"; 0 -0.1875 0 -0.1875 0 0 ; -createNode nurbsCurve -n "legBack_R0_ankle12_0crvShape" -p "legBack_R0_ankle"; - rename -uid "B28C795E-4F54-F1F1-1E0F-57A89FEA774A"; +createNode nurbsCurve -n "legBack_R0_ankle3_0crvShape" -p "legBack_R0_ankle"; + rename -uid "378F45F0-4C32-AF86-AB67-529CE23985C3"; setAttr ".ihi" 0; setAttr -k off ".v"; setAttr ".ove" yes; @@ -8193,8 +8274,8 @@ createNode nurbsCurve -n "legBack_R0_ankle12_0crvShape" -p "legBack_R0_ankle"; 0 0 -0.1875 -0.1875 0 0 ; -createNode nurbsCurve -n "legBack_R0_ankle12_1crvShape" -p "legBack_R0_ankle"; - rename -uid "B99B9EDA-4F8B-F112-C63D-1882B61C1FFF"; +createNode nurbsCurve -n "legBack_R0_ankle3_1crvShape" -p "legBack_R0_ankle"; + rename -uid "ADA943AD-4CBB-09B0-1E61-2AA7AFAD9FC3"; setAttr ".ihi" 0; setAttr -k off ".v"; setAttr ".ove" yes; @@ -8212,10 +8293,10 @@ createNode nurbsCurve -n "legBack_R0_ankle12_1crvShape" -p "legBack_R0_ankle"; 0 0 -0.1875 ; createNode transform -n "legBack_R0_foot" -p "legBack_R0_ankle"; - rename -uid "24B49B79-429D-D3C5-8109-D5B1028CFABC"; + rename -uid "1620AE42-442D-7F2B-1B0F-60A0EB9BDAC6"; addAttr -ci true -sn "isGearGuide" -ln "isGearGuide" -dv 1 -min 0 -max 1 -at "bool"; setAttr -k off -cb on ".v"; - setAttr ".t" -type "double3" 1.1102230246251565e-015 -0.54805580751979133 0.15050522089872853 ; + setAttr ".t" -type "double3" 1.3322676295501878e-015 -0.54805580751979255 0.1505052208987292 ; setAttr -l on -k off -cb on ".tx"; setAttr -k off -cb on ".ty"; setAttr -k off -cb on ".tz"; @@ -8223,12 +8304,12 @@ createNode transform -n "legBack_R0_foot" -p "legBack_R0_ankle"; setAttr -l on -k off -cb on ".ry"; setAttr -l on -k off -cb on ".rz"; setAttr -cb on ".ro"; - setAttr ".s" -type "double3" 1.0000000000000004 1.0000000000000013 1 ; + setAttr ".s" -type "double3" 0.99999999999999956 1.0000000000000007 1 ; setAttr -k off -cb on ".sx"; setAttr -k off -cb on ".sy"; setAttr -k off -cb on ".sz"; createNode nurbsCurve -n "legBack_R0_footShape" -p "legBack_R0_foot"; - rename -uid "27C9D149-40B9-14A2-E42B-BF87D412BBB8"; + rename -uid "BD877DCC-420E-1E1A-1897-32AC0EC1324B"; setAttr ".ihi" 0; setAttr -k off ".v"; setAttr ".ove" yes; @@ -8240,8 +8321,8 @@ createNode nurbsCurve -n "legBack_R0_footShape" -p "legBack_R0_foot"; 0.25 0 0 -0.25 0 0 ; -createNode nurbsCurve -n "legBack_R0_foot10Shape" -p "legBack_R0_foot"; - rename -uid "C1663611-4823-003F-5F93-1B9E5657B062"; +createNode nurbsCurve -n "legBack_R0_foot1Shape" -p "legBack_R0_foot"; + rename -uid "275D82A1-4497-18AB-8D78-359E4F106FC1"; setAttr ".ihi" 0; setAttr -k off ".v"; setAttr ".ove" yes; @@ -8253,8 +8334,8 @@ createNode nurbsCurve -n "legBack_R0_foot10Shape" -p "legBack_R0_foot"; 0 0.25 0 0 -0.25 0 ; -createNode nurbsCurve -n "legBack_R0_foot11Shape" -p "legBack_R0_foot"; - rename -uid "72A130BF-410A-69E0-882B-6CAF18DED6FB"; +createNode nurbsCurve -n "legBack_R0_foot2Shape" -p "legBack_R0_foot"; + rename -uid "B7CD5F18-42D8-BBF2-5EFB-0CBB9D8D6B5E"; setAttr ".ihi" 0; setAttr -k off ".v"; setAttr ".ove" yes; @@ -8266,8 +8347,8 @@ createNode nurbsCurve -n "legBack_R0_foot11Shape" -p "legBack_R0_foot"; 0 0 0.25 0 0 -0.25 ; -createNode nurbsCurve -n "legBack_R0_foot12Shape" -p "legBack_R0_foot"; - rename -uid "37BF66AD-415C-1DD4-A423-A39CF0E1F1B0"; +createNode nurbsCurve -n "legBack_R0_foot3Shape" -p "legBack_R0_foot"; + rename -uid "09CD6890-48C7-0DE2-4AA4-50AB1C730B19"; setAttr ".ihi" 0; setAttr -k off ".v"; setAttr ".ove" yes; @@ -8284,8 +8365,8 @@ createNode nurbsCurve -n "legBack_R0_foot12Shape" -p "legBack_R0_foot"; 0 -0.1875 0 -0.1875 0 0 ; -createNode nurbsCurve -n "legBack_R0_foot12_0crvShape" -p "legBack_R0_foot"; - rename -uid "70A4EACD-4115-6547-5F90-74A6F0B5A842"; +createNode nurbsCurve -n "legBack_R0_foot3_0crvShape" -p "legBack_R0_foot"; + rename -uid "BA9D2656-4740-C212-039F-A0A8264C9DE0"; setAttr ".ihi" 0; setAttr -k off ".v"; setAttr ".ove" yes; @@ -8302,8 +8383,8 @@ createNode nurbsCurve -n "legBack_R0_foot12_0crvShape" -p "legBack_R0_foot"; 0 0 -0.1875 -0.1875 0 0 ; -createNode nurbsCurve -n "legBack_R0_foot12_1crvShape" -p "legBack_R0_foot"; - rename -uid "11350C76-412C-8089-C5D9-68AD47B8E149"; +createNode nurbsCurve -n "legBack_R0_foot3_1crvShape" -p "legBack_R0_foot"; + rename -uid "05D315E4-4CA9-E090-66AC-F3BF8C6E9FC2"; setAttr ".ihi" 0; setAttr -k off ".v"; setAttr ".ove" yes; @@ -8321,10 +8402,10 @@ createNode nurbsCurve -n "legBack_R0_foot12_1crvShape" -p "legBack_R0_foot"; 0 0 -0.1875 ; createNode transform -n "legBack_R0_eff" -p "legBack_R0_foot"; - rename -uid "BECD8E3D-434C-AAA2-3AB4-519FAA3FF073"; + rename -uid "2AADA600-443E-E6D7-351D-1C8D62EA5574"; addAttr -ci true -sn "isGearGuide" -ln "isGearGuide" -dv 1 -min 0 -max 1 -at "bool"; setAttr -k off -cb on ".v"; - setAttr ".t" -type "double3" 1.9984014443252818e-015 1.3877787807814457e-016 0.28135643819707568 ; + setAttr ".t" -type "double3" 1.7763568394002505e-015 7.6327832942979512e-016 0.28135643819707457 ; setAttr -k off -cb on ".tx"; setAttr -k off -cb on ".ty"; setAttr -k off -cb on ".tz"; @@ -8332,12 +8413,12 @@ createNode transform -n "legBack_R0_eff" -p "legBack_R0_foot"; setAttr -k off -cb on ".ry"; setAttr -k off -cb on ".rz"; setAttr -cb on ".ro"; - setAttr ".s" -type "double3" 1 0.99999999999999922 0.99999999999999922 ; + setAttr ".s" -type "double3" 0.99999999999999967 0.99999999999999911 0.99999999999999911 ; setAttr -k off -cb on ".sx"; setAttr -k off -cb on ".sy"; setAttr -k off -cb on ".sz"; createNode nurbsCurve -n "legBack_R0_effShape" -p "legBack_R0_eff"; - rename -uid "31C5DFF1-4D6D-4DA4-858B-63BB332A79F4"; + rename -uid "38B951FA-4300-DEB4-BF4A-62B5FB74B70F"; setAttr ".ihi" 0; setAttr -k off ".v"; setAttr ".ove" yes; @@ -8349,8 +8430,8 @@ createNode nurbsCurve -n "legBack_R0_effShape" -p "legBack_R0_eff"; 0.25 0 0 -0.25 0 0 ; -createNode nurbsCurve -n "legBack_R0_eff10Shape" -p "legBack_R0_eff"; - rename -uid "DBA208E3-4B1D-5FD7-FD62-1993CF1C5A9B"; +createNode nurbsCurve -n "legBack_R0_eff1Shape" -p "legBack_R0_eff"; + rename -uid "DDC65033-475A-AB40-5637-DC9716F12AA3"; setAttr ".ihi" 0; setAttr -k off ".v"; setAttr ".ove" yes; @@ -8362,8 +8443,8 @@ createNode nurbsCurve -n "legBack_R0_eff10Shape" -p "legBack_R0_eff"; 0 0.25 0 0 -0.25 0 ; -createNode nurbsCurve -n "legBack_R0_eff11Shape" -p "legBack_R0_eff"; - rename -uid "FCC505B7-47E6-8823-A55D-259AE21221D6"; +createNode nurbsCurve -n "legBack_R0_eff2Shape" -p "legBack_R0_eff"; + rename -uid "57E4C922-4B29-CC70-A2ED-F1B10311644D"; setAttr ".ihi" 0; setAttr -k off ".v"; setAttr ".ove" yes; @@ -8375,8 +8456,8 @@ createNode nurbsCurve -n "legBack_R0_eff11Shape" -p "legBack_R0_eff"; 0 0 0.25 0 0 -0.25 ; -createNode nurbsCurve -n "legBack_R0_eff12Shape" -p "legBack_R0_eff"; - rename -uid "EA667694-4A58-73DC-E810-6DB5F1A52603"; +createNode nurbsCurve -n "legBack_R0_eff3Shape" -p "legBack_R0_eff"; + rename -uid "F7C8DF6A-46E1-9800-BA74-33A2B72C9F9C"; setAttr ".ihi" 0; setAttr -k off ".v"; setAttr ".ove" yes; @@ -8393,8 +8474,8 @@ createNode nurbsCurve -n "legBack_R0_eff12Shape" -p "legBack_R0_eff"; 0 -0.1875 0 -0.1875 0 0 ; -createNode nurbsCurve -n "legBack_R0_eff12_0crvShape" -p "legBack_R0_eff"; - rename -uid "210C8EBC-4F02-6427-BAE3-0CA8036D7DB9"; +createNode nurbsCurve -n "legBack_R0_eff3_0crvShape" -p "legBack_R0_eff"; + rename -uid "47A96C66-40BD-EC68-F3FF-8D92AF30E17A"; setAttr ".ihi" 0; setAttr -k off ".v"; setAttr ".ove" yes; @@ -8411,8 +8492,8 @@ createNode nurbsCurve -n "legBack_R0_eff12_0crvShape" -p "legBack_R0_eff"; 0 0 -0.1875 -0.1875 0 0 ; -createNode nurbsCurve -n "legBack_R0_eff12_1crvShape" -p "legBack_R0_eff"; - rename -uid "BA98A755-47A1-487D-1C1B-5CBA0985D8F1"; +createNode nurbsCurve -n "legBack_R0_eff3_1crvShape" -p "legBack_R0_eff"; + rename -uid "45E62EB3-422D-EED7-7D0A-C6B0FB1E8D0F"; setAttr ".ihi" 0; setAttr -k off ".v"; setAttr ".ove" yes; @@ -8430,7 +8511,7 @@ createNode nurbsCurve -n "legBack_R0_eff12_1crvShape" -p "legBack_R0_eff"; 0 0 -0.1875 ; createNode transform -n "footBack_R0_root" -p "legBack_R0_foot"; - rename -uid "D54CE142-4698-CF04-82F9-5EB7F1604C0F"; + rename -uid "69E1D63E-4FE5-22DB-AD35-5A94F468CBAA"; addAttr -ci true -sn "isGearGuide" -ln "isGearGuide" -dv 1 -min 0 -max 1 -at "bool"; addAttr -ci true -sn "comp_type" -ln "comp_type" -dt "string"; addAttr -ci true -sn "comp_name" -ln "comp_name" -dt "string"; @@ -8443,7 +8524,7 @@ createNode transform -n "footBack_R0_root" -p "legBack_R0_foot"; addAttr -ci true -sn "useIndex" -ln "useIndex" -min 0 -max 1 -at "bool"; addAttr -ci true -sn "parentJointIndex" -ln "parentJointIndex" -at "long"; setAttr -k off -cb on ".v"; - setAttr ".t" -type "double3" 1.1102230246251565e-015 2.6367796834847468e-016 6.6613381477509392e-016 ; + setAttr ".t" -type "double3" 8.8817841970012523e-016 8.0491169285323849e-016 -4.4408920985006262e-016 ; setAttr -k off -cb on ".tx"; setAttr -k off -cb on ".ty"; setAttr -k off -cb on ".tz"; @@ -8451,7 +8532,7 @@ createNode transform -n "footBack_R0_root" -p "legBack_R0_foot"; setAttr -k off -cb on ".ry"; setAttr -k off -cb on ".rz"; setAttr -cb on ".ro"; - setAttr ".s" -type "double3" 0.16356254765398101 0.1635625476539809 0.16356254765398087 ; + setAttr ".s" -type "double3" 0.16356254765398096 0.16356254765398087 0.16356254765398084 ; setAttr -k off -cb on ".sx"; setAttr -k off -cb on ".sy"; setAttr -k off -cb on ".sz"; @@ -8464,7 +8545,7 @@ createNode transform -n "footBack_R0_root" -p "legBack_R0_foot"; setAttr ".useRollCtl" yes; setAttr ".parentJointIndex" -1; createNode nurbsCurve -n "footBack_R0_rootShape" -p "footBack_R0_root"; - rename -uid "C23CB136-426D-ACED-71FF-6983D500564C"; + rename -uid "A155AD28-4C4E-4E8F-7696-7AB999F8F8C3"; setAttr ".ihi" 0; setAttr -k off ".v"; setAttr ".ove" yes; @@ -8476,8 +8557,8 @@ createNode nurbsCurve -n "footBack_R0_rootShape" -p "footBack_R0_root"; 0.25 0 0 -0.25 0 0 ; -createNode nurbsCurve -n "footBack_R0_root10Shape" -p "footBack_R0_root"; - rename -uid "EDDA460D-4880-9CF6-71E2-01B4F2EC413B"; +createNode nurbsCurve -n "footBack_R0_root1Shape" -p "footBack_R0_root"; + rename -uid "A6D0F45F-4A45-0124-7CFD-2AB5614ED412"; setAttr ".ihi" 0; setAttr -k off ".v"; setAttr ".ove" yes; @@ -8489,8 +8570,8 @@ createNode nurbsCurve -n "footBack_R0_root10Shape" -p "footBack_R0_root"; 0 0.25 0 0 -0.25 0 ; -createNode nurbsCurve -n "footBack_R0_root11Shape" -p "footBack_R0_root"; - rename -uid "72277CF6-4210-69A1-8F1B-9892EF7F7BA8"; +createNode nurbsCurve -n "footBack_R0_root2Shape" -p "footBack_R0_root"; + rename -uid "2BFF6121-4609-6A31-8525-0FB3738FB914"; setAttr ".ihi" 0; setAttr -k off ".v"; setAttr ".ove" yes; @@ -8502,8 +8583,8 @@ createNode nurbsCurve -n "footBack_R0_root11Shape" -p "footBack_R0_root"; 0 0 0.25 0 0 -0.25 ; -createNode nurbsCurve -n "footBack_R0_root12Shape" -p "footBack_R0_root"; - rename -uid "0F796927-472B-691F-A53E-829519A1EF6F"; +createNode nurbsCurve -n "footBack_R0_root3Shape" -p "footBack_R0_root"; + rename -uid "CBF2063E-4875-48E7-BBCF-4ABF18D6DFBB"; setAttr ".ihi" 0; setAttr -k off ".v"; setAttr ".ove" yes; @@ -8530,10 +8611,10 @@ createNode nurbsCurve -n "footBack_R0_root12Shape" -p "footBack_R0_root"; -0.125 -0.125 -0.125 ; createNode transform -n "footBack_R0_0_loc" -p "footBack_R0_root"; - rename -uid "670B8ACD-4F72-8E3F-BF44-04B62B6947E5"; + rename -uid "493AAD14-49FB-CF8D-9A19-B3B594438EC8"; addAttr -ci true -sn "isGearGuide" -ln "isGearGuide" -dv 1 -min 0 -max 1 -at "bool"; setAttr -k off -cb on ".v"; - setAttr ".t" -type "double3" -8.8817841970012523e-015 3.8857805861880479e-016 0.54565565303279229 ; + setAttr ".t" -type "double3" -1.5987211554602254e-014 1.1102230246251565e-016 0.54565565303279762 ; setAttr -k off -cb on ".tx"; setAttr -k off -cb on ".ty"; setAttr -k off -cb on ".tz"; @@ -8541,12 +8622,12 @@ createNode transform -n "footBack_R0_0_loc" -p "footBack_R0_root"; setAttr -k off -cb on ".ry"; setAttr -k off -cb on ".rz"; setAttr -cb on ".ro"; - setAttr ".s" -type "double3" 0.99999999999999978 1 1.0000000000000009 ; + setAttr ".s" -type "double3" 0.99999999999999989 1.0000000000000002 1.0000000000000007 ; setAttr -k off -cb on ".sx"; setAttr -k off -cb on ".sy"; setAttr -k off -cb on ".sz"; createNode nurbsCurve -n "footBack_R0_0_locShape" -p "footBack_R0_0_loc"; - rename -uid "30FEA945-4247-BFE8-15EE-38B755DEAE50"; + rename -uid "309B5ABC-47B5-3A3B-674C-E58774A939AD"; setAttr ".ihi" 0; setAttr -k off ".v"; setAttr ".ove" yes; @@ -8558,8 +8639,8 @@ createNode nurbsCurve -n "footBack_R0_0_locShape" -p "footBack_R0_0_loc"; 0.25 0 0 -0.25 0 0 ; -createNode nurbsCurve -n "footBack_R0_0_loc10Shape" -p "footBack_R0_0_loc"; - rename -uid "C466BCD9-426C-A745-9DD3-4E84717E37FA"; +createNode nurbsCurve -n "footBack_R0_0_loc1Shape" -p "footBack_R0_0_loc"; + rename -uid "7AD4BAB5-4665-340F-7E82-3DABFF3BAD5E"; setAttr ".ihi" 0; setAttr -k off ".v"; setAttr ".ove" yes; @@ -8571,8 +8652,8 @@ createNode nurbsCurve -n "footBack_R0_0_loc10Shape" -p "footBack_R0_0_loc"; 0 0.25 0 0 -0.25 0 ; -createNode nurbsCurve -n "footBack_R0_0_loc11Shape" -p "footBack_R0_0_loc"; - rename -uid "F12EBC49-46D5-71E9-EED9-708E95AA8638"; +createNode nurbsCurve -n "footBack_R0_0_loc2Shape" -p "footBack_R0_0_loc"; + rename -uid "4D7F4FF4-483D-DCF0-0A21-2690526B394F"; setAttr ".ihi" 0; setAttr -k off ".v"; setAttr ".ove" yes; @@ -8584,8 +8665,8 @@ createNode nurbsCurve -n "footBack_R0_0_loc11Shape" -p "footBack_R0_0_loc"; 0 0 0.25 0 0 -0.25 ; -createNode nurbsCurve -n "footBack_R0_0_loc12Shape" -p "footBack_R0_0_loc"; - rename -uid "61BD24A4-49F7-6B68-D0E9-77836B966149"; +createNode nurbsCurve -n "footBack_R0_0_loc3Shape" -p "footBack_R0_0_loc"; + rename -uid "83BE8EF0-4FE2-C430-9F81-91AE78C48F3B"; setAttr ".ihi" 0; setAttr -k off ".v"; setAttr ".ove" yes; @@ -8602,8 +8683,8 @@ createNode nurbsCurve -n "footBack_R0_0_loc12Shape" -p "footBack_R0_0_loc"; 0 -0.1875 0 -0.1875 0 0 ; -createNode nurbsCurve -n "footBack_R0_0_loc12_0crvShape" -p "footBack_R0_0_loc"; - rename -uid "4BD4A380-4DE0-87FD-B143-07994B25ADEE"; +createNode nurbsCurve -n "footBack_R0_0_loc3_0crvShape" -p "footBack_R0_0_loc"; + rename -uid "12913D4B-4E1F-7D35-D568-E08104A09AFF"; setAttr ".ihi" 0; setAttr -k off ".v"; setAttr ".ove" yes; @@ -8620,8 +8701,8 @@ createNode nurbsCurve -n "footBack_R0_0_loc12_0crvShape" -p "footBack_R0_0_loc"; 0 0 -0.1875 -0.1875 0 0 ; -createNode nurbsCurve -n "footBack_R0_0_loc12_1crvShape" -p "footBack_R0_0_loc"; - rename -uid "9B61CBAF-4497-9503-E5D8-70B8CD6B6698"; +createNode nurbsCurve -n "footBack_R0_0_loc3_1crvShape" -p "footBack_R0_0_loc"; + rename -uid "904A28FA-4322-2D78-C64E-778087A29025"; setAttr ".ihi" 0; setAttr -k off ".v"; setAttr ".ove" yes; @@ -8639,10 +8720,10 @@ createNode nurbsCurve -n "footBack_R0_0_loc12_1crvShape" -p "footBack_R0_0_loc"; 0 0 -0.1875 ; createNode transform -n "footBack_R0_1_loc" -p "footBack_R0_0_loc"; - rename -uid "05AB6E20-427A-FE9D-C941-EF88C8D5F495"; + rename -uid "63C175AE-492A-5A40-2A3E-D887E35616F5"; addAttr -ci true -sn "isGearGuide" -ln "isGearGuide" -dv 1 -min 0 -max 1 -at "bool"; setAttr -k off -cb on ".v"; - setAttr ".t" -type "double3" -3.5527136788005009e-015 -0.34547277013915589 0.77046072389792464 ; + setAttr ".t" -type "double3" 3.5527136788005009e-015 -0.34547277013915567 0.77046072389793174 ; setAttr -k off -cb on ".tx"; setAttr -k off -cb on ".ty"; setAttr -k off -cb on ".tz"; @@ -8650,12 +8731,12 @@ createNode transform -n "footBack_R0_1_loc" -p "footBack_R0_0_loc"; setAttr -k off -cb on ".ry"; setAttr -k off -cb on ".rz"; setAttr -cb on ".ro"; - setAttr ".s" -type "double3" 1.0000000000000007 1.0000000000000002 1.0000000000000002 ; + setAttr ".s" -type "double3" 1.0000000000000009 0.99999999999999978 1.0000000000000004 ; setAttr -k off -cb on ".sx"; setAttr -k off -cb on ".sy"; setAttr -k off -cb on ".sz"; createNode nurbsCurve -n "footBack_R0_1_locShape" -p "footBack_R0_1_loc"; - rename -uid "F95276E5-42E3-D8D0-DFCE-2B9BEB4525CC"; + rename -uid "0E78D748-4822-6211-08E6-2990EFDB37E8"; setAttr ".ihi" 0; setAttr -k off ".v"; setAttr ".ove" yes; @@ -8667,8 +8748,8 @@ createNode nurbsCurve -n "footBack_R0_1_locShape" -p "footBack_R0_1_loc"; 0.25 0 0 -0.25 0 0 ; -createNode nurbsCurve -n "footBack_R0_1_loc10Shape" -p "footBack_R0_1_loc"; - rename -uid "800158A9-4B31-C05E-D86F-C2845AA02683"; +createNode nurbsCurve -n "footBack_R0_1_loc1Shape" -p "footBack_R0_1_loc"; + rename -uid "5DB8FA90-4E2C-16EC-09E8-5C88FE8C8030"; setAttr ".ihi" 0; setAttr -k off ".v"; setAttr ".ove" yes; @@ -8680,8 +8761,8 @@ createNode nurbsCurve -n "footBack_R0_1_loc10Shape" -p "footBack_R0_1_loc"; 0 0.25 0 0 -0.25 0 ; -createNode nurbsCurve -n "footBack_R0_1_loc11Shape" -p "footBack_R0_1_loc"; - rename -uid "C68D7C44-47CB-FA8F-A834-26937F5BF81B"; +createNode nurbsCurve -n "footBack_R0_1_loc2Shape" -p "footBack_R0_1_loc"; + rename -uid "16DB8866-40EE-3CE6-279E-3FB3CD4BDFDA"; setAttr ".ihi" 0; setAttr -k off ".v"; setAttr ".ove" yes; @@ -8693,8 +8774,8 @@ createNode nurbsCurve -n "footBack_R0_1_loc11Shape" -p "footBack_R0_1_loc"; 0 0 0.25 0 0 -0.25 ; -createNode nurbsCurve -n "footBack_R0_1_loc12Shape" -p "footBack_R0_1_loc"; - rename -uid "FF45DACD-4F93-D126-F929-46BBBF452F23"; +createNode nurbsCurve -n "footBack_R0_1_loc3Shape" -p "footBack_R0_1_loc"; + rename -uid "C4BABFA6-45CD-3D20-057F-9DB95FBC446C"; setAttr ".ihi" 0; setAttr -k off ".v"; setAttr ".ove" yes; @@ -8711,8 +8792,8 @@ createNode nurbsCurve -n "footBack_R0_1_loc12Shape" -p "footBack_R0_1_loc"; 0 -0.1875 0 -0.1875 0 0 ; -createNode nurbsCurve -n "footBack_R0_1_loc12_0crvShape" -p "footBack_R0_1_loc"; - rename -uid "214C257C-4CB0-BF88-FA53-018605122919"; +createNode nurbsCurve -n "footBack_R0_1_loc3_0crvShape" -p "footBack_R0_1_loc"; + rename -uid "A0F1F342-4F78-290D-C7F7-B4A3E2285F19"; setAttr ".ihi" 0; setAttr -k off ".v"; setAttr ".ove" yes; @@ -8729,8 +8810,8 @@ createNode nurbsCurve -n "footBack_R0_1_loc12_0crvShape" -p "footBack_R0_1_loc"; 0 0 -0.1875 -0.1875 0 0 ; -createNode nurbsCurve -n "footBack_R0_1_loc12_1crvShape" -p "footBack_R0_1_loc"; - rename -uid "B3063B89-457D-F8EB-E445-7C9D7A735FB4"; +createNode nurbsCurve -n "footBack_R0_1_loc3_1crvShape" -p "footBack_R0_1_loc"; + rename -uid "CD69AB85-4E96-94A1-FD84-0693199E01D9"; setAttr ".ihi" 0; setAttr -k off ".v"; setAttr ".ove" yes; @@ -8748,19 +8829,19 @@ createNode nurbsCurve -n "footBack_R0_1_loc12_1crvShape" -p "footBack_R0_1_loc"; 0 0 -0.1875 ; createNode transform -n "footBack_R0_crv" -p "footBack_R0_root"; - rename -uid "B46CA9F0-4DDD-F236-F193-31BA6002838B"; + rename -uid "FCD1B155-41B3-DEE8-4260-EEA2A0B8A43B"; setAttr ".ovdt" 1; setAttr ".ove" yes; - setAttr ".t" -type "double3" -10.980332218718955 -0.49678747209357782 11.584116504196611 ; + setAttr ".t" -type "double3" -10.980332218718958 -0.49678747209357621 11.584116504196617 ; setAttr ".r" -type "double3" 0 179.99999999999997 0 ; - setAttr ".s" -type "double3" 8.6433157474725757 8.6433157474725739 -8.6433157474725792 ; + setAttr ".s" -type "double3" 8.6433157474725775 8.6433157474725739 -8.6433157474725775 ; createNode nurbsCurve -n "footBack_R0_crvShape" -p "footBack_R0_crv"; - rename -uid "B44EBB29-4E83-5779-07BA-0BAE399328C4"; + rename -uid "2B2B049D-4914-A2EB-6869-05A14D571FEF"; setAttr -k off ".v"; setAttr -s 4 ".iog[0].og"; setAttr ".tw" yes; createNode nurbsCurve -n "footBack_R0_crvShapeOrig" -p "footBack_R0_crv"; - rename -uid "C81C1E13-4A44-97D2-7907-FA82EBAD3BD2"; + rename -uid "042AC039-4920-8AA8-F15C-88934C25896F"; setAttr -k off ".v"; setAttr ".io" yes; setAttr ".cc" -type "nurbsCurve" @@ -8772,10 +8853,10 @@ createNode nurbsCurve -n "footBack_R0_crvShapeOrig" -p "footBack_R0_crv"; 0 0 0 ; createNode transform -n "footBack_R0_heel" -p "footBack_R0_root"; - rename -uid "84C29B98-4976-90D8-E621-44B0F6979BE7"; + rename -uid "AADA33A1-4B6F-DF07-146C-A9BD84F4B0CD"; addAttr -ci true -sn "isGearGuide" -ln "isGearGuide" -dv 1 -min 0 -max 1 -at "bool"; setAttr -k off -cb on ".v"; - setAttr ".t" -type "double3" -1.0658141036401503e-014 -0.34547277013915573 -0.37260003933978858 ; + setAttr ".t" -type "double3" -1.7763568394002505e-014 -0.34547277013915656 -0.37260003933978325 ; setAttr -k off -cb on ".tx"; setAttr -k off -cb on ".ty"; setAttr -k off -cb on ".tz"; @@ -8783,12 +8864,12 @@ createNode transform -n "footBack_R0_heel" -p "footBack_R0_root"; setAttr -k off -cb on ".ry"; setAttr -k off -cb on ".rz"; setAttr -cb on ".ro"; - setAttr ".s" -type "double3" 0.99999999999999978 1 1.0000000000000009 ; + setAttr ".s" -type "double3" 0.99999999999999989 1.0000000000000002 1.0000000000000007 ; setAttr -k off -cb on ".sx"; setAttr -k off -cb on ".sy"; setAttr -k off -cb on ".sz"; createNode nurbsCurve -n "footBack_R0_heelShape" -p "footBack_R0_heel"; - rename -uid "F59A78D1-4FBE-7F6D-7B4F-07A105EC7F93"; + rename -uid "7C15FDF4-4832-E6F2-E827-DB9E9EC0C8C0"; setAttr ".ihi" 0; setAttr -k off ".v"; setAttr ".ove" yes; @@ -8800,8 +8881,8 @@ createNode nurbsCurve -n "footBack_R0_heelShape" -p "footBack_R0_heel"; 0.25 0 0 -0.25 0 0 ; -createNode nurbsCurve -n "footBack_R0_heel10Shape" -p "footBack_R0_heel"; - rename -uid "B5F62F62-4378-0470-8F4A-00B64C9F2C5D"; +createNode nurbsCurve -n "footBack_R0_heel1Shape" -p "footBack_R0_heel"; + rename -uid "6AA87FAC-429A-50F8-6771-15B10B75205C"; setAttr ".ihi" 0; setAttr -k off ".v"; setAttr ".ove" yes; @@ -8813,8 +8894,8 @@ createNode nurbsCurve -n "footBack_R0_heel10Shape" -p "footBack_R0_heel"; 0 0.25 0 0 -0.25 0 ; -createNode nurbsCurve -n "footBack_R0_heel11Shape" -p "footBack_R0_heel"; - rename -uid "2E92BFC2-492F-E936-63E3-62976633ADF0"; +createNode nurbsCurve -n "footBack_R0_heel2Shape" -p "footBack_R0_heel"; + rename -uid "425CB78B-40FD-EE8A-6E90-4F801988B6F1"; setAttr ".ihi" 0; setAttr -k off ".v"; setAttr ".ove" yes; @@ -8826,8 +8907,8 @@ createNode nurbsCurve -n "footBack_R0_heel11Shape" -p "footBack_R0_heel"; 0 0 0.25 0 0 -0.25 ; -createNode nurbsCurve -n "footBack_R0_heel12Shape" -p "footBack_R0_heel"; - rename -uid "E8E1B90D-4038-32A6-475A-02AFCDF38856"; +createNode nurbsCurve -n "footBack_R0_heel3Shape" -p "footBack_R0_heel"; + rename -uid "1FE38401-465E-45F9-9785-8592D15E38BA"; setAttr ".ihi" 0; setAttr -k off ".v"; setAttr ".ove" yes; @@ -8844,8 +8925,8 @@ createNode nurbsCurve -n "footBack_R0_heel12Shape" -p "footBack_R0_heel"; 0 -0.1875 0 -0.1875 0 0 ; -createNode nurbsCurve -n "footBack_R0_heel12_0crvShape" -p "footBack_R0_heel"; - rename -uid "EA1485C6-4D7A-CC2F-6225-43B6E336041B"; +createNode nurbsCurve -n "footBack_R0_heel3_0crvShape" -p "footBack_R0_heel"; + rename -uid "47773F2A-4FE9-352E-3E9B-09BAEBCCB9AD"; setAttr ".ihi" 0; setAttr -k off ".v"; setAttr ".ove" yes; @@ -8862,8 +8943,8 @@ createNode nurbsCurve -n "footBack_R0_heel12_0crvShape" -p "footBack_R0_heel"; 0 0 -0.1875 -0.1875 0 0 ; -createNode nurbsCurve -n "footBack_R0_heel12_1crvShape" -p "footBack_R0_heel"; - rename -uid "4AB630D8-41CE-4436-E89B-12A8D2FC2FCC"; +createNode nurbsCurve -n "footBack_R0_heel3_1crvShape" -p "footBack_R0_heel"; + rename -uid "7A72A506-43B8-0E7B-B59A-EE9E0D015A7D"; setAttr ".ihi" 0; setAttr -k off ".v"; setAttr ".ove" yes; @@ -8881,10 +8962,10 @@ createNode nurbsCurve -n "footBack_R0_heel12_1crvShape" -p "footBack_R0_heel"; 0 0 -0.1875 ; createNode transform -n "footBack_R0_outpivot" -p "footBack_R0_root"; - rename -uid "648C793F-4326-E4F2-B7C8-5F8541956323"; + rename -uid "40616D99-4F3F-D697-5816-D5A063C7EFF0"; addAttr -ci true -sn "isGearGuide" -ln "isGearGuide" -dv 1 -min 0 -max 1 -at "bool"; setAttr -k off -cb on ".v"; - setAttr ".t" -type "double3" 1.0422206583139833 -0.34547277013915573 0.11497296198778173 ; + setAttr ".t" -type "double3" 1.0422206583139744 -0.34547277013915628 0.11497296198779239 ; setAttr -k off -cb on ".tx"; setAttr -k off -cb on ".ty"; setAttr -k off -cb on ".tz"; @@ -8892,12 +8973,12 @@ createNode transform -n "footBack_R0_outpivot" -p "footBack_R0_root"; setAttr -k off -cb on ".ry"; setAttr -k off -cb on ".rz"; setAttr -cb on ".ro"; - setAttr ".s" -type "double3" 0.99999999999999978 1 1.0000000000000009 ; + setAttr ".s" -type "double3" 0.99999999999999989 1.0000000000000002 1.0000000000000007 ; setAttr -k off -cb on ".sx"; setAttr -k off -cb on ".sy"; setAttr -k off -cb on ".sz"; createNode nurbsCurve -n "footBack_R0_outpivotShape" -p "footBack_R0_outpivot"; - rename -uid "A6EC6376-4120-9E05-BB93-9EB996F67A27"; + rename -uid "BE08395A-4D68-D372-1A3E-FF92A90BE0D1"; setAttr ".ihi" 0; setAttr -k off ".v"; setAttr ".ove" yes; @@ -8909,8 +8990,8 @@ createNode nurbsCurve -n "footBack_R0_outpivotShape" -p "footBack_R0_outpivot"; 0.25 0 0 -0.25 0 0 ; -createNode nurbsCurve -n "footBack_R0_outpivot10Shape" -p "footBack_R0_outpivot"; - rename -uid "4DAFA26F-49A4-8D21-79D8-0CBA06732A7E"; +createNode nurbsCurve -n "footBack_R0_outpivot1Shape" -p "footBack_R0_outpivot"; + rename -uid "B1B14E15-44D0-53B4-CAF0-A1A9C231EFA8"; setAttr ".ihi" 0; setAttr -k off ".v"; setAttr ".ove" yes; @@ -8922,8 +9003,8 @@ createNode nurbsCurve -n "footBack_R0_outpivot10Shape" -p "footBack_R0_outpivot" 0 0.25 0 0 -0.25 0 ; -createNode nurbsCurve -n "footBack_R0_outpivot11Shape" -p "footBack_R0_outpivot"; - rename -uid "8C6B69F2-4872-F814-9B4E-FB89106E6CE1"; +createNode nurbsCurve -n "footBack_R0_outpivot2Shape" -p "footBack_R0_outpivot"; + rename -uid "9EF62CD0-4FE8-340B-572E-778CC372CC76"; setAttr ".ihi" 0; setAttr -k off ".v"; setAttr ".ove" yes; @@ -8935,8 +9016,8 @@ createNode nurbsCurve -n "footBack_R0_outpivot11Shape" -p "footBack_R0_outpivot" 0 0 0.25 0 0 -0.25 ; -createNode nurbsCurve -n "footBack_R0_outpivot12Shape" -p "footBack_R0_outpivot"; - rename -uid "89F6508C-432A-0594-C73B-89BA1C709334"; +createNode nurbsCurve -n "footBack_R0_outpivot3Shape" -p "footBack_R0_outpivot"; + rename -uid "0BE48FFB-4495-8AA1-E9CA-6B91D067670E"; setAttr ".ihi" 0; setAttr -k off ".v"; setAttr ".ove" yes; @@ -8953,8 +9034,8 @@ createNode nurbsCurve -n "footBack_R0_outpivot12Shape" -p "footBack_R0_outpivot" 0 -0.1875 0 -0.1875 0 0 ; -createNode nurbsCurve -n "footBack_R0_outpivot12_0crvShape" -p "footBack_R0_outpivot"; - rename -uid "13D8BEB1-4B74-D797-ED4A-E58A06002FC0"; +createNode nurbsCurve -n "footBack_R0_outpivot3_0crvShape" -p "footBack_R0_outpivot"; + rename -uid "2D95104B-4982-7DCA-F8F8-138BF031E179"; setAttr ".ihi" 0; setAttr -k off ".v"; setAttr ".ove" yes; @@ -8971,8 +9052,8 @@ createNode nurbsCurve -n "footBack_R0_outpivot12_0crvShape" -p "footBack_R0_outp 0 0 -0.1875 -0.1875 0 0 ; -createNode nurbsCurve -n "footBack_R0_outpivot12_1crvShape" -p "footBack_R0_outpivot"; - rename -uid "FE1F14D3-444D-4A87-D175-06A4C5671CC7"; +createNode nurbsCurve -n "footBack_R0_outpivot3_1crvShape" -p "footBack_R0_outpivot"; + rename -uid "68B541CF-4F87-C175-7604-FB98074FB65E"; setAttr ".ihi" 0; setAttr -k off ".v"; setAttr ".ove" yes; @@ -8990,10 +9071,10 @@ createNode nurbsCurve -n "footBack_R0_outpivot12_1crvShape" -p "footBack_R0_outp 0 0 -0.1875 ; createNode transform -n "footBack_R0_inpivot" -p "footBack_R0_root"; - rename -uid "B3B5F0B1-4825-6708-DC87-F8B40787A4DF"; + rename -uid "6401BF6B-4B25-EDA8-59B9-34ADBC55245C"; addAttr -ci true -sn "isGearGuide" -ln "isGearGuide" -dv 1 -min 0 -max 1 -at "bool"; setAttr -k off -cb on ".v"; - setAttr ".t" -type "double3" -1.16821468262156 -0.34547277013915567 0.2122813601173128 ; + setAttr ".t" -type "double3" -1.1682146826215707 -0.34547277013915628 0.21228136011731991 ; setAttr -k off -cb on ".tx"; setAttr -k off -cb on ".ty"; setAttr -k off -cb on ".tz"; @@ -9001,12 +9082,12 @@ createNode transform -n "footBack_R0_inpivot" -p "footBack_R0_root"; setAttr -k off -cb on ".ry"; setAttr -k off -cb on ".rz"; setAttr -cb on ".ro"; - setAttr ".s" -type "double3" 0.99999999999999978 1 1.0000000000000009 ; + setAttr ".s" -type "double3" 0.99999999999999989 1.0000000000000002 1.0000000000000007 ; setAttr -k off -cb on ".sx"; setAttr -k off -cb on ".sy"; setAttr -k off -cb on ".sz"; createNode nurbsCurve -n "footBack_R0_inpivotShape" -p "footBack_R0_inpivot"; - rename -uid "54FE8E8E-4AAC-0394-83FE-23A8D1D25256"; + rename -uid "7C3341B9-4966-A630-9F12-8CB2E5CBF514"; setAttr ".ihi" 0; setAttr -k off ".v"; setAttr ".ove" yes; @@ -9018,8 +9099,8 @@ createNode nurbsCurve -n "footBack_R0_inpivotShape" -p "footBack_R0_inpivot"; 0.25 0 0 -0.25 0 0 ; -createNode nurbsCurve -n "footBack_R0_inpivot10Shape" -p "footBack_R0_inpivot"; - rename -uid "D2324A28-4359-08C3-8C66-51BEFC969067"; +createNode nurbsCurve -n "footBack_R0_inpivot1Shape" -p "footBack_R0_inpivot"; + rename -uid "99612423-49C7-33EF-0AD9-E98E456E511F"; setAttr ".ihi" 0; setAttr -k off ".v"; setAttr ".ove" yes; @@ -9031,8 +9112,8 @@ createNode nurbsCurve -n "footBack_R0_inpivot10Shape" -p "footBack_R0_inpivot"; 0 0.25 0 0 -0.25 0 ; -createNode nurbsCurve -n "footBack_R0_inpivot11Shape" -p "footBack_R0_inpivot"; - rename -uid "B331EEAF-41CC-ECB2-30CF-768498882041"; +createNode nurbsCurve -n "footBack_R0_inpivot2Shape" -p "footBack_R0_inpivot"; + rename -uid "7BDE0DF0-4A88-91D2-63B3-0C81874FA138"; setAttr ".ihi" 0; setAttr -k off ".v"; setAttr ".ove" yes; @@ -9044,8 +9125,8 @@ createNode nurbsCurve -n "footBack_R0_inpivot11Shape" -p "footBack_R0_inpivot"; 0 0 0.25 0 0 -0.25 ; -createNode nurbsCurve -n "footBack_R0_inpivot12Shape" -p "footBack_R0_inpivot"; - rename -uid "66DC13F3-4C93-4E79-E025-8F9EBFF59CFA"; +createNode nurbsCurve -n "footBack_R0_inpivot3Shape" -p "footBack_R0_inpivot"; + rename -uid "98484AF7-42C9-7423-D3F5-9C9DFDAADA37"; setAttr ".ihi" 0; setAttr -k off ".v"; setAttr ".ove" yes; @@ -9062,8 +9143,8 @@ createNode nurbsCurve -n "footBack_R0_inpivot12Shape" -p "footBack_R0_inpivot"; 0 -0.1875 0 -0.1875 0 0 ; -createNode nurbsCurve -n "footBack_R0_inpivot12_0crvShape" -p "footBack_R0_inpivot"; - rename -uid "C2DB332B-429F-FE84-754A-60AF4A5714F3"; +createNode nurbsCurve -n "footBack_R0_inpivot3_0crvShape" -p "footBack_R0_inpivot"; + rename -uid "8FE0752D-47B4-5131-9DE4-9C9B079E6CC0"; setAttr ".ihi" 0; setAttr -k off ".v"; setAttr ".ove" yes; @@ -9080,8 +9161,8 @@ createNode nurbsCurve -n "footBack_R0_inpivot12_0crvShape" -p "footBack_R0_inpiv 0 0 -0.1875 -0.1875 0 0 ; -createNode nurbsCurve -n "footBack_R0_inpivot12_1crvShape" -p "footBack_R0_inpivot"; - rename -uid "6C5648F2-4300-55D7-9D27-A38BB523DF6B"; +createNode nurbsCurve -n "footBack_R0_inpivot3_1crvShape" -p "footBack_R0_inpivot"; + rename -uid "17B03CEC-4AFC-C076-D302-92B89D6756C4"; setAttr ".ihi" 0; setAttr -k off ".v"; setAttr ".ove" yes; @@ -9099,19 +9180,19 @@ createNode nurbsCurve -n "footBack_R0_inpivot12_1crvShape" -p "footBack_R0_inpiv 0 0 -0.1875 ; createNode transform -n "footBack_R0_1" -p "footBack_R0_root"; - rename -uid "2FC996E8-4F4B-34E9-3166-C7AB763B900D"; + rename -uid "BC52FE92-4D8C-8CA5-5C4F-4195206BBEF0"; setAttr ".ovdt" 1; setAttr ".ove" yes; - setAttr ".t" -type "double3" -10.980332218718955 -0.49678747209357782 11.584116504196611 ; + setAttr ".t" -type "double3" -10.980332218718958 -0.49678747209357621 11.584116504196617 ; setAttr ".r" -type "double3" 0 179.99999999999997 0 ; - setAttr ".s" -type "double3" 8.6433157474725757 8.6433157474725739 -8.6433157474725792 ; + setAttr ".s" -type "double3" 8.6433157474725775 8.6433157474725739 -8.6433157474725775 ; createNode nurbsCurve -n "footBack_R0_Shape1" -p "footBack_R0_1"; - rename -uid "0C63E2F5-401A-3F47-A3DC-39AC326CCB7F"; + rename -uid "E4F4E065-4022-0BCB-6184-91ACFEB2C46E"; setAttr -k off ".v"; setAttr -s 4 ".iog[0].og"; setAttr ".tw" yes; createNode nurbsCurve -n "footBack_R0_Shape1Orig" -p "footBack_R0_1"; - rename -uid "71E5458A-4E02-6F61-BE07-D1945D9C2254"; + rename -uid "8E123112-4F18-5BD6-0FFC-9A95FB167AE6"; setAttr -k off ".v"; setAttr ".io" yes; setAttr ".cc" -type "nurbsCurve" @@ -9125,7 +9206,7 @@ createNode nurbsCurve -n "footBack_R0_Shape1Orig" -p "footBack_R0_1"; 0 0 0 ; createNode transform -n "backLegUI_R0_root" -p "footBack_R0_root"; - rename -uid "64CB3A0C-4228-D181-8A5C-2D8D24C95658"; + rename -uid "6021D261-40D9-B0AA-7D2E-F7902BA115F7"; addAttr -ci true -sn "isGearGuide" -ln "isGearGuide" -dv 1 -min 0 -max 1 -at "bool"; addAttr -ci true -sn "comp_type" -ln "comp_type" -dt "string"; addAttr -ci true -sn "comp_name" -ln "comp_name" -dt "string"; @@ -9154,7 +9235,7 @@ createNode transform -n "backLegUI_R0_root" -p "footBack_R0_root"; addAttr -ci true -sn "useIndex" -ln "useIndex" -min 0 -max 1 -at "bool"; addAttr -ci true -sn "parentJointIndex" -ln "parentJointIndex" -at "long"; setAttr -k off -cb on ".v"; - setAttr ".t" -type "double3" 7.9148715870389861 6.0337539388988519 -0.92016921390297313 ; + setAttr ".t" -type "double3" 7.914871587038979 6.0337539388988555 -0.92016921390296424 ; setAttr -k off -cb on ".tx"; setAttr -k off -cb on ".ty"; setAttr -k off -cb on ".tz"; @@ -9162,7 +9243,7 @@ createNode transform -n "backLegUI_R0_root" -p "footBack_R0_root"; setAttr -k off -cb on ".ry"; setAttr -k off -cb on ".rz"; setAttr -cb on ".ro"; - setAttr ".s" -type "double3" 8.6433157474725739 8.6433157474725775 8.6433157474725828 ; + setAttr ".s" -type "double3" 8.6433157474725757 8.6433157474725792 8.643315747472581 ; setAttr -k off -cb on ".sx"; setAttr -k off -cb on ".sy"; setAttr -k off -cb on ".sz"; @@ -9179,7 +9260,7 @@ createNode transform -n "backLegUI_R0_root" -p "footBack_R0_root"; setAttr ".ctlSize" 0.5; setAttr ".parentJointIndex" -1; createNode nurbsCurve -n "backLegUI_R0_rootShape" -p "backLegUI_R0_root"; - rename -uid "511F4F9E-4CED-445D-580C-5B831CB21702"; + rename -uid "6372446E-4EEC-C6DE-C6EC-B39C18F3AB4D"; setAttr ".ihi" 0; setAttr -k off ".v"; setAttr ".ove" yes; @@ -9191,8 +9272,8 @@ createNode nurbsCurve -n "backLegUI_R0_rootShape" -p "backLegUI_R0_root"; 0.25 0 0 -0.25 0 0 ; -createNode nurbsCurve -n "backLegUI_R0_root10Shape" -p "backLegUI_R0_root"; - rename -uid "7566C060-44B3-89A1-7682-7D94368E0394"; +createNode nurbsCurve -n "backLegUI_R0_root1Shape" -p "backLegUI_R0_root"; + rename -uid "8804CEC8-48E2-E9C3-A888-BB8AC8A213AB"; setAttr ".ihi" 0; setAttr -k off ".v"; setAttr ".ove" yes; @@ -9204,8 +9285,8 @@ createNode nurbsCurve -n "backLegUI_R0_root10Shape" -p "backLegUI_R0_root"; 0 0.25 0 0 -0.25 0 ; -createNode nurbsCurve -n "backLegUI_R0_root11Shape" -p "backLegUI_R0_root"; - rename -uid "A54AB8AD-472D-8F62-DB6B-958A42ED77AA"; +createNode nurbsCurve -n "backLegUI_R0_root2Shape" -p "backLegUI_R0_root"; + rename -uid "DAA0D081-4E3D-C218-5439-8D816BB18BF0"; setAttr ".ihi" 0; setAttr -k off ".v"; setAttr ".ove" yes; @@ -9217,8 +9298,8 @@ createNode nurbsCurve -n "backLegUI_R0_root11Shape" -p "backLegUI_R0_root"; 0 0 0.25 0 0 -0.25 ; -createNode nurbsCurve -n "backLegUI_R0_root12Shape" -p "backLegUI_R0_root"; - rename -uid "DD4D4C80-4713-D9E0-F221-1DAAA47F6BFB"; +createNode nurbsCurve -n "backLegUI_R0_root3Shape" -p "backLegUI_R0_root"; + rename -uid "7167A3F5-4BEB-1917-B3BD-B7B13A576667"; setAttr ".ihi" 0; setAttr -k off ".v"; setAttr ".ove" yes; @@ -9245,36 +9326,35 @@ createNode nurbsCurve -n "backLegUI_R0_root12Shape" -p "backLegUI_R0_root"; -0.125 -0.125 -0.125 ; createNode transform -n "backLegUI_R0_sizeRef" -p "backLegUI_R0_root"; - rename -uid "3F9451D4-47B3-EBD8-B6A4-E2B0B540CF89"; + rename -uid "41E4CB50-42ED-5A2D-CB63-94959B9CDEFF"; addAttr -ci true -sn "isGearGuide" -ln "isGearGuide" -dv 1 -min 0 -max 1 -at "bool"; setAttr -k off -cb on ".v"; - setAttr ".t" -type "double3" -8.8817841970012523e-016 0 0.99999999999999956 ; + setAttr ".t" -type "double3" -4.4408920985006262e-016 4.4408920985006262e-016 0.99999999999999933 ; setAttr -k off -cb on ".tx"; setAttr -k off -cb on ".ty"; setAttr -k off -cb on ".tz"; - setAttr ".r" -type "double3" 0 179.99999999999997 0 ; setAttr -k off -cb on ".rx"; setAttr -k off -cb on ".ry"; setAttr -k off -cb on ".rz"; setAttr -cb on ".ro"; - setAttr ".s" -type "double3" 1.0000000000000002 0.99999999999999956 -0.99999999999999967 ; + setAttr ".s" -type "double3" 1.0000000000000002 0.99999999999999944 0.99999999999999967 ; setAttr -k off -cb on ".sx"; setAttr -k off -cb on ".sy"; setAttr -k off -cb on ".sz"; createNode transform -n "legBack_R0_crv1" -p "legBack_R0_root"; - rename -uid "EFA1D93E-4DC3-F5F6-B724-6090D77DA9DB"; + rename -uid "E91CC31B-4412-5F60-DD0B-B589A305516F"; setAttr ".ovdt" 1; setAttr ".ove" yes; - setAttr ".t" -type "double3" -1.7959711117807555 -3.2803056907023964 1.8090460715460535 ; - setAttr ".r" -type "double3" 0 179.99999999999997 0 ; + setAttr ".t" -type "double3" -1.7959711117807546 -3.2803056907023964 1.8090460715460548 ; + setAttr ".r" -type "double3" 0 180 0 ; setAttr ".s" -type "double3" 1.4137227438343885 1.413722743834388 -1.4137227438343878 ; createNode nurbsCurve -n "legBack_R0_crvShape1" -p "legBack_R0_crv1"; - rename -uid "F63DBDA6-486F-3F10-A2C4-2AB9D41C4ED4"; + rename -uid "CF348A42-4EEE-62BA-E76F-90AB72AEA3C2"; setAttr -k off ".v"; setAttr -s 4 ".iog[0].og"; setAttr ".tw" yes; createNode nurbsCurve -n "legBack_R0_crvShape1Orig" -p "legBack_R0_crv1"; - rename -uid "52B710A4-425F-41B2-AD78-43B861B2D16E"; + rename -uid "35AD983C-43B3-A6F6-643F-1A87E6C9C177"; setAttr -k off ".v"; setAttr ".io" yes; setAttr ".cc" -type "nurbsCurve" @@ -9287,796 +9367,699 @@ createNode nurbsCurve -n "legBack_R0_crvShape1Orig" -p "legBack_R0_crv1"; 0 0 0 0 0 0 ; -createNode lightLinker -s -n "lightLinker1"; - rename -uid "93C7E485-4303-96CB-3285-6998F488D1E1"; - setAttr -s 2 ".lnk"; - setAttr -s 2 ".slnk"; -createNode shapeEditorManager -n "shapeEditorManager"; - rename -uid "4DBEB377-459F-32C6-F55C-5AAAF2C579C2"; -createNode poseInterpolatorManager -n "poseInterpolatorManager"; - rename -uid "C7C485D3-4234-7822-26D9-D9BFA07BD7D6"; -createNode displayLayerManager -n "layerManager"; - rename -uid "CDE0999F-463F-AC47-95D2-02BBD668E409"; -createNode displayLayer -n "defaultLayer"; - rename -uid "40709129-457B-A6AB-E667-2A9D9F646821"; -createNode renderLayerManager -n "renderLayerManager"; - rename -uid "EC27F888-4D85-C0A4-6E2A-53BC243060AE"; -createNode renderLayer -n "defaultRenderLayer"; - rename -uid "B97D296A-45E0-9204-64D4-A189CDE26572"; - setAttr ".g" yes; createNode animCurveUU -n "spine_C0_root_st_profile"; - rename -uid "8B707449-4497-2FE4-1566-08901FF21A8F"; + rename -uid "363D8BE3-42AD-1BFA-1E4A-54A9AE6EC631"; setAttr ".tan" 18; setAttr ".wgt" no; setAttr -s 3 ".ktv[0:2]" 0 0 0.5 -1 1 0; createNode animCurveUU -n "spine_C0_root_sq_profile"; - rename -uid "F0CD71D0-4349-E26E-0E13-1A932BDAB7C3"; + rename -uid "FAE224E6-4AFE-4E58-E28B-D7A8F298F713"; setAttr ".tan" 18; setAttr ".wgt" no; setAttr -s 3 ".ktv[0:2]" 0 0 0.5 1 1 0; -createNode unitConversion -n "unitConversion28"; - rename -uid "96509A29-4A64-92D0-B14C-7A956DFE8DD7"; - setAttr ".cf" 0.017453292519943295; -createNode mgear_curveCns -n "mgear_curveCns156"; - rename -uid "C5AA862D-412C-5AF0-3D2F-07961A6A1E35"; - setAttr -s 2 ".inputs"; -createNode tweak -n "tweak156"; - rename -uid "16B63B40-47A3-0D2C-A4AF-409A2CEE8F64"; -createNode objectSet -n "mgear_curveCns156Set"; - rename -uid "3E1E0A33-4425-404D-7C6D-D2B526E3C1E1"; - setAttr ".ihi" 0; - setAttr ".vo" yes; -createNode groupId -n "mgear_curveCns156GroupId"; - rename -uid "BF989D7D-4B60-E68B-334C-3A87075F688B"; - setAttr ".ihi" 0; -createNode groupParts -n "mgear_curveCns156GroupParts"; - rename -uid "3EE69B45-44E6-F7D5-2A35-E6AE2D633BD9"; - setAttr ".ihi" 0; - setAttr ".ic" -type "componentList" 1 "cv[*]"; -createNode objectSet -n "tweakSet156"; - rename -uid "06C06E9A-40A8-4E9A-A7EE-0099709E8DA0"; - setAttr ".ihi" 0; - setAttr ".vo" yes; -createNode groupId -n "groupId312"; - rename -uid "90878D57-4C8D-1566-E11E-1EA0DAE6D2AE"; - setAttr ".ihi" 0; -createNode groupParts -n "groupParts312"; - rename -uid "911B24E1-4FEF-9A5F-7015-F0B1660E3D2C"; - setAttr ".ihi" 0; - setAttr ".ic" -type "componentList" 1 "cv[*]"; createNode animCurveUU -n "neck_C0_root_st_profile"; - rename -uid "DA35A896-4EE6-275A-83CE-43B3BD6D6AED"; + rename -uid "6D4B1784-41A8-F6CA-50EB-77B39C20FDC6"; setAttr ".tan" 18; setAttr ".wgt" no; setAttr -s 3 ".ktv[0:2]" 0 0 0.5 -1 1 0; createNode animCurveUU -n "neck_C0_root_sq_profile"; - rename -uid "CFF724A1-4C18-65D2-FF15-8CBCF4B7054F"; + rename -uid "9E00FCB7-40CC-9F3E-FE45-58986C589F0F"; setAttr ".tan" 18; setAttr ".wgt" no; setAttr -s 3 ".ktv[0:2]" 0 0 0.5 1 1 0; -createNode unitConversion -n "unitConversion29"; - rename -uid "A0E9D0B0-4E66-B072-50FD-1E950D8D1E54"; - setAttr ".cf" 0.017453292519943295; -createNode mgear_curveCns -n "mgear_curveCns157"; - rename -uid "C8B66144-445A-BBA9-9FAB-A98EA8DEA17A"; - setAttr -s 4 ".inputs"; -createNode tweak -n "tweak157"; - rename -uid "CAD750A3-4B39-E172-D55F-AEB9BB4CC076"; -createNode objectSet -n "mgear_curveCns157Set"; - rename -uid "E6108368-4FE5-C567-43D8-C69DC4CCAF55"; +createNode mgear_curveCns -n "mgear_curveCns160"; + rename -uid "C46AC291-4433-44E9-FF1E-DCA6AFD8F87D"; + setAttr -s 2 ".inputs"; +createNode objectSet -n "mgear_curveCns160Set"; + rename -uid "6826E33F-4CCB-EAD9-4C7F-8CAFBA7B8129"; setAttr ".ihi" 0; setAttr ".vo" yes; -createNode groupId -n "mgear_curveCns157GroupId"; - rename -uid "BE10C042-442E-79E0-5EE0-2E823156CF11"; +createNode groupId -n "mgear_curveCns160GroupId"; + rename -uid "307AF40B-48E2-1D2F-48D3-A1815FDE8DEC"; setAttr ".ihi" 0; -createNode groupParts -n "mgear_curveCns157GroupParts"; - rename -uid "1ADB0228-422A-3293-45D6-10A2F7C0942F"; +createNode groupParts -n "mgear_curveCns160GroupParts"; + rename -uid "59BE1B5E-41E0-6E14-5378-1EAFF2668EB1"; setAttr ".ihi" 0; setAttr ".ic" -type "componentList" 1 "cv[*]"; -createNode objectSet -n "tweakSet157"; - rename -uid "D5FA85B0-48A3-EE95-1AB9-39914FE6F990"; +createNode tweak -n "tweak160"; + rename -uid "44AD54D5-4AA6-A052-1778-2DBF9B481F81"; +createNode objectSet -n "tweakSet160"; + rename -uid "95985CC6-4D03-DDF8-16A2-3DB69DB41561"; setAttr ".ihi" 0; setAttr ".vo" yes; -createNode groupId -n "groupId314"; - rename -uid "83AB3ABC-43DC-494E-CCA6-0D914002FB24"; +createNode groupId -n "groupId320"; + rename -uid "673497D6-4E08-99EA-C8A5-4183E2771DFC"; setAttr ".ihi" 0; -createNode groupParts -n "groupParts314"; - rename -uid "288A6D8D-465B-96A0-19D7-DCAADAFFA399"; +createNode groupParts -n "groupParts320"; + rename -uid "EA1DFB82-420A-B4A9-D346-44928D49F123"; setAttr ".ihi" 0; setAttr ".ic" -type "componentList" 1 "cv[*]"; -createNode mgear_curveCns -n "mgear_curveCns158"; - rename -uid "314DFD28-4CF3-CF82-A31B-60A37249A44F"; - setAttr -s 3 ".inputs"; -createNode tweak -n "tweak158"; - rename -uid "41017CDD-49A2-E9C8-FDD5-83B6BE9AEB25"; -createNode objectSet -n "mgear_curveCns158Set"; - rename -uid "B80917F9-4516-AB1C-06A6-CE8180C4FD15"; +createNode mgear_curveCns -n "mgear_curveCns161"; + rename -uid "908F2D89-49BA-C0BE-9236-368F10887F22"; + setAttr -s 2 ".inputs"; +createNode objectSet -n "mgear_curveCns161Set"; + rename -uid "DD847B68-4BD9-50DB-0941-7F9B029D6F4D"; setAttr ".ihi" 0; setAttr ".vo" yes; -createNode groupId -n "mgear_curveCns158GroupId"; - rename -uid "3B4D5339-429F-7813-9FB4-0C9FB7102019"; +createNode groupId -n "mgear_curveCns161GroupId"; + rename -uid "57BFCF22-4E17-4CC0-C9C3-C0828E9C61FA"; setAttr ".ihi" 0; -createNode groupParts -n "mgear_curveCns158GroupParts"; - rename -uid "D220A4EF-43C1-E2CD-3B17-2582B9209F44"; +createNode groupParts -n "mgear_curveCns161GroupParts"; + rename -uid "8130A0FE-441D-2D39-A8C1-D2B55FBB6EC3"; setAttr ".ihi" 0; setAttr ".ic" -type "componentList" 1 "cv[*]"; -createNode objectSet -n "tweakSet158"; - rename -uid "0750809B-46A7-4CB7-9008-E599E9C5ED00"; +createNode tweak -n "tweak161"; + rename -uid "5CC9D03B-415D-E573-09E7-698670E10528"; +createNode objectSet -n "tweakSet161"; + rename -uid "BAD98D06-4C0B-74D2-648E-6D973F5F943C"; setAttr ".ihi" 0; setAttr ".vo" yes; -createNode groupId -n "groupId316"; - rename -uid "67A22DCF-48B4-DF0C-6528-27BFCD6FA19F"; +createNode groupId -n "groupId322"; + rename -uid "94D9D31E-43BD-CAF7-1545-5B9AAE5ABDD5"; setAttr ".ihi" 0; -createNode groupParts -n "groupParts316"; - rename -uid "F84A2F34-4BE8-E5C9-F9A6-A6B738FEB930"; +createNode groupParts -n "groupParts322"; + rename -uid "993C91DF-4AB9-120F-A2B3-828B2C77B730"; setAttr ".ihi" 0; setAttr ".ic" -type "componentList" 1 "cv[*]"; createNode mgear_curveCns -n "mgear_curveCns159"; - rename -uid "1D8D3431-48A2-1E21-E10A-10B743D5BF29"; + rename -uid "F4C586A0-4F43-E0A7-3582-80A145B97C1A"; setAttr -s 2 ".inputs"; -createNode tweak -n "tweak159"; - rename -uid "4260C27E-4C21-17CF-077A-578745B71D4F"; createNode objectSet -n "mgear_curveCns159Set"; - rename -uid "53CB8572-453D-724E-86B2-FA931CC930EB"; + rename -uid "C394FA65-48C7-075F-A882-0AAD6861F2EF"; setAttr ".ihi" 0; setAttr ".vo" yes; createNode groupId -n "mgear_curveCns159GroupId"; - rename -uid "09DD7CC6-4175-291E-ABAA-388E551B32FD"; + rename -uid "A049A75F-44E2-70CF-5B10-958A3ADD9E38"; setAttr ".ihi" 0; createNode groupParts -n "mgear_curveCns159GroupParts"; - rename -uid "FBEAD94F-4473-CB69-A31B-CF874501455A"; + rename -uid "0E2D47A4-473C-D106-F10F-1CA0533E7CF5"; setAttr ".ihi" 0; setAttr ".ic" -type "componentList" 1 "cv[*]"; +createNode tweak -n "tweak159"; + rename -uid "CC685F0D-4DE9-2CE9-605E-A88B905F0819"; createNode objectSet -n "tweakSet159"; - rename -uid "FF808359-4504-0B7C-DD78-55B04E966040"; + rename -uid "4FF90709-45CF-A5A8-51E9-5E83DB705890"; setAttr ".ihi" 0; setAttr ".vo" yes; createNode groupId -n "groupId318"; - rename -uid "F119603A-4646-AF81-9ED4-4ABA74D2E05D"; + rename -uid "63F17790-4415-8291-AE86-24852E455482"; setAttr ".ihi" 0; createNode groupParts -n "groupParts318"; - rename -uid "D841BC77-454F-AA05-C13C-E1BA9BD6A6C9"; - setAttr ".ihi" 0; - setAttr ".ic" -type "componentList" 1 "cv[*]"; -createNode mgear_curveCns -n "mgear_curveCns160"; - rename -uid "AB0F93F7-4514-7B70-23F1-59BB095DDE9F"; - setAttr -s 2 ".inputs"; -createNode tweak -n "tweak160"; - rename -uid "63E26BC4-4827-482F-3A2A-FA872C3F1A1E"; -createNode objectSet -n "mgear_curveCns160Set"; - rename -uid "426F84AC-4E09-E61B-0309-C8ABCAA51B06"; - setAttr ".ihi" 0; - setAttr ".vo" yes; -createNode groupId -n "mgear_curveCns160GroupId"; - rename -uid "A834F846-4EC2-3C0B-024D-D9870277441F"; - setAttr ".ihi" 0; -createNode groupParts -n "mgear_curveCns160GroupParts"; - rename -uid "66D19F8F-4F8D-B6F4-FC98-6F9AF2CF1384"; - setAttr ".ihi" 0; - setAttr ".ic" -type "componentList" 1 "cv[*]"; -createNode objectSet -n "tweakSet160"; - rename -uid "0650854A-40C4-F434-D693-F78F9AA1D9A2"; - setAttr ".ihi" 0; - setAttr ".vo" yes; -createNode groupId -n "groupId320"; - rename -uid "593A1712-4369-7FC2-0357-04B9D07F242A"; - setAttr ".ihi" 0; -createNode groupParts -n "groupParts320"; - rename -uid "AA6A9C8C-49AE-9528-8494-3FBA8B8FB57F"; - setAttr ".ihi" 0; - setAttr ".ic" -type "componentList" 1 "cv[*]"; -createNode mgear_curveCns -n "mgear_curveCns161"; - rename -uid "65989987-4ECE-FC43-F48D-AD9EB118F140"; - setAttr -s 2 ".inputs"; -createNode tweak -n "tweak161"; - rename -uid "2640FB75-47EA-6C4D-108C-D8B582FFEC84"; -createNode objectSet -n "mgear_curveCns161Set"; - rename -uid "94C91950-45E9-75C7-274F-10A100BCE19C"; - setAttr ".ihi" 0; - setAttr ".vo" yes; -createNode groupId -n "mgear_curveCns161GroupId"; - rename -uid "26659E99-4254-FDB1-ECA6-3FB7E1DA2540"; - setAttr ".ihi" 0; -createNode groupParts -n "mgear_curveCns161GroupParts"; - rename -uid "B0EEA446-4B9D-5C11-420E-A181414B0F66"; - setAttr ".ihi" 0; - setAttr ".ic" -type "componentList" 1 "cv[*]"; -createNode objectSet -n "tweakSet161"; - rename -uid "3867B691-4A84-4B67-FFEF-A3A9DE774EB5"; - setAttr ".ihi" 0; - setAttr ".vo" yes; -createNode groupId -n "groupId322"; - rename -uid "FB8073E6-4959-AAE1-FD9A-A3998CFF5A82"; - setAttr ".ihi" 0; -createNode groupParts -n "groupParts322"; - rename -uid "74B993DA-422A-3D04-53AA-CBB080746F99"; + rename -uid "6CC99F85-4883-0097-1AFD-738BF064479F"; setAttr ".ihi" 0; setAttr ".ic" -type "componentList" 1 "cv[*]"; createNode mgear_curveCns -n "mgear_curveCns162"; - rename -uid "20F084DC-4FEB-F4B9-5507-2C8469242B70"; + rename -uid "3B61B18F-42E5-CBAA-9DD1-A6A4FD988F8C"; setAttr -s 2 ".inputs"; -createNode tweak -n "tweak162"; - rename -uid "D4777AF2-40AC-C397-4658-5C8BF189FE5E"; createNode objectSet -n "mgear_curveCns162Set"; - rename -uid "6E96B18F-462C-DC82-FC8E-8A9011051A1A"; + rename -uid "27D8D7F7-4FFF-3D12-7BC5-C1920880A4A7"; setAttr ".ihi" 0; setAttr ".vo" yes; createNode groupId -n "mgear_curveCns162GroupId"; - rename -uid "6F945B30-4296-0D2A-0D62-9D99C384BB0E"; + rename -uid "917207FB-47B7-ECAB-5EFE-8F888AE09624"; setAttr ".ihi" 0; createNode groupParts -n "mgear_curveCns162GroupParts"; - rename -uid "E9B682F2-42D6-8729-BF4B-CE9277520E5B"; + rename -uid "E6773AD2-40B2-6CB1-0005-A89FFB68AB4C"; setAttr ".ihi" 0; setAttr ".ic" -type "componentList" 1 "cv[*]"; +createNode tweak -n "tweak162"; + rename -uid "22DC21A4-40F5-03E5-4EAF-93AFBDF32855"; createNode objectSet -n "tweakSet162"; - rename -uid "278D37F9-4C0A-2F22-F720-8BB1E710456B"; + rename -uid "8E8AE1EC-4EF0-8231-C992-E19E3F3BC5A0"; setAttr ".ihi" 0; setAttr ".vo" yes; createNode groupId -n "groupId324"; - rename -uid "DBEB0758-401D-CABC-F5FA-AC8BB1903B0E"; + rename -uid "985B9375-4C26-BE9F-F1F1-D598F516BF4A"; setAttr ".ihi" 0; createNode groupParts -n "groupParts324"; - rename -uid "CD995E76-4422-5D95-AAA4-FEABD9D67FE2"; + rename -uid "B7843D6B-443D-25E6-979A-F896D35ECD17"; setAttr ".ihi" 0; setAttr ".ic" -type "componentList" 1 "cv[*]"; createNode mgear_curveCns -n "mgear_curveCns163"; - rename -uid "BDF61349-42B2-EC75-E478-7AA2D8E832B5"; + rename -uid "2653008B-4016-9DE4-4B36-B3ACF65134A9"; setAttr -s 2 ".inputs"; -createNode tweak -n "tweak163"; - rename -uid "56B18511-456D-DEB7-DF68-05A2A5BD868C"; createNode objectSet -n "mgear_curveCns163Set"; - rename -uid "151BA15C-40B4-CFAD-ACC7-F5BE079CD9DD"; + rename -uid "D73863DB-406C-2C11-BE4F-E1B2A8D5F421"; setAttr ".ihi" 0; setAttr ".vo" yes; createNode groupId -n "mgear_curveCns163GroupId"; - rename -uid "9106D4D1-4423-5C81-388E-B5BCF9938D9F"; + rename -uid "525FDB94-4230-A756-5A47-DBAD39FDFE5A"; setAttr ".ihi" 0; createNode groupParts -n "mgear_curveCns163GroupParts"; - rename -uid "25C0791C-419E-7450-76C0-0EA38100D8E5"; + rename -uid "FCE55CC8-4A2D-8573-E8D9-3F84A85A7175"; setAttr ".ihi" 0; setAttr ".ic" -type "componentList" 1 "cv[*]"; +createNode tweak -n "tweak163"; + rename -uid "0ECAF168-4123-ABC3-10CE-33AF7F6CB2BF"; createNode objectSet -n "tweakSet163"; - rename -uid "837B9C31-418B-C242-CC4A-FFA681AE2B32"; + rename -uid "5FE1AAAA-4C5C-6129-36DF-CDAB88C86F59"; setAttr ".ihi" 0; setAttr ".vo" yes; createNode groupId -n "groupId326"; - rename -uid "64AFDDCA-4CCD-4E51-7568-48A96A8358E9"; + rename -uid "E4459752-43E6-CA6E-76B5-DB8B4865FB81"; setAttr ".ihi" 0; createNode groupParts -n "groupParts326"; - rename -uid "E35A59C3-4D10-77DD-5115-8FB716E6B505"; + rename -uid "40EF6680-41E8-966A-2969-67931DC40153"; setAttr ".ihi" 0; setAttr ".ic" -type "componentList" 1 "cv[*]"; createNode mgear_curveCns -n "mgear_curveCns164"; - rename -uid "47C713F5-44B7-F934-F6CA-B29F86666A9A"; + rename -uid "5603AA79-46B0-A7E1-E68F-BD921E6CFB2C"; setAttr -s 2 ".inputs"; -createNode tweak -n "tweak164"; - rename -uid "FDA69C6A-44AB-6E91-876E-49AAB63DAAA5"; createNode objectSet -n "mgear_curveCns164Set"; - rename -uid "B9A2B1B2-4C9A-8363-8315-858DF43CB8D1"; + rename -uid "CB8BB0A0-42E8-2FC1-11D8-B3AC7A2FA67B"; setAttr ".ihi" 0; setAttr ".vo" yes; createNode groupId -n "mgear_curveCns164GroupId"; - rename -uid "45486D85-442A-A938-2E76-F3898053DB9C"; + rename -uid "D7CFA8DF-4AF0-BC39-E9B3-2AAD699D3D08"; setAttr ".ihi" 0; createNode groupParts -n "mgear_curveCns164GroupParts"; - rename -uid "A43F71A9-4276-EC14-A5CE-A38666BF78AD"; + rename -uid "FD3A7C4F-42B0-CAC6-FCB6-8B96A27F20EF"; setAttr ".ihi" 0; setAttr ".ic" -type "componentList" 1 "cv[*]"; +createNode tweak -n "tweak164"; + rename -uid "019A7635-4EFC-222E-A39C-F8AEBD6AD664"; createNode objectSet -n "tweakSet164"; - rename -uid "D8EB27FA-4748-B4FD-85C2-D38A464B9364"; + rename -uid "BFBA2FE3-452E-3AEC-13D8-09BE1C1569AF"; setAttr ".ihi" 0; setAttr ".vo" yes; createNode groupId -n "groupId328"; - rename -uid "E53D3BE0-446D-8A50-5F00-FBADB39EE2FF"; + rename -uid "4D20A1F8-46CE-D6AC-B2EE-378AF98E7307"; setAttr ".ihi" 0; createNode groupParts -n "groupParts328"; - rename -uid "5E78C159-4672-C8FC-0278-979AAC41D4BE"; + rename -uid "B8B7E4E1-4812-0522-3CE1-4B817AC422D2"; setAttr ".ihi" 0; setAttr ".ic" -type "componentList" 1 "cv[*]"; -createNode unitConversion -n "unitConversion30"; - rename -uid "D18CE609-4C27-49D1-DD19-D7B9457C51D3"; - setAttr ".cf" 0.017453292519943295; -createNode mgear_curveCns -n "mgear_curveCns165"; - rename -uid "5643D44D-4BEF-C700-20AA-E6B70C55711C"; - setAttr -s 2 ".inputs"; -createNode tweak -n "tweak165"; - rename -uid "8850980F-4855-8BAD-326C-71BBAD232C1E"; -createNode objectSet -n "mgear_curveCns165Set"; - rename -uid "5A9ACFA1-4F47-8EC0-F33E-8594123C1EF6"; +createNode mgear_curveCns -n "mgear_curveCns158"; + rename -uid "C6C446CA-415A-9B5E-8704-9C8BA7A5C1C8"; + setAttr -s 3 ".inputs"; +createNode objectSet -n "mgear_curveCns158Set"; + rename -uid "B5975822-487B-4440-0225-548F137BDC5B"; setAttr ".ihi" 0; setAttr ".vo" yes; -createNode groupId -n "mgear_curveCns165GroupId"; - rename -uid "A0091D70-4EFB-7046-F446-629E8F7A641D"; +createNode groupId -n "mgear_curveCns158GroupId"; + rename -uid "8687D40B-46FC-7CF7-58FD-6F9F7FA43950"; setAttr ".ihi" 0; -createNode groupParts -n "mgear_curveCns165GroupParts"; - rename -uid "644F2E7B-42C3-B8A9-24B7-70AA0F36C4C0"; +createNode groupParts -n "mgear_curveCns158GroupParts"; + rename -uid "D8CAFC25-417C-20BF-C0BD-799807C1C71B"; setAttr ".ihi" 0; setAttr ".ic" -type "componentList" 1 "cv[*]"; -createNode objectSet -n "tweakSet165"; - rename -uid "ACD958A4-49CC-556C-C91E-FFA087EB0CD5"; +createNode tweak -n "tweak158"; + rename -uid "BC1DA409-4734-8B52-805A-27AB3750FBA4"; +createNode objectSet -n "tweakSet158"; + rename -uid "296E3D4C-4C13-294F-C2A9-2ABA6E4048F0"; setAttr ".ihi" 0; setAttr ".vo" yes; -createNode groupId -n "groupId330"; - rename -uid "AB82A7C9-4C44-0092-5F48-C0AD9D176E27"; +createNode groupId -n "groupId316"; + rename -uid "1F4CEA8B-4A98-2E6A-856B-5585D85D805A"; setAttr ".ihi" 0; -createNode groupParts -n "groupParts330"; - rename -uid "344D9E10-4777-ABED-9F92-0CB57E878A37"; +createNode groupParts -n "groupParts316"; + rename -uid "2E9742A0-4F52-129E-3363-64A9E8072665"; setAttr ".ihi" 0; setAttr ".ic" -type "componentList" 1 "cv[*]"; -createNode animCurveUU -n "legFront_L0_root_st_profile"; - rename -uid "C3869D4B-4999-742A-742E-FDA8EB26498E"; - setAttr ".tan" 18; - setAttr ".wgt" no; - setAttr -s 3 ".ktv[0:2]" 0 0 0.5 -1 1 0; -createNode animCurveUU -n "legFront_L0_root_sq_profile"; - rename -uid "1315400A-4E2D-1939-D74A-0DB3D5B7EC23"; - setAttr ".tan" 18; - setAttr ".wgt" no; - setAttr -s 3 ".ktv[0:2]" 0 0 0.5 1 1 0; -createNode mgear_curveCns -n "mgear_curveCns166"; - rename -uid "BC4B8F3B-414A-4089-E0E2-9187C78049F0"; - setAttr -s 5 ".inputs"; -createNode tweak -n "tweak166"; - rename -uid "AE41667C-4B28-A16B-3BD2-90A0EF7D17A9"; -createNode objectSet -n "mgear_curveCns166Set"; - rename -uid "506AC780-46EB-5034-09B0-5D862BD72001"; +createNode unitConversion -n "unitConversion29"; + rename -uid "7AF7FEA0-49FC-A487-C1A1-E6926B2DF954"; + setAttr ".cf" 0.017453292519943295; +createNode mgear_curveCns -n "mgear_curveCns157"; + rename -uid "7A73DC31-4088-D407-FF14-9DB62E92CBB7"; + setAttr -s 4 ".inputs"; +createNode objectSet -n "mgear_curveCns157Set"; + rename -uid "A2AF4E0F-4418-30AB-3370-7BB313F9435E"; setAttr ".ihi" 0; setAttr ".vo" yes; -createNode groupId -n "mgear_curveCns166GroupId"; - rename -uid "7960FB42-434D-C329-BE94-7BAC801E010F"; +createNode groupId -n "mgear_curveCns157GroupId"; + rename -uid "6CABBFC3-4B20-031D-DBC9-288144B0C6D3"; setAttr ".ihi" 0; -createNode groupParts -n "mgear_curveCns166GroupParts"; - rename -uid "4EA25501-40F0-4BD2-671F-38A46D68A919"; +createNode groupParts -n "mgear_curveCns157GroupParts"; + rename -uid "C8F6CF37-4C37-5402-B2A8-DAAEE98F898A"; setAttr ".ihi" 0; setAttr ".ic" -type "componentList" 1 "cv[*]"; -createNode objectSet -n "tweakSet166"; - rename -uid "FA6D515B-457B-F85B-3510-6CA5EB6A56E1"; +createNode tweak -n "tweak157"; + rename -uid "480C1663-49F2-49F5-4099-719DAD5B6B42"; +createNode objectSet -n "tweakSet157"; + rename -uid "FF137071-4C87-4082-8975-28BA025434E7"; setAttr ".ihi" 0; setAttr ".vo" yes; -createNode groupId -n "groupId332"; - rename -uid "36E99FBF-4563-A2C4-8040-F9B47D829954"; +createNode groupId -n "groupId314"; + rename -uid "0AB5411C-4208-273E-E88C-A4BCBC06F73D"; setAttr ".ihi" 0; -createNode groupParts -n "groupParts332"; - rename -uid "207FB194-478B-95F9-E249-879A1BC3B186"; +createNode groupParts -n "groupParts314"; + rename -uid "8659180E-4237-17D1-EA9B-EEACD1FE2B7C"; setAttr ".ihi" 0; setAttr ".ic" -type "componentList" 1 "cv[*]"; +createNode animCurveUU -n "legFront_L0_root_st_profile"; + rename -uid "3DA6E3E1-4AAF-C983-9E40-948DC970F079"; + setAttr ".tan" 18; + setAttr ".wgt" no; + setAttr -s 3 ".ktv[0:2]" 0 0 0.5 -1 1 0; +createNode animCurveUU -n "legFront_L0_root_sq_profile"; + rename -uid "B0FEEB05-4ADC-7164-51D9-288F396AB80C"; + setAttr ".tan" 18; + setAttr ".wgt" no; + setAttr -s 3 ".ktv[0:2]" 0 0 0.5 1 1 0; createNode mgear_curveCns -n "mgear_curveCns167"; - rename -uid "6CD80CAD-4379-479F-FF2D-C2946EA362F4"; + rename -uid "54D079CD-4B19-B6FA-900E-9584BEE86610"; setAttr -s 3 ".inputs"; -createNode tweak -n "tweak167"; - rename -uid "6C71795C-40F3-182B-2CDC-3FAA3020A072"; createNode objectSet -n "mgear_curveCns167Set"; - rename -uid "359CB00A-4C56-46C7-4736-D99F1DBF9F75"; + rename -uid "B594DF1D-45BC-3264-A322-8D9D6D6B5FCE"; setAttr ".ihi" 0; setAttr ".vo" yes; createNode groupId -n "mgear_curveCns167GroupId"; - rename -uid "D4C42FD6-432D-E3DF-AB40-679F110A7BCA"; + rename -uid "4C3A2D90-4401-7AEF-FE71-D49BF3FB5CA1"; setAttr ".ihi" 0; createNode groupParts -n "mgear_curveCns167GroupParts"; - rename -uid "2F146C15-43DE-1186-C51D-1280771541B7"; + rename -uid "B1EEFD03-4A1C-3CD6-EAB1-5A9E627CCE16"; setAttr ".ihi" 0; setAttr ".ic" -type "componentList" 1 "cv[*]"; +createNode tweak -n "tweak167"; + rename -uid "1DBC11CF-43EC-0D20-CECB-C2B42B0EC610"; createNode objectSet -n "tweakSet167"; - rename -uid "018892C5-4515-F1EC-734F-109E51155F50"; + rename -uid "6A5F9980-48EF-B90F-792A-82BA13D1496E"; setAttr ".ihi" 0; setAttr ".vo" yes; createNode groupId -n "groupId334"; - rename -uid "E37EC78D-4FAA-1C4E-E288-E38C18B05E2A"; + rename -uid "3F08CA25-402A-FBE4-387A-31A0BBC1B70D"; setAttr ".ihi" 0; createNode groupParts -n "groupParts334"; - rename -uid "03A8D3D5-455E-E41A-9F71-44B7C59FFBDF"; + rename -uid "F52CA01A-4268-CA4D-5C28-3BB9AC366688"; setAttr ".ihi" 0; setAttr ".ic" -type "componentList" 1 "cv[*]"; createNode mgear_curveCns -n "mgear_curveCns168"; - rename -uid "833242B9-4CB8-94BD-7410-3496C828554B"; + rename -uid "52A8046E-4112-B68D-E401-9FA15B460BCB"; setAttr -s 5 ".inputs"; -createNode tweak -n "tweak168"; - rename -uid "5E30BA4D-4D04-A71A-2811-AEBACD998E68"; createNode objectSet -n "mgear_curveCns168Set"; - rename -uid "D3B3AB76-494D-5B23-F2E0-89AF041626E7"; + rename -uid "8759E934-4800-49C6-A0A0-B68270CF199B"; setAttr ".ihi" 0; setAttr ".vo" yes; createNode groupId -n "mgear_curveCns168GroupId"; - rename -uid "E62C001E-4E51-1134-7631-AABEE2EF3F7D"; + rename -uid "EEE59D47-4929-3235-B9CD-2B926B087977"; setAttr ".ihi" 0; createNode groupParts -n "mgear_curveCns168GroupParts"; - rename -uid "40AFAD35-486F-E4D3-57C8-BB937560AE3D"; + rename -uid "17C0F96A-4C65-F4A8-8537-0BBFE534E6EC"; setAttr ".ihi" 0; setAttr ".ic" -type "componentList" 1 "cv[*]"; +createNode tweak -n "tweak168"; + rename -uid "7F3EF21B-470A-57DD-5D1F-D5A1FF9AFB98"; createNode objectSet -n "tweakSet168"; - rename -uid "4A292368-4733-16FA-C131-5CA9665D434E"; + rename -uid "9B2F7C82-4F69-25F2-FE51-4CBB79B2C7FE"; setAttr ".ihi" 0; setAttr ".vo" yes; createNode groupId -n "groupId336"; - rename -uid "5D0F0178-4EF1-D5C9-DA35-BAB34BDC1E90"; + rename -uid "6E42BE75-4F10-36C6-9A38-A78FD5A8277E"; setAttr ".ihi" 0; createNode groupParts -n "groupParts336"; - rename -uid "42FAEF46-4249-6F51-DFDC-27B9CE5A857B"; + rename -uid "060A07F8-46A2-B3BB-F06E-24A2D405428E"; setAttr ".ihi" 0; setAttr ".ic" -type "componentList" 1 "cv[*]"; -createNode unitConversion -n "unitConversion31"; - rename -uid "76384CFE-4055-E77A-69F8-F29563A7FA40"; +createNode mgear_curveCns -n "mgear_curveCns166"; + rename -uid "E0668C8C-4F11-03EA-D283-68A1D30EFEFE"; + setAttr -s 5 ".inputs"; +createNode objectSet -n "mgear_curveCns166Set"; + rename -uid "7194ED0B-4A54-6D16-12B8-F38BE30489EB"; + setAttr ".ihi" 0; + setAttr ".vo" yes; +createNode groupId -n "mgear_curveCns166GroupId"; + rename -uid "A9052CB1-4339-A57B-893B-9C882FD18C04"; + setAttr ".ihi" 0; +createNode groupParts -n "mgear_curveCns166GroupParts"; + rename -uid "C620E0EF-457B-83DE-FCD0-FEB19DC09758"; + setAttr ".ihi" 0; + setAttr ".ic" -type "componentList" 1 "cv[*]"; +createNode tweak -n "tweak166"; + rename -uid "EAAC516D-4B56-A789-2217-7B9806E2D23D"; +createNode objectSet -n "tweakSet166"; + rename -uid "9D8EEABC-4B3A-B759-0E72-A7BA9CF93E0A"; + setAttr ".ihi" 0; + setAttr ".vo" yes; +createNode groupId -n "groupId332"; + rename -uid "1B433BC0-43C8-6735-198C-F1A23A7212B4"; + setAttr ".ihi" 0; +createNode groupParts -n "groupParts332"; + rename -uid "6733726F-4891-2924-1249-7AB4BE217B5A"; + setAttr ".ihi" 0; + setAttr ".ic" -type "componentList" 1 "cv[*]"; +createNode unitConversion -n "unitConversion30"; + rename -uid "AF6ECFCF-4483-0887-7CE0-31991CB1C331"; setAttr ".cf" 0.017453292519943295; -createNode mgear_curveCns -n "mgear_curveCns169"; - rename -uid "9F8999F3-4505-5F95-A8BD-F2B0489480AA"; +createNode mgear_curveCns -n "mgear_curveCns165"; + rename -uid "124306B8-4B4D-F202-2595-478B28FB5072"; setAttr -s 2 ".inputs"; -createNode tweak -n "tweak169"; - rename -uid "98B73279-4E70-6E10-7A24-3A9CDC370292"; -createNode objectSet -n "mgear_curveCns169Set"; - rename -uid "38E910D5-4169-278C-F5BF-BCBC91340CF6"; +createNode objectSet -n "mgear_curveCns165Set"; + rename -uid "713ACCF4-4837-512E-6910-E6BBD3842969"; setAttr ".ihi" 0; setAttr ".vo" yes; -createNode groupId -n "mgear_curveCns169GroupId"; - rename -uid "B75D1C09-455E-CE4C-EBF9-878FA52D9FA1"; +createNode groupId -n "mgear_curveCns165GroupId"; + rename -uid "5F402620-4E22-AFAC-055D-EC8B4D2F43F4"; setAttr ".ihi" 0; -createNode groupParts -n "mgear_curveCns169GroupParts"; - rename -uid "456FF947-456E-E9A7-0F06-7DA89B703815"; +createNode groupParts -n "mgear_curveCns165GroupParts"; + rename -uid "B649ED2E-44B1-36C3-02E7-28B2513D16F6"; setAttr ".ihi" 0; setAttr ".ic" -type "componentList" 1 "cv[*]"; -createNode objectSet -n "tweakSet169"; - rename -uid "13A161CD-484D-24B4-92C9-BABFFE7452E5"; +createNode tweak -n "tweak165"; + rename -uid "CAE6AC97-40F3-03A4-1DDD-1B84A4409BC3"; +createNode objectSet -n "tweakSet165"; + rename -uid "91735C0D-475E-21AB-0D9F-B8A576F79503"; setAttr ".ihi" 0; setAttr ".vo" yes; -createNode groupId -n "groupId338"; - rename -uid "A8ECD95E-4F6C-89ED-563D-908C1DCB8790"; +createNode groupId -n "groupId330"; + rename -uid "824FECEE-4CB4-D725-1D29-A28BEFA6F423"; setAttr ".ihi" 0; -createNode groupParts -n "groupParts338"; - rename -uid "EC0F1ECF-470D-7640-F5D3-0ABF179FB16E"; +createNode groupParts -n "groupParts330"; + rename -uid "3D9666AB-426A-6805-468C-9D97AE1379AB"; setAttr ".ihi" 0; setAttr ".ic" -type "componentList" 1 "cv[*]"; -createNode animCurveUU -n "legFront_R0_root_st_profile1"; - rename -uid "B353E694-41E0-74F4-F123-C6941938991E"; +createNode animCurveUU -n "legFront_R0_root_st_profile"; + rename -uid "0AF51226-425F-A45D-D468-FFA21B905555"; setAttr ".tan" 18; setAttr ".wgt" no; setAttr -s 3 ".ktv[0:2]" 0 0 0.5 -1 1 0; -createNode animCurveUU -n "legFront_R0_root_sq_profile1"; - rename -uid "21A72F7E-4B67-EC0B-81BE-1280AB1072E1"; +createNode animCurveUU -n "legFront_R0_root_sq_profile"; + rename -uid "3CEE7719-4CFC-4B9B-0836-F1B91F601A81"; setAttr ".tan" 18; setAttr ".wgt" no; setAttr -s 3 ".ktv[0:2]" 0 0 0.5 1 1 0; -createNode mgear_curveCns -n "mgear_curveCns170"; - rename -uid "3F1175B6-4FD2-90D8-238F-09A93398C438"; - setAttr -s 5 ".inputs"; -createNode tweak -n "tweak170"; - rename -uid "189A9E93-47A7-B771-DDB3-CB93A7DA1404"; -createNode objectSet -n "mgear_curveCns170Set"; - rename -uid "8B1F2E75-47A7-C940-D185-43A321874EBF"; +createNode mgear_curveCns -n "mgear_curveCns181"; + rename -uid "3CF4FE84-4135-80A5-1071-15B92F0B4EE0"; + setAttr -s 3 ".inputs"; +createNode objectSet -n "mgear_curveCns181Set"; + rename -uid "0721F6EB-4B88-9D26-B7C5-E9B25E702EA1"; setAttr ".ihi" 0; setAttr ".vo" yes; -createNode groupId -n "mgear_curveCns170GroupId"; - rename -uid "E5814F05-4B7A-77D8-AA10-9D97F04E384C"; +createNode groupId -n "mgear_curveCns181GroupId"; + rename -uid "58CC08FC-4C44-A721-1269-268859C52243"; setAttr ".ihi" 0; -createNode groupParts -n "mgear_curveCns170GroupParts"; - rename -uid "08D11788-4C08-ACF6-00EA-45AF589D8F6F"; +createNode groupParts -n "mgear_curveCns181GroupParts"; + rename -uid "A74D9551-4729-3AB7-733B-53BCF10D609A"; setAttr ".ihi" 0; setAttr ".ic" -type "componentList" 1 "cv[*]"; -createNode objectSet -n "tweakSet170"; - rename -uid "C39E33F5-4D74-94A9-96B5-D2A0D261E489"; +createNode tweak -n "tweak181"; + rename -uid "07AA57F1-497E-FE5E-EF5E-DA9695D59E96"; +createNode objectSet -n "tweakSet181"; + rename -uid "ED488B69-42E0-F866-BD51-00804CE066CF"; setAttr ".ihi" 0; setAttr ".vo" yes; -createNode groupId -n "groupId340"; - rename -uid "89C1DAC0-42AD-9551-9C5B-89B185DFAEC6"; +createNode groupId -n "groupId362"; + rename -uid "8ADEB8EB-41BF-1F02-2D86-EFB011767CA6"; setAttr ".ihi" 0; -createNode groupParts -n "groupParts340"; - rename -uid "575F0C40-40A3-DD97-D19B-00B6374BEDD9"; +createNode groupParts -n "groupParts362"; + rename -uid "1FF55FDA-4B05-F551-139B-9BA3D21814C6"; setAttr ".ihi" 0; setAttr ".ic" -type "componentList" 1 "cv[*]"; -createNode mgear_curveCns -n "mgear_curveCns171"; - rename -uid "D5414F9C-41E2-F38B-37D0-13ACB64F3032"; - setAttr -s 3 ".inputs"; -createNode tweak -n "tweak171"; - rename -uid "DD1C1F2F-4096-2D7F-F0E4-4D93E3F7D8AC"; -createNode objectSet -n "mgear_curveCns171Set"; - rename -uid "E7DDF14D-48AE-882E-802C-72BD82E0BA33"; +createNode mgear_curveCns -n "mgear_curveCns182"; + rename -uid "EC0B0441-4F99-6242-82E8-1292D1414F47"; + setAttr -s 5 ".inputs"; +createNode objectSet -n "mgear_curveCns182Set"; + rename -uid "80F9D3E0-4B68-643A-FC5A-08B948487824"; setAttr ".ihi" 0; setAttr ".vo" yes; -createNode groupId -n "mgear_curveCns171GroupId"; - rename -uid "9D2D2AE1-49C8-3066-B20C-7AB62297F487"; +createNode groupId -n "mgear_curveCns182GroupId"; + rename -uid "A9F47892-4B95-8E21-FAD4-0BB5076F1758"; setAttr ".ihi" 0; -createNode groupParts -n "mgear_curveCns171GroupParts"; - rename -uid "DACFB03E-4CF3-782C-B226-64B19804378A"; +createNode groupParts -n "mgear_curveCns182GroupParts"; + rename -uid "D1A45C24-498B-61C7-275F-FE8D622D3127"; setAttr ".ihi" 0; setAttr ".ic" -type "componentList" 1 "cv[*]"; -createNode objectSet -n "tweakSet171"; - rename -uid "B59F8A00-453C-4E14-DFB1-D891B6EDDF62"; +createNode tweak -n "tweak182"; + rename -uid "DE06A261-49E6-C5F9-A804-AE83D6E19309"; +createNode objectSet -n "tweakSet182"; + rename -uid "1FB48147-4C5A-41B8-4B12-B69A470ED569"; setAttr ".ihi" 0; setAttr ".vo" yes; -createNode groupId -n "groupId342"; - rename -uid "894E2231-4170-3F91-EA57-0B845D0555D3"; +createNode groupId -n "groupId364"; + rename -uid "07597A06-459F-DCF7-4B5D-A9928EB0ACDB"; setAttr ".ihi" 0; -createNode groupParts -n "groupParts342"; - rename -uid "86DEC75D-452B-48D3-51E2-F68D09A8ECC5"; +createNode groupParts -n "groupParts364"; + rename -uid "EE2FCECC-4C28-70CD-C98F-45B9B11E0167"; setAttr ".ihi" 0; setAttr ".ic" -type "componentList" 1 "cv[*]"; -createNode mgear_curveCns -n "mgear_curveCns172"; - rename -uid "68205D6B-4F7D-D553-EC54-D8B71259F978"; +createNode mgear_curveCns -n "mgear_curveCns180"; + rename -uid "7747F8EA-4D61-7636-BA00-FBB26251EA17"; setAttr -s 5 ".inputs"; -createNode tweak -n "tweak172"; - rename -uid "E8ECB3AE-4D25-8E53-5712-C594B3DF1F2A"; -createNode objectSet -n "mgear_curveCns172Set"; - rename -uid "0BE439FA-4022-3D9A-CBD3-C3BF3F668E46"; +createNode objectSet -n "mgear_curveCns180Set"; + rename -uid "7B72800E-40AC-12E6-28C5-49A60C99618F"; setAttr ".ihi" 0; setAttr ".vo" yes; -createNode groupId -n "mgear_curveCns172GroupId"; - rename -uid "524FD986-400F-FB2E-796B-5AB9A91B43E2"; +createNode groupId -n "mgear_curveCns180GroupId"; + rename -uid "2E5F0CD5-4D21-071E-F14D-5496EDC62475"; setAttr ".ihi" 0; -createNode groupParts -n "mgear_curveCns172GroupParts"; - rename -uid "5FEBD2E6-452F-D62F-04B6-CEB42B48A844"; +createNode groupParts -n "mgear_curveCns180GroupParts"; + rename -uid "1463EA88-4E3F-4C9D-F33E-33AF974B63EB"; setAttr ".ihi" 0; setAttr ".ic" -type "componentList" 1 "cv[*]"; -createNode objectSet -n "tweakSet172"; - rename -uid "A7836C9B-4DDC-DF0B-CA01-FE90CF163007"; +createNode tweak -n "tweak180"; + rename -uid "59284B5E-4D9A-FA81-003B-89953941C0A2"; +createNode objectSet -n "tweakSet180"; + rename -uid "C334CF08-4C50-5D6A-41B3-7AB8E30F01B8"; setAttr ".ihi" 0; setAttr ".vo" yes; -createNode groupId -n "groupId344"; - rename -uid "0D4881CE-46E0-5BF6-DD76-04B8C99E0FF1"; +createNode groupId -n "groupId360"; + rename -uid "CAA03350-45EE-DB1D-701C-FFA1401106C8"; setAttr ".ihi" 0; -createNode groupParts -n "groupParts344"; - rename -uid "BB4A809E-4143-3FA0-2513-EDBDC7291EBC"; +createNode groupParts -n "groupParts360"; + rename -uid "E1608407-42ED-47D0-0130-ACB675F7C3E1"; setAttr ".ihi" 0; setAttr ".ic" -type "componentList" 1 "cv[*]"; -createNode animCurveUU -n "legBack_L0_root_st_profile"; - rename -uid "B3975D5F-477D-BC21-8EFB-7582AB48F958"; - setAttr ".tan" 18; - setAttr ".wgt" no; - setAttr -s 3 ".ktv[0:2]" 0 0 0.5 -1 1 0; -createNode animCurveUU -n "legBack_L0_root_sq_profile"; - rename -uid "E0DA62F0-41E0-F311-C475-7E9633245CEA"; - setAttr ".tan" 18; - setAttr ".wgt" no; - setAttr -s 3 ".ktv[0:2]" 0 0 0.5 1 1 0; -createNode mgear_curveCns -n "mgear_curveCns173"; - rename -uid "2691639B-40E8-B5B0-A971-39B8F5BD975C"; - setAttr -s 5 ".inputs"; -createNode tweak -n "tweak173"; - rename -uid "4F9958C0-4CCF-DF94-77E2-989EAC8C9BFC"; -createNode objectSet -n "mgear_curveCns173Set"; - rename -uid "A429CC12-42C2-17AD-8A25-B7887815AA13"; +createNode unitConversion -n "unitConversion31"; + rename -uid "655C4B38-416D-FC2B-303E-56B2DFDFDC4D"; + setAttr ".cf" 0.017453292519943295; +createNode mgear_curveCns -n "mgear_curveCns179"; + rename -uid "C3773446-44EA-3DE6-3610-52B820946FBE"; + setAttr -s 2 ".inputs"; +createNode objectSet -n "mgear_curveCns179Set"; + rename -uid "D7D6D510-4EAE-6894-A072-BDBFBDCB6C0A"; setAttr ".ihi" 0; setAttr ".vo" yes; -createNode groupId -n "mgear_curveCns173GroupId"; - rename -uid "353A1896-4F59-BE6C-1AE4-F499B9B75FE6"; +createNode groupId -n "mgear_curveCns179GroupId"; + rename -uid "D03FE963-463F-10B2-4D3B-00B34B7524BE"; setAttr ".ihi" 0; -createNode groupParts -n "mgear_curveCns173GroupParts"; - rename -uid "B5362FAE-4218-DAC7-CC2D-15A36E34944A"; +createNode groupParts -n "mgear_curveCns179GroupParts"; + rename -uid "DE4DC584-476F-BED4-BD59-1C9241628023"; setAttr ".ihi" 0; setAttr ".ic" -type "componentList" 1 "cv[*]"; -createNode objectSet -n "tweakSet173"; - rename -uid "161BA580-4053-88F9-2CA7-EBA553CFEE4C"; +createNode tweak -n "tweak179"; + rename -uid "B53413C0-41D1-8527-E895-D997A00F8E7A"; +createNode objectSet -n "tweakSet179"; + rename -uid "F0D14227-4319-6EBE-B0C8-B1BFF8783DB3"; setAttr ".ihi" 0; setAttr ".vo" yes; -createNode groupId -n "groupId346"; - rename -uid "89614773-45ED-2F1A-B812-2E85E26FD618"; +createNode groupId -n "groupId358"; + rename -uid "6BCC3E70-4234-C89F-BB5C-879FBE4B6F57"; setAttr ".ihi" 0; -createNode groupParts -n "groupParts346"; - rename -uid "C4B03F32-494D-856E-34F4-769EE046E49E"; +createNode groupParts -n "groupParts358"; + rename -uid "0A7BE987-4FFC-1B2F-F973-BE9CB75CE863"; + setAttr ".ihi" 0; + setAttr ".ic" -type "componentList" 1 "cv[*]"; +createNode unitConversion -n "unitConversion28"; + rename -uid "AC700A5C-426B-E3D6-A5F8-31AAA1480F7A"; + setAttr ".cf" 0.017453292519943295; +createNode mgear_curveCns -n "mgear_curveCns156"; + rename -uid "D12ADECD-4CA4-929B-2680-EFBC0F2E749A"; + setAttr -s 2 ".inputs"; +createNode objectSet -n "mgear_curveCns156Set"; + rename -uid "785B099B-4163-470B-2140-FD87B21DF44A"; + setAttr ".ihi" 0; + setAttr ".vo" yes; +createNode groupId -n "mgear_curveCns156GroupId"; + rename -uid "982F78D9-4468-0936-8937-8ABEC12372DD"; + setAttr ".ihi" 0; +createNode groupParts -n "mgear_curveCns156GroupParts"; + rename -uid "ADCE644F-442F-18E7-3FEB-00B481421712"; + setAttr ".ihi" 0; + setAttr ".ic" -type "componentList" 1 "cv[*]"; +createNode tweak -n "tweak156"; + rename -uid "BD12A9FC-4DB5-0DF9-6DF4-8ABFD3E442C7"; +createNode objectSet -n "tweakSet156"; + rename -uid "4B1C65A4-4CC2-F463-895F-4BBCA7A79B5D"; + setAttr ".ihi" 0; + setAttr ".vo" yes; +createNode groupId -n "groupId312"; + rename -uid "27F624E7-4C50-B868-BEA3-6AA8C8C19C83"; + setAttr ".ihi" 0; +createNode groupParts -n "groupParts312"; + rename -uid "F0679B82-4B3E-752A-5968-D3A33F345E0B"; setAttr ".ihi" 0; setAttr ".ic" -type "componentList" 1 "cv[*]"; +createNode animCurveUU -n "legBack_L0_root_st_profile"; + rename -uid "2B3162D3-4F8A-7F71-07A4-1E890FE4CC63"; + setAttr ".tan" 18; + setAttr ".wgt" no; + setAttr -s 3 ".ktv[0:2]" 0 0 0.5 -1 1 0; +createNode animCurveUU -n "legBack_L0_root_sq_profile"; + rename -uid "4F295B79-4E35-3556-7877-01B279A4C390"; + setAttr ".tan" 18; + setAttr ".wgt" no; + setAttr -s 3 ".ktv[0:2]" 0 0 0.5 1 1 0; createNode mgear_curveCns -n "mgear_curveCns174"; - rename -uid "DE90DC18-478F-0942-06D7-07A62A0E41A1"; + rename -uid "F2F384C3-42E3-0ABC-C7E0-C8827A99369E"; setAttr -s 3 ".inputs"; -createNode tweak -n "tweak174"; - rename -uid "DE0893B3-4B7C-2D55-E60B-8886CE785EDD"; createNode objectSet -n "mgear_curveCns174Set"; - rename -uid "17061297-4176-68A9-CFE9-A682FB1E515E"; + rename -uid "E78AD091-4AE6-052B-12CF-71A0B45C9D2F"; setAttr ".ihi" 0; setAttr ".vo" yes; createNode groupId -n "mgear_curveCns174GroupId"; - rename -uid "311DBBFC-4C1F-44F4-D0CA-19B97A5D6D39"; + rename -uid "C4DC0AD8-4FBE-ED1D-936D-F89D04B4967C"; setAttr ".ihi" 0; createNode groupParts -n "mgear_curveCns174GroupParts"; - rename -uid "9573D7E9-433E-C642-3955-93B7EF7C8E7E"; + rename -uid "98867574-4C7A-6C69-325F-94B03BEBFBB0"; setAttr ".ihi" 0; setAttr ".ic" -type "componentList" 1 "cv[*]"; +createNode tweak -n "tweak174"; + rename -uid "63AB8AD1-42BC-322C-362A-D182C9AC65B6"; createNode objectSet -n "tweakSet174"; - rename -uid "C73AEF42-4B5B-9047-3A05-898D65C56076"; + rename -uid "50D8C6D8-42BF-2C59-0216-B3BE7FA43151"; setAttr ".ihi" 0; setAttr ".vo" yes; createNode groupId -n "groupId348"; - rename -uid "EFAC62EA-45E1-E0E2-2417-F4A8553C6B8E"; + rename -uid "6843F2F9-4246-1ECE-F54F-D7A79B531EED"; setAttr ".ihi" 0; createNode groupParts -n "groupParts348"; - rename -uid "8F0C4CBF-4DD8-9CD6-6CA1-6ABF351437AD"; + rename -uid "C83801FA-45E0-B3C4-F4F2-0290627FE6B1"; setAttr ".ihi" 0; setAttr ".ic" -type "componentList" 1 "cv[*]"; createNode mgear_curveCns -n "mgear_curveCns175"; - rename -uid "0EA85973-4584-52C9-4CBC-9D83F1DE5E93"; + rename -uid "EEFD214C-48DC-E80D-30C8-D6B8CB96F5BD"; setAttr -s 5 ".inputs"; -createNode tweak -n "tweak175"; - rename -uid "1DEA8AF1-4CE3-F935-C6BA-01AADDBA407B"; createNode objectSet -n "mgear_curveCns175Set"; - rename -uid "D48AECC8-47E7-5884-CF13-178DFFB5429C"; + rename -uid "18DF929A-41D7-EAB0-8763-52A40FA53B53"; setAttr ".ihi" 0; setAttr ".vo" yes; createNode groupId -n "mgear_curveCns175GroupId"; - rename -uid "2589CEA3-45FD-E9AC-1E5B-B6BCA5247BBF"; + rename -uid "19B36CC8-4451-0EF4-2A96-76BC2650A5AB"; setAttr ".ihi" 0; createNode groupParts -n "mgear_curveCns175GroupParts"; - rename -uid "2BFB05AF-4014-8145-6565-52B68427512D"; + rename -uid "D9D17387-4183-B2C9-4F3D-79AECBF611F0"; setAttr ".ihi" 0; setAttr ".ic" -type "componentList" 1 "cv[*]"; +createNode tweak -n "tweak175"; + rename -uid "B85D4286-4549-39C1-F2FC-2187010B0646"; createNode objectSet -n "tweakSet175"; - rename -uid "D145B439-43B2-B3B8-C9E0-63BC5009575A"; + rename -uid "1D098C6D-4856-6298-D952-D1BC05701041"; setAttr ".ihi" 0; setAttr ".vo" yes; createNode groupId -n "groupId350"; - rename -uid "49642724-4B58-8492-2C1F-469E48424326"; + rename -uid "7D026C50-43B7-57A6-C8DA-34A35AA6C521"; setAttr ".ihi" 0; createNode groupParts -n "groupParts350"; - rename -uid "0E80CC64-40EF-FB06-14E8-27B7EB9DC7FF"; + rename -uid "F2FE0293-4661-36F2-3972-9E85920DE412"; setAttr ".ihi" 0; setAttr ".ic" -type "componentList" 1 "cv[*]"; -createNode animCurveUU -n "legBack_R0_root_st_profile1"; - rename -uid "9350AA38-4FFF-A411-5F18-42AE08F27D4C"; - setAttr ".tan" 18; - setAttr ".wgt" no; - setAttr -s 3 ".ktv[0:2]" 0 0 0.5 -1 1 0; -createNode animCurveUU -n "legBack_R0_root_sq_profile1"; - rename -uid "E2B09E25-4A2C-CE4E-16D1-43ABB9EE683E"; - setAttr ".tan" 18; - setAttr ".wgt" no; - setAttr -s 3 ".ktv[0:2]" 0 0 0.5 1 1 0; -createNode mgear_curveCns -n "mgear_curveCns176"; - rename -uid "8320FC91-4B79-B89A-190B-E48CDDEB77B8"; +createNode mgear_curveCns -n "mgear_curveCns173"; + rename -uid "E2F7CD4A-4392-6E09-9475-11990E518576"; setAttr -s 5 ".inputs"; -createNode tweak -n "tweak176"; - rename -uid "E3239CF0-485C-0156-175A-6BAD6419ADCF"; -createNode objectSet -n "mgear_curveCns176Set"; - rename -uid "7E6CD5C8-4E3C-A65A-82A0-CDBF6DAB01A8"; +createNode objectSet -n "mgear_curveCns173Set"; + rename -uid "110C8EE0-495A-BBB3-D08C-44B11AAB3078"; setAttr ".ihi" 0; setAttr ".vo" yes; -createNode groupId -n "mgear_curveCns176GroupId"; - rename -uid "9EF45AAF-4299-BAF0-A3F3-9CBA09D5E664"; +createNode groupId -n "mgear_curveCns173GroupId"; + rename -uid "8A23A1AD-4733-8DB0-413A-F5B064DBAA47"; setAttr ".ihi" 0; -createNode groupParts -n "mgear_curveCns176GroupParts"; - rename -uid "CAFFF4A9-4D9A-B0BF-BB6D-AF92809F0FAE"; +createNode groupParts -n "mgear_curveCns173GroupParts"; + rename -uid "65EB290D-47ED-A250-C48F-389CB3D137A1"; setAttr ".ihi" 0; setAttr ".ic" -type "componentList" 1 "cv[*]"; -createNode objectSet -n "tweakSet176"; - rename -uid "DE4CB701-4FE4-EEFA-AA8D-C7B857E57AD5"; +createNode tweak -n "tweak173"; + rename -uid "94A35894-4518-B00D-D9CF-2588B5762F55"; +createNode objectSet -n "tweakSet173"; + rename -uid "F89BD380-479E-9507-2A41-029BE535C785"; setAttr ".ihi" 0; setAttr ".vo" yes; -createNode groupId -n "groupId352"; - rename -uid "DE3C9121-43D0-3DB0-BC43-0BAF18381F03"; +createNode groupId -n "groupId346"; + rename -uid "6F548DAB-49F7-3D2A-CBCF-11BD75F27D9E"; setAttr ".ihi" 0; -createNode groupParts -n "groupParts352"; - rename -uid "F95FF5A7-4087-5860-701B-F3B6544AB376"; +createNode groupParts -n "groupParts346"; + rename -uid "70EA9388-4A2B-D1C4-1B05-B68EF0A94A44"; setAttr ".ihi" 0; setAttr ".ic" -type "componentList" 1 "cv[*]"; +createNode animCurveUU -n "legBack_R0_root_st_profile"; + rename -uid "087816FF-49C3-6C6C-F5E3-5AAF325C6849"; + setAttr ".tan" 18; + setAttr ".wgt" no; + setAttr -s 3 ".ktv[0:2]" 0 0 0.5 -1 1 0; +createNode animCurveUU -n "legBack_R0_root_sq_profile"; + rename -uid "B8CE86A9-456E-A52F-9677-6F9A0D2E5941"; + setAttr ".tan" 18; + setAttr ".wgt" no; + setAttr -s 3 ".ktv[0:2]" 0 0 0.5 1 1 0; createNode mgear_curveCns -n "mgear_curveCns177"; - rename -uid "E3282429-4243-8464-26FB-FEA6038E630F"; + rename -uid "BA8C5C94-4867-7C5C-5B2F-D5827109AC20"; setAttr -s 3 ".inputs"; -createNode tweak -n "tweak177"; - rename -uid "238A466A-40BD-C7B2-510F-9CB0279C09E8"; createNode objectSet -n "mgear_curveCns177Set"; - rename -uid "2B568F12-4799-A3E4-0CFB-CB85526BE39B"; + rename -uid "CFB17882-46A1-09AA-6A85-12873EEAD3D5"; setAttr ".ihi" 0; setAttr ".vo" yes; createNode groupId -n "mgear_curveCns177GroupId"; - rename -uid "FAC01436-41B5-1610-2C93-BFB062691B23"; + rename -uid "B179D96B-4008-0A38-EDB8-4DBE75D06679"; setAttr ".ihi" 0; createNode groupParts -n "mgear_curveCns177GroupParts"; - rename -uid "CB3AAA4B-4AF6-CA75-8377-61BD58F7EA09"; + rename -uid "92EE38C0-45C9-2FD9-8BD6-9D8BCB40FDC6"; setAttr ".ihi" 0; setAttr ".ic" -type "componentList" 1 "cv[*]"; +createNode tweak -n "tweak177"; + rename -uid "ACE37B7E-4E37-C680-FC05-FBBCB0F7CFAA"; createNode objectSet -n "tweakSet177"; - rename -uid "B8467281-4606-8E73-B01A-4797C09D767A"; + rename -uid "1C02325F-4904-DF93-84D1-8AA51DFAE29A"; setAttr ".ihi" 0; setAttr ".vo" yes; createNode groupId -n "groupId354"; - rename -uid "39101786-4137-DB3E-4A00-D18E6E96FDDE"; + rename -uid "34B6C12C-4D53-3110-C336-02BD00587C65"; setAttr ".ihi" 0; createNode groupParts -n "groupParts354"; - rename -uid "D215140D-4872-0B23-F870-15A3E4A8DF04"; + rename -uid "91038817-405F-2484-6FEA-99BD0AD7123C"; setAttr ".ihi" 0; setAttr ".ic" -type "componentList" 1 "cv[*]"; createNode mgear_curveCns -n "mgear_curveCns178"; - rename -uid "F0AD36CD-448D-681B-C621-89AEABEC6D8F"; + rename -uid "B6717E75-4B4D-9C6D-E0C4-5E947A8F1610"; setAttr -s 5 ".inputs"; -createNode tweak -n "tweak178"; - rename -uid "84FA6E59-45F1-FB67-94A1-DC831EF4EF69"; createNode objectSet -n "mgear_curveCns178Set"; - rename -uid "FC4F9AE9-4426-A0D8-F8BC-75A9FFC5E890"; + rename -uid "9EDF373D-4274-C9AE-28B9-729B79EA3C76"; setAttr ".ihi" 0; setAttr ".vo" yes; createNode groupId -n "mgear_curveCns178GroupId"; - rename -uid "212E36F4-4420-94D9-8E9D-649B1559B9E0"; + rename -uid "6F59A620-4EBE-82C2-2601-04B69AB6A0A7"; setAttr ".ihi" 0; createNode groupParts -n "mgear_curveCns178GroupParts"; - rename -uid "DDE83F2D-4DB2-898C-1E7E-F4B45C788885"; + rename -uid "A8100D75-436E-1388-278C-E6AC5DBCF768"; setAttr ".ihi" 0; setAttr ".ic" -type "componentList" 1 "cv[*]"; +createNode tweak -n "tweak178"; + rename -uid "6B8C4424-45A0-6E6A-1DBA-CCB79870B86B"; createNode objectSet -n "tweakSet178"; - rename -uid "A114E36F-436F-716D-8C40-E9899D48B8E1"; + rename -uid "9D5C2CA9-44BE-82B0-2245-3FA768428411"; setAttr ".ihi" 0; setAttr ".vo" yes; createNode groupId -n "groupId356"; - rename -uid "505D23C4-4E30-CBD0-6CD4-88BAB06C02CA"; + rename -uid "8B41E987-4D7A-DE11-05C0-4D9C04EBE168"; setAttr ".ihi" 0; createNode groupParts -n "groupParts356"; - rename -uid "3405FA4E-4586-77EB-5A22-E5892B6C26EB"; + rename -uid "CB0D8B1B-4B04-5219-C9BB-149625869ED3"; + setAttr ".ihi" 0; + setAttr ".ic" -type "componentList" 1 "cv[*]"; +createNode mgear_curveCns -n "mgear_curveCns176"; + rename -uid "5816E2B6-4181-1C2A-343A-B8B3BA8C8863"; + setAttr -s 5 ".inputs"; +createNode objectSet -n "mgear_curveCns176Set"; + rename -uid "48C89000-4364-326A-0E15-5E86791C4794"; + setAttr ".ihi" 0; + setAttr ".vo" yes; +createNode groupId -n "mgear_curveCns176GroupId"; + rename -uid "EBE02648-4C32-B36F-4AF0-35A7B38635B0"; + setAttr ".ihi" 0; +createNode groupParts -n "mgear_curveCns176GroupParts"; + rename -uid "09EFF952-4FE4-F39D-AF98-1EA830A29946"; + setAttr ".ihi" 0; + setAttr ".ic" -type "componentList" 1 "cv[*]"; +createNode tweak -n "tweak176"; + rename -uid "D4C28885-4BE5-DA99-6856-DB9721538219"; +createNode objectSet -n "tweakSet176"; + rename -uid "2B6260AA-4736-1683-B284-97AC3F46846B"; + setAttr ".ihi" 0; + setAttr ".vo" yes; +createNode groupId -n "groupId352"; + rename -uid "A446A3C0-494C-FDEF-FCE2-3889A74219E2"; + setAttr ".ihi" 0; +createNode groupParts -n "groupParts352"; + rename -uid "451E1D0B-4CBC-A8D0-9AB8-948075B9FEF9"; setAttr ".ihi" 0; setAttr ".ic" -type "componentList" 1 "cv[*]"; -createNode script -n "uiConfigurationScriptNode"; - rename -uid "9D260E86-4658-287B-6D80-20AC96BD2D1E"; - setAttr ".b" -type "string" ( - "// Maya Mel UI Configuration File.\n//\n// This script is machine generated. Edit at your own risk.\n//\n//\n\nglobal string $gMainPane;\nif (`paneLayout -exists $gMainPane`) {\n\n\tglobal int $gUseScenePanelConfig;\n\tint $useSceneConfig = $gUseScenePanelConfig;\n\tint $menusOkayInPanels = `optionVar -q allowMenusInPanels`;\tint $nVisPanes = `paneLayout -q -nvp $gMainPane`;\n\tint $nPanes = 0;\n\tstring $editorName;\n\tstring $panelName;\n\tstring $itemFilterName;\n\tstring $panelConfig;\n\n\t//\n\t// get current state of the UI\n\t//\n\tsceneUIReplacement -update $gMainPane;\n\n\t$panelName = `sceneUIReplacement -getNextPanel \"modelPanel\" (localizedPanelLabel(\"Top View\")) `;\n\tif (\"\" == $panelName) {\n\t\tif ($useSceneConfig) {\n\t\t\t$panelName = `modelPanel -unParent -l (localizedPanelLabel(\"Top View\")) -mbv $menusOkayInPanels `;\n\t\t\t$editorName = $panelName;\n modelEditor -e \n -camera \"top\" \n -useInteractiveMode 0\n -displayLights \"default\" \n -displayAppearance \"smoothShaded\" \n" - + " -activeOnly 0\n -ignorePanZoom 0\n -wireframeOnShaded 0\n -headsUpDisplay 1\n -holdOuts 1\n -selectionHiliteDisplay 1\n -useDefaultMaterial 0\n -bufferMode \"double\" \n -twoSidedLighting 0\n -backfaceCulling 0\n -xray 0\n -jointXray 0\n -activeComponentsXray 0\n -displayTextures 0\n -smoothWireframe 0\n -lineWidth 1\n -textureAnisotropic 0\n -textureHilight 1\n -textureSampling 2\n -textureDisplay \"modulate\" \n -textureMaxSize 32768\n -fogging 0\n -fogSource \"fragment\" \n -fogMode \"linear\" \n -fogStart 0\n -fogEnd 100\n -fogDensity 0.1\n -fogColor 0.5 0.5 0.5 1 \n -depthOfFieldPreview 1\n -maxConstantTransparency 1\n" - + " -rendererName \"vp2Renderer\" \n -objectFilterShowInHUD 1\n -isFiltered 0\n -colorResolution 256 256 \n -bumpResolution 512 512 \n -textureCompression 0\n -transparencyAlgorithm \"frontAndBackCull\" \n -transpInShadows 0\n -cullingOverride \"none\" \n -lowQualityLighting 0\n -maximumNumHardwareLights 1\n -occlusionCulling 0\n -shadingModel 0\n -useBaseRenderer 0\n -useReducedRenderer 0\n -smallObjectCulling 0\n -smallObjectThreshold -1 \n -interactiveDisableShadows 0\n -interactiveBackFaceCull 0\n -sortTransparent 1\n -nurbsCurves 1\n -nurbsSurfaces 1\n -polymeshes 1\n -subdivSurfaces 1\n -planes 1\n -lights 1\n -cameras 1\n -controlVertices 1\n" - + " -hulls 1\n -grid 1\n -imagePlane 1\n -joints 1\n -ikHandles 1\n -deformers 1\n -dynamics 1\n -particleInstancers 1\n -fluids 1\n -hairSystems 1\n -follicles 1\n -nCloths 1\n -nParticles 1\n -nRigids 1\n -dynamicConstraints 1\n -locators 1\n -manipulators 1\n -pluginShapes 1\n -dimensions 1\n -handles 1\n -pivots 1\n -textures 1\n -strokes 1\n -motionTrails 1\n -clipGhosts 1\n -greasePencils 1\n -shadows 0\n -captureSequenceNumber -1\n -width 1\n -height 1\n -sceneRenderFilter 0\n $editorName;\n modelEditor -e -viewSelected 0 $editorName;\n modelEditor -e \n" - + " -pluginObjects \"gpuCacheDisplayFilter\" 1 \n $editorName;\n\t\t}\n\t} else {\n\t\t$label = `panel -q -label $panelName`;\n\t\tmodelPanel -edit -l (localizedPanelLabel(\"Top View\")) -mbv $menusOkayInPanels $panelName;\n\t\t$editorName = $panelName;\n modelEditor -e \n -camera \"top\" \n -useInteractiveMode 0\n -displayLights \"default\" \n -displayAppearance \"smoothShaded\" \n -activeOnly 0\n -ignorePanZoom 0\n -wireframeOnShaded 0\n -headsUpDisplay 1\n -holdOuts 1\n -selectionHiliteDisplay 1\n -useDefaultMaterial 0\n -bufferMode \"double\" \n -twoSidedLighting 0\n -backfaceCulling 0\n -xray 0\n -jointXray 0\n -activeComponentsXray 0\n -displayTextures 0\n -smoothWireframe 0\n -lineWidth 1\n -textureAnisotropic 0\n -textureHilight 1\n -textureSampling 2\n -textureDisplay \"modulate\" \n" - + " -textureMaxSize 32768\n -fogging 0\n -fogSource \"fragment\" \n -fogMode \"linear\" \n -fogStart 0\n -fogEnd 100\n -fogDensity 0.1\n -fogColor 0.5 0.5 0.5 1 \n -depthOfFieldPreview 1\n -maxConstantTransparency 1\n -rendererName \"vp2Renderer\" \n -objectFilterShowInHUD 1\n -isFiltered 0\n -colorResolution 256 256 \n -bumpResolution 512 512 \n -textureCompression 0\n -transparencyAlgorithm \"frontAndBackCull\" \n -transpInShadows 0\n -cullingOverride \"none\" \n -lowQualityLighting 0\n -maximumNumHardwareLights 1\n -occlusionCulling 0\n -shadingModel 0\n -useBaseRenderer 0\n -useReducedRenderer 0\n -smallObjectCulling 0\n -smallObjectThreshold -1 \n -interactiveDisableShadows 0\n -interactiveBackFaceCull 0\n -sortTransparent 1\n" - + " -nurbsCurves 1\n -nurbsSurfaces 1\n -polymeshes 1\n -subdivSurfaces 1\n -planes 1\n -lights 1\n -cameras 1\n -controlVertices 1\n -hulls 1\n -grid 1\n -imagePlane 1\n -joints 1\n -ikHandles 1\n -deformers 1\n -dynamics 1\n -particleInstancers 1\n -fluids 1\n -hairSystems 1\n -follicles 1\n -nCloths 1\n -nParticles 1\n -nRigids 1\n -dynamicConstraints 1\n -locators 1\n -manipulators 1\n -pluginShapes 1\n -dimensions 1\n -handles 1\n -pivots 1\n -textures 1\n -strokes 1\n -motionTrails 1\n -clipGhosts 1\n -greasePencils 1\n -shadows 0\n -captureSequenceNumber -1\n -width 1\n -height 1\n -sceneRenderFilter 0\n $editorName;\n" - + " modelEditor -e -viewSelected 0 $editorName;\n modelEditor -e \n -pluginObjects \"gpuCacheDisplayFilter\" 1 \n $editorName;\n\t\tif (!$useSceneConfig) {\n\t\t\tpanel -e -l $label $panelName;\n\t\t}\n\t}\n\n\n\t$panelName = `sceneUIReplacement -getNextPanel \"modelPanel\" (localizedPanelLabel(\"Side View\")) `;\n\tif (\"\" == $panelName) {\n\t\tif ($useSceneConfig) {\n\t\t\t$panelName = `modelPanel -unParent -l (localizedPanelLabel(\"Side View\")) -mbv $menusOkayInPanels `;\n\t\t\t$editorName = $panelName;\n modelEditor -e \n -camera \"side\" \n -useInteractiveMode 0\n -displayLights \"default\" \n -displayAppearance \"smoothShaded\" \n -activeOnly 0\n -ignorePanZoom 0\n -wireframeOnShaded 0\n -headsUpDisplay 1\n -holdOuts 1\n -selectionHiliteDisplay 1\n -useDefaultMaterial 0\n -bufferMode \"double\" \n -twoSidedLighting 0\n -backfaceCulling 0\n" - + " -xray 0\n -jointXray 0\n -activeComponentsXray 0\n -displayTextures 0\n -smoothWireframe 0\n -lineWidth 1\n -textureAnisotropic 0\n -textureHilight 1\n -textureSampling 2\n -textureDisplay \"modulate\" \n -textureMaxSize 32768\n -fogging 0\n -fogSource \"fragment\" \n -fogMode \"linear\" \n -fogStart 0\n -fogEnd 100\n -fogDensity 0.1\n -fogColor 0.5 0.5 0.5 1 \n -depthOfFieldPreview 1\n -maxConstantTransparency 1\n -rendererName \"vp2Renderer\" \n -objectFilterShowInHUD 1\n -isFiltered 0\n -colorResolution 256 256 \n -bumpResolution 512 512 \n -textureCompression 0\n -transparencyAlgorithm \"frontAndBackCull\" \n -transpInShadows 0\n -cullingOverride \"none\" \n" - + " -lowQualityLighting 0\n -maximumNumHardwareLights 1\n -occlusionCulling 0\n -shadingModel 0\n -useBaseRenderer 0\n -useReducedRenderer 0\n -smallObjectCulling 0\n -smallObjectThreshold -1 \n -interactiveDisableShadows 0\n -interactiveBackFaceCull 0\n -sortTransparent 1\n -nurbsCurves 1\n -nurbsSurfaces 1\n -polymeshes 1\n -subdivSurfaces 1\n -planes 1\n -lights 1\n -cameras 1\n -controlVertices 1\n -hulls 1\n -grid 1\n -imagePlane 1\n -joints 1\n -ikHandles 1\n -deformers 1\n -dynamics 1\n -particleInstancers 1\n -fluids 1\n -hairSystems 1\n -follicles 1\n -nCloths 1\n -nParticles 1\n" - + " -nRigids 1\n -dynamicConstraints 1\n -locators 1\n -manipulators 1\n -pluginShapes 1\n -dimensions 1\n -handles 1\n -pivots 1\n -textures 1\n -strokes 1\n -motionTrails 1\n -clipGhosts 1\n -greasePencils 1\n -shadows 0\n -captureSequenceNumber -1\n -width 1\n -height 1\n -sceneRenderFilter 0\n $editorName;\n modelEditor -e -viewSelected 0 $editorName;\n modelEditor -e \n -pluginObjects \"gpuCacheDisplayFilter\" 1 \n $editorName;\n\t\t}\n\t} else {\n\t\t$label = `panel -q -label $panelName`;\n\t\tmodelPanel -edit -l (localizedPanelLabel(\"Side View\")) -mbv $menusOkayInPanels $panelName;\n\t\t$editorName = $panelName;\n modelEditor -e \n -camera \"side\" \n -useInteractiveMode 0\n -displayLights \"default\" \n" - + " -displayAppearance \"smoothShaded\" \n -activeOnly 0\n -ignorePanZoom 0\n -wireframeOnShaded 0\n -headsUpDisplay 1\n -holdOuts 1\n -selectionHiliteDisplay 1\n -useDefaultMaterial 0\n -bufferMode \"double\" \n -twoSidedLighting 0\n -backfaceCulling 0\n -xray 0\n -jointXray 0\n -activeComponentsXray 0\n -displayTextures 0\n -smoothWireframe 0\n -lineWidth 1\n -textureAnisotropic 0\n -textureHilight 1\n -textureSampling 2\n -textureDisplay \"modulate\" \n -textureMaxSize 32768\n -fogging 0\n -fogSource \"fragment\" \n -fogMode \"linear\" \n -fogStart 0\n -fogEnd 100\n -fogDensity 0.1\n -fogColor 0.5 0.5 0.5 1 \n -depthOfFieldPreview 1\n -maxConstantTransparency 1\n -rendererName \"vp2Renderer\" \n -objectFilterShowInHUD 1\n" - + " -isFiltered 0\n -colorResolution 256 256 \n -bumpResolution 512 512 \n -textureCompression 0\n -transparencyAlgorithm \"frontAndBackCull\" \n -transpInShadows 0\n -cullingOverride \"none\" \n -lowQualityLighting 0\n -maximumNumHardwareLights 1\n -occlusionCulling 0\n -shadingModel 0\n -useBaseRenderer 0\n -useReducedRenderer 0\n -smallObjectCulling 0\n -smallObjectThreshold -1 \n -interactiveDisableShadows 0\n -interactiveBackFaceCull 0\n -sortTransparent 1\n -nurbsCurves 1\n -nurbsSurfaces 1\n -polymeshes 1\n -subdivSurfaces 1\n -planes 1\n -lights 1\n -cameras 1\n -controlVertices 1\n -hulls 1\n -grid 1\n -imagePlane 1\n -joints 1\n -ikHandles 1\n -deformers 1\n -dynamics 1\n -particleInstancers 1\n" - + " -fluids 1\n -hairSystems 1\n -follicles 1\n -nCloths 1\n -nParticles 1\n -nRigids 1\n -dynamicConstraints 1\n -locators 1\n -manipulators 1\n -pluginShapes 1\n -dimensions 1\n -handles 1\n -pivots 1\n -textures 1\n -strokes 1\n -motionTrails 1\n -clipGhosts 1\n -greasePencils 1\n -shadows 0\n -captureSequenceNumber -1\n -width 1\n -height 1\n -sceneRenderFilter 0\n $editorName;\n modelEditor -e -viewSelected 0 $editorName;\n modelEditor -e \n -pluginObjects \"gpuCacheDisplayFilter\" 1 \n $editorName;\n\t\tif (!$useSceneConfig) {\n\t\t\tpanel -e -l $label $panelName;\n\t\t}\n\t}\n\n\n\t$panelName = `sceneUIReplacement -getNextPanel \"modelPanel\" (localizedPanelLabel(\"Front View\")) `;\n\tif (\"\" == $panelName) {\n\t\tif ($useSceneConfig) {\n\t\t\t$panelName = `modelPanel -unParent -l (localizedPanelLabel(\"Front View\")) -mbv $menusOkayInPanels `;\n" - + "\t\t\t$editorName = $panelName;\n modelEditor -e \n -camera \"front\" \n -useInteractiveMode 0\n -displayLights \"default\" \n -displayAppearance \"smoothShaded\" \n -activeOnly 0\n -ignorePanZoom 0\n -wireframeOnShaded 0\n -headsUpDisplay 1\n -holdOuts 1\n -selectionHiliteDisplay 1\n -useDefaultMaterial 0\n -bufferMode \"double\" \n -twoSidedLighting 0\n -backfaceCulling 0\n -xray 0\n -jointXray 0\n -activeComponentsXray 0\n -displayTextures 0\n -smoothWireframe 0\n -lineWidth 1\n -textureAnisotropic 0\n -textureHilight 1\n -textureSampling 2\n -textureDisplay \"modulate\" \n -textureMaxSize 32768\n -fogging 0\n -fogSource \"fragment\" \n -fogMode \"linear\" \n" - + " -fogStart 0\n -fogEnd 100\n -fogDensity 0.1\n -fogColor 0.5 0.5 0.5 1 \n -depthOfFieldPreview 1\n -maxConstantTransparency 1\n -rendererName \"vp2Renderer\" \n -objectFilterShowInHUD 1\n -isFiltered 0\n -colorResolution 256 256 \n -bumpResolution 512 512 \n -textureCompression 0\n -transparencyAlgorithm \"frontAndBackCull\" \n -transpInShadows 0\n -cullingOverride \"none\" \n -lowQualityLighting 0\n -maximumNumHardwareLights 1\n -occlusionCulling 0\n -shadingModel 0\n -useBaseRenderer 0\n -useReducedRenderer 0\n -smallObjectCulling 0\n -smallObjectThreshold -1 \n -interactiveDisableShadows 0\n -interactiveBackFaceCull 0\n -sortTransparent 1\n -nurbsCurves 1\n" - + " -nurbsSurfaces 1\n -polymeshes 1\n -subdivSurfaces 1\n -planes 1\n -lights 1\n -cameras 1\n -controlVertices 1\n -hulls 1\n -grid 1\n -imagePlane 1\n -joints 1\n -ikHandles 1\n -deformers 1\n -dynamics 1\n -particleInstancers 1\n -fluids 1\n -hairSystems 1\n -follicles 1\n -nCloths 1\n -nParticles 1\n -nRigids 1\n -dynamicConstraints 1\n -locators 1\n -manipulators 1\n -pluginShapes 1\n -dimensions 1\n -handles 1\n -pivots 1\n -textures 1\n -strokes 1\n -motionTrails 1\n -clipGhosts 1\n -greasePencils 1\n -shadows 0\n -captureSequenceNumber -1\n" - + " -width 1\n -height 1\n -sceneRenderFilter 0\n $editorName;\n modelEditor -e -viewSelected 0 $editorName;\n modelEditor -e \n -pluginObjects \"gpuCacheDisplayFilter\" 1 \n $editorName;\n\t\t}\n\t} else {\n\t\t$label = `panel -q -label $panelName`;\n\t\tmodelPanel -edit -l (localizedPanelLabel(\"Front View\")) -mbv $menusOkayInPanels $panelName;\n\t\t$editorName = $panelName;\n modelEditor -e \n -camera \"front\" \n -useInteractiveMode 0\n -displayLights \"default\" \n -displayAppearance \"smoothShaded\" \n -activeOnly 0\n -ignorePanZoom 0\n -wireframeOnShaded 0\n -headsUpDisplay 1\n -holdOuts 1\n -selectionHiliteDisplay 1\n -useDefaultMaterial 0\n -bufferMode \"double\" \n -twoSidedLighting 0\n -backfaceCulling 0\n -xray 0\n -jointXray 0\n -activeComponentsXray 0\n" - + " -displayTextures 0\n -smoothWireframe 0\n -lineWidth 1\n -textureAnisotropic 0\n -textureHilight 1\n -textureSampling 2\n -textureDisplay \"modulate\" \n -textureMaxSize 32768\n -fogging 0\n -fogSource \"fragment\" \n -fogMode \"linear\" \n -fogStart 0\n -fogEnd 100\n -fogDensity 0.1\n -fogColor 0.5 0.5 0.5 1 \n -depthOfFieldPreview 1\n -maxConstantTransparency 1\n -rendererName \"vp2Renderer\" \n -objectFilterShowInHUD 1\n -isFiltered 0\n -colorResolution 256 256 \n -bumpResolution 512 512 \n -textureCompression 0\n -transparencyAlgorithm \"frontAndBackCull\" \n -transpInShadows 0\n -cullingOverride \"none\" \n -lowQualityLighting 0\n -maximumNumHardwareLights 1\n -occlusionCulling 0\n -shadingModel 0\n -useBaseRenderer 0\n" - + " -useReducedRenderer 0\n -smallObjectCulling 0\n -smallObjectThreshold -1 \n -interactiveDisableShadows 0\n -interactiveBackFaceCull 0\n -sortTransparent 1\n -nurbsCurves 1\n -nurbsSurfaces 1\n -polymeshes 1\n -subdivSurfaces 1\n -planes 1\n -lights 1\n -cameras 1\n -controlVertices 1\n -hulls 1\n -grid 1\n -imagePlane 1\n -joints 1\n -ikHandles 1\n -deformers 1\n -dynamics 1\n -particleInstancers 1\n -fluids 1\n -hairSystems 1\n -follicles 1\n -nCloths 1\n -nParticles 1\n -nRigids 1\n -dynamicConstraints 1\n -locators 1\n -manipulators 1\n -pluginShapes 1\n -dimensions 1\n -handles 1\n -pivots 1\n -textures 1\n -strokes 1\n -motionTrails 1\n" - + " -clipGhosts 1\n -greasePencils 1\n -shadows 0\n -captureSequenceNumber -1\n -width 1\n -height 1\n -sceneRenderFilter 0\n $editorName;\n modelEditor -e -viewSelected 0 $editorName;\n modelEditor -e \n -pluginObjects \"gpuCacheDisplayFilter\" 1 \n $editorName;\n\t\tif (!$useSceneConfig) {\n\t\t\tpanel -e -l $label $panelName;\n\t\t}\n\t}\n\n\n\t$panelName = `sceneUIReplacement -getNextPanel \"modelPanel\" (localizedPanelLabel(\"Persp View\")) `;\n\tif (\"\" == $panelName) {\n\t\tif ($useSceneConfig) {\n\t\t\t$panelName = `modelPanel -unParent -l (localizedPanelLabel(\"Persp View\")) -mbv $menusOkayInPanels `;\n\t\t\t$editorName = $panelName;\n modelEditor -e \n -camera \"persp\" \n -useInteractiveMode 0\n -displayLights \"default\" \n -displayAppearance \"smoothShaded\" \n -activeOnly 0\n -ignorePanZoom 0\n -wireframeOnShaded 0\n -headsUpDisplay 1\n" - + " -holdOuts 1\n -selectionHiliteDisplay 1\n -useDefaultMaterial 0\n -bufferMode \"double\" \n -twoSidedLighting 0\n -backfaceCulling 0\n -xray 0\n -jointXray 0\n -activeComponentsXray 0\n -displayTextures 0\n -smoothWireframe 0\n -lineWidth 1\n -textureAnisotropic 0\n -textureHilight 1\n -textureSampling 2\n -textureDisplay \"modulate\" \n -textureMaxSize 32768\n -fogging 0\n -fogSource \"fragment\" \n -fogMode \"linear\" \n -fogStart 0\n -fogEnd 100\n -fogDensity 0.1\n -fogColor 0.5 0.5 0.5 1 \n -depthOfFieldPreview 1\n -maxConstantTransparency 1\n -rendererName \"vp2Renderer\" \n -objectFilterShowInHUD 1\n -isFiltered 0\n" - + " -colorResolution 256 256 \n -bumpResolution 512 512 \n -textureCompression 0\n -transparencyAlgorithm \"frontAndBackCull\" \n -transpInShadows 0\n -cullingOverride \"none\" \n -lowQualityLighting 0\n -maximumNumHardwareLights 1\n -occlusionCulling 0\n -shadingModel 0\n -useBaseRenderer 0\n -useReducedRenderer 0\n -smallObjectCulling 0\n -smallObjectThreshold -1 \n -interactiveDisableShadows 0\n -interactiveBackFaceCull 0\n -sortTransparent 1\n -nurbsCurves 1\n -nurbsSurfaces 1\n -polymeshes 1\n -subdivSurfaces 1\n -planes 1\n -lights 1\n -cameras 1\n -controlVertices 1\n -hulls 1\n -grid 1\n -imagePlane 1\n -joints 1\n" - + " -ikHandles 1\n -deformers 1\n -dynamics 1\n -particleInstancers 1\n -fluids 1\n -hairSystems 1\n -follicles 1\n -nCloths 1\n -nParticles 1\n -nRigids 1\n -dynamicConstraints 1\n -locators 1\n -manipulators 1\n -pluginShapes 1\n -dimensions 1\n -handles 1\n -pivots 1\n -textures 1\n -strokes 1\n -motionTrails 1\n -clipGhosts 1\n -greasePencils 1\n -shadows 0\n -captureSequenceNumber -1\n -width 1135\n -height 740\n -sceneRenderFilter 0\n $editorName;\n modelEditor -e -viewSelected 0 $editorName;\n modelEditor -e \n -pluginObjects \"gpuCacheDisplayFilter\" 1 \n $editorName;\n\t\t}\n\t} else {\n" - + "\t\t$label = `panel -q -label $panelName`;\n\t\tmodelPanel -edit -l (localizedPanelLabel(\"Persp View\")) -mbv $menusOkayInPanels $panelName;\n\t\t$editorName = $panelName;\n modelEditor -e \n -camera \"persp\" \n -useInteractiveMode 0\n -displayLights \"default\" \n -displayAppearance \"smoothShaded\" \n -activeOnly 0\n -ignorePanZoom 0\n -wireframeOnShaded 0\n -headsUpDisplay 1\n -holdOuts 1\n -selectionHiliteDisplay 1\n -useDefaultMaterial 0\n -bufferMode \"double\" \n -twoSidedLighting 0\n -backfaceCulling 0\n -xray 0\n -jointXray 0\n -activeComponentsXray 0\n -displayTextures 0\n -smoothWireframe 0\n -lineWidth 1\n -textureAnisotropic 0\n -textureHilight 1\n -textureSampling 2\n -textureDisplay \"modulate\" \n -textureMaxSize 32768\n -fogging 0\n -fogSource \"fragment\" \n" - + " -fogMode \"linear\" \n -fogStart 0\n -fogEnd 100\n -fogDensity 0.1\n -fogColor 0.5 0.5 0.5 1 \n -depthOfFieldPreview 1\n -maxConstantTransparency 1\n -rendererName \"vp2Renderer\" \n -objectFilterShowInHUD 1\n -isFiltered 0\n -colorResolution 256 256 \n -bumpResolution 512 512 \n -textureCompression 0\n -transparencyAlgorithm \"frontAndBackCull\" \n -transpInShadows 0\n -cullingOverride \"none\" \n -lowQualityLighting 0\n -maximumNumHardwareLights 1\n -occlusionCulling 0\n -shadingModel 0\n -useBaseRenderer 0\n -useReducedRenderer 0\n -smallObjectCulling 0\n -smallObjectThreshold -1 \n -interactiveDisableShadows 0\n -interactiveBackFaceCull 0\n -sortTransparent 1\n -nurbsCurves 1\n -nurbsSurfaces 1\n -polymeshes 1\n -subdivSurfaces 1\n" - + " -planes 1\n -lights 1\n -cameras 1\n -controlVertices 1\n -hulls 1\n -grid 1\n -imagePlane 1\n -joints 1\n -ikHandles 1\n -deformers 1\n -dynamics 1\n -particleInstancers 1\n -fluids 1\n -hairSystems 1\n -follicles 1\n -nCloths 1\n -nParticles 1\n -nRigids 1\n -dynamicConstraints 1\n -locators 1\n -manipulators 1\n -pluginShapes 1\n -dimensions 1\n -handles 1\n -pivots 1\n -textures 1\n -strokes 1\n -motionTrails 1\n -clipGhosts 1\n -greasePencils 1\n -shadows 0\n -captureSequenceNumber -1\n -width 1135\n -height 740\n -sceneRenderFilter 0\n $editorName;\n modelEditor -e -viewSelected 0 $editorName;\n modelEditor -e \n -pluginObjects \"gpuCacheDisplayFilter\" 1 \n" - + " $editorName;\n\t\tif (!$useSceneConfig) {\n\t\t\tpanel -e -l $label $panelName;\n\t\t}\n\t}\n\n\n\t$panelName = `sceneUIReplacement -getNextPanel \"outlinerPanel\" (localizedPanelLabel(\"Outliner\")) `;\n\tif (\"\" == $panelName) {\n\t\tif ($useSceneConfig) {\n\t\t\t$panelName = `outlinerPanel -unParent -l (localizedPanelLabel(\"Outliner\")) -mbv $menusOkayInPanels `;\n\t\t\t$editorName = $panelName;\n outlinerEditor -e \n -showShapes 0\n -showAssignedMaterials 0\n -showReferenceNodes 1\n -showReferenceMembers 1\n -showAttributes 0\n -showConnected 0\n -showAnimCurvesOnly 0\n -showMuteInfo 0\n -organizeByLayer 1\n -showAnimLayerWeight 1\n -autoExpandLayers 1\n -autoExpand 0\n -showDagOnly 1\n -showAssets 1\n -showContainedOnly 1\n -showPublishedAsConnected 0\n -showContainerContents 1\n -ignoreDagHierarchy 0\n" - + " -expandConnections 0\n -showUpstreamCurves 1\n -showUnitlessCurves 1\n -showCompounds 1\n -showLeafs 1\n -showNumericAttrsOnly 0\n -highlightActive 1\n -autoSelectNewObjects 0\n -doNotSelectNewObjects 0\n -dropIsParent 1\n -transmitFilters 0\n -setFilter \"defaultSetFilter\" \n -showSetMembers 1\n -allowMultiSelection 1\n -alwaysToggleSelect 0\n -directSelect 0\n -isSet 0\n -isSetMember 0\n -displayMode \"DAG\" \n -expandObjects 0\n -setsIgnoreFilters 1\n -containersIgnoreFilters 0\n -editAttrName 0\n -showAttrValues 0\n -highlightSecondary 0\n -showUVAttrsOnly 0\n -showTextureNodesOnly 0\n -attrAlphaOrder \"default\" \n -animLayerFilterOptions \"allAffecting\" \n" - + " -sortOrder \"none\" \n -longNames 0\n -niceNames 1\n -showNamespace 1\n -showPinIcons 0\n -mapMotionTrails 0\n -ignoreHiddenAttribute 0\n -ignoreOutlinerColor 0\n -renderFilterVisible 0\n -renderFilterIndex 0\n -selectionOrder \"chronological\" \n -expandAttribute 0\n $editorName;\n\t\t}\n\t} else {\n\t\t$label = `panel -q -label $panelName`;\n\t\toutlinerPanel -edit -l (localizedPanelLabel(\"Outliner\")) -mbv $menusOkayInPanels $panelName;\n\t\t$editorName = $panelName;\n outlinerEditor -e \n -showShapes 0\n -showAssignedMaterials 0\n -showReferenceNodes 1\n -showReferenceMembers 1\n -showAttributes 0\n -showConnected 0\n -showAnimCurvesOnly 0\n -showMuteInfo 0\n -organizeByLayer 1\n -showAnimLayerWeight 1\n -autoExpandLayers 1\n -autoExpand 0\n" - + " -showDagOnly 1\n -showAssets 1\n -showContainedOnly 1\n -showPublishedAsConnected 0\n -showContainerContents 1\n -ignoreDagHierarchy 0\n -expandConnections 0\n -showUpstreamCurves 1\n -showUnitlessCurves 1\n -showCompounds 1\n -showLeafs 1\n -showNumericAttrsOnly 0\n -highlightActive 1\n -autoSelectNewObjects 0\n -doNotSelectNewObjects 0\n -dropIsParent 1\n -transmitFilters 0\n -setFilter \"defaultSetFilter\" \n -showSetMembers 1\n -allowMultiSelection 1\n -alwaysToggleSelect 0\n -directSelect 0\n -isSet 0\n -isSetMember 0\n -displayMode \"DAG\" \n -expandObjects 0\n -setsIgnoreFilters 1\n -containersIgnoreFilters 0\n -editAttrName 0\n -showAttrValues 0\n -highlightSecondary 0\n -showUVAttrsOnly 0\n" - + " -showTextureNodesOnly 0\n -attrAlphaOrder \"default\" \n -animLayerFilterOptions \"allAffecting\" \n -sortOrder \"none\" \n -longNames 0\n -niceNames 1\n -showNamespace 1\n -showPinIcons 0\n -mapMotionTrails 0\n -ignoreHiddenAttribute 0\n -ignoreOutlinerColor 0\n -renderFilterVisible 0\n -renderFilterIndex 0\n -selectionOrder \"chronological\" \n -expandAttribute 0\n $editorName;\n\t\tif (!$useSceneConfig) {\n\t\t\tpanel -e -l $label $panelName;\n\t\t}\n\t}\n\n\n\t$panelName = `sceneUIReplacement -getNextScriptedPanel \"graphEditor\" (localizedPanelLabel(\"Graph Editor\")) `;\n\tif (\"\" == $panelName) {\n\t\tif ($useSceneConfig) {\n\t\t\t$panelName = `scriptedPanel -unParent -type \"graphEditor\" -l (localizedPanelLabel(\"Graph Editor\")) -mbv $menusOkayInPanels `;\n\n\t\t\t$editorName = ($panelName+\"OutlineEd\");\n outlinerEditor -e \n -showShapes 1\n -showAssignedMaterials 0\n" - + " -showReferenceNodes 0\n -showReferenceMembers 0\n -showAttributes 1\n -showConnected 1\n -showAnimCurvesOnly 1\n -showMuteInfo 0\n -organizeByLayer 1\n -showAnimLayerWeight 1\n -autoExpandLayers 1\n -autoExpand 1\n -showDagOnly 0\n -showAssets 1\n -showContainedOnly 0\n -showPublishedAsConnected 0\n -showContainerContents 0\n -ignoreDagHierarchy 0\n -expandConnections 1\n -showUpstreamCurves 1\n -showUnitlessCurves 1\n -showCompounds 0\n -showLeafs 1\n -showNumericAttrsOnly 1\n -highlightActive 0\n -autoSelectNewObjects 1\n -doNotSelectNewObjects 0\n -dropIsParent 1\n -transmitFilters 1\n -setFilter \"0\" \n -showSetMembers 0\n" - + " -allowMultiSelection 1\n -alwaysToggleSelect 0\n -directSelect 0\n -displayMode \"DAG\" \n -expandObjects 0\n -setsIgnoreFilters 1\n -containersIgnoreFilters 0\n -editAttrName 0\n -showAttrValues 0\n -highlightSecondary 0\n -showUVAttrsOnly 0\n -showTextureNodesOnly 0\n -attrAlphaOrder \"default\" \n -animLayerFilterOptions \"allAffecting\" \n -sortOrder \"none\" \n -longNames 0\n -niceNames 1\n -showNamespace 1\n -showPinIcons 1\n -mapMotionTrails 1\n -ignoreHiddenAttribute 0\n -ignoreOutlinerColor 0\n -renderFilterVisible 0\n $editorName;\n\n\t\t\t$editorName = ($panelName+\"GraphEd\");\n animCurveEditor -e \n -displayKeys 1\n -displayTangents 0\n -displayActiveKeys 0\n" - + " -displayActiveKeyTangents 1\n -displayInfinities 0\n -displayValues 0\n -autoFit 0\n -snapTime \"integer\" \n -snapValue \"none\" \n -showResults \"off\" \n -showBufferCurves \"off\" \n -smoothness \"fine\" \n -resultSamples 1\n -resultScreenSamples 0\n -resultUpdate \"delayed\" \n -showUpstreamCurves 1\n -showCurveNames 0\n -showActiveCurveNames 0\n -stackedCurves 0\n -stackedCurvesMin -1\n -stackedCurvesMax 1\n -stackedCurvesSpace 0.2\n -displayNormalized 0\n -preSelectionHighlight 0\n -constrainDrag 0\n -classicMode 1\n $editorName;\n\t\t}\n\t} else {\n\t\t$label = `panel -q -label $panelName`;\n\t\tscriptedPanel -edit -l (localizedPanelLabel(\"Graph Editor\")) -mbv $menusOkayInPanels $panelName;\n\n\t\t\t$editorName = ($panelName+\"OutlineEd\");\n" - + " outlinerEditor -e \n -showShapes 1\n -showAssignedMaterials 0\n -showReferenceNodes 0\n -showReferenceMembers 0\n -showAttributes 1\n -showConnected 1\n -showAnimCurvesOnly 1\n -showMuteInfo 0\n -organizeByLayer 1\n -showAnimLayerWeight 1\n -autoExpandLayers 1\n -autoExpand 1\n -showDagOnly 0\n -showAssets 1\n -showContainedOnly 0\n -showPublishedAsConnected 0\n -showContainerContents 0\n -ignoreDagHierarchy 0\n -expandConnections 1\n -showUpstreamCurves 1\n -showUnitlessCurves 1\n -showCompounds 0\n -showLeafs 1\n -showNumericAttrsOnly 1\n -highlightActive 0\n -autoSelectNewObjects 1\n -doNotSelectNewObjects 0\n -dropIsParent 1\n" - + " -transmitFilters 1\n -setFilter \"0\" \n -showSetMembers 0\n -allowMultiSelection 1\n -alwaysToggleSelect 0\n -directSelect 0\n -displayMode \"DAG\" \n -expandObjects 0\n -setsIgnoreFilters 1\n -containersIgnoreFilters 0\n -editAttrName 0\n -showAttrValues 0\n -highlightSecondary 0\n -showUVAttrsOnly 0\n -showTextureNodesOnly 0\n -attrAlphaOrder \"default\" \n -animLayerFilterOptions \"allAffecting\" \n -sortOrder \"none\" \n -longNames 0\n -niceNames 1\n -showNamespace 1\n -showPinIcons 1\n -mapMotionTrails 1\n -ignoreHiddenAttribute 0\n -ignoreOutlinerColor 0\n -renderFilterVisible 0\n $editorName;\n\n\t\t\t$editorName = ($panelName+\"GraphEd\");\n animCurveEditor -e \n" - + " -displayKeys 1\n -displayTangents 0\n -displayActiveKeys 0\n -displayActiveKeyTangents 1\n -displayInfinities 0\n -displayValues 0\n -autoFit 0\n -snapTime \"integer\" \n -snapValue \"none\" \n -showResults \"off\" \n -showBufferCurves \"off\" \n -smoothness \"fine\" \n -resultSamples 1\n -resultScreenSamples 0\n -resultUpdate \"delayed\" \n -showUpstreamCurves 1\n -showCurveNames 0\n -showActiveCurveNames 0\n -stackedCurves 0\n -stackedCurvesMin -1\n -stackedCurvesMax 1\n -stackedCurvesSpace 0.2\n -displayNormalized 0\n -preSelectionHighlight 0\n -constrainDrag 0\n -classicMode 1\n $editorName;\n\t\tif (!$useSceneConfig) {\n\t\t\tpanel -e -l $label $panelName;\n" - + "\t\t}\n\t}\n\n\n\t$panelName = `sceneUIReplacement -getNextScriptedPanel \"dopeSheetPanel\" (localizedPanelLabel(\"Dope Sheet\")) `;\n\tif (\"\" == $panelName) {\n\t\tif ($useSceneConfig) {\n\t\t\t$panelName = `scriptedPanel -unParent -type \"dopeSheetPanel\" -l (localizedPanelLabel(\"Dope Sheet\")) -mbv $menusOkayInPanels `;\n\n\t\t\t$editorName = ($panelName+\"OutlineEd\");\n outlinerEditor -e \n -showShapes 1\n -showAssignedMaterials 0\n -showReferenceNodes 0\n -showReferenceMembers 0\n -showAttributes 1\n -showConnected 1\n -showAnimCurvesOnly 1\n -showMuteInfo 0\n -organizeByLayer 1\n -showAnimLayerWeight 1\n -autoExpandLayers 1\n -autoExpand 0\n -showDagOnly 0\n -showAssets 1\n -showContainedOnly 0\n -showPublishedAsConnected 0\n -showContainerContents 0\n -ignoreDagHierarchy 0\n -expandConnections 1\n" - + " -showUpstreamCurves 1\n -showUnitlessCurves 0\n -showCompounds 1\n -showLeafs 1\n -showNumericAttrsOnly 1\n -highlightActive 0\n -autoSelectNewObjects 0\n -doNotSelectNewObjects 1\n -dropIsParent 1\n -transmitFilters 0\n -setFilter \"0\" \n -showSetMembers 0\n -allowMultiSelection 1\n -alwaysToggleSelect 0\n -directSelect 0\n -displayMode \"DAG\" \n -expandObjects 0\n -setsIgnoreFilters 1\n -containersIgnoreFilters 0\n -editAttrName 0\n -showAttrValues 0\n -highlightSecondary 0\n -showUVAttrsOnly 0\n -showTextureNodesOnly 0\n -attrAlphaOrder \"default\" \n -animLayerFilterOptions \"allAffecting\" \n -sortOrder \"none\" \n -longNames 0\n" - + " -niceNames 1\n -showNamespace 1\n -showPinIcons 0\n -mapMotionTrails 1\n -ignoreHiddenAttribute 0\n -ignoreOutlinerColor 0\n -renderFilterVisible 0\n $editorName;\n\n\t\t\t$editorName = ($panelName+\"DopeSheetEd\");\n dopeSheetEditor -e \n -displayKeys 1\n -displayTangents 0\n -displayActiveKeys 0\n -displayActiveKeyTangents 0\n -displayInfinities 0\n -displayValues 0\n -autoFit 0\n -snapTime \"integer\" \n -snapValue \"none\" \n -outliner \"dopeSheetPanel1OutlineEd\" \n -showSummary 1\n -showScene 0\n -hierarchyBelow 0\n -showTicks 1\n -selectionWindow 0 0 0 0 \n $editorName;\n\t\t}\n\t} else {\n\t\t$label = `panel -q -label $panelName`;\n\t\tscriptedPanel -edit -l (localizedPanelLabel(\"Dope Sheet\")) -mbv $menusOkayInPanels $panelName;\n" - + "\n\t\t\t$editorName = ($panelName+\"OutlineEd\");\n outlinerEditor -e \n -showShapes 1\n -showAssignedMaterials 0\n -showReferenceNodes 0\n -showReferenceMembers 0\n -showAttributes 1\n -showConnected 1\n -showAnimCurvesOnly 1\n -showMuteInfo 0\n -organizeByLayer 1\n -showAnimLayerWeight 1\n -autoExpandLayers 1\n -autoExpand 0\n -showDagOnly 0\n -showAssets 1\n -showContainedOnly 0\n -showPublishedAsConnected 0\n -showContainerContents 0\n -ignoreDagHierarchy 0\n -expandConnections 1\n -showUpstreamCurves 1\n -showUnitlessCurves 0\n -showCompounds 1\n -showLeafs 1\n -showNumericAttrsOnly 1\n -highlightActive 0\n -autoSelectNewObjects 0\n -doNotSelectNewObjects 1\n" - + " -dropIsParent 1\n -transmitFilters 0\n -setFilter \"0\" \n -showSetMembers 0\n -allowMultiSelection 1\n -alwaysToggleSelect 0\n -directSelect 0\n -displayMode \"DAG\" \n -expandObjects 0\n -setsIgnoreFilters 1\n -containersIgnoreFilters 0\n -editAttrName 0\n -showAttrValues 0\n -highlightSecondary 0\n -showUVAttrsOnly 0\n -showTextureNodesOnly 0\n -attrAlphaOrder \"default\" \n -animLayerFilterOptions \"allAffecting\" \n -sortOrder \"none\" \n -longNames 0\n -niceNames 1\n -showNamespace 1\n -showPinIcons 0\n -mapMotionTrails 1\n -ignoreHiddenAttribute 0\n -ignoreOutlinerColor 0\n -renderFilterVisible 0\n $editorName;\n\n\t\t\t$editorName = ($panelName+\"DopeSheetEd\");\n" - + " dopeSheetEditor -e \n -displayKeys 1\n -displayTangents 0\n -displayActiveKeys 0\n -displayActiveKeyTangents 0\n -displayInfinities 0\n -displayValues 0\n -autoFit 0\n -snapTime \"integer\" \n -snapValue \"none\" \n -outliner \"dopeSheetPanel1OutlineEd\" \n -showSummary 1\n -showScene 0\n -hierarchyBelow 0\n -showTicks 1\n -selectionWindow 0 0 0 0 \n $editorName;\n\t\tif (!$useSceneConfig) {\n\t\t\tpanel -e -l $label $panelName;\n\t\t}\n\t}\n\n\n\t$panelName = `sceneUIReplacement -getNextScriptedPanel \"clipEditorPanel\" (localizedPanelLabel(\"Trax Editor\")) `;\n\tif (\"\" == $panelName) {\n\t\tif ($useSceneConfig) {\n\t\t\t$panelName = `scriptedPanel -unParent -type \"clipEditorPanel\" -l (localizedPanelLabel(\"Trax Editor\")) -mbv $menusOkayInPanels `;\n\n\t\t\t$editorName = clipEditorNameFromPanel($panelName);\n clipEditor -e \n" - + " -displayKeys 0\n -displayTangents 0\n -displayActiveKeys 0\n -displayActiveKeyTangents 0\n -displayInfinities 0\n -displayValues 0\n -autoFit 0\n -snapTime \"none\" \n -snapValue \"none\" \n -initialized 0\n -manageSequencer 0 \n $editorName;\n\t\t}\n\t} else {\n\t\t$label = `panel -q -label $panelName`;\n\t\tscriptedPanel -edit -l (localizedPanelLabel(\"Trax Editor\")) -mbv $menusOkayInPanels $panelName;\n\n\t\t\t$editorName = clipEditorNameFromPanel($panelName);\n clipEditor -e \n -displayKeys 0\n -displayTangents 0\n -displayActiveKeys 0\n -displayActiveKeyTangents 0\n -displayInfinities 0\n -displayValues 0\n -autoFit 0\n -snapTime \"none\" \n -snapValue \"none\" \n -initialized 0\n -manageSequencer 0 \n" - + " $editorName;\n\t\tif (!$useSceneConfig) {\n\t\t\tpanel -e -l $label $panelName;\n\t\t}\n\t}\n\n\n\t$panelName = `sceneUIReplacement -getNextScriptedPanel \"sequenceEditorPanel\" (localizedPanelLabel(\"Camera Sequencer\")) `;\n\tif (\"\" == $panelName) {\n\t\tif ($useSceneConfig) {\n\t\t\t$panelName = `scriptedPanel -unParent -type \"sequenceEditorPanel\" -l (localizedPanelLabel(\"Camera Sequencer\")) -mbv $menusOkayInPanels `;\n\n\t\t\t$editorName = sequenceEditorNameFromPanel($panelName);\n clipEditor -e \n -displayKeys 0\n -displayTangents 0\n -displayActiveKeys 0\n -displayActiveKeyTangents 0\n -displayInfinities 0\n -displayValues 0\n -autoFit 0\n -snapTime \"none\" \n -snapValue \"none\" \n -initialized 0\n -manageSequencer 1 \n $editorName;\n\t\t}\n\t} else {\n\t\t$label = `panel -q -label $panelName`;\n\t\tscriptedPanel -edit -l (localizedPanelLabel(\"Camera Sequencer\")) -mbv $menusOkayInPanels $panelName;\n" - + "\n\t\t\t$editorName = sequenceEditorNameFromPanel($panelName);\n clipEditor -e \n -displayKeys 0\n -displayTangents 0\n -displayActiveKeys 0\n -displayActiveKeyTangents 0\n -displayInfinities 0\n -displayValues 0\n -autoFit 0\n -snapTime \"none\" \n -snapValue \"none\" \n -initialized 0\n -manageSequencer 1 \n $editorName;\n\t\tif (!$useSceneConfig) {\n\t\t\tpanel -e -l $label $panelName;\n\t\t}\n\t}\n\n\n\t$panelName = `sceneUIReplacement -getNextScriptedPanel \"hyperGraphPanel\" (localizedPanelLabel(\"Hypergraph Hierarchy\")) `;\n\tif (\"\" == $panelName) {\n\t\tif ($useSceneConfig) {\n\t\t\t$panelName = `scriptedPanel -unParent -type \"hyperGraphPanel\" -l (localizedPanelLabel(\"Hypergraph Hierarchy\")) -mbv $menusOkayInPanels `;\n\n\t\t\t$editorName = ($panelName+\"HyperGraphEd\");\n hyperGraph -e \n -graphLayoutStyle \"hierarchicalLayout\" \n -orientation \"horiz\" \n" - + " -mergeConnections 0\n -zoom 1\n -animateTransition 0\n -showRelationships 1\n -showShapes 0\n -showDeformers 0\n -showExpressions 0\n -showConstraints 0\n -showConnectionFromSelected 0\n -showConnectionToSelected 0\n -showConstraintLabels 0\n -showUnderworld 0\n -showInvisible 0\n -transitionFrames 1\n -opaqueContainers 0\n -freeform 0\n -imagePosition 0 0 \n -imageScale 1\n -imageEnabled 0\n -graphType \"DAG\" \n -heatMapDisplay 0\n -updateSelection 1\n -updateNodeAdded 1\n -useDrawOverrideColor 0\n -limitGraphTraversal -1\n -range 0 0 \n -iconSize \"smallIcons\" \n -showCachedConnections 0\n $editorName;\n\t\t}\n\t} else {\n" - + "\t\t$label = `panel -q -label $panelName`;\n\t\tscriptedPanel -edit -l (localizedPanelLabel(\"Hypergraph Hierarchy\")) -mbv $menusOkayInPanels $panelName;\n\n\t\t\t$editorName = ($panelName+\"HyperGraphEd\");\n hyperGraph -e \n -graphLayoutStyle \"hierarchicalLayout\" \n -orientation \"horiz\" \n -mergeConnections 0\n -zoom 1\n -animateTransition 0\n -showRelationships 1\n -showShapes 0\n -showDeformers 0\n -showExpressions 0\n -showConstraints 0\n -showConnectionFromSelected 0\n -showConnectionToSelected 0\n -showConstraintLabels 0\n -showUnderworld 0\n -showInvisible 0\n -transitionFrames 1\n -opaqueContainers 0\n -freeform 0\n -imagePosition 0 0 \n -imageScale 1\n -imageEnabled 0\n -graphType \"DAG\" \n -heatMapDisplay 0\n" - + " -updateSelection 1\n -updateNodeAdded 1\n -useDrawOverrideColor 0\n -limitGraphTraversal -1\n -range 0 0 \n -iconSize \"smallIcons\" \n -showCachedConnections 0\n $editorName;\n\t\tif (!$useSceneConfig) {\n\t\t\tpanel -e -l $label $panelName;\n\t\t}\n\t}\n\n\n\t$panelName = `sceneUIReplacement -getNextScriptedPanel \"visorPanel\" (localizedPanelLabel(\"Visor\")) `;\n\tif (\"\" == $panelName) {\n\t\tif ($useSceneConfig) {\n\t\t\t$panelName = `scriptedPanel -unParent -type \"visorPanel\" -l (localizedPanelLabel(\"Visor\")) -mbv $menusOkayInPanels `;\n\t\t}\n\t} else {\n\t\t$label = `panel -q -label $panelName`;\n\t\tscriptedPanel -edit -l (localizedPanelLabel(\"Visor\")) -mbv $menusOkayInPanels $panelName;\n\t\tif (!$useSceneConfig) {\n\t\t\tpanel -e -l $label $panelName;\n\t\t}\n\t}\n\n\n\t$panelName = `sceneUIReplacement -getNextScriptedPanel \"createNodePanel\" (localizedPanelLabel(\"Create Node\")) `;\n\tif (\"\" == $panelName) {\n\t\tif ($useSceneConfig) {\n\t\t\t$panelName = `scriptedPanel -unParent -type \"createNodePanel\" -l (localizedPanelLabel(\"Create Node\")) -mbv $menusOkayInPanels `;\n" - + "\t\t}\n\t} else {\n\t\t$label = `panel -q -label $panelName`;\n\t\tscriptedPanel -edit -l (localizedPanelLabel(\"Create Node\")) -mbv $menusOkayInPanels $panelName;\n\t\tif (!$useSceneConfig) {\n\t\t\tpanel -e -l $label $panelName;\n\t\t}\n\t}\n\n\n\t$panelName = `sceneUIReplacement -getNextScriptedPanel \"polyTexturePlacementPanel\" (localizedPanelLabel(\"UV Editor\")) `;\n\tif (\"\" == $panelName) {\n\t\tif ($useSceneConfig) {\n\t\t\t$panelName = `scriptedPanel -unParent -type \"polyTexturePlacementPanel\" -l (localizedPanelLabel(\"UV Editor\")) -mbv $menusOkayInPanels `;\n\t\t}\n\t} else {\n\t\t$label = `panel -q -label $panelName`;\n\t\tscriptedPanel -edit -l (localizedPanelLabel(\"UV Editor\")) -mbv $menusOkayInPanels $panelName;\n\t\tif (!$useSceneConfig) {\n\t\t\tpanel -e -l $label $panelName;\n\t\t}\n\t}\n\n\n\t$panelName = `sceneUIReplacement -getNextScriptedPanel \"renderWindowPanel\" (localizedPanelLabel(\"Render View\")) `;\n\tif (\"\" == $panelName) {\n\t\tif ($useSceneConfig) {\n\t\t\t$panelName = `scriptedPanel -unParent -type \"renderWindowPanel\" -l (localizedPanelLabel(\"Render View\")) -mbv $menusOkayInPanels `;\n" - + "\t\t}\n\t} else {\n\t\t$label = `panel -q -label $panelName`;\n\t\tscriptedPanel -edit -l (localizedPanelLabel(\"Render View\")) -mbv $menusOkayInPanels $panelName;\n\t\tif (!$useSceneConfig) {\n\t\t\tpanel -e -l $label $panelName;\n\t\t}\n\t}\n\n\n\t$panelName = `sceneUIReplacement -getNextPanel \"shapePanel\" (localizedPanelLabel(\"Shape Editor\")) `;\n\tif (\"\" == $panelName) {\n\t\tif ($useSceneConfig) {\n\t\t\tshapePanel -unParent -l (localizedPanelLabel(\"Shape Editor\")) -mbv $menusOkayInPanels ;\n\t\t}\n\t} else {\n\t\t$label = `panel -q -label $panelName`;\n\t\tshapePanel -edit -l (localizedPanelLabel(\"Shape Editor\")) -mbv $menusOkayInPanels $panelName;\n\t\tif (!$useSceneConfig) {\n\t\t\tpanel -e -l $label $panelName;\n\t\t}\n\t}\n\n\n\t$panelName = `sceneUIReplacement -getNextPanel \"posePanel\" (localizedPanelLabel(\"Pose Editor\")) `;\n\tif (\"\" == $panelName) {\n\t\tif ($useSceneConfig) {\n\t\t\tposePanel -unParent -l (localizedPanelLabel(\"Pose Editor\")) -mbv $menusOkayInPanels ;\n\t\t}\n\t} else {\n\t\t$label = `panel -q -label $panelName`;\n\t\tposePanel -edit -l (localizedPanelLabel(\"Pose Editor\")) -mbv $menusOkayInPanels $panelName;\n" - + "\t\tif (!$useSceneConfig) {\n\t\t\tpanel -e -l $label $panelName;\n\t\t}\n\t}\n\n\n\t$panelName = `sceneUIReplacement -getNextScriptedPanel \"dynRelEdPanel\" (localizedPanelLabel(\"Dynamic Relationships\")) `;\n\tif (\"\" == $panelName) {\n\t\tif ($useSceneConfig) {\n\t\t\t$panelName = `scriptedPanel -unParent -type \"dynRelEdPanel\" -l (localizedPanelLabel(\"Dynamic Relationships\")) -mbv $menusOkayInPanels `;\n\t\t}\n\t} else {\n\t\t$label = `panel -q -label $panelName`;\n\t\tscriptedPanel -edit -l (localizedPanelLabel(\"Dynamic Relationships\")) -mbv $menusOkayInPanels $panelName;\n\t\tif (!$useSceneConfig) {\n\t\t\tpanel -e -l $label $panelName;\n\t\t}\n\t}\n\n\n\t$panelName = `sceneUIReplacement -getNextScriptedPanel \"relationshipPanel\" (localizedPanelLabel(\"Relationship Editor\")) `;\n\tif (\"\" == $panelName) {\n\t\tif ($useSceneConfig) {\n\t\t\t$panelName = `scriptedPanel -unParent -type \"relationshipPanel\" -l (localizedPanelLabel(\"Relationship Editor\")) -mbv $menusOkayInPanels `;\n\t\t}\n\t} else {\n\t\t$label = `panel -q -label $panelName`;\n\t\tscriptedPanel -edit -l (localizedPanelLabel(\"Relationship Editor\")) -mbv $menusOkayInPanels $panelName;\n" - + "\t\tif (!$useSceneConfig) {\n\t\t\tpanel -e -l $label $panelName;\n\t\t}\n\t}\n\n\n\t$panelName = `sceneUIReplacement -getNextScriptedPanel \"referenceEditorPanel\" (localizedPanelLabel(\"Reference Editor\")) `;\n\tif (\"\" == $panelName) {\n\t\tif ($useSceneConfig) {\n\t\t\t$panelName = `scriptedPanel -unParent -type \"referenceEditorPanel\" -l (localizedPanelLabel(\"Reference Editor\")) -mbv $menusOkayInPanels `;\n\t\t}\n\t} else {\n\t\t$label = `panel -q -label $panelName`;\n\t\tscriptedPanel -edit -l (localizedPanelLabel(\"Reference Editor\")) -mbv $menusOkayInPanels $panelName;\n\t\tif (!$useSceneConfig) {\n\t\t\tpanel -e -l $label $panelName;\n\t\t}\n\t}\n\n\n\t$panelName = `sceneUIReplacement -getNextScriptedPanel \"componentEditorPanel\" (localizedPanelLabel(\"Component Editor\")) `;\n\tif (\"\" == $panelName) {\n\t\tif ($useSceneConfig) {\n\t\t\t$panelName = `scriptedPanel -unParent -type \"componentEditorPanel\" -l (localizedPanelLabel(\"Component Editor\")) -mbv $menusOkayInPanels `;\n\t\t}\n\t} else {\n\t\t$label = `panel -q -label $panelName`;\n\t\tscriptedPanel -edit -l (localizedPanelLabel(\"Component Editor\")) -mbv $menusOkayInPanels $panelName;\n" - + "\t\tif (!$useSceneConfig) {\n\t\t\tpanel -e -l $label $panelName;\n\t\t}\n\t}\n\n\n\t$panelName = `sceneUIReplacement -getNextScriptedPanel \"dynPaintScriptedPanelType\" (localizedPanelLabel(\"Paint Effects\")) `;\n\tif (\"\" == $panelName) {\n\t\tif ($useSceneConfig) {\n\t\t\t$panelName = `scriptedPanel -unParent -type \"dynPaintScriptedPanelType\" -l (localizedPanelLabel(\"Paint Effects\")) -mbv $menusOkayInPanels `;\n\t\t}\n\t} else {\n\t\t$label = `panel -q -label $panelName`;\n\t\tscriptedPanel -edit -l (localizedPanelLabel(\"Paint Effects\")) -mbv $menusOkayInPanels $panelName;\n\t\tif (!$useSceneConfig) {\n\t\t\tpanel -e -l $label $panelName;\n\t\t}\n\t}\n\n\n\t$panelName = `sceneUIReplacement -getNextScriptedPanel \"scriptEditorPanel\" (localizedPanelLabel(\"Script Editor\")) `;\n\tif (\"\" == $panelName) {\n\t\tif ($useSceneConfig) {\n\t\t\t$panelName = `scriptedPanel -unParent -type \"scriptEditorPanel\" -l (localizedPanelLabel(\"Script Editor\")) -mbv $menusOkayInPanels `;\n\t\t}\n\t} else {\n\t\t$label = `panel -q -label $panelName`;\n\t\tscriptedPanel -edit -l (localizedPanelLabel(\"Script Editor\")) -mbv $menusOkayInPanels $panelName;\n" - + "\t\tif (!$useSceneConfig) {\n\t\t\tpanel -e -l $label $panelName;\n\t\t}\n\t}\n\n\n\t$panelName = `sceneUIReplacement -getNextScriptedPanel \"profilerPanel\" (localizedPanelLabel(\"Profiler Tool\")) `;\n\tif (\"\" == $panelName) {\n\t\tif ($useSceneConfig) {\n\t\t\t$panelName = `scriptedPanel -unParent -type \"profilerPanel\" -l (localizedPanelLabel(\"Profiler Tool\")) -mbv $menusOkayInPanels `;\n\t\t}\n\t} else {\n\t\t$label = `panel -q -label $panelName`;\n\t\tscriptedPanel -edit -l (localizedPanelLabel(\"Profiler Tool\")) -mbv $menusOkayInPanels $panelName;\n\t\tif (!$useSceneConfig) {\n\t\t\tpanel -e -l $label $panelName;\n\t\t}\n\t}\n\n\n\t$panelName = `sceneUIReplacement -getNextScriptedPanel \"contentBrowserPanel\" (localizedPanelLabel(\"Content Browser\")) `;\n\tif (\"\" == $panelName) {\n\t\tif ($useSceneConfig) {\n\t\t\t$panelName = `scriptedPanel -unParent -type \"contentBrowserPanel\" -l (localizedPanelLabel(\"Content Browser\")) -mbv $menusOkayInPanels `;\n\t\t}\n\t} else {\n\t\t$label = `panel -q -label $panelName`;\n\t\tscriptedPanel -edit -l (localizedPanelLabel(\"Content Browser\")) -mbv $menusOkayInPanels $panelName;\n" - + "\t\tif (!$useSceneConfig) {\n\t\t\tpanel -e -l $label $panelName;\n\t\t}\n\t}\n\n\n\t$panelName = `sceneUIReplacement -getNextScriptedPanel \"Stereo\" (localizedPanelLabel(\"Stereo\")) `;\n\tif (\"\" == $panelName) {\n\t\tif ($useSceneConfig) {\n\t\t\t$panelName = `scriptedPanel -unParent -type \"Stereo\" -l (localizedPanelLabel(\"Stereo\")) -mbv $menusOkayInPanels `;\nstring $editorName = ($panelName+\"Editor\");\n stereoCameraView -e \n -camera \"persp\" \n -useInteractiveMode 0\n -displayLights \"default\" \n -displayAppearance \"smoothShaded\" \n -activeOnly 0\n -ignorePanZoom 0\n -wireframeOnShaded 0\n -headsUpDisplay 1\n -holdOuts 1\n -selectionHiliteDisplay 1\n -useDefaultMaterial 0\n -bufferMode \"double\" \n -twoSidedLighting 0\n -backfaceCulling 0\n -xray 0\n -jointXray 0\n -activeComponentsXray 0\n -displayTextures 0\n" - + " -smoothWireframe 0\n -lineWidth 1\n -textureAnisotropic 0\n -textureHilight 1\n -textureSampling 2\n -textureDisplay \"modulate\" \n -textureMaxSize 32768\n -fogging 0\n -fogSource \"fragment\" \n -fogMode \"linear\" \n -fogStart 0\n -fogEnd 100\n -fogDensity 0.1\n -fogColor 0.5 0.5 0.5 1 \n -depthOfFieldPreview 1\n -maxConstantTransparency 1\n -objectFilterShowInHUD 1\n -isFiltered 0\n -colorResolution 4 4 \n -bumpResolution 4 4 \n -textureCompression 0\n -transparencyAlgorithm \"frontAndBackCull\" \n -transpInShadows 0\n -cullingOverride \"none\" \n -lowQualityLighting 0\n -maximumNumHardwareLights 0\n -occlusionCulling 0\n -shadingModel 0\n" - + " -useBaseRenderer 0\n -useReducedRenderer 0\n -smallObjectCulling 0\n -smallObjectThreshold -1 \n -interactiveDisableShadows 0\n -interactiveBackFaceCull 0\n -sortTransparent 1\n -nurbsCurves 1\n -nurbsSurfaces 1\n -polymeshes 1\n -subdivSurfaces 1\n -planes 1\n -lights 1\n -cameras 1\n -controlVertices 1\n -hulls 1\n -grid 1\n -imagePlane 1\n -joints 1\n -ikHandles 1\n -deformers 1\n -dynamics 1\n -particleInstancers 1\n -fluids 1\n -hairSystems 1\n -follicles 1\n -nCloths 1\n -nParticles 1\n -nRigids 1\n -dynamicConstraints 1\n -locators 1\n -manipulators 1\n -pluginShapes 1\n" - + " -dimensions 1\n -handles 1\n -pivots 1\n -textures 1\n -strokes 1\n -motionTrails 1\n -clipGhosts 1\n -greasePencils 1\n -shadows 0\n -captureSequenceNumber -1\n -width 0\n -height 0\n -sceneRenderFilter 0\n -displayMode \"centerEye\" \n -viewColor 0 0 0 1 \n -useCustomBackground 1\n $editorName;\n stereoCameraView -e -viewSelected 0 $editorName;\n stereoCameraView -e \n -pluginObjects \"gpuCacheDisplayFilter\" 1 \n $editorName;\n\t\t}\n\t} else {\n\t\t$label = `panel -q -label $panelName`;\n\t\tscriptedPanel -edit -l (localizedPanelLabel(\"Stereo\")) -mbv $menusOkayInPanels $panelName;\nstring $editorName = ($panelName+\"Editor\");\n stereoCameraView -e \n -camera \"persp\" \n -useInteractiveMode 0\n -displayLights \"default\" \n" - + " -displayAppearance \"smoothShaded\" \n -activeOnly 0\n -ignorePanZoom 0\n -wireframeOnShaded 0\n -headsUpDisplay 1\n -holdOuts 1\n -selectionHiliteDisplay 1\n -useDefaultMaterial 0\n -bufferMode \"double\" \n -twoSidedLighting 0\n -backfaceCulling 0\n -xray 0\n -jointXray 0\n -activeComponentsXray 0\n -displayTextures 0\n -smoothWireframe 0\n -lineWidth 1\n -textureAnisotropic 0\n -textureHilight 1\n -textureSampling 2\n -textureDisplay \"modulate\" \n -textureMaxSize 32768\n -fogging 0\n -fogSource \"fragment\" \n -fogMode \"linear\" \n -fogStart 0\n -fogEnd 100\n -fogDensity 0.1\n -fogColor 0.5 0.5 0.5 1 \n -depthOfFieldPreview 1\n" - + " -maxConstantTransparency 1\n -objectFilterShowInHUD 1\n -isFiltered 0\n -colorResolution 4 4 \n -bumpResolution 4 4 \n -textureCompression 0\n -transparencyAlgorithm \"frontAndBackCull\" \n -transpInShadows 0\n -cullingOverride \"none\" \n -lowQualityLighting 0\n -maximumNumHardwareLights 0\n -occlusionCulling 0\n -shadingModel 0\n -useBaseRenderer 0\n -useReducedRenderer 0\n -smallObjectCulling 0\n -smallObjectThreshold -1 \n -interactiveDisableShadows 0\n -interactiveBackFaceCull 0\n -sortTransparent 1\n -nurbsCurves 1\n -nurbsSurfaces 1\n -polymeshes 1\n -subdivSurfaces 1\n -planes 1\n -lights 1\n -cameras 1\n -controlVertices 1\n" - + " -hulls 1\n -grid 1\n -imagePlane 1\n -joints 1\n -ikHandles 1\n -deformers 1\n -dynamics 1\n -particleInstancers 1\n -fluids 1\n -hairSystems 1\n -follicles 1\n -nCloths 1\n -nParticles 1\n -nRigids 1\n -dynamicConstraints 1\n -locators 1\n -manipulators 1\n -pluginShapes 1\n -dimensions 1\n -handles 1\n -pivots 1\n -textures 1\n -strokes 1\n -motionTrails 1\n -clipGhosts 1\n -greasePencils 1\n -shadows 0\n -captureSequenceNumber -1\n -width 0\n -height 0\n -sceneRenderFilter 0\n -displayMode \"centerEye\" \n -viewColor 0 0 0 1 \n -useCustomBackground 1\n" - + " $editorName;\n stereoCameraView -e -viewSelected 0 $editorName;\n stereoCameraView -e \n -pluginObjects \"gpuCacheDisplayFilter\" 1 \n $editorName;\n\t\tif (!$useSceneConfig) {\n\t\t\tpanel -e -l $label $panelName;\n\t\t}\n\t}\n\n\n\t$panelName = `sceneUIReplacement -getNextScriptedPanel \"hyperShadePanel\" (localizedPanelLabel(\"Hypershade\")) `;\n\tif (\"\" == $panelName) {\n\t\tif ($useSceneConfig) {\n\t\t\t$panelName = `scriptedPanel -unParent -type \"hyperShadePanel\" -l (localizedPanelLabel(\"Hypershade\")) -mbv $menusOkayInPanels `;\n\t\t}\n\t} else {\n\t\t$label = `panel -q -label $panelName`;\n\t\tscriptedPanel -edit -l (localizedPanelLabel(\"Hypershade\")) -mbv $menusOkayInPanels $panelName;\n\t\tif (!$useSceneConfig) {\n\t\t\tpanel -e -l $label $panelName;\n\t\t}\n\t}\n\n\n\t$panelName = `sceneUIReplacement -getNextScriptedPanel \"nodeEditorPanel\" (localizedPanelLabel(\"Node Editor\")) `;\n\tif (\"\" == $panelName) {\n\t\tif ($useSceneConfig) {\n\t\t\t$panelName = `scriptedPanel -unParent -type \"nodeEditorPanel\" -l (localizedPanelLabel(\"Node Editor\")) -mbv $menusOkayInPanels `;\n" - + "\n\t\t\t$editorName = ($panelName+\"NodeEditorEd\");\n nodeEditor -e \n -allAttributes 0\n -allNodes 0\n -autoSizeNodes 1\n -consistentNameSize 1\n -createNodeCommand \"nodeEdCreateNodeCommand\" \n -defaultPinnedState 0\n -additiveGraphingMode 0\n -settingsChangedCallback \"nodeEdSyncControls\" \n -traversalDepthLimit -1\n -keyPressCommand \"nodeEdKeyPressCommand\" \n -nodeTitleMode \"name\" \n -gridSnap 0\n -gridVisibility 1\n -popupMenuScript \"nodeEdBuildPanelMenus\" \n -showNamespace 1\n -showShapes 1\n -showSGShapes 0\n -showTransforms 1\n -useAssets 1\n -syncedSelection 1\n -extendToShapes 1\n -activeTab -1\n -editorMode \"default\" \n $editorName;\n\t\t}\n\t} else {\n\t\t$label = `panel -q -label $panelName`;\n" - + "\t\tscriptedPanel -edit -l (localizedPanelLabel(\"Node Editor\")) -mbv $menusOkayInPanels $panelName;\n\n\t\t\t$editorName = ($panelName+\"NodeEditorEd\");\n nodeEditor -e \n -allAttributes 0\n -allNodes 0\n -autoSizeNodes 1\n -consistentNameSize 1\n -createNodeCommand \"nodeEdCreateNodeCommand\" \n -defaultPinnedState 0\n -additiveGraphingMode 0\n -settingsChangedCallback \"nodeEdSyncControls\" \n -traversalDepthLimit -1\n -keyPressCommand \"nodeEdKeyPressCommand\" \n -nodeTitleMode \"name\" \n -gridSnap 0\n -gridVisibility 1\n -popupMenuScript \"nodeEdBuildPanelMenus\" \n -showNamespace 1\n -showShapes 1\n -showSGShapes 0\n -showTransforms 1\n -useAssets 1\n -syncedSelection 1\n -extendToShapes 1\n -activeTab -1\n -editorMode \"default\" \n" - + " $editorName;\n\t\tif (!$useSceneConfig) {\n\t\t\tpanel -e -l $label $panelName;\n\t\t}\n\t}\n\n\n\tif ($useSceneConfig) {\n string $configName = `getPanel -cwl (localizedPanelLabel(\"Current Layout\"))`;\n if (\"\" != $configName) {\n\t\t\tpanelConfiguration -edit -label (localizedPanelLabel(\"Current Layout\")) \n\t\t\t\t-defaultImage \"\"\n\t\t\t\t-image \"\"\n\t\t\t\t-sc false\n\t\t\t\t-configString \"global string $gMainPane; paneLayout -e -cn \\\"left3\\\" -ps 1 78 78 -ps 2 22 100 -ps 3 78 22 $gMainPane;\"\n\t\t\t\t-removeAllPanels\n\t\t\t\t-ap true\n\t\t\t\t\t(localizedPanelLabel(\"Persp View\")) \n\t\t\t\t\t\"modelPanel\"\n" - + "\t\t\t\t\t\"$panelName = `modelPanel -unParent -l (localizedPanelLabel(\\\"Persp View\\\")) -mbv $menusOkayInPanels `;\\n$editorName = $panelName;\\nmodelEditor -e \\n -cam `findStartUpCamera persp` \\n -useInteractiveMode 0\\n -displayLights \\\"default\\\" \\n -displayAppearance \\\"smoothShaded\\\" \\n -activeOnly 0\\n -ignorePanZoom 0\\n -wireframeOnShaded 0\\n -headsUpDisplay 1\\n -holdOuts 1\\n -selectionHiliteDisplay 1\\n -useDefaultMaterial 0\\n -bufferMode \\\"double\\\" \\n -twoSidedLighting 0\\n -backfaceCulling 0\\n -xray 0\\n -jointXray 0\\n -activeComponentsXray 0\\n -displayTextures 0\\n -smoothWireframe 0\\n -lineWidth 1\\n -textureAnisotropic 0\\n -textureHilight 1\\n -textureSampling 2\\n -textureDisplay \\\"modulate\\\" \\n -textureMaxSize 32768\\n -fogging 0\\n -fogSource \\\"fragment\\\" \\n -fogMode \\\"linear\\\" \\n -fogStart 0\\n -fogEnd 100\\n -fogDensity 0.1\\n -fogColor 0.5 0.5 0.5 1 \\n -depthOfFieldPreview 1\\n -maxConstantTransparency 1\\n -rendererName \\\"vp2Renderer\\\" \\n -objectFilterShowInHUD 1\\n -isFiltered 0\\n -colorResolution 256 256 \\n -bumpResolution 512 512 \\n -textureCompression 0\\n -transparencyAlgorithm \\\"frontAndBackCull\\\" \\n -transpInShadows 0\\n -cullingOverride \\\"none\\\" \\n -lowQualityLighting 0\\n -maximumNumHardwareLights 1\\n -occlusionCulling 0\\n -shadingModel 0\\n -useBaseRenderer 0\\n -useReducedRenderer 0\\n -smallObjectCulling 0\\n -smallObjectThreshold -1 \\n -interactiveDisableShadows 0\\n -interactiveBackFaceCull 0\\n -sortTransparent 1\\n -nurbsCurves 1\\n -nurbsSurfaces 1\\n -polymeshes 1\\n -subdivSurfaces 1\\n -planes 1\\n -lights 1\\n -cameras 1\\n -controlVertices 1\\n -hulls 1\\n -grid 1\\n -imagePlane 1\\n -joints 1\\n -ikHandles 1\\n -deformers 1\\n -dynamics 1\\n -particleInstancers 1\\n -fluids 1\\n -hairSystems 1\\n -follicles 1\\n -nCloths 1\\n -nParticles 1\\n -nRigids 1\\n -dynamicConstraints 1\\n -locators 1\\n -manipulators 1\\n -pluginShapes 1\\n -dimensions 1\\n -handles 1\\n -pivots 1\\n -textures 1\\n -strokes 1\\n -motionTrails 1\\n -clipGhosts 1\\n -greasePencils 1\\n -shadows 0\\n -captureSequenceNumber -1\\n -width 1135\\n -height 740\\n -sceneRenderFilter 0\\n $editorName;\\nmodelEditor -e -viewSelected 0 $editorName;\\nmodelEditor -e \\n -pluginObjects \\\"gpuCacheDisplayFilter\\\" 1 \\n $editorName\"\n" - + "\t\t\t\t\t\"modelPanel -edit -l (localizedPanelLabel(\\\"Persp View\\\")) -mbv $menusOkayInPanels $panelName;\\n$editorName = $panelName;\\nmodelEditor -e \\n -cam `findStartUpCamera persp` \\n -useInteractiveMode 0\\n -displayLights \\\"default\\\" \\n -displayAppearance \\\"smoothShaded\\\" \\n -activeOnly 0\\n -ignorePanZoom 0\\n -wireframeOnShaded 0\\n -headsUpDisplay 1\\n -holdOuts 1\\n -selectionHiliteDisplay 1\\n -useDefaultMaterial 0\\n -bufferMode \\\"double\\\" \\n -twoSidedLighting 0\\n -backfaceCulling 0\\n -xray 0\\n -jointXray 0\\n -activeComponentsXray 0\\n -displayTextures 0\\n -smoothWireframe 0\\n -lineWidth 1\\n -textureAnisotropic 0\\n -textureHilight 1\\n -textureSampling 2\\n -textureDisplay \\\"modulate\\\" \\n -textureMaxSize 32768\\n -fogging 0\\n -fogSource \\\"fragment\\\" \\n -fogMode \\\"linear\\\" \\n -fogStart 0\\n -fogEnd 100\\n -fogDensity 0.1\\n -fogColor 0.5 0.5 0.5 1 \\n -depthOfFieldPreview 1\\n -maxConstantTransparency 1\\n -rendererName \\\"vp2Renderer\\\" \\n -objectFilterShowInHUD 1\\n -isFiltered 0\\n -colorResolution 256 256 \\n -bumpResolution 512 512 \\n -textureCompression 0\\n -transparencyAlgorithm \\\"frontAndBackCull\\\" \\n -transpInShadows 0\\n -cullingOverride \\\"none\\\" \\n -lowQualityLighting 0\\n -maximumNumHardwareLights 1\\n -occlusionCulling 0\\n -shadingModel 0\\n -useBaseRenderer 0\\n -useReducedRenderer 0\\n -smallObjectCulling 0\\n -smallObjectThreshold -1 \\n -interactiveDisableShadows 0\\n -interactiveBackFaceCull 0\\n -sortTransparent 1\\n -nurbsCurves 1\\n -nurbsSurfaces 1\\n -polymeshes 1\\n -subdivSurfaces 1\\n -planes 1\\n -lights 1\\n -cameras 1\\n -controlVertices 1\\n -hulls 1\\n -grid 1\\n -imagePlane 1\\n -joints 1\\n -ikHandles 1\\n -deformers 1\\n -dynamics 1\\n -particleInstancers 1\\n -fluids 1\\n -hairSystems 1\\n -follicles 1\\n -nCloths 1\\n -nParticles 1\\n -nRigids 1\\n -dynamicConstraints 1\\n -locators 1\\n -manipulators 1\\n -pluginShapes 1\\n -dimensions 1\\n -handles 1\\n -pivots 1\\n -textures 1\\n -strokes 1\\n -motionTrails 1\\n -clipGhosts 1\\n -greasePencils 1\\n -shadows 0\\n -captureSequenceNumber -1\\n -width 1135\\n -height 740\\n -sceneRenderFilter 0\\n $editorName;\\nmodelEditor -e -viewSelected 0 $editorName;\\nmodelEditor -e \\n -pluginObjects \\\"gpuCacheDisplayFilter\\\" 1 \\n $editorName\"\n" - + "\t\t\t\t-ap false\n\t\t\t\t\t(localizedPanelLabel(\"Outliner\")) \n\t\t\t\t\t\"outlinerPanel\"\n\t\t\t\t\t\"$panelName = `outlinerPanel -unParent -l (localizedPanelLabel(\\\"Outliner\\\")) -mbv $menusOkayInPanels `;\\n$editorName = $panelName;\\noutlinerEditor -e \\n -showShapes 0\\n -showAssignedMaterials 0\\n -showReferenceNodes 1\\n -showReferenceMembers 1\\n -showAttributes 0\\n -showConnected 0\\n -showAnimCurvesOnly 0\\n -showMuteInfo 0\\n -organizeByLayer 1\\n -showAnimLayerWeight 1\\n -autoExpandLayers 1\\n -autoExpand 0\\n -showDagOnly 1\\n -showAssets 1\\n -showContainedOnly 1\\n -showPublishedAsConnected 0\\n -showContainerContents 1\\n -ignoreDagHierarchy 0\\n -expandConnections 0\\n -showUpstreamCurves 1\\n -showUnitlessCurves 1\\n -showCompounds 1\\n -showLeafs 1\\n -showNumericAttrsOnly 0\\n -highlightActive 1\\n -autoSelectNewObjects 0\\n -doNotSelectNewObjects 0\\n -dropIsParent 1\\n -transmitFilters 0\\n -setFilter \\\"defaultSetFilter\\\" \\n -showSetMembers 1\\n -allowMultiSelection 1\\n -alwaysToggleSelect 0\\n -directSelect 0\\n -isSet 0\\n -isSetMember 0\\n -displayMode \\\"DAG\\\" \\n -expandObjects 0\\n -setsIgnoreFilters 1\\n -containersIgnoreFilters 0\\n -editAttrName 0\\n -showAttrValues 0\\n -highlightSecondary 0\\n -showUVAttrsOnly 0\\n -showTextureNodesOnly 0\\n -attrAlphaOrder \\\"default\\\" \\n -animLayerFilterOptions \\\"allAffecting\\\" \\n -sortOrder \\\"none\\\" \\n -longNames 0\\n -niceNames 1\\n -showNamespace 1\\n -showPinIcons 0\\n -mapMotionTrails 0\\n -ignoreHiddenAttribute 0\\n -ignoreOutlinerColor 0\\n -renderFilterVisible 0\\n -renderFilterIndex 0\\n -selectionOrder \\\"chronological\\\" \\n -expandAttribute 0\\n $editorName\"\n" - + "\t\t\t\t\t\"outlinerPanel -edit -l (localizedPanelLabel(\\\"Outliner\\\")) -mbv $menusOkayInPanels $panelName;\\n$editorName = $panelName;\\noutlinerEditor -e \\n -showShapes 0\\n -showAssignedMaterials 0\\n -showReferenceNodes 1\\n -showReferenceMembers 1\\n -showAttributes 0\\n -showConnected 0\\n -showAnimCurvesOnly 0\\n -showMuteInfo 0\\n -organizeByLayer 1\\n -showAnimLayerWeight 1\\n -autoExpandLayers 1\\n -autoExpand 0\\n -showDagOnly 1\\n -showAssets 1\\n -showContainedOnly 1\\n -showPublishedAsConnected 0\\n -showContainerContents 1\\n -ignoreDagHierarchy 0\\n -expandConnections 0\\n -showUpstreamCurves 1\\n -showUnitlessCurves 1\\n -showCompounds 1\\n -showLeafs 1\\n -showNumericAttrsOnly 0\\n -highlightActive 1\\n -autoSelectNewObjects 0\\n -doNotSelectNewObjects 0\\n -dropIsParent 1\\n -transmitFilters 0\\n -setFilter \\\"defaultSetFilter\\\" \\n -showSetMembers 1\\n -allowMultiSelection 1\\n -alwaysToggleSelect 0\\n -directSelect 0\\n -isSet 0\\n -isSetMember 0\\n -displayMode \\\"DAG\\\" \\n -expandObjects 0\\n -setsIgnoreFilters 1\\n -containersIgnoreFilters 0\\n -editAttrName 0\\n -showAttrValues 0\\n -highlightSecondary 0\\n -showUVAttrsOnly 0\\n -showTextureNodesOnly 0\\n -attrAlphaOrder \\\"default\\\" \\n -animLayerFilterOptions \\\"allAffecting\\\" \\n -sortOrder \\\"none\\\" \\n -longNames 0\\n -niceNames 1\\n -showNamespace 1\\n -showPinIcons 0\\n -mapMotionTrails 0\\n -ignoreHiddenAttribute 0\\n -ignoreOutlinerColor 0\\n -renderFilterVisible 0\\n -renderFilterIndex 0\\n -selectionOrder \\\"chronological\\\" \\n -expandAttribute 0\\n $editorName\"\n" - + "\t\t\t\t-ap false\n\t\t\t\t\t(localizedPanelLabel(\"Script Editor\")) \n\t\t\t\t\t\"scriptedPanel\"\n\t\t\t\t\t\"$panelName = `scriptedPanel -unParent -type \\\"scriptEditorPanel\\\" -l (localizedPanelLabel(\\\"Script Editor\\\")) -mbv $menusOkayInPanels `\"\n\t\t\t\t\t\"scriptedPanel -edit -l (localizedPanelLabel(\\\"Script Editor\\\")) -mbv $menusOkayInPanels $panelName\"\n\t\t\t\t$configName;\n\n setNamedPanelLayout (localizedPanelLabel(\"Current Layout\"));\n }\n\n panelHistory -e -clear mainPanelHistory;\n setFocus `paneLayout -q -p1 $gMainPane`;\n sceneUIReplacement -deleteRemaining;\n sceneUIReplacement -clear;\n\t}\n\n\ngrid -spacing 5 -size 12 -divisions 5 -displayAxes yes -displayGridLines yes -displayDivisionLines yes -displayPerspectiveLabels no -displayOrthographicLabels no -displayAxesBold yes -perspectiveLabelPosition axis -orthographicLabelPosition edge;\nviewManip -drawCompass 0 -compassAngle 0 -frontParameters \"\" -homeParameters \"\" -selectionLockParameters \"\";\n}\n"); - setAttr ".st" 3; -createNode script -n "sceneConfigurationScriptNode"; - rename -uid "24F57C12-43B1-FD41-6848-B79093A1ABF8"; - setAttr ".b" -type "string" "playbackOptions -min 1 -max 120 -ast 1 -aet 200 "; - setAttr ".st" 6; select -ne :time1; setAttr ".o" 1; setAttr ".unw" 1; @@ -10085,6 +10068,7 @@ select -ne :hardwareRenderingGlobals; setAttr ".otfva" -type "Int32Array" 22 0 1 1 1 1 1 1 1 1 0 0 0 0 0 0 0 0 0 0 0 0 0 ; + setAttr ".fprt" yes; select -ne :renderPartition; setAttr -s 2 ".st"; select -ne :renderGlobalsList1; @@ -10093,6 +10077,7 @@ select -ne :defaultShaderList1; select -ne :postProcessList1; setAttr -s 2 ".p"; select -ne :defaultRenderingList1; + setAttr -s 2 ".r"; select -ne :initialShadingGroup; setAttr ".ro" yes; select -ne :initialParticleSE; @@ -10102,45 +10087,47 @@ select -ne :defaultResolution; select -ne :hardwareRenderGlobals; setAttr ".ctrs" 256; setAttr ".btrs" 512; +select -ne :ikSystem; + setAttr -s 4 ".sol"; connectAttr "spine_C0_root_st_profile.o" "spine_C0_root.st_profile"; connectAttr "spine_C0_root_sq_profile.o" "spine_C0_root.sq_profile"; connectAttr "neck_C0_root_st_profile.o" "neck_C0_root.st_profile"; connectAttr "neck_C0_root_sq_profile.o" "neck_C0_root.sq_profile"; -connectAttr "mgear_curveCns160.og[0]" "|guide|local_C0_root|body_C0_root|spine_C0_root|spine_C0_eff|neck_C0_root|neck_C0_neck|neck_C0_head|mouth_C0_root|mouth_C0_rotcenter|mouth_C0_lipup|mouth_C0_crv|mouth_C0_crvShape.cr" +connectAttr "mgear_curveCns160.og[0]" "|guide|global_C0_root|local_C0_root|body_C0_root|spine_C0_root|spine_C0_eff|neck_C0_root|neck_C0_neck|neck_C0_head|mouth_C0_root|mouth_C0_rotcenter|mouth_C0_lipup|mouth_C0_crv|mouth_C0_crvShape.cr" ; -connectAttr "tweak160.pl[0].cp[0]" "|guide|local_C0_root|body_C0_root|spine_C0_root|spine_C0_eff|neck_C0_root|neck_C0_neck|neck_C0_head|mouth_C0_root|mouth_C0_rotcenter|mouth_C0_lipup|mouth_C0_crv|mouth_C0_crvShape.twl" +connectAttr "tweak160.pl[0].cp[0]" "|guide|global_C0_root|local_C0_root|body_C0_root|spine_C0_root|spine_C0_eff|neck_C0_root|neck_C0_neck|neck_C0_head|mouth_C0_root|mouth_C0_rotcenter|mouth_C0_lipup|mouth_C0_crv|mouth_C0_crvShape.twl" ; -connectAttr "mgear_curveCns160GroupId.id" "|guide|local_C0_root|body_C0_root|spine_C0_root|spine_C0_eff|neck_C0_root|neck_C0_neck|neck_C0_head|mouth_C0_root|mouth_C0_rotcenter|mouth_C0_lipup|mouth_C0_crv|mouth_C0_crvShape.iog.og[0].gid" +connectAttr "mgear_curveCns160GroupId.id" "|guide|global_C0_root|local_C0_root|body_C0_root|spine_C0_root|spine_C0_eff|neck_C0_root|neck_C0_neck|neck_C0_head|mouth_C0_root|mouth_C0_rotcenter|mouth_C0_lipup|mouth_C0_crv|mouth_C0_crvShape.iog.og[0].gid" ; -connectAttr "mgear_curveCns160Set.mwc" "|guide|local_C0_root|body_C0_root|spine_C0_root|spine_C0_eff|neck_C0_root|neck_C0_neck|neck_C0_head|mouth_C0_root|mouth_C0_rotcenter|mouth_C0_lipup|mouth_C0_crv|mouth_C0_crvShape.iog.og[0].gco" +connectAttr "mgear_curveCns160Set.mwc" "|guide|global_C0_root|local_C0_root|body_C0_root|spine_C0_root|spine_C0_eff|neck_C0_root|neck_C0_neck|neck_C0_head|mouth_C0_root|mouth_C0_rotcenter|mouth_C0_lipup|mouth_C0_crv|mouth_C0_crvShape.iog.og[0].gco" ; -connectAttr "groupId320.id" "|guide|local_C0_root|body_C0_root|spine_C0_root|spine_C0_eff|neck_C0_root|neck_C0_neck|neck_C0_head|mouth_C0_root|mouth_C0_rotcenter|mouth_C0_lipup|mouth_C0_crv|mouth_C0_crvShape.iog.og[1].gid" +connectAttr "groupId320.id" "|guide|global_C0_root|local_C0_root|body_C0_root|spine_C0_root|spine_C0_eff|neck_C0_root|neck_C0_neck|neck_C0_head|mouth_C0_root|mouth_C0_rotcenter|mouth_C0_lipup|mouth_C0_crv|mouth_C0_crvShape.iog.og[1].gid" ; -connectAttr "tweakSet160.mwc" "|guide|local_C0_root|body_C0_root|spine_C0_root|spine_C0_eff|neck_C0_root|neck_C0_neck|neck_C0_head|mouth_C0_root|mouth_C0_rotcenter|mouth_C0_lipup|mouth_C0_crv|mouth_C0_crvShape.iog.og[1].gco" +connectAttr "tweakSet160.mwc" "|guide|global_C0_root|local_C0_root|body_C0_root|spine_C0_root|spine_C0_eff|neck_C0_root|neck_C0_neck|neck_C0_head|mouth_C0_root|mouth_C0_rotcenter|mouth_C0_lipup|mouth_C0_crv|mouth_C0_crvShape.iog.og[1].gco" ; -connectAttr "mgear_curveCns161.og[0]" "|guide|local_C0_root|body_C0_root|spine_C0_root|spine_C0_eff|neck_C0_root|neck_C0_neck|neck_C0_head|mouth_C0_root|mouth_C0_rotcenter|mouth_C0_liplow|mouth_C0_crv|mouth_C0_crvShape.cr" +connectAttr "mgear_curveCns161.og[0]" "|guide|global_C0_root|local_C0_root|body_C0_root|spine_C0_root|spine_C0_eff|neck_C0_root|neck_C0_neck|neck_C0_head|mouth_C0_root|mouth_C0_rotcenter|mouth_C0_liplow|mouth_C0_crv|mouth_C0_crvShape.cr" ; -connectAttr "tweak161.pl[0].cp[0]" "|guide|local_C0_root|body_C0_root|spine_C0_root|spine_C0_eff|neck_C0_root|neck_C0_neck|neck_C0_head|mouth_C0_root|mouth_C0_rotcenter|mouth_C0_liplow|mouth_C0_crv|mouth_C0_crvShape.twl" +connectAttr "tweak161.pl[0].cp[0]" "|guide|global_C0_root|local_C0_root|body_C0_root|spine_C0_root|spine_C0_eff|neck_C0_root|neck_C0_neck|neck_C0_head|mouth_C0_root|mouth_C0_rotcenter|mouth_C0_liplow|mouth_C0_crv|mouth_C0_crvShape.twl" ; -connectAttr "mgear_curveCns161GroupId.id" "|guide|local_C0_root|body_C0_root|spine_C0_root|spine_C0_eff|neck_C0_root|neck_C0_neck|neck_C0_head|mouth_C0_root|mouth_C0_rotcenter|mouth_C0_liplow|mouth_C0_crv|mouth_C0_crvShape.iog.og[0].gid" +connectAttr "mgear_curveCns161GroupId.id" "|guide|global_C0_root|local_C0_root|body_C0_root|spine_C0_root|spine_C0_eff|neck_C0_root|neck_C0_neck|neck_C0_head|mouth_C0_root|mouth_C0_rotcenter|mouth_C0_liplow|mouth_C0_crv|mouth_C0_crvShape.iog.og[0].gid" ; -connectAttr "mgear_curveCns161Set.mwc" "|guide|local_C0_root|body_C0_root|spine_C0_root|spine_C0_eff|neck_C0_root|neck_C0_neck|neck_C0_head|mouth_C0_root|mouth_C0_rotcenter|mouth_C0_liplow|mouth_C0_crv|mouth_C0_crvShape.iog.og[0].gco" +connectAttr "mgear_curveCns161Set.mwc" "|guide|global_C0_root|local_C0_root|body_C0_root|spine_C0_root|spine_C0_eff|neck_C0_root|neck_C0_neck|neck_C0_head|mouth_C0_root|mouth_C0_rotcenter|mouth_C0_liplow|mouth_C0_crv|mouth_C0_crvShape.iog.og[0].gco" ; -connectAttr "groupId322.id" "|guide|local_C0_root|body_C0_root|spine_C0_root|spine_C0_eff|neck_C0_root|neck_C0_neck|neck_C0_head|mouth_C0_root|mouth_C0_rotcenter|mouth_C0_liplow|mouth_C0_crv|mouth_C0_crvShape.iog.og[1].gid" +connectAttr "groupId322.id" "|guide|global_C0_root|local_C0_root|body_C0_root|spine_C0_root|spine_C0_eff|neck_C0_root|neck_C0_neck|neck_C0_head|mouth_C0_root|mouth_C0_rotcenter|mouth_C0_liplow|mouth_C0_crv|mouth_C0_crvShape.iog.og[1].gid" ; -connectAttr "tweakSet161.mwc" "|guide|local_C0_root|body_C0_root|spine_C0_root|spine_C0_eff|neck_C0_root|neck_C0_neck|neck_C0_head|mouth_C0_root|mouth_C0_rotcenter|mouth_C0_liplow|mouth_C0_crv|mouth_C0_crvShape.iog.og[1].gco" +connectAttr "tweakSet161.mwc" "|guide|global_C0_root|local_C0_root|body_C0_root|spine_C0_root|spine_C0_eff|neck_C0_root|neck_C0_neck|neck_C0_head|mouth_C0_root|mouth_C0_rotcenter|mouth_C0_liplow|mouth_C0_crv|mouth_C0_crvShape.iog.og[1].gco" ; -connectAttr "mgear_curveCns159.og[0]" "|guide|local_C0_root|body_C0_root|spine_C0_root|spine_C0_eff|neck_C0_root|neck_C0_neck|neck_C0_head|mouth_C0_root|mouth_C0_crv|mouth_C0_crvShape.cr" +connectAttr "mgear_curveCns159.og[0]" "|guide|global_C0_root|local_C0_root|body_C0_root|spine_C0_root|spine_C0_eff|neck_C0_root|neck_C0_neck|neck_C0_head|mouth_C0_root|mouth_C0_crv|mouth_C0_crvShape.cr" ; -connectAttr "tweak159.pl[0].cp[0]" "|guide|local_C0_root|body_C0_root|spine_C0_root|spine_C0_eff|neck_C0_root|neck_C0_neck|neck_C0_head|mouth_C0_root|mouth_C0_crv|mouth_C0_crvShape.twl" +connectAttr "tweak159.pl[0].cp[0]" "|guide|global_C0_root|local_C0_root|body_C0_root|spine_C0_root|spine_C0_eff|neck_C0_root|neck_C0_neck|neck_C0_head|mouth_C0_root|mouth_C0_crv|mouth_C0_crvShape.twl" ; -connectAttr "mgear_curveCns159GroupId.id" "|guide|local_C0_root|body_C0_root|spine_C0_root|spine_C0_eff|neck_C0_root|neck_C0_neck|neck_C0_head|mouth_C0_root|mouth_C0_crv|mouth_C0_crvShape.iog.og[0].gid" +connectAttr "mgear_curveCns159GroupId.id" "|guide|global_C0_root|local_C0_root|body_C0_root|spine_C0_root|spine_C0_eff|neck_C0_root|neck_C0_neck|neck_C0_head|mouth_C0_root|mouth_C0_crv|mouth_C0_crvShape.iog.og[0].gid" ; -connectAttr "mgear_curveCns159Set.mwc" "|guide|local_C0_root|body_C0_root|spine_C0_root|spine_C0_eff|neck_C0_root|neck_C0_neck|neck_C0_head|mouth_C0_root|mouth_C0_crv|mouth_C0_crvShape.iog.og[0].gco" +connectAttr "mgear_curveCns159Set.mwc" "|guide|global_C0_root|local_C0_root|body_C0_root|spine_C0_root|spine_C0_eff|neck_C0_root|neck_C0_neck|neck_C0_head|mouth_C0_root|mouth_C0_crv|mouth_C0_crvShape.iog.og[0].gco" ; -connectAttr "groupId318.id" "|guide|local_C0_root|body_C0_root|spine_C0_root|spine_C0_eff|neck_C0_root|neck_C0_neck|neck_C0_head|mouth_C0_root|mouth_C0_crv|mouth_C0_crvShape.iog.og[1].gid" +connectAttr "groupId318.id" "|guide|global_C0_root|local_C0_root|body_C0_root|spine_C0_root|spine_C0_eff|neck_C0_root|neck_C0_neck|neck_C0_head|mouth_C0_root|mouth_C0_crv|mouth_C0_crvShape.iog.og[1].gid" ; -connectAttr "tweakSet159.mwc" "|guide|local_C0_root|body_C0_root|spine_C0_root|spine_C0_eff|neck_C0_root|neck_C0_neck|neck_C0_head|mouth_C0_root|mouth_C0_crv|mouth_C0_crvShape.iog.og[1].gco" +connectAttr "tweakSet159.mwc" "|guide|global_C0_root|local_C0_root|body_C0_root|spine_C0_root|spine_C0_eff|neck_C0_root|neck_C0_neck|neck_C0_head|mouth_C0_root|mouth_C0_crv|mouth_C0_crvShape.iog.og[1].gco" ; connectAttr "mgear_curveCns162.og[0]" "mouth_C0_crv7Shape.cr"; connectAttr "tweak162.pl[0].cp[0]" "mouth_C0_crv7Shape.twl"; @@ -10261,67 +10248,67 @@ connectAttr "mgear_curveCns165GroupId.id" "shoulder_L0_crvShape.iog.og[0].gid"; connectAttr "mgear_curveCns165Set.mwc" "shoulder_L0_crvShape.iog.og[0].gco"; connectAttr "groupId330.id" "shoulder_L0_crvShape.iog.og[1].gid"; connectAttr "tweakSet165.mwc" "shoulder_L0_crvShape.iog.og[1].gco"; -connectAttr "legFront_R0_root_st_profile1.o" "legFront_R0_root.st_profile"; -connectAttr "legFront_R0_root_sq_profile1.o" "legFront_R0_root.sq_profile"; -connectAttr "mgear_curveCns171.og[0]" "footFront_R0_crvShape.cr"; -connectAttr "tweak171.pl[0].cp[0]" "footFront_R0_crvShape.twl"; -connectAttr "mgear_curveCns171GroupId.id" "footFront_R0_crvShape.iog.og[0].gid"; -connectAttr "mgear_curveCns171Set.mwc" "footFront_R0_crvShape.iog.og[0].gco"; -connectAttr "groupId342.id" "footFront_R0_crvShape.iog.og[1].gid"; -connectAttr "tweakSet171.mwc" "footFront_R0_crvShape.iog.og[1].gco"; -connectAttr "mgear_curveCns172.og[0]" "footFront_R0_Shape1.cr"; -connectAttr "tweak172.pl[0].cp[0]" "footFront_R0_Shape1.twl"; -connectAttr "mgear_curveCns172GroupId.id" "footFront_R0_Shape1.iog.og[0].gid"; -connectAttr "mgear_curveCns172Set.mwc" "footFront_R0_Shape1.iog.og[0].gco"; -connectAttr "groupId344.id" "footFront_R0_Shape1.iog.og[1].gid"; -connectAttr "tweakSet172.mwc" "footFront_R0_Shape1.iog.og[1].gco"; -connectAttr "mgear_curveCns170.og[0]" "legFront_R0_crvShape1.cr"; -connectAttr "tweak170.pl[0].cp[0]" "legFront_R0_crvShape1.twl"; -connectAttr "mgear_curveCns170GroupId.id" "legFront_R0_crvShape1.iog.og[0].gid"; -connectAttr "mgear_curveCns170Set.mwc" "legFront_R0_crvShape1.iog.og[0].gco"; -connectAttr "groupId340.id" "legFront_R0_crvShape1.iog.og[1].gid"; -connectAttr "tweakSet170.mwc" "legFront_R0_crvShape1.iog.og[1].gco"; -connectAttr "shoulder_R0_blade_pointConstraint4.ctx" "shoulder_R0_blade.tx" -l on - ; -connectAttr "shoulder_R0_blade_pointConstraint4.cty" "shoulder_R0_blade.ty" -l on - ; -connectAttr "shoulder_R0_blade_pointConstraint4.ctz" "shoulder_R0_blade.tz" -l on - ; -connectAttr "shoulder_R0_blade_aimConstraint4.crx" "shoulder_R0_blade.rx" -l on; -connectAttr "shoulder_R0_blade_aimConstraint4.cry" "shoulder_R0_blade.ry" -l on; -connectAttr "shoulder_R0_blade_aimConstraint4.crz" "shoulder_R0_blade.rz" -l on; -connectAttr "shoulder_R0_blade.pim" "shoulder_R0_blade_aimConstraint4.cpim"; -connectAttr "shoulder_R0_blade.t" "shoulder_R0_blade_aimConstraint4.ct"; -connectAttr "shoulder_R0_blade.rp" "shoulder_R0_blade_aimConstraint4.crp"; -connectAttr "shoulder_R0_blade.rpt" "shoulder_R0_blade_aimConstraint4.crt"; -connectAttr "shoulder_R0_blade.ro" "shoulder_R0_blade_aimConstraint4.cro"; -connectAttr "shoulder_R0_0_loc.t" "shoulder_R0_blade_aimConstraint4.tg[0].tt"; -connectAttr "shoulder_R0_0_loc.rp" "shoulder_R0_blade_aimConstraint4.tg[0].trp"; -connectAttr "shoulder_R0_0_loc.rpt" "shoulder_R0_blade_aimConstraint4.tg[0].trt" - ; -connectAttr "shoulder_R0_0_loc.pm" "shoulder_R0_blade_aimConstraint4.tg[0].tpm"; -connectAttr "shoulder_R0_blade_aimConstraint4.w0" "shoulder_R0_blade_aimConstraint4.tg[0].tw" - ; -connectAttr "shoulder_R0_root.wm" "shoulder_R0_blade_aimConstraint4.wum"; -connectAttr "unitConversion31.o" "shoulder_R0_blade_aimConstraint4.ox"; -connectAttr "shoulder_R0_blade.pim" "shoulder_R0_blade_pointConstraint4.cpim"; -connectAttr "shoulder_R0_blade.rp" "shoulder_R0_blade_pointConstraint4.crp"; -connectAttr "shoulder_R0_blade.rpt" "shoulder_R0_blade_pointConstraint4.crt"; -connectAttr "shoulder_R0_root.t" "shoulder_R0_blade_pointConstraint4.tg[0].tt"; -connectAttr "shoulder_R0_root.rp" "shoulder_R0_blade_pointConstraint4.tg[0].trp" - ; -connectAttr "shoulder_R0_root.rpt" "shoulder_R0_blade_pointConstraint4.tg[0].trt" - ; -connectAttr "shoulder_R0_root.pm" "shoulder_R0_blade_pointConstraint4.tg[0].tpm" - ; -connectAttr "shoulder_R0_blade_pointConstraint4.w0" "shoulder_R0_blade_pointConstraint4.tg[0].tw" - ; -connectAttr "mgear_curveCns169.og[0]" "shoulder_R0_crvShape.cr"; -connectAttr "tweak169.pl[0].cp[0]" "shoulder_R0_crvShape.twl"; -connectAttr "mgear_curveCns169GroupId.id" "shoulder_R0_crvShape.iog.og[0].gid"; -connectAttr "mgear_curveCns169Set.mwc" "shoulder_R0_crvShape.iog.og[0].gco"; -connectAttr "groupId338.id" "shoulder_R0_crvShape.iog.og[1].gid"; -connectAttr "tweakSet169.mwc" "shoulder_R0_crvShape.iog.og[1].gco"; +connectAttr "legFront_R0_root_st_profile.o" "legFront_R0_root.st_profile"; +connectAttr "legFront_R0_root_sq_profile.o" "legFront_R0_root.sq_profile"; +connectAttr "mgear_curveCns181.og[0]" "footFront_R0_crvShape.cr"; +connectAttr "tweak181.pl[0].cp[0]" "footFront_R0_crvShape.twl"; +connectAttr "mgear_curveCns181GroupId.id" "footFront_R0_crvShape.iog.og[0].gid"; +connectAttr "mgear_curveCns181Set.mwc" "footFront_R0_crvShape.iog.og[0].gco"; +connectAttr "groupId362.id" "footFront_R0_crvShape.iog.og[1].gid"; +connectAttr "tweakSet181.mwc" "footFront_R0_crvShape.iog.og[1].gco"; +connectAttr "mgear_curveCns182.og[0]" "footFront_R0_Shape1.cr"; +connectAttr "tweak182.pl[0].cp[0]" "footFront_R0_Shape1.twl"; +connectAttr "mgear_curveCns182GroupId.id" "footFront_R0_Shape1.iog.og[0].gid"; +connectAttr "mgear_curveCns182Set.mwc" "footFront_R0_Shape1.iog.og[0].gco"; +connectAttr "groupId364.id" "footFront_R0_Shape1.iog.og[1].gid"; +connectAttr "tweakSet182.mwc" "footFront_R0_Shape1.iog.og[1].gco"; +connectAttr "mgear_curveCns180.og[0]" "legFront_R0_crvShape1.cr"; +connectAttr "tweak180.pl[0].cp[0]" "legFront_R0_crvShape1.twl"; +connectAttr "mgear_curveCns180GroupId.id" "legFront_R0_crvShape1.iog.og[0].gid"; +connectAttr "mgear_curveCns180Set.mwc" "legFront_R0_crvShape1.iog.og[0].gco"; +connectAttr "groupId360.id" "legFront_R0_crvShape1.iog.og[1].gid"; +connectAttr "tweakSet180.mwc" "legFront_R0_crvShape1.iog.og[1].gco"; +connectAttr "shoulder_R0_blade_pointConstraint1.ctx" "shoulder_R0_blade.tx" -l on + ; +connectAttr "shoulder_R0_blade_pointConstraint1.cty" "shoulder_R0_blade.ty" -l on + ; +connectAttr "shoulder_R0_blade_pointConstraint1.ctz" "shoulder_R0_blade.tz" -l on + ; +connectAttr "shoulder_R0_blade_aimConstraint1.crx" "shoulder_R0_blade.rx" -l on; +connectAttr "shoulder_R0_blade_aimConstraint1.cry" "shoulder_R0_blade.ry" -l on; +connectAttr "shoulder_R0_blade_aimConstraint1.crz" "shoulder_R0_blade.rz" -l on; +connectAttr "shoulder_R0_blade.pim" "shoulder_R0_blade_aimConstraint1.cpim"; +connectAttr "shoulder_R0_blade.t" "shoulder_R0_blade_aimConstraint1.ct"; +connectAttr "shoulder_R0_blade.rp" "shoulder_R0_blade_aimConstraint1.crp"; +connectAttr "shoulder_R0_blade.rpt" "shoulder_R0_blade_aimConstraint1.crt"; +connectAttr "shoulder_R0_blade.ro" "shoulder_R0_blade_aimConstraint1.cro"; +connectAttr "shoulder_R0_0_loc.t" "shoulder_R0_blade_aimConstraint1.tg[0].tt"; +connectAttr "shoulder_R0_0_loc.rp" "shoulder_R0_blade_aimConstraint1.tg[0].trp"; +connectAttr "shoulder_R0_0_loc.rpt" "shoulder_R0_blade_aimConstraint1.tg[0].trt" + ; +connectAttr "shoulder_R0_0_loc.pm" "shoulder_R0_blade_aimConstraint1.tg[0].tpm"; +connectAttr "shoulder_R0_blade_aimConstraint1.w0" "shoulder_R0_blade_aimConstraint1.tg[0].tw" + ; +connectAttr "shoulder_R0_root.wm" "shoulder_R0_blade_aimConstraint1.wum"; +connectAttr "unitConversion31.o" "shoulder_R0_blade_aimConstraint1.ox"; +connectAttr "shoulder_R0_blade.pim" "shoulder_R0_blade_pointConstraint1.cpim"; +connectAttr "shoulder_R0_blade.rp" "shoulder_R0_blade_pointConstraint1.crp"; +connectAttr "shoulder_R0_blade.rpt" "shoulder_R0_blade_pointConstraint1.crt"; +connectAttr "shoulder_R0_root.t" "shoulder_R0_blade_pointConstraint1.tg[0].tt"; +connectAttr "shoulder_R0_root.rp" "shoulder_R0_blade_pointConstraint1.tg[0].trp" + ; +connectAttr "shoulder_R0_root.rpt" "shoulder_R0_blade_pointConstraint1.tg[0].trt" + ; +connectAttr "shoulder_R0_root.pm" "shoulder_R0_blade_pointConstraint1.tg[0].tpm" + ; +connectAttr "shoulder_R0_blade_pointConstraint1.w0" "shoulder_R0_blade_pointConstraint1.tg[0].tw" + ; +connectAttr "mgear_curveCns179.og[0]" "shoulder_R0_crvShape.cr"; +connectAttr "tweak179.pl[0].cp[0]" "shoulder_R0_crvShape.twl"; +connectAttr "mgear_curveCns179GroupId.id" "shoulder_R0_crvShape.iog.og[0].gid"; +connectAttr "mgear_curveCns179Set.mwc" "shoulder_R0_crvShape.iog.og[0].gco"; +connectAttr "groupId358.id" "shoulder_R0_crvShape.iog.og[1].gid"; +connectAttr "tweakSet179.mwc" "shoulder_R0_crvShape.iog.og[1].gco"; connectAttr "spine_C0_blade_pointConstraint7.ctx" "spine_C0_blade.tx" -l on; connectAttr "spine_C0_blade_pointConstraint7.cty" "spine_C0_blade.ty" -l on; connectAttr "spine_C0_blade_pointConstraint7.ctz" "spine_C0_blade.tz" -l on; @@ -10376,8 +10363,8 @@ connectAttr "mgear_curveCns173GroupId.id" "legBack_L0_crvShape1.iog.og[0].gid"; connectAttr "mgear_curveCns173Set.mwc" "legBack_L0_crvShape1.iog.og[0].gco"; connectAttr "groupId346.id" "legBack_L0_crvShape1.iog.og[1].gid"; connectAttr "tweakSet173.mwc" "legBack_L0_crvShape1.iog.og[1].gco"; -connectAttr "legBack_R0_root_st_profile1.o" "legBack_R0_root.st_profile"; -connectAttr "legBack_R0_root_sq_profile1.o" "legBack_R0_root.sq_profile"; +connectAttr "legBack_R0_root_st_profile.o" "legBack_R0_root.st_profile"; +connectAttr "legBack_R0_root_sq_profile.o" "legBack_R0_root.sq_profile"; connectAttr "mgear_curveCns177.og[0]" "footBack_R0_crvShape.cr"; connectAttr "tweak177.pl[0].cp[0]" "footBack_R0_crvShape.twl"; connectAttr "mgear_curveCns177GroupId.id" "footBack_R0_crvShape.iog.og[0].gid"; @@ -10396,133 +10383,74 @@ connectAttr "mgear_curveCns176GroupId.id" "legBack_R0_crvShape1.iog.og[0].gid"; connectAttr "mgear_curveCns176Set.mwc" "legBack_R0_crvShape1.iog.og[0].gco"; connectAttr "groupId352.id" "legBack_R0_crvShape1.iog.og[1].gid"; connectAttr "tweakSet176.mwc" "legBack_R0_crvShape1.iog.og[1].gco"; -relationship "link" ":lightLinker1" ":initialShadingGroup.message" ":defaultLightSet.message"; -relationship "link" ":lightLinker1" ":initialParticleSE.message" ":defaultLightSet.message"; -relationship "shadowLink" ":lightLinker1" ":initialShadingGroup.message" ":defaultLightSet.message"; -relationship "shadowLink" ":lightLinker1" ":initialParticleSE.message" ":defaultLightSet.message"; -connectAttr "layerManager.dli[0]" "defaultLayer.id"; -connectAttr "renderLayerManager.rlmi[0]" "defaultRenderLayer.rlid"; -connectAttr "spine_C0_blade.bladeRollOffset" "unitConversion28.i"; -connectAttr "mgear_curveCns156GroupParts.og" "mgear_curveCns156.ip[0].ig"; -connectAttr "mgear_curveCns156GroupId.id" "mgear_curveCns156.ip[0].gi"; -connectAttr "spine_C0_root.wm" "mgear_curveCns156.inputs[0]"; -connectAttr "spine_C0_eff.wm" "mgear_curveCns156.inputs[1]"; -connectAttr "groupParts312.og" "tweak156.ip[0].ig"; -connectAttr "groupId312.id" "tweak156.ip[0].gi"; -connectAttr "mgear_curveCns156GroupId.msg" "mgear_curveCns156Set.gn" -na; -connectAttr "spine_C0_crvShape.iog.og[0]" "mgear_curveCns156Set.dsm" -na; -connectAttr "mgear_curveCns156.msg" "mgear_curveCns156Set.ub[0]"; -connectAttr "tweak156.og[0]" "mgear_curveCns156GroupParts.ig"; -connectAttr "mgear_curveCns156GroupId.id" "mgear_curveCns156GroupParts.gi"; -connectAttr "groupId312.msg" "tweakSet156.gn" -na; -connectAttr "spine_C0_crvShape.iog.og[1]" "tweakSet156.dsm" -na; -connectAttr "tweak156.msg" "tweakSet156.ub[0]"; -connectAttr "spine_C0_crvShapeOrig.ws" "groupParts312.ig"; -connectAttr "groupId312.id" "groupParts312.gi"; -connectAttr "neck_C0_blade.bladeRollOffset" "unitConversion29.i"; -connectAttr "mgear_curveCns157GroupParts.og" "mgear_curveCns157.ip[0].ig"; -connectAttr "mgear_curveCns157GroupId.id" "mgear_curveCns157.ip[0].gi"; -connectAttr "neck_C0_root.wm" "mgear_curveCns157.inputs[0]"; -connectAttr "neck_C0_tan0.wm" "mgear_curveCns157.inputs[1]"; -connectAttr "neck_C0_tan1.wm" "mgear_curveCns157.inputs[2]"; -connectAttr "neck_C0_neck.wm" "mgear_curveCns157.inputs[3]"; -connectAttr "groupParts314.og" "tweak157.ip[0].ig"; -connectAttr "groupId314.id" "tweak157.ip[0].gi"; -connectAttr "mgear_curveCns157GroupId.msg" "mgear_curveCns157Set.gn" -na; -connectAttr "neck_C0_neck_crvShape.iog.og[0]" "mgear_curveCns157Set.dsm" -na; -connectAttr "mgear_curveCns157.msg" "mgear_curveCns157Set.ub[0]"; -connectAttr "tweak157.og[0]" "mgear_curveCns157GroupParts.ig"; -connectAttr "mgear_curveCns157GroupId.id" "mgear_curveCns157GroupParts.gi"; -connectAttr "groupId314.msg" "tweakSet157.gn" -na; -connectAttr "neck_C0_neck_crvShape.iog.og[1]" "tweakSet157.dsm" -na; -connectAttr "tweak157.msg" "tweakSet157.ub[0]"; -connectAttr "neck_C0_neck_crvShapeOrig.ws" "groupParts314.ig"; -connectAttr "groupId314.id" "groupParts314.gi"; -connectAttr "mgear_curveCns158GroupParts.og" "mgear_curveCns158.ip[0].ig"; -connectAttr "mgear_curveCns158GroupId.id" "mgear_curveCns158.ip[0].gi"; -connectAttr "neck_C0_neck.wm" "mgear_curveCns158.inputs[0]"; -connectAttr "neck_C0_head.wm" "mgear_curveCns158.inputs[1]"; -connectAttr "neck_C0_eff.wm" "mgear_curveCns158.inputs[2]"; -connectAttr "groupParts316.og" "tweak158.ip[0].ig"; -connectAttr "groupId316.id" "tweak158.ip[0].gi"; -connectAttr "mgear_curveCns158GroupId.msg" "mgear_curveCns158Set.gn" -na; -connectAttr "neck_C0_head_crvShape.iog.og[0]" "mgear_curveCns158Set.dsm" -na; -connectAttr "mgear_curveCns158.msg" "mgear_curveCns158Set.ub[0]"; -connectAttr "tweak158.og[0]" "mgear_curveCns158GroupParts.ig"; -connectAttr "mgear_curveCns158GroupId.id" "mgear_curveCns158GroupParts.gi"; -connectAttr "groupId316.msg" "tweakSet158.gn" -na; -connectAttr "neck_C0_head_crvShape.iog.og[1]" "tweakSet158.dsm" -na; -connectAttr "tweak158.msg" "tweakSet158.ub[0]"; -connectAttr "neck_C0_head_crvShapeOrig.ws" "groupParts316.ig"; -connectAttr "groupId316.id" "groupParts316.gi"; -connectAttr "mgear_curveCns159GroupParts.og" "mgear_curveCns159.ip[0].ig"; -connectAttr "mgear_curveCns159GroupId.id" "mgear_curveCns159.ip[0].gi"; -connectAttr "mouth_C0_root.wm" "mgear_curveCns159.inputs[0]"; -connectAttr "mouth_C0_rotcenter.wm" "mgear_curveCns159.inputs[1]"; -connectAttr "groupParts318.og" "tweak159.ip[0].ig"; -connectAttr "groupId318.id" "tweak159.ip[0].gi"; -connectAttr "mgear_curveCns159GroupId.msg" "mgear_curveCns159Set.gn" -na; -connectAttr "|guide|local_C0_root|body_C0_root|spine_C0_root|spine_C0_eff|neck_C0_root|neck_C0_neck|neck_C0_head|mouth_C0_root|mouth_C0_crv|mouth_C0_crvShape.iog.og[0]" "mgear_curveCns159Set.dsm" - -na; -connectAttr "mgear_curveCns159.msg" "mgear_curveCns159Set.ub[0]"; -connectAttr "tweak159.og[0]" "mgear_curveCns159GroupParts.ig"; -connectAttr "mgear_curveCns159GroupId.id" "mgear_curveCns159GroupParts.gi"; -connectAttr "groupId318.msg" "tweakSet159.gn" -na; -connectAttr "|guide|local_C0_root|body_C0_root|spine_C0_root|spine_C0_eff|neck_C0_root|neck_C0_neck|neck_C0_head|mouth_C0_root|mouth_C0_crv|mouth_C0_crvShape.iog.og[1]" "tweakSet159.dsm" - -na; -connectAttr "tweak159.msg" "tweakSet159.ub[0]"; -connectAttr "|guide|local_C0_root|body_C0_root|spine_C0_root|spine_C0_eff|neck_C0_root|neck_C0_neck|neck_C0_head|mouth_C0_root|mouth_C0_crv|mouth_C0_crvShapeOrig.ws" "groupParts318.ig" - ; -connectAttr "groupId318.id" "groupParts318.gi"; connectAttr "mgear_curveCns160GroupParts.og" "mgear_curveCns160.ip[0].ig"; connectAttr "mgear_curveCns160GroupId.id" "mgear_curveCns160.ip[0].gi"; connectAttr "mouth_C0_lipup.wm" "mgear_curveCns160.inputs[0]"; connectAttr "mouth_C0_rotcenter.wm" "mgear_curveCns160.inputs[1]"; -connectAttr "groupParts320.og" "tweak160.ip[0].ig"; -connectAttr "groupId320.id" "tweak160.ip[0].gi"; connectAttr "mgear_curveCns160GroupId.msg" "mgear_curveCns160Set.gn" -na; -connectAttr "|guide|local_C0_root|body_C0_root|spine_C0_root|spine_C0_eff|neck_C0_root|neck_C0_neck|neck_C0_head|mouth_C0_root|mouth_C0_rotcenter|mouth_C0_lipup|mouth_C0_crv|mouth_C0_crvShape.iog.og[0]" "mgear_curveCns160Set.dsm" +connectAttr "|guide|global_C0_root|local_C0_root|body_C0_root|spine_C0_root|spine_C0_eff|neck_C0_root|neck_C0_neck|neck_C0_head|mouth_C0_root|mouth_C0_rotcenter|mouth_C0_lipup|mouth_C0_crv|mouth_C0_crvShape.iog.og[0]" "mgear_curveCns160Set.dsm" -na; connectAttr "mgear_curveCns160.msg" "mgear_curveCns160Set.ub[0]"; connectAttr "tweak160.og[0]" "mgear_curveCns160GroupParts.ig"; connectAttr "mgear_curveCns160GroupId.id" "mgear_curveCns160GroupParts.gi"; +connectAttr "groupParts320.og" "tweak160.ip[0].ig"; +connectAttr "groupId320.id" "tweak160.ip[0].gi"; connectAttr "groupId320.msg" "tweakSet160.gn" -na; -connectAttr "|guide|local_C0_root|body_C0_root|spine_C0_root|spine_C0_eff|neck_C0_root|neck_C0_neck|neck_C0_head|mouth_C0_root|mouth_C0_rotcenter|mouth_C0_lipup|mouth_C0_crv|mouth_C0_crvShape.iog.og[1]" "tweakSet160.dsm" +connectAttr "|guide|global_C0_root|local_C0_root|body_C0_root|spine_C0_root|spine_C0_eff|neck_C0_root|neck_C0_neck|neck_C0_head|mouth_C0_root|mouth_C0_rotcenter|mouth_C0_lipup|mouth_C0_crv|mouth_C0_crvShape.iog.og[1]" "tweakSet160.dsm" -na; connectAttr "tweak160.msg" "tweakSet160.ub[0]"; -connectAttr "|guide|local_C0_root|body_C0_root|spine_C0_root|spine_C0_eff|neck_C0_root|neck_C0_neck|neck_C0_head|mouth_C0_root|mouth_C0_rotcenter|mouth_C0_lipup|mouth_C0_crv|mouth_C0_crvShapeOrig.ws" "groupParts320.ig" +connectAttr "|guide|global_C0_root|local_C0_root|body_C0_root|spine_C0_root|spine_C0_eff|neck_C0_root|neck_C0_neck|neck_C0_head|mouth_C0_root|mouth_C0_rotcenter|mouth_C0_lipup|mouth_C0_crv|mouth_C0_crvShapeOrig.ws" "groupParts320.ig" ; connectAttr "groupId320.id" "groupParts320.gi"; connectAttr "mgear_curveCns161GroupParts.og" "mgear_curveCns161.ip[0].ig"; connectAttr "mgear_curveCns161GroupId.id" "mgear_curveCns161.ip[0].gi"; connectAttr "mouth_C0_liplow.wm" "mgear_curveCns161.inputs[0]"; connectAttr "mouth_C0_rotcenter.wm" "mgear_curveCns161.inputs[1]"; -connectAttr "groupParts322.og" "tweak161.ip[0].ig"; -connectAttr "groupId322.id" "tweak161.ip[0].gi"; connectAttr "mgear_curveCns161GroupId.msg" "mgear_curveCns161Set.gn" -na; -connectAttr "|guide|local_C0_root|body_C0_root|spine_C0_root|spine_C0_eff|neck_C0_root|neck_C0_neck|neck_C0_head|mouth_C0_root|mouth_C0_rotcenter|mouth_C0_liplow|mouth_C0_crv|mouth_C0_crvShape.iog.og[0]" "mgear_curveCns161Set.dsm" +connectAttr "|guide|global_C0_root|local_C0_root|body_C0_root|spine_C0_root|spine_C0_eff|neck_C0_root|neck_C0_neck|neck_C0_head|mouth_C0_root|mouth_C0_rotcenter|mouth_C0_liplow|mouth_C0_crv|mouth_C0_crvShape.iog.og[0]" "mgear_curveCns161Set.dsm" -na; connectAttr "mgear_curveCns161.msg" "mgear_curveCns161Set.ub[0]"; connectAttr "tweak161.og[0]" "mgear_curveCns161GroupParts.ig"; connectAttr "mgear_curveCns161GroupId.id" "mgear_curveCns161GroupParts.gi"; +connectAttr "groupParts322.og" "tweak161.ip[0].ig"; +connectAttr "groupId322.id" "tweak161.ip[0].gi"; connectAttr "groupId322.msg" "tweakSet161.gn" -na; -connectAttr "|guide|local_C0_root|body_C0_root|spine_C0_root|spine_C0_eff|neck_C0_root|neck_C0_neck|neck_C0_head|mouth_C0_root|mouth_C0_rotcenter|mouth_C0_liplow|mouth_C0_crv|mouth_C0_crvShape.iog.og[1]" "tweakSet161.dsm" +connectAttr "|guide|global_C0_root|local_C0_root|body_C0_root|spine_C0_root|spine_C0_eff|neck_C0_root|neck_C0_neck|neck_C0_head|mouth_C0_root|mouth_C0_rotcenter|mouth_C0_liplow|mouth_C0_crv|mouth_C0_crvShape.iog.og[1]" "tweakSet161.dsm" -na; connectAttr "tweak161.msg" "tweakSet161.ub[0]"; -connectAttr "|guide|local_C0_root|body_C0_root|spine_C0_root|spine_C0_eff|neck_C0_root|neck_C0_neck|neck_C0_head|mouth_C0_root|mouth_C0_rotcenter|mouth_C0_liplow|mouth_C0_crv|mouth_C0_crvShapeOrig.ws" "groupParts322.ig" +connectAttr "|guide|global_C0_root|local_C0_root|body_C0_root|spine_C0_root|spine_C0_eff|neck_C0_root|neck_C0_neck|neck_C0_head|mouth_C0_root|mouth_C0_rotcenter|mouth_C0_liplow|mouth_C0_crv|mouth_C0_crvShapeOrig.ws" "groupParts322.ig" ; connectAttr "groupId322.id" "groupParts322.gi"; +connectAttr "mgear_curveCns159GroupParts.og" "mgear_curveCns159.ip[0].ig"; +connectAttr "mgear_curveCns159GroupId.id" "mgear_curveCns159.ip[0].gi"; +connectAttr "mouth_C0_root.wm" "mgear_curveCns159.inputs[0]"; +connectAttr "mouth_C0_rotcenter.wm" "mgear_curveCns159.inputs[1]"; +connectAttr "mgear_curveCns159GroupId.msg" "mgear_curveCns159Set.gn" -na; +connectAttr "|guide|global_C0_root|local_C0_root|body_C0_root|spine_C0_root|spine_C0_eff|neck_C0_root|neck_C0_neck|neck_C0_head|mouth_C0_root|mouth_C0_crv|mouth_C0_crvShape.iog.og[0]" "mgear_curveCns159Set.dsm" + -na; +connectAttr "mgear_curveCns159.msg" "mgear_curveCns159Set.ub[0]"; +connectAttr "tweak159.og[0]" "mgear_curveCns159GroupParts.ig"; +connectAttr "mgear_curveCns159GroupId.id" "mgear_curveCns159GroupParts.gi"; +connectAttr "groupParts318.og" "tweak159.ip[0].ig"; +connectAttr "groupId318.id" "tweak159.ip[0].gi"; +connectAttr "groupId318.msg" "tweakSet159.gn" -na; +connectAttr "|guide|global_C0_root|local_C0_root|body_C0_root|spine_C0_root|spine_C0_eff|neck_C0_root|neck_C0_neck|neck_C0_head|mouth_C0_root|mouth_C0_crv|mouth_C0_crvShape.iog.og[1]" "tweakSet159.dsm" + -na; +connectAttr "tweak159.msg" "tweakSet159.ub[0]"; +connectAttr "|guide|global_C0_root|local_C0_root|body_C0_root|spine_C0_root|spine_C0_eff|neck_C0_root|neck_C0_neck|neck_C0_head|mouth_C0_root|mouth_C0_crv|mouth_C0_crvShapeOrig.ws" "groupParts318.ig" + ; +connectAttr "groupId318.id" "groupParts318.gi"; connectAttr "mgear_curveCns162GroupParts.og" "mgear_curveCns162.ip[0].ig"; connectAttr "mgear_curveCns162GroupId.id" "mgear_curveCns162.ip[0].gi"; connectAttr "mouth_C0_root.wm" "mgear_curveCns162.inputs[0]"; connectAttr "mouth_C0_jaw.wm" "mgear_curveCns162.inputs[1]"; -connectAttr "groupParts324.og" "tweak162.ip[0].ig"; -connectAttr "groupId324.id" "tweak162.ip[0].gi"; connectAttr "mgear_curveCns162GroupId.msg" "mgear_curveCns162Set.gn" -na; connectAttr "mouth_C0_crv7Shape.iog.og[0]" "mgear_curveCns162Set.dsm" -na; connectAttr "mgear_curveCns162.msg" "mgear_curveCns162Set.ub[0]"; connectAttr "tweak162.og[0]" "mgear_curveCns162GroupParts.ig"; connectAttr "mgear_curveCns162GroupId.id" "mgear_curveCns162GroupParts.gi"; +connectAttr "groupParts324.og" "tweak162.ip[0].ig"; +connectAttr "groupId324.id" "tweak162.ip[0].gi"; connectAttr "groupId324.msg" "tweakSet162.gn" -na; connectAttr "mouth_C0_crv7Shape.iog.og[1]" "tweakSet162.dsm" -na; connectAttr "tweak162.msg" "tweakSet162.ub[0]"; @@ -10532,13 +10460,13 @@ connectAttr "mgear_curveCns163GroupParts.og" "mgear_curveCns163.ip[0].ig"; connectAttr "mgear_curveCns163GroupId.id" "mgear_curveCns163.ip[0].gi"; connectAttr "eye_L0_root.wm" "mgear_curveCns163.inputs[0]"; connectAttr "eye_L0_look.wm" "mgear_curveCns163.inputs[1]"; -connectAttr "groupParts326.og" "tweak163.ip[0].ig"; -connectAttr "groupId326.id" "tweak163.ip[0].gi"; connectAttr "mgear_curveCns163GroupId.msg" "mgear_curveCns163Set.gn" -na; connectAttr "eye_L0_crvShape.iog.og[0]" "mgear_curveCns163Set.dsm" -na; connectAttr "mgear_curveCns163.msg" "mgear_curveCns163Set.ub[0]"; connectAttr "tweak163.og[0]" "mgear_curveCns163GroupParts.ig"; connectAttr "mgear_curveCns163GroupId.id" "mgear_curveCns163GroupParts.gi"; +connectAttr "groupParts326.og" "tweak163.ip[0].ig"; +connectAttr "groupId326.id" "tweak163.ip[0].gi"; connectAttr "groupId326.msg" "tweakSet163.gn" -na; connectAttr "eye_L0_crvShape.iog.og[1]" "tweakSet163.dsm" -na; connectAttr "tweak163.msg" "tweakSet163.ub[0]"; @@ -10548,66 +10476,66 @@ connectAttr "mgear_curveCns164GroupParts.og" "mgear_curveCns164.ip[0].ig"; connectAttr "mgear_curveCns164GroupId.id" "mgear_curveCns164.ip[0].gi"; connectAttr "eye_R0_root.wm" "mgear_curveCns164.inputs[0]"; connectAttr "eye_R0_look.wm" "mgear_curveCns164.inputs[1]"; -connectAttr "groupParts328.og" "tweak164.ip[0].ig"; -connectAttr "groupId328.id" "tweak164.ip[0].gi"; connectAttr "mgear_curveCns164GroupId.msg" "mgear_curveCns164Set.gn" -na; connectAttr "eye_R0_crvShape.iog.og[0]" "mgear_curveCns164Set.dsm" -na; connectAttr "mgear_curveCns164.msg" "mgear_curveCns164Set.ub[0]"; connectAttr "tweak164.og[0]" "mgear_curveCns164GroupParts.ig"; connectAttr "mgear_curveCns164GroupId.id" "mgear_curveCns164GroupParts.gi"; +connectAttr "groupParts328.og" "tweak164.ip[0].ig"; +connectAttr "groupId328.id" "tweak164.ip[0].gi"; connectAttr "groupId328.msg" "tweakSet164.gn" -na; connectAttr "eye_R0_crvShape.iog.og[1]" "tweakSet164.dsm" -na; connectAttr "tweak164.msg" "tweakSet164.ub[0]"; connectAttr "eye_R0_crvShapeOrig.ws" "groupParts328.ig"; connectAttr "groupId328.id" "groupParts328.gi"; -connectAttr "shoulder_L0_blade.bladeRollOffset" "unitConversion30.i"; -connectAttr "mgear_curveCns165GroupParts.og" "mgear_curveCns165.ip[0].ig"; -connectAttr "mgear_curveCns165GroupId.id" "mgear_curveCns165.ip[0].gi"; -connectAttr "shoulder_L0_root.wm" "mgear_curveCns165.inputs[0]"; -connectAttr "shoulder_L0_0_loc.wm" "mgear_curveCns165.inputs[1]"; -connectAttr "groupParts330.og" "tweak165.ip[0].ig"; -connectAttr "groupId330.id" "tweak165.ip[0].gi"; -connectAttr "mgear_curveCns165GroupId.msg" "mgear_curveCns165Set.gn" -na; -connectAttr "shoulder_L0_crvShape.iog.og[0]" "mgear_curveCns165Set.dsm" -na; -connectAttr "mgear_curveCns165.msg" "mgear_curveCns165Set.ub[0]"; -connectAttr "tweak165.og[0]" "mgear_curveCns165GroupParts.ig"; -connectAttr "mgear_curveCns165GroupId.id" "mgear_curveCns165GroupParts.gi"; -connectAttr "groupId330.msg" "tweakSet165.gn" -na; -connectAttr "shoulder_L0_crvShape.iog.og[1]" "tweakSet165.dsm" -na; -connectAttr "tweak165.msg" "tweakSet165.ub[0]"; -connectAttr "shoulder_L0_crvShapeOrig.ws" "groupParts330.ig"; -connectAttr "groupId330.id" "groupParts330.gi"; -connectAttr "mgear_curveCns166GroupParts.og" "mgear_curveCns166.ip[0].ig"; -connectAttr "mgear_curveCns166GroupId.id" "mgear_curveCns166.ip[0].gi"; -connectAttr "legFront_L0_root.wm" "mgear_curveCns166.inputs[0]"; -connectAttr "legFront_L0_knee.wm" "mgear_curveCns166.inputs[1]"; -connectAttr "legFront_L0_ankle.wm" "mgear_curveCns166.inputs[2]"; -connectAttr "legFront_L0_foot.wm" "mgear_curveCns166.inputs[3]"; -connectAttr "legFront_L0_eff.wm" "mgear_curveCns166.inputs[4]"; -connectAttr "groupParts332.og" "tweak166.ip[0].ig"; -connectAttr "groupId332.id" "tweak166.ip[0].gi"; -connectAttr "mgear_curveCns166GroupId.msg" "mgear_curveCns166Set.gn" -na; -connectAttr "legFront_L0_crvShape1.iog.og[0]" "mgear_curveCns166Set.dsm" -na; -connectAttr "mgear_curveCns166.msg" "mgear_curveCns166Set.ub[0]"; -connectAttr "tweak166.og[0]" "mgear_curveCns166GroupParts.ig"; -connectAttr "mgear_curveCns166GroupId.id" "mgear_curveCns166GroupParts.gi"; -connectAttr "groupId332.msg" "tweakSet166.gn" -na; -connectAttr "legFront_L0_crvShape1.iog.og[1]" "tweakSet166.dsm" -na; -connectAttr "tweak166.msg" "tweakSet166.ub[0]"; -connectAttr "legFront_L0_crvShape1Orig.ws" "groupParts332.ig"; -connectAttr "groupId332.id" "groupParts332.gi"; +connectAttr "mgear_curveCns158GroupParts.og" "mgear_curveCns158.ip[0].ig"; +connectAttr "mgear_curveCns158GroupId.id" "mgear_curveCns158.ip[0].gi"; +connectAttr "neck_C0_neck.wm" "mgear_curveCns158.inputs[0]"; +connectAttr "neck_C0_head.wm" "mgear_curveCns158.inputs[1]"; +connectAttr "neck_C0_eff.wm" "mgear_curveCns158.inputs[2]"; +connectAttr "mgear_curveCns158GroupId.msg" "mgear_curveCns158Set.gn" -na; +connectAttr "neck_C0_head_crvShape.iog.og[0]" "mgear_curveCns158Set.dsm" -na; +connectAttr "mgear_curveCns158.msg" "mgear_curveCns158Set.ub[0]"; +connectAttr "tweak158.og[0]" "mgear_curveCns158GroupParts.ig"; +connectAttr "mgear_curveCns158GroupId.id" "mgear_curveCns158GroupParts.gi"; +connectAttr "groupParts316.og" "tweak158.ip[0].ig"; +connectAttr "groupId316.id" "tweak158.ip[0].gi"; +connectAttr "groupId316.msg" "tweakSet158.gn" -na; +connectAttr "neck_C0_head_crvShape.iog.og[1]" "tweakSet158.dsm" -na; +connectAttr "tweak158.msg" "tweakSet158.ub[0]"; +connectAttr "neck_C0_head_crvShapeOrig.ws" "groupParts316.ig"; +connectAttr "groupId316.id" "groupParts316.gi"; +connectAttr "neck_C0_blade.bladeRollOffset" "unitConversion29.i"; +connectAttr "mgear_curveCns157GroupParts.og" "mgear_curveCns157.ip[0].ig"; +connectAttr "mgear_curveCns157GroupId.id" "mgear_curveCns157.ip[0].gi"; +connectAttr "neck_C0_root.wm" "mgear_curveCns157.inputs[0]"; +connectAttr "neck_C0_tan0.wm" "mgear_curveCns157.inputs[1]"; +connectAttr "neck_C0_tan1.wm" "mgear_curveCns157.inputs[2]"; +connectAttr "neck_C0_neck.wm" "mgear_curveCns157.inputs[3]"; +connectAttr "mgear_curveCns157GroupId.msg" "mgear_curveCns157Set.gn" -na; +connectAttr "neck_C0_neck_crvShape.iog.og[0]" "mgear_curveCns157Set.dsm" -na; +connectAttr "mgear_curveCns157.msg" "mgear_curveCns157Set.ub[0]"; +connectAttr "tweak157.og[0]" "mgear_curveCns157GroupParts.ig"; +connectAttr "mgear_curveCns157GroupId.id" "mgear_curveCns157GroupParts.gi"; +connectAttr "groupParts314.og" "tweak157.ip[0].ig"; +connectAttr "groupId314.id" "tweak157.ip[0].gi"; +connectAttr "groupId314.msg" "tweakSet157.gn" -na; +connectAttr "neck_C0_neck_crvShape.iog.og[1]" "tweakSet157.dsm" -na; +connectAttr "tweak157.msg" "tweakSet157.ub[0]"; +connectAttr "neck_C0_neck_crvShapeOrig.ws" "groupParts314.ig"; +connectAttr "groupId314.id" "groupParts314.gi"; connectAttr "mgear_curveCns167GroupParts.og" "mgear_curveCns167.ip[0].ig"; connectAttr "mgear_curveCns167GroupId.id" "mgear_curveCns167.ip[0].gi"; connectAttr "footFront_L0_root.wm" "mgear_curveCns167.inputs[0]"; connectAttr "footFront_L0_0_loc.wm" "mgear_curveCns167.inputs[1]"; connectAttr "footFront_L0_1_loc.wm" "mgear_curveCns167.inputs[2]"; -connectAttr "groupParts334.og" "tweak167.ip[0].ig"; -connectAttr "groupId334.id" "tweak167.ip[0].gi"; connectAttr "mgear_curveCns167GroupId.msg" "mgear_curveCns167Set.gn" -na; connectAttr "footFront_L0_crvShape.iog.og[0]" "mgear_curveCns167Set.dsm" -na; connectAttr "mgear_curveCns167.msg" "mgear_curveCns167Set.ub[0]"; connectAttr "tweak167.og[0]" "mgear_curveCns167GroupParts.ig"; connectAttr "mgear_curveCns167GroupId.id" "mgear_curveCns167GroupParts.gi"; +connectAttr "groupParts334.og" "tweak167.ip[0].ig"; +connectAttr "groupId334.id" "tweak167.ip[0].gi"; connectAttr "groupId334.msg" "tweakSet167.gn" -na; connectAttr "footFront_L0_crvShape.iog.og[1]" "tweakSet167.dsm" -na; connectAttr "tweak167.msg" "tweakSet167.ub[0]"; @@ -10620,121 +10548,155 @@ connectAttr "footFront_L0_heel.wm" "mgear_curveCns168.inputs[1]"; connectAttr "footFront_L0_outpivot.wm" "mgear_curveCns168.inputs[2]"; connectAttr "footFront_L0_heel.wm" "mgear_curveCns168.inputs[3]"; connectAttr "footFront_L0_inpivot.wm" "mgear_curveCns168.inputs[4]"; -connectAttr "groupParts336.og" "tweak168.ip[0].ig"; -connectAttr "groupId336.id" "tweak168.ip[0].gi"; connectAttr "mgear_curveCns168GroupId.msg" "mgear_curveCns168Set.gn" -na; connectAttr "footFront_L0_Shape1.iog.og[0]" "mgear_curveCns168Set.dsm" -na; connectAttr "mgear_curveCns168.msg" "mgear_curveCns168Set.ub[0]"; connectAttr "tweak168.og[0]" "mgear_curveCns168GroupParts.ig"; connectAttr "mgear_curveCns168GroupId.id" "mgear_curveCns168GroupParts.gi"; +connectAttr "groupParts336.og" "tweak168.ip[0].ig"; +connectAttr "groupId336.id" "tweak168.ip[0].gi"; connectAttr "groupId336.msg" "tweakSet168.gn" -na; connectAttr "footFront_L0_Shape1.iog.og[1]" "tweakSet168.dsm" -na; connectAttr "tweak168.msg" "tweakSet168.ub[0]"; -connectAttr "footFront_L0_Shape1Orig.ws" "groupParts336.ig"; +connectAttr "footFront_L0_Shape1Orig1.ws" "groupParts336.ig"; connectAttr "groupId336.id" "groupParts336.gi"; +connectAttr "mgear_curveCns166GroupParts.og" "mgear_curveCns166.ip[0].ig"; +connectAttr "mgear_curveCns166GroupId.id" "mgear_curveCns166.ip[0].gi"; +connectAttr "legFront_L0_root.wm" "mgear_curveCns166.inputs[0]"; +connectAttr "legFront_L0_knee.wm" "mgear_curveCns166.inputs[1]"; +connectAttr "legFront_L0_ankle.wm" "mgear_curveCns166.inputs[2]"; +connectAttr "legFront_L0_foot.wm" "mgear_curveCns166.inputs[3]"; +connectAttr "legFront_L0_eff.wm" "mgear_curveCns166.inputs[4]"; +connectAttr "mgear_curveCns166GroupId.msg" "mgear_curveCns166Set.gn" -na; +connectAttr "legFront_L0_crvShape1.iog.og[0]" "mgear_curveCns166Set.dsm" -na; +connectAttr "mgear_curveCns166.msg" "mgear_curveCns166Set.ub[0]"; +connectAttr "tweak166.og[0]" "mgear_curveCns166GroupParts.ig"; +connectAttr "mgear_curveCns166GroupId.id" "mgear_curveCns166GroupParts.gi"; +connectAttr "groupParts332.og" "tweak166.ip[0].ig"; +connectAttr "groupId332.id" "tweak166.ip[0].gi"; +connectAttr "groupId332.msg" "tweakSet166.gn" -na; +connectAttr "legFront_L0_crvShape1.iog.og[1]" "tweakSet166.dsm" -na; +connectAttr "tweak166.msg" "tweakSet166.ub[0]"; +connectAttr "legFront_L0_crvShape1Orig1.ws" "groupParts332.ig"; +connectAttr "groupId332.id" "groupParts332.gi"; +connectAttr "shoulder_L0_blade.bladeRollOffset" "unitConversion30.i"; +connectAttr "mgear_curveCns165GroupParts.og" "mgear_curveCns165.ip[0].ig"; +connectAttr "mgear_curveCns165GroupId.id" "mgear_curveCns165.ip[0].gi"; +connectAttr "shoulder_L0_root.wm" "mgear_curveCns165.inputs[0]"; +connectAttr "shoulder_L0_0_loc.wm" "mgear_curveCns165.inputs[1]"; +connectAttr "mgear_curveCns165GroupId.msg" "mgear_curveCns165Set.gn" -na; +connectAttr "shoulder_L0_crvShape.iog.og[0]" "mgear_curveCns165Set.dsm" -na; +connectAttr "mgear_curveCns165.msg" "mgear_curveCns165Set.ub[0]"; +connectAttr "tweak165.og[0]" "mgear_curveCns165GroupParts.ig"; +connectAttr "mgear_curveCns165GroupId.id" "mgear_curveCns165GroupParts.gi"; +connectAttr "groupParts330.og" "tweak165.ip[0].ig"; +connectAttr "groupId330.id" "tweak165.ip[0].gi"; +connectAttr "groupId330.msg" "tweakSet165.gn" -na; +connectAttr "shoulder_L0_crvShape.iog.og[1]" "tweakSet165.dsm" -na; +connectAttr "tweak165.msg" "tweakSet165.ub[0]"; +connectAttr "shoulder_L0_crvShapeOrig.ws" "groupParts330.ig"; +connectAttr "groupId330.id" "groupParts330.gi"; +connectAttr "mgear_curveCns181GroupParts.og" "mgear_curveCns181.ip[0].ig"; +connectAttr "mgear_curveCns181GroupId.id" "mgear_curveCns181.ip[0].gi"; +connectAttr "footFront_R0_root.wm" "mgear_curveCns181.inputs[0]"; +connectAttr "footFront_R0_0_loc.wm" "mgear_curveCns181.inputs[1]"; +connectAttr "footFront_R0_1_loc.wm" "mgear_curveCns181.inputs[2]"; +connectAttr "mgear_curveCns181GroupId.msg" "mgear_curveCns181Set.gn" -na; +connectAttr "footFront_R0_crvShape.iog.og[0]" "mgear_curveCns181Set.dsm" -na; +connectAttr "mgear_curveCns181.msg" "mgear_curveCns181Set.ub[0]"; +connectAttr "tweak181.og[0]" "mgear_curveCns181GroupParts.ig"; +connectAttr "mgear_curveCns181GroupId.id" "mgear_curveCns181GroupParts.gi"; +connectAttr "groupParts362.og" "tweak181.ip[0].ig"; +connectAttr "groupId362.id" "tweak181.ip[0].gi"; +connectAttr "groupId362.msg" "tweakSet181.gn" -na; +connectAttr "footFront_R0_crvShape.iog.og[1]" "tweakSet181.dsm" -na; +connectAttr "tweak181.msg" "tweakSet181.ub[0]"; +connectAttr "footFront_R0_crvShapeOrig.ws" "groupParts362.ig"; +connectAttr "groupId362.id" "groupParts362.gi"; +connectAttr "mgear_curveCns182GroupParts.og" "mgear_curveCns182.ip[0].ig"; +connectAttr "mgear_curveCns182GroupId.id" "mgear_curveCns182.ip[0].gi"; +connectAttr "footFront_R0_root.wm" "mgear_curveCns182.inputs[0]"; +connectAttr "footFront_R0_heel.wm" "mgear_curveCns182.inputs[1]"; +connectAttr "footFront_R0_outpivot.wm" "mgear_curveCns182.inputs[2]"; +connectAttr "footFront_R0_heel.wm" "mgear_curveCns182.inputs[3]"; +connectAttr "footFront_R0_inpivot.wm" "mgear_curveCns182.inputs[4]"; +connectAttr "mgear_curveCns182GroupId.msg" "mgear_curveCns182Set.gn" -na; +connectAttr "footFront_R0_Shape1.iog.og[0]" "mgear_curveCns182Set.dsm" -na; +connectAttr "mgear_curveCns182.msg" "mgear_curveCns182Set.ub[0]"; +connectAttr "tweak182.og[0]" "mgear_curveCns182GroupParts.ig"; +connectAttr "mgear_curveCns182GroupId.id" "mgear_curveCns182GroupParts.gi"; +connectAttr "groupParts364.og" "tweak182.ip[0].ig"; +connectAttr "groupId364.id" "tweak182.ip[0].gi"; +connectAttr "groupId364.msg" "tweakSet182.gn" -na; +connectAttr "footFront_R0_Shape1.iog.og[1]" "tweakSet182.dsm" -na; +connectAttr "tweak182.msg" "tweakSet182.ub[0]"; +connectAttr "footFront_R0_Shape1Orig.ws" "groupParts364.ig"; +connectAttr "groupId364.id" "groupParts364.gi"; +connectAttr "mgear_curveCns180GroupParts.og" "mgear_curveCns180.ip[0].ig"; +connectAttr "mgear_curveCns180GroupId.id" "mgear_curveCns180.ip[0].gi"; +connectAttr "legFront_R0_root.wm" "mgear_curveCns180.inputs[0]"; +connectAttr "legFront_R0_knee.wm" "mgear_curveCns180.inputs[1]"; +connectAttr "legFront_R0_ankle.wm" "mgear_curveCns180.inputs[2]"; +connectAttr "legFront_R0_foot.wm" "mgear_curveCns180.inputs[3]"; +connectAttr "legFront_R0_eff.wm" "mgear_curveCns180.inputs[4]"; +connectAttr "mgear_curveCns180GroupId.msg" "mgear_curveCns180Set.gn" -na; +connectAttr "legFront_R0_crvShape1.iog.og[0]" "mgear_curveCns180Set.dsm" -na; +connectAttr "mgear_curveCns180.msg" "mgear_curveCns180Set.ub[0]"; +connectAttr "tweak180.og[0]" "mgear_curveCns180GroupParts.ig"; +connectAttr "mgear_curveCns180GroupId.id" "mgear_curveCns180GroupParts.gi"; +connectAttr "groupParts360.og" "tweak180.ip[0].ig"; +connectAttr "groupId360.id" "tweak180.ip[0].gi"; +connectAttr "groupId360.msg" "tweakSet180.gn" -na; +connectAttr "legFront_R0_crvShape1.iog.og[1]" "tweakSet180.dsm" -na; +connectAttr "tweak180.msg" "tweakSet180.ub[0]"; +connectAttr "legFront_R0_crvShape1Orig.ws" "groupParts360.ig"; +connectAttr "groupId360.id" "groupParts360.gi"; connectAttr "shoulder_R0_blade.bladeRollOffset" "unitConversion31.i"; -connectAttr "mgear_curveCns169GroupParts.og" "mgear_curveCns169.ip[0].ig"; -connectAttr "mgear_curveCns169GroupId.id" "mgear_curveCns169.ip[0].gi"; -connectAttr "shoulder_R0_root.wm" "mgear_curveCns169.inputs[0]"; -connectAttr "shoulder_R0_0_loc.wm" "mgear_curveCns169.inputs[1]"; -connectAttr "groupParts338.og" "tweak169.ip[0].ig"; -connectAttr "groupId338.id" "tweak169.ip[0].gi"; -connectAttr "mgear_curveCns169GroupId.msg" "mgear_curveCns169Set.gn" -na; -connectAttr "shoulder_R0_crvShape.iog.og[0]" "mgear_curveCns169Set.dsm" -na; -connectAttr "mgear_curveCns169.msg" "mgear_curveCns169Set.ub[0]"; -connectAttr "tweak169.og[0]" "mgear_curveCns169GroupParts.ig"; -connectAttr "mgear_curveCns169GroupId.id" "mgear_curveCns169GroupParts.gi"; -connectAttr "groupId338.msg" "tweakSet169.gn" -na; -connectAttr "shoulder_R0_crvShape.iog.og[1]" "tweakSet169.dsm" -na; -connectAttr "tweak169.msg" "tweakSet169.ub[0]"; -connectAttr "shoulder_R0_crvShapeOrig.ws" "groupParts338.ig"; -connectAttr "groupId338.id" "groupParts338.gi"; -connectAttr "mgear_curveCns170GroupParts.og" "mgear_curveCns170.ip[0].ig"; -connectAttr "mgear_curveCns170GroupId.id" "mgear_curveCns170.ip[0].gi"; -connectAttr "legFront_R0_root.wm" "mgear_curveCns170.inputs[0]"; -connectAttr "legFront_R0_knee.wm" "mgear_curveCns170.inputs[1]"; -connectAttr "legFront_R0_ankle.wm" "mgear_curveCns170.inputs[2]"; -connectAttr "legFront_R0_foot.wm" "mgear_curveCns170.inputs[3]"; -connectAttr "legFront_R0_eff.wm" "mgear_curveCns170.inputs[4]"; -connectAttr "groupParts340.og" "tweak170.ip[0].ig"; -connectAttr "groupId340.id" "tweak170.ip[0].gi"; -connectAttr "mgear_curveCns170GroupId.msg" "mgear_curveCns170Set.gn" -na; -connectAttr "legFront_R0_crvShape1.iog.og[0]" "mgear_curveCns170Set.dsm" -na; -connectAttr "mgear_curveCns170.msg" "mgear_curveCns170Set.ub[0]"; -connectAttr "tweak170.og[0]" "mgear_curveCns170GroupParts.ig"; -connectAttr "mgear_curveCns170GroupId.id" "mgear_curveCns170GroupParts.gi"; -connectAttr "groupId340.msg" "tweakSet170.gn" -na; -connectAttr "legFront_R0_crvShape1.iog.og[1]" "tweakSet170.dsm" -na; -connectAttr "tweak170.msg" "tweakSet170.ub[0]"; -connectAttr "legFront_R0_crvShape1Orig.ws" "groupParts340.ig"; -connectAttr "groupId340.id" "groupParts340.gi"; -connectAttr "mgear_curveCns171GroupParts.og" "mgear_curveCns171.ip[0].ig"; -connectAttr "mgear_curveCns171GroupId.id" "mgear_curveCns171.ip[0].gi"; -connectAttr "footFront_R0_root.wm" "mgear_curveCns171.inputs[0]"; -connectAttr "footFront_R0_0_loc.wm" "mgear_curveCns171.inputs[1]"; -connectAttr "footFront_R0_1_loc.wm" "mgear_curveCns171.inputs[2]"; -connectAttr "groupParts342.og" "tweak171.ip[0].ig"; -connectAttr "groupId342.id" "tweak171.ip[0].gi"; -connectAttr "mgear_curveCns171GroupId.msg" "mgear_curveCns171Set.gn" -na; -connectAttr "footFront_R0_crvShape.iog.og[0]" "mgear_curveCns171Set.dsm" -na; -connectAttr "mgear_curveCns171.msg" "mgear_curveCns171Set.ub[0]"; -connectAttr "tweak171.og[0]" "mgear_curveCns171GroupParts.ig"; -connectAttr "mgear_curveCns171GroupId.id" "mgear_curveCns171GroupParts.gi"; -connectAttr "groupId342.msg" "tweakSet171.gn" -na; -connectAttr "footFront_R0_crvShape.iog.og[1]" "tweakSet171.dsm" -na; -connectAttr "tweak171.msg" "tweakSet171.ub[0]"; -connectAttr "footFront_R0_crvShapeOrig.ws" "groupParts342.ig"; -connectAttr "groupId342.id" "groupParts342.gi"; -connectAttr "mgear_curveCns172GroupParts.og" "mgear_curveCns172.ip[0].ig"; -connectAttr "mgear_curveCns172GroupId.id" "mgear_curveCns172.ip[0].gi"; -connectAttr "footFront_R0_root.wm" "mgear_curveCns172.inputs[0]"; -connectAttr "footFront_R0_heel.wm" "mgear_curveCns172.inputs[1]"; -connectAttr "footFront_R0_outpivot.wm" "mgear_curveCns172.inputs[2]"; -connectAttr "footFront_R0_heel.wm" "mgear_curveCns172.inputs[3]"; -connectAttr "footFront_R0_inpivot.wm" "mgear_curveCns172.inputs[4]"; -connectAttr "groupParts344.og" "tweak172.ip[0].ig"; -connectAttr "groupId344.id" "tweak172.ip[0].gi"; -connectAttr "mgear_curveCns172GroupId.msg" "mgear_curveCns172Set.gn" -na; -connectAttr "footFront_R0_Shape1.iog.og[0]" "mgear_curveCns172Set.dsm" -na; -connectAttr "mgear_curveCns172.msg" "mgear_curveCns172Set.ub[0]"; -connectAttr "tweak172.og[0]" "mgear_curveCns172GroupParts.ig"; -connectAttr "mgear_curveCns172GroupId.id" "mgear_curveCns172GroupParts.gi"; -connectAttr "groupId344.msg" "tweakSet172.gn" -na; -connectAttr "footFront_R0_Shape1.iog.og[1]" "tweakSet172.dsm" -na; -connectAttr "tweak172.msg" "tweakSet172.ub[0]"; -connectAttr "footFront_R0_Shape1Orig.ws" "groupParts344.ig"; -connectAttr "groupId344.id" "groupParts344.gi"; -connectAttr "mgear_curveCns173GroupParts.og" "mgear_curveCns173.ip[0].ig"; -connectAttr "mgear_curveCns173GroupId.id" "mgear_curveCns173.ip[0].gi"; -connectAttr "legBack_L0_root.wm" "mgear_curveCns173.inputs[0]"; -connectAttr "legBack_L0_knee.wm" "mgear_curveCns173.inputs[1]"; -connectAttr "legBack_L0_ankle.wm" "mgear_curveCns173.inputs[2]"; -connectAttr "legBack_L0_foot.wm" "mgear_curveCns173.inputs[3]"; -connectAttr "legBack_L0_eff.wm" "mgear_curveCns173.inputs[4]"; -connectAttr "groupParts346.og" "tweak173.ip[0].ig"; -connectAttr "groupId346.id" "tweak173.ip[0].gi"; -connectAttr "mgear_curveCns173GroupId.msg" "mgear_curveCns173Set.gn" -na; -connectAttr "legBack_L0_crvShape1.iog.og[0]" "mgear_curveCns173Set.dsm" -na; -connectAttr "mgear_curveCns173.msg" "mgear_curveCns173Set.ub[0]"; -connectAttr "tweak173.og[0]" "mgear_curveCns173GroupParts.ig"; -connectAttr "mgear_curveCns173GroupId.id" "mgear_curveCns173GroupParts.gi"; -connectAttr "groupId346.msg" "tweakSet173.gn" -na; -connectAttr "legBack_L0_crvShape1.iog.og[1]" "tweakSet173.dsm" -na; -connectAttr "tweak173.msg" "tweakSet173.ub[0]"; -connectAttr "legBack_L0_crvShape1Orig.ws" "groupParts346.ig"; -connectAttr "groupId346.id" "groupParts346.gi"; +connectAttr "mgear_curveCns179GroupParts.og" "mgear_curveCns179.ip[0].ig"; +connectAttr "mgear_curveCns179GroupId.id" "mgear_curveCns179.ip[0].gi"; +connectAttr "shoulder_R0_root.wm" "mgear_curveCns179.inputs[0]"; +connectAttr "shoulder_R0_0_loc.wm" "mgear_curveCns179.inputs[1]"; +connectAttr "mgear_curveCns179GroupId.msg" "mgear_curveCns179Set.gn" -na; +connectAttr "shoulder_R0_crvShape.iog.og[0]" "mgear_curveCns179Set.dsm" -na; +connectAttr "mgear_curveCns179.msg" "mgear_curveCns179Set.ub[0]"; +connectAttr "tweak179.og[0]" "mgear_curveCns179GroupParts.ig"; +connectAttr "mgear_curveCns179GroupId.id" "mgear_curveCns179GroupParts.gi"; +connectAttr "groupParts358.og" "tweak179.ip[0].ig"; +connectAttr "groupId358.id" "tweak179.ip[0].gi"; +connectAttr "groupId358.msg" "tweakSet179.gn" -na; +connectAttr "shoulder_R0_crvShape.iog.og[1]" "tweakSet179.dsm" -na; +connectAttr "tweak179.msg" "tweakSet179.ub[0]"; +connectAttr "shoulder_R0_crvShapeOrig.ws" "groupParts358.ig"; +connectAttr "groupId358.id" "groupParts358.gi"; +connectAttr "spine_C0_blade.bladeRollOffset" "unitConversion28.i"; +connectAttr "mgear_curveCns156GroupParts.og" "mgear_curveCns156.ip[0].ig"; +connectAttr "mgear_curveCns156GroupId.id" "mgear_curveCns156.ip[0].gi"; +connectAttr "spine_C0_root.wm" "mgear_curveCns156.inputs[0]"; +connectAttr "spine_C0_eff.wm" "mgear_curveCns156.inputs[1]"; +connectAttr "mgear_curveCns156GroupId.msg" "mgear_curveCns156Set.gn" -na; +connectAttr "spine_C0_crvShape.iog.og[0]" "mgear_curveCns156Set.dsm" -na; +connectAttr "mgear_curveCns156.msg" "mgear_curveCns156Set.ub[0]"; +connectAttr "tweak156.og[0]" "mgear_curveCns156GroupParts.ig"; +connectAttr "mgear_curveCns156GroupId.id" "mgear_curveCns156GroupParts.gi"; +connectAttr "groupParts312.og" "tweak156.ip[0].ig"; +connectAttr "groupId312.id" "tweak156.ip[0].gi"; +connectAttr "groupId312.msg" "tweakSet156.gn" -na; +connectAttr "spine_C0_crvShape.iog.og[1]" "tweakSet156.dsm" -na; +connectAttr "tweak156.msg" "tweakSet156.ub[0]"; +connectAttr "spine_C0_crvShapeOrig.ws" "groupParts312.ig"; +connectAttr "groupId312.id" "groupParts312.gi"; connectAttr "mgear_curveCns174GroupParts.og" "mgear_curveCns174.ip[0].ig"; connectAttr "mgear_curveCns174GroupId.id" "mgear_curveCns174.ip[0].gi"; connectAttr "footBack_L0_root.wm" "mgear_curveCns174.inputs[0]"; connectAttr "footBack_L0_0_loc.wm" "mgear_curveCns174.inputs[1]"; connectAttr "footBack_L0_1_loc.wm" "mgear_curveCns174.inputs[2]"; -connectAttr "groupParts348.og" "tweak174.ip[0].ig"; -connectAttr "groupId348.id" "tweak174.ip[0].gi"; connectAttr "mgear_curveCns174GroupId.msg" "mgear_curveCns174Set.gn" -na; connectAttr "footBack_L0_crvShape.iog.og[0]" "mgear_curveCns174Set.dsm" -na; connectAttr "mgear_curveCns174.msg" "mgear_curveCns174Set.ub[0]"; connectAttr "tweak174.og[0]" "mgear_curveCns174GroupParts.ig"; connectAttr "mgear_curveCns174GroupId.id" "mgear_curveCns174GroupParts.gi"; +connectAttr "groupParts348.og" "tweak174.ip[0].ig"; +connectAttr "groupId348.id" "tweak174.ip[0].gi"; connectAttr "groupId348.msg" "tweakSet174.gn" -na; connectAttr "footBack_L0_crvShape.iog.og[1]" "tweakSet174.dsm" -na; connectAttr "tweak174.msg" "tweakSet174.ub[0]"; @@ -10747,49 +10709,49 @@ connectAttr "footBack_L0_heel.wm" "mgear_curveCns175.inputs[1]"; connectAttr "footBack_L0_outpivot.wm" "mgear_curveCns175.inputs[2]"; connectAttr "footBack_L0_heel.wm" "mgear_curveCns175.inputs[3]"; connectAttr "footBack_L0_inpivot.wm" "mgear_curveCns175.inputs[4]"; -connectAttr "groupParts350.og" "tweak175.ip[0].ig"; -connectAttr "groupId350.id" "tweak175.ip[0].gi"; connectAttr "mgear_curveCns175GroupId.msg" "mgear_curveCns175Set.gn" -na; connectAttr "footBack_L0_Shape1.iog.og[0]" "mgear_curveCns175Set.dsm" -na; connectAttr "mgear_curveCns175.msg" "mgear_curveCns175Set.ub[0]"; connectAttr "tweak175.og[0]" "mgear_curveCns175GroupParts.ig"; connectAttr "mgear_curveCns175GroupId.id" "mgear_curveCns175GroupParts.gi"; +connectAttr "groupParts350.og" "tweak175.ip[0].ig"; +connectAttr "groupId350.id" "tweak175.ip[0].gi"; connectAttr "groupId350.msg" "tweakSet175.gn" -na; connectAttr "footBack_L0_Shape1.iog.og[1]" "tweakSet175.dsm" -na; connectAttr "tweak175.msg" "tweakSet175.ub[0]"; -connectAttr "footBack_L0_Shape1Orig.ws" "groupParts350.ig"; +connectAttr "footBack_L0_Shape1Orig1.ws" "groupParts350.ig"; connectAttr "groupId350.id" "groupParts350.gi"; -connectAttr "mgear_curveCns176GroupParts.og" "mgear_curveCns176.ip[0].ig"; -connectAttr "mgear_curveCns176GroupId.id" "mgear_curveCns176.ip[0].gi"; -connectAttr "legBack_R0_root.wm" "mgear_curveCns176.inputs[0]"; -connectAttr "legBack_R0_knee.wm" "mgear_curveCns176.inputs[1]"; -connectAttr "legBack_R0_ankle.wm" "mgear_curveCns176.inputs[2]"; -connectAttr "legBack_R0_foot.wm" "mgear_curveCns176.inputs[3]"; -connectAttr "legBack_R0_eff.wm" "mgear_curveCns176.inputs[4]"; -connectAttr "groupParts352.og" "tweak176.ip[0].ig"; -connectAttr "groupId352.id" "tweak176.ip[0].gi"; -connectAttr "mgear_curveCns176GroupId.msg" "mgear_curveCns176Set.gn" -na; -connectAttr "legBack_R0_crvShape1.iog.og[0]" "mgear_curveCns176Set.dsm" -na; -connectAttr "mgear_curveCns176.msg" "mgear_curveCns176Set.ub[0]"; -connectAttr "tweak176.og[0]" "mgear_curveCns176GroupParts.ig"; -connectAttr "mgear_curveCns176GroupId.id" "mgear_curveCns176GroupParts.gi"; -connectAttr "groupId352.msg" "tweakSet176.gn" -na; -connectAttr "legBack_R0_crvShape1.iog.og[1]" "tweakSet176.dsm" -na; -connectAttr "tweak176.msg" "tweakSet176.ub[0]"; -connectAttr "legBack_R0_crvShape1Orig.ws" "groupParts352.ig"; -connectAttr "groupId352.id" "groupParts352.gi"; +connectAttr "mgear_curveCns173GroupParts.og" "mgear_curveCns173.ip[0].ig"; +connectAttr "mgear_curveCns173GroupId.id" "mgear_curveCns173.ip[0].gi"; +connectAttr "legBack_L0_root.wm" "mgear_curveCns173.inputs[0]"; +connectAttr "legBack_L0_knee.wm" "mgear_curveCns173.inputs[1]"; +connectAttr "legBack_L0_ankle.wm" "mgear_curveCns173.inputs[2]"; +connectAttr "legBack_L0_foot.wm" "mgear_curveCns173.inputs[3]"; +connectAttr "legBack_L0_eff.wm" "mgear_curveCns173.inputs[4]"; +connectAttr "mgear_curveCns173GroupId.msg" "mgear_curveCns173Set.gn" -na; +connectAttr "legBack_L0_crvShape1.iog.og[0]" "mgear_curveCns173Set.dsm" -na; +connectAttr "mgear_curveCns173.msg" "mgear_curveCns173Set.ub[0]"; +connectAttr "tweak173.og[0]" "mgear_curveCns173GroupParts.ig"; +connectAttr "mgear_curveCns173GroupId.id" "mgear_curveCns173GroupParts.gi"; +connectAttr "groupParts346.og" "tweak173.ip[0].ig"; +connectAttr "groupId346.id" "tweak173.ip[0].gi"; +connectAttr "groupId346.msg" "tweakSet173.gn" -na; +connectAttr "legBack_L0_crvShape1.iog.og[1]" "tweakSet173.dsm" -na; +connectAttr "tweak173.msg" "tweakSet173.ub[0]"; +connectAttr "legBack_L0_crvShape1Orig1.ws" "groupParts346.ig"; +connectAttr "groupId346.id" "groupParts346.gi"; connectAttr "mgear_curveCns177GroupParts.og" "mgear_curveCns177.ip[0].ig"; connectAttr "mgear_curveCns177GroupId.id" "mgear_curveCns177.ip[0].gi"; connectAttr "footBack_R0_root.wm" "mgear_curveCns177.inputs[0]"; connectAttr "footBack_R0_0_loc.wm" "mgear_curveCns177.inputs[1]"; connectAttr "footBack_R0_1_loc.wm" "mgear_curveCns177.inputs[2]"; -connectAttr "groupParts354.og" "tweak177.ip[0].ig"; -connectAttr "groupId354.id" "tweak177.ip[0].gi"; connectAttr "mgear_curveCns177GroupId.msg" "mgear_curveCns177Set.gn" -na; connectAttr "footBack_R0_crvShape.iog.og[0]" "mgear_curveCns177Set.dsm" -na; connectAttr "mgear_curveCns177.msg" "mgear_curveCns177Set.ub[0]"; connectAttr "tweak177.og[0]" "mgear_curveCns177GroupParts.ig"; connectAttr "mgear_curveCns177GroupId.id" "mgear_curveCns177GroupParts.gi"; +connectAttr "groupParts354.og" "tweak177.ip[0].ig"; +connectAttr "groupId354.id" "tweak177.ip[0].gi"; connectAttr "groupId354.msg" "tweakSet177.gn" -na; connectAttr "footBack_R0_crvShape.iog.og[1]" "tweakSet177.dsm" -na; connectAttr "tweak177.msg" "tweakSet177.ub[0]"; @@ -10802,17 +10764,35 @@ connectAttr "footBack_R0_heel.wm" "mgear_curveCns178.inputs[1]"; connectAttr "footBack_R0_outpivot.wm" "mgear_curveCns178.inputs[2]"; connectAttr "footBack_R0_heel.wm" "mgear_curveCns178.inputs[3]"; connectAttr "footBack_R0_inpivot.wm" "mgear_curveCns178.inputs[4]"; -connectAttr "groupParts356.og" "tweak178.ip[0].ig"; -connectAttr "groupId356.id" "tweak178.ip[0].gi"; connectAttr "mgear_curveCns178GroupId.msg" "mgear_curveCns178Set.gn" -na; connectAttr "footBack_R0_Shape1.iog.og[0]" "mgear_curveCns178Set.dsm" -na; connectAttr "mgear_curveCns178.msg" "mgear_curveCns178Set.ub[0]"; connectAttr "tweak178.og[0]" "mgear_curveCns178GroupParts.ig"; connectAttr "mgear_curveCns178GroupId.id" "mgear_curveCns178GroupParts.gi"; +connectAttr "groupParts356.og" "tweak178.ip[0].ig"; +connectAttr "groupId356.id" "tweak178.ip[0].gi"; connectAttr "groupId356.msg" "tweakSet178.gn" -na; connectAttr "footBack_R0_Shape1.iog.og[1]" "tweakSet178.dsm" -na; connectAttr "tweak178.msg" "tweakSet178.ub[0]"; connectAttr "footBack_R0_Shape1Orig.ws" "groupParts356.ig"; connectAttr "groupId356.id" "groupParts356.gi"; -connectAttr "defaultRenderLayer.msg" ":defaultRenderingList1.r" -na; +connectAttr "mgear_curveCns176GroupParts.og" "mgear_curveCns176.ip[0].ig"; +connectAttr "mgear_curveCns176GroupId.id" "mgear_curveCns176.ip[0].gi"; +connectAttr "legBack_R0_root.wm" "mgear_curveCns176.inputs[0]"; +connectAttr "legBack_R0_knee.wm" "mgear_curveCns176.inputs[1]"; +connectAttr "legBack_R0_ankle.wm" "mgear_curveCns176.inputs[2]"; +connectAttr "legBack_R0_foot.wm" "mgear_curveCns176.inputs[3]"; +connectAttr "legBack_R0_eff.wm" "mgear_curveCns176.inputs[4]"; +connectAttr "mgear_curveCns176GroupId.msg" "mgear_curveCns176Set.gn" -na; +connectAttr "legBack_R0_crvShape1.iog.og[0]" "mgear_curveCns176Set.dsm" -na; +connectAttr "mgear_curveCns176.msg" "mgear_curveCns176Set.ub[0]"; +connectAttr "tweak176.og[0]" "mgear_curveCns176GroupParts.ig"; +connectAttr "mgear_curveCns176GroupId.id" "mgear_curveCns176GroupParts.gi"; +connectAttr "groupParts352.og" "tweak176.ip[0].ig"; +connectAttr "groupId352.id" "tweak176.ip[0].gi"; +connectAttr "groupId352.msg" "tweakSet176.gn" -na; +connectAttr "legBack_R0_crvShape1.iog.og[1]" "tweakSet176.dsm" -na; +connectAttr "tweak176.msg" "tweakSet176.ub[0]"; +connectAttr "legBack_R0_crvShape1Orig.ws" "groupParts352.ig"; +connectAttr "groupId352.id" "groupParts352.gi"; // End of quadruped.ma From 87b877318d3cd3b075f26b036de52cd74438b462 Mon Sep 17 00:00:00 2001 From: miquelcampos Date: Tue, 17 Oct 2017 13:50:24 +0900 Subject: [PATCH 012/134] Shifter: arm_2jnt_freeTangents_01 no attribute rollRef. Fixes #63 --- .../maya/shifter/component/arm_2jnt_freeTangents_01/__init__.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/scripts/mgear/maya/shifter/component/arm_2jnt_freeTangents_01/__init__.py b/scripts/mgear/maya/shifter/component/arm_2jnt_freeTangents_01/__init__.py index 372d5be..9ce2d8b 100644 --- a/scripts/mgear/maya/shifter/component/arm_2jnt_freeTangents_01/__init__.py +++ b/scripts/mgear/maya/shifter/component/arm_2jnt_freeTangents_01/__init__.py @@ -689,4 +689,4 @@ def connect_standard(self): def connect_shoulder_01(self): self.connect_standard() - pm.parent(self.rollRef[0],self.parent_comp.ctl) + pm.parent(self.armRollRef[0],self.parent_comp.ctl) From fd79ff7a0c5a477efbefe08c70a73e8238929eae Mon Sep 17 00:00:00 2001 From: miquelcampos Date: Mon, 23 Oct 2017 19:04:17 +0900 Subject: [PATCH 013/134] Shifter: Spring chain: lock control parent and bake spring bug. Now addCtl have a new optional flag to lock the parent channels or not. fixes #67 --- SConstruct | 2 +- scripts/mgear/maya/shifter/component/__init__.py | 5 +++-- .../mgear/maya/shifter/component/chain_spring_01/__init__.py | 2 +- 3 files changed, 5 insertions(+), 4 deletions(-) diff --git a/SConstruct b/SConstruct index 5aeda06..3f8b62f 100644 --- a/SConstruct +++ b/SConstruct @@ -9,7 +9,7 @@ maya.SetupMscver() env = excons.MakeBaseEnv() -version = (2, 2, 4) +version = (2, 2, 5) versionstr = "%d.%d.%d" % version platname = {"win32": "windows", "darwin": "osx"}.get(sys.platform, "linux") outprefix = "platforms/%s/%s/%s/plug-ins" % (maya.Version(nice=True), platname, excons.arch_dir) diff --git a/scripts/mgear/maya/shifter/component/__init__.py b/scripts/mgear/maya/shifter/component/__init__.py index 5ba84b2..0667000 100644 --- a/scripts/mgear/maya/shifter/component/__init__.py +++ b/scripts/mgear/maya/shifter/component/__init__.py @@ -344,7 +344,7 @@ def getBiNormalFromPos(self, pos): return vec.getPlaneBiNormal(pos[0], pos[1], pos[2]) - def addCtl(self, parent, name, m, color, icon, tp=None, **kwargs): + def addCtl(self, parent, name, m, color, icon, tp=None, lp=True, **kwargs): """ Create the control and apply the shape, if this is alrealdy stored in the guide controllers grp. @@ -356,6 +356,7 @@ def addCtl(self, parent, name, m, color, icon, tp=None, **kwargs): color (int or list of float): The color for the control in idex or RGB. icon (str): The controls default shape. tp (dagNode): Tag Parent Control object to connect as a parent controller + lp (bool): Lock the parent controller channels kwargs (variant): Other arguments for the icon type variations. Returns: @@ -393,7 +394,7 @@ def addCtl(self, parent, name, m, color, icon, tp=None, **kwargs): self.addToGroup(ctl, ctlGrp) #lock the control parent attributes if is not a control - if parent not in self.groups[ctlGrp]: + if parent not in self.groups[ctlGrp] and lp: self.transform2Lock.append(parent) # Set the control shapes isHistoricallyInteresting diff --git a/scripts/mgear/maya/shifter/component/chain_spring_01/__init__.py b/scripts/mgear/maya/shifter/component/chain_spring_01/__init__.py index 802db64..3d6137c 100644 --- a/scripts/mgear/maya/shifter/component/chain_spring_01/__init__.py +++ b/scripts/mgear/maya/shifter/component/chain_spring_01/__init__.py @@ -76,7 +76,7 @@ def addObjects(self): fk_npo = pri.addTransform(parent, self.getName("fk%s_npo"%i), t) spring_aim = pri.addTransform(fk_npo, self.getName("spring%s_aim"%i), t) spring_cns = pri.addTransform(fk_npo, self.getName("spring%s_cns"%i), t) - fk_ctl = self.addCtl(spring_cns, "fk%s_ctl"%i, t, self.color_fk, "cube", w=dist, h=self.size*.1, d=self.size*.1, po=dt.Vector(dist*.5*self.n_factor,0,0), tp=self.previousTag) + fk_ctl = self.addCtl(spring_cns, "fk%s_ctl"%i, t, self.color_fk, "cube", w=dist, h=self.size*.1, d=self.size*.1, po=dt.Vector(dist*.5*self.n_factor,0,0), tp=self.previousTag, lp=False) self.previousTag = fk_ctl From 47b37c77b685adb1b100b24c968e551ee46b3496 Mon Sep 17 00:00:00 2001 From: miquelcampos Date: Tue, 24 Oct 2017 15:11:43 +0900 Subject: [PATCH 014/134] Simple Rig: Revision. closes #71 --- scripts/mgear/maya/simpleRig/__init__.py | 40 +++++++++++++++++++++--- 1 file changed, 35 insertions(+), 5 deletions(-) diff --git a/scripts/mgear/maya/simpleRig/__init__.py b/scripts/mgear/maya/simpleRig/__init__.py index cb1d001..0a8e61d 100644 --- a/scripts/mgear/maya/simpleRig/__init__.py +++ b/scripts/mgear/maya/simpleRig/__init__.py @@ -57,7 +57,7 @@ PGROUP_EXTENSION = "pgrp" ROOT_EXTENSION = "root" WIP = False - +iconList = ["cube", "circle", "square"] ############################################# @@ -156,6 +156,8 @@ def simpleRig(rigName="rig", wCntCtl=False, *args): # Create base structure rig = pm.createNode('transform', n=rigName) geo = pm.createNode('transform', n="geo", p=rig) + geo.attr("overrideEnabled").set(1) + geo.attr("overrideDisplayType").set(2) att.addAttribute(rig, "is_rig", "bool", True) att.addAttribute(rig, "rig_name", "string", "rig") @@ -210,7 +212,7 @@ def simpleRig(rigName="rig", wCntCtl=False, *args): # Loop selection uPivotCtl = [] if userPivots: - for uPivot in reversed(userPivots): + for uPivot in userPivots: try: pgrp = pm.PyNode(uPivot.name().split('_')[0]+"_"+PGROUP_EXTENSION) except: @@ -223,7 +225,16 @@ def simpleRig(rigName="rig", wCntCtl=False, *args): lvlParent = pm.listRelatives(uPivot, p=True)[0].name().split("_")[0]+"_ctl" lvl = pm.createNode('transform', n=uPivot.split("_")[0] + "_npo") lvl.setTransformation(t) - ctl = ico.create(lvl, uPivot.split("_")[0] + "_ctl", t, 15, icon="cube", w=bbRadio*2, h=bbRadio*2, d=bbRadio*2) + icon = iconList[uPivot.attr("ctlIcon").get()] + ctlKeyable = [] + if uPivot.attr("animTranslation").get(): + ctlKeyable = ctlKeyable + ["tx", "ty", "tz"] + if uPivot.attr("animRotation").get(): + ctlKeyable = ctlKeyable + ["ro", "rx", "ry", "rz"] + if uPivot.attr("animScale").get(): + ctlKeyable = ctlKeyable + ["sx", "sy", "sz"] + ctl = ico.create(lvl, uPivot.split("_")[0] + "_ctl", t, 15, icon=icon, w=bbRadio*2, h=bbRadio*2, d=bbRadio*2) + att.setKeyableAttributes(ctl, ctlKeyable) pm.parent(lvl, lvlParent) att.setKeyableAttributes(lvl, []) uPivotCtl.append(ctl) @@ -269,6 +280,21 @@ def simpleRig(rigName="rig", wCntCtl=False, *args): pm.connectAttr(deformersSet.attr("message"), "rig.rigGroups[3]") pm.connectAttr(compGroup.attr("message"), "rig.rigGroups[4]") + if oSel.hasAttr("animSets") and oSel.attr("animSets").get(): + # create anim Sets + pm.sets(n="animNodes", em=True) + animNodes_set = pm.PyNode("animNodes") + + pm.sets(n="animSets", em=True) + animSets_set = pm.PyNode("animSets") + + #adding set + pm.sets(animSets_set, add=animNodes_set) + pm.sets(animNodes_set, add=ctlSet.members()) + + pm.connectAttr(animSets_set.attr("message"), "rig.rigGroups[5]") + pm.connectAttr(animNodes_set.attr("message"), "rig.rigGroups[6]") + #create dagPose pm.select(ctlSet) node = pm.dagPose(save=True, selection=True) @@ -301,7 +327,11 @@ def setUserRigPivot(*args): bbCenter, bbRadio, bb = bBoxData(listSelection, yZero=False) t = tra.getTransformFromPos(bbCenter) - axis = ico.axis(parent=parent, name=oName +"_"+PIVOT_EXTENSION, width=1, color=[0,0,0], m=t) + axis = ico.axis(parent=parent, name=oName +"_"+PIVOT_EXTENSION, width=bbRadio*2, color=[0,0,0], m=t) + att.addAttribute(axis, "animTranslation", "bool", True) + att.addAttribute(axis, "animRotation", "bool", True) + att.addAttribute(axis, "animScale", "bool", True) + att.addEnumAttribute(axis, "ctlIcon", 0, iconList) pgrp = pm.group(listSelection, p=parent, n=oName + "_"+ PGROUP_EXTENSION) return axis, pgrp else: @@ -361,8 +391,8 @@ def createRoot(*args): dialog.exec_() oName = dialog.rootName if oName: - group = pm.group(n=oName + "_" + ROOT_EXTENSION) + att.addAttribute(group, "animSets", "bool", False) return group From e163f0a4fa2458a89cd8bb004bb5829e7c4c4941 Mon Sep 17 00:00:00 2001 From: miquelcampos Date: Wed, 25 Oct 2017 14:30:56 +0900 Subject: [PATCH 015/134] Shifter: Undo Build from selection crash maya. fixes #72 --- scripts/mGear_guidesTemplates.py | 2 ++ scripts/mgear/maya/shifter/gui.py | 3 ++- 2 files changed, 4 insertions(+), 1 deletion(-) diff --git a/scripts/mGear_guidesTemplates.py b/scripts/mGear_guidesTemplates.py index 13d9d8c..3f5f086 100644 --- a/scripts/mGear_guidesTemplates.py +++ b/scripts/mGear_guidesTemplates.py @@ -32,6 +32,7 @@ import mgear.maya.shifter.gui as gui import mgear.maya.shifter as rg import mgear.maya.shifter.component as comp +import mgear.maya.utils as mutils @@ -41,6 +42,7 @@ def guideUI(*args): """ gui.Guide_UI() +@mutils.one_undo def buildFromSelection(*args): """ Build the rig from the guide root selection or a component root. diff --git a/scripts/mgear/maya/shifter/gui.py b/scripts/mgear/maya/shifter/gui.py index 52cb2d9..f673d43 100644 --- a/scripts/mgear/maya/shifter/gui.py +++ b/scripts/mgear/maya/shifter/gui.py @@ -40,6 +40,7 @@ import mgear.maya.shifter as shifter import mgear.maya.skin as skin import mgear.maya.pyqt as gqt +import mgear.maya.utils as mutils GUIDE_UI_WINDOW_NAME = "guide_UI_window" GUIDE_DOCK_NAME = "Guide_Components" @@ -147,7 +148,7 @@ def drawComp(self, compType, *args): guide.drawNewComponent(parent, compType) - + @mutils.one_undo def buildFromSelection(self, *args): print mgear.logInfos() From a7c8350de356e15ec3d7d7d82acdf3a452bcc4ab Mon Sep 17 00:00:00 2001 From: miquelcampos Date: Fri, 27 Oct 2017 11:45:44 +0900 Subject: [PATCH 016/134] Shifter: Control_01: rotation axis is missing Y lock. Fixes #74 --- .../mgear/maya/shifter/component/control_01/__init__.py | 8 +++++--- 1 file changed, 5 insertions(+), 3 deletions(-) diff --git a/scripts/mgear/maya/shifter/component/control_01/__init__.py b/scripts/mgear/maya/shifter/component/control_01/__init__.py index 830d38b..13bb3e4 100644 --- a/scripts/mgear/maya/shifter/component/control_01/__init__.py +++ b/scripts/mgear/maya/shifter/component/control_01/__init__.py @@ -61,15 +61,17 @@ def addObjects(self): d=self.settings["ctlSize"]*self.size, tp=self.parentCtlTag) + #we need to set the rotation order before lock any rotation axis + if self.settings["k_ro"]: + rotOderList = ["XYZ", "YZX", "ZXY", "XZY", "YXZ", "ZYX"] + att.setRotOrder(self.ctl, rotOderList[self.settings["default_rotorder"]]) + params = [ s for s in ["tx", "ty", "tz", "ro", "rx", "ry", "rz", "sx", "sy", "sz"] if self.settings["k_"+s] ] att.setKeyableAttributes(self.ctl, params) if self.settings["joint"]: self.jnt_pos.append([self.ctl, 0, None, self.settings["uniScale"]]) - if self.settings["k_ro"]: - rotOderList = ["XYZ", "YZX", "ZXY", "XZY", "YXZ", "ZYX"] - att.setRotOrder(self.ctl, rotOderList[self.settings["default_rotorder"]]) def addAttributes(self): # Ref From f0151833152953e69cc878924cf42fe8a05f27b0 Mon Sep 17 00:00:00 2001 From: miquelcampos Date: Fri, 27 Oct 2017 17:48:28 +0900 Subject: [PATCH 017/134] Synoptic: spring bake util. Closes #61 --- .../maya/synoptic/tabs/baker/__init__.py | 54 + .../mgear/maya/synoptic/tabs/baker/widget.py | 340 +++++++ .../mgear/maya/synoptic/tabs/baker/widget.ui | 924 ++++++++++++++++++ scripts/mgear/maya/synoptic/utils.py | 27 +- scripts/mgear/maya/synoptic/widgets.py | 11 +- 5 files changed, 1351 insertions(+), 5 deletions(-) create mode 100644 scripts/mgear/maya/synoptic/tabs/baker/__init__.py create mode 100644 scripts/mgear/maya/synoptic/tabs/baker/widget.py create mode 100644 scripts/mgear/maya/synoptic/tabs/baker/widget.ui diff --git a/scripts/mgear/maya/synoptic/tabs/baker/__init__.py b/scripts/mgear/maya/synoptic/tabs/baker/__init__.py new file mode 100644 index 0000000..68a11fa --- /dev/null +++ b/scripts/mgear/maya/synoptic/tabs/baker/__init__.py @@ -0,0 +1,54 @@ +# MGEAR is under the terms of the MIT License + +# Copyright (c) 2016 Jeremie Passerin, Miquel Campos + +# Permission is hereby granted, free of charge, to any person obtaining a copy +# of this software and associated documentation files (the "Software"), to deal +# in the Software without restriction, including without limitation the rights +# to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +# copies of the Software, and to permit persons to whom the Software is +# furnished to do so, subject to the following conditions: + +# The above copyright notice and this permission notice shall be included in all +# copies or substantial portions of the Software. + +# THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +# IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +# FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +# AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +# LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +# OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE +# SOFTWARE. + +# Author: Jeremie Passerin geerem@hotmail.com www.jeremiepasserin.com +# Author: Miquel Campos hello@miquel-campos.com www.miquel-campos.com +# Date: 2016 / 10 / 10 + +################################################## +# GLOBAL +################################################## +import os +import mgear.maya.pyqt as gqt +import mgear.maya.synoptic.utils as syn_uti + +from mgear.maya.synoptic.tabs import MainSynopticTab +import widget as wui + +QtGui, QtCore, QtWidgets, wrapInstance, shiboken = gqt.qt_import(True) + + +################################################## +# SYNOPTIC TAB WIDGET +################################################## + + +class SynopticTab(MainSynopticTab, wui.Ui_baker): + + description = "baker" + name = "baker" + + + # ============================================ + # INIT + def __init__(self, parent=None): + super(SynopticTab, self).__init__(self, parent) diff --git a/scripts/mgear/maya/synoptic/tabs/baker/widget.py b/scripts/mgear/maya/synoptic/tabs/baker/widget.py new file mode 100644 index 0000000..22361d3 --- /dev/null +++ b/scripts/mgear/maya/synoptic/tabs/baker/widget.py @@ -0,0 +1,340 @@ +# MGEAR is under the terms of the MIT License + +# Copyright (c) 2016 Jeremie Passerin, Miquel Campos + +# Permission is hereby granted, free of charge, to any person obtaining a copy +# of this software and associated documentation files (the "Software"), to deal +# in the Software without restriction, including without limitation the rights +# to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +# copies of the Software, and to permit persons to whom the Software is +# furnished to do so, subject to the following conditions: + +# The above copyright notice and this permission notice shall be included in all +# copies or substantial portions of the Software. + +# THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +# IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +# FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +# AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +# LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +# OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE +# SOFTWARE. + +# Author: Jeremie Passerin geerem@hotmail.com www.jeremiepasserin.com +# Author: Miquel Campos hello@miquel-campos.com www.miquel-campos.com +# Date: 2016 / 10 / 10 + +import mgear.maya.pyqt as gqt +QtGui, QtCore, QtWidgets, wrapInstance = gqt.qt_import() + + +class Ui_baker(object): + def setupUi(self, baker): + baker.setObjectName("baker") + baker.resize(325, 840) + baker.setMinimumSize(QtCore.QSize(325, 790)) + self.gridLayout = QtWidgets.QGridLayout(baker) + self.gridLayout.setObjectName("gridLayout") + self.verticalLayout = QtWidgets.QVBoxLayout() + self.verticalLayout.setObjectName("verticalLayout") + self.bake = bakeSprings(baker) + palette = QtGui.QPalette() + brush = QtGui.QBrush(QtGui.QColor(0, 0, 0)) + brush.setStyle(QtCore.Qt.SolidPattern) + palette.setBrush(QtGui.QPalette.Active, QtGui.QPalette.WindowText, brush) + brush = QtGui.QBrush(QtGui.QColor(98, 214, 150)) + brush.setStyle(QtCore.Qt.SolidPattern) + palette.setBrush(QtGui.QPalette.Active, QtGui.QPalette.Button, brush) + brush = QtGui.QBrush(QtGui.QColor(183, 255, 215)) + brush.setStyle(QtCore.Qt.SolidPattern) + palette.setBrush(QtGui.QPalette.Active, QtGui.QPalette.Light, brush) + brush = QtGui.QBrush(QtGui.QColor(140, 234, 182)) + brush.setStyle(QtCore.Qt.SolidPattern) + palette.setBrush(QtGui.QPalette.Active, QtGui.QPalette.Midlight, brush) + brush = QtGui.QBrush(QtGui.QColor(49, 107, 75)) + brush.setStyle(QtCore.Qt.SolidPattern) + palette.setBrush(QtGui.QPalette.Active, QtGui.QPalette.Dark, brush) + brush = QtGui.QBrush(QtGui.QColor(65, 143, 100)) + brush.setStyle(QtCore.Qt.SolidPattern) + palette.setBrush(QtGui.QPalette.Active, QtGui.QPalette.Mid, brush) + brush = QtGui.QBrush(QtGui.QColor(0, 0, 0)) + brush.setStyle(QtCore.Qt.SolidPattern) + palette.setBrush(QtGui.QPalette.Active, QtGui.QPalette.Text, brush) + brush = QtGui.QBrush(QtGui.QColor(255, 255, 255)) + brush.setStyle(QtCore.Qt.SolidPattern) + palette.setBrush(QtGui.QPalette.Active, QtGui.QPalette.BrightText, brush) + brush = QtGui.QBrush(QtGui.QColor(0, 0, 0)) + brush.setStyle(QtCore.Qt.SolidPattern) + palette.setBrush(QtGui.QPalette.Active, QtGui.QPalette.ButtonText, brush) + brush = QtGui.QBrush(QtGui.QColor(255, 255, 255)) + brush.setStyle(QtCore.Qt.SolidPattern) + palette.setBrush(QtGui.QPalette.Active, QtGui.QPalette.Base, brush) + brush = QtGui.QBrush(QtGui.QColor(98, 214, 150)) + brush.setStyle(QtCore.Qt.SolidPattern) + palette.setBrush(QtGui.QPalette.Active, QtGui.QPalette.Window, brush) + brush = QtGui.QBrush(QtGui.QColor(0, 0, 0)) + brush.setStyle(QtCore.Qt.SolidPattern) + palette.setBrush(QtGui.QPalette.Active, QtGui.QPalette.Shadow, brush) + brush = QtGui.QBrush(QtGui.QColor(176, 234, 202)) + brush.setStyle(QtCore.Qt.SolidPattern) + palette.setBrush(QtGui.QPalette.Active, QtGui.QPalette.AlternateBase, brush) + brush = QtGui.QBrush(QtGui.QColor(255, 255, 220)) + brush.setStyle(QtCore.Qt.SolidPattern) + palette.setBrush(QtGui.QPalette.Active, QtGui.QPalette.ToolTipBase, brush) + brush = QtGui.QBrush(QtGui.QColor(0, 0, 0)) + brush.setStyle(QtCore.Qt.SolidPattern) + palette.setBrush(QtGui.QPalette.Active, QtGui.QPalette.ToolTipText, brush) + brush = QtGui.QBrush(QtGui.QColor(0, 0, 0)) + brush.setStyle(QtCore.Qt.SolidPattern) + palette.setBrush(QtGui.QPalette.Inactive, QtGui.QPalette.WindowText, brush) + brush = QtGui.QBrush(QtGui.QColor(98, 214, 150)) + brush.setStyle(QtCore.Qt.SolidPattern) + palette.setBrush(QtGui.QPalette.Inactive, QtGui.QPalette.Button, brush) + brush = QtGui.QBrush(QtGui.QColor(183, 255, 215)) + brush.setStyle(QtCore.Qt.SolidPattern) + palette.setBrush(QtGui.QPalette.Inactive, QtGui.QPalette.Light, brush) + brush = QtGui.QBrush(QtGui.QColor(140, 234, 182)) + brush.setStyle(QtCore.Qt.SolidPattern) + palette.setBrush(QtGui.QPalette.Inactive, QtGui.QPalette.Midlight, brush) + brush = QtGui.QBrush(QtGui.QColor(49, 107, 75)) + brush.setStyle(QtCore.Qt.SolidPattern) + palette.setBrush(QtGui.QPalette.Inactive, QtGui.QPalette.Dark, brush) + brush = QtGui.QBrush(QtGui.QColor(65, 143, 100)) + brush.setStyle(QtCore.Qt.SolidPattern) + palette.setBrush(QtGui.QPalette.Inactive, QtGui.QPalette.Mid, brush) + brush = QtGui.QBrush(QtGui.QColor(0, 0, 0)) + brush.setStyle(QtCore.Qt.SolidPattern) + palette.setBrush(QtGui.QPalette.Inactive, QtGui.QPalette.Text, brush) + brush = QtGui.QBrush(QtGui.QColor(255, 255, 255)) + brush.setStyle(QtCore.Qt.SolidPattern) + palette.setBrush(QtGui.QPalette.Inactive, QtGui.QPalette.BrightText, brush) + brush = QtGui.QBrush(QtGui.QColor(0, 0, 0)) + brush.setStyle(QtCore.Qt.SolidPattern) + palette.setBrush(QtGui.QPalette.Inactive, QtGui.QPalette.ButtonText, brush) + brush = QtGui.QBrush(QtGui.QColor(255, 255, 255)) + brush.setStyle(QtCore.Qt.SolidPattern) + palette.setBrush(QtGui.QPalette.Inactive, QtGui.QPalette.Base, brush) + brush = QtGui.QBrush(QtGui.QColor(98, 214, 150)) + brush.setStyle(QtCore.Qt.SolidPattern) + palette.setBrush(QtGui.QPalette.Inactive, QtGui.QPalette.Window, brush) + brush = QtGui.QBrush(QtGui.QColor(0, 0, 0)) + brush.setStyle(QtCore.Qt.SolidPattern) + palette.setBrush(QtGui.QPalette.Inactive, QtGui.QPalette.Shadow, brush) + brush = QtGui.QBrush(QtGui.QColor(176, 234, 202)) + brush.setStyle(QtCore.Qt.SolidPattern) + palette.setBrush(QtGui.QPalette.Inactive, QtGui.QPalette.AlternateBase, brush) + brush = QtGui.QBrush(QtGui.QColor(255, 255, 220)) + brush.setStyle(QtCore.Qt.SolidPattern) + palette.setBrush(QtGui.QPalette.Inactive, QtGui.QPalette.ToolTipBase, brush) + brush = QtGui.QBrush(QtGui.QColor(0, 0, 0)) + brush.setStyle(QtCore.Qt.SolidPattern) + palette.setBrush(QtGui.QPalette.Inactive, QtGui.QPalette.ToolTipText, brush) + brush = QtGui.QBrush(QtGui.QColor(49, 107, 75)) + brush.setStyle(QtCore.Qt.SolidPattern) + palette.setBrush(QtGui.QPalette.Disabled, QtGui.QPalette.WindowText, brush) + brush = QtGui.QBrush(QtGui.QColor(98, 214, 150)) + brush.setStyle(QtCore.Qt.SolidPattern) + palette.setBrush(QtGui.QPalette.Disabled, QtGui.QPalette.Button, brush) + brush = QtGui.QBrush(QtGui.QColor(183, 255, 215)) + brush.setStyle(QtCore.Qt.SolidPattern) + palette.setBrush(QtGui.QPalette.Disabled, QtGui.QPalette.Light, brush) + brush = QtGui.QBrush(QtGui.QColor(140, 234, 182)) + brush.setStyle(QtCore.Qt.SolidPattern) + palette.setBrush(QtGui.QPalette.Disabled, QtGui.QPalette.Midlight, brush) + brush = QtGui.QBrush(QtGui.QColor(49, 107, 75)) + brush.setStyle(QtCore.Qt.SolidPattern) + palette.setBrush(QtGui.QPalette.Disabled, QtGui.QPalette.Dark, brush) + brush = QtGui.QBrush(QtGui.QColor(65, 143, 100)) + brush.setStyle(QtCore.Qt.SolidPattern) + palette.setBrush(QtGui.QPalette.Disabled, QtGui.QPalette.Mid, brush) + brush = QtGui.QBrush(QtGui.QColor(49, 107, 75)) + brush.setStyle(QtCore.Qt.SolidPattern) + palette.setBrush(QtGui.QPalette.Disabled, QtGui.QPalette.Text, brush) + brush = QtGui.QBrush(QtGui.QColor(255, 255, 255)) + brush.setStyle(QtCore.Qt.SolidPattern) + palette.setBrush(QtGui.QPalette.Disabled, QtGui.QPalette.BrightText, brush) + brush = QtGui.QBrush(QtGui.QColor(49, 107, 75)) + brush.setStyle(QtCore.Qt.SolidPattern) + palette.setBrush(QtGui.QPalette.Disabled, QtGui.QPalette.ButtonText, brush) + brush = QtGui.QBrush(QtGui.QColor(98, 214, 150)) + brush.setStyle(QtCore.Qt.SolidPattern) + palette.setBrush(QtGui.QPalette.Disabled, QtGui.QPalette.Base, brush) + brush = QtGui.QBrush(QtGui.QColor(98, 214, 150)) + brush.setStyle(QtCore.Qt.SolidPattern) + palette.setBrush(QtGui.QPalette.Disabled, QtGui.QPalette.Window, brush) + brush = QtGui.QBrush(QtGui.QColor(0, 0, 0)) + brush.setStyle(QtCore.Qt.SolidPattern) + palette.setBrush(QtGui.QPalette.Disabled, QtGui.QPalette.Shadow, brush) + brush = QtGui.QBrush(QtGui.QColor(98, 214, 150)) + brush.setStyle(QtCore.Qt.SolidPattern) + palette.setBrush(QtGui.QPalette.Disabled, QtGui.QPalette.AlternateBase, brush) + brush = QtGui.QBrush(QtGui.QColor(255, 255, 220)) + brush.setStyle(QtCore.Qt.SolidPattern) + palette.setBrush(QtGui.QPalette.Disabled, QtGui.QPalette.ToolTipBase, brush) + brush = QtGui.QBrush(QtGui.QColor(0, 0, 0)) + brush.setStyle(QtCore.Qt.SolidPattern) + palette.setBrush(QtGui.QPalette.Disabled, QtGui.QPalette.ToolTipText, brush) + self.bake.setPalette(palette) + self.bake.setMouseTracking(False) + self.bake.setAutoDefault(False) + self.bake.setDefault(False) + self.bake.setFlat(False) + self.bake.setObjectName("bake") + self.verticalLayout.addWidget(self.bake) + self.clearBake = clearSprings(baker) + palette = QtGui.QPalette() + brush = QtGui.QBrush(QtGui.QColor(0, 0, 0)) + brush.setStyle(QtCore.Qt.SolidPattern) + palette.setBrush(QtGui.QPalette.Active, QtGui.QPalette.WindowText, brush) + brush = QtGui.QBrush(QtGui.QColor(98, 214, 150)) + brush.setStyle(QtCore.Qt.SolidPattern) + palette.setBrush(QtGui.QPalette.Active, QtGui.QPalette.Button, brush) + brush = QtGui.QBrush(QtGui.QColor(183, 255, 215)) + brush.setStyle(QtCore.Qt.SolidPattern) + palette.setBrush(QtGui.QPalette.Active, QtGui.QPalette.Light, brush) + brush = QtGui.QBrush(QtGui.QColor(140, 234, 182)) + brush.setStyle(QtCore.Qt.SolidPattern) + palette.setBrush(QtGui.QPalette.Active, QtGui.QPalette.Midlight, brush) + brush = QtGui.QBrush(QtGui.QColor(49, 107, 75)) + brush.setStyle(QtCore.Qt.SolidPattern) + palette.setBrush(QtGui.QPalette.Active, QtGui.QPalette.Dark, brush) + brush = QtGui.QBrush(QtGui.QColor(65, 143, 100)) + brush.setStyle(QtCore.Qt.SolidPattern) + palette.setBrush(QtGui.QPalette.Active, QtGui.QPalette.Mid, brush) + brush = QtGui.QBrush(QtGui.QColor(0, 0, 0)) + brush.setStyle(QtCore.Qt.SolidPattern) + palette.setBrush(QtGui.QPalette.Active, QtGui.QPalette.Text, brush) + brush = QtGui.QBrush(QtGui.QColor(255, 255, 255)) + brush.setStyle(QtCore.Qt.SolidPattern) + palette.setBrush(QtGui.QPalette.Active, QtGui.QPalette.BrightText, brush) + brush = QtGui.QBrush(QtGui.QColor(0, 0, 0)) + brush.setStyle(QtCore.Qt.SolidPattern) + palette.setBrush(QtGui.QPalette.Active, QtGui.QPalette.ButtonText, brush) + brush = QtGui.QBrush(QtGui.QColor(255, 255, 255)) + brush.setStyle(QtCore.Qt.SolidPattern) + palette.setBrush(QtGui.QPalette.Active, QtGui.QPalette.Base, brush) + brush = QtGui.QBrush(QtGui.QColor(98, 214, 150)) + brush.setStyle(QtCore.Qt.SolidPattern) + palette.setBrush(QtGui.QPalette.Active, QtGui.QPalette.Window, brush) + brush = QtGui.QBrush(QtGui.QColor(0, 0, 0)) + brush.setStyle(QtCore.Qt.SolidPattern) + palette.setBrush(QtGui.QPalette.Active, QtGui.QPalette.Shadow, brush) + brush = QtGui.QBrush(QtGui.QColor(176, 234, 202)) + brush.setStyle(QtCore.Qt.SolidPattern) + palette.setBrush(QtGui.QPalette.Active, QtGui.QPalette.AlternateBase, brush) + brush = QtGui.QBrush(QtGui.QColor(255, 255, 220)) + brush.setStyle(QtCore.Qt.SolidPattern) + palette.setBrush(QtGui.QPalette.Active, QtGui.QPalette.ToolTipBase, brush) + brush = QtGui.QBrush(QtGui.QColor(0, 0, 0)) + brush.setStyle(QtCore.Qt.SolidPattern) + palette.setBrush(QtGui.QPalette.Active, QtGui.QPalette.ToolTipText, brush) + brush = QtGui.QBrush(QtGui.QColor(0, 0, 0)) + brush.setStyle(QtCore.Qt.SolidPattern) + palette.setBrush(QtGui.QPalette.Inactive, QtGui.QPalette.WindowText, brush) + brush = QtGui.QBrush(QtGui.QColor(98, 214, 150)) + brush.setStyle(QtCore.Qt.SolidPattern) + palette.setBrush(QtGui.QPalette.Inactive, QtGui.QPalette.Button, brush) + brush = QtGui.QBrush(QtGui.QColor(183, 255, 215)) + brush.setStyle(QtCore.Qt.SolidPattern) + palette.setBrush(QtGui.QPalette.Inactive, QtGui.QPalette.Light, brush) + brush = QtGui.QBrush(QtGui.QColor(140, 234, 182)) + brush.setStyle(QtCore.Qt.SolidPattern) + palette.setBrush(QtGui.QPalette.Inactive, QtGui.QPalette.Midlight, brush) + brush = QtGui.QBrush(QtGui.QColor(49, 107, 75)) + brush.setStyle(QtCore.Qt.SolidPattern) + palette.setBrush(QtGui.QPalette.Inactive, QtGui.QPalette.Dark, brush) + brush = QtGui.QBrush(QtGui.QColor(65, 143, 100)) + brush.setStyle(QtCore.Qt.SolidPattern) + palette.setBrush(QtGui.QPalette.Inactive, QtGui.QPalette.Mid, brush) + brush = QtGui.QBrush(QtGui.QColor(0, 0, 0)) + brush.setStyle(QtCore.Qt.SolidPattern) + palette.setBrush(QtGui.QPalette.Inactive, QtGui.QPalette.Text, brush) + brush = QtGui.QBrush(QtGui.QColor(255, 255, 255)) + brush.setStyle(QtCore.Qt.SolidPattern) + palette.setBrush(QtGui.QPalette.Inactive, QtGui.QPalette.BrightText, brush) + brush = QtGui.QBrush(QtGui.QColor(0, 0, 0)) + brush.setStyle(QtCore.Qt.SolidPattern) + palette.setBrush(QtGui.QPalette.Inactive, QtGui.QPalette.ButtonText, brush) + brush = QtGui.QBrush(QtGui.QColor(255, 255, 255)) + brush.setStyle(QtCore.Qt.SolidPattern) + palette.setBrush(QtGui.QPalette.Inactive, QtGui.QPalette.Base, brush) + brush = QtGui.QBrush(QtGui.QColor(98, 214, 150)) + brush.setStyle(QtCore.Qt.SolidPattern) + palette.setBrush(QtGui.QPalette.Inactive, QtGui.QPalette.Window, brush) + brush = QtGui.QBrush(QtGui.QColor(0, 0, 0)) + brush.setStyle(QtCore.Qt.SolidPattern) + palette.setBrush(QtGui.QPalette.Inactive, QtGui.QPalette.Shadow, brush) + brush = QtGui.QBrush(QtGui.QColor(176, 234, 202)) + brush.setStyle(QtCore.Qt.SolidPattern) + palette.setBrush(QtGui.QPalette.Inactive, QtGui.QPalette.AlternateBase, brush) + brush = QtGui.QBrush(QtGui.QColor(255, 255, 220)) + brush.setStyle(QtCore.Qt.SolidPattern) + palette.setBrush(QtGui.QPalette.Inactive, QtGui.QPalette.ToolTipBase, brush) + brush = QtGui.QBrush(QtGui.QColor(0, 0, 0)) + brush.setStyle(QtCore.Qt.SolidPattern) + palette.setBrush(QtGui.QPalette.Inactive, QtGui.QPalette.ToolTipText, brush) + brush = QtGui.QBrush(QtGui.QColor(49, 107, 75)) + brush.setStyle(QtCore.Qt.SolidPattern) + palette.setBrush(QtGui.QPalette.Disabled, QtGui.QPalette.WindowText, brush) + brush = QtGui.QBrush(QtGui.QColor(98, 214, 150)) + brush.setStyle(QtCore.Qt.SolidPattern) + palette.setBrush(QtGui.QPalette.Disabled, QtGui.QPalette.Button, brush) + brush = QtGui.QBrush(QtGui.QColor(183, 255, 215)) + brush.setStyle(QtCore.Qt.SolidPattern) + palette.setBrush(QtGui.QPalette.Disabled, QtGui.QPalette.Light, brush) + brush = QtGui.QBrush(QtGui.QColor(140, 234, 182)) + brush.setStyle(QtCore.Qt.SolidPattern) + palette.setBrush(QtGui.QPalette.Disabled, QtGui.QPalette.Midlight, brush) + brush = QtGui.QBrush(QtGui.QColor(49, 107, 75)) + brush.setStyle(QtCore.Qt.SolidPattern) + palette.setBrush(QtGui.QPalette.Disabled, QtGui.QPalette.Dark, brush) + brush = QtGui.QBrush(QtGui.QColor(65, 143, 100)) + brush.setStyle(QtCore.Qt.SolidPattern) + palette.setBrush(QtGui.QPalette.Disabled, QtGui.QPalette.Mid, brush) + brush = QtGui.QBrush(QtGui.QColor(49, 107, 75)) + brush.setStyle(QtCore.Qt.SolidPattern) + palette.setBrush(QtGui.QPalette.Disabled, QtGui.QPalette.Text, brush) + brush = QtGui.QBrush(QtGui.QColor(255, 255, 255)) + brush.setStyle(QtCore.Qt.SolidPattern) + palette.setBrush(QtGui.QPalette.Disabled, QtGui.QPalette.BrightText, brush) + brush = QtGui.QBrush(QtGui.QColor(49, 107, 75)) + brush.setStyle(QtCore.Qt.SolidPattern) + palette.setBrush(QtGui.QPalette.Disabled, QtGui.QPalette.ButtonText, brush) + brush = QtGui.QBrush(QtGui.QColor(98, 214, 150)) + brush.setStyle(QtCore.Qt.SolidPattern) + palette.setBrush(QtGui.QPalette.Disabled, QtGui.QPalette.Base, brush) + brush = QtGui.QBrush(QtGui.QColor(98, 214, 150)) + brush.setStyle(QtCore.Qt.SolidPattern) + palette.setBrush(QtGui.QPalette.Disabled, QtGui.QPalette.Window, brush) + brush = QtGui.QBrush(QtGui.QColor(0, 0, 0)) + brush.setStyle(QtCore.Qt.SolidPattern) + palette.setBrush(QtGui.QPalette.Disabled, QtGui.QPalette.Shadow, brush) + brush = QtGui.QBrush(QtGui.QColor(98, 214, 150)) + brush.setStyle(QtCore.Qt.SolidPattern) + palette.setBrush(QtGui.QPalette.Disabled, QtGui.QPalette.AlternateBase, brush) + brush = QtGui.QBrush(QtGui.QColor(255, 255, 220)) + brush.setStyle(QtCore.Qt.SolidPattern) + palette.setBrush(QtGui.QPalette.Disabled, QtGui.QPalette.ToolTipBase, brush) + brush = QtGui.QBrush(QtGui.QColor(0, 0, 0)) + brush.setStyle(QtCore.Qt.SolidPattern) + palette.setBrush(QtGui.QPalette.Disabled, QtGui.QPalette.ToolTipText, brush) + self.clearBake.setPalette(palette) + self.clearBake.setMouseTracking(False) + self.clearBake.setAutoDefault(False) + self.clearBake.setDefault(False) + self.clearBake.setFlat(False) + self.clearBake.setObjectName("clearBake") + self.verticalLayout.addWidget(self.clearBake) + spacerItem = QtWidgets.QSpacerItem(20, 40, QtWidgets.QSizePolicy.Minimum, QtWidgets.QSizePolicy.Expanding) + self.verticalLayout.addItem(spacerItem) + self.gridLayout.addLayout(self.verticalLayout, 0, 0, 1, 1) + + self.retranslateUi(baker) + QtCore.QMetaObject.connectSlotsByName(baker) + + def retranslateUi(self, baker): + baker.setWindowTitle(gqt.fakeTranslate("baker", "Form", None, -1)) + self.bake.setText(gqt.fakeTranslate("baker", "Bake Springs", None, -1)) + self.clearBake.setText(gqt.fakeTranslate("baker", "Clear Baked Springs", None, -1)) + +from mgear.maya.synoptic.widgets import clearSprings, bakeSprings diff --git a/scripts/mgear/maya/synoptic/tabs/baker/widget.ui b/scripts/mgear/maya/synoptic/tabs/baker/widget.ui new file mode 100644 index 0000000..60d1bf3 --- /dev/null +++ b/scripts/mgear/maya/synoptic/tabs/baker/widget.ui @@ -0,0 +1,924 @@ + + + baker + + + + 0 + 0 + 325 + 840 + + + + + 325 + 790 + + + + Form + + + + + + + + + + + + + 0 + 0 + 0 + + + + + + + 98 + 214 + 150 + + + + + + + 183 + 255 + 215 + + + + + + + 140 + 234 + 182 + + + + + + + 49 + 107 + 75 + + + + + + + 65 + 143 + 100 + + + + + + + 0 + 0 + 0 + + + + + + + 255 + 255 + 255 + + + + + + + 0 + 0 + 0 + + + + + + + 255 + 255 + 255 + + + + + + + 98 + 214 + 150 + + + + + + + 0 + 0 + 0 + + + + + + + 176 + 234 + 202 + + + + + + + 255 + 255 + 220 + + + + + + + 0 + 0 + 0 + + + + + + + + + 0 + 0 + 0 + + + + + + + 98 + 214 + 150 + + + + + + + 183 + 255 + 215 + + + + + + + 140 + 234 + 182 + + + + + + + 49 + 107 + 75 + + + + + + + 65 + 143 + 100 + + + + + + + 0 + 0 + 0 + + + + + + + 255 + 255 + 255 + + + + + + + 0 + 0 + 0 + + + + + + + 255 + 255 + 255 + + + + + + + 98 + 214 + 150 + + + + + + + 0 + 0 + 0 + + + + + + + 176 + 234 + 202 + + + + + + + 255 + 255 + 220 + + + + + + + 0 + 0 + 0 + + + + + + + + + 49 + 107 + 75 + + + + + + + 98 + 214 + 150 + + + + + + + 183 + 255 + 215 + + + + + + + 140 + 234 + 182 + + + + + + + 49 + 107 + 75 + + + + + + + 65 + 143 + 100 + + + + + + + 49 + 107 + 75 + + + + + + + 255 + 255 + 255 + + + + + + + 49 + 107 + 75 + + + + + + + 98 + 214 + 150 + + + + + + + 98 + 214 + 150 + + + + + + + 0 + 0 + 0 + + + + + + + 98 + 214 + 150 + + + + + + + 255 + 255 + 220 + + + + + + + 0 + 0 + 0 + + + + + + + + false + + + Bake Springs + + + false + + + false + + + false + + + + + + + + + + + + 0 + 0 + 0 + + + + + + + 98 + 214 + 150 + + + + + + + 183 + 255 + 215 + + + + + + + 140 + 234 + 182 + + + + + + + 49 + 107 + 75 + + + + + + + 65 + 143 + 100 + + + + + + + 0 + 0 + 0 + + + + + + + 255 + 255 + 255 + + + + + + + 0 + 0 + 0 + + + + + + + 255 + 255 + 255 + + + + + + + 98 + 214 + 150 + + + + + + + 0 + 0 + 0 + + + + + + + 176 + 234 + 202 + + + + + + + 255 + 255 + 220 + + + + + + + 0 + 0 + 0 + + + + + + + + + 0 + 0 + 0 + + + + + + + 98 + 214 + 150 + + + + + + + 183 + 255 + 215 + + + + + + + 140 + 234 + 182 + + + + + + + 49 + 107 + 75 + + + + + + + 65 + 143 + 100 + + + + + + + 0 + 0 + 0 + + + + + + + 255 + 255 + 255 + + + + + + + 0 + 0 + 0 + + + + + + + 255 + 255 + 255 + + + + + + + 98 + 214 + 150 + + + + + + + 0 + 0 + 0 + + + + + + + 176 + 234 + 202 + + + + + + + 255 + 255 + 220 + + + + + + + 0 + 0 + 0 + + + + + + + + + 49 + 107 + 75 + + + + + + + 98 + 214 + 150 + + + + + + + 183 + 255 + 215 + + + + + + + 140 + 234 + 182 + + + + + + + 49 + 107 + 75 + + + + + + + 65 + 143 + 100 + + + + + + + 49 + 107 + 75 + + + + + + + 255 + 255 + 255 + + + + + + + 49 + 107 + 75 + + + + + + + 98 + 214 + 150 + + + + + + + 98 + 214 + 150 + + + + + + + 0 + 0 + 0 + + + + + + + 98 + 214 + 150 + + + + + + + 255 + 255 + 220 + + + + + + + 0 + 0 + 0 + + + + + + + + false + + + Clear Baked Springs + + + false + + + false + + + false + + + + + + + Qt::Vertical + + + + 20 + 40 + + + + + + + + + + + bakeSprings + QPushButton +
mgear.maya.synoptic.widgets
+
+ + clearSprings + QPushButton +
mgear.maya.synoptic.widgets
+
+
+ + +
diff --git a/scripts/mgear/maya/synoptic/utils.py b/scripts/mgear/maya/synoptic/utils.py index b819b2e..6b43a5a 100644 --- a/scripts/mgear/maya/synoptic/utils.py +++ b/scripts/mgear/maya/synoptic/utils.py @@ -53,6 +53,7 @@ SYNOPTIC_WIDGET_NAME = "synoptic_view" CTRL_GRP_SUFFIX = "_controllers_grp" +PLOT_GRP_SUFFIX = "_PLOT_grp" EXPR_LEFT_SIDE = re.compile("L(\d+)") @@ -145,10 +146,13 @@ def getModel(widget): def getControlers(model, gSuffix=CTRL_GRP_SUFFIX): - ctl_set = pm.PyNode(model.name()+gSuffix) - members = ctl_set.members() + try: + ctl_set = pm.PyNode(model.name()+gSuffix) + members = ctl_set.members() - return members + return members + except: + return None def getNamespace(modelName): if not modelName: @@ -1167,3 +1171,20 @@ def toFK(model, ikfk_attr, uihost, fks, ik, upv, ikRot, **kwargs): kwargs.update({"switchTo": "fk"}) IkFkTransfer.execute(model, ikfk_attr, uihost, fks, ik, upv, ikRot, **kwargs) + + +#Baker Springs + +def clearSprings(model): + springNodes = getControlers(model, gSuffix=PLOT_GRP_SUFFIX) + pm.cutKey(springNodes, cl=True) + +@mutils.one_undo +@mutils.viewport_off +def bakeSprings(model): + springNodes = getControlers(model, gSuffix=PLOT_GRP_SUFFIX) + if springNodes: + pm.cutKey(springNodes, cl=True) + start = pm.playbackOptions(q=True, min=True) + end = pm.playbackOptions(q=True, max=True) + pm.bakeResults( springNodes, t=(start,end), simulation=True ) diff --git a/scripts/mgear/maya/synoptic/widgets.py b/scripts/mgear/maya/synoptic/widgets.py index 35839a0..2b90f06 100644 --- a/scripts/mgear/maya/synoptic/widgets.py +++ b/scripts/mgear/maya/synoptic/widgets.py @@ -78,12 +78,19 @@ def handleChanged(self): else: syn_uti.changeSpace(self.model, self.uihost_name, self.combo_attr, self.currentIndex(), self.ctl_name) -class bakeMocap(QtWidgets.QPushButton): +class bakeSprings(QtWidgets.QPushButton): def mousePressEvent(self, event): model = syn_uti.getModel(self) - syn_uti.bakeMocap(model) + syn_uti.bakeSprings(model) + +class clearSprings(QtWidgets.QPushButton): + + def mousePressEvent(self, event): + + model = syn_uti.getModel(self) + syn_uti.clearSprings(model) class ikfkMatchButton(QtWidgets.QPushButton): From ee37939133539243f381ff9c2bb0ab2062df47a7 Mon Sep 17 00:00:00 2001 From: miquelcampos Date: Mon, 30 Oct 2017 12:13:10 +0900 Subject: [PATCH 018/134] Shifter: Build command review and log popup window. Closes #73 --- scripts/mGear_guidesTemplates.py | 5 ++--- scripts/mgear/maya/shifter/gui.py | 9 +++++++++ 2 files changed, 11 insertions(+), 3 deletions(-) diff --git a/scripts/mGear_guidesTemplates.py b/scripts/mGear_guidesTemplates.py index 3f5f086..7673676 100644 --- a/scripts/mGear_guidesTemplates.py +++ b/scripts/mGear_guidesTemplates.py @@ -47,9 +47,8 @@ def buildFromSelection(*args): """ Build the rig from the guide root selection or a component root. """ - print mgear.logInfos() - rig = rg.Rig() - rig.buildFromSelection() + gui.Guide_UI.buildFromSelection() + def updateGuide(*args): """ diff --git a/scripts/mgear/maya/shifter/gui.py b/scripts/mgear/maya/shifter/gui.py index f673d43..f4f87e2 100644 --- a/scripts/mgear/maya/shifter/gui.py +++ b/scripts/mgear/maya/shifter/gui.py @@ -148,12 +148,21 @@ def drawComp(self, compType, *args): guide.drawNewComponent(parent, compType) + @classmethod @mutils.one_undo def buildFromSelection(self, *args): + logWin = pm.window( title="mGear Build Log", iconName='mGear Log') + pm.columnLayout( adjustableColumn=True ) + pm.cmdScrollFieldReporter(width=800, height=500, clr=True) + pm.button( label='Close', command=('pm.deleteUI(\"' + logWin + '\", window=True)') ) + pm.setParent( '..' ) + pm.showWindow( logWin ) print mgear.logInfos() rg = shifter.Rig() rg.buildFromSelection() + + @classmethod def duplicate(self, sym, *args): oSel = pm.selected() From 1aebec12119c445e1ec3aa7f7c02e042eba6b8a6 Mon Sep 17 00:00:00 2001 From: miquelcampos Date: Mon, 30 Oct 2017 16:26:49 +0900 Subject: [PATCH 019/134] Shifter: Build command review and log popup window. import pm fix #73 --- scripts/mgear/maya/shifter/gui.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/scripts/mgear/maya/shifter/gui.py b/scripts/mgear/maya/shifter/gui.py index f4f87e2..34ae4af 100644 --- a/scripts/mgear/maya/shifter/gui.py +++ b/scripts/mgear/maya/shifter/gui.py @@ -155,7 +155,7 @@ def buildFromSelection(self, *args): logWin = pm.window( title="mGear Build Log", iconName='mGear Log') pm.columnLayout( adjustableColumn=True ) pm.cmdScrollFieldReporter(width=800, height=500, clr=True) - pm.button( label='Close', command=('pm.deleteUI(\"' + logWin + '\", window=True)') ) + pm.button( label='Close', command=('import pymel.core as pm\npm.deleteUI(\"' + logWin + '\", window=True)') ) pm.setParent( '..' ) pm.showWindow( logWin ) print mgear.logInfos() From 14ffab404bbe08a11bb945e7c1d5d290ecf62987 Mon Sep 17 00:00:00 2001 From: miquelcampos Date: Tue, 31 Oct 2017 10:56:15 +0900 Subject: [PATCH 020/134] Shifter: Control_01: Add option to have mirror behaviour. Closes #68 --- .../shifter/component/control_02/__init__.py | 115 +++ .../shifter/component/control_02/guide.py | 234 ++++++ .../shifter/component/control_02/icon.jpg | Bin 0 -> 1764 bytes .../component/control_02/settingsUI.py | 359 ++++++++ .../component/control_02/settingsUI.ui | 793 ++++++++++++++++++ 5 files changed, 1501 insertions(+) create mode 100644 scripts/mgear/maya/shifter/component/control_02/__init__.py create mode 100644 scripts/mgear/maya/shifter/component/control_02/guide.py create mode 100644 scripts/mgear/maya/shifter/component/control_02/icon.jpg create mode 100644 scripts/mgear/maya/shifter/component/control_02/settingsUI.py create mode 100644 scripts/mgear/maya/shifter/component/control_02/settingsUI.ui diff --git a/scripts/mgear/maya/shifter/component/control_02/__init__.py b/scripts/mgear/maya/shifter/component/control_02/__init__.py new file mode 100644 index 0000000..2755e7c --- /dev/null +++ b/scripts/mgear/maya/shifter/component/control_02/__init__.py @@ -0,0 +1,115 @@ +# MGEAR is under the terms of the MIT License + +# Copyright (c) 2016 Jeremie Passerin, Miquel Campos + +# Permission is hereby granted, free of charge, to any person obtaining a copy +# of this software and associated documentation files (the "Software"), to deal +# in the Software without restriction, including without limitation the rights +# to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +# copies of the Software, and to permit persons to whom the Software is +# furnished to do so, subject to the following conditions: + +# The above copyright notice and this permission notice shall be included in all +# copies or substantial portions of the Software. + +# THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +# IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +# FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +# AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +# LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +# OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE +# SOFTWARE. + +# Author: Jeremie Passerin geerem@hotmail.com www.jeremiepasserin.com +# Author: Miquel Campos hello@miquel-campos.com www.miquel-campos.com +# Date: 2016 / 10 / 10 + +############################################# +# GLOBAL +############################################# +# mgear +from mgear.maya.shifter.component import MainComponent + +import mgear.maya.primitive as pri +import mgear.maya.transform as tra +import mgear.maya.attribute as att +import mgear.maya.vector as vec + + +############################################# +# COMPONENT +############################################# +class Component(MainComponent): + + def addObjects(self): + # self.length0 = vec.getDistance(self.guide.apos[0], self.guide.apos[1]) + + if self.settings["neutralRotation"]: + t = tra.getTransformFromPos(self.guide.pos["root"]) + else: + t = self.guide.tra["root"] + if self.settings["mirrorBehaviour"] and self.negate: + scl=[1,1,-1] + else: + scl=[1,1,1] + t = tra.setMatrixScale(t, scl) + self.ik_cns = pri.addTransform(self.root, self.getName("ik_cns"), t) + + self.ctl = self.addCtl( self.ik_cns, + "ctl", + t, + self.color_ik, + self.settings["icon"], + w=self.settings["ctlSize"]*self.size, + h=self.settings["ctlSize"]*self.size, + d=self.settings["ctlSize"]*self.size, + tp=self.parentCtlTag) + + #we need to set the rotation order before lock any rotation axis + if self.settings["k_ro"]: + rotOderList = ["XYZ", "YZX", "ZXY", "XZY", "YXZ", "ZYX"] + att.setRotOrder(self.ctl, rotOderList[self.settings["default_rotorder"]]) + + params = [ s for s in ["tx", "ty", "tz", "ro", "rx", "ry", "rz", "sx", "sy", "sz"] if self.settings["k_"+s] ] + att.setKeyableAttributes(self.ctl, params) + + if self.settings["joint"]: + self.jnt_pos.append([self.ctl, 0, None, self.settings["uniScale"]]) + + + def addAttributes(self): + # Ref + if self.settings["ikrefarray"]: + ref_names = self.settings["ikrefarray"].split(",") + if len(ref_names) > 1: + self.ikref_att = self.addAnimEnumParam("ikref", "Ik Ref", 0, self.settings["ikrefarray"].split(",")) + + + def addOperators(self): + return + + # ===================================================== + # CONNECTOR + # ===================================================== + ## Set the relation beetween object from guide to rig.\n + # @param self + def setRelation(self): + self.relatives["root"] = self.ctl + self.controlRelatives["root"] = self.ctl + if self.settings["joint"]: + self.jointRelatives["root"] = 0 + + + # @param self + def addConnection(self): + self.connections["standard"] = self.connect_standard + self.connections["orientation"] = self.connect_orientation + + + ## standard connection definition. + # @param self + def connect_standard(self): + self.connect_standardWithSimpleIkRef() + + def connect_orientation(self): + self.connect_orientCns() diff --git a/scripts/mgear/maya/shifter/component/control_02/guide.py b/scripts/mgear/maya/shifter/component/control_02/guide.py new file mode 100644 index 0000000..01d46d3 --- /dev/null +++ b/scripts/mgear/maya/shifter/component/control_02/guide.py @@ -0,0 +1,234 @@ +# MGEAR is under the terms of the MIT License + +# Copyright (c) 2016 Jeremie Passerin, Miquel Campos + +# Permission is hereby granted, free of charge, to any person obtaining a copy +# of this software and associated documentation files (the "Software"), to deal +# in the Software without restriction, including without limitation the rights +# to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +# copies of the Software, and to permit persons to whom the Software is +# furnished to do so, subject to the following conditions: + +# The above copyright notice and this permission notice shall be included in all +# copies or substantial portions of the Software. + +# THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +# IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +# FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +# AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +# LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +# OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE +# SOFTWARE. + +# Author: Jeremie Passerin geerem@hotmail.com www.jeremiepasserin.com +# Author: Miquel Campos hello@miquel-campos.com www.miquel-campos.com +# Date: 2016 / 10 / 10 + +############################################# +# GLOBAL +############################################# +from functools import partial + +import pymel.core as pm +# mgear +import mgear.maya.transform as tra +from mgear.maya.shifter.component.guide import ComponentGuide + +#Pyside +from mgear.maya.shifter.component.guide import componentMainSettings +import mgear.maya.pyqt as gqt +from maya.app.general.mayaMixin import MayaQWidgetDockableMixin +from maya.app.general.mayaMixin import MayaQDockWidget +import settingsUI as sui +QtGui, QtCore, QtWidgets, wrapInstance = gqt.qt_import() + + +# guide info +AUTHOR = "Jeremie Passerin, Miquel Campos" +URL = "www.jeremiepasserin.com, www.miquel-campos.com" +EMAIL = "geerem@hotmail.com, hello@miquel-campos.com" +VERSION = [1,2,0] +TYPE = "control_02" +NAME = "control" +DESCRIPTION = "WIP. MAYA 2018.1 have a bug that break the behaviour with negative scale: Simple controler with space switch and Rot order selection. \nThis component can full mirror behaviour for L and R" +########################################################## +# CLASS +########################################################## +class Guide(ComponentGuide): + + compType = TYPE + compName = NAME + description = DESCRIPTION + + author = AUTHOR + url = URL + email = EMAIL + version = VERSION + + # ===================================================== + ## + # @param self + def postInit(self): + self.save_transform = ["root", "sizeRef"] + + # ===================================================== + ## Add more object to the object definition list. + # @param self + def addObjects(self): + + self.root = self.addRoot() + vTemp = tra.getOffsetPosition( self.root, [0,0,1]) + self.sizeRef = self.addLoc("sizeRef", self.root, vTemp) + # self.sizeRef.visibility.set(False) + pm.delete(self.sizeRef.getShapes()) + + + + # ===================================================== + ## Add more parameter to the parameter definition list. + # @param self + def addParameters(self): + + + self.pIcon = self.addParam("icon", "string", "cube") + + self.pIkRefArray = self.addParam("ikrefarray", "string", "") + + self.pJoint = self.addParam("joint", "bool", False) + self.pJoint = self.addParam("uniScale", "bool", True) + + for s in ["tx", "ty", "tz", "ro", "rx", "ry", "rz", "sx", "sy", "sz"]: + self.addParam("k_"+s, "bool", True) + + self.pDefault_RotOrder = self.addParam("default_rotorder", "long", 0, 0, 5) + self.pNeutralRotation = self.addParam("neutralRotation", "bool", True) + self.pMirrorBehaviour = self.addParam("mirrorBehaviour", "bool", False) + self.pCtlSize = self.addParam("ctlSize", "double", 1 , None, None) + self.pUseIndex = self.addParam("useIndex", "bool", False) + self.pParentJointIndex = self.addParam("parentJointIndex", "long", -1, None, None) + + return + +########################################################## +# Setting Page +########################################################## + +class settingsTab(QtWidgets.QDialog, sui.Ui_Form): + + def __init__(self, parent=None): + super(settingsTab, self).__init__(parent) + self.setupUi(self) + + +class componentSettings(MayaQWidgetDockableMixin, componentMainSettings): + + def __init__(self, parent = None): + self.toolName = TYPE + # Delete old instances of the componet settings window. + gqt.deleteInstances(self, MayaQDockWidget) + self.iconsList = ['arrow', 'circle', 'compas', 'cross', 'crossarrow', 'cube', 'cubewithpeak', 'cylinder', 'diamond', 'flower', 'null', 'pyramid', 'sphere', 'square'] + + + super(self.__class__, self).__init__(parent = parent) + self.settingsTab = settingsTab() + + + self.setup_componentSettingWindow() + self.create_componentControls() + self.populate_componentControls() + self.create_componentLayout() + self.create_componentConnections() + + def setup_componentSettingWindow(self): + self.mayaMainWindow = gqt.maya_main_window() + + self.setObjectName(self.toolName) + self.setWindowFlags(QtCore.Qt.Window) + self.setWindowTitle(TYPE) + self.resize(280, 520) + + def create_componentControls(self): + return + + + def populate_componentControls(self): + """ + Populate the controls values from the custom attributes of the component. + + """ + #populate tab + self.tabs.insertTab(1, self.settingsTab, "Component Settings") + + #populate component settings + + self.populateCheck(self.settingsTab.joint_checkBox, "joint") + self.populateCheck(self.settingsTab.uniScale_checkBox, "uniScale") + self.populateCheck(self.settingsTab.neutralRotation_checkBox, "neutralRotation") + self.populateCheck(self.settingsTab.mirrorBehaviour_checkBox, "mirrorBehaviour") + self.settingsTab.ctlSize_doubleSpinBox.setValue(self.root.attr("ctlSize").get()) + sideIndex = self.iconsList.index(self.root.attr("icon").get()) + self.settingsTab.controlShape_comboBox.setCurrentIndex(sideIndex) + + self.populateCheck(self.settingsTab.tx_checkBox, "k_tx") + self.populateCheck(self.settingsTab.ty_checkBox, "k_ty") + self.populateCheck(self.settingsTab.tz_checkBox, "k_tz") + self.populateCheck(self.settingsTab.rx_checkBox, "k_rx") + self.populateCheck(self.settingsTab.ry_checkBox, "k_ry") + self.populateCheck(self.settingsTab.rz_checkBox, "k_rz") + self.populateCheck(self.settingsTab.ro_checkBox, "k_ro") + self.populateCheck(self.settingsTab.sx_checkBox, "k_sx") + self.populateCheck(self.settingsTab.sy_checkBox, "k_sy") + self.populateCheck(self.settingsTab.sz_checkBox, "k_sz") + + self.settingsTab.ro_comboBox.setCurrentIndex(self.root.attr("default_rotorder").get()) + + ikRefArrayItems = self.root.attr("ikrefarray").get().split(",") + for item in ikRefArrayItems: + self.settingsTab.ikRefArray_listWidget.addItem(item) + + + def create_componentLayout(self): + + self.settings_layout = QtWidgets.QVBoxLayout() + self.settings_layout.addWidget(self.tabs) + self.settings_layout.addWidget(self.close_button) + + self.setLayout(self.settings_layout) + + def create_componentConnections(self): + + self.settingsTab.joint_checkBox.stateChanged.connect(partial(self.updateCheck, self.settingsTab.joint_checkBox, "joint")) + self.settingsTab.uniScale_checkBox.stateChanged.connect(partial(self.updateCheck, self.settingsTab.uniScale_checkBox, "uniScale")) + self.settingsTab.neutralRotation_checkBox.stateChanged.connect(partial(self.updateCheck, self.settingsTab.neutralRotation_checkBox, "neutralRotation")) + self.settingsTab.mirrorBehaviour_checkBox.stateChanged.connect(partial(self.updateCheck, self.settingsTab.mirrorBehaviour_checkBox, "mirrorBehaviour")) + self.settingsTab.ctlSize_doubleSpinBox.valueChanged.connect(partial(self.updateSpinBox, self.settingsTab.ctlSize_doubleSpinBox, "ctlSize")) + self.settingsTab.controlShape_comboBox.currentIndexChanged.connect(partial(self.updateControlShape, self.settingsTab.controlShape_comboBox, self.iconsList, "icon")) + + self.settingsTab.tx_checkBox.stateChanged.connect(partial(self.updateCheck, self.settingsTab.tx_checkBox, "k_tx")) + self.settingsTab.ty_checkBox.stateChanged.connect(partial(self.updateCheck, self.settingsTab.ty_checkBox, "k_ty")) + self.settingsTab.tz_checkBox.stateChanged.connect(partial(self.updateCheck, self.settingsTab.tz_checkBox, "k_tz")) + self.settingsTab.rx_checkBox.stateChanged.connect(partial(self.updateCheck, self.settingsTab.rx_checkBox, "k_rx")) + self.settingsTab.ry_checkBox.stateChanged.connect(partial(self.updateCheck, self.settingsTab.ry_checkBox, "k_ry")) + self.settingsTab.rz_checkBox.stateChanged.connect(partial(self.updateCheck, self.settingsTab.rz_checkBox, "k_rz")) + self.settingsTab.ro_checkBox.stateChanged.connect(partial(self.updateCheck, self.settingsTab.ro_checkBox, "k_ro")) + self.settingsTab.sx_checkBox.stateChanged.connect(partial(self.updateCheck, self.settingsTab.sx_checkBox, "k_sx")) + self.settingsTab.sy_checkBox.stateChanged.connect(partial(self.updateCheck, self.settingsTab.sy_checkBox, "k_sy")) + self.settingsTab.sz_checkBox.stateChanged.connect(partial(self.updateCheck, self.settingsTab.sz_checkBox, "k_sz")) + + self.settingsTab.ro_comboBox.currentIndexChanged.connect(partial(self.updateComboBox, self.settingsTab.ro_comboBox, "default_rotorder")) + + self.settingsTab.ikRefArrayAdd_pushButton.clicked.connect(partial(self.addItem2listWidget, self.settingsTab.ikRefArray_listWidget, "ikrefarray")) + self.settingsTab.ikRefArrayRemove_pushButton.clicked.connect(partial(self.removeSelectedFromListWidget, self.settingsTab.ikRefArray_listWidget, "ikrefarray")) + self.settingsTab.ikRefArray_listWidget.installEventFilter(self) + + def eventFilter(self, sender, event): + if event.type() == QtCore.QEvent.ChildRemoved: + if sender == self.settingsTab.ikRefArray_listWidget: + self.updateListAttr(sender, "ikrefarray") + return True + else: + return QtWidgets.QDialog.eventFilter(self, sender, event) + + + def dockCloseEventTriggered(self): + gqt.deleteInstances(self, MayaQDockWidget) diff --git a/scripts/mgear/maya/shifter/component/control_02/icon.jpg b/scripts/mgear/maya/shifter/component/control_02/icon.jpg new file mode 100644 index 0000000000000000000000000000000000000000..21cbc0fbacd9d6b0fac77c0a20322e755e98b6a1 GIT binary patch literal 1764 zcma)6dolj4 zuMmyrK?>&*<$5HM%F)Z4B&W{YIqRO){r7zK+H39g`Rx5!`=7l<&qQ+o>tKJ>9zZYv zXyO2(MS!zop9zfz5I}&xNFZ7U($=)d06L&`iy25X4LAV$=Yahm@bCD090oyRRh-|2 ze_DvT0S*K7fF2ye0T>Q~;~>#Pzy(0;2N$pT9ViJ&BpL?CKw!PPNsa(+)6EelHe(6jej7-mNfhphx+AM4kp)$I z#Bg8E7!HrO-Od|>Z?D4**q;5hgZc*bgXCfD$D4XSdHj+{^Kxg;;l28O z&&bpMI-W4ZKr@4agRSO|-)*8b zutxk&FC?Cgt@c>a8t|40D$B03v5w(+?a#{OaSM{TZcqH_HFh5AFRIwo0u$Uv&Zs{6 z=K{pd5X-d&)63zzM;@Fm}3@P0OhoU>!3 zHE)m-usu7KA2Ir(!~Lmkx_|-eA{=gu*p3-C6TV+jfmr0XCj<%S@9w0_r05R+IhJUp zuu(m)_tM_4gBrGuY0Wc$^Pkl3b2ymAJUoy=cAzNhnD%{=>$z9oG9BADw>6ugyThpW z|FC%Ui*v%c+7)iBmscx!qN_sAChd>wm#h?nRc0%k>RC0~d54+m1{vDgX<)CUIVNHbI>wOeHx%5xgrvaSSKH`>N@0c&vvlCnR(>vW2wD4eiP)XcbYM0m9{yZ& zESWkXpzkED1#+rJOzPXOS63e-OlVx&46Bk#s!h|(IewW=zgcGNVymhHtGdy8$dHeB zbL?7qT)rN>H#w}|Qng$87T)_%&=Dn!*{Yh-gPptDVS7HylGyjItaqQ0O3I~rTN|nG zV&zh5wJ^p*+6(pPIPcm@p8Zm?Cz3rz9eYv0GP1x=ygQ^>p`oE9r1fO|Yj5mjM+@Ix z-q8Zc=ooSq7KY9)!iD=>TZ(=yy!y2H7B9%00=va?P16t7Mm_4JHjMU!M!oYKeS5&R z>0%T9C`0iOFe_}4WL`5o38igFIhT)P?L&*|#n*hQ)%~?TyESuYGukXDxMi}zwSkG* z_dY9&mBv==q^&hpm^nZ-+LS70&F;xa8t<(1H)#B>R54$+Llc#4WHfGch!kVc7k82JVa;E$NQd!8Cd;cNX zp+oF^8$Uu6lN!d_?&0Z|^ACPZ#InvOlbm$d!nIGc2)(l1@!G?FtL?^LyQnx4WjS zKDAXSC%{~~KZN&p3Q9*E|JC#ST4^j>C%NfiP1jUy~t3ES6Q{2IM%9v(@ohJWht zd->z`mygqI5pXE7tWC-s_s5Dr(Y!P>", None, -1)) + diff --git a/scripts/mgear/maya/shifter/component/control_02/settingsUI.ui b/scripts/mgear/maya/shifter/component/control_02/settingsUI.ui new file mode 100644 index 0000000..c8fca52 --- /dev/null +++ b/scripts/mgear/maya/shifter/component/control_02/settingsUI.ui @@ -0,0 +1,793 @@ + + + Form + + + + 0 + 0 + 305 + 651 + + + + Form + + + + + + + + + + + + + + Joint + + + + + + + Uniform Scale + + + + + + + World Space Orientation Align + + + + + + + Mirror Behaviour L and R + + + + + + + Keyable + + + + + + + + QLayout::SetMinimumSize + + + + + Translate + + + + + + + tx + + + + + + + ty + + + + + + + tz + + + + + + + Qt::Vertical + + + + 20 + 40 + + + + + + + + + + QLayout::SetMinimumSize + + + + + Rotate + + + + + + + rx + + + + + + + ry + + + + + + + rz + + + + + + + ro + + + + + + + + XYZ + + + + + YZX + + + + + ZXY + + + + + XZY + + + + + YXZ + + + + + ZYX + + + + + + + + + + QLayout::SetMinAndMaxSize + + + + + Scale + + + + + + + sx + + + + + + + sy + + + + + + + sz + + + + + + + Qt::Vertical + + + + 20 + 40 + + + + + + + + + + + + + + + + + Ctl Size + + + + + + + + 0 + 0 + + + + false + + + Qt::AlignCenter + + + QAbstractSpinBox::PlusMinus + + + 0.010000000000000 + + + 200.000000000000000 + + + 1.000000000000000 + + + + + + + + + + + Control Shape + + + + + + + + 0 + 0 + + + + + Arrow + + + + + Circle + + + + + Compas + + + + + Cross + + + + + Crossarrow + + + + + Cube + + + + + Cubewithpeak + + + + + Cylinder + + + + + Diamond + + + + + Flower + + + + + Null + + + + + Pyramid + + + + + Sphere + + + + + Square + + + + + + + + + + + + + + + Keyable + + + + + + + + QLayout::SetMinimumSize + + + + + Translate + + + + + + + tx + + + + + + + ty + + + + + + + tz + + + + + + + Qt::Vertical + + + + 20 + 40 + + + + + + + + + + QLayout::SetMinimumSize + + + + + Rotate + + + + + + + rx + + + + + + + ry + + + + + + + rz + + + + + + + ro + + + + + + + + XYZ + + + + + YZX + + + + + ZXY + + + + + XZY + + + + + YXZ + + + + + ZYX + + + + + + + + + + QLayout::SetMinAndMaxSize + + + + + Scale + + + + + + + sx + + + + + + + sy + + + + + + + sz + + + + + + + Qt::Vertical + + + + 20 + 40 + + + + + + + + + + + + + + + IK Reference Array + + + + + + + + + + true + + + QAbstractItemView::InternalMove + + + Qt::MoveAction + + + true + + + QAbstractItemView::ExtendedSelection + + + false + + + + + + + + + + + << + + + + + + + >> + + + + + + + Qt::Vertical + + + + 20 + 40 + + + + + + + + + + + + + + + + + translate_pushButton + clicked() + tz_checkBox + toggle() + + + 46 + 114 + + + 21 + 193 + + + + + translate_pushButton + clicked() + ty_checkBox + toggle() + + + 20 + 120 + + + 13 + 165 + + + + + translate_pushButton + clicked() + tx_checkBox + toggle() + + + 68 + 117 + + + 14 + 143 + + + + + rotate_pushButton + clicked() + rx_checkBox + toggle() + + + 116 + 120 + + + 97 + 144 + + + + + rotate_pushButton + clicked() + ry_checkBox + toggle() + + + 134 + 122 + + + 118 + 168 + + + + + rotate_pushButton + clicked() + rz_checkBox + toggle() + + + 145 + 121 + + + 104 + 189 + + + + + rotate_pushButton + clicked() + ro_checkBox + toggle() + + + 151 + 117 + + + 128 + 219 + + + + + scale_pushButton + clicked() + sx_checkBox + toggle() + + + 213 + 113 + + + 196 + 150 + + + + + scale_pushButton + clicked() + sy_checkBox + toggle() + + + 220 + 121 + + + 210 + 176 + + + + + scale_pushButton + clicked() + sz_checkBox + toggle() + + + 227 + 110 + + + 223 + 192 + + + + + From f1aee784a992d73925d2c960686a36835c64ff4a Mon Sep 17 00:00:00 2001 From: miquelcampos Date: Thu, 2 Nov 2017 18:59:33 +0900 Subject: [PATCH 021/134] Shifter: Games: Tools for decouple deform and control rig WIP #64 --- scripts/mgear/maya/shifter/gameTools.py | 214 ++++++++++++++++++++++ scripts/mgear/maya/shifter/gameToolsUI.py | 93 ++++++++++ scripts/mgear/maya/shifter/gameToolsUI.ui | 126 +++++++++++++ 3 files changed, 433 insertions(+) create mode 100644 scripts/mgear/maya/shifter/gameTools.py create mode 100644 scripts/mgear/maya/shifter/gameToolsUI.py create mode 100644 scripts/mgear/maya/shifter/gameToolsUI.ui diff --git a/scripts/mgear/maya/shifter/gameTools.py b/scripts/mgear/maya/shifter/gameTools.py new file mode 100644 index 0000000..4a86c4a --- /dev/null +++ b/scripts/mgear/maya/shifter/gameTools.py @@ -0,0 +1,214 @@ +# MGEAR is under the terms of the MIT License + +# Copyright (c) 2016 Jeremie Passerin, Miquel Campos + +# Permission is hereby granted, free of charge, to any person obtaining a copy +# of this software and associated documentation files (the "Software"), to deal +# in the Software without restriction, including without limitation the rights +# to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +# copies of the Software, and to permit persons to whom the Software is +# furnished to do so, subject to the following conditions: + +# The above copyright notice and this permission notice shall be included in all +# copies or substantial portions of the Software. + +# THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +# IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +# FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +# AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +# LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +# OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE +# SOFTWARE. + +# Author: Jeremie Passerin www.jeremiepasserin.com +# Author: Miquel Campos www.miquel-campos.com +# Date: 2016 / 10 / 10 + + +import pymel.core as pm +import json +from functools import partial + +import mgear.maya.utils as mutils +import mgear.string as string + +import mgear.maya.shifter.gameToolsUI as gtUI + +from maya.app.general.mayaMixin import MayaQWidgetDockableMixin +import mgear.maya.pyqt as gqt +QtGui, QtCore, QtWidgets, wrapInstance = gqt.qt_import() + + +@mutils.one_undo +def disconnect(cnxDict): + for i, jnt in enumerate(cnxDict["joints"]): + # we don't need to disconnect blended joint since the connection is from other joints + if not jnt.startswith("blend_"): + oJnt = pm.PyNode(jnt) + + for e, plug in enumerate([ oJnt.translate, oJnt.rotate, oJnt.scale, + oJnt.scale.scaleX, oJnt.scale.scaleY, + oJnt.scale.scaleZ, oJnt.shear]): + if cnxDict["attrs"][i][e]: + pm.disconnectAttr( cnxDict["attrs"][i][e], plug) + if cnxDict["attrs"][i][7]: + pm.disconnectAttr(oJnt.parentInverseMatrix[0], cnxDict["attrs"][i][7] ) + + +def connect(cnxDict, nsRig=None, nsSkin=None): + for i, jnt in enumerate(cnxDict["joints"]): + try: + if nsSkin: + oJnt = pm.PyNode(nsSkin+":"+jnt) + else: + oJnt = pm.PyNode(jnt) + for e, plug in enumerate([ oJnt.translate, oJnt.rotate, oJnt.scale, + oJnt.scale.scaleX, oJnt.scale.scaleY, + oJnt.scale.scaleZ, oJnt.shear]): + if cnxDict["attrs"][i][e]: + if nsRig: + pm.connectAttr(nsRig+":"+ cnxDict["attrs"][i][e],plug, f=True) + else: + pm.connectAttr(cnxDict["attrs"][i][e],plug, f=True) + + if cnxDict["attrs"][i][7]: + if nsRig: + pm.connectAttr(oJnt.parentInverseMatrix[0], nsRig+":"+ cnxDict["attrs"][i][7], f=True) + else: + pm.connectAttr(oJnt.parentInverseMatrix[0], cnxDict["attrs"][i][7], f=True) + + except: + pm.displayError("{} is not found in the scene".format(jnt)) + + +def connectCns(cnxDict, nsRig=None, nsSkin=None): + for i, jnt in enumerate(cnxDict["joints"]): + if nsSkin: + oJnt = pm.PyNode(nsSkin+":"+jnt) + else: + oJnt = pm.PyNode(jnt) + + if cnxDict["attrs"][i][0]: + if nsRig: + oAttr = pm.PyNode(nsRig+":"+ cnxDict["attrs"][i][0]) + else: + oAttr = pm.PyNode( cnxDict["attrs"][i][0]) + + oNode = oAttr.node() + oTrans = pm.listConnections(pm.listConnections(oNode.inputMatrix)[0].matrixIn[0]) + pm.parentConstraint(oTrans,oJnt, mo=True) + pm.scaleConstraint(oTrans,oJnt, mo=True) + + +def exportConnections(source=None, disc=False): + connections = {} + connections["joints"] = [] + connections["attrs"] = [] + if not source: + source = pm.selected() + for x in source: + if not x.name().startswith("blend_"): + connections["joints"].append(x.name()) + trans_attr = pm.listConnections(x.translate, p=True, type="decomposeMatrix") + rot_attr = pm.listConnections(x.rotate, p=True, type="decomposeMatrix") + scl_attr = pm.listConnections(x.scale, p=True, type="decomposeMatrix") + sclX_attr = pm.listConnections(x.scale.scaleX, p=True, type="decomposeMatrix") + sclY_attr = pm.listConnections(x.scale.scaleY, p=True, type="decomposeMatrix") + sclZ_attr = pm.listConnections(x.scale.scaleZ, p=True, type="decomposeMatrix") + shear_attr = pm.listConnections(x.shear, p=True, type="decomposeMatrix") + parentInv_attr = pm.listConnections(x.parentInverseMatrix[0], d=True, p=True) + + attrs_list = [trans_attr, rot_attr, scl_attr, sclX_attr, sclY_attr, sclZ_attr, shear_attr, parentInv_attr] + attrs_list_checked = [] + for at in attrs_list: + if at: + attrs_list_checked.append(at[0].name()) + else: + attrs_list_checked.append(None) + + + connections["attrs"].append(attrs_list_checked) + + data_string = json.dumps(connections, indent=4, sort_keys=True) + filePath = pm.fileDialog2(dialogStyle=2, fileMode=0, + fileFilter=' Shifter joint cnx maya matrix .jmm (*%s)' %".jmm") + if not filePath: + return + if not isinstance(filePath, basestring): + filePath = filePath[0] + f = open(filePath, 'w') + f.write(data_string) + f.close() + + if disc: + # print connections + disconnect(connections) + + + +def importConnections(filePath=None, nsRig=None, nsSkin=None, useMtx=True): + if not filePath: + startDir = pm.workspace(q=True, rootDirectory=True) + filePath = pm.fileDialog2( dialogStyle=2, fileMode=1, startingDirectory=startDir, + fileFilter=' Shifter joint cnx maya matrix .jmm (*%s)' %".jmm") + if not filePath: + return + if not isinstance(filePath, basestring): + filePath = filePath[0] + configDict = json.load(open(filePath)) + + if useMtx: + connect(configDict, nsRig=nsRig, nsSkin=nsSkin) + else: + connectCns(configDict, nsRig=nsRig, nsSkin=nsSkin) + + + +#################################### +## Soft tweaks Manager dialog +#################################### + +class gameToolsUI(QtWidgets.QDialog, gtUI.Ui_gameTools): + + def __init__(self, parent=None): + super(gameToolsUI, self).__init__(parent) + self.setupUi(self) + +class gameTools(MayaQWidgetDockableMixin, QtWidgets.QDialog): + + def __init__(self, parent=None): + self.toolName = "shifterGameTools" + super(self.__class__, self).__init__(parent = parent) + self.gtUIInst = gameToolsUI() + + self.gameTools_window() + self.gameTools_layout() + self.createConnections() + + self.setAttribute(QtCore.Qt.WA_DeleteOnClose, True) + + def gameTools_window(self): + + self.setObjectName(self.toolName) + self.setWindowFlags(QtCore.Qt.Window) + self.setWindowTitle("Shifter Game Tools") + self.resize(300, 330) + + def gameTools_layout(self): + + self.gt_layout = QtWidgets.QVBoxLayout() + self.gt_layout.addWidget(self.gtUIInst) + + self.setLayout(self.gt_layout) + + @staticmethod + def _validCharacters(lEdit): + name = string.removeInvalidCharacter(lEdit.text()) + lEdit.setText(name) + + def createConnections(self): + self.gtUIInst.assetName_lineEdit.editingFinished.connect(partial(gameTools._validCharacters, self.gtUIInst.assetName_lineEdit )) + +if __name__ == "__main__": + + gqt.showDialog(gameTools) diff --git a/scripts/mgear/maya/shifter/gameToolsUI.py b/scripts/mgear/maya/shifter/gameToolsUI.py new file mode 100644 index 0000000..255fc7d --- /dev/null +++ b/scripts/mgear/maya/shifter/gameToolsUI.py @@ -0,0 +1,93 @@ +# -*- coding: utf-8 -*- + +# Form implementation generated from reading ui file 'D:/repo/mgear/scripts/mgear/maya/shifter/gameToolsUI.ui' +# +# Created: Wed Nov 1 16:06:54 2017 +# by: pyside2-uic running on PySide2 2.0.0~alpha0 +# +# WARNING! All changes made in this file will be lost! + +from PySide2 import QtCore, QtGui, QtWidgets + +class Ui_gameTools(object): + def setupUi(self, gameTools): + gameTools.setObjectName("gameTools") + gameTools.resize(284, 332) + self.gridLayout_4 = QtWidgets.QGridLayout(gameTools) + self.gridLayout_4.setObjectName("gridLayout_4") + self.verticalLayout = QtWidgets.QVBoxLayout() + self.verticalLayout.setObjectName("verticalLayout") + self.gameTools_groupBox = QtWidgets.QGroupBox(gameTools) + self.gameTools_groupBox.setObjectName("gameTools_groupBox") + self.gridLayout_2 = QtWidgets.QGridLayout(self.gameTools_groupBox) + self.gridLayout_2.setObjectName("gridLayout_2") + self.assetName_frame = QtWidgets.QFrame(self.gameTools_groupBox) + self.assetName_frame.setFrameShape(QtWidgets.QFrame.StyledPanel) + self.assetName_frame.setFrameShadow(QtWidgets.QFrame.Raised) + self.assetName_frame.setObjectName("assetName_frame") + self.gridLayout = QtWidgets.QGridLayout(self.assetName_frame) + self.gridLayout.setObjectName("gridLayout") + self.assetName_lineEdit = QtWidgets.QLineEdit(self.assetName_frame) + self.assetName_lineEdit.setObjectName("assetName_lineEdit") + self.gridLayout.addWidget(self.assetName_lineEdit, 0, 2, 1, 1) + self.assetName_label = QtWidgets.QLabel(self.assetName_frame) + self.assetName_label.setObjectName("assetName_label") + self.gridLayout.addWidget(self.assetName_label, 0, 1, 1, 1) + self.gridLayout_2.addWidget(self.assetName_frame, 0, 0, 1, 2) + self.rigNode_lineEdit = QtWidgets.QLineEdit(self.gameTools_groupBox) + self.rigNode_lineEdit.setObjectName("rigNode_lineEdit") + self.gridLayout_2.addWidget(self.rigNode_lineEdit, 1, 0, 1, 1) + self.rigNode_pushButton = QtWidgets.QPushButton(self.gameTools_groupBox) + self.rigNode_pushButton.setObjectName("rigNode_pushButton") + self.gridLayout_2.addWidget(self.rigNode_pushButton, 1, 1, 1, 1) + self.meshNode_lineEdit = QtWidgets.QLineEdit(self.gameTools_groupBox) + self.meshNode_lineEdit.setObjectName("meshNode_lineEdit") + self.gridLayout_2.addWidget(self.meshNode_lineEdit, 2, 0, 1, 1) + self.meshNode_pushButton = QtWidgets.QPushButton(self.gameTools_groupBox) + self.meshNode_pushButton.setObjectName("meshNode_pushButton") + self.gridLayout_2.addWidget(self.meshNode_pushButton, 2, 1, 1, 1) + self.path_lineEdit = QtWidgets.QLineEdit(self.gameTools_groupBox) + self.path_lineEdit.setObjectName("path_lineEdit") + self.gridLayout_2.addWidget(self.path_lineEdit, 3, 0, 1, 1) + self.path_pushButton = QtWidgets.QPushButton(self.gameTools_groupBox) + self.path_pushButton.setObjectName("path_pushButton") + self.gridLayout_2.addWidget(self.path_pushButton, 3, 1, 1, 1) + self.script_lineEdit = QtWidgets.QLineEdit(self.gameTools_groupBox) + self.script_lineEdit.setObjectName("script_lineEdit") + self.gridLayout_2.addWidget(self.script_lineEdit, 4, 0, 1, 1) + self.script_pushButton = QtWidgets.QPushButton(self.gameTools_groupBox) + self.script_pushButton.setObjectName("script_pushButton") + self.gridLayout_2.addWidget(self.script_pushButton, 4, 1, 1, 1) + self.disconnectExport_pushButton = QtWidgets.QPushButton(self.gameTools_groupBox) + self.disconnectExport_pushButton.setObjectName("disconnectExport_pushButton") + self.gridLayout_2.addWidget(self.disconnectExport_pushButton, 5, 0, 1, 2) + self.verticalLayout.addWidget(self.gameTools_groupBox) + self.assembly_groupBox = QtWidgets.QGroupBox(gameTools) + self.assembly_groupBox.setObjectName("assembly_groupBox") + self.gridLayout_3 = QtWidgets.QGridLayout(self.assembly_groupBox) + self.gridLayout_3.setObjectName("gridLayout_3") + self.importConnect_pushButton = QtWidgets.QPushButton(self.assembly_groupBox) + self.importConnect_pushButton.setObjectName("importConnect_pushButton") + self.gridLayout_3.addWidget(self.importConnect_pushButton, 0, 0, 1, 1) + self.referenceConnect_pushButton = QtWidgets.QPushButton(self.assembly_groupBox) + self.referenceConnect_pushButton.setObjectName("referenceConnect_pushButton") + self.gridLayout_3.addWidget(self.referenceConnect_pushButton, 1, 0, 1, 1) + self.verticalLayout.addWidget(self.assembly_groupBox) + self.gridLayout_4.addLayout(self.verticalLayout, 0, 0, 1, 1) + + self.retranslateUi(gameTools) + QtCore.QMetaObject.connectSlotsByName(gameTools) + + def retranslateUi(self, gameTools): + gameTools.setWindowTitle(QtWidgets.QApplication.translate("gameTools", "SHIFTER Game Tools", None, -1)) + self.gameTools_groupBox.setTitle(QtWidgets.QApplication.translate("gameTools", "EXPORT", None, -1)) + self.assetName_label.setText(QtWidgets.QApplication.translate("gameTools", "Asset Name", None, -1)) + self.rigNode_pushButton.setText(QtWidgets.QApplication.translate("gameTools", "<<< Rig Top Node", None, -1)) + self.meshNode_pushButton.setText(QtWidgets.QApplication.translate("gameTools", "<<< Mesh Top Node", None, -1)) + self.path_pushButton.setText(QtWidgets.QApplication.translate("gameTools", "set Output Folder", None, -1)) + self.script_pushButton.setText(QtWidgets.QApplication.translate("gameTools", "set Custom Script", None, -1)) + self.disconnectExport_pushButton.setText(QtWidgets.QApplication.translate("gameTools", "Disconnect and Export", None, -1)) + self.assembly_groupBox.setTitle(QtWidgets.QApplication.translate("gameTools", "ASSEMBLY", None, -1)) + self.importConnect_pushButton.setText(QtWidgets.QApplication.translate("gameTools", "Import and Connect", None, -1)) + self.referenceConnect_pushButton.setText(QtWidgets.QApplication.translate("gameTools", "Reference and Connect", None, -1)) + diff --git a/scripts/mgear/maya/shifter/gameToolsUI.ui b/scripts/mgear/maya/shifter/gameToolsUI.ui new file mode 100644 index 0000000..10bc3a7 --- /dev/null +++ b/scripts/mgear/maya/shifter/gameToolsUI.ui @@ -0,0 +1,126 @@ + + + gameTools + + + + 0 + 0 + 284 + 332 + + + + SHIFTER Game Tools + + + + + + + + EXPORT + + + + + + QFrame::StyledPanel + + + QFrame::Raised + + + + + + + + + Asset Name + + + + + + + + + + + + + <<< Rig Top Node + + + + + + + + + + <<< Mesh Top Node + + + + + + + + + + set Output Folder + + + + + + + + + + set Custom Script + + + + + + + Disconnect and Export + + + + + + + + + + ASSEMBLY + + + + + + Import and Connect + + + + + + + Reference and Connect + + + + + + + + + + + + + From 02439e1aacb3337adba4290ba078f4dc2ea0348c Mon Sep 17 00:00:00 2001 From: miquelcampos Date: Tue, 7 Nov 2017 13:08:44 +0900 Subject: [PATCH 022/134] Shifter: Japanese Ascii. This error comes from some unicodeEncode if you catch the error str representation with Maya in Japanses. This Fixes #79 but is a workaround fix --- scripts/mgear/maya/node.py | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/scripts/mgear/maya/node.py b/scripts/mgear/maya/node.py index 88420d5..3db83de 100644 --- a/scripts/mgear/maya/node.py +++ b/scripts/mgear/maya/node.py @@ -509,7 +509,7 @@ def createMulDivNode(inputA, inputB, operation=1, output=None): if isinstance(item, str) or isinstance(item, unicode) or isinstance(item, pm.Attribute): try: pm.connectAttr(item, node+".input1"+s, f=True) - except RuntimeError: + except( UnicodeEncodeError, RuntimeError): # Maya in Japanese have an issue with unicodeEndoce UnicodeEncodeError is a workaround pm.connectAttr(item, node+".input1", f=True) break @@ -520,7 +520,7 @@ def createMulDivNode(inputA, inputB, operation=1, output=None): if isinstance(item, str) or isinstance(item, unicode) or isinstance(item, pm.Attribute): try: pm.connectAttr(item, node+".input2"+s, f=True) - except RuntimeError: + except( UnicodeEncodeError, RuntimeError): # Maya in Japanese have an issue with unicodeEndoce UnicodeEncodeError is a workaround pm.connectAttr(item, node+".input2", f=True) break else: From 477ed459b4a37d62f6ae30cec161a4e29bdf7606 Mon Sep 17 00:00:00 2001 From: miquelcampos Date: Tue, 7 Nov 2017 19:05:11 +0900 Subject: [PATCH 023/134] mGear: Attribute: update with lock and unlock attribute functions closes #83 --- scripts/mgear/maya/attribute.py | 26 +++++++++++++++++++++++++- 1 file changed, 25 insertions(+), 1 deletion(-) diff --git a/scripts/mgear/maya/attribute.py b/scripts/mgear/maya/attribute.py index 9b160ed..cd58a7d 100644 --- a/scripts/mgear/maya/attribute.py +++ b/scripts/mgear/maya/attribute.py @@ -349,11 +349,35 @@ def lockAttribute(node, attributes=["tx", "ty", "tz", "rx", "ry", "rz", "sx", "s Example: >>> att.lockAttribute(self.root_ctl, ["sx", "sy", "sz", "v"]) """ + _lockUnlockAttribute(node, attributes, lock=True, keyable=False) + +def unlockAttribute(node, attributes=["tx", "ty", "tz", "rx", "ry", "rz", "sx", "sy", "sz", "v"]): + """ + Unlock attributes of a node. By defaul will unlock the rotation, scale and translation. + + Args: + node(dagNode): The node with the attributes to unlock. + attributes (list of str): The list of the attributes to unlock. + + Example: + >>> att.unlockAttribute(self.root_ctl, ["sx", "sy", "sz", "v"]) + """ + _lockUnlockAttribute(node, attributes, lock=False, keyable=True) + +def _lockUnlockAttribute(node, attributes, lock, keyable): + """ + Lock or unlock attributes of a node. + + Args: + node(dagNode): The node with the attributes to lock/unlock. + attributes (list of str): The list of the attributes to lock/unlock. + + """ if not isinstance(attributes, list): attributes = [attributes] for attr_name in attributes: - node.setAttr(attr_name, lock=True, keyable=False) + node.setAttr(attr_name, lock=lock, keyable=keyable) def setKeyableAttributes(nodes, params=["tx", "ty", "tz", "ro", "rx", "ry", "rz", "sx", "sy", "sz"]): From d9df26021f71cd500855ad9caadb044d5f43fa4b Mon Sep 17 00:00:00 2001 From: Marcus Ottosson Date: Sun, 12 Nov 2017 21:39:25 +0000 Subject: [PATCH 024/134] Make mgear importable --- scripts/mgear/{__init__.py.in => __init__.py} | 5 ++--- 1 file changed, 2 insertions(+), 3 deletions(-) rename scripts/mgear/{__init__.py.in => __init__.py} (98%) diff --git a/scripts/mgear/__init__.py.in b/scripts/mgear/__init__.py similarity index 98% rename from scripts/mgear/__init__.py.in rename to scripts/mgear/__init__.py index 2f26984..e46c92a 100644 --- a/scripts/mgear/__init__.py.in +++ b/scripts/mgear/__init__.py @@ -34,7 +34,6 @@ # built-in import os import sys -import string import exceptions # Debug mode for the logger @@ -49,7 +48,7 @@ sev_comment = 32 # gear version -VERSION = @MGEAR_VERSION@ +VERSION = (2, 2, 5) ########################################################## @@ -60,7 +59,7 @@ def logInfos(): """ Log version of Gear """ - print "GEAR version : "+getVersion() + print "GEAR version : " + getVersion() def getVersion(): From 477d21f5200953f7a66c9078a9a4a4fbbe37ec5d Mon Sep 17 00:00:00 2001 From: Marcus Ottosson Date: Sun, 12 Nov 2017 21:39:39 +0000 Subject: [PATCH 025/134] Make tests nose-compatible --- tests/test_mgear_attribute.py | 197 ++++++++------------------ tests/test_rigbits_channelWrangler.py | 118 +++++++-------- 2 files changed, 110 insertions(+), 205 deletions(-) diff --git a/tests/test_mgear_attribute.py b/tests/test_mgear_attribute.py index 69f9cb4..f9e91df 100644 --- a/tests/test_mgear_attribute.py +++ b/tests/test_mgear_attribute.py @@ -1,141 +1,62 @@ -# MGEAR is under the terms of the MIT License - -# Copyright (c) 2016 Jeremie Passerin, Miquel Campos - -# Permission is hereby granted, free of charge, to any person obtaining a copy -# of this software and associated documentation files (the "Software"), to deal -# in the Software without restriction, including without limitation the rights -# to use, copy, modify, merge, publish, distribute, sublicense, and/or sell -# copies of the Software, and to permit persons to whom the Software is -# furnished to do so, subject to the following conditions: - -# The above copyright notice and this permission notice shall be included in all -# copies or substantial portions of the Software. - -# THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR -# IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, -# FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE -# AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER -# LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, -# OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE -# SOFTWARE. - -# Author: Jeremie Passerin geerem@hotmail.com www.jeremiepasserin.com -# Author: Miquel Campos hello@miquel-campos.com www.miquel-campos.com -# Date: 2016 / 10 / 10 - - -import unittest +from maya import cmds import pymel.core as pm -import mgear.maya.attribute as att - -# Test suite for mgear.maya.attribute module. - -class attribute_moveChannel_TestCase(unittest.TestCase): - """Test for moveChannel function on attribute module - """ - def setUp(self): - self.testName = self.shortDescription() - if (self.testName in [ "move_channel", "move_channel_index", "move_channel_fullName", - "move_channel_merge", "proxy_channel"]): - pm.displayInfo("Running: {}".format(self.testName)) - self.pcs = pm.polyCube(n="pCube_source") - self.pcs2 = pm.polyCube(n="pCube_source2") - self.pct = pm.polyCube(n="pCube_target") - self.chanName = "bla_{}".format(self.testName) - ch1 = att.addAttribute(self.pcs[0], self.chanName, "double", 0, minValue=0, maxValue=1 ) - ch2 = att.addAttribute(self.pcs2[0], self.chanName, "double", 0, minValue=0, maxValue=1 ) - pm.connectAttr(ch1, self.pcs[0].ty) - pm.connectAttr(ch2, self.pcs2[0].ty) - else: - pm.displayWarning("UNKNOWN TEST ROUTINE: {}".format(self.testName)) - - - def tearDown(self): - if (self.testName in [ "move_channel", "move_channel_index", "move_channel_fullName", - "move_channel_merge", "proxy_channel"]): - pm.delete(self.pcs) - pm.delete(self.pcs2) - pm.delete(self.pct) - - - def test_moveChannel(self): - """move_channel - """ - for s in [self.pcs[0], self.pcs2[0]]: - self.assertFalse(att.moveChannel(self.chanName, s, self.pct[0])) - - def test_moveChannel_index(self): - """move_channel_index - """ - for s in [self.pcs[0], self.pcs2[0]]: - self.assertIsNone(att.moveChannel(self.chanName, s, self.pct[0], "index")) - - def test_moveChannel_fullName(self): - """move_channel_fullName - """ - for s in [self.pcs[0], self.pcs2[0]]: - self.assertIsNone(att.moveChannel(self.chanName, s, self.pct[0], "fullName")) - - def test_moveChannel_merge(self): - """move_channel_merge - """ - for s in [self.pcs[0], self.pcs2[0]]: - self.assertIsNone(att.moveChannel(self.chanName, s, self.pct[0], "merge")) - - - - -class attribute_addProxyAttribute_TestCase(unittest.TestCase): - - - def setUp(self): - self.testName = self.shortDescription() - if (self.testName in ["proxy_channel", "proxy_channel_index", "proxy_channel_fullName"]): - pm.displayInfo("Running: {}".format(self.testName)) - self.pcs = pm.polyCube(n="pCube_source") - self.pcs2 = pm.polyCube(n="pCube_source2") - self.pct = pm.polyCube(n="pCube_target") - self.chanName = "bla_{}".format(self.testName) - ch1 = att.addAttribute(self.pcs[0], self.chanName, "double", 0, minValue=0, maxValue=1 ) - ch2 = att.addAttribute(self.pcs2[0], self.chanName, "double", 0, minValue=0, maxValue=1 ) - pm.connectAttr(ch1, self.pcs[0].ty) - pm.connectAttr(ch2, self.pcs2[0].ty) - else: - pm.displayWarning("UNKNOWN TEST ROUTINE: {}".format(self.testName)) - - def tearDown(self): - if (self.testName in ["proxy_channel", "proxy_channel_index", "proxy_channel_fullName"]): - pm.delete(self.pcs) - pm.delete(self.pcs2) - pm.delete(self.pct) - - def test_addProxyAttribute(self): - """proxy_channel - """ - source = pm.PyNode("{}.{}".format(self.pcs[0], self.chanName)) - source2 = pm.PyNode("{}.{}".format(self.pcs2[0], self.chanName)) - self.assertIsNone(att.addProxyAttribute(source, self.pct[0])) - self.assertIsNone(att.addProxyAttribute(source2, self.pct[0])) - - def test_addProxyAttribute_index(self): - """proxy_channel_index - """ - source = pm.PyNode("{}.{}".format(self.pcs[0], self.chanName)) - source2 = pm.PyNode("{}.{}".format(self.pcs2[0], self.chanName)) - self.assertIsNone(att.addProxyAttribute(source, self.pct[0], "index")) - self.assertIsNone(att.addProxyAttribute(source2, self.pct[0], "index")) - - def test_addProxyAttribute_fullName(self): - """proxy_channel_fullName - """ - source = pm.PyNode("{}.{}".format(self.pcs[0], self.chanName)) - source2 = pm.PyNode("{}.{}".format(self.pcs2[0], self.chanName)) - self.assertIsNone(att.addProxyAttribute(source, self.pct[0], "fullName")) - self.assertIsNone(att.addProxyAttribute(source2, self.pct[0], "fullName")) - - +import mgear.maya.attribute as att -if __name__=='__main__': - unittest.main(exit=False) +from nose.tools import ( + assert_false, + assert_is_none, + with_setup, +) + + +def source_nodes(): + cmds.file(new=True, force=True) + + source1, _ = pm.polyCube(name="source1") + source2, _ = pm.polyCube(name="source2") + target, _ = pm.polyCube(name="target") + + ch1 = att.addAttribute(source1, + "chanName", + "double", + 0, + minValue=0, + maxValue=1) + ch2 = att.addAttribute(source2, + "chanName", + "double", + 0, + minValue=0, + maxValue=1) + + pm.connectAttr(ch1, source1.ty) + pm.connectAttr(ch2, source2.ty) + + +@with_setup(source_nodes) +def test_move_channel(): + """chanName.moveChannel works""" + + for source in ("source1", "source2"): + assert_false( + att.moveChannel("chanName", source, "target") + ) + + +@with_setup(source_nodes) +def test_moveChannel_index(): + """move_channel_index""" + for source in ("source1", "source2"): + assert_is_none( + att.moveChannel("chanName", source, "source1", "index") + ) + + +@with_setup(source_nodes) +def test_moveChannel_fullName(): + """move_channel_fullName""" + for source in ("source1", "source2"): + assert_is_none( + att.moveChannel("chanName", source, "source1", "fullName") + ) diff --git a/tests/test_rigbits_channelWrangler.py b/tests/test_rigbits_channelWrangler.py index 4c2b718..6c3557b 100644 --- a/tests/test_rigbits_channelWrangler.py +++ b/tests/test_rigbits_channelWrangler.py @@ -1,69 +1,53 @@ -# MGEAR is under the terms of the MIT License - -# Copyright (c) 2016 Jeremie Passerin, Miquel Campos - -# Permission is hereby granted, free of charge, to any person obtaining a copy -# of this software and associated documentation files (the "Software"), to deal -# in the Software without restriction, including without limitation the rights -# to use, copy, modify, merge, publish, distribute, sublicense, and/or sell -# copies of the Software, and to permit persons to whom the Software is -# furnished to do so, subject to the following conditions: - -# The above copyright notice and this permission notice shall be included in all -# copies or substantial portions of the Software. - -# THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR -# IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, -# FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE -# AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER -# LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, -# OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE -# SOFTWARE. - -# Author: Jeremie Passerin geerem@hotmail.com www.jeremiepasserin.com -# Author: Miquel Campos hello@miquel-campos.com www.miquel-campos.com -# Date: 2016 / 10 / 10 - - -import unittest +from maya import cmds import pymel.core as pm -import mgear.maya.rigbits.channelWrangler as cw -import mgear.maya.attribute as att - - -class cwTestCase(unittest.TestCase): - - def setUp(self): - self.config = { "movePolicy":"merge", - "proxyPolicy":"index", - "map":[ ["shoulder_ik", "armUI_R0_ctl", "armUI_L0_ctl", 0], - ["shoulder_rotRef", "armUI_R0_ctl", "armUI_L0_ctl", 0], - ["shoulder_rotRef", "armUI_R1_ctl", "armUI_L0_ctl", 0]]} - - self.pcs = pm.polyCube(n="armUI_R0_ctl") - self.pcs2 = pm.polyCube(n="armUI_R1_ctl") - self.pct = pm.polyCube(n="armUI_L0_ctl") - att.addAttribute(self.pcs[0], "shoulder_ik", "double", 0, minValue=0, maxValue=1 ) - ch2 = att.addAttribute(self.pcs[0], "shoulder_rotRef", "double", 0, minValue=0, maxValue=1 ) - ch3 = att.addAttribute(self.pcs2[0], "shoulder_rotRef", "double", 0, minValue=0, maxValue=1 ) - pm.connectAttr(ch2, self.pcs[0].ty) - pm.connectAttr(ch3, self.pcs2[0].ty) - - - def tearDown(self): - pm.delete(self.pcs) - pm.delete(self.pcs2) - pm.delete(self.pct) - - def test_applyChannelConfig(self): - self.assertIsNone(cw._applyChannelConfig(self.config)) - - # def test_applyChannelConfigFromFile(self): - # filePath = "" - # self.assertIsNone(cw.applyChannelConfig(filePath)) - - - -if __name__=='__main__': - unittest.main(exit=False) +from mgear.maya.rigbits import channelWrangler +from mgear.maya import attribute + +from nose.tools import ( + assert_is_none, + with_setup, +) + +self = type("self", (object,), {}) +self.config = { + "movePolicy": "merge", + "proxyPolicy": "index", + "map": [ + ["shoulder_ik", "armUI_R0_ctl", "armUI_L0_ctl", 0], + ["shoulder_rotRef", "armUI_R0_ctl", "armUI_L0_ctl", 0], + ["shoulder_rotRef", "armUI_R1_ctl", "armUI_L0_ctl", 0] + ] +} + + +def source_nodes(): + cmds.file(new=True, force=True) + + pcs = pm.polyCube(name="armUI_R0_ctl") + pcs2 = pm.polyCube(name="armUI_R1_ctl") + attribute.addAttribute(pcs[0], + "shoulder_ik", + "double", + 0, + minValue=0, + maxValue=1) + ch2 = attribute.addAttribute(pcs[0], + "shoulder_rotRef", + "double", + 0, + minValue=0, + maxValue=1) + ch3 = attribute.addAttribute(pcs2[0], + "shoulder_rotRef", + "double", + 0, + minValue=0, + maxValue=1) + pm.connectAttr(ch2, pcs[0].ty) + pm.connectAttr(ch3, pcs2[0].ty) + + +@with_setup(source_nodes) +def test_applyChannelConfig(): + assert_is_none(channelWrangler._applyChannelConfig(self.config)) From 4df24f15e2ca77ea41900fbb704e9b993ed1adb8 Mon Sep 17 00:00:00 2001 From: Marcus Ottosson Date: Sun, 12 Nov 2017 21:40:08 +0000 Subject: [PATCH 026/134] Setup test and coverage harness --- .coveragerc | 5 +++ .gitignore | 1 + .travis.yml | 13 +++++++ Dockerfile | 19 ++++++++++ run_tests.py | 102 +++++++++++++++++++++++++++++++++++++++++++++++++++ 5 files changed, 140 insertions(+) create mode 100644 .coveragerc create mode 100644 .travis.yml create mode 100644 Dockerfile create mode 100644 run_tests.py diff --git a/.coveragerc b/.coveragerc new file mode 100644 index 0000000..72d0440 --- /dev/null +++ b/.coveragerc @@ -0,0 +1,5 @@ +[run] +source = scripts + +[report] +include = scripts/* diff --git a/.gitignore b/.gitignore index b023134..114e875 100644 --- a/.gitignore +++ b/.gitignore @@ -51,3 +51,4 @@ excons.cache /mGear.mod +cover/ \ No newline at end of file diff --git a/.travis.yml b/.travis.yml new file mode 100644 index 0000000..03a9ce9 --- /dev/null +++ b/.travis.yml @@ -0,0 +1,13 @@ +language: python + +python: + - 2.7 + +services: + - docker + +install: + - docker build -t mgear . + +script: + - docker run -ti --rm -v $(pwd):/workspace mgear diff --git a/Dockerfile b/Dockerfile new file mode 100644 index 0000000..d1630e6 --- /dev/null +++ b/Dockerfile @@ -0,0 +1,19 @@ +FROM mottosso/maya:2016sp1 + +RUN wget https://bootstrap.pypa.io/get-pip.py && \ + mayapy get-pip.py && \ + mayapy -m pip install \ + nose \ + nose-exclude \ + coverage \ + sphinx \ + six \ + sphinxcontrib-napoleon \ + python-coveralls + +# Avoid creation of auxilliary files +ENV PYTHONDONTWRITEBYTECODE=1 + +WORKDIR /workspace + +ENTRYPOINT mayapy -u run_tests.py diff --git a/run_tests.py b/run_tests.py new file mode 100644 index 0000000..5c7645e --- /dev/null +++ b/run_tests.py @@ -0,0 +1,102 @@ +"""Use Mayapy for testing + +Usage: + $ mayapy run_tests.py + +""" + +import os +import sys +import nose +import logging +import contextlib + +import six + +from maya import standalone +from nose_exclude import NoseExclude + + +def null(*args, **kwargs): + pass + + +@contextlib.contextmanager +def mute(): + try: + sys.stdout = six.moves.StringIO() + sys.stderr = six.moves.StringIO() + yield + + finally: + sys.stdout = sys.__stdout__ + sys.stderr = sys.__stderr__ + + +if __name__ == "__main__": + # Expose mgear Python package to tests + dirname = os.path.dirname(__file__) + sys.path.insert(0, os.path.join(dirname, "scripts")) + + print("Initialising Maya..") + with mute(): + standalone.initialize() + import pymel.core + import pymel.internal.startup + pymel.internal.startup.fixMayapy2011SegFault() + + for name, logger in logging.Logger.manager.loggerDict.items(): + if "pymel" in name: + logger.disabled = True + + argv = sys.argv[:] + argv.extend([ + + # Sometimes, files from Windows accessed + # from Linux cause the executable flag to be + # set, and Nose has an aversion to these + # per default. + "--exe", + + # Produce nice, easily readable output from each test + "--verbose", + + # Run through the docstring of every module + # and run anything prefixed with ">>> " + "--with-doctest", + + # Produce a coverage report post-tests + "--with-coverage", + "--cover-html", + "--cover-tests", + "--cover-erase", + + "--exclude-dir=cvwrap", + "--exclude-dir=docs", + "--exclude-dir=excons", + "--exclude-dir=src", + + "tests", + "scripts", + ]) + + # Visually separate output from the above Maya initialisation + # and the actual tests. + # TODO: Mute Maya output entirely; I don't know how it manages to still + # output anything when sys.stdout and err are discarded.. + print("\n" + "-" * 70) + print("Running tests..\n") + + try: + # Disable messages via PyMEL, they obfuscate the report + pymel.core.displayWarning = null + pymel.core.displayError = null + + nose.main(argv=argv, addplugins=[NoseExclude()]) + + finally: + # Only bother when running when on Travis + if os.getenv("TRAVIS_JOB_ID"): + __import__("coveralls").wear() + else: + sys.stdout.write("Skipping coveralls\n") From 889007e0b29382249892668013b6b3152789ee45 Mon Sep 17 00:00:00 2001 From: Marcus Ottosson Date: Sun, 12 Nov 2017 21:55:43 +0000 Subject: [PATCH 027/134] Trigger Travis for the first time --- .travis.yml | 1 + 1 file changed, 1 insertion(+) diff --git a/.travis.yml b/.travis.yml index 03a9ce9..3ed47d0 100644 --- a/.travis.yml +++ b/.travis.yml @@ -11,3 +11,4 @@ install: script: - docker run -ti --rm -v $(pwd):/workspace mgear + From e55d47ba7ad55890d97dacd624a25f880c0ce959 Mon Sep 17 00:00:00 2001 From: Marcus Ottosson Date: Sun, 12 Nov 2017 21:57:39 +0000 Subject: [PATCH 028/134] Repair submodules for Travis --- .gitmodules | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/.gitmodules b/.gitmodules index 3b173a0..955d252 100644 --- a/.gitmodules +++ b/.gitmodules @@ -1,6 +1,6 @@ [submodule "excons"] path = excons - url = git://github.com/gatgui/excons + url = https://github.com/gatgui/excons.git [submodule "cvwrap"] path = cvwrap - url = git://github.com/miquelcampos/cvwrap + url = https://github.com/miquelcampos/cvwrap.git From edc66be6e2510cc7fab8f57c5f53bec03489bc37 Mon Sep 17 00:00:00 2001 From: Marcus Ottosson Date: Sun, 12 Nov 2017 22:02:38 +0000 Subject: [PATCH 029/134] Disable pulling submodules on Travis --- .travis.yml | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/.travis.yml b/.travis.yml index 3ed47d0..6fe6c0c 100644 --- a/.travis.yml +++ b/.travis.yml @@ -1,5 +1,10 @@ language: python +# cvwrap is incorrectly configured to pull +# its submodules via ssh as opposed to https +git: + submodules: false + python: - 2.7 From 123b85d170412c16bee1989dd08e1be800cb099f Mon Sep 17 00:00:00 2001 From: miquelcampos Date: Mon, 13 Nov 2017 10:22:22 +0900 Subject: [PATCH 030/134] Shifter: Game tools WIP: #64 --- scripts/mgear/maya/shifter/gameTools.py | 156 ++++++++++++++++++++++-- 1 file changed, 143 insertions(+), 13 deletions(-) diff --git a/scripts/mgear/maya/shifter/gameTools.py b/scripts/mgear/maya/shifter/gameTools.py index 4a86c4a..6bfb20d 100644 --- a/scripts/mgear/maya/shifter/gameTools.py +++ b/scripts/mgear/maya/shifter/gameTools.py @@ -28,6 +28,8 @@ import pymel.core as pm import json from functools import partial +import traceback +import os.path import mgear.maya.utils as mutils import mgear.string as string @@ -100,7 +102,7 @@ def connectCns(cnxDict, nsRig=None, nsSkin=None): pm.scaleConstraint(oTrans,oJnt, mo=True) -def exportConnections(source=None, disc=False): +def exportConnections(source=None, filePath=None, disc=False): connections = {} connections["joints"] = [] connections["attrs"] = [] @@ -130,19 +132,20 @@ def exportConnections(source=None, disc=False): connections["attrs"].append(attrs_list_checked) data_string = json.dumps(connections, indent=4, sort_keys=True) - filePath = pm.fileDialog2(dialogStyle=2, fileMode=0, - fileFilter=' Shifter joint cnx maya matrix .jmm (*%s)' %".jmm") if not filePath: - return - if not isinstance(filePath, basestring): - filePath = filePath[0] - f = open(filePath, 'w') - f.write(data_string) - f.close() + filePath = pm.fileDialog2(dialogStyle=2, fileMode=0, + fileFilter=' Shifter joint cnx maya matrix .jmm (*%s)' %".jmm") + if not filePath: + return + if not isinstance(filePath, basestring): + filePath = filePath[0] - if disc: - # print connections - disconnect(connections) + if os.path.isfile(filePath) and connections["joints"]: + with open(filePath, 'w') as f: + f.write(data_string) + + if disc: + disconnect(connections) @@ -155,13 +158,86 @@ def importConnections(filePath=None, nsRig=None, nsSkin=None, useMtx=True): return if not isinstance(filePath, basestring): filePath = filePath[0] - configDict = json.load(open(filePath)) + with open(filePath) as fp: + configDict = json.load(fp) if useMtx: connect(configDict, nsRig=nsRig, nsSkin=nsSkin) else: connectCns(configDict, nsRig=nsRig, nsSkin=nsSkin) +def getRigTopNode(node=None): + if not node and pm.selected(): + node=pm.selected()[0] + if not node.hasAttr("is_rig"): + pm.displayWarning("Please select a valid rig top node!. '{}' is not a rig top node".format(node.name())) + return False + return node.name() + else: + pm.displayWarning("Please select a rig top node!") + return False + +def runScript(path=None): + if path: + execfile(path) + + +@mutils.one_undo +def exportAssetAssembly(name, rigTopNode, meshTopNode, path, postScript=None): + if pm.ls(rigTopNode): + rigTopNode = pm.PyNode(rigTopNode) + else: + pm.displayError("{} doesn't exist or duplicated. Please check your scene".format(rigTopNode)) + return + + if pm.ls(meshTopNode): + meshTopNode = pm.PyNode(meshTopNode) + else: + pm.displayError("{} doesn't exist or duplicated. Please check your scene".format(meshTopNode)) + return + # check the folder and script + # if the target name exist abort and request another name + + deformer_jnts = rigTopNode.rigGroups[3].connections()[0].members() + if not deformer_jnts: + pm.displayError("{} is empty. The tool can't find any joint".format(meshTopNode)) + + + # export connections and cut joint connections + + # cut al possible remaining connection and adjust hierarchy + + + + #pot script + if postScript: + try: + execfile(postScript) + except Exception as ex: + template = "An exception of type {0} occured. Arguments:\n{1!r}" + message = template.format(type(ex).__name__, ex.args) + pm.displayError( message) + cont = pm.confirmBox( "FAIL: Script Fail", + "Do you want to export anyway?" + "\n\n" + message + "\n\n" + traceback.format_exc(), + "Continue", "Cancel") + if not cont: + pm.undo() + return + + # export rig model + + # export mesh and joints + + + +def _importAssetAssembly(paht=None, reference=False): + return + +def importAssetAssembly(path=None): + return + +def referenceAssetAssembly(path=None): + return #################################### @@ -181,6 +257,8 @@ def __init__(self, parent=None): super(self.__class__, self).__init__(parent = parent) self.gtUIInst = gameToolsUI() + self.startDir = pm.workspace(q=True, rootDirectory=True) + self.gameTools_window() self.gameTools_layout() self.createConnections() @@ -201,13 +279,65 @@ def gameTools_layout(self): self.setLayout(self.gt_layout) + + # Slots @staticmethod def _validCharacters(lEdit): name = string.removeInvalidCharacter(lEdit.text()) lEdit.setText(name) + def populateRigTopNode(self): + topNode = getRigTopNode() + if topNode: + self.gtUIInst.rigNode_lineEdit.setText(topNode) + + def populateMeshTopNode(self): + if pm.selected(): + node=pm.selected()[0] + self.gtUIInst.meshNode_lineEdit.setText(node.name()) + else: + pm.displayWarning("Please select a Mesh top node!") + return False + + def populateOutputFolder(self): + filePath = pm.fileDialog2( dialogStyle=2, fileMode=2, startingDirectory=self.startDir, + fileFilter=' Shifter Game Assembly folder') + if not filePath: + return + if not isinstance(filePath, basestring): + filePath = filePath[0] + self.gtUIInst.path_lineEdit.setText(filePath) + + + def populateScript(self): + filePath = pm.fileDialog2( dialogStyle=2, fileMode=1, startingDirectory=self.startDir, + fileFilter=' Post Script .py (*%s)' %".py") + if not filePath: + return + if not isinstance(filePath, basestring): + filePath = filePath[0] + self.gtUIInst.script_lineEdit.setText(filePath) + + def disconnectExport(self): + name = self.gtUIInst.assetName_lineEdit.text() + rigTopNode = self.gtUIInst.rigNode_lineEdit.text() + meshTopNode = self.gtUIInst.meshNode_lineEdit.text() + path = self.gtUIInst.path_lineEdit.text() + postScript = self.gtUIInst.script_lineEdit.text() + + if name and rigTopNode and meshTopNode and path: + exportAssetAssembly(name, rigTopNode, meshTopNode, path, postScript) + else: + pm.displayWarning("Name, Rig Top Node, Mesh Top Node and path are mandatory fields. Please check it.") + + #Connect slots def createConnections(self): self.gtUIInst.assetName_lineEdit.editingFinished.connect(partial(gameTools._validCharacters, self.gtUIInst.assetName_lineEdit )) + self.gtUIInst.rigNode_pushButton.clicked.connect(self.populateRigTopNode) + self.gtUIInst.meshNode_pushButton.clicked.connect(self.populateMeshTopNode) + self.gtUIInst.path_pushButton.clicked.connect(self.populateOutputFolder) + self.gtUIInst.script_pushButton.clicked.connect(self.populateScript) + self.gtUIInst.disconnectExport_pushButton.clicked.connect(self.disconnectExport) if __name__ == "__main__": From b8df79b3d5f0f9695e88d2ab17eaccd5f25d7fd7 Mon Sep 17 00:00:00 2001 From: miquelcampos Date: Mon, 13 Nov 2017 10:28:45 +0900 Subject: [PATCH 031/134] mGear: Vendoring QT #89 refactoring all modules still needed --- scripts/mgear/vendor/Qt.py | 1606 ++++++++++++++++++++++++++++++ scripts/mgear/vendor/__init__.py | 0 2 files changed, 1606 insertions(+) create mode 100644 scripts/mgear/vendor/Qt.py create mode 100644 scripts/mgear/vendor/__init__.py diff --git a/scripts/mgear/vendor/Qt.py b/scripts/mgear/vendor/Qt.py new file mode 100644 index 0000000..84b9b46 --- /dev/null +++ b/scripts/mgear/vendor/Qt.py @@ -0,0 +1,1606 @@ +"""Minimal Python 2 & 3 shim around all Qt bindings + +DOCUMENTATION + Qt.py was born in the film and visual effects industry to address + the growing need for the development of software capable of running + with more than one flavour of the Qt bindings for Python - PySide, + PySide2, PyQt4 and PyQt5. + + 1. Build for one, run with all + 2. Explicit is better than implicit + 3. Support co-existence + + Default resolution order: + - PySide2 + - PyQt5 + - PySide + - PyQt4 + + Usage: + >> import sys + >> from Qt import QtWidgets + >> app = QtWidgets.QApplication(sys.argv) + >> button = QtWidgets.QPushButton("Hello World") + >> button.show() + >> app.exec_() + + All members of PySide2 are mapped from other bindings, should they exist. + If no equivalent member exist, it is excluded from Qt.py and inaccessible. + The idea is to highlight members that exist across all supported binding, + and guarantee that code that runs on one binding runs on all others. + + For more details, visit https://github.com/mottosso/Qt.py + +LICENSE + + See end of file for license (MIT, BSD) information. + +""" + +import os +import sys +import types +import shutil + + +__version__ = "1.1.0.b6" + +# Enable support for `from Qt import *` +__all__ = [] + +# Flags from environment variables +QT_VERBOSE = bool(os.getenv("QT_VERBOSE")) +QT_PREFERRED_BINDING = os.getenv("QT_PREFERRED_BINDING", "") +QT_SIP_API_HINT = os.getenv("QT_SIP_API_HINT") + +# Reference to Qt.py +Qt = sys.modules[__name__] +Qt.QtCompat = types.ModuleType("QtCompat") + +try: + long +except NameError: + # Python 3 compatibility + long = int + +"""Common members of all bindings + +This is where each member of Qt.py is explicitly defined. +It is based on a "lowest common denominator" of all bindings; +including members found in each of the 4 bindings. + +Find or add excluded members in build_membership.py + +""" + +_common_members = { + "QtCore": [ + "QAbstractAnimation", + "QAbstractEventDispatcher", + "QAbstractItemModel", + "QAbstractListModel", + "QAbstractState", + "QAbstractTableModel", + "QAbstractTransition", + "QAnimationGroup", + "QBasicTimer", + "QBitArray", + "QBuffer", + "QByteArray", + "QByteArrayMatcher", + "QChildEvent", + "QCoreApplication", + "QCryptographicHash", + "QDataStream", + "QDate", + "QDateTime", + "QDir", + "QDirIterator", + "QDynamicPropertyChangeEvent", + "QEasingCurve", + "QElapsedTimer", + "QEvent", + "QEventLoop", + "QEventTransition", + "QFile", + "QFileInfo", + "QFileSystemWatcher", + "QFinalState", + "QGenericArgument", + "QGenericReturnArgument", + "QHistoryState", + "QItemSelectionRange", + "QIODevice", + "QLibraryInfo", + "QLine", + "QLineF", + "QLocale", + "QMargins", + "QMetaClassInfo", + "QMetaEnum", + "QMetaMethod", + "QMetaObject", + "QMetaProperty", + "QMimeData", + "QModelIndex", + "QMutex", + "QMutexLocker", + "QObject", + "QParallelAnimationGroup", + "QPauseAnimation", + "QPersistentModelIndex", + "QPluginLoader", + "QPoint", + "QPointF", + "QProcess", + "QProcessEnvironment", + "QPropertyAnimation", + "QReadLocker", + "QReadWriteLock", + "QRect", + "QRectF", + "QRegExp", + "QResource", + "QRunnable", + "QSemaphore", + "QSequentialAnimationGroup", + "QSettings", + "QSignalMapper", + "QSignalTransition", + "QSize", + "QSizeF", + "QSocketNotifier", + "QState", + "QStateMachine", + "QSysInfo", + "QSystemSemaphore", + "QT_TRANSLATE_NOOP", + "QT_TR_NOOP", + "QT_TR_NOOP_UTF8", + "QTemporaryFile", + "QTextBoundaryFinder", + "QTextCodec", + "QTextDecoder", + "QTextEncoder", + "QTextStream", + "QTextStreamManipulator", + "QThread", + "QThreadPool", + "QTime", + "QTimeLine", + "QTimer", + "QTimerEvent", + "QTranslator", + "QUrl", + "QVariantAnimation", + "QWaitCondition", + "QWriteLocker", + "QXmlStreamAttribute", + "QXmlStreamAttributes", + "QXmlStreamEntityDeclaration", + "QXmlStreamEntityResolver", + "QXmlStreamNamespaceDeclaration", + "QXmlStreamNotationDeclaration", + "QXmlStreamReader", + "QXmlStreamWriter", + "Qt", + "QtCriticalMsg", + "QtDebugMsg", + "QtFatalMsg", + "QtMsgType", + "QtSystemMsg", + "QtWarningMsg", + "qAbs", + "qAddPostRoutine", + "qChecksum", + "qCritical", + "qDebug", + "qFatal", + "qFuzzyCompare", + "qIsFinite", + "qIsInf", + "qIsNaN", + "qIsNull", + "qRegisterResourceData", + "qUnregisterResourceData", + "qVersion", + "qWarning", + "qrand", + "qsrand" + ], + "QtGui": [ + "QAbstractTextDocumentLayout", + "QActionEvent", + "QBitmap", + "QBrush", + "QClipboard", + "QCloseEvent", + "QColor", + "QConicalGradient", + "QContextMenuEvent", + "QCursor", + "QDoubleValidator", + "QDrag", + "QDragEnterEvent", + "QDragLeaveEvent", + "QDragMoveEvent", + "QDropEvent", + "QFileOpenEvent", + "QFocusEvent", + "QFont", + "QFontDatabase", + "QFontInfo", + "QFontMetrics", + "QFontMetricsF", + "QGradient", + "QHelpEvent", + "QHideEvent", + "QHoverEvent", + "QIcon", + "QIconDragEvent", + "QIconEngine", + "QImage", + "QImageIOHandler", + "QImageReader", + "QImageWriter", + "QInputEvent", + "QInputMethodEvent", + "QIntValidator", + "QKeyEvent", + "QKeySequence", + "QLinearGradient", + "QMatrix2x2", + "QMatrix2x3", + "QMatrix2x4", + "QMatrix3x2", + "QMatrix3x3", + "QMatrix3x4", + "QMatrix4x2", + "QMatrix4x3", + "QMatrix4x4", + "QMouseEvent", + "QMoveEvent", + "QMovie", + "QPaintDevice", + "QPaintEngine", + "QPaintEngineState", + "QPaintEvent", + "QPainter", + "QPainterPath", + "QPainterPathStroker", + "QPalette", + "QPen", + "QPicture", + "QPictureIO", + "QPixmap", + "QPixmapCache", + "QPolygon", + "QPolygonF", + "QQuaternion", + "QRadialGradient", + "QRegExpValidator", + "QRegion", + "QResizeEvent", + "QSessionManager", + "QShortcutEvent", + "QShowEvent", + "QStandardItem", + "QStandardItemModel", + "QStatusTipEvent", + "QSyntaxHighlighter", + "QTabletEvent", + "QTextBlock", + "QTextBlockFormat", + "QTextBlockGroup", + "QTextBlockUserData", + "QTextCharFormat", + "QTextCursor", + "QTextDocument", + "QTextDocumentFragment", + "QTextFormat", + "QTextFragment", + "QTextFrame", + "QTextFrameFormat", + "QTextImageFormat", + "QTextInlineObject", + "QTextItem", + "QTextLayout", + "QTextLength", + "QTextLine", + "QTextList", + "QTextListFormat", + "QTextObject", + "QTextObjectInterface", + "QTextOption", + "QTextTable", + "QTextTableCell", + "QTextTableCellFormat", + "QTextTableFormat", + "QTouchEvent", + "QTransform", + "QValidator", + "QVector2D", + "QVector3D", + "QVector4D", + "QWhatsThisClickedEvent", + "QWheelEvent", + "QWindowStateChangeEvent", + "qAlpha", + "qBlue", + "qGray", + "qGreen", + "qIsGray", + "qRed", + "qRgb", + "qRgba" + ], + "QtHelp": [ + "QHelpContentItem", + "QHelpContentModel", + "QHelpContentWidget", + "QHelpEngine", + "QHelpEngineCore", + "QHelpIndexModel", + "QHelpIndexWidget", + "QHelpSearchEngine", + "QHelpSearchQuery", + "QHelpSearchQueryWidget", + "QHelpSearchResultWidget" + ], + "QtNetwork": [ + "QAbstractNetworkCache", + "QAbstractSocket", + "QAuthenticator", + "QHostAddress", + "QHostInfo", + "QLocalServer", + "QLocalSocket", + "QNetworkAccessManager", + "QNetworkAddressEntry", + "QNetworkCacheMetaData", + "QNetworkConfiguration", + "QNetworkConfigurationManager", + "QNetworkCookie", + "QNetworkCookieJar", + "QNetworkDiskCache", + "QNetworkInterface", + "QNetworkProxy", + "QNetworkProxyFactory", + "QNetworkProxyQuery", + "QNetworkReply", + "QNetworkRequest", + "QNetworkSession", + "QSsl", + "QTcpServer", + "QTcpSocket", + "QUdpSocket" + ], + "QtSql": [ + "QSql", + "QSqlDatabase", + "QSqlDriver", + "QSqlDriverCreatorBase", + "QSqlError", + "QSqlField", + "QSqlIndex", + "QSqlQuery", + "QSqlQueryModel", + "QSqlRecord", + "QSqlRelation", + "QSqlRelationalDelegate", + "QSqlRelationalTableModel", + "QSqlResult", + "QSqlTableModel" + ], + "QtSvg": [ + "QGraphicsSvgItem", + "QSvgGenerator", + "QSvgRenderer", + "QSvgWidget" + ], + "QtTest": [ + "QTest" + ], + "QtWidgets": [ + "QAbstractButton", + "QAbstractGraphicsShapeItem", + "QAbstractItemDelegate", + "QAbstractItemView", + "QAbstractScrollArea", + "QAbstractSlider", + "QAbstractSpinBox", + "QAction", + "QActionGroup", + "QApplication", + "QBoxLayout", + "QButtonGroup", + "QCalendarWidget", + "QCheckBox", + "QColorDialog", + "QColumnView", + "QComboBox", + "QCommandLinkButton", + "QCommonStyle", + "QCompleter", + "QDataWidgetMapper", + "QDateEdit", + "QDateTimeEdit", + "QDesktopWidget", + "QDial", + "QDialog", + "QDialogButtonBox", + "QDirModel", + "QDockWidget", + "QDoubleSpinBox", + "QErrorMessage", + "QFileDialog", + "QFileIconProvider", + "QFileSystemModel", + "QFocusFrame", + "QFontComboBox", + "QFontDialog", + "QFormLayout", + "QFrame", + "QGesture", + "QGestureEvent", + "QGestureRecognizer", + "QGraphicsAnchor", + "QGraphicsAnchorLayout", + "QGraphicsBlurEffect", + "QGraphicsColorizeEffect", + "QGraphicsDropShadowEffect", + "QGraphicsEffect", + "QGraphicsEllipseItem", + "QGraphicsGridLayout", + "QGraphicsItem", + "QGraphicsItemGroup", + "QGraphicsLayout", + "QGraphicsLayoutItem", + "QGraphicsLineItem", + "QGraphicsLinearLayout", + "QGraphicsObject", + "QGraphicsOpacityEffect", + "QGraphicsPathItem", + "QGraphicsPixmapItem", + "QGraphicsPolygonItem", + "QGraphicsProxyWidget", + "QGraphicsRectItem", + "QGraphicsRotation", + "QGraphicsScale", + "QGraphicsScene", + "QGraphicsSceneContextMenuEvent", + "QGraphicsSceneDragDropEvent", + "QGraphicsSceneEvent", + "QGraphicsSceneHelpEvent", + "QGraphicsSceneHoverEvent", + "QGraphicsSceneMouseEvent", + "QGraphicsSceneMoveEvent", + "QGraphicsSceneResizeEvent", + "QGraphicsSceneWheelEvent", + "QGraphicsSimpleTextItem", + "QGraphicsTextItem", + "QGraphicsTransform", + "QGraphicsView", + "QGraphicsWidget", + "QGridLayout", + "QGroupBox", + "QHBoxLayout", + "QHeaderView", + "QInputDialog", + "QItemDelegate", + "QItemEditorCreatorBase", + "QItemEditorFactory", + "QKeyEventTransition", + "QLCDNumber", + "QLabel", + "QLayout", + "QLayoutItem", + "QLineEdit", + "QListView", + "QListWidget", + "QListWidgetItem", + "QMainWindow", + "QMdiArea", + "QMdiSubWindow", + "QMenu", + "QMenuBar", + "QMessageBox", + "QMouseEventTransition", + "QPanGesture", + "QPinchGesture", + "QPlainTextDocumentLayout", + "QPlainTextEdit", + "QProgressBar", + "QProgressDialog", + "QPushButton", + "QRadioButton", + "QRubberBand", + "QScrollArea", + "QScrollBar", + "QShortcut", + "QSizeGrip", + "QSizePolicy", + "QSlider", + "QSpacerItem", + "QSpinBox", + "QSplashScreen", + "QSplitter", + "QSplitterHandle", + "QStackedLayout", + "QStackedWidget", + "QStatusBar", + "QStyle", + "QStyleFactory", + "QStyleHintReturn", + "QStyleHintReturnMask", + "QStyleHintReturnVariant", + "QStyleOption", + "QStyleOptionButton", + "QStyleOptionComboBox", + "QStyleOptionComplex", + "QStyleOptionDockWidget", + "QStyleOptionFocusRect", + "QStyleOptionFrame", + "QStyleOptionGraphicsItem", + "QStyleOptionGroupBox", + "QStyleOptionHeader", + "QStyleOptionMenuItem", + "QStyleOptionProgressBar", + "QStyleOptionRubberBand", + "QStyleOptionSizeGrip", + "QStyleOptionSlider", + "QStyleOptionSpinBox", + "QStyleOptionTab", + "QStyleOptionTabBarBase", + "QStyleOptionTabWidgetFrame", + "QStyleOptionTitleBar", + "QStyleOptionToolBar", + "QStyleOptionToolBox", + "QStyleOptionToolButton", + "QStyleOptionViewItem", + "QStylePainter", + "QStyledItemDelegate", + "QSwipeGesture", + "QSystemTrayIcon", + "QTabBar", + "QTabWidget", + "QTableView", + "QTableWidget", + "QTableWidgetItem", + "QTableWidgetSelectionRange", + "QTapAndHoldGesture", + "QTapGesture", + "QTextBrowser", + "QTextEdit", + "QTimeEdit", + "QToolBar", + "QToolBox", + "QToolButton", + "QToolTip", + "QTreeView", + "QTreeWidget", + "QTreeWidgetItem", + "QTreeWidgetItemIterator", + "QUndoCommand", + "QUndoGroup", + "QUndoStack", + "QUndoView", + "QVBoxLayout", + "QWhatsThis", + "QWidget", + "QWidgetAction", + "QWidgetItem", + "QWizard", + "QWizardPage" + ], + "QtXml": [ + "QDomAttr", + "QDomCDATASection", + "QDomCharacterData", + "QDomComment", + "QDomDocument", + "QDomDocumentFragment", + "QDomDocumentType", + "QDomElement", + "QDomEntity", + "QDomEntityReference", + "QDomImplementation", + "QDomNamedNodeMap", + "QDomNode", + "QDomNodeList", + "QDomNotation", + "QDomProcessingInstruction", + "QDomText", + "QXmlAttributes", + "QXmlContentHandler", + "QXmlDTDHandler", + "QXmlDeclHandler", + "QXmlDefaultHandler", + "QXmlEntityResolver", + "QXmlErrorHandler", + "QXmlInputSource", + "QXmlLexicalHandler", + "QXmlLocator", + "QXmlNamespaceSupport", + "QXmlParseException", + "QXmlReader", + "QXmlSimpleReader" + ], + "QtXmlPatterns": [ + "QAbstractMessageHandler", + "QAbstractUriResolver", + "QAbstractXmlNodeModel", + "QAbstractXmlReceiver", + "QSourceLocation", + "QXmlFormatter", + "QXmlItem", + "QXmlName", + "QXmlNamePool", + "QXmlNodeModelIndex", + "QXmlQuery", + "QXmlResultItems", + "QXmlSchema", + "QXmlSchemaValidator", + "QXmlSerializer" + ] +} + + +"""Misplaced members + +These members from the original submodule are misplaced relative PySide2 + +""" +_misplaced_members = { + "PySide2": { + "QtGui.QStringListModel": "QtCore.QStringListModel", + "QtCore.Property": "QtCore.Property", + "QtCore.Signal": "QtCore.Signal", + "QtCore.Slot": "QtCore.Slot", + "QtCore.QAbstractProxyModel": "QtCore.QAbstractProxyModel", + "QtCore.QSortFilterProxyModel": "QtCore.QSortFilterProxyModel", + "QtCore.QItemSelection": "QtCore.QItemSelection", + "QtCore.QItemSelectionModel": "QtCore.QItemSelectionModel", + "QtCore.QItemSelectionRange": "QtCore.QItemSelectionRange", + }, + "PyQt5": { + "QtCore.pyqtProperty": "QtCore.Property", + "QtCore.pyqtSignal": "QtCore.Signal", + "QtCore.pyqtSlot": "QtCore.Slot", + "QtCore.QAbstractProxyModel": "QtCore.QAbstractProxyModel", + "QtCore.QSortFilterProxyModel": "QtCore.QSortFilterProxyModel", + "QtCore.QStringListModel": "QtCore.QStringListModel", + "QtCore.QItemSelection": "QtCore.QItemSelection", + "QtCore.QItemSelectionModel": "QtCore.QItemSelectionModel", + "QtCore.QItemSelectionRange": "QtCore.QItemSelectionRange", + }, + "PySide": { + "QtGui.QAbstractProxyModel": "QtCore.QAbstractProxyModel", + "QtGui.QSortFilterProxyModel": "QtCore.QSortFilterProxyModel", + "QtGui.QStringListModel": "QtCore.QStringListModel", + "QtGui.QItemSelection": "QtCore.QItemSelection", + "QtGui.QItemSelectionModel": "QtCore.QItemSelectionModel", + "QtCore.Property": "QtCore.Property", + "QtCore.Signal": "QtCore.Signal", + "QtCore.Slot": "QtCore.Slot", + "QtGui.QItemSelectionRange": "QtCore.QItemSelectionRange", + + }, + "PyQt4": { + "QtGui.QAbstractProxyModel": "QtCore.QAbstractProxyModel", + "QtGui.QSortFilterProxyModel": "QtCore.QSortFilterProxyModel", + "QtGui.QItemSelection": "QtCore.QItemSelection", + "QtGui.QStringListModel": "QtCore.QStringListModel", + "QtGui.QItemSelectionModel": "QtCore.QItemSelectionModel", + "QtCore.pyqtProperty": "QtCore.Property", + "QtCore.pyqtSignal": "QtCore.Signal", + "QtCore.pyqtSlot": "QtCore.Slot", + "QtGui.QItemSelectionRange": "QtCore.QItemSelectionRange", + } +} + +""" Compatibility Members + +This dictionary is used to build Qt.QtCompat objects that provide a consistent +interface for obsolete members, and differences in binding return values. + +{ + "binding": { + "classname": { + "targetname": "binding_namespace", + } + } +} +""" +_compatibility_members = { + "PySide2": { + "QHeaderView": { + "sectionsClickable": "QtWidgets.QHeaderView.sectionsClickable", + "setSectionsClickable": + "QtWidgets.QHeaderView.setSectionsClickable", + "sectionResizeMode": "QtWidgets.QHeaderView.sectionResizeMode", + "setSectionResizeMode": + "QtWidgets.QHeaderView.setSectionResizeMode", + "sectionsMovable": "QtWidgets.QHeaderView.sectionsMovable", + "setSectionsMovable": "QtWidgets.QHeaderView.setSectionsMovable", + }, + "QFileDialog": { + "getOpenFileName": "QtWidgets.QFileDialog.getOpenFileName", + "getOpenFileNames": "QtWidgets.QFileDialog.getOpenFileNames", + "getSaveFileName": "QtWidgets.QFileDialog.getSaveFileName", + }, + }, + "PyQt5": { + "QHeaderView": { + "sectionsClickable": "QtWidgets.QHeaderView.sectionsClickable", + "setSectionsClickable": + "QtWidgets.QHeaderView.setSectionsClickable", + "sectionResizeMode": "QtWidgets.QHeaderView.sectionResizeMode", + "setSectionResizeMode": + "QtWidgets.QHeaderView.setSectionResizeMode", + "sectionsMovable": "QtWidgets.QHeaderView.sectionsMovable", + "setSectionsMovable": "QtWidgets.QHeaderView.setSectionsMovable", + }, + "QFileDialog": { + "getOpenFileName": "QtWidgets.QFileDialog.getOpenFileName", + "getOpenFileNames": "QtWidgets.QFileDialog.getOpenFileNames", + "getSaveFileName": "QtWidgets.QFileDialog.getSaveFileName", + }, + }, + "PySide": { + "QHeaderView": { + "sectionsClickable": "QtWidgets.QHeaderView.isClickable", + "setSectionsClickable": "QtWidgets.QHeaderView.setClickable", + "sectionResizeMode": "QtWidgets.QHeaderView.resizeMode", + "setSectionResizeMode": "QtWidgets.QHeaderView.setResizeMode", + "sectionsMovable": "QtWidgets.QHeaderView.isMovable", + "setSectionsMovable": "QtWidgets.QHeaderView.setMovable", + }, + "QFileDialog": { + "getOpenFileName": "QtWidgets.QFileDialog.getOpenFileName", + "getOpenFileNames": "QtWidgets.QFileDialog.getOpenFileNames", + "getSaveFileName": "QtWidgets.QFileDialog.getSaveFileName", + }, + }, + "PyQt4": { + "QHeaderView": { + "sectionsClickable": "QtWidgets.QHeaderView.isClickable", + "setSectionsClickable": "QtWidgets.QHeaderView.setClickable", + "sectionResizeMode": "QtWidgets.QHeaderView.resizeMode", + "setSectionResizeMode": "QtWidgets.QHeaderView.setResizeMode", + "sectionsMovable": "QtWidgets.QHeaderView.isMovable", + "setSectionsMovable": "QtWidgets.QHeaderView.setMovable", + }, + "QFileDialog": { + "getOpenFileName": "QtWidgets.QFileDialog.getOpenFileName", + "getOpenFileNames": "QtWidgets.QFileDialog.getOpenFileNames", + "getSaveFileName": "QtWidgets.QFileDialog.getSaveFileName", + }, + }, +} + + +def _apply_site_config(): + try: + import QtSiteConfig + except ImportError: + # If no QtSiteConfig module found, no modifications + # to _common_members are needed. + pass + else: + # Provide the ability to modify the dicts used to build Qt.py + if hasattr(QtSiteConfig, 'update_members'): + QtSiteConfig.update_members(_common_members) + + if hasattr(QtSiteConfig, 'update_misplaced_members'): + QtSiteConfig.update_misplaced_members(members=_misplaced_members) + + if hasattr(QtSiteConfig, 'update_compatibility_members'): + QtSiteConfig.update_compatibility_members( + members=_compatibility_members) + + +def _new_module(name): + return types.ModuleType(__name__ + "." + name) + + +def _import_sub_module(module, name): + """import_sub_module will mimic the function of importlib.import_module""" + module = __import__(module.__name__ + "." + name) + for level in name.split("."): + module = getattr(module, level) + return module + + +def _setup(module, extras): + """Install common submodules""" + + Qt.__binding__ = module.__name__ + + for name in list(_common_members) + extras: + try: + submodule = _import_sub_module( + module, name) + except ImportError: + continue + + setattr(Qt, "_" + name, submodule) + + if name not in extras: + # Store reference to original binding, + # but don't store speciality modules + # such as uic or QtUiTools + setattr(Qt, name, _new_module(name)) + + +def _wrapinstance(func, ptr, base=None): + """Enable implicit cast of pointer to most suitable class + + This behaviour is available in sip per default. + + Based on http://nathanhorne.com/pyqtpyside-wrap-instance + + Usage: + This mechanism kicks in under these circumstances. + 1. Qt.py is using PySide 1 or 2. + 2. A `base` argument is not provided. + + See :func:`QtCompat.wrapInstance()` + + Arguments: + func (function): Original function + ptr (long): Pointer to QObject in memory + base (QObject, optional): Base class to wrap with. Defaults to QObject, + which should handle anything. + + """ + + assert isinstance(ptr, long), "Argument 'ptr' must be of type " + assert (base is None) or issubclass(base, Qt.QtCore.QObject), ( + "Argument 'base' must be of type ") + + if base is None: + q_object = func(long(ptr), Qt.QtCore.QObject) + meta_object = q_object.metaObject() + class_name = meta_object.className() + super_class_name = meta_object.superClass().className() + + if hasattr(Qt.QtWidgets, class_name): + base = getattr(Qt.QtWidgets, class_name) + + elif hasattr(Qt.QtWidgets, super_class_name): + base = getattr(Qt.QtWidgets, super_class_name) + + else: + base = Qt.QtCore.QObject + + return func(long(ptr), base) + + +def _reassign_misplaced_members(binding): + """Apply misplaced members from `binding` to Qt.py + + Arguments: + binding (dict): Misplaced members + + """ + + for src, dst in _misplaced_members[binding].items(): + src_module, src_member = src.split(".") + dst_module, dst_member = dst.split(".") + + try: + src_object = getattr(Qt, dst_module) + except AttributeError: + # Skip reassignment of non-existing members. + # This can happen if a request was made to + # rename a member that didn't exist, for example + # if QtWidgets isn't available on the target platform. + continue + + dst_value = getattr(getattr(Qt, "_" + src_module), src_member) + + setattr( + src_object, + dst_member, + dst_value + ) + + +def _build_compatibility_members(binding, decorators=None): + """Apply `binding` to QtCompat + + Arguments: + binding (str): Top level binding in _compatibility_members. + decorators (dict, optional): Provides the ability to decorate the + original Qt methods when needed by a binding. This can be used + to change the returned value to a standard value. The key should + be the classname, the value is a dict where the keys are the + target method names, and the values are the decorator functions. + + """ + + decorators = decorators or dict() + + # Allow optional site-level customization of the compatibility members. + # This method does not need to be implemented in QtSiteConfig. + try: + import QtSiteConfig + except ImportError: + pass + else: + if hasattr(QtSiteConfig, 'update_compatibility_decorators'): + QtSiteConfig.update_compatibility_decorators(binding, decorators) + + _QtCompat = type("QtCompat", (object,), {}) + + for classname, bindings in _compatibility_members[binding].items(): + attrs = {} + for target, binding in bindings.items(): + namespaces = binding.split('.') + try: + src_object = getattr(Qt, "_" + namespaces[0]) + except AttributeError as e: + _log("QtCompat: AttributeError: %s" % e) + # Skip reassignment of non-existing members. + # This can happen if a request was made to + # rename a member that didn't exist, for example + # if QtWidgets isn't available on the target platform. + continue + + # Walk down any remaining namespace getting the object assuming + # that if the first namespace exists the rest will exist. + for namespace in namespaces[1:]: + src_object = getattr(src_object, namespace) + + # decorate the Qt method if a decorator was provided. + if target in decorators.get(classname, []): + # staticmethod must be called on the decorated method to + # prevent a TypeError being raised when the decorated method + # is called. + src_object = staticmethod( + decorators[classname][target](src_object)) + + attrs[target] = src_object + + # Create the QtCompat class and install it into the namespace + compat_class = type(classname, (_QtCompat,), attrs) + setattr(Qt.QtCompat, classname, compat_class) + + +def _pyside2(): + """Initialise PySide2 + + These functions serve to test the existence of a binding + along with set it up in such a way that it aligns with + the final step; adding members from the original binding + to Qt.py + + """ + + import PySide2 as module + _setup(module, ["QtUiTools"]) + + Qt.__binding_version__ = module.__version__ + + try: + try: + # Before merge of PySide and shiboken + import shiboken2 + except ImportError: + # After merge of PySide and shiboken, May 2017 + from PySide2 import shiboken2 + + Qt.QtCompat.wrapInstance = ( + lambda ptr, base=None: _wrapinstance( + shiboken2.wrapInstance, ptr, base) + ) + Qt.QtCompat.getCppPointer = lambda object: \ + shiboken2.getCppPointer(object)[0] + + except ImportError: + pass # Optional + + if hasattr(Qt, "_QtUiTools"): + Qt.QtCompat.loadUi = _loadUi + + if hasattr(Qt, "_QtCore"): + Qt.__qt_version__ = Qt._QtCore.qVersion() + Qt.QtCompat.translate = Qt._QtCore.QCoreApplication.translate + + if hasattr(Qt, "_QtWidgets"): + Qt.QtCompat.setSectionResizeMode = \ + Qt._QtWidgets.QHeaderView.setSectionResizeMode + + _reassign_misplaced_members("PySide2") + _build_compatibility_members("PySide2") + + +def _pyside(): + """Initialise PySide""" + + import PySide as module + _setup(module, ["QtUiTools"]) + + Qt.__binding_version__ = module.__version__ + + try: + try: + # Before merge of PySide and shiboken + import shiboken + except ImportError: + # After merge of PySide and shiboken, May 2017 + from PySide import shiboken + + Qt.QtCompat.wrapInstance = ( + lambda ptr, base=None: _wrapinstance( + shiboken.wrapInstance, ptr, base) + ) + Qt.QtCompat.getCppPointer = lambda object: \ + shiboken.getCppPointer(object)[0] + + except ImportError: + pass # Optional + + if hasattr(Qt, "_QtUiTools"): + Qt.QtCompat.loadUi = _loadUi + + if hasattr(Qt, "_QtGui"): + setattr(Qt, "QtWidgets", _new_module("QtWidgets")) + setattr(Qt, "_QtWidgets", Qt._QtGui) + + Qt.QtCompat.setSectionResizeMode = Qt._QtGui.QHeaderView.setResizeMode + + if hasattr(Qt, "_QtCore"): + Qt.__qt_version__ = Qt._QtCore.qVersion() + QCoreApplication = Qt._QtCore.QCoreApplication + Qt.QtCompat.translate = ( + lambda context, sourceText, disambiguation, n: + QCoreApplication.translate( + context, + sourceText, + disambiguation, + QCoreApplication.CodecForTr, + n + ) + ) + + _reassign_misplaced_members("PySide") + _build_compatibility_members("PySide") + + +def _pyqt5(): + """Initialise PyQt5""" + + import PyQt5 as module + _setup(module, ["uic"]) + + try: + import sip + Qt.QtCompat.wrapInstance = ( + lambda ptr, base=None: _wrapinstance( + sip.wrapinstance, ptr, base) + ) + Qt.QtCompat.getCppPointer = lambda object: \ + sip.unwrapinstance(object) + + except ImportError: + pass # Optional + + if hasattr(Qt, "_uic"): + Qt.QtCompat.loadUi = _loadUi + + if hasattr(Qt, "_QtCore"): + Qt.__binding_version__ = Qt._QtCore.PYQT_VERSION_STR + Qt.__qt_version__ = Qt._QtCore.QT_VERSION_STR + Qt.QtCompat.translate = Qt._QtCore.QCoreApplication.translate + + if hasattr(Qt, "_QtWidgets"): + Qt.QtCompat.setSectionResizeMode = \ + Qt._QtWidgets.QHeaderView.setSectionResizeMode + + _reassign_misplaced_members("PyQt5") + _build_compatibility_members('PyQt5') + + +def _pyqt4(): + """Initialise PyQt4""" + + import sip + + # Validation of envivornment variable. Prevents an error if + # the variable is invalid since it's just a hint. + try: + hint = int(QT_SIP_API_HINT) + except TypeError: + hint = None # Variable was None, i.e. not set. + except ValueError: + raise ImportError("QT_SIP_API_HINT=%s must be a 1 or 2") + + for api in ("QString", + "QVariant", + "QDate", + "QDateTime", + "QTextStream", + "QTime", + "QUrl"): + try: + sip.setapi(api, hint or 2) + except AttributeError: + raise ImportError("PyQt4 < 4.6 isn't supported by Qt.py") + except ValueError: + actual = sip.getapi(api) + if not hint: + raise ImportError("API version already set to %d" % actual) + else: + # Having provided a hint indicates a soft constraint, one + # that doesn't throw an exception. + sys.stderr.write( + "Warning: API '%s' has already been set to %d.\n" + % (api, actual) + ) + + import PyQt4 as module + _setup(module, ["uic"]) + + try: + import sip + Qt.QtCompat.wrapInstance = ( + lambda ptr, base=None: _wrapinstance( + sip.wrapinstance, ptr, base) + ) + Qt.QtCompat.getCppPointer = lambda object: \ + sip.unwrapinstance(object) + + except ImportError: + pass # Optional + + if hasattr(Qt, "_uic"): + Qt.QtCompat.loadUi = _loadUi + + if hasattr(Qt, "_QtGui"): + setattr(Qt, "QtWidgets", _new_module("QtWidgets")) + setattr(Qt, "_QtWidgets", Qt._QtGui) + + Qt.QtCompat.setSectionResizeMode = \ + Qt._QtGui.QHeaderView.setResizeMode + + if hasattr(Qt, "_QtCore"): + Qt.__binding_version__ = Qt._QtCore.PYQT_VERSION_STR + Qt.__qt_version__ = Qt._QtCore.QT_VERSION_STR + + QCoreApplication = Qt._QtCore.QCoreApplication + Qt.QtCompat.translate = ( + lambda context, sourceText, disambiguation, n: + QCoreApplication.translate( + context, + sourceText, + disambiguation, + QCoreApplication.CodecForTr, + n) + ) + + _reassign_misplaced_members("PyQt4") + + # QFileDialog QtCompat decorator + def _standardizeQFileDialog(some_function): + """Decorator that makes PyQt4 return conform to other bindings""" + def wrapper(*args, **kwargs): + ret = (some_function(*args, **kwargs)) + + # PyQt4 only returns the selected filename, force it to a + # standard return of the selected filename, and a empty string + # for the selected filter + return ret, '' + + wrapper.__doc__ = some_function.__doc__ + wrapper.__name__ = some_function.__name__ + + return wrapper + + decorators = { + "QFileDialog": { + "getOpenFileName": _standardizeQFileDialog, + "getOpenFileNames": _standardizeQFileDialog, + "getSaveFileName": _standardizeQFileDialog, + } + } + _build_compatibility_members('PyQt4', decorators) + + +def _none(): + """Internal option (used in installer)""" + + Mock = type("Mock", (), {"__getattr__": lambda Qt, attr: None}) + + Qt.__binding__ = "None" + Qt.__qt_version__ = "0.0.0" + Qt.__binding_version__ = "0.0.0" + Qt.QtCompat.loadUi = lambda uifile, baseinstance=None: None + Qt.QtCompat.setSectionResizeMode = lambda *args, **kwargs: None + + for submodule in _common_members.keys(): + setattr(Qt, submodule, Mock()) + setattr(Qt, "_" + submodule, Mock()) + + +def _log(text): + if QT_VERBOSE: + sys.stdout.write(text + "\n") + + +def _loadUi(uifile, baseinstance=None): + """Dynamically load a user interface from the given `uifile` + + This function calls `uic.loadUi` if using PyQt bindings, + else it implements a comparable binding for PySide. + + Documentation: + http://pyqt.sourceforge.net/Docs/PyQt5/designer.html#PyQt5.uic.loadUi + + Arguments: + uifile (str): Absolute path to Qt Designer file. + baseinstance (QWidget): Instantiated QWidget or subclass thereof + + Return: + baseinstance if `baseinstance` is not `None`. Otherwise + return the newly created instance of the user interface. + + """ + if hasattr(baseinstance, "layout") and baseinstance.layout(): + message = ("QLayout: Attempting to add Layout to %s which " + "already has a layout") + raise RuntimeError(message % (baseinstance)) + + if hasattr(Qt, "_uic"): + return Qt._uic.loadUi(uifile, baseinstance) + + elif hasattr(Qt, "_QtUiTools"): + # Implement `PyQt5.uic.loadUi` for PySide(2) + + class _UiLoader(Qt._QtUiTools.QUiLoader): + """Create the user interface in a base instance. + + Unlike `Qt._QtUiTools.QUiLoader` itself this class does not + create a new instance of the top-level widget, but creates the user + interface in an existing instance of the top-level class if needed. + + This mimics the behaviour of `PyQt5.uic.loadUi`. + + """ + + def __init__(self, baseinstance): + super(_UiLoader, self).__init__(baseinstance) + self.baseinstance = baseinstance + + def load(self, uifile, *args, **kwargs): + from xml.etree.ElementTree import ElementTree + + # For whatever reason, if this doesn't happen then + # reading an invalid or non-existing .ui file throws + # a RuntimeError. + etree = ElementTree() + etree.parse(uifile) + + widget = Qt._QtUiTools.QUiLoader.load( + self, uifile, *args, **kwargs) + + # Workaround for PySide 1.0.9, see issue #208 + widget.parentWidget() + + return widget + + def createWidget(self, class_name, parent=None, name=""): + """Called for each widget defined in ui file + + Overridden here to populate `baseinstance` instead. + + """ + + if parent is None and self.baseinstance: + # Supposed to create the top-level widget, + # return the base instance instead + return self.baseinstance + + # For some reason, Line is not in the list of available + # widgets, but works fine, so we have to special case it here. + if class_name in self.availableWidgets() + ["Line"]: + # Create a new widget for child widgets + widget = Qt._QtUiTools.QUiLoader.createWidget(self, + class_name, + parent, + name) + + else: + raise Exception("Custom widget '%s' not supported" + % class_name) + + if self.baseinstance: + # Set an attribute for the new child widget on the base + # instance, just like PyQt5.uic.loadUi does. + setattr(self.baseinstance, name, widget) + + return widget + + widget = _UiLoader(baseinstance).load(uifile) + Qt.QtCore.QMetaObject.connectSlotsByName(widget) + + return widget + + else: + raise NotImplementedError("No implementation available for loadUi") + + +def _convert(lines): + """Convert compiled .ui file from PySide2 to Qt.py + + Arguments: + lines (list): Each line of of .ui file + + Usage: + >> with open("myui.py") as f: + .. lines = _convert(f.readlines()) + + """ + + def parse(line): + line = line.replace("from PySide2 import", "from Qt import QtCompat,") + line = line.replace("QtWidgets.QApplication.translate", + "QtCompat.translate") + if "QtCore.SIGNAL" in line: + raise NotImplementedError("QtCore.SIGNAL is missing from PyQt5 " + "and so Qt.py does not support it: you " + "should avoid defining signals inside " + "your ui files.") + return line + + parsed = list() + for line in lines: + line = parse(line) + parsed.append(line) + + return parsed + + +def _cli(args): + """Qt.py command-line interface""" + import argparse + + parser = argparse.ArgumentParser() + parser.add_argument("--convert", + help="Path to compiled Python module, e.g. my_ui.py") + parser.add_argument("--compile", + help="Accept raw .ui file and compile with native " + "PySide2 compiler.") + parser.add_argument("--stdout", + help="Write to stdout instead of file", + action="store_true") + parser.add_argument("--stdin", + help="Read from stdin instead of file", + action="store_true") + + args = parser.parse_args(args) + + if args.stdout: + raise NotImplementedError("--stdout") + + if args.stdin: + raise NotImplementedError("--stdin") + + if args.compile: + raise NotImplementedError("--compile") + + if args.convert: + sys.stdout.write("#\n" + "# WARNING: --convert is an ALPHA feature.\n#\n" + "# See https://github.com/mottosso/Qt.py/pull/132\n" + "# for details.\n" + "#\n") + + # + # ------> Read + # + with open(args.convert) as f: + lines = _convert(f.readlines()) + + backup = "%s_backup%s" % os.path.splitext(args.convert) + sys.stdout.write("Creating \"%s\"..\n" % backup) + shutil.copy(args.convert, backup) + + # + # <------ Write + # + with open(args.convert, "w") as f: + f.write("".join(lines)) + + sys.stdout.write("Successfully converted \"%s\"\n" % args.convert) + + +def _install(): + # Default order (customise order and content via QT_PREFERRED_BINDING) + default_order = ("PySide2", "PyQt5", "PySide", "PyQt4") + preferred_order = list( + b for b in QT_PREFERRED_BINDING.split(os.pathsep) if b + ) + + order = preferred_order or default_order + + available = { + "PySide2": _pyside2, + "PyQt5": _pyqt5, + "PySide": _pyside, + "PyQt4": _pyqt4, + "None": _none + } + + _log("Order: '%s'" % "', '".join(order)) + + # Allow site-level customization of the available modules. + _apply_site_config() + + found_binding = False + for name in order: + _log("Trying %s" % name) + + try: + available[name]() + found_binding = True + break + + except ImportError as e: + _log("ImportError: %s" % e) + + except KeyError: + _log("ImportError: Preferred binding '%s' not found." % name) + + if not found_binding: + # If not binding were found, throw this error + raise ImportError("No Qt binding were found.") + + # Install individual members + for name, members in _common_members.items(): + try: + their_submodule = getattr(Qt, "_%s" % name) + except AttributeError: + continue + + our_submodule = getattr(Qt, name) + + # Enable import * + __all__.append(name) + + # Enable direct import of submodule, + # e.g. import Qt.QtCore + sys.modules[__name__ + "." + name] = our_submodule + + for member in members: + # Accept that a submodule may miss certain members. + try: + their_member = getattr(their_submodule, member) + except AttributeError: + _log("'%s.%s' was missing." % (name, member)) + continue + + setattr(our_submodule, member, their_member) + + # Backwards compatibility + if hasattr(Qt.QtCompat, 'loadUi'): + Qt.QtCompat.load_ui = Qt.QtCompat.loadUi + + +_install() + +# Setup Binding Enum states +Qt.IsPySide2 = Qt.__binding__ == 'PySide2' +Qt.IsPyQt5 = Qt.__binding__ == 'PyQt5' +Qt.IsPySide = Qt.__binding__ == 'PySide' +Qt.IsPyQt4 = Qt.__binding__ == 'PyQt4' + +"""Augment QtCompat + +QtCompat contains wrappers and added functionality +to the original bindings, such as the CLI interface +and otherwise incompatible members between bindings, +such as `QHeaderView.setSectionResizeMode`. + +""" + +Qt.QtCompat._cli = _cli +Qt.QtCompat._convert = _convert + +# Enable command-line interface +if __name__ == "__main__": + _cli(sys.argv[1:]) + + +# The MIT License (MIT) +# +# Copyright (c) 2016-2017 Marcus Ottosson +# +# Permission is hereby granted, free of charge, to any person obtaining a copy +# of this software and associated documentation files (the "Software"), to deal +# in the Software without restriction, including without limitation the rights +# to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +# copies of the Software, and to permit persons to whom the Software is +# furnished to do so, subject to the following conditions: +# +# The above copyright notice and this permission notice shall be included in +# all copies or substantial portions of the Software. +# +# THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +# IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +# FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +# AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +# LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +# OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE +# SOFTWARE. +# +# In PySide(2), loadUi does not exist, so we implement it +# +# `_UiLoader` is adapted from the qtpy project, which was further influenced +# by qt-helpers which was released under a 3-clause BSD license which in turn +# is based on a solution at: +# +# - https://gist.github.com/cpbotha/1b42a20c8f3eb9bb7cb8 +# +# The License for this code is as follows: +# +# qt-helpers - a common front-end to various Qt modules +# +# Copyright (c) 2015, Chris Beaumont and Thomas Robitaille +# +# All rights reserved. +# +# Redistribution and use in source and binary forms, with or without +# modification, are permitted provided that the following conditions are +# met: +# +# * Redistributions of source code must retain the above copyright +# notice, this list of conditions and the following disclaimer. +# * Redistributions in binary form must reproduce the above copyright +# notice, this list of conditions and the following disclaimer in the +# documentation and/or other materials provided with the +# distribution. +# * Neither the name of the Glue project nor the names of its contributors +# may be used to endorse or promote products derived from this software +# without specific prior written permission. +# +# THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS +# IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, +# THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR +# PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR +# CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, +# EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, +# PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR +# PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF +# LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING +# NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS +# SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. +# +# Which itself was based on the solution at +# +# https://gist.github.com/cpbotha/1b42a20c8f3eb9bb7cb8 +# +# which was released under the MIT license: +# +# Copyright (c) 2011 Sebastian Wiesner +# Modifications by Charl Botha +# +# Permission is hereby granted, free of charge, to any person obtaining a +# copy of this software and associated documentation files +# (the "Software"),to deal in the Software without restriction, +# including without limitation +# the rights to use, copy, modify, merge, publish, distribute, sublicense, +# and/or sell copies of the Software, and to permit persons to whom the +# Software is furnished to do so, subject to the following conditions: +# +# The above copyright notice and this permission notice shall be included +# in all copies or substantial portions of the Software. +# +# THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS +# OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF +# MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. +# IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY +# CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, +# TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE +# SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. diff --git a/scripts/mgear/vendor/__init__.py b/scripts/mgear/vendor/__init__.py new file mode 100644 index 0000000..e69de29 From 0675bb74f7b6ba22abf3bb6b826baf06f0fe2f54 Mon Sep 17 00:00:00 2001 From: miquelcampos Date: Mon, 13 Nov 2017 12:48:24 +0900 Subject: [PATCH 032/134] mGear: Attribute: adding support to default values in addAttribute function. #84 --- scripts/mgear/maya/attribute.py | 8 +++++--- 1 file changed, 5 insertions(+), 3 deletions(-) diff --git a/scripts/mgear/maya/attribute.py b/scripts/mgear/maya/attribute.py index cd58a7d..3cb2095 100644 --- a/scripts/mgear/maya/attribute.py +++ b/scripts/mgear/maya/attribute.py @@ -41,7 +41,7 @@ # NODE ############################################# -def addAttribute(node, longName, attributeType, value, niceName=None, shortName=None, minValue=None, +def addAttribute(node, longName, attributeType, value=None, niceName=None, shortName=None, minValue=None, maxValue=None, keyable=True, readable=True, storable=True, writable=True, channelBox=False): """ Add attribute to a node @@ -88,9 +88,11 @@ def addAttribute(node, longName, attributeType, value, niceName=None, shortName= data["readable"] = readable data["storable"] = storable data["writable"] = writable + + if value is not None and attributeType not in ["string"]: + data["defaultValue"] = value + node.addAttr(longName, **data) - if value is not None: - node.setAttr(longName, value) if channelBox: node.attr(longName).set(channelBox=True) return node.attr(longName) From 6f659dd056d9ce84bb7abc9762207ac988aa47e9 Mon Sep 17 00:00:00 2001 From: miquelcampos Date: Mon, 13 Nov 2017 14:03:26 +0900 Subject: [PATCH 033/134] mGear: fix bug introduced in the latest commit for this issue. We still need to set the value for strings #84 --- scripts/mgear/maya/attribute.py | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/scripts/mgear/maya/attribute.py b/scripts/mgear/maya/attribute.py index 3cb2095..8714ade 100644 --- a/scripts/mgear/maya/attribute.py +++ b/scripts/mgear/maya/attribute.py @@ -93,6 +93,10 @@ def addAttribute(node, longName, attributeType, value=None, niceName=None, short data["defaultValue"] = value node.addAttr(longName, **data) + + if value is not None: + node.setAttr(longName, value) + if channelBox: node.attr(longName).set(channelBox=True) return node.attr(longName) From 4232b954730b8729a231dfc9eb9054f42b0ea5db Mon Sep 17 00:00:00 2001 From: Marcus Ottosson Date: Mon, 13 Nov 2017 06:46:06 +0000 Subject: [PATCH 034/134] Add suggestion for how to re-use version number in SConstruct --- SConstruct | 10 +++++++++- 1 file changed, 9 insertions(+), 1 deletion(-) diff --git a/SConstruct b/SConstruct index 3f8b62f..7cc0f78 100644 --- a/SConstruct +++ b/SConstruct @@ -4,12 +4,20 @@ import excons import excons.config import excons.tools.maya as maya +# Assuming SConstruct is called from the current working directory +scriptsdir = os.path.join(os.getcwd(), "scripts") +assert os.path.isdir(scriptsdir), ( + "SConstruct wasn't called from the mgear/ root directory" +) +sys.path.insert(0, scriptsdir) + +import mgear maya.SetupMscver() env = excons.MakeBaseEnv() -version = (2, 2, 5) +version = mgear.VERSION versionstr = "%d.%d.%d" % version platname = {"win32": "windows", "darwin": "osx"}.get(sys.platform, "linux") outprefix = "platforms/%s/%s/%s/plug-ins" % (maya.Version(nice=True), platname, excons.arch_dir) From 68922d903cf76358d724ac72d2b09fd9230cf56e Mon Sep 17 00:00:00 2001 From: miquelcampos Date: Mon, 13 Nov 2017 16:09:20 +0900 Subject: [PATCH 035/134] mGear: Vendoring QT #89. Partial refactoring to use QT. pyqt.py and widgets modules --- scripts/mgear/maya/pyqt.py | 24 +++++++----------------- scripts/mgear/maya/rigbits/widgets.py | 5 +---- scripts/mgear/maya/shifter/gameTools.py | 2 +- scripts/mgear/widgets.py | 4 ++-- 4 files changed, 11 insertions(+), 24 deletions(-) diff --git a/scripts/mgear/maya/pyqt.py b/scripts/mgear/maya/pyqt.py index d07097e..0485e3f 100644 --- a/scripts/mgear/maya/pyqt.py +++ b/scripts/mgear/maya/pyqt.py @@ -31,18 +31,11 @@ ############################################# # GLOBAL ############################################# -import os -import pymel.core as pm -import maya.cmds as cmds -from pymel import versions - -from maya.app.general.mayaMixin import MayaQDockWidget - -from functools import partial import traceback import maya.OpenMayaUI as omui -from mGear_pyqt import QtGui, QtCore, QtWidgets, wrapInstance, qt_import +from mGear_pyqt import qt_import +from mgear.vendor.Qt import QtWidgets, QtCompat ############################################# # helper Maya pyQt functions @@ -58,10 +51,7 @@ def maya_main_window(): """ main_window_ptr = omui.MQtUtil.mainWindow() - # return wrapInstance(long(main_window_ptr), QtWidgets.QMainWindow) - return wrapInstance(long(main_window_ptr), QtWidgets.QWidget) - - + return QtCompat.wrapInstance(long(main_window_ptr), QtWidgets.QWidget) def showDialog(dialog, dInst=True, *args): """ @@ -81,10 +71,10 @@ def showDialog(dialog, dInst=True, *args): # Create minimal dialog object - if versions.current() >= 20180000: - windw = dialog(maya_main_window()) - else: - windw = dialog() + # if versions.current() >= 20180000: + # windw = dialog(maya_main_window()) + # else: + windw = dialog() windw.move(QtWidgets.QApplication.desktop().screen().rect().center()- windw.rect().center()) # Delete the UI if errors occur to avoid causing winEvent diff --git a/scripts/mgear/maya/rigbits/widgets.py b/scripts/mgear/maya/rigbits/widgets.py index 14773e2..39ac2c5 100644 --- a/scripts/mgear/maya/rigbits/widgets.py +++ b/scripts/mgear/maya/rigbits/widgets.py @@ -27,11 +27,8 @@ ## Rigbits widgets -import mgear.maya.pyqt as gqt import mgear.widgets as gWidgets - - -QtGui, QtCore, QtWidgets, wrapInstance = gqt.qt_import() +from mgear.vendor.Qt import QtWidgets ################################################ diff --git a/scripts/mgear/maya/shifter/gameTools.py b/scripts/mgear/maya/shifter/gameTools.py index 6bfb20d..235c1ba 100644 --- a/scripts/mgear/maya/shifter/gameTools.py +++ b/scripts/mgear/maya/shifter/gameTools.py @@ -38,7 +38,7 @@ from maya.app.general.mayaMixin import MayaQWidgetDockableMixin import mgear.maya.pyqt as gqt -QtGui, QtCore, QtWidgets, wrapInstance = gqt.qt_import() +from mgear.vendor.Qt import QtCore, QtWidgets @mutils.one_undo diff --git a/scripts/mgear/widgets.py b/scripts/mgear/widgets.py index 82b5fea..abe5402 100644 --- a/scripts/mgear/widgets.py +++ b/scripts/mgear/widgets.py @@ -28,8 +28,8 @@ mGear Qt custom widgets """ -import mgear.maya.pyqt as gqt -QtGui, QtCore, QtWidgets, wrapInstance = gqt.qt_import() +from mgear.vendor.Qt import QtCore, QtWidgets + ################################################# ## CUSTOM WIDGETS From 79bba5e19831941156f2d385a31ae06ba82dacd7 Mon Sep 17 00:00:00 2001 From: miquelcampos Date: Mon, 13 Nov 2017 17:28:59 +0900 Subject: [PATCH 036/134] Scons: Temporal configuration for Setup tests on Travis #87 --- SConstruct | 25 ++-- scripts/mgear/__init__.py.in | 236 +++++++++++++++++++++++++++++++++++ 2 files changed, 250 insertions(+), 11 deletions(-) create mode 100644 scripts/mgear/__init__.py.in diff --git a/SConstruct b/SConstruct index 7cc0f78..b5adcec 100644 --- a/SConstruct +++ b/SConstruct @@ -5,19 +5,20 @@ import excons.config import excons.tools.maya as maya # Assuming SConstruct is called from the current working directory -scriptsdir = os.path.join(os.getcwd(), "scripts") -assert os.path.isdir(scriptsdir), ( - "SConstruct wasn't called from the mgear/ root directory" -) -sys.path.insert(0, scriptsdir) +# scriptsdir = os.path.join(os.getcwd(), "scripts") +# assert os.path.isdir(scriptsdir), ( +# "SConstruct wasn't called from the mgear/ root directory" +# ) +# sys.path.insert(0, scriptsdir) -import mgear +# import mgear maya.SetupMscver() env = excons.MakeBaseEnv() -version = mgear.VERSION +# version = mgear.VERSION +version = (2, 2, 5) versionstr = "%d.%d.%d" % version platname = {"win32": "windows", "darwin": "osx"}.get(sys.platform, "linux") outprefix = "platforms/%s/%s/%s/plug-ins" % (maya.Version(nice=True), platname, excons.arch_dir) @@ -27,7 +28,7 @@ outdir = excons.OutputBaseDirectory() gen = excons.config.AddGenerator(env, "mgear", {"MGEAR_VERSION": "[%d, %d, %d]" % version, "MGEAR_MAJMIN_VERSION": "%d.%d" % (version[0], version[1])}) -mgearinit = gen(outdir + "/scripts/mgear/__init__.py", "scripts/mgear/__init__.py.in") +# mgearinit = gen(outdir + "/scripts/mgear/__init__.py", "scripts/mgear/__init__.py.in") mgearmod = gen("mGear.mod", "mGear.mod.in") defines = [] @@ -55,8 +56,9 @@ targets = [ "install": {"scripts": excons.glob("scripts/*.py"), "scripts/mgear": filter(lambda x: not x.endswith(".py.in"), excons.glob("scripts/mgear/*")), "tests": excons.glob("tests/*.py"), - "": mgearmod}, - "deps": mgearinit + "vendor": excons.glob("vendor/*.py"), + "": mgearmod} + # "deps": mgearinit }, { "name": "cvwrap", @@ -78,7 +80,8 @@ excons.AddHelpTargets(mgear="mgear maya framework") td = excons.DeclareTargets(env, targets) -env.Alias("mgear", mgearinit + [td["mgear_solvers"], td["cvwrap"]]) +# env.Alias("mgear", mgearinit + [td["mgear_solvers"], td["cvwrap"]]) +env.Alias("mgear",[td["mgear_solvers"], td["cvwrap"]]) td["python"] = filter(lambda x: os.path.splitext(str(x))[1] != ".mel", Glob(outdir + "/scripts/*")) td["scripts"] = Glob(outdir + "/scripts/*.mel") diff --git a/scripts/mgear/__init__.py.in b/scripts/mgear/__init__.py.in new file mode 100644 index 0000000..1935366 --- /dev/null +++ b/scripts/mgear/__init__.py.in @@ -0,0 +1,236 @@ +# MGEAR is under the terms of the MIT License + +# Copyright (c) 2016 Jeremie Passerin, Miquel Campos + +# Permission is hereby granted, free of charge, to any person obtaining a copy +# of this software and associated documentation files (the "Software"), to deal +# in the Software without restriction, including without limitation the rights +# to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +# copies of the Software, and to permit persons to whom the Software is +# furnished to do so, subject to the following conditions: + +# The above copyright notice and this permission notice shall be included in all +# copies or substantial portions of the Software. + +# THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +# IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +# FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +# AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +# LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +# OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE +# SOFTWARE. + +# Author: Jeremie Passerin geerem@hotmail.com www.jeremiepasserin.com +# Author: Miquel Campos hello@miquel-campos.com www.miquel-campos.com +# Date: 2016 / 10 / 10 + +""" +mGear init module. +""" + +########################################################## +# GLOBAL +########################################################## +# built-in +import os +import sys +import exceptions + +# Debug mode for the logger +logDebug = False + +# Severity for logged messages +sev_fatal = 1 +sev_error = 2 +sev_warning = 4 +sev_info = 8 +sev_verbose = 16 +sev_comment = 32 + +# gear version +VERSION = @MGEAR_VERSION@ + + +########################################################## +# METHODS +########################################################## + +def logInfos(): + """ + Log version of Gear + """ + print "GEAR version : " + getVersion() + + +def getVersion(): + """ + Get mGear version + + Returns: + mgear version + """ + return ".".join([str(i) for i in VERSION]) + + +def reloadModule(name="mgear", *args): + """ + Reload a module and its sub-modules from a given module name. + + Args: + name (str): Module Name. Default value is "mgear". + + """ + debugMode = setDebug(False) + module = __import__(name, globals(), locals(), ["*"], -1) + + path = module.__path__[0] + + __reloadRecursive(path, name) + + setDebug(debugMode) + + +def __reloadRecursive(path, parentName): + """ + search subfolders recursive + + Args: + path (str): Path to search subfolder recursive + parentName (str): parent name + """ + for root, dirs, files in os.walk(path, True, None): + + # parse all the files of given path and reload python modules + for sfile in files: + if sfile.endswith(".py"): + if sfile == "__init__.py": + name = parentName + else: + name = parentName+"."+sfile[:-3] + + log("reload : %s"%name) + try: + module = __import__(name, globals(), locals(), ["*"], -1) + reload(module) + except ImportError, e: + for arg in e.args: + log(arg, sev_error) + except Exception, e: + for arg in e.args: + log(arg, sev_error) + + # Now reload sub modules + for dirName in dirs: + __reloadRecursive(path+"/"+dirName, parentName+"."+dirName) + break + +########################################################## +# LOGGER +########################################################## + +def setDebug(b): + """ + Set the debug mode to given value. + + Args: + b (bool): boolean + + Returns: + bool: The previous value of the debug mode + """ + global logDebug + original_value = logDebug + logDebug = b + return original_value + + +def toggleDebug(): + """ + Toggle the debug mode value. + + Returns; + bool: The new debug mode value. + """ + global logDebug + logDebug = not logDebug + return logDebug + + +def log(message, severity=sev_comment, infos=False): + """ + Log a message using severity and additional info from the file itself. + + Severity has been taken from Softimage one: + * 1. Fatal + * 2. Error + * 4. Warning + * 8. Info + * 16. Verbose + * 32. Comment + + Args: + messages(str): The message + severity (int): Severity level. + infos (bool): Add extra infos from the module, class, method and line number. + """ + message = str(message) + + if infos or logDebug: + message = getInfos(1) +"\n"+ message + + sys.stdout.write(message + "\n") + +# ======================================================== +## Exception +class FakeException(exceptions.Exception): + pass + +def getInfos(level): + """ + Get information from where the method has been fired. + Such as module name, method, line number... + + Args: + level (int): Level + + Returns: + str: The info + """ + try: + raise FakeException("this is fake") + except Exception, e: + #get the current execution frame + f = sys.exc_info()[2].tb_frame + + #go back as many call-frames as was specified + while level >= 0: + f = f.f_back + level = level-1 + + infos = "" + + # Module Name + moduleName = f.f_globals["__name__"] + if moduleName != "__ax_main__": + infos += moduleName + " | " + + # Class Name + #if there is a self variable in the caller's local namespace then + #we'll make the assumption that the caller is a class method + obj = f.f_locals.get("self", None) + if obj: + infos += obj.__class__.__name__+"::" + + # Function Name + functionName = f.f_code.co_name + if functionName != "": + infos += functionName+"()" + + # Line Number + lineNumber = str(f.f_lineno) + infos += " line "+lineNumber+"" + + if infos: + infos = "["+infos+"]" + + return infos From 2bca4f78a580cc3ac135e2600358be43466c5568 Mon Sep 17 00:00:00 2001 From: Marcus Ottosson Date: Mon, 13 Nov 2017 08:54:31 +0000 Subject: [PATCH 037/134] Repair SConstruct and build from Dockerfile --- Dockerfile | 16 +++++++++++++++- SConstruct | 4 +--- run_tests.py | 2 ++ 3 files changed, 18 insertions(+), 4 deletions(-) diff --git a/Dockerfile b/Dockerfile index d1630e6..82bf01c 100644 --- a/Dockerfile +++ b/Dockerfile @@ -11,9 +11,23 @@ RUN wget https://bootstrap.pypa.io/get-pip.py && \ sphinxcontrib-napoleon \ python-coveralls +# Support building of Maya plug-ins +RUN yum groupinstall -y 'Development Tools' && \ + yum install -y scons + +RUN git clone https://github.com/autodesk-adn/Maya-devkit.git /devkit && \ + rm -rf /usr/autodesk/maya/devkit \ + /usr/autodesk/maya/mkspecs \ + /usr/autodesk/maya/include && \ + ln -s /devkit/linux/devkit /usr/autodesk/maya/devkit && \ + ln -s /devkit/linux/mkspecs /usr/autodesk/maya/mkspecs && \ + ln -s /devkit/linux/include /usr/autodesk/maya/include + # Avoid creation of auxilliary files ENV PYTHONDONTWRITEBYTECODE=1 WORKDIR /workspace -ENTRYPOINT mayapy -u run_tests.py +ENTRYPOINT \ + scons no-cache=1 with-maya=2016 with-mayadevkit=/usr/autodesk/maya/devkit && \ + mayapy -u run_tests.py diff --git a/SConstruct b/SConstruct index 7cc0f78..81601f4 100644 --- a/SConstruct +++ b/SConstruct @@ -27,7 +27,6 @@ outdir = excons.OutputBaseDirectory() gen = excons.config.AddGenerator(env, "mgear", {"MGEAR_VERSION": "[%d, %d, %d]" % version, "MGEAR_MAJMIN_VERSION": "%d.%d" % (version[0], version[1])}) -mgearinit = gen(outdir + "/scripts/mgear/__init__.py", "scripts/mgear/__init__.py.in") mgearmod = gen("mGear.mod", "mGear.mod.in") defines = [] @@ -56,7 +55,6 @@ targets = [ "scripts/mgear": filter(lambda x: not x.endswith(".py.in"), excons.glob("scripts/mgear/*")), "tests": excons.glob("tests/*.py"), "": mgearmod}, - "deps": mgearinit }, { "name": "cvwrap", @@ -78,7 +76,7 @@ excons.AddHelpTargets(mgear="mgear maya framework") td = excons.DeclareTargets(env, targets) -env.Alias("mgear", mgearinit + [td["mgear_solvers"], td["cvwrap"]]) +env.Alias("mgear", [td["mgear_solvers"], td["cvwrap"]]) td["python"] = filter(lambda x: os.path.splitext(str(x))[1] != ".mel", Glob(outdir + "/scripts/*")) td["scripts"] = Glob(outdir + "/scripts/*.mel") diff --git a/run_tests.py b/run_tests.py index 5c7645e..d41fc6a 100644 --- a/run_tests.py +++ b/run_tests.py @@ -38,7 +38,9 @@ def mute(): dirname = os.path.dirname(__file__) sys.path.insert(0, os.path.join(dirname, "scripts")) + print("\n" + "-" * 70) print("Initialising Maya..") + with mute(): standalone.initialize() import pymel.core From 7f45a9fb0ea08ea554059b13a128c165db131026 Mon Sep 17 00:00:00 2001 From: Marcus Ottosson Date: Mon, 13 Nov 2017 09:15:32 +0000 Subject: [PATCH 038/134] Restore submodule support on Travis --- .travis.yml | 5 ----- 1 file changed, 5 deletions(-) diff --git a/.travis.yml b/.travis.yml index 6fe6c0c..3ed47d0 100644 --- a/.travis.yml +++ b/.travis.yml @@ -1,10 +1,5 @@ language: python -# cvwrap is incorrectly configured to pull -# its submodules via ssh as opposed to https -git: - submodules: false - python: - 2.7 From 24bc5219590758637fbab4d8530ae87242039fd3 Mon Sep 17 00:00:00 2001 From: miquelcampos Date: Mon, 13 Nov 2017 18:21:21 +0900 Subject: [PATCH 039/134] Repair Scons #91: avoid to create .pyc with scons and remove __init__.py.in --- SConstruct | 2 +- scripts/mgear/__init__.py.in | 236 ----------------------------------- 2 files changed, 1 insertion(+), 237 deletions(-) delete mode 100644 scripts/mgear/__init__.py.in diff --git a/SConstruct b/SConstruct index 81601f4..30c3b70 100644 --- a/SConstruct +++ b/SConstruct @@ -10,7 +10,7 @@ assert os.path.isdir(scriptsdir), ( "SConstruct wasn't called from the mgear/ root directory" ) sys.path.insert(0, scriptsdir) - +sys.dont_write_bytecode = True import mgear maya.SetupMscver() diff --git a/scripts/mgear/__init__.py.in b/scripts/mgear/__init__.py.in deleted file mode 100644 index 1935366..0000000 --- a/scripts/mgear/__init__.py.in +++ /dev/null @@ -1,236 +0,0 @@ -# MGEAR is under the terms of the MIT License - -# Copyright (c) 2016 Jeremie Passerin, Miquel Campos - -# Permission is hereby granted, free of charge, to any person obtaining a copy -# of this software and associated documentation files (the "Software"), to deal -# in the Software without restriction, including without limitation the rights -# to use, copy, modify, merge, publish, distribute, sublicense, and/or sell -# copies of the Software, and to permit persons to whom the Software is -# furnished to do so, subject to the following conditions: - -# The above copyright notice and this permission notice shall be included in all -# copies or substantial portions of the Software. - -# THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR -# IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, -# FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE -# AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER -# LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, -# OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE -# SOFTWARE. - -# Author: Jeremie Passerin geerem@hotmail.com www.jeremiepasserin.com -# Author: Miquel Campos hello@miquel-campos.com www.miquel-campos.com -# Date: 2016 / 10 / 10 - -""" -mGear init module. -""" - -########################################################## -# GLOBAL -########################################################## -# built-in -import os -import sys -import exceptions - -# Debug mode for the logger -logDebug = False - -# Severity for logged messages -sev_fatal = 1 -sev_error = 2 -sev_warning = 4 -sev_info = 8 -sev_verbose = 16 -sev_comment = 32 - -# gear version -VERSION = @MGEAR_VERSION@ - - -########################################################## -# METHODS -########################################################## - -def logInfos(): - """ - Log version of Gear - """ - print "GEAR version : " + getVersion() - - -def getVersion(): - """ - Get mGear version - - Returns: - mgear version - """ - return ".".join([str(i) for i in VERSION]) - - -def reloadModule(name="mgear", *args): - """ - Reload a module and its sub-modules from a given module name. - - Args: - name (str): Module Name. Default value is "mgear". - - """ - debugMode = setDebug(False) - module = __import__(name, globals(), locals(), ["*"], -1) - - path = module.__path__[0] - - __reloadRecursive(path, name) - - setDebug(debugMode) - - -def __reloadRecursive(path, parentName): - """ - search subfolders recursive - - Args: - path (str): Path to search subfolder recursive - parentName (str): parent name - """ - for root, dirs, files in os.walk(path, True, None): - - # parse all the files of given path and reload python modules - for sfile in files: - if sfile.endswith(".py"): - if sfile == "__init__.py": - name = parentName - else: - name = parentName+"."+sfile[:-3] - - log("reload : %s"%name) - try: - module = __import__(name, globals(), locals(), ["*"], -1) - reload(module) - except ImportError, e: - for arg in e.args: - log(arg, sev_error) - except Exception, e: - for arg in e.args: - log(arg, sev_error) - - # Now reload sub modules - for dirName in dirs: - __reloadRecursive(path+"/"+dirName, parentName+"."+dirName) - break - -########################################################## -# LOGGER -########################################################## - -def setDebug(b): - """ - Set the debug mode to given value. - - Args: - b (bool): boolean - - Returns: - bool: The previous value of the debug mode - """ - global logDebug - original_value = logDebug - logDebug = b - return original_value - - -def toggleDebug(): - """ - Toggle the debug mode value. - - Returns; - bool: The new debug mode value. - """ - global logDebug - logDebug = not logDebug - return logDebug - - -def log(message, severity=sev_comment, infos=False): - """ - Log a message using severity and additional info from the file itself. - - Severity has been taken from Softimage one: - * 1. Fatal - * 2. Error - * 4. Warning - * 8. Info - * 16. Verbose - * 32. Comment - - Args: - messages(str): The message - severity (int): Severity level. - infos (bool): Add extra infos from the module, class, method and line number. - """ - message = str(message) - - if infos or logDebug: - message = getInfos(1) +"\n"+ message - - sys.stdout.write(message + "\n") - -# ======================================================== -## Exception -class FakeException(exceptions.Exception): - pass - -def getInfos(level): - """ - Get information from where the method has been fired. - Such as module name, method, line number... - - Args: - level (int): Level - - Returns: - str: The info - """ - try: - raise FakeException("this is fake") - except Exception, e: - #get the current execution frame - f = sys.exc_info()[2].tb_frame - - #go back as many call-frames as was specified - while level >= 0: - f = f.f_back - level = level-1 - - infos = "" - - # Module Name - moduleName = f.f_globals["__name__"] - if moduleName != "__ax_main__": - infos += moduleName + " | " - - # Class Name - #if there is a self variable in the caller's local namespace then - #we'll make the assumption that the caller is a class method - obj = f.f_locals.get("self", None) - if obj: - infos += obj.__class__.__name__+"::" - - # Function Name - functionName = f.f_code.co_name - if functionName != "": - infos += functionName+"()" - - # Line Number - lineNumber = str(f.f_lineno) - infos += " line "+lineNumber+"" - - if infos: - infos = "["+infos+"]" - - return infos From 5d27de126cb4ed2d4d3470f9d09a684b62c5da68 Mon Sep 17 00:00:00 2001 From: Marcus Ottosson Date: Mon, 13 Nov 2017 09:29:52 +0000 Subject: [PATCH 040/134] Update submoudule cvwrap --- cvwrap | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/cvwrap b/cvwrap index c7b447a..5822afc 160000 --- a/cvwrap +++ b/cvwrap @@ -1 +1 @@ -Subproject commit c7b447aaf29d69ec92ff43ae349955538122b71b +Subproject commit 5822afc50cafd6805ab40ee0010a57de430ca415 From 03c6b1d72fc48467a9deb4e1ed2fefbb19b30c64 Mon Sep 17 00:00:00 2001 From: Marcus Ottosson Date: Mon, 13 Nov 2017 10:02:04 +0000 Subject: [PATCH 041/134] Add support for Code Climate This will keep an eye on code convention, namely PEP8 --- .codeclimate.yml | 7 +++++++ 1 file changed, 7 insertions(+) create mode 100644 .codeclimate.yml diff --git a/.codeclimate.yml b/.codeclimate.yml new file mode 100644 index 0000000..dd2104f --- /dev/null +++ b/.codeclimate.yml @@ -0,0 +1,7 @@ +engines: + pep8: + enabled: true + +ratings: + paths: + - "**.py" \ No newline at end of file From f2df15b66bd237ffdeebbbdc851d82db93149ff8 Mon Sep 17 00:00:00 2001 From: Marcus Ottosson Date: Mon, 13 Nov 2017 10:04:53 +0000 Subject: [PATCH 042/134] Trigger Code Climate --- .codeclimate.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.codeclimate.yml b/.codeclimate.yml index dd2104f..5e947a3 100644 --- a/.codeclimate.yml +++ b/.codeclimate.yml @@ -4,4 +4,4 @@ engines: ratings: paths: - - "**.py" \ No newline at end of file + - "**.py" From 525f1b7cb3408ef77b4624659484ababf699a932 Mon Sep 17 00:00:00 2001 From: Marcus Ottosson Date: Mon, 13 Nov 2017 10:15:57 +0000 Subject: [PATCH 043/134] Trigger Code Climate --- .codeclimate.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.codeclimate.yml b/.codeclimate.yml index 5e947a3..dd2104f 100644 --- a/.codeclimate.yml +++ b/.codeclimate.yml @@ -4,4 +4,4 @@ engines: ratings: paths: - - "**.py" + - "**.py" \ No newline at end of file From 6a87ba9aa8dc06cbcf5e4850d55d4be3d575e796 Mon Sep 17 00:00:00 2001 From: Emily Fueger Date: Mon, 13 Nov 2017 11:44:30 -0500 Subject: [PATCH 044/134] exclude widget.py from Code Climate analysis Hi! Emily here from Code Climate Support. Here are the lines you'll need to exclude the widget.py file. --- .codeclimate.yml | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/.codeclimate.yml b/.codeclimate.yml index dd2104f..1409fd1 100644 --- a/.codeclimate.yml +++ b/.codeclimate.yml @@ -4,4 +4,7 @@ engines: ratings: paths: - - "**.py" \ No newline at end of file + - "**.py" + +exclude_paths: +- "*/**/widget.py" From 7d3ce8d5a1d454011c02ce2f9145ee6fdee76fb0 Mon Sep 17 00:00:00 2001 From: Marcus Ottosson Date: Mon, 13 Nov 2017 17:14:11 +0000 Subject: [PATCH 045/134] Exclude components --- .codeclimate.yml | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/.codeclimate.yml b/.codeclimate.yml index 1409fd1..bb7eedf 100644 --- a/.codeclimate.yml +++ b/.codeclimate.yml @@ -7,4 +7,5 @@ ratings: - "**.py" exclude_paths: -- "*/**/widget.py" + - "*/**/widget.py" + - "scripts/mgear/maya/shifter/component/**" From f31554797f0b7128c5d719daa9e1c046b096e0a3 Mon Sep 17 00:00:00 2001 From: Gaetan Guidet Date: Mon, 13 Nov 2017 18:44:16 +0900 Subject: [PATCH 046/134] restored __init__.py.in but also leave generated files (__init__.py and mGear.mod) around --- .gitignore | 1 - SConstruct | 14 +-- mGear.mod | 68 ++++++++++ scripts/mgear/__init__.py | 2 +- scripts/mgear/__init__.py.in | 236 +++++++++++++++++++++++++++++++++++ 5 files changed, 309 insertions(+), 12 deletions(-) create mode 100644 mGear.mod create mode 100644 scripts/mgear/__init__.py.in diff --git a/.gitignore b/.gitignore index 114e875..cd00bb1 100644 --- a/.gitignore +++ b/.gitignore @@ -48,7 +48,6 @@ excons.cache /mgear.env.tmp /mgear.config /mGear_cmd.cmd -/mGear.mod cover/ \ No newline at end of file diff --git a/SConstruct b/SConstruct index 30c3b70..3c22629 100644 --- a/SConstruct +++ b/SConstruct @@ -4,20 +4,12 @@ import excons import excons.config import excons.tools.maya as maya -# Assuming SConstruct is called from the current working directory -scriptsdir = os.path.join(os.getcwd(), "scripts") -assert os.path.isdir(scriptsdir), ( - "SConstruct wasn't called from the mgear/ root directory" -) -sys.path.insert(0, scriptsdir) -sys.dont_write_bytecode = True -import mgear maya.SetupMscver() env = excons.MakeBaseEnv() -version = mgear.VERSION +version = (2, 2, 5) versionstr = "%d.%d.%d" % version platname = {"win32": "windows", "darwin": "osx"}.get(sys.platform, "linux") outprefix = "platforms/%s/%s/%s/plug-ins" % (maya.Version(nice=True), platname, excons.arch_dir) @@ -27,7 +19,9 @@ outdir = excons.OutputBaseDirectory() gen = excons.config.AddGenerator(env, "mgear", {"MGEAR_VERSION": "[%d, %d, %d]" % version, "MGEAR_MAJMIN_VERSION": "%d.%d" % (version[0], version[1])}) +mgearinit = gen("scripts/mgear/__init__.py", "scripts/mgear/__init__.py.in") mgearmod = gen("mGear.mod", "mGear.mod.in") +NoClean(mgearinit + mgearmod) defines = [] if sys.platform == "win32": @@ -52,7 +46,7 @@ targets = [ "srcs": excons.glob("src/*.cpp"), "custom": [maya.Require], "install": {"scripts": excons.glob("scripts/*.py"), - "scripts/mgear": filter(lambda x: not x.endswith(".py.in"), excons.glob("scripts/mgear/*")), + "scripts/mgear": filter(lambda x: not os.path.basename(x).startswith("__init__.py"), excons.glob("scripts/mgear/*")) + mgearinit, "tests": excons.glob("tests/*.py"), "": mgearmod}, }, diff --git a/mGear.mod b/mGear.mod new file mode 100644 index 0000000..eedfbdf --- /dev/null +++ b/mGear.mod @@ -0,0 +1,68 @@ ++ MAYAVERSION:2013 PLATFORM:win64 mGear 2.2 ./platforms/2013/windows/x64 +scripts: ../../../../scripts + ++ MAYAVERSION:2013 PLATFORM:linux mGear 2.2 ./platforms/2013/linux/x64 +scripts: ../../../../scripts + ++ MAYAVERSION:2013 PLATFORM:mac mGear 2.2 ./platforms/2013/osx/x64 +scripts: ../../../../scripts + ++ MAYAVERSION:2013.5 PLATFORM:win64 mGear 2.2 ./platforms/2013.5/windows/x64 +scripts: ../../../../scripts + ++ MAYAVERSION:2013.5 PLATFORM:linux mGear 2.2 ./platforms/2013.5/linux/x64 +scripts: ../../../../scripts + ++ MAYAVERSION:2013.5 PLATFORM:mac mGear 2.2 ./platforms/2013.5/osx/x64 +scripts: ../../../../scripts + ++ MAYAVERSION:2014 PLATFORM:win64 mGear 2.2 ./platforms/2014/windows/x64 +scripts: ../../../../scripts + ++ MAYAVERSION:2014 PLATFORM:linux mGear 2.2 ./platforms/2014/linux/x64 +scripts: ../../../../scripts + ++ MAYAVERSION:2014 PLATFORM:mac mGear 2.2 ./platforms/2014/osx/x64 +scripts: ../../../../scripts + ++ MAYAVERSION:2015 PLATFORM:win64 mGear 2.2 ./platforms/2015/windows/x64 +scripts: ../../../../scripts + ++ MAYAVERSION:2015 PLATFORM:linux mGear 2.2 ./platforms/2015/linux/x64 +scripts: ../../../../scripts + ++ MAYAVERSION:2015 PLATFORM:mac mGear 2.2 ./platforms/2015/osx/x64 +scripts: ../../../../scripts + ++ MAYAVERSION:2016 PLATFORM:win64 mGear 2.2 ./platforms/2016/windows/x64 +scripts: ../../../../scripts + ++ MAYAVERSION:2016 PLATFORM:linux mGear 2.2 ./platforms/2016/linux/x64 +scripts: ../../../../scripts + ++ MAYAVERSION:2016 PLATFORM:mac mGear 2.2 ./platforms/2016/osx/x64 +scripts: ../../../../scripts + ++ MAYAVERSION:2016.5 PLATFORM:win64 mGear 2.2 ./platforms/2016.5/windows/x64 +scripts: ../../../../scripts + ++ MAYAVERSION:2016.5 PLATFORM:linux mGear 2.2 ./platforms/2016.5/linux/x64 +scripts: ../../../../scripts + ++ MAYAVERSION:2016.5 PLATFORM:mac mGear 2.2 ./platforms/2016.5/osx/x64 +scripts: ../../../../scripts + ++ MAYAVERSION:2017 PLATFORM:win64 mGear 2.2 ./platforms/2017/windows/x64 +scripts: ../../../../scripts + ++ MAYAVERSION:2017 PLATFORM:linux mGear 2.2 ./platforms/2017/linux/x64 +scripts: ../../../../scripts + ++ MAYAVERSION:2017 PLATFORM:mac mGear 2.2 ./platforms/2017/osx/x64 +scripts: ../../../../scripts + ++ MAYAVERSION:2018 PLATFORM:win64 mGear 2.2 ./platforms/2018/windows/x64 +scripts: ../../../../scripts + ++ MAYAVERSION:2018 PLATFORM:mac mGear 2.2 ./platforms/2018/osx/x64 +scripts: ../../../../scripts \ No newline at end of file diff --git a/scripts/mgear/__init__.py b/scripts/mgear/__init__.py index e46c92a..0ee8c41 100644 --- a/scripts/mgear/__init__.py +++ b/scripts/mgear/__init__.py @@ -48,7 +48,7 @@ sev_comment = 32 # gear version -VERSION = (2, 2, 5) +VERSION = [2, 2, 5] ########################################################## diff --git a/scripts/mgear/__init__.py.in b/scripts/mgear/__init__.py.in new file mode 100644 index 0000000..1935366 --- /dev/null +++ b/scripts/mgear/__init__.py.in @@ -0,0 +1,236 @@ +# MGEAR is under the terms of the MIT License + +# Copyright (c) 2016 Jeremie Passerin, Miquel Campos + +# Permission is hereby granted, free of charge, to any person obtaining a copy +# of this software and associated documentation files (the "Software"), to deal +# in the Software without restriction, including without limitation the rights +# to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +# copies of the Software, and to permit persons to whom the Software is +# furnished to do so, subject to the following conditions: + +# The above copyright notice and this permission notice shall be included in all +# copies or substantial portions of the Software. + +# THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +# IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +# FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +# AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +# LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +# OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE +# SOFTWARE. + +# Author: Jeremie Passerin geerem@hotmail.com www.jeremiepasserin.com +# Author: Miquel Campos hello@miquel-campos.com www.miquel-campos.com +# Date: 2016 / 10 / 10 + +""" +mGear init module. +""" + +########################################################## +# GLOBAL +########################################################## +# built-in +import os +import sys +import exceptions + +# Debug mode for the logger +logDebug = False + +# Severity for logged messages +sev_fatal = 1 +sev_error = 2 +sev_warning = 4 +sev_info = 8 +sev_verbose = 16 +sev_comment = 32 + +# gear version +VERSION = @MGEAR_VERSION@ + + +########################################################## +# METHODS +########################################################## + +def logInfos(): + """ + Log version of Gear + """ + print "GEAR version : " + getVersion() + + +def getVersion(): + """ + Get mGear version + + Returns: + mgear version + """ + return ".".join([str(i) for i in VERSION]) + + +def reloadModule(name="mgear", *args): + """ + Reload a module and its sub-modules from a given module name. + + Args: + name (str): Module Name. Default value is "mgear". + + """ + debugMode = setDebug(False) + module = __import__(name, globals(), locals(), ["*"], -1) + + path = module.__path__[0] + + __reloadRecursive(path, name) + + setDebug(debugMode) + + +def __reloadRecursive(path, parentName): + """ + search subfolders recursive + + Args: + path (str): Path to search subfolder recursive + parentName (str): parent name + """ + for root, dirs, files in os.walk(path, True, None): + + # parse all the files of given path and reload python modules + for sfile in files: + if sfile.endswith(".py"): + if sfile == "__init__.py": + name = parentName + else: + name = parentName+"."+sfile[:-3] + + log("reload : %s"%name) + try: + module = __import__(name, globals(), locals(), ["*"], -1) + reload(module) + except ImportError, e: + for arg in e.args: + log(arg, sev_error) + except Exception, e: + for arg in e.args: + log(arg, sev_error) + + # Now reload sub modules + for dirName in dirs: + __reloadRecursive(path+"/"+dirName, parentName+"."+dirName) + break + +########################################################## +# LOGGER +########################################################## + +def setDebug(b): + """ + Set the debug mode to given value. + + Args: + b (bool): boolean + + Returns: + bool: The previous value of the debug mode + """ + global logDebug + original_value = logDebug + logDebug = b + return original_value + + +def toggleDebug(): + """ + Toggle the debug mode value. + + Returns; + bool: The new debug mode value. + """ + global logDebug + logDebug = not logDebug + return logDebug + + +def log(message, severity=sev_comment, infos=False): + """ + Log a message using severity and additional info from the file itself. + + Severity has been taken from Softimage one: + * 1. Fatal + * 2. Error + * 4. Warning + * 8. Info + * 16. Verbose + * 32. Comment + + Args: + messages(str): The message + severity (int): Severity level. + infos (bool): Add extra infos from the module, class, method and line number. + """ + message = str(message) + + if infos or logDebug: + message = getInfos(1) +"\n"+ message + + sys.stdout.write(message + "\n") + +# ======================================================== +## Exception +class FakeException(exceptions.Exception): + pass + +def getInfos(level): + """ + Get information from where the method has been fired. + Such as module name, method, line number... + + Args: + level (int): Level + + Returns: + str: The info + """ + try: + raise FakeException("this is fake") + except Exception, e: + #get the current execution frame + f = sys.exc_info()[2].tb_frame + + #go back as many call-frames as was specified + while level >= 0: + f = f.f_back + level = level-1 + + infos = "" + + # Module Name + moduleName = f.f_globals["__name__"] + if moduleName != "__ax_main__": + infos += moduleName + " | " + + # Class Name + #if there is a self variable in the caller's local namespace then + #we'll make the assumption that the caller is a class method + obj = f.f_locals.get("self", None) + if obj: + infos += obj.__class__.__name__+"::" + + # Function Name + functionName = f.f_code.co_name + if functionName != "": + infos += functionName+"()" + + # Line Number + lineNumber = str(f.f_lineno) + infos += " line "+lineNumber+"" + + if infos: + infos = "["+infos+"]" + + return infos From 7996c8c06a0096a8c9704f8da31638ea9fc6e0dd Mon Sep 17 00:00:00 2001 From: Gaetan Guidet Date: Wed, 15 Nov 2017 06:52:08 +0900 Subject: [PATCH 047/134] add 'mgear_core' target (mgear python module only) --- SConstruct | 20 +++++++++++++------- 1 file changed, 13 insertions(+), 7 deletions(-) diff --git a/SConstruct b/SConstruct index 3c22629..c0aa75b 100644 --- a/SConstruct +++ b/SConstruct @@ -21,6 +21,7 @@ gen = excons.config.AddGenerator(env, "mgear", {"MGEAR_VERSION": "[%d, %d, %d]" mgearinit = gen("scripts/mgear/__init__.py", "scripts/mgear/__init__.py.in") mgearmod = gen("mGear.mod", "mGear.mod.in") +mgearpy = filter(lambda x: not os.path.basename(x).startswith("__init__.py"), excons.glob("scripts/mgear/*")) NoClean(mgearinit + mgearmod) defines = [] @@ -34,6 +35,15 @@ def CVWrapSetup(env): env.Append(CCFLAGS=["-mavx"]) targets = [ + { + "name": "mgear_core", + "type": "install", + "desc": "mgear core python modules", + "install": {"scripts": excons.glob("scripts/*.py"), + "scripts/mgear": mgearpy + mgearinit, + "tests": excons.glob("tests/*.py"), + "": mgearmod} + }, { "name": "mgear_solvers", "type": "dynamicmodule", @@ -44,11 +54,7 @@ targets = [ "defs": defines, "incdirs": ["src"], "srcs": excons.glob("src/*.cpp"), - "custom": [maya.Require], - "install": {"scripts": excons.glob("scripts/*.py"), - "scripts/mgear": filter(lambda x: not os.path.basename(x).startswith("__init__.py"), excons.glob("scripts/mgear/*")) + mgearinit, - "tests": excons.glob("tests/*.py"), - "": mgearmod}, + "custom": [maya.Require] }, { "name": "cvwrap", @@ -66,11 +72,11 @@ targets = [ } ] -excons.AddHelpTargets(mgear="mgear maya framework") +excons.AddHelpTargets(mgear="mgear maya framework (mgear_core, mgear_solvers, cvwrap)") td = excons.DeclareTargets(env, targets) -env.Alias("mgear", [td["mgear_solvers"], td["cvwrap"]]) +env.Alias("mgear", [td["mgear_core"], td["mgear_solvers"], td["cvwrap"]]) td["python"] = filter(lambda x: os.path.splitext(str(x))[1] != ".mel", Glob(outdir + "/scripts/*")) td["scripts"] = Glob(outdir + "/scripts/*.mel") From f4117cfbf8e4364da038407c852ce3f1f8a1aa18 Mon Sep 17 00:00:00 2001 From: Gaetan Guidet Date: Wed, 15 Nov 2017 07:01:40 +0900 Subject: [PATCH 048/134] add Qt.py submodule and remove it from mgear owns source --- .gitmodules | 3 + Qtdotpy | 1 + SConstruct | 2 + scripts/mgear/vendor/Qt.py | 1606 ------------------------------------ 4 files changed, 6 insertions(+), 1606 deletions(-) create mode 160000 Qtdotpy delete mode 100644 scripts/mgear/vendor/Qt.py diff --git a/.gitmodules b/.gitmodules index 955d252..a089f4a 100644 --- a/.gitmodules +++ b/.gitmodules @@ -4,3 +4,6 @@ [submodule "cvwrap"] path = cvwrap url = https://github.com/miquelcampos/cvwrap.git +[submodule "Qtdotpy"] + path = Qtdotpy + url = https://github.com/mottosso/Qt.py diff --git a/Qtdotpy b/Qtdotpy new file mode 160000 index 0000000..ebf8493 --- /dev/null +++ b/Qtdotpy @@ -0,0 +1 @@ +Subproject commit ebf8493636b3d1b16bebbb22781dd7dfc9435233 diff --git a/SConstruct b/SConstruct index c0aa75b..1f6367a 100644 --- a/SConstruct +++ b/SConstruct @@ -22,6 +22,7 @@ gen = excons.config.AddGenerator(env, "mgear", {"MGEAR_VERSION": "[%d, %d, %d]" mgearinit = gen("scripts/mgear/__init__.py", "scripts/mgear/__init__.py.in") mgearmod = gen("mGear.mod", "mGear.mod.in") mgearpy = filter(lambda x: not os.path.basename(x).startswith("__init__.py"), excons.glob("scripts/mgear/*")) +qtpy = ["Qtdotpy/Qt.py"] NoClean(mgearinit + mgearmod) defines = [] @@ -41,6 +42,7 @@ targets = [ "desc": "mgear core python modules", "install": {"scripts": excons.glob("scripts/*.py"), "scripts/mgear": mgearpy + mgearinit, + "scripts/mgear/vendor": qtpy, "tests": excons.glob("tests/*.py"), "": mgearmod} }, diff --git a/scripts/mgear/vendor/Qt.py b/scripts/mgear/vendor/Qt.py deleted file mode 100644 index 84b9b46..0000000 --- a/scripts/mgear/vendor/Qt.py +++ /dev/null @@ -1,1606 +0,0 @@ -"""Minimal Python 2 & 3 shim around all Qt bindings - -DOCUMENTATION - Qt.py was born in the film and visual effects industry to address - the growing need for the development of software capable of running - with more than one flavour of the Qt bindings for Python - PySide, - PySide2, PyQt4 and PyQt5. - - 1. Build for one, run with all - 2. Explicit is better than implicit - 3. Support co-existence - - Default resolution order: - - PySide2 - - PyQt5 - - PySide - - PyQt4 - - Usage: - >> import sys - >> from Qt import QtWidgets - >> app = QtWidgets.QApplication(sys.argv) - >> button = QtWidgets.QPushButton("Hello World") - >> button.show() - >> app.exec_() - - All members of PySide2 are mapped from other bindings, should they exist. - If no equivalent member exist, it is excluded from Qt.py and inaccessible. - The idea is to highlight members that exist across all supported binding, - and guarantee that code that runs on one binding runs on all others. - - For more details, visit https://github.com/mottosso/Qt.py - -LICENSE - - See end of file for license (MIT, BSD) information. - -""" - -import os -import sys -import types -import shutil - - -__version__ = "1.1.0.b6" - -# Enable support for `from Qt import *` -__all__ = [] - -# Flags from environment variables -QT_VERBOSE = bool(os.getenv("QT_VERBOSE")) -QT_PREFERRED_BINDING = os.getenv("QT_PREFERRED_BINDING", "") -QT_SIP_API_HINT = os.getenv("QT_SIP_API_HINT") - -# Reference to Qt.py -Qt = sys.modules[__name__] -Qt.QtCompat = types.ModuleType("QtCompat") - -try: - long -except NameError: - # Python 3 compatibility - long = int - -"""Common members of all bindings - -This is where each member of Qt.py is explicitly defined. -It is based on a "lowest common denominator" of all bindings; -including members found in each of the 4 bindings. - -Find or add excluded members in build_membership.py - -""" - -_common_members = { - "QtCore": [ - "QAbstractAnimation", - "QAbstractEventDispatcher", - "QAbstractItemModel", - "QAbstractListModel", - "QAbstractState", - "QAbstractTableModel", - "QAbstractTransition", - "QAnimationGroup", - "QBasicTimer", - "QBitArray", - "QBuffer", - "QByteArray", - "QByteArrayMatcher", - "QChildEvent", - "QCoreApplication", - "QCryptographicHash", - "QDataStream", - "QDate", - "QDateTime", - "QDir", - "QDirIterator", - "QDynamicPropertyChangeEvent", - "QEasingCurve", - "QElapsedTimer", - "QEvent", - "QEventLoop", - "QEventTransition", - "QFile", - "QFileInfo", - "QFileSystemWatcher", - "QFinalState", - "QGenericArgument", - "QGenericReturnArgument", - "QHistoryState", - "QItemSelectionRange", - "QIODevice", - "QLibraryInfo", - "QLine", - "QLineF", - "QLocale", - "QMargins", - "QMetaClassInfo", - "QMetaEnum", - "QMetaMethod", - "QMetaObject", - "QMetaProperty", - "QMimeData", - "QModelIndex", - "QMutex", - "QMutexLocker", - "QObject", - "QParallelAnimationGroup", - "QPauseAnimation", - "QPersistentModelIndex", - "QPluginLoader", - "QPoint", - "QPointF", - "QProcess", - "QProcessEnvironment", - "QPropertyAnimation", - "QReadLocker", - "QReadWriteLock", - "QRect", - "QRectF", - "QRegExp", - "QResource", - "QRunnable", - "QSemaphore", - "QSequentialAnimationGroup", - "QSettings", - "QSignalMapper", - "QSignalTransition", - "QSize", - "QSizeF", - "QSocketNotifier", - "QState", - "QStateMachine", - "QSysInfo", - "QSystemSemaphore", - "QT_TRANSLATE_NOOP", - "QT_TR_NOOP", - "QT_TR_NOOP_UTF8", - "QTemporaryFile", - "QTextBoundaryFinder", - "QTextCodec", - "QTextDecoder", - "QTextEncoder", - "QTextStream", - "QTextStreamManipulator", - "QThread", - "QThreadPool", - "QTime", - "QTimeLine", - "QTimer", - "QTimerEvent", - "QTranslator", - "QUrl", - "QVariantAnimation", - "QWaitCondition", - "QWriteLocker", - "QXmlStreamAttribute", - "QXmlStreamAttributes", - "QXmlStreamEntityDeclaration", - "QXmlStreamEntityResolver", - "QXmlStreamNamespaceDeclaration", - "QXmlStreamNotationDeclaration", - "QXmlStreamReader", - "QXmlStreamWriter", - "Qt", - "QtCriticalMsg", - "QtDebugMsg", - "QtFatalMsg", - "QtMsgType", - "QtSystemMsg", - "QtWarningMsg", - "qAbs", - "qAddPostRoutine", - "qChecksum", - "qCritical", - "qDebug", - "qFatal", - "qFuzzyCompare", - "qIsFinite", - "qIsInf", - "qIsNaN", - "qIsNull", - "qRegisterResourceData", - "qUnregisterResourceData", - "qVersion", - "qWarning", - "qrand", - "qsrand" - ], - "QtGui": [ - "QAbstractTextDocumentLayout", - "QActionEvent", - "QBitmap", - "QBrush", - "QClipboard", - "QCloseEvent", - "QColor", - "QConicalGradient", - "QContextMenuEvent", - "QCursor", - "QDoubleValidator", - "QDrag", - "QDragEnterEvent", - "QDragLeaveEvent", - "QDragMoveEvent", - "QDropEvent", - "QFileOpenEvent", - "QFocusEvent", - "QFont", - "QFontDatabase", - "QFontInfo", - "QFontMetrics", - "QFontMetricsF", - "QGradient", - "QHelpEvent", - "QHideEvent", - "QHoverEvent", - "QIcon", - "QIconDragEvent", - "QIconEngine", - "QImage", - "QImageIOHandler", - "QImageReader", - "QImageWriter", - "QInputEvent", - "QInputMethodEvent", - "QIntValidator", - "QKeyEvent", - "QKeySequence", - "QLinearGradient", - "QMatrix2x2", - "QMatrix2x3", - "QMatrix2x4", - "QMatrix3x2", - "QMatrix3x3", - "QMatrix3x4", - "QMatrix4x2", - "QMatrix4x3", - "QMatrix4x4", - "QMouseEvent", - "QMoveEvent", - "QMovie", - "QPaintDevice", - "QPaintEngine", - "QPaintEngineState", - "QPaintEvent", - "QPainter", - "QPainterPath", - "QPainterPathStroker", - "QPalette", - "QPen", - "QPicture", - "QPictureIO", - "QPixmap", - "QPixmapCache", - "QPolygon", - "QPolygonF", - "QQuaternion", - "QRadialGradient", - "QRegExpValidator", - "QRegion", - "QResizeEvent", - "QSessionManager", - "QShortcutEvent", - "QShowEvent", - "QStandardItem", - "QStandardItemModel", - "QStatusTipEvent", - "QSyntaxHighlighter", - "QTabletEvent", - "QTextBlock", - "QTextBlockFormat", - "QTextBlockGroup", - "QTextBlockUserData", - "QTextCharFormat", - "QTextCursor", - "QTextDocument", - "QTextDocumentFragment", - "QTextFormat", - "QTextFragment", - "QTextFrame", - "QTextFrameFormat", - "QTextImageFormat", - "QTextInlineObject", - "QTextItem", - "QTextLayout", - "QTextLength", - "QTextLine", - "QTextList", - "QTextListFormat", - "QTextObject", - "QTextObjectInterface", - "QTextOption", - "QTextTable", - "QTextTableCell", - "QTextTableCellFormat", - "QTextTableFormat", - "QTouchEvent", - "QTransform", - "QValidator", - "QVector2D", - "QVector3D", - "QVector4D", - "QWhatsThisClickedEvent", - "QWheelEvent", - "QWindowStateChangeEvent", - "qAlpha", - "qBlue", - "qGray", - "qGreen", - "qIsGray", - "qRed", - "qRgb", - "qRgba" - ], - "QtHelp": [ - "QHelpContentItem", - "QHelpContentModel", - "QHelpContentWidget", - "QHelpEngine", - "QHelpEngineCore", - "QHelpIndexModel", - "QHelpIndexWidget", - "QHelpSearchEngine", - "QHelpSearchQuery", - "QHelpSearchQueryWidget", - "QHelpSearchResultWidget" - ], - "QtNetwork": [ - "QAbstractNetworkCache", - "QAbstractSocket", - "QAuthenticator", - "QHostAddress", - "QHostInfo", - "QLocalServer", - "QLocalSocket", - "QNetworkAccessManager", - "QNetworkAddressEntry", - "QNetworkCacheMetaData", - "QNetworkConfiguration", - "QNetworkConfigurationManager", - "QNetworkCookie", - "QNetworkCookieJar", - "QNetworkDiskCache", - "QNetworkInterface", - "QNetworkProxy", - "QNetworkProxyFactory", - "QNetworkProxyQuery", - "QNetworkReply", - "QNetworkRequest", - "QNetworkSession", - "QSsl", - "QTcpServer", - "QTcpSocket", - "QUdpSocket" - ], - "QtSql": [ - "QSql", - "QSqlDatabase", - "QSqlDriver", - "QSqlDriverCreatorBase", - "QSqlError", - "QSqlField", - "QSqlIndex", - "QSqlQuery", - "QSqlQueryModel", - "QSqlRecord", - "QSqlRelation", - "QSqlRelationalDelegate", - "QSqlRelationalTableModel", - "QSqlResult", - "QSqlTableModel" - ], - "QtSvg": [ - "QGraphicsSvgItem", - "QSvgGenerator", - "QSvgRenderer", - "QSvgWidget" - ], - "QtTest": [ - "QTest" - ], - "QtWidgets": [ - "QAbstractButton", - "QAbstractGraphicsShapeItem", - "QAbstractItemDelegate", - "QAbstractItemView", - "QAbstractScrollArea", - "QAbstractSlider", - "QAbstractSpinBox", - "QAction", - "QActionGroup", - "QApplication", - "QBoxLayout", - "QButtonGroup", - "QCalendarWidget", - "QCheckBox", - "QColorDialog", - "QColumnView", - "QComboBox", - "QCommandLinkButton", - "QCommonStyle", - "QCompleter", - "QDataWidgetMapper", - "QDateEdit", - "QDateTimeEdit", - "QDesktopWidget", - "QDial", - "QDialog", - "QDialogButtonBox", - "QDirModel", - "QDockWidget", - "QDoubleSpinBox", - "QErrorMessage", - "QFileDialog", - "QFileIconProvider", - "QFileSystemModel", - "QFocusFrame", - "QFontComboBox", - "QFontDialog", - "QFormLayout", - "QFrame", - "QGesture", - "QGestureEvent", - "QGestureRecognizer", - "QGraphicsAnchor", - "QGraphicsAnchorLayout", - "QGraphicsBlurEffect", - "QGraphicsColorizeEffect", - "QGraphicsDropShadowEffect", - "QGraphicsEffect", - "QGraphicsEllipseItem", - "QGraphicsGridLayout", - "QGraphicsItem", - "QGraphicsItemGroup", - "QGraphicsLayout", - "QGraphicsLayoutItem", - "QGraphicsLineItem", - "QGraphicsLinearLayout", - "QGraphicsObject", - "QGraphicsOpacityEffect", - "QGraphicsPathItem", - "QGraphicsPixmapItem", - "QGraphicsPolygonItem", - "QGraphicsProxyWidget", - "QGraphicsRectItem", - "QGraphicsRotation", - "QGraphicsScale", - "QGraphicsScene", - "QGraphicsSceneContextMenuEvent", - "QGraphicsSceneDragDropEvent", - "QGraphicsSceneEvent", - "QGraphicsSceneHelpEvent", - "QGraphicsSceneHoverEvent", - "QGraphicsSceneMouseEvent", - "QGraphicsSceneMoveEvent", - "QGraphicsSceneResizeEvent", - "QGraphicsSceneWheelEvent", - "QGraphicsSimpleTextItem", - "QGraphicsTextItem", - "QGraphicsTransform", - "QGraphicsView", - "QGraphicsWidget", - "QGridLayout", - "QGroupBox", - "QHBoxLayout", - "QHeaderView", - "QInputDialog", - "QItemDelegate", - "QItemEditorCreatorBase", - "QItemEditorFactory", - "QKeyEventTransition", - "QLCDNumber", - "QLabel", - "QLayout", - "QLayoutItem", - "QLineEdit", - "QListView", - "QListWidget", - "QListWidgetItem", - "QMainWindow", - "QMdiArea", - "QMdiSubWindow", - "QMenu", - "QMenuBar", - "QMessageBox", - "QMouseEventTransition", - "QPanGesture", - "QPinchGesture", - "QPlainTextDocumentLayout", - "QPlainTextEdit", - "QProgressBar", - "QProgressDialog", - "QPushButton", - "QRadioButton", - "QRubberBand", - "QScrollArea", - "QScrollBar", - "QShortcut", - "QSizeGrip", - "QSizePolicy", - "QSlider", - "QSpacerItem", - "QSpinBox", - "QSplashScreen", - "QSplitter", - "QSplitterHandle", - "QStackedLayout", - "QStackedWidget", - "QStatusBar", - "QStyle", - "QStyleFactory", - "QStyleHintReturn", - "QStyleHintReturnMask", - "QStyleHintReturnVariant", - "QStyleOption", - "QStyleOptionButton", - "QStyleOptionComboBox", - "QStyleOptionComplex", - "QStyleOptionDockWidget", - "QStyleOptionFocusRect", - "QStyleOptionFrame", - "QStyleOptionGraphicsItem", - "QStyleOptionGroupBox", - "QStyleOptionHeader", - "QStyleOptionMenuItem", - "QStyleOptionProgressBar", - "QStyleOptionRubberBand", - "QStyleOptionSizeGrip", - "QStyleOptionSlider", - "QStyleOptionSpinBox", - "QStyleOptionTab", - "QStyleOptionTabBarBase", - "QStyleOptionTabWidgetFrame", - "QStyleOptionTitleBar", - "QStyleOptionToolBar", - "QStyleOptionToolBox", - "QStyleOptionToolButton", - "QStyleOptionViewItem", - "QStylePainter", - "QStyledItemDelegate", - "QSwipeGesture", - "QSystemTrayIcon", - "QTabBar", - "QTabWidget", - "QTableView", - "QTableWidget", - "QTableWidgetItem", - "QTableWidgetSelectionRange", - "QTapAndHoldGesture", - "QTapGesture", - "QTextBrowser", - "QTextEdit", - "QTimeEdit", - "QToolBar", - "QToolBox", - "QToolButton", - "QToolTip", - "QTreeView", - "QTreeWidget", - "QTreeWidgetItem", - "QTreeWidgetItemIterator", - "QUndoCommand", - "QUndoGroup", - "QUndoStack", - "QUndoView", - "QVBoxLayout", - "QWhatsThis", - "QWidget", - "QWidgetAction", - "QWidgetItem", - "QWizard", - "QWizardPage" - ], - "QtXml": [ - "QDomAttr", - "QDomCDATASection", - "QDomCharacterData", - "QDomComment", - "QDomDocument", - "QDomDocumentFragment", - "QDomDocumentType", - "QDomElement", - "QDomEntity", - "QDomEntityReference", - "QDomImplementation", - "QDomNamedNodeMap", - "QDomNode", - "QDomNodeList", - "QDomNotation", - "QDomProcessingInstruction", - "QDomText", - "QXmlAttributes", - "QXmlContentHandler", - "QXmlDTDHandler", - "QXmlDeclHandler", - "QXmlDefaultHandler", - "QXmlEntityResolver", - "QXmlErrorHandler", - "QXmlInputSource", - "QXmlLexicalHandler", - "QXmlLocator", - "QXmlNamespaceSupport", - "QXmlParseException", - "QXmlReader", - "QXmlSimpleReader" - ], - "QtXmlPatterns": [ - "QAbstractMessageHandler", - "QAbstractUriResolver", - "QAbstractXmlNodeModel", - "QAbstractXmlReceiver", - "QSourceLocation", - "QXmlFormatter", - "QXmlItem", - "QXmlName", - "QXmlNamePool", - "QXmlNodeModelIndex", - "QXmlQuery", - "QXmlResultItems", - "QXmlSchema", - "QXmlSchemaValidator", - "QXmlSerializer" - ] -} - - -"""Misplaced members - -These members from the original submodule are misplaced relative PySide2 - -""" -_misplaced_members = { - "PySide2": { - "QtGui.QStringListModel": "QtCore.QStringListModel", - "QtCore.Property": "QtCore.Property", - "QtCore.Signal": "QtCore.Signal", - "QtCore.Slot": "QtCore.Slot", - "QtCore.QAbstractProxyModel": "QtCore.QAbstractProxyModel", - "QtCore.QSortFilterProxyModel": "QtCore.QSortFilterProxyModel", - "QtCore.QItemSelection": "QtCore.QItemSelection", - "QtCore.QItemSelectionModel": "QtCore.QItemSelectionModel", - "QtCore.QItemSelectionRange": "QtCore.QItemSelectionRange", - }, - "PyQt5": { - "QtCore.pyqtProperty": "QtCore.Property", - "QtCore.pyqtSignal": "QtCore.Signal", - "QtCore.pyqtSlot": "QtCore.Slot", - "QtCore.QAbstractProxyModel": "QtCore.QAbstractProxyModel", - "QtCore.QSortFilterProxyModel": "QtCore.QSortFilterProxyModel", - "QtCore.QStringListModel": "QtCore.QStringListModel", - "QtCore.QItemSelection": "QtCore.QItemSelection", - "QtCore.QItemSelectionModel": "QtCore.QItemSelectionModel", - "QtCore.QItemSelectionRange": "QtCore.QItemSelectionRange", - }, - "PySide": { - "QtGui.QAbstractProxyModel": "QtCore.QAbstractProxyModel", - "QtGui.QSortFilterProxyModel": "QtCore.QSortFilterProxyModel", - "QtGui.QStringListModel": "QtCore.QStringListModel", - "QtGui.QItemSelection": "QtCore.QItemSelection", - "QtGui.QItemSelectionModel": "QtCore.QItemSelectionModel", - "QtCore.Property": "QtCore.Property", - "QtCore.Signal": "QtCore.Signal", - "QtCore.Slot": "QtCore.Slot", - "QtGui.QItemSelectionRange": "QtCore.QItemSelectionRange", - - }, - "PyQt4": { - "QtGui.QAbstractProxyModel": "QtCore.QAbstractProxyModel", - "QtGui.QSortFilterProxyModel": "QtCore.QSortFilterProxyModel", - "QtGui.QItemSelection": "QtCore.QItemSelection", - "QtGui.QStringListModel": "QtCore.QStringListModel", - "QtGui.QItemSelectionModel": "QtCore.QItemSelectionModel", - "QtCore.pyqtProperty": "QtCore.Property", - "QtCore.pyqtSignal": "QtCore.Signal", - "QtCore.pyqtSlot": "QtCore.Slot", - "QtGui.QItemSelectionRange": "QtCore.QItemSelectionRange", - } -} - -""" Compatibility Members - -This dictionary is used to build Qt.QtCompat objects that provide a consistent -interface for obsolete members, and differences in binding return values. - -{ - "binding": { - "classname": { - "targetname": "binding_namespace", - } - } -} -""" -_compatibility_members = { - "PySide2": { - "QHeaderView": { - "sectionsClickable": "QtWidgets.QHeaderView.sectionsClickable", - "setSectionsClickable": - "QtWidgets.QHeaderView.setSectionsClickable", - "sectionResizeMode": "QtWidgets.QHeaderView.sectionResizeMode", - "setSectionResizeMode": - "QtWidgets.QHeaderView.setSectionResizeMode", - "sectionsMovable": "QtWidgets.QHeaderView.sectionsMovable", - "setSectionsMovable": "QtWidgets.QHeaderView.setSectionsMovable", - }, - "QFileDialog": { - "getOpenFileName": "QtWidgets.QFileDialog.getOpenFileName", - "getOpenFileNames": "QtWidgets.QFileDialog.getOpenFileNames", - "getSaveFileName": "QtWidgets.QFileDialog.getSaveFileName", - }, - }, - "PyQt5": { - "QHeaderView": { - "sectionsClickable": "QtWidgets.QHeaderView.sectionsClickable", - "setSectionsClickable": - "QtWidgets.QHeaderView.setSectionsClickable", - "sectionResizeMode": "QtWidgets.QHeaderView.sectionResizeMode", - "setSectionResizeMode": - "QtWidgets.QHeaderView.setSectionResizeMode", - "sectionsMovable": "QtWidgets.QHeaderView.sectionsMovable", - "setSectionsMovable": "QtWidgets.QHeaderView.setSectionsMovable", - }, - "QFileDialog": { - "getOpenFileName": "QtWidgets.QFileDialog.getOpenFileName", - "getOpenFileNames": "QtWidgets.QFileDialog.getOpenFileNames", - "getSaveFileName": "QtWidgets.QFileDialog.getSaveFileName", - }, - }, - "PySide": { - "QHeaderView": { - "sectionsClickable": "QtWidgets.QHeaderView.isClickable", - "setSectionsClickable": "QtWidgets.QHeaderView.setClickable", - "sectionResizeMode": "QtWidgets.QHeaderView.resizeMode", - "setSectionResizeMode": "QtWidgets.QHeaderView.setResizeMode", - "sectionsMovable": "QtWidgets.QHeaderView.isMovable", - "setSectionsMovable": "QtWidgets.QHeaderView.setMovable", - }, - "QFileDialog": { - "getOpenFileName": "QtWidgets.QFileDialog.getOpenFileName", - "getOpenFileNames": "QtWidgets.QFileDialog.getOpenFileNames", - "getSaveFileName": "QtWidgets.QFileDialog.getSaveFileName", - }, - }, - "PyQt4": { - "QHeaderView": { - "sectionsClickable": "QtWidgets.QHeaderView.isClickable", - "setSectionsClickable": "QtWidgets.QHeaderView.setClickable", - "sectionResizeMode": "QtWidgets.QHeaderView.resizeMode", - "setSectionResizeMode": "QtWidgets.QHeaderView.setResizeMode", - "sectionsMovable": "QtWidgets.QHeaderView.isMovable", - "setSectionsMovable": "QtWidgets.QHeaderView.setMovable", - }, - "QFileDialog": { - "getOpenFileName": "QtWidgets.QFileDialog.getOpenFileName", - "getOpenFileNames": "QtWidgets.QFileDialog.getOpenFileNames", - "getSaveFileName": "QtWidgets.QFileDialog.getSaveFileName", - }, - }, -} - - -def _apply_site_config(): - try: - import QtSiteConfig - except ImportError: - # If no QtSiteConfig module found, no modifications - # to _common_members are needed. - pass - else: - # Provide the ability to modify the dicts used to build Qt.py - if hasattr(QtSiteConfig, 'update_members'): - QtSiteConfig.update_members(_common_members) - - if hasattr(QtSiteConfig, 'update_misplaced_members'): - QtSiteConfig.update_misplaced_members(members=_misplaced_members) - - if hasattr(QtSiteConfig, 'update_compatibility_members'): - QtSiteConfig.update_compatibility_members( - members=_compatibility_members) - - -def _new_module(name): - return types.ModuleType(__name__ + "." + name) - - -def _import_sub_module(module, name): - """import_sub_module will mimic the function of importlib.import_module""" - module = __import__(module.__name__ + "." + name) - for level in name.split("."): - module = getattr(module, level) - return module - - -def _setup(module, extras): - """Install common submodules""" - - Qt.__binding__ = module.__name__ - - for name in list(_common_members) + extras: - try: - submodule = _import_sub_module( - module, name) - except ImportError: - continue - - setattr(Qt, "_" + name, submodule) - - if name not in extras: - # Store reference to original binding, - # but don't store speciality modules - # such as uic or QtUiTools - setattr(Qt, name, _new_module(name)) - - -def _wrapinstance(func, ptr, base=None): - """Enable implicit cast of pointer to most suitable class - - This behaviour is available in sip per default. - - Based on http://nathanhorne.com/pyqtpyside-wrap-instance - - Usage: - This mechanism kicks in under these circumstances. - 1. Qt.py is using PySide 1 or 2. - 2. A `base` argument is not provided. - - See :func:`QtCompat.wrapInstance()` - - Arguments: - func (function): Original function - ptr (long): Pointer to QObject in memory - base (QObject, optional): Base class to wrap with. Defaults to QObject, - which should handle anything. - - """ - - assert isinstance(ptr, long), "Argument 'ptr' must be of type " - assert (base is None) or issubclass(base, Qt.QtCore.QObject), ( - "Argument 'base' must be of type ") - - if base is None: - q_object = func(long(ptr), Qt.QtCore.QObject) - meta_object = q_object.metaObject() - class_name = meta_object.className() - super_class_name = meta_object.superClass().className() - - if hasattr(Qt.QtWidgets, class_name): - base = getattr(Qt.QtWidgets, class_name) - - elif hasattr(Qt.QtWidgets, super_class_name): - base = getattr(Qt.QtWidgets, super_class_name) - - else: - base = Qt.QtCore.QObject - - return func(long(ptr), base) - - -def _reassign_misplaced_members(binding): - """Apply misplaced members from `binding` to Qt.py - - Arguments: - binding (dict): Misplaced members - - """ - - for src, dst in _misplaced_members[binding].items(): - src_module, src_member = src.split(".") - dst_module, dst_member = dst.split(".") - - try: - src_object = getattr(Qt, dst_module) - except AttributeError: - # Skip reassignment of non-existing members. - # This can happen if a request was made to - # rename a member that didn't exist, for example - # if QtWidgets isn't available on the target platform. - continue - - dst_value = getattr(getattr(Qt, "_" + src_module), src_member) - - setattr( - src_object, - dst_member, - dst_value - ) - - -def _build_compatibility_members(binding, decorators=None): - """Apply `binding` to QtCompat - - Arguments: - binding (str): Top level binding in _compatibility_members. - decorators (dict, optional): Provides the ability to decorate the - original Qt methods when needed by a binding. This can be used - to change the returned value to a standard value. The key should - be the classname, the value is a dict where the keys are the - target method names, and the values are the decorator functions. - - """ - - decorators = decorators or dict() - - # Allow optional site-level customization of the compatibility members. - # This method does not need to be implemented in QtSiteConfig. - try: - import QtSiteConfig - except ImportError: - pass - else: - if hasattr(QtSiteConfig, 'update_compatibility_decorators'): - QtSiteConfig.update_compatibility_decorators(binding, decorators) - - _QtCompat = type("QtCompat", (object,), {}) - - for classname, bindings in _compatibility_members[binding].items(): - attrs = {} - for target, binding in bindings.items(): - namespaces = binding.split('.') - try: - src_object = getattr(Qt, "_" + namespaces[0]) - except AttributeError as e: - _log("QtCompat: AttributeError: %s" % e) - # Skip reassignment of non-existing members. - # This can happen if a request was made to - # rename a member that didn't exist, for example - # if QtWidgets isn't available on the target platform. - continue - - # Walk down any remaining namespace getting the object assuming - # that if the first namespace exists the rest will exist. - for namespace in namespaces[1:]: - src_object = getattr(src_object, namespace) - - # decorate the Qt method if a decorator was provided. - if target in decorators.get(classname, []): - # staticmethod must be called on the decorated method to - # prevent a TypeError being raised when the decorated method - # is called. - src_object = staticmethod( - decorators[classname][target](src_object)) - - attrs[target] = src_object - - # Create the QtCompat class and install it into the namespace - compat_class = type(classname, (_QtCompat,), attrs) - setattr(Qt.QtCompat, classname, compat_class) - - -def _pyside2(): - """Initialise PySide2 - - These functions serve to test the existence of a binding - along with set it up in such a way that it aligns with - the final step; adding members from the original binding - to Qt.py - - """ - - import PySide2 as module - _setup(module, ["QtUiTools"]) - - Qt.__binding_version__ = module.__version__ - - try: - try: - # Before merge of PySide and shiboken - import shiboken2 - except ImportError: - # After merge of PySide and shiboken, May 2017 - from PySide2 import shiboken2 - - Qt.QtCompat.wrapInstance = ( - lambda ptr, base=None: _wrapinstance( - shiboken2.wrapInstance, ptr, base) - ) - Qt.QtCompat.getCppPointer = lambda object: \ - shiboken2.getCppPointer(object)[0] - - except ImportError: - pass # Optional - - if hasattr(Qt, "_QtUiTools"): - Qt.QtCompat.loadUi = _loadUi - - if hasattr(Qt, "_QtCore"): - Qt.__qt_version__ = Qt._QtCore.qVersion() - Qt.QtCompat.translate = Qt._QtCore.QCoreApplication.translate - - if hasattr(Qt, "_QtWidgets"): - Qt.QtCompat.setSectionResizeMode = \ - Qt._QtWidgets.QHeaderView.setSectionResizeMode - - _reassign_misplaced_members("PySide2") - _build_compatibility_members("PySide2") - - -def _pyside(): - """Initialise PySide""" - - import PySide as module - _setup(module, ["QtUiTools"]) - - Qt.__binding_version__ = module.__version__ - - try: - try: - # Before merge of PySide and shiboken - import shiboken - except ImportError: - # After merge of PySide and shiboken, May 2017 - from PySide import shiboken - - Qt.QtCompat.wrapInstance = ( - lambda ptr, base=None: _wrapinstance( - shiboken.wrapInstance, ptr, base) - ) - Qt.QtCompat.getCppPointer = lambda object: \ - shiboken.getCppPointer(object)[0] - - except ImportError: - pass # Optional - - if hasattr(Qt, "_QtUiTools"): - Qt.QtCompat.loadUi = _loadUi - - if hasattr(Qt, "_QtGui"): - setattr(Qt, "QtWidgets", _new_module("QtWidgets")) - setattr(Qt, "_QtWidgets", Qt._QtGui) - - Qt.QtCompat.setSectionResizeMode = Qt._QtGui.QHeaderView.setResizeMode - - if hasattr(Qt, "_QtCore"): - Qt.__qt_version__ = Qt._QtCore.qVersion() - QCoreApplication = Qt._QtCore.QCoreApplication - Qt.QtCompat.translate = ( - lambda context, sourceText, disambiguation, n: - QCoreApplication.translate( - context, - sourceText, - disambiguation, - QCoreApplication.CodecForTr, - n - ) - ) - - _reassign_misplaced_members("PySide") - _build_compatibility_members("PySide") - - -def _pyqt5(): - """Initialise PyQt5""" - - import PyQt5 as module - _setup(module, ["uic"]) - - try: - import sip - Qt.QtCompat.wrapInstance = ( - lambda ptr, base=None: _wrapinstance( - sip.wrapinstance, ptr, base) - ) - Qt.QtCompat.getCppPointer = lambda object: \ - sip.unwrapinstance(object) - - except ImportError: - pass # Optional - - if hasattr(Qt, "_uic"): - Qt.QtCompat.loadUi = _loadUi - - if hasattr(Qt, "_QtCore"): - Qt.__binding_version__ = Qt._QtCore.PYQT_VERSION_STR - Qt.__qt_version__ = Qt._QtCore.QT_VERSION_STR - Qt.QtCompat.translate = Qt._QtCore.QCoreApplication.translate - - if hasattr(Qt, "_QtWidgets"): - Qt.QtCompat.setSectionResizeMode = \ - Qt._QtWidgets.QHeaderView.setSectionResizeMode - - _reassign_misplaced_members("PyQt5") - _build_compatibility_members('PyQt5') - - -def _pyqt4(): - """Initialise PyQt4""" - - import sip - - # Validation of envivornment variable. Prevents an error if - # the variable is invalid since it's just a hint. - try: - hint = int(QT_SIP_API_HINT) - except TypeError: - hint = None # Variable was None, i.e. not set. - except ValueError: - raise ImportError("QT_SIP_API_HINT=%s must be a 1 or 2") - - for api in ("QString", - "QVariant", - "QDate", - "QDateTime", - "QTextStream", - "QTime", - "QUrl"): - try: - sip.setapi(api, hint or 2) - except AttributeError: - raise ImportError("PyQt4 < 4.6 isn't supported by Qt.py") - except ValueError: - actual = sip.getapi(api) - if not hint: - raise ImportError("API version already set to %d" % actual) - else: - # Having provided a hint indicates a soft constraint, one - # that doesn't throw an exception. - sys.stderr.write( - "Warning: API '%s' has already been set to %d.\n" - % (api, actual) - ) - - import PyQt4 as module - _setup(module, ["uic"]) - - try: - import sip - Qt.QtCompat.wrapInstance = ( - lambda ptr, base=None: _wrapinstance( - sip.wrapinstance, ptr, base) - ) - Qt.QtCompat.getCppPointer = lambda object: \ - sip.unwrapinstance(object) - - except ImportError: - pass # Optional - - if hasattr(Qt, "_uic"): - Qt.QtCompat.loadUi = _loadUi - - if hasattr(Qt, "_QtGui"): - setattr(Qt, "QtWidgets", _new_module("QtWidgets")) - setattr(Qt, "_QtWidgets", Qt._QtGui) - - Qt.QtCompat.setSectionResizeMode = \ - Qt._QtGui.QHeaderView.setResizeMode - - if hasattr(Qt, "_QtCore"): - Qt.__binding_version__ = Qt._QtCore.PYQT_VERSION_STR - Qt.__qt_version__ = Qt._QtCore.QT_VERSION_STR - - QCoreApplication = Qt._QtCore.QCoreApplication - Qt.QtCompat.translate = ( - lambda context, sourceText, disambiguation, n: - QCoreApplication.translate( - context, - sourceText, - disambiguation, - QCoreApplication.CodecForTr, - n) - ) - - _reassign_misplaced_members("PyQt4") - - # QFileDialog QtCompat decorator - def _standardizeQFileDialog(some_function): - """Decorator that makes PyQt4 return conform to other bindings""" - def wrapper(*args, **kwargs): - ret = (some_function(*args, **kwargs)) - - # PyQt4 only returns the selected filename, force it to a - # standard return of the selected filename, and a empty string - # for the selected filter - return ret, '' - - wrapper.__doc__ = some_function.__doc__ - wrapper.__name__ = some_function.__name__ - - return wrapper - - decorators = { - "QFileDialog": { - "getOpenFileName": _standardizeQFileDialog, - "getOpenFileNames": _standardizeQFileDialog, - "getSaveFileName": _standardizeQFileDialog, - } - } - _build_compatibility_members('PyQt4', decorators) - - -def _none(): - """Internal option (used in installer)""" - - Mock = type("Mock", (), {"__getattr__": lambda Qt, attr: None}) - - Qt.__binding__ = "None" - Qt.__qt_version__ = "0.0.0" - Qt.__binding_version__ = "0.0.0" - Qt.QtCompat.loadUi = lambda uifile, baseinstance=None: None - Qt.QtCompat.setSectionResizeMode = lambda *args, **kwargs: None - - for submodule in _common_members.keys(): - setattr(Qt, submodule, Mock()) - setattr(Qt, "_" + submodule, Mock()) - - -def _log(text): - if QT_VERBOSE: - sys.stdout.write(text + "\n") - - -def _loadUi(uifile, baseinstance=None): - """Dynamically load a user interface from the given `uifile` - - This function calls `uic.loadUi` if using PyQt bindings, - else it implements a comparable binding for PySide. - - Documentation: - http://pyqt.sourceforge.net/Docs/PyQt5/designer.html#PyQt5.uic.loadUi - - Arguments: - uifile (str): Absolute path to Qt Designer file. - baseinstance (QWidget): Instantiated QWidget or subclass thereof - - Return: - baseinstance if `baseinstance` is not `None`. Otherwise - return the newly created instance of the user interface. - - """ - if hasattr(baseinstance, "layout") and baseinstance.layout(): - message = ("QLayout: Attempting to add Layout to %s which " - "already has a layout") - raise RuntimeError(message % (baseinstance)) - - if hasattr(Qt, "_uic"): - return Qt._uic.loadUi(uifile, baseinstance) - - elif hasattr(Qt, "_QtUiTools"): - # Implement `PyQt5.uic.loadUi` for PySide(2) - - class _UiLoader(Qt._QtUiTools.QUiLoader): - """Create the user interface in a base instance. - - Unlike `Qt._QtUiTools.QUiLoader` itself this class does not - create a new instance of the top-level widget, but creates the user - interface in an existing instance of the top-level class if needed. - - This mimics the behaviour of `PyQt5.uic.loadUi`. - - """ - - def __init__(self, baseinstance): - super(_UiLoader, self).__init__(baseinstance) - self.baseinstance = baseinstance - - def load(self, uifile, *args, **kwargs): - from xml.etree.ElementTree import ElementTree - - # For whatever reason, if this doesn't happen then - # reading an invalid or non-existing .ui file throws - # a RuntimeError. - etree = ElementTree() - etree.parse(uifile) - - widget = Qt._QtUiTools.QUiLoader.load( - self, uifile, *args, **kwargs) - - # Workaround for PySide 1.0.9, see issue #208 - widget.parentWidget() - - return widget - - def createWidget(self, class_name, parent=None, name=""): - """Called for each widget defined in ui file - - Overridden here to populate `baseinstance` instead. - - """ - - if parent is None and self.baseinstance: - # Supposed to create the top-level widget, - # return the base instance instead - return self.baseinstance - - # For some reason, Line is not in the list of available - # widgets, but works fine, so we have to special case it here. - if class_name in self.availableWidgets() + ["Line"]: - # Create a new widget for child widgets - widget = Qt._QtUiTools.QUiLoader.createWidget(self, - class_name, - parent, - name) - - else: - raise Exception("Custom widget '%s' not supported" - % class_name) - - if self.baseinstance: - # Set an attribute for the new child widget on the base - # instance, just like PyQt5.uic.loadUi does. - setattr(self.baseinstance, name, widget) - - return widget - - widget = _UiLoader(baseinstance).load(uifile) - Qt.QtCore.QMetaObject.connectSlotsByName(widget) - - return widget - - else: - raise NotImplementedError("No implementation available for loadUi") - - -def _convert(lines): - """Convert compiled .ui file from PySide2 to Qt.py - - Arguments: - lines (list): Each line of of .ui file - - Usage: - >> with open("myui.py") as f: - .. lines = _convert(f.readlines()) - - """ - - def parse(line): - line = line.replace("from PySide2 import", "from Qt import QtCompat,") - line = line.replace("QtWidgets.QApplication.translate", - "QtCompat.translate") - if "QtCore.SIGNAL" in line: - raise NotImplementedError("QtCore.SIGNAL is missing from PyQt5 " - "and so Qt.py does not support it: you " - "should avoid defining signals inside " - "your ui files.") - return line - - parsed = list() - for line in lines: - line = parse(line) - parsed.append(line) - - return parsed - - -def _cli(args): - """Qt.py command-line interface""" - import argparse - - parser = argparse.ArgumentParser() - parser.add_argument("--convert", - help="Path to compiled Python module, e.g. my_ui.py") - parser.add_argument("--compile", - help="Accept raw .ui file and compile with native " - "PySide2 compiler.") - parser.add_argument("--stdout", - help="Write to stdout instead of file", - action="store_true") - parser.add_argument("--stdin", - help="Read from stdin instead of file", - action="store_true") - - args = parser.parse_args(args) - - if args.stdout: - raise NotImplementedError("--stdout") - - if args.stdin: - raise NotImplementedError("--stdin") - - if args.compile: - raise NotImplementedError("--compile") - - if args.convert: - sys.stdout.write("#\n" - "# WARNING: --convert is an ALPHA feature.\n#\n" - "# See https://github.com/mottosso/Qt.py/pull/132\n" - "# for details.\n" - "#\n") - - # - # ------> Read - # - with open(args.convert) as f: - lines = _convert(f.readlines()) - - backup = "%s_backup%s" % os.path.splitext(args.convert) - sys.stdout.write("Creating \"%s\"..\n" % backup) - shutil.copy(args.convert, backup) - - # - # <------ Write - # - with open(args.convert, "w") as f: - f.write("".join(lines)) - - sys.stdout.write("Successfully converted \"%s\"\n" % args.convert) - - -def _install(): - # Default order (customise order and content via QT_PREFERRED_BINDING) - default_order = ("PySide2", "PyQt5", "PySide", "PyQt4") - preferred_order = list( - b for b in QT_PREFERRED_BINDING.split(os.pathsep) if b - ) - - order = preferred_order or default_order - - available = { - "PySide2": _pyside2, - "PyQt5": _pyqt5, - "PySide": _pyside, - "PyQt4": _pyqt4, - "None": _none - } - - _log("Order: '%s'" % "', '".join(order)) - - # Allow site-level customization of the available modules. - _apply_site_config() - - found_binding = False - for name in order: - _log("Trying %s" % name) - - try: - available[name]() - found_binding = True - break - - except ImportError as e: - _log("ImportError: %s" % e) - - except KeyError: - _log("ImportError: Preferred binding '%s' not found." % name) - - if not found_binding: - # If not binding were found, throw this error - raise ImportError("No Qt binding were found.") - - # Install individual members - for name, members in _common_members.items(): - try: - their_submodule = getattr(Qt, "_%s" % name) - except AttributeError: - continue - - our_submodule = getattr(Qt, name) - - # Enable import * - __all__.append(name) - - # Enable direct import of submodule, - # e.g. import Qt.QtCore - sys.modules[__name__ + "." + name] = our_submodule - - for member in members: - # Accept that a submodule may miss certain members. - try: - their_member = getattr(their_submodule, member) - except AttributeError: - _log("'%s.%s' was missing." % (name, member)) - continue - - setattr(our_submodule, member, their_member) - - # Backwards compatibility - if hasattr(Qt.QtCompat, 'loadUi'): - Qt.QtCompat.load_ui = Qt.QtCompat.loadUi - - -_install() - -# Setup Binding Enum states -Qt.IsPySide2 = Qt.__binding__ == 'PySide2' -Qt.IsPyQt5 = Qt.__binding__ == 'PyQt5' -Qt.IsPySide = Qt.__binding__ == 'PySide' -Qt.IsPyQt4 = Qt.__binding__ == 'PyQt4' - -"""Augment QtCompat - -QtCompat contains wrappers and added functionality -to the original bindings, such as the CLI interface -and otherwise incompatible members between bindings, -such as `QHeaderView.setSectionResizeMode`. - -""" - -Qt.QtCompat._cli = _cli -Qt.QtCompat._convert = _convert - -# Enable command-line interface -if __name__ == "__main__": - _cli(sys.argv[1:]) - - -# The MIT License (MIT) -# -# Copyright (c) 2016-2017 Marcus Ottosson -# -# Permission is hereby granted, free of charge, to any person obtaining a copy -# of this software and associated documentation files (the "Software"), to deal -# in the Software without restriction, including without limitation the rights -# to use, copy, modify, merge, publish, distribute, sublicense, and/or sell -# copies of the Software, and to permit persons to whom the Software is -# furnished to do so, subject to the following conditions: -# -# The above copyright notice and this permission notice shall be included in -# all copies or substantial portions of the Software. -# -# THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR -# IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, -# FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE -# AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER -# LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, -# OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE -# SOFTWARE. -# -# In PySide(2), loadUi does not exist, so we implement it -# -# `_UiLoader` is adapted from the qtpy project, which was further influenced -# by qt-helpers which was released under a 3-clause BSD license which in turn -# is based on a solution at: -# -# - https://gist.github.com/cpbotha/1b42a20c8f3eb9bb7cb8 -# -# The License for this code is as follows: -# -# qt-helpers - a common front-end to various Qt modules -# -# Copyright (c) 2015, Chris Beaumont and Thomas Robitaille -# -# All rights reserved. -# -# Redistribution and use in source and binary forms, with or without -# modification, are permitted provided that the following conditions are -# met: -# -# * Redistributions of source code must retain the above copyright -# notice, this list of conditions and the following disclaimer. -# * Redistributions in binary form must reproduce the above copyright -# notice, this list of conditions and the following disclaimer in the -# documentation and/or other materials provided with the -# distribution. -# * Neither the name of the Glue project nor the names of its contributors -# may be used to endorse or promote products derived from this software -# without specific prior written permission. -# -# THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS -# IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, -# THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR -# PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR -# CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, -# EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, -# PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR -# PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF -# LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING -# NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS -# SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. -# -# Which itself was based on the solution at -# -# https://gist.github.com/cpbotha/1b42a20c8f3eb9bb7cb8 -# -# which was released under the MIT license: -# -# Copyright (c) 2011 Sebastian Wiesner -# Modifications by Charl Botha -# -# Permission is hereby granted, free of charge, to any person obtaining a -# copy of this software and associated documentation files -# (the "Software"),to deal in the Software without restriction, -# including without limitation -# the rights to use, copy, modify, merge, publish, distribute, sublicense, -# and/or sell copies of the Software, and to permit persons to whom the -# Software is furnished to do so, subject to the following conditions: -# -# The above copyright notice and this permission notice shall be included -# in all copies or substantial portions of the Software. -# -# THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS -# OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF -# MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. -# IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY -# CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, -# TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE -# SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. From 301cbbccc0e78b29268575c468b2ff475b4896cc Mon Sep 17 00:00:00 2001 From: Gaetan Guidet Date: Wed, 15 Nov 2017 07:22:33 +0900 Subject: [PATCH 049/134] Create BUILD.md Add basic build instructions --- BUILD.md | 62 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 62 insertions(+) create mode 100644 BUILD.md diff --git a/BUILD.md b/BUILD.md new file mode 100644 index 0000000..744fae2 --- /dev/null +++ b/BUILD.md @@ -0,0 +1,62 @@ +# How to build mGear + +## Prerequisites + +Git (of course) + +Python 2.7 + +SCons + +Maya 2014 ~ 2018 (*) + +A C++ compiler: (*) +- gcc on linux +- clang on OSX +- Visual Studio on windows (**) + +(*) Only when building the plugins + +(**) The version should match the one used by the target Maya version + +## Step by step process + +1. Clone the repository and initialize it + +``` +$ git clone https://github.com/miquelcampos/mgear.git +$ git submodule update --init +``` + +2. Checkout the desired branch or tag + +- **develop** : latest developments +- **master** : latest official release +- **RB-x.x** : latest version in x.x series (i.e. 2.2.5 in RB-2.2) + +``` +$ git checkout develop +$ git submodule update +``` + +3. Compile + +The available targets are: +- **mgear_core** : Only mgear python module. +- **mgear_solvers** : Solvers maya plugin. +- **cvwrap** : cvwrap maya plugin. +- **mgear** : everything (*default*) + +``` +$ scons with-maya=2017 +... +(let it cook) +``` + +To show all available build options: + +```$ scons -h``` + + + + From 8c8d3d5fe1caeb6f0a6fa8f8d82cb15c2b909db5 Mon Sep 17 00:00:00 2001 From: miquelcampos Date: Wed, 15 Nov 2017 10:21:49 +0900 Subject: [PATCH 050/134] Adding 2018 linux platform to mGear.mod.in --- mGear.mod.in | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/mGear.mod.in b/mGear.mod.in index 3c900f2..02ee01f 100644 --- a/mGear.mod.in +++ b/mGear.mod.in @@ -64,5 +64,8 @@ scripts: ../../../../scripts + MAYAVERSION:2018 PLATFORM:win64 mGear @MGEAR_MAJMIN_VERSION@ ./platforms/2018/windows/x64 scripts: ../../../../scripts ++ MAYAVERSION:2018 PLATFORM:linux mGear @MGEAR_MAJMIN_VERSION@ ./platforms/2018/linux/x64 +scripts: ../../../../scripts + + MAYAVERSION:2018 PLATFORM:mac mGear @MGEAR_MAJMIN_VERSION@ ./platforms/2018/osx/x64 -scripts: ../../../../scripts \ No newline at end of file +scripts: ../../../../scripts From 7bccdd5e8995192572f6a88672ee0a97c8d6071a Mon Sep 17 00:00:00 2001 From: miquelcampos Date: Wed, 15 Nov 2017 16:18:06 +0900 Subject: [PATCH 051/134] excons update --- excons | 2 +- mGear.mod | 5 ++++- mgear.status | 3 +++ 3 files changed, 8 insertions(+), 2 deletions(-) create mode 100644 mgear.status diff --git a/excons b/excons index 1cb87d3..0dd42d1 160000 --- a/excons +++ b/excons @@ -1 +1 @@ -Subproject commit 1cb87d37f150b9db075fd23a30a85e9c5a2d08a3 +Subproject commit 0dd42d140d68730d8ec17f58a907415e62c749b6 diff --git a/mGear.mod b/mGear.mod index eedfbdf..8847c87 100644 --- a/mGear.mod +++ b/mGear.mod @@ -64,5 +64,8 @@ scripts: ../../../../scripts + MAYAVERSION:2018 PLATFORM:win64 mGear 2.2 ./platforms/2018/windows/x64 scripts: ../../../../scripts ++ MAYAVERSION:2018 PLATFORM:linux mGear 2.2 ./platforms/2018/linux/x64 +scripts: ../../../../scripts + + MAYAVERSION:2018 PLATFORM:mac mGear 2.2 ./platforms/2018/osx/x64 -scripts: ../../../../scripts \ No newline at end of file +scripts: ../../../../scripts diff --git a/mgear.status b/mgear.status new file mode 100644 index 0000000..d7e3ea7 --- /dev/null +++ b/mgear.status @@ -0,0 +1,3 @@ +MGEAR_VERSION [2, 2, 5] +MGEAR_MAJMIN_VERSION 2.2 + From 714ae65d9f51d54e333030543e10b74983314e1f Mon Sep 17 00:00:00 2001 From: Marcus Ottosson Date: Wed, 15 Nov 2017 06:50:48 +0000 Subject: [PATCH 052/134] Initial PEP8 changes --- scripts/mGear_guidesTemplates.py | 65 +++++++------------------------- 1 file changed, 13 insertions(+), 52 deletions(-) diff --git a/scripts/mGear_guidesTemplates.py b/scripts/mGear_guidesTemplates.py index 7673676..edc0ad8 100644 --- a/scripts/mGear_guidesTemplates.py +++ b/scripts/mGear_guidesTemplates.py @@ -1,76 +1,37 @@ -# MGEAR is under the terms of the MIT License - -# Copyright (c) 2016 Jeremie Passerin, Miquel Campos - -# Permission is hereby granted, free of charge, to any person obtaining a copy -# of this software and associated documentation files (the "Software"), to deal -# in the Software without restriction, including without limitation the rights -# to use, copy, modify, merge, publish, distribute, sublicense, and/or sell -# copies of the Software, and to permit persons to whom the Software is -# furnished to do so, subject to the following conditions: - -# The above copyright notice and this permission notice shall be included in all -# copies or substantial portions of the Software. - -# THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR -# IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, -# FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE -# AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER -# LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, -# OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE -# SOFTWARE. - -# Author: Jeremie Passerin geerem@hotmail.com www.jeremiepasserin.com -# Author: Miquel Campos hello@miquel-campos.com www.miquel-campos.com -# Date: 2016 / 10 / 10 - - import os import pymel.core as pm -import mgear -import mgear.maya.shifter.gui as gui -import mgear.maya.shifter as rg -import mgear.maya.shifter.component as comp -import mgear.maya.utils as mutils - +from mgear.maya import shifter, utils +from mgear.maya.shifter import gui, component def guideUI(*args): - """ - Open shifter UI. - """ + """Open shifter UI""" gui.Guide_UI() -@mutils.one_undo + +@utils.one_undo def buildFromSelection(*args): - """ - Build the rig from the guide root selection or a component root. - """ + """Build the rig from the guide root selection or a component root""" gui.Guide_UI.buildFromSelection() def updateGuide(*args): - """ - Update the guide rig. - """ + """Update the guide rig""" if pm.selected(): - rgGuide = rg.RigGuide() + rgGuide = shifter.RigGuide() rgGuide.update(pm.selected()[0]) else: pm.displayWarning("Please select the guide top node") def bipedGuide(*args): - """ - Import the basic biped template. - """ - path = os.path.dirname(comp.__file__) + """Import the basic biped template""" + path = os.path.dirname(component.__file__) pm.importFile(os.path.join(path, "_templates", "biped_guide.ma")) + def quadrupedGuide(*args): - """ - Import the basic quadruped template. - """ - path = os.path.dirname(comp.__file__) + """Import the basic quadruped template""" + path = os.path.dirname(component.__file__) pm.importFile(os.path.join(path, "_templates", "quadruped.ma")) From b9b91968cf233fddbd949084ed496e398b9c447f Mon Sep 17 00:00:00 2001 From: miquelcampos Date: Wed, 15 Nov 2017 16:38:57 +0900 Subject: [PATCH 053/134] cleaning license test --- scripts/mGear_menu.py | 26 -------------------------- 1 file changed, 26 deletions(-) diff --git a/scripts/mGear_menu.py b/scripts/mGear_menu.py index 573df7e..c0d249b 100644 --- a/scripts/mGear_menu.py +++ b/scripts/mGear_menu.py @@ -1,29 +1,3 @@ -# MGEAR is under the terms of the MIT License - -# Copyright (c) 2016 Jeremie Passerin, Miquel Campos - -# Permission is hereby granted, free of charge, to any person obtaining a copy -# of this software and associated documentation files (the "Software"), to deal -# in the Software without restriction, including without limitation the rights -# to use, copy, modify, merge, publish, distribute, sublicense, and/or sell -# copies of the Software, and to permit persons to whom the Software is -# furnished to do so, subject to the following conditions: - -# The above copyright notice and this permission notice shall be included in all -# copies or substantial portions of the Software. - -# THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR -# IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, -# FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE -# AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER -# LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, -# OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE -# SOFTWARE. - -# Author: Jeremie Passerin geerem@hotmail.com www.jeremiepasserin.com -# Author: Miquel Campos hello@miquel-campos.com www.miquel-campos.com -# Date: 2016 / 10 / 10 - import os import sys import subprocess From aefa5c932649944517120a0445412f85a2909190 Mon Sep 17 00:00:00 2001 From: miquelcampos Date: Wed, 15 Nov 2017 22:58:24 +0900 Subject: [PATCH 054/134] PEP8 #100 : shifter initial changes --- scripts/mgear/maya/shifter/__init__.py | 270 +++++++++---------- scripts/mgear/maya/shifter/customStepUI.py | 292 +++++++++++++-------- scripts/mgear/maya/shifter/gameTools.py | 213 ++++++++------- 3 files changed, 408 insertions(+), 367 deletions(-) diff --git a/scripts/mgear/maya/shifter/__init__.py b/scripts/mgear/maya/shifter/__init__.py index b88668b..42516c2 100644 --- a/scripts/mgear/maya/shifter/__init__.py +++ b/scripts/mgear/maya/shifter/__init__.py @@ -1,76 +1,38 @@ -# MGEAR is under the terms of the MIT License - -# Copyright (c) 2016 Jeremie Passerin, Miquel Campos - -# Permission is hereby granted, free of charge, to any person obtaining a copy -# of this software and associated documentation files (the "Software"), to deal -# in the Software without restriction, including without limitation the rights -# to use, copy, modify, merge, publish, distribute, sublicense, and/or sell -# copies of the Software, and to permit persons to whom the Software is -# furnished to do so, subject to the following conditions: - -# The above copyright notice and this permission notice shall be included in all -# copies or substantial portions of the Software. - -# THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR -# IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, -# FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE -# AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER -# LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, -# OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE -# SOFTWARE. - -# Author: Jeremie Passerin geerem@hotmail.com www.jeremiepasserin.com -# Author: Miquel Campos hello@miquel-campos.com www.miquel-campos.com -# Date: 2016 / 10 / 10 - -""" -Shifter base rig class. -""" - - -############################################# -# GLOBAL -############################################# -# Built in import os.path import datetime import getpass # Maya import pymel.core as pm -import pymel.core.datatypes as dt +from pymel.core import datatypes from pymel import versions # mgear import mgear import mgear.maya.utils -from mgear.maya.shifter.guide import RigGuide -from mgear.maya.shifter.guide import helperSlots +from mgear.maya.shifter.guide import RigGuide, helperSlots from mgear.maya.shifter.component import MainComponent -import mgear.maya.primitive as pri -import mgear.maya.icon as ico -import mgear.maya.attribute as att -import mgear.maya.skin as skin -import mgear.maya.dag as dag +from mgear.maya import primitive, attribute, skin, dag + # check if we have loaded the necessary plugins -if not pm.pluginInfo("mgear_solvers", q=True, l=True): +if not pm.pluginInfo("mgear_solvers", q=True, load=True): try: pm.loadPlugin("mgear_solvers") - except: + except RuntimeError: pm.displayError("You need the mgear_solvers plugin!") -if not pm.pluginInfo("matrixNodes", q=True, l=True): +if not pm.pluginInfo("matrixNodes", q=True, load=True): pm.loadPlugin("matrixNodes") - COMPONENT_PATH = os.path.join(os.path.dirname(__file__), "component") TEMPLATE_PATH = os.path.join(COMPONENT_PATH, "templates") -SYNOPTIC_PATH = os.path.abspath(os.path.join(os.path.dirname(__file__), os.pardir, "synoptic","tabs")) +SYNOPTIC_PATH = os.path.abspath(os.path.join( + os.path.dirname(__file__), os.pardir, "synoptic", "tabs")) SHIFTER_COMPONENT_ENV_KEY = "MGEAR_SHIFTER_COMPONENT_PATH" + def getComponentDirectories(): return mgear.maya.utils.gatherCustomModuleDirectories( SHIFTER_COMPONENT_ENV_KEY, @@ -82,7 +44,8 @@ def importComponentGuide(comp_type): defFmt = "mgear.maya.shifter.component.{}.guide" customFmt = "{}.guide" - module = mgear.maya.utils.importFromStandardOrCustomDirectories(dirs, defFmt, customFmt, comp_type) + module = mgear.maya.utils.importFromStandardOrCustomDirectories( + dirs, defFmt, customFmt, comp_type) return module @@ -91,7 +54,8 @@ def importComponent(comp_type): defFmt = "mgear.maya.shifter.component.{}" customFmt = "{}" - module = mgear.maya.utils.importFromStandardOrCustomDirectories(dirs, defFmt, customFmt, comp_type) + module = mgear.maya.utils.importFromStandardOrCustomDirectories( + dirs, defFmt, customFmt, comp_type) return module @@ -100,8 +64,7 @@ def importComponent(comp_type): ########################################################## class Rig(object): - """ - The main rig class. + """The main rig class. Attributes: guide: RigGuide() initialization. @@ -111,6 +74,7 @@ class Rig(object): componentsIndex (list): Components index list. """ + def __init__(self): self.guide = RigGuide() @@ -124,15 +88,12 @@ def __init__(self): self.customStepDic = {} def buildFromSelection(self): - """ - Build the rig from selected guides. + """Build the rig from selected guides. """ startTime = datetime.datetime.now() - mgear.log("= GEAR RIG SYSTEM ==============================================") - - # Get the option first otherwise the change wight might do won't be taken - sel = pm.ls(selection=True) + mgear.log( + "= GEAR RIG SYSTEM ==============================================") # Check guide is valid self.guide.setFromSelection() @@ -144,12 +105,12 @@ def buildFromSelection(self): endTime = datetime.datetime.now() finalTime = endTime - startTime - mgear.log("= GEAR BUILD RIG DONE ================ [ " + str(finalTime) + " ] ======") - + mgear.log( + "= GEAR BUILD RIG DONE ================ [ " + str(finalTime) + + " ] ======") def build(self): - """ - Build the rig. + """Build the rig. """ self.options = self.guide.values @@ -174,7 +135,8 @@ def customStep(self, checker, attr): customSteps = self.options[attr].split(",") for step in customSteps: if not self.stopBuild: - self.stopBuild = helperSlots.runStep(step.split("|")[-1][1:], self.customStepDic) + self.stopBuild = helperSlots.runStep( + step.split("|")[-1][1:], self.customStepDic) else: pm.displayWarning("Build Stopped") break @@ -182,15 +144,13 @@ def customStep(self, checker, attr): def preCustomStep(self): self.customStep("doPreCustomStep", "preCustomStep") - def postCustomStep(self): self.customStep("doPostCustomStep", "postCustomStep") - def initialHierarchy(self): - """ - Build the initial hierarchy of the rig. - Create the rig model, the main properties, and a couple of base organisation nulls. + """Build the initial hierarchy of the rig. + Create the rig model, the main properties, + and a couple of base organisation nulls. Get the global size of the rig. """ @@ -198,52 +158,72 @@ def initialHierarchy(self): # -------------------------------------------------- # Model - self.model = pri.addTransformFromPos(None, self.options["rig_name"]) - att.lockAttribute(self.model) + self.model = primitive.addTransformFromPos( + None, self.options["rig_name"]) + attribute.lockAttribute(self.model) # -------------------------------------------------- # Global Ctl - # self.global_ctl = self.addCtl(self.model, "global_C0_ctl", dt.Matrix(), self.options["C_color_fk"], "crossarrow", w=10) - self.global_ctl = self.addCtl(self.model, "world_ctl", dt.Matrix(), self.options["C_color_fk"], "circle", w=10) - att.setRotOrder(self.global_ctl, "ZXY") + # self.global_ctl = self.addCtl(self.model, "global_C0_ctl", + # datatypes.Matrix(), self.options["C_color_fk"], "crossarrow", w=10) + self.global_ctl = self.addCtl( + self.model, "world_ctl", datatypes.Matrix(), + self.options["C_color_fk"], "circle", w=10) + attribute.setRotOrder(self.global_ctl, "ZXY") # -------------------------------------------------- # Setup in world Space - self.setupWS = pri.addTransformFromPos(self.model, "setup") - att.lockAttribute(self.setupWS) + self.setupWS = primitive.addTransformFromPos(self.model, "setup") + attribute.lockAttribute(self.setupWS) # -------------------------------------------------- # INFOS - self.isRig_att = att.addAttribute(self.model, "is_rig", "bool", True) - self.rigName_att = att.addAttribute(self.model, "rig_name", "string", self.options["rig_name"]) - self.user_att = att.addAttribute(self.model, "user", "string", getpass.getuser()) - self.isWip_att = att.addAttribute(self.model, "wip", "bool", self.options["mode"] != 0) - self.date_att = att.addAttribute(self.model, "date", "string", str(datetime.datetime.now())) - self.mayaVersion_att = att.addAttribute(self.model, "maya_version", "string", str(pm.mel.eval("getApplicationVersionAsFloat"))) - self.gearVersion_att = att.addAttribute(self.model, "gear_version", "string", mgear.getVersion()) - self.synoptic_att = att.addAttribute(self.model, "synoptic", "string", str(self.options["synoptic"])) - self.comments_att = att.addAttribute(self.model, "comments", "string", str(self.options["comments"])) - self.ctlVis_att = att.addAttribute(self.model, "ctl_vis", "bool", True) - self.jntVis_att = att.addAttribute(self.model, "jnt_vis", "bool", True) - - self.qsA_att = att.addAttribute(self.model, "quickselA", "string", "") - self.qsB_att = att.addAttribute(self.model, "quickselB", "string", "") - self.qsC_att = att.addAttribute(self.model, "quickselC", "string", "") - self.qsD_att = att.addAttribute(self.model, "quickselD", "string", "") - self.qsE_att = att.addAttribute(self.model, "quickselE", "string", "") - self.qsF_att = att.addAttribute(self.model, "quickselF", "string", "") - - - self.rigGroups = self.model.addAttr( "rigGroups", at='message', m=1 ) - self.rigPoses = self.model.addAttr( "rigPoses", at='message', m=1 ) + self.isRig_att = attribute.addAttribute( + self.model, "is_rig", "bool", True) + self.rigName_att = attribute.addAttribute( + self.model, "rig_name", "string", self.options["rig_name"]) + self.user_att = attribute.addAttribute( + self.model, "user", "string", getpass.getuser()) + self.isWip_att = attribute.addAttribute( + self.model, "wip", "bool", self.options["mode"] != 0) + self.date_att = attribute.addAttribute( + self.model, "date", "string", str(datetime.datetime.now())) + self.mayaVersion_att = attribute.addAttribute( + self.model, "maya_version", "string", + str(pm.mel.eval("getApplicationVersionAsFloat"))) + self.gearVersion_att = attribute.addAttribute( + self.model, "gear_version", "string", mgear.getVersion()) + self.synoptic_att = attribute.addAttribute( + self.model, "synoptic", "string", str(self.options["synoptic"])) + self.comments_att = attribute.addAttribute( + self.model, "comments", "string", str(self.options["comments"])) + self.ctlVis_att = attribute.addAttribute( + self.model, "ctl_vis", "bool", True) + self.jntVis_att = attribute.addAttribute( + self.model, "jnt_vis", "bool", True) + + self.qsA_att = attribute.addAttribute( + self.model, "quickselA", "string", "") + self.qsB_att = attribute.addAttribute( + self.model, "quickselB", "string", "") + self.qsC_att = attribute.addAttribute( + self.model, "quickselC", "string", "") + self.qsD_att = attribute.addAttribute( + self.model, "quickselD", "string", "") + self.qsE_att = attribute.addAttribute( + self.model, "quickselE", "string", "") + self.qsF_att = attribute.addAttribute( + self.model, "quickselF", "string", "") + + self.rigGroups = self.model.addAttr("rigGroups", at='message', m=1) + self.rigPoses = self.model.addAttr("rigPoses", at='message', m=1) # -------------------------------------------------- # Basic set of null if self.options["joint_rig"]: - self.jnt_org = pri.addTransformFromPos(self.model, "jnt_org") + self.jnt_org = primitive.addTransformFromPos(self.model, "jnt_org") pm.connectAttr(self.jntVis_att, self.jnt_org.attr("visibility")) - def processComponents(self): """ Process the components of the rig, following the creation steps. @@ -254,17 +234,18 @@ def processComponents(self): for comp in self.guide.componentsIndex: guide = self.guides[comp] - mgear.log("Init : "+ guide.fullName + " ("+guide.type+")") + mgear.log("Init : " + guide.fullName + " (" + guide.type + ")") module = importComponent(guide.type) - Component = getattr(module , "Component") + Component = getattr(module, "Component") component = Component(self, guide) if component.fullName not in self.componentsIndex: self.components[component.fullName] = component self.componentsIndex.append(component.fullName) - self.components_infos[component.fullName] = [guide.compType, guide.getVersion(), guide.author] + self.components_infos[component.fullName] = [ + guide.compType, guide.getVersion(), guide.author] # Creation steps self.steps = MainComponent.steps @@ -272,17 +253,15 @@ def processComponents(self): # for count, compName in enumerate(self.componentsIndex): for compName in self.componentsIndex: component = self.components[compName] - mgear.log(name+" : "+ component.fullName + " ("+component.type+")") + mgear.log(name + " : " + component.fullName + + " (" + component.type + ")") component.stepMethods[i]() - if self.options["step"] >= 1 and i >= self.options["step"]-1: + if self.options["step"] >= 1 and i >= self.options["step"] - 1: break - def finalize(self): - """ - Finalize the rig. - """ + """Finalize the rig.""" groupIdx = 0 # Properties -------------------------------------- @@ -304,30 +283,27 @@ def finalize(self): for name, objects in component.subGroups.items(): self.addToSubGroup(objects, name) - - #Create master set to group all the groups - masterSet = pm.sets(n=self.model.name()+"_sets_grp", em=True) + # Create master set to group all the groups + masterSet = pm.sets(n=self.model.name() + "_sets_grp", em=True) pm.connectAttr(masterSet.message, self.model.rigGroups[groupIdx]) groupIdx += 1 # Creating all groups pm.select(cl=True) for name, objects in self.groups.items(): - s = pm.sets(n=self.model.name()+"_"+name+"_grp") - s.union( objects) + s = pm.sets(n=self.model.name() + "_" + name + "_grp") + s.union(objects) pm.connectAttr(s.message, self.model.rigGroups[groupIdx]) groupIdx += 1 masterSet.add(s) for parentGroup, subgroups in self.subGroups.items(): - pg = pm.PyNode(self.model.name()+"_"+parentGroup+"_grp") + pg = pm.PyNode(self.model.name() + "_" + parentGroup + "_grp") for sg in subgroups: - sub = pm.PyNode(self.model.name()+"_"+sg+"_grp") + sub = pm.PyNode(self.model.name() + "_" + sg + "_grp") if sub in masterSet.members(): masterSet.remove(sub) pg.add(sub) - - # Bind pose --------------------------------------- print self.groups["controllers"] pm.select(self.groups["controllers"]) @@ -341,20 +317,21 @@ def finalize(self): pm.displayInfo("Importing Skin") skin.importSkin(self.options["skin"]) - except: - pm.displayWarning("Skin doesn't exist or is not correct. "+self.options["skin"]+" Skipped!") - + except RuntimeError: + pm.displayWarning( + "Skin doesn't exist or is not correct. " + + self.options["skin"] + " Skipped!") def addCtl(self, parent, name, m, color, icon, **kwargs): - """ - Create the control and apply the shape, if this is alrealdy stored + """Create the control and apply the shape, if this is alrealdy stored in the guide controllers grp. Args: parent (dagNode): The control parent name (str): The control name. m (matrix): The transfromation matrix for the control. - color (int or list of float): The color for the control in idex or RGB. + color (int or list of float): The color for the control in index + or RGB. icon (str): The controls default shape. kwargs (variant): Other arguments for the icon type variations. @@ -362,14 +339,14 @@ def addCtl(self, parent, name, m, color, icon, **kwargs): dagNode: The Control. """ - bufferName = name+"_controlBuffer" + bufferName = name + "_controlBuffer" if bufferName in self.guide.controllers.keys(): ctl_ref = self.guide.controllers[bufferName] - ctl = pri.addTransform(parent, name, m) + ctl = primitive.addTransform(parent, name, m) for shape in ctl_ref.getShapes(): ctl.addChild(shape, shape=True, add=True) else: - ctl = ico.create(parent, name, m, color, icon, **kwargs) + ctl = icon.create(parent, name, m, color, icon, **kwargs) self.addToGroup(ctl, "controllers") @@ -377,17 +354,14 @@ def addCtl(self, parent, name, m, color, icon, **kwargs): for oShape in ctl.getShapes(): oShape.isHistoricallyInteresting.set(False) - #set controller tag + # set controller tag if versions.current() >= 201650: pm.controller(ctl) - return ctl - def addToGroup(self, objects, names=["hidden"]): - """ - Add the object in a collection for later group creation. + """Add the object in a collection for later group creation. Args: objects (dagNode or list of dagNode): Object to put in the group. @@ -407,12 +381,13 @@ def addToGroup(self, objects, names=["hidden"]): self.groups[name].extend(objects) def addToSubGroup(self, subGroups, parentGroups=["hidden"]): - """ - Add the object in a collection for later SubGroup creation. + """Add the object in a collection for later SubGroup creation. Args: - subGroups (dagNode or list of dagNode): Groups (maya set) to add as a Subgroup. - namparentGroupses (str or list of str): Names of the parent groups to create. + subGroups (dagNode or list of dagNode): Groups (maya set) to add + as a Subgroup. + namparentGroupses (str or list of str): Names of the parent groups + to create. """ @@ -427,10 +402,8 @@ def addToSubGroup(self, subGroups, parentGroups=["hidden"]): self.subGroups[pg] = [] self.subGroups[pg].extend(subGroups) - def getLocalName(self, guideName): - """ - This function return the local name, cutting the Maya fullname + """This function return the local name, cutting the Maya fullname and taking the latest part. ie. "parentA|parentB|arm_C0_root" will return "arm_C0_root" @@ -447,7 +420,6 @@ def getLocalName(self, guideName): localName = guideName.split("|")[-1] return localName - def getComponentName(self, guideName, local=True): """ This function return the component name @@ -470,8 +442,7 @@ def getComponentName(self, guideName, local=True): return comp_name def getRelativeName(self, guideName): - """ - This function return the name of the relative in the guide + """This function return the name of the relative in the guide ie. "arm_C0_root" return "root" @@ -489,10 +460,8 @@ def getRelativeName(self, guideName): relative_name = "_".join(localName.split("_")[2:]) return relative_name - def findRelative(self, guideName): - """ - Return the objects in the rig matching the guide object. + """Return the objects in the rig matching the guide object. Args: guideName (str): Name of the guide object. @@ -513,10 +482,8 @@ def findRelative(self, guideName): return self.global_ctl return self.components[comp_name].getRelation(relative_name) - def findControlRelative(self, guideName): - """ - Return the control objects in the rig matching the guide object. + """Return the control objects in the rig matching the guide object. Args: guideName (str): Name of the guide object. @@ -540,8 +507,7 @@ def findControlRelative(self, guideName): # TODO: update findComponent and other find methods with new funtions like # comp_name and others. Better composability def findComponent(self, guideName): - """ - Return the component from a guide Name. + """Return the component from a guide Name. Args: guideName (str): Name of the guide object. @@ -562,8 +528,7 @@ def findComponent(self, guideName): return self.components[comp_name] def findUIHost(self, guideName): - """ - Return the UI host of the compoent + """Return the UI host of the compoent Args: guideName (str): Name of the guide object. @@ -583,6 +548,7 @@ def findUIHost(self, guideName): return self.ui if self.components[comp_name].ui is None: - self.components[comp_name].ui = pm.UIHost(self.components[comp_name].root) + self.components[comp_name].ui = pm.UIHost( + self.components[comp_name].root) return self.components[comp_name].ui diff --git a/scripts/mgear/maya/shifter/customStepUI.py b/scripts/mgear/maya/shifter/customStepUI.py index b0ff6da..d53de1d 100644 --- a/scripts/mgear/maya/shifter/customStepUI.py +++ b/scripts/mgear/maya/shifter/customStepUI.py @@ -1,32 +1,7 @@ -# MGEAR is under the terms of the MIT License - -# Copyright (c) 2016 Jeremie Passerin, Miquel Campos - -# Permission is hereby granted, free of charge, to any person obtaining a copy -# of this software and associated documentation files (the "Software"), to deal -# in the Software without restriction, including without limitation the rights -# to use, copy, modify, merge, publish, distribute, sublicense, and/or sell -# copies of the Software, and to permit persons to whom the Software is -# furnished to do so, subject to the following conditions: - -# The above copyright notice and this permission notice shall be included in all -# copies or substantial portions of the Software. - -# THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR -# IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, -# FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE -# AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER -# LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, -# OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE -# SOFTWARE. - -# Author: Jeremie Passerin geerem@hotmail.com www.jeremiepasserin.com -# Author: Miquel Campos hello@miquel-campos.com www.miquel-campos.com -# Date: 2016 / 10 / 10 - import mgear.maya.pyqt as gqt QtGui, QtCore, QtWidgets, wrapInstance = gqt.qt_import() + class Ui_Form(object): def setupUi(self, Form): Form.setObjectName("Form") @@ -45,51 +20,85 @@ def setupUi(self, Form): self.preCustomStep_checkBox.setObjectName("preCustomStep_checkBox") self.verticalLayout.addWidget(self.preCustomStep_checkBox) self.preCustomStep_horizontalLayout = QtWidgets.QHBoxLayout() - self.preCustomStep_horizontalLayout.setObjectName("preCustomStep_horizontalLayout") + self.preCustomStep_horizontalLayout.setObjectName( + "preCustomStep_horizontalLayout") self.preCustomStep_verticalLayout_1 = QtWidgets.QVBoxLayout() - self.preCustomStep_verticalLayout_1.setObjectName("preCustomStep_verticalLayout_1") + self.preCustomStep_verticalLayout_1.setObjectName( + "preCustomStep_verticalLayout_1") self.preCustomStep_listWidget = QtWidgets.QListWidget(self.groupBox) self.preCustomStep_listWidget.setDragDropOverwriteMode(True) - self.preCustomStep_listWidget.setDragDropMode(QtWidgets.QAbstractItemView.InternalMove) - self.preCustomStep_listWidget.setDefaultDropAction(QtCore.Qt.MoveAction) + self.preCustomStep_listWidget.setDragDropMode( + QtWidgets.QAbstractItemView.InternalMove) + self.preCustomStep_listWidget.setDefaultDropAction( + QtCore.Qt.MoveAction) self.preCustomStep_listWidget.setAlternatingRowColors(True) - self.preCustomStep_listWidget.setSelectionMode(QtWidgets.QAbstractItemView.ExtendedSelection) + self.preCustomStep_listWidget.setSelectionMode( + QtWidgets.QAbstractItemView.ExtendedSelection) self.preCustomStep_listWidget.setProperty("isWrapping", False) self.preCustomStep_listWidget.setViewMode(QtWidgets.QListView.ListMode) self.preCustomStep_listWidget.setObjectName("preCustomStep_listWidget") - self.preCustomStep_verticalLayout_1.addWidget(self.preCustomStep_listWidget) - self.preCustomStep_horizontalLayout.addLayout(self.preCustomStep_verticalLayout_1) + self.preCustomStep_verticalLayout_1.addWidget( + self.preCustomStep_listWidget) + self.preCustomStep_horizontalLayout.addLayout( + self.preCustomStep_verticalLayout_1) self.preCustomStep_verticalLayout_2 = QtWidgets.QVBoxLayout() - self.preCustomStep_verticalLayout_2.setObjectName("preCustomStep_verticalLayout_2") + self.preCustomStep_verticalLayout_2.setObjectName( + "preCustomStep_verticalLayout_2") self.preCustomStepAdd_pushButton = QtWidgets.QPushButton(self.groupBox) - self.preCustomStepAdd_pushButton.setObjectName("preCustomStepAdd_pushButton") - self.preCustomStep_verticalLayout_2.addWidget(self.preCustomStepAdd_pushButton) + self.preCustomStepAdd_pushButton.setObjectName( + "preCustomStepAdd_pushButton") + self.preCustomStep_verticalLayout_2.addWidget( + self.preCustomStepAdd_pushButton) self.preCustomStepNew_pushButton = QtWidgets.QPushButton(self.groupBox) - self.preCustomStepNew_pushButton.setObjectName("preCustomStepNew_pushButton") - self.preCustomStep_verticalLayout_2.addWidget(self.preCustomStepNew_pushButton) - spacerItem = QtWidgets.QSpacerItem(20, 40, QtWidgets.QSizePolicy.Minimum, QtWidgets.QSizePolicy.Expanding) + self.preCustomStepNew_pushButton.setObjectName( + "preCustomStepNew_pushButton") + self.preCustomStep_verticalLayout_2.addWidget( + self.preCustomStepNew_pushButton) + spacerItem = QtWidgets.QSpacerItem( + 20, 40, QtWidgets.QSizePolicy.Minimum, + QtWidgets.QSizePolicy.Expanding) self.preCustomStep_verticalLayout_2.addItem(spacerItem) - self.preCustomStepDuplicate_pushButton = QtWidgets.QPushButton(self.groupBox) - self.preCustomStepDuplicate_pushButton.setObjectName("preCustomStepDuplicate_pushButton") - self.preCustomStep_verticalLayout_2.addWidget(self.preCustomStepDuplicate_pushButton) - self.preCustomStepRemove_pushButton = QtWidgets.QPushButton(self.groupBox) - self.preCustomStepRemove_pushButton.setObjectName("preCustomStepRemove_pushButton") - self.preCustomStep_verticalLayout_2.addWidget(self.preCustomStepRemove_pushButton) + self.preCustomStepDuplicate_pushButton = QtWidgets.QPushButton( + self.groupBox) + self.preCustomStepDuplicate_pushButton.setObjectName( + "preCustomStepDuplicate_pushButton") + self.preCustomStep_verticalLayout_2.addWidget( + self.preCustomStepDuplicate_pushButton) + self.preCustomStepRemove_pushButton = QtWidgets.QPushButton( + self.groupBox) + self.preCustomStepRemove_pushButton.setObjectName( + "preCustomStepRemove_pushButton") + self.preCustomStep_verticalLayout_2.addWidget( + self.preCustomStepRemove_pushButton) self.preCustomStepRun_pushButton = QtWidgets.QPushButton(self.groupBox) - self.preCustomStepRun_pushButton.setObjectName("preCustomStepRun_pushButton") - self.preCustomStep_verticalLayout_2.addWidget(self.preCustomStepRun_pushButton) - self.preCustomStepEdit_pushButton = QtWidgets.QPushButton(self.groupBox) - self.preCustomStepEdit_pushButton.setObjectName("preCustomStepEdit_pushButton") - self.preCustomStep_verticalLayout_2.addWidget(self.preCustomStepEdit_pushButton) - self.preCustomStepExport_pushButton = QtWidgets.QPushButton(self.groupBox) - self.preCustomStepExport_pushButton.setObjectName("preCustomStepExport_pushButton") - self.preCustomStep_verticalLayout_2.addWidget(self.preCustomStepExport_pushButton) - self.preCustomStepImport_pushButton = QtWidgets.QPushButton(self.groupBox) - self.preCustomStepImport_pushButton.setObjectName("preCustomStepImport_pushButton") - self.preCustomStep_verticalLayout_2.addWidget(self.preCustomStepImport_pushButton) - spacerItem1 = QtWidgets.QSpacerItem(20, 40, QtWidgets.QSizePolicy.Minimum, QtWidgets.QSizePolicy.Expanding) + self.preCustomStepRun_pushButton.setObjectName( + "preCustomStepRun_pushButton") + self.preCustomStep_verticalLayout_2.addWidget( + self.preCustomStepRun_pushButton) + self.preCustomStepEdit_pushButton = QtWidgets.QPushButton( + self.groupBox) + self.preCustomStepEdit_pushButton.setObjectName( + "preCustomStepEdit_pushButton") + self.preCustomStep_verticalLayout_2.addWidget( + self.preCustomStepEdit_pushButton) + self.preCustomStepExport_pushButton = QtWidgets.QPushButton( + self.groupBox) + self.preCustomStepExport_pushButton.setObjectName( + "preCustomStepExport_pushButton") + self.preCustomStep_verticalLayout_2.addWidget( + self.preCustomStepExport_pushButton) + self.preCustomStepImport_pushButton = QtWidgets.QPushButton( + self.groupBox) + self.preCustomStepImport_pushButton.setObjectName( + "preCustomStepImport_pushButton") + self.preCustomStep_verticalLayout_2.addWidget( + self.preCustomStepImport_pushButton) + spacerItem1 = QtWidgets.QSpacerItem( + 20, 40, QtWidgets.QSizePolicy.Minimum, + QtWidgets.QSizePolicy.Expanding) self.preCustomStep_verticalLayout_2.addItem(spacerItem1) - self.preCustomStep_horizontalLayout.addLayout(self.preCustomStep_verticalLayout_2) + self.preCustomStep_horizontalLayout.addLayout( + self.preCustomStep_verticalLayout_2) self.verticalLayout.addLayout(self.preCustomStep_horizontalLayout) self.verticalLayout_3.addLayout(self.verticalLayout) self.line = QtWidgets.QFrame(self.groupBox) @@ -105,50 +114,87 @@ def setupUi(self, Form): self.postCustomStep_checkBox.setObjectName("postCustomStep_checkBox") self.verticalLayout_2.addWidget(self.postCustomStep_checkBox) self.preCustomStep_horizontalLayout_2 = QtWidgets.QHBoxLayout() - self.preCustomStep_horizontalLayout_2.setObjectName("preCustomStep_horizontalLayout_2") + self.preCustomStep_horizontalLayout_2.setObjectName( + "preCustomStep_horizontalLayout_2") self.preCustomStep_verticalLayout_3 = QtWidgets.QVBoxLayout() - self.preCustomStep_verticalLayout_3.setObjectName("preCustomStep_verticalLayout_3") + self.preCustomStep_verticalLayout_3.setObjectName( + "preCustomStep_verticalLayout_3") self.postCustomStep_listWidget = QtWidgets.QListWidget(self.groupBox) self.postCustomStep_listWidget.setDragDropOverwriteMode(True) - self.postCustomStep_listWidget.setDragDropMode(QtWidgets.QAbstractItemView.InternalMove) - self.postCustomStep_listWidget.setDefaultDropAction(QtCore.Qt.MoveAction) + self.postCustomStep_listWidget.setDragDropMode( + QtWidgets.QAbstractItemView.InternalMove) + self.postCustomStep_listWidget.setDefaultDropAction( + QtCore.Qt.MoveAction) self.postCustomStep_listWidget.setAlternatingRowColors(True) - self.postCustomStep_listWidget.setSelectionMode(QtWidgets.QAbstractItemView.ExtendedSelection) - self.postCustomStep_listWidget.setViewMode(QtWidgets.QListView.ListMode) + self.postCustomStep_listWidget.setSelectionMode( + QtWidgets.QAbstractItemView.ExtendedSelection) + self.postCustomStep_listWidget.setViewMode( + QtWidgets.QListView.ListMode) self.postCustomStep_listWidget.setWordWrap(False) self.postCustomStep_listWidget.setSelectionRectVisible(False) - self.postCustomStep_listWidget.setObjectName("postCustomStep_listWidget") - self.preCustomStep_verticalLayout_3.addWidget(self.postCustomStep_listWidget) - self.preCustomStep_horizontalLayout_2.addLayout(self.preCustomStep_verticalLayout_3) + self.postCustomStep_listWidget.setObjectName( + "postCustomStep_listWidget") + self.preCustomStep_verticalLayout_3.addWidget( + self.postCustomStep_listWidget) + self.preCustomStep_horizontalLayout_2.addLayout( + self.preCustomStep_verticalLayout_3) self.preCustomStep_verticalLayout_4 = QtWidgets.QVBoxLayout() - self.preCustomStep_verticalLayout_4.setObjectName("preCustomStep_verticalLayout_4") - self.postCustomStepAdd_pushButton = QtWidgets.QPushButton(self.groupBox) - self.postCustomStepAdd_pushButton.setObjectName("postCustomStepAdd_pushButton") - self.preCustomStep_verticalLayout_4.addWidget(self.postCustomStepAdd_pushButton) - self.postCustomStepNew_pushButton = QtWidgets.QPushButton(self.groupBox) - self.postCustomStepNew_pushButton.setObjectName("postCustomStepNew_pushButton") - self.preCustomStep_verticalLayout_4.addWidget(self.postCustomStepNew_pushButton) - self.postCustomStepDuplicate_pushButton = QtWidgets.QPushButton(self.groupBox) - self.postCustomStepDuplicate_pushButton.setObjectName("postCustomStepDuplicate_pushButton") - self.preCustomStep_verticalLayout_4.addWidget(self.postCustomStepDuplicate_pushButton) - self.postCustomStepRemove_pushButton = QtWidgets.QPushButton(self.groupBox) - self.postCustomStepRemove_pushButton.setObjectName("postCustomStepRemove_pushButton") - self.preCustomStep_verticalLayout_4.addWidget(self.postCustomStepRemove_pushButton) - self.postCustomStepRun_pushButton = QtWidgets.QPushButton(self.groupBox) - self.postCustomStepRun_pushButton.setObjectName("postCustomStepRun_pushButton") - self.preCustomStep_verticalLayout_4.addWidget(self.postCustomStepRun_pushButton) - self.postCustomStepEdit_pushButton = QtWidgets.QPushButton(self.groupBox) - self.postCustomStepEdit_pushButton.setObjectName("postCustomStepEdit_pushButton") - self.preCustomStep_verticalLayout_4.addWidget(self.postCustomStepEdit_pushButton) - self.postCustomStepExport_pushButton = QtWidgets.QPushButton(self.groupBox) - self.postCustomStepExport_pushButton.setObjectName("postCustomStepExport_pushButton") - self.preCustomStep_verticalLayout_4.addWidget(self.postCustomStepExport_pushButton) - self.postCustomStepImport_pushButton = QtWidgets.QPushButton(self.groupBox) - self.postCustomStepImport_pushButton.setObjectName("postCustomStepImport_pushButton") - self.preCustomStep_verticalLayout_4.addWidget(self.postCustomStepImport_pushButton) - spacerItem2 = QtWidgets.QSpacerItem(20, 40, QtWidgets.QSizePolicy.Minimum, QtWidgets.QSizePolicy.Expanding) + self.preCustomStep_verticalLayout_4.setObjectName( + "preCustomStep_verticalLayout_4") + self.postCustomStepAdd_pushButton = QtWidgets.QPushButton( + self.groupBox) + self.postCustomStepAdd_pushButton.setObjectName( + "postCustomStepAdd_pushButton") + self.preCustomStep_verticalLayout_4.addWidget( + self.postCustomStepAdd_pushButton) + self.postCustomStepNew_pushButton = QtWidgets.QPushButton( + self.groupBox) + self.postCustomStepNew_pushButton.setObjectName( + "postCustomStepNew_pushButton") + self.preCustomStep_verticalLayout_4.addWidget( + self.postCustomStepNew_pushButton) + self.postCustomStepDuplicate_pushButton = QtWidgets.QPushButton( + self.groupBox) + self.postCustomStepDuplicate_pushButton.setObjectName( + "postCustomStepDuplicate_pushButton") + self.preCustomStep_verticalLayout_4.addWidget( + self.postCustomStepDuplicate_pushButton) + self.postCustomStepRemove_pushButton = QtWidgets.QPushButton( + self.groupBox) + self.postCustomStepRemove_pushButton.setObjectName( + "postCustomStepRemove_pushButton") + self.preCustomStep_verticalLayout_4.addWidget( + self.postCustomStepRemove_pushButton) + self.postCustomStepRun_pushButton = QtWidgets.QPushButton( + self.groupBox) + self.postCustomStepRun_pushButton.setObjectName( + "postCustomStepRun_pushButton") + self.preCustomStep_verticalLayout_4.addWidget( + self.postCustomStepRun_pushButton) + self.postCustomStepEdit_pushButton = QtWidgets.QPushButton( + self.groupBox) + self.postCustomStepEdit_pushButton.setObjectName( + "postCustomStepEdit_pushButton") + self.preCustomStep_verticalLayout_4.addWidget( + self.postCustomStepEdit_pushButton) + self.postCustomStepExport_pushButton = QtWidgets.QPushButton( + self.groupBox) + self.postCustomStepExport_pushButton.setObjectName( + "postCustomStepExport_pushButton") + self.preCustomStep_verticalLayout_4.addWidget( + self.postCustomStepExport_pushButton) + self.postCustomStepImport_pushButton = QtWidgets.QPushButton( + self.groupBox) + self.postCustomStepImport_pushButton.setObjectName( + "postCustomStepImport_pushButton") + self.preCustomStep_verticalLayout_4.addWidget( + self.postCustomStepImport_pushButton) + spacerItem2 = QtWidgets.QSpacerItem( + 20, 40, QtWidgets.QSizePolicy.Minimum, + QtWidgets.QSizePolicy.Expanding) self.preCustomStep_verticalLayout_4.addItem(spacerItem2) - self.preCustomStep_horizontalLayout_2.addLayout(self.preCustomStep_verticalLayout_4) + self.preCustomStep_horizontalLayout_2.addLayout( + self.preCustomStep_verticalLayout_4) self.verticalLayout_2.addLayout(self.preCustomStep_horizontalLayout_2) self.verticalLayout_3.addLayout(self.verticalLayout_2) self.gridLayout_2.addLayout(self.verticalLayout_3, 0, 0, 1, 1) @@ -159,23 +205,41 @@ def setupUi(self, Form): def retranslateUi(self, Form): Form.setWindowTitle(gqt.fakeTranslate("Form", "Form", None, -1)) - self.groupBox.setTitle(gqt.fakeTranslate("Form", "Custom Steps", None, -1)) - self.preCustomStep_checkBox.setText(gqt.fakeTranslate("Form", "Pre Custom Step", None, -1)) - self.preCustomStepAdd_pushButton.setText(gqt.fakeTranslate("Form", "Add", None, -1)) - self.preCustomStepNew_pushButton.setText(gqt.fakeTranslate("Form", "New", None, -1)) - self.preCustomStepDuplicate_pushButton.setText(gqt.fakeTranslate("Form", "Duplicate", None, -1)) - self.preCustomStepRemove_pushButton.setText(gqt.fakeTranslate("Form", "Remove", None, -1)) - self.preCustomStepRun_pushButton.setText(gqt.fakeTranslate("Form", "Run Sel.", None, -1)) - self.preCustomStepEdit_pushButton.setText(gqt.fakeTranslate("Form", "Edit", None, -1)) - self.preCustomStepExport_pushButton.setText(gqt.fakeTranslate("Form", "Export", None, -1)) - self.preCustomStepImport_pushButton.setText(gqt.fakeTranslate("Form", "Import", None, -1)) - self.postCustomStep_checkBox.setText(gqt.fakeTranslate("Form", "Post Custom Step", None, -1)) - self.postCustomStepAdd_pushButton.setText(gqt.fakeTranslate("Form", "Add", None, -1)) - self.postCustomStepNew_pushButton.setText(gqt.fakeTranslate("Form", "New", None, -1)) - self.postCustomStepDuplicate_pushButton.setText(gqt.fakeTranslate("Form", "Duplicate", None, -1)) - self.postCustomStepRemove_pushButton.setText(gqt.fakeTranslate("Form", "Remove", None, -1)) - self.postCustomStepRun_pushButton.setText(gqt.fakeTranslate("Form", "Run Sel.", None, -1)) - self.postCustomStepEdit_pushButton.setText(gqt.fakeTranslate("Form", "Edit", None, -1)) - self.postCustomStepExport_pushButton.setText(gqt.fakeTranslate("Form", "Export", None, -1)) - self.postCustomStepImport_pushButton.setText(gqt.fakeTranslate("Form", "Import", None, -1)) - + self.groupBox.setTitle(gqt.fakeTranslate( + "Form", "Custom Steps", None, -1)) + self.preCustomStep_checkBox.setText( + gqt.fakeTranslate("Form", "Pre Custom Step", None, -1)) + self.preCustomStepAdd_pushButton.setText( + gqt.fakeTranslate("Form", "Add", None, -1)) + self.preCustomStepNew_pushButton.setText( + gqt.fakeTranslate("Form", "New", None, -1)) + self.preCustomStepDuplicate_pushButton.setText( + gqt.fakeTranslate("Form", "Duplicate", None, -1)) + self.preCustomStepRemove_pushButton.setText( + gqt.fakeTranslate("Form", "Remove", None, -1)) + self.preCustomStepRun_pushButton.setText( + gqt.fakeTranslate("Form", "Run Sel.", None, -1)) + self.preCustomStepEdit_pushButton.setText( + gqt.fakeTranslate("Form", "Edit", None, -1)) + self.preCustomStepExport_pushButton.setText( + gqt.fakeTranslate("Form", "Export", None, -1)) + self.preCustomStepImport_pushButton.setText( + gqt.fakeTranslate("Form", "Import", None, -1)) + self.postCustomStep_checkBox.setText( + gqt.fakeTranslate("Form", "Post Custom Step", None, -1)) + self.postCustomStepAdd_pushButton.setText( + gqt.fakeTranslate("Form", "Add", None, -1)) + self.postCustomStepNew_pushButton.setText( + gqt.fakeTranslate("Form", "New", None, -1)) + self.postCustomStepDuplicate_pushButton.setText( + gqt.fakeTranslate("Form", "Duplicate", None, -1)) + self.postCustomStepRemove_pushButton.setText( + gqt.fakeTranslate("Form", "Remove", None, -1)) + self.postCustomStepRun_pushButton.setText( + gqt.fakeTranslate("Form", "Run Sel.", None, -1)) + self.postCustomStepEdit_pushButton.setText( + gqt.fakeTranslate("Form", "Edit", None, -1)) + self.postCustomStepExport_pushButton.setText( + gqt.fakeTranslate("Form", "Export", None, -1)) + self.postCustomStepImport_pushButton.setText( + gqt.fakeTranslate("Form", "Import", None, -1)) diff --git a/scripts/mgear/maya/shifter/gameTools.py b/scripts/mgear/maya/shifter/gameTools.py index 235c1ba..8563a09 100644 --- a/scripts/mgear/maya/shifter/gameTools.py +++ b/scripts/mgear/maya/shifter/gameTools.py @@ -1,30 +1,3 @@ -# MGEAR is under the terms of the MIT License - -# Copyright (c) 2016 Jeremie Passerin, Miquel Campos - -# Permission is hereby granted, free of charge, to any person obtaining a copy -# of this software and associated documentation files (the "Software"), to deal -# in the Software without restriction, including without limitation the rights -# to use, copy, modify, merge, publish, distribute, sublicense, and/or sell -# copies of the Software, and to permit persons to whom the Software is -# furnished to do so, subject to the following conditions: - -# The above copyright notice and this permission notice shall be included in all -# copies or substantial portions of the Software. - -# THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR -# IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, -# FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE -# AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER -# LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, -# OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE -# SOFTWARE. - -# Author: Jeremie Passerin www.jeremiepasserin.com -# Author: Miquel Campos www.miquel-campos.com -# Date: 2016 / 10 / 10 - - import pymel.core as pm import json from functools import partial @@ -38,68 +11,77 @@ from maya.app.general.mayaMixin import MayaQWidgetDockableMixin import mgear.maya.pyqt as gqt -from mgear.vendor.Qt import QtCore, QtWidgets +from mgear.vendor.Qt import QtCore, QtWidgets @mutils.one_undo def disconnect(cnxDict): for i, jnt in enumerate(cnxDict["joints"]): - # we don't need to disconnect blended joint since the connection is from other joints + # we don't need to disconnect blended joint since the connection is + # from other joints if not jnt.startswith("blend_"): oJnt = pm.PyNode(jnt) - for e, plug in enumerate([ oJnt.translate, oJnt.rotate, oJnt.scale, - oJnt.scale.scaleX, oJnt.scale.scaleY, - oJnt.scale.scaleZ, oJnt.shear]): + for e, plug in enumerate([oJnt.translate, oJnt.rotate, oJnt.scale, + oJnt.scale.scaleX, oJnt.scale.scaleY, + oJnt.scale.scaleZ, oJnt.shear]): if cnxDict["attrs"][i][e]: - pm.disconnectAttr( cnxDict["attrs"][i][e], plug) + pm.disconnectAttr(cnxDict["attrs"][i][e], plug) if cnxDict["attrs"][i][7]: - pm.disconnectAttr(oJnt.parentInverseMatrix[0], cnxDict["attrs"][i][7] ) + pm.disconnectAttr( + oJnt.parentInverseMatrix[0], cnxDict["attrs"][i][7]) def connect(cnxDict, nsRig=None, nsSkin=None): for i, jnt in enumerate(cnxDict["joints"]): try: if nsSkin: - oJnt = pm.PyNode(nsSkin+":"+jnt) + oJnt = pm.PyNode(nsSkin + ":" + jnt) else: oJnt = pm.PyNode(jnt) - for e, plug in enumerate([ oJnt.translate, oJnt.rotate, oJnt.scale, - oJnt.scale.scaleX, oJnt.scale.scaleY, - oJnt.scale.scaleZ, oJnt.shear]): + for e, plug in enumerate([oJnt.translate, oJnt.rotate, oJnt.scale, + oJnt.scale.scaleX, oJnt.scale.scaleY, + oJnt.scale.scaleZ, oJnt.shear]): if cnxDict["attrs"][i][e]: if nsRig: - pm.connectAttr(nsRig+":"+ cnxDict["attrs"][i][e],plug, f=True) + pm.connectAttr( + nsRig + ":" + cnxDict["attrs"][i][e], plug, f=True) else: - pm.connectAttr(cnxDict["attrs"][i][e],plug, f=True) + pm.connectAttr(cnxDict["attrs"][i][e], plug, f=True) if cnxDict["attrs"][i][7]: if nsRig: - pm.connectAttr(oJnt.parentInverseMatrix[0], nsRig+":"+ cnxDict["attrs"][i][7], f=True) + pm.connectAttr( + oJnt.parentInverseMatrix[0], nsRig + ":" + + cnxDict["attrs"][i][7], f=True) else: - pm.connectAttr(oJnt.parentInverseMatrix[0], cnxDict["attrs"][i][7], f=True) + pm.connectAttr( + oJnt.parentInverseMatrix[0], + cnxDict["attrs"][i][7], + f=True) - except: + except Exception: pm.displayError("{} is not found in the scene".format(jnt)) def connectCns(cnxDict, nsRig=None, nsSkin=None): for i, jnt in enumerate(cnxDict["joints"]): if nsSkin: - oJnt = pm.PyNode(nsSkin+":"+jnt) + oJnt = pm.PyNode(nsSkin + ":" + jnt) else: oJnt = pm.PyNode(jnt) if cnxDict["attrs"][i][0]: if nsRig: - oAttr = pm.PyNode(nsRig+":"+ cnxDict["attrs"][i][0]) + oAttr = pm.PyNode(nsRig + ":" + cnxDict["attrs"][i][0]) else: - oAttr = pm.PyNode( cnxDict["attrs"][i][0]) + oAttr = pm.PyNode(cnxDict["attrs"][i][0]) oNode = oAttr.node() - oTrans = pm.listConnections(pm.listConnections(oNode.inputMatrix)[0].matrixIn[0]) - pm.parentConstraint(oTrans,oJnt, mo=True) - pm.scaleConstraint(oTrans,oJnt, mo=True) + oTrans = pm.listConnections( + pm.listConnections(oNode.inputMatrix)[0].matrixIn[0]) + pm.parentConstraint(oTrans, oJnt, mo=True) + pm.scaleConstraint(oTrans, oJnt, mo=True) def exportConnections(source=None, filePath=None, disc=False): @@ -111,16 +93,25 @@ def exportConnections(source=None, filePath=None, disc=False): for x in source: if not x.name().startswith("blend_"): connections["joints"].append(x.name()) - trans_attr = pm.listConnections(x.translate, p=True, type="decomposeMatrix") - rot_attr = pm.listConnections(x.rotate, p=True, type="decomposeMatrix") - scl_attr = pm.listConnections(x.scale, p=True, type="decomposeMatrix") - sclX_attr = pm.listConnections(x.scale.scaleX, p=True, type="decomposeMatrix") - sclY_attr = pm.listConnections(x.scale.scaleY, p=True, type="decomposeMatrix") - sclZ_attr = pm.listConnections(x.scale.scaleZ, p=True, type="decomposeMatrix") - shear_attr = pm.listConnections(x.shear, p=True, type="decomposeMatrix") - parentInv_attr = pm.listConnections(x.parentInverseMatrix[0], d=True, p=True) - - attrs_list = [trans_attr, rot_attr, scl_attr, sclX_attr, sclY_attr, sclZ_attr, shear_attr, parentInv_attr] + trans_attr = pm.listConnections( + x.translate, p=True, type="decomposeMatrix") + rot_attr = pm.listConnections( + x.rotate, p=True, type="decomposeMatrix") + scl_attr = pm.listConnections( + x.scale, p=True, type="decomposeMatrix") + sclX_attr = pm.listConnections( + x.scale.scaleX, p=True, type="decomposeMatrix") + sclY_attr = pm.listConnections( + x.scale.scaleY, p=True, type="decomposeMatrix") + sclZ_attr = pm.listConnections( + x.scale.scaleZ, p=True, type="decomposeMatrix") + shear_attr = pm.listConnections( + x.shear, p=True, type="decomposeMatrix") + parentInv_attr = pm.listConnections( + x.parentInverseMatrix[0], d=True, p=True) + + attrs_list = [trans_attr, rot_attr, scl_attr, sclX_attr, + sclY_attr, sclZ_attr, shear_attr, parentInv_attr] attrs_list_checked = [] for at in attrs_list: if at: @@ -128,13 +119,13 @@ def exportConnections(source=None, filePath=None, disc=False): else: attrs_list_checked.append(None) - connections["attrs"].append(attrs_list_checked) data_string = json.dumps(connections, indent=4, sort_keys=True) if not filePath: filePath = pm.fileDialog2(dialogStyle=2, fileMode=0, - fileFilter=' Shifter joint cnx maya matrix .jmm (*%s)' %".jmm") + fileFilter=' Shifter joint cnx maya matrix' + ' .jmm (*%s)' % ".jmm") if not filePath: return if not isinstance(filePath, basestring): @@ -148,12 +139,13 @@ def exportConnections(source=None, filePath=None, disc=False): disconnect(connections) - def importConnections(filePath=None, nsRig=None, nsSkin=None, useMtx=True): if not filePath: startDir = pm.workspace(q=True, rootDirectory=True) - filePath = pm.fileDialog2( dialogStyle=2, fileMode=1, startingDirectory=startDir, - fileFilter=' Shifter joint cnx maya matrix .jmm (*%s)' %".jmm") + filePath = pm.fileDialog2(dialogStyle=2, fileMode=1, + startingDirectory=startDir, + fileFilter=' Shifter joint cnx maya matrix ' + ' .jmm (*%s)' % ".jmm") if not filePath: return if not isinstance(filePath, basestring): @@ -166,17 +158,21 @@ def importConnections(filePath=None, nsRig=None, nsSkin=None, useMtx=True): else: connectCns(configDict, nsRig=nsRig, nsSkin=nsSkin) + def getRigTopNode(node=None): if not node and pm.selected(): - node=pm.selected()[0] + node = pm.selected()[0] if not node.hasAttr("is_rig"): - pm.displayWarning("Please select a valid rig top node!. '{}' is not a rig top node".format(node.name())) + pm.displayWarning( + "Please select a valid rig top node!. '{}' " + "is not a rig top node".format(node.name())) return False return node.name() else: pm.displayWarning("Please select a rig top node!") return False + def runScript(path=None): if path: execfile(path) @@ -187,61 +183,65 @@ def exportAssetAssembly(name, rigTopNode, meshTopNode, path, postScript=None): if pm.ls(rigTopNode): rigTopNode = pm.PyNode(rigTopNode) else: - pm.displayError("{} doesn't exist or duplicated. Please check your scene".format(rigTopNode)) + pm.displayError( + "{} doesn't exist or duplicated. Please check your " + "scene".format(rigTopNode)) return if pm.ls(meshTopNode): meshTopNode = pm.PyNode(meshTopNode) else: - pm.displayError("{} doesn't exist or duplicated. Please check your scene".format(meshTopNode)) + pm.displayError( + "{} doesn't exist or duplicated. Please check " + "your scene".format(meshTopNode)) return # check the folder and script # if the target name exist abort and request another name deformer_jnts = rigTopNode.rigGroups[3].connections()[0].members() if not deformer_jnts: - pm.displayError("{} is empty. The tool can't find any joint".format(meshTopNode)) - + pm.displayError( + "{} is empty. The tool can't find any joint".format(meshTopNode)) # export connections and cut joint connections # cut al possible remaining connection and adjust hierarchy - - - #pot script + # pot script if postScript: try: execfile(postScript) except Exception as ex: - template = "An exception of type {0} occured. Arguments:\n{1!r}" - message = template.format(type(ex).__name__, ex.args) - pm.displayError( message) - cont = pm.confirmBox( "FAIL: Script Fail", - "Do you want to export anyway?" + "\n\n" + message + "\n\n" + traceback.format_exc(), - "Continue", "Cancel") - if not cont: - pm.undo() - return + template = "An exception of type {0} occured. Arguments:\n{1!r}" + message = template.format(type(ex).__name__, ex.args) + pm.displayError(message) + cont = pm.confirmBox("FAIL: Script Fail", + "Do you want to export anyway?" + "\n\n" + + message + "\n\n" + traceback.format_exc(), + "Continue", "Cancel") + if not cont: + pm.undo() + return # export rig model # export mesh and joints - def _importAssetAssembly(paht=None, reference=False): return + def importAssetAssembly(path=None): return + def referenceAssetAssembly(path=None): return #################################### -## Soft tweaks Manager dialog +# Soft tweaks Manager dialog #################################### class gameToolsUI(QtWidgets.QDialog, gtUI.Ui_gameTools): @@ -250,11 +250,12 @@ def __init__(self, parent=None): super(gameToolsUI, self).__init__(parent) self.setupUi(self) + class gameTools(MayaQWidgetDockableMixin, QtWidgets.QDialog): def __init__(self, parent=None): self.toolName = "shifterGameTools" - super(self.__class__, self).__init__(parent = parent) + super(self.__class__, self).__init__(parent=parent) self.gtUIInst = gameToolsUI() self.startDir = pm.workspace(q=True, rootDirectory=True) @@ -279,7 +280,6 @@ def gameTools_layout(self): self.setLayout(self.gt_layout) - # Slots @staticmethod def _validCharacters(lEdit): @@ -293,25 +293,26 @@ def populateRigTopNode(self): def populateMeshTopNode(self): if pm.selected(): - node=pm.selected()[0] + node = pm.selected()[0] self.gtUIInst.meshNode_lineEdit.setText(node.name()) else: pm.displayWarning("Please select a Mesh top node!") return False def populateOutputFolder(self): - filePath = pm.fileDialog2( dialogStyle=2, fileMode=2, startingDirectory=self.startDir, - fileFilter=' Shifter Game Assembly folder') + filePath = pm.fileDialog2(dialogStyle=2, fileMode=2, + startingDirectory=self.startDir, + fileFilter=' Shifter Game Assembly folder') if not filePath: return if not isinstance(filePath, basestring): filePath = filePath[0] self.gtUIInst.path_lineEdit.setText(filePath) - def populateScript(self): - filePath = pm.fileDialog2( dialogStyle=2, fileMode=1, startingDirectory=self.startDir, - fileFilter=' Post Script .py (*%s)' %".py") + filePath = pm.fileDialog2(dialogStyle=2, fileMode=1, + startingDirectory=self.startDir, + fileFilter=' Post Script .py (*%s)' % ".py") if not filePath: return if not isinstance(filePath, basestring): @@ -325,19 +326,29 @@ def disconnectExport(self): path = self.gtUIInst.path_lineEdit.text() postScript = self.gtUIInst.script_lineEdit.text() - if name and rigTopNode and meshTopNode and path: - exportAssetAssembly(name, rigTopNode, meshTopNode, path, postScript) + if name and rigTopNode and meshTopNode and path: + exportAssetAssembly( + name, rigTopNode, meshTopNode, path, postScript) else: - pm.displayWarning("Name, Rig Top Node, Mesh Top Node and path are mandatory fields. Please check it.") + pm.displayWarning( + "Name, Rig Top Node, Mesh Top Node and path " + "are mandatory fields. Please check it.") - #Connect slots + # Connect slots def createConnections(self): - self.gtUIInst.assetName_lineEdit.editingFinished.connect(partial(gameTools._validCharacters, self.gtUIInst.assetName_lineEdit )) - self.gtUIInst.rigNode_pushButton.clicked.connect(self.populateRigTopNode) - self.gtUIInst.meshNode_pushButton.clicked.connect(self.populateMeshTopNode) - self.gtUIInst.path_pushButton.clicked.connect(self.populateOutputFolder) + self.gtUIInst.assetName_lineEdit.editingFinished.connect( + partial(gameTools._validCharacters, + self.gtUIInst.assetName_lineEdit)) + self.gtUIInst.rigNode_pushButton.clicked.connect( + self.populateRigTopNode) + self.gtUIInst.meshNode_pushButton.clicked.connect( + self.populateMeshTopNode) + self.gtUIInst.path_pushButton.clicked.connect( + self.populateOutputFolder) self.gtUIInst.script_pushButton.clicked.connect(self.populateScript) - self.gtUIInst.disconnectExport_pushButton.clicked.connect(self.disconnectExport) + self.gtUIInst.disconnectExport_pushButton.clicked.connect( + self.disconnectExport) + if __name__ == "__main__": From 3f979ad2ebc79d7aa38e8631620b5b53bac95c2f Mon Sep 17 00:00:00 2001 From: Marcus Ottosson Date: Thu, 16 Nov 2017 06:07:25 +0000 Subject: [PATCH 055/134] Add an example of maintaining namespaces, and shortening variables names --- scripts/mgear/maya/shifter/__init__.py | 43 +++++++++---------- .../mgear/maya/shifter/component/__init__.py | 6 ++- scripts/mgear/maya/shifter/guide.py | 13 ++++-- 3 files changed, 35 insertions(+), 27 deletions(-) diff --git a/scripts/mgear/maya/shifter/__init__.py b/scripts/mgear/maya/shifter/__init__.py index 42516c2..7343f9b 100644 --- a/scripts/mgear/maya/shifter/__init__.py +++ b/scripts/mgear/maya/shifter/__init__.py @@ -10,8 +10,7 @@ # mgear import mgear import mgear.maya.utils -from mgear.maya.shifter.guide import RigGuide, helperSlots -from mgear.maya.shifter.component import MainComponent +from . import guide, component from mgear.maya import primitive, attribute, skin, dag @@ -67,7 +66,7 @@ class Rig(object): """The main rig class. Attributes: - guide: RigGuide() initialization. + guide: guide.Rig() initialization. groups (dic): Rig groups (Maya sets) components (dic): Dictionary for the rig components. Keys are the component fullname (ie. 'arm_L0') @@ -77,7 +76,7 @@ class Rig(object): def __init__(self): - self.guide = RigGuide() + self.guide = guide.Rig() self.groups = {} self.subGroups = {} @@ -135,7 +134,7 @@ def customStep(self, checker, attr): customSteps = self.options[attr].split(",") for step in customSteps: if not self.stopBuild: - self.stopBuild = helperSlots.runStep( + self.stopBuild = guide.helperSlots.runStep( step.split("|")[-1][1:], self.customStepDic) else: pm.displayWarning("Build Stopped") @@ -233,29 +232,29 @@ def processComponents(self): self.components_infos = {} for comp in self.guide.componentsIndex: - guide = self.guides[comp] - mgear.log("Init : " + guide.fullName + " (" + guide.type + ")") + guide_ = self.guides[comp] + mgear.log("Init : " + guide_.fullName + " (" + guide_.type + ")") - module = importComponent(guide.type) + module = importComponent(guide_.type) Component = getattr(module, "Component") - component = Component(self, guide) - if component.fullName not in self.componentsIndex: - self.components[component.fullName] = component - self.componentsIndex.append(component.fullName) + comp = Component(self, guide_) + if comp.fullName not in self.componentsIndex: + self.components[comp.fullName] = comp + self.componentsIndex.append(comp.fullName) - self.components_infos[component.fullName] = [ - guide.compType, guide.getVersion(), guide.author] + self.components_infos[comp.fullName] = [ + guide_.compType, guide_.getVersion(), guide_.author] # Creation steps - self.steps = MainComponent.steps + self.steps = component.Main.steps for i, name in enumerate(self.steps): # for count, compName in enumerate(self.componentsIndex): for compName in self.componentsIndex: - component = self.components[compName] - mgear.log(name + " : " + component.fullName + - " (" + component.type + ")") - component.stepMethods[i]() + comp = self.components[compName] + mgear.log(name + " : " + comp.fullName + + " (" + comp.type + ")") + comp.stepMethods[i]() if self.options["step"] >= 1 and i >= self.options["step"] - 1: break @@ -277,10 +276,10 @@ def finalize(self): mgear.log("Creating groups") # Retrieve group content from components for name in self.componentsIndex: - component = self.components[name] - for name, objects in component.groups.items(): + component_ = self.components[name] + for name, objects in component_.groups.items(): self.addToGroup(objects, name) - for name, objects in component.subGroups.items(): + for name, objects in component_.subGroups.items(): self.addToSubGroup(objects, name) # Create master set to group all the groups diff --git a/scripts/mgear/maya/shifter/component/__init__.py b/scripts/mgear/maya/shifter/component/__init__.py index 0667000..dd0f6e7 100644 --- a/scripts/mgear/maya/shifter/component/__init__.py +++ b/scripts/mgear/maya/shifter/component/__init__.py @@ -49,7 +49,7 @@ ############################################# # COMPONENT ############################################# -class MainComponent(object): +class Main(object): """ Main component class @@ -1089,3 +1089,7 @@ def getType(self): fullName = property(getFullName) type = property(getType) + + +# Backwards compatibility alias +MainComponent = Main diff --git a/scripts/mgear/maya/shifter/guide.py b/scripts/mgear/maya/shifter/guide.py index 050c1fe..b1ed213 100644 --- a/scripts/mgear/maya/shifter/guide.py +++ b/scripts/mgear/maya/shifter/guide.py @@ -25,7 +25,7 @@ # Date: 2016 / 10 / 10 """ -Shifter's MainGuide class and RigGuide class. +Shifter's Main class and Rig class. """ ########################################################## @@ -77,7 +77,7 @@ # GUIDE ########################################################## -class MainGuide(object): +class Main(object): """ The main guide class. Provide the methods to add parameters, set parameter values, create property... @@ -251,7 +251,7 @@ def addEnumParam(self, scriptName, enum, value=False): # RIG GUIDE ########################################################## -class RigGuide(MainGuide): +class Rig(Main): """ Rig guide class. @@ -795,7 +795,7 @@ def updateComponentName(self): sideIndex = self.mainSettingsTab.side_comboBox.currentIndex() newSide = sideSet[sideIndex] newIndex = self.mainSettingsTab.componentIndex_spinBox.value() - guide = RigGuide() + guide = Rig() guide.updateProperties(self.root, newName, newSide, newIndex) pm.select(self.root, r=True) #sync index @@ -1406,3 +1406,8 @@ def importCustomStep(self, pre=True, *args): fileName = os.path.split(item)[1].split(".")[0] stepWidget.addItem(fileName +" | "+item) self.updateListAttr(stepWidget, stepAttr) + + +# Backwards compatibility aliases +MainGuide = Main +RigGuide = Rig From 2de9a4a6c1bd693a0c642dce3ff959615efc796c Mon Sep 17 00:00:00 2001 From: miquelcampos Date: Thu, 16 Nov 2017 18:58:04 +0900 Subject: [PATCH 056/134] PEP8 #100 : shifter refactor WIP --- scripts/mgear/maya/shifter/__init__.py | 12 +- scripts/mgear/maya/shifter/guide.py | 833 +++++++++++++++---------- 2 files changed, 497 insertions(+), 348 deletions(-) diff --git a/scripts/mgear/maya/shifter/__init__.py b/scripts/mgear/maya/shifter/__init__.py index 7343f9b..0c86f31 100644 --- a/scripts/mgear/maya/shifter/__init__.py +++ b/scripts/mgear/maya/shifter/__init__.py @@ -1,3 +1,4 @@ +"""Shifter's Rig Main class.""" import os.path import datetime import getpass @@ -33,12 +34,14 @@ def getComponentDirectories(): + """Get the components directory""" return mgear.maya.utils.gatherCustomModuleDirectories( SHIFTER_COMPONENT_ENV_KEY, os.path.join(os.path.dirname(__file__), "component")) def importComponentGuide(comp_type): + """Import the Component guide""" dirs = getComponentDirectories() defFmt = "mgear.maya.shifter.component.{}.guide" customFmt = "{}.guide" @@ -49,6 +52,7 @@ def importComponentGuide(comp_type): def importComponent(comp_type): + """Import the Component """ dirs = getComponentDirectories() defFmt = "mgear.maya.shifter.component.{}" customFmt = "{}" @@ -87,9 +91,8 @@ def __init__(self): self.customStepDic = {} def buildFromSelection(self): - """Build the rig from selected guides. + """Build the rig from selected guides.""" - """ startTime = datetime.datetime.now() mgear.log( "= GEAR RIG SYSTEM ==============================================") @@ -109,8 +112,7 @@ def buildFromSelection(self): " ] ======") def build(self): - """Build the rig. - """ + """Build the rig.""" self.options = self.guide.values self.guides = self.guide.components @@ -384,7 +386,7 @@ def addToSubGroup(self, subGroups, parentGroups=["hidden"]): Args: subGroups (dagNode or list of dagNode): Groups (maya set) to add - as a Subgroup. + as a Subgroup. namparentGroupses (str or list of str): Names of the parent groups to create. diff --git a/scripts/mgear/maya/shifter/guide.py b/scripts/mgear/maya/shifter/guide.py index b1ed213..f387c01 100644 --- a/scripts/mgear/maya/shifter/guide.py +++ b/scripts/mgear/maya/shifter/guide.py @@ -1,28 +1,3 @@ -# MGEAR is under the terms of the MIT License - -# Copyright (c) 2016 Jeremie Passerin, Miquel Campos - -# Permission is hereby granted, free of charge, to any person obtaining a copy -# of this software and associated documentation files (the "Software"), to deal -# in the Software without restriction, including without limitation the rights -# to use, copy, modify, merge, publish, distribute, sublicense, and/or sell -# copies of the Software, and to permit persons to whom the Software is -# furnished to do so, subject to the following conditions: - -# The above copyright notice and this permission notice shall be included in all -# copies or substantial portions of the Software. - -# THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR -# IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, -# FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE -# AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER -# LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, -# OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE -# SOFTWARE. - -# Author: Jeremie Passerin geerem@hotmail.com www.jeremiepasserin.com -# Author: Miquel Campos hello@miquel-campos.com www.miquel-campos.com -# Date: 2016 / 10 / 10 """ Shifter's Main class and Rig class. @@ -46,17 +21,13 @@ # pymel import pymel.core as pm -import pymel.core.datatypes as dt +from pymel.core import datatypes # mgear import mgear -import mgear.maya.attribute as att -import mgear.maya.dag as dag -import mgear.maya.vector as vec +from mgear.maya import attribute, dag, vector, pyqt, skin import mgear.string -import mgear.maya.pyqt as gqt import mgear.string as string -import mgear.maya.skin as skin import guideUI as guui import customStepUI as csui @@ -64,7 +35,7 @@ # pyside from maya.app.general.mayaMixin import MayaQDockWidget from maya.app.general.mayaMixin import MayaQWidgetDockableMixin -QtGui, QtCore, QtWidgets, wrapInstance = gqt.qt_import() +QtGui, QtCore, QtWidgets, wrapInstance = pyqt.qt_import() GUIDE_UI_WINDOW_NAME = "guide_UI_window" GUIDE_DOCK_NAME = "Guide_Components" @@ -77,18 +48,21 @@ # GUIDE ########################################################## + class Main(object): - """ - The main guide class. - Provide the methods to add parameters, set parameter values, create property... + """The main guide class. + Provide the methods to add parameters, set parameter values, + create property... Attributes: - paramNames (list): List of parameter name cause it's actually important to keep them sorted. + paramNames (list): List of parameter name cause it's actually important + to keep them sorted. paramDefs (dic): Dictionary of parameter definition. values (dic): Dictionary of options values. - valid (bool): We will check a few things and make sure the guide we are loading is up to date. - If parameters or object are missing a warning message will be display and - the guide should be updated. + valid (bool): We will check a few things and make sure the guide we are + loading is up to date. + If parameters or object are missing a warning message will be + display and the guide should be updated. """ def __init__(self): @@ -98,10 +72,9 @@ def __init__(self): self.values = {} self.valid = True - def addPropertyParamenters(self, parent): - """ - Add attributes ( Attribute = Parameters terminology from Softimage) from the parameter definition list. + """Add attributes ( Attribute = Parameters terminology from Softimage) + from the parameter definition list. Args: parent (dagNode): The object to add the attributes. @@ -116,10 +89,8 @@ def addPropertyParamenters(self, parent): return parent - def setParamDefValue(self, scriptName, value): - """ - Set the value of parameter with matching scriptname. + """Set the value of parameter with matching scriptname. Args: scriptName (str): Scriptname of the parameter to edit. @@ -130,7 +101,8 @@ def setParamDefValue(self, scriptName, value): """ if scriptName not in self.paramDefs.keys(): - mgear.log("Can't find parameter definition for : " + scriptName, mgear.sev_warning) + mgear.log("Can't find parameter definition for : " + scriptName, + mgear.sev_warning) return False self.paramDefs[scriptName].value = value @@ -138,10 +110,8 @@ def setParamDefValue(self, scriptName, value): return True - def setParamDefValuesFromProperty(self, node): - """ - Set the parameter definition values from the attributes of an object. + """Set the parameter definition values from the attributes of an object Args: node (dagNode): The object with the attributes. @@ -149,20 +119,23 @@ def setParamDefValuesFromProperty(self, node): for scriptName, paramDef in self.paramDefs.items(): if not pm.attributeQuery(scriptName, node=node, exists=True): - mgear.log("Can't find parameter '%s' in %s"%(scriptName, node), mgear.sev_warning) + mgear.log("Can't find parameter '%s' in %s" % + (scriptName, node), mgear.sev_warning) self.valid = False else: - cnx = pm.listConnections(node+"."+scriptName, destination=False, source=True) + cnx = pm.listConnections( + node + "." + scriptName, + destination=False, source=True) if cnx: paramDef.value = None self.values[scriptName] = cnx[0] else: - paramDef.value = pm.getAttr(node+"."+scriptName) - self.values[scriptName] = pm.getAttr(node+"."+scriptName) + paramDef.value = pm.getAttr(node + "." + scriptName) + self.values[scriptName] = pm.getAttr( + node + "." + scriptName) def addColorParam(self, scriptName, value=False): - """ - Add color paramenter to the paramenter definition Dictionary. + """Add color paramenter to the paramenter definition Dictionary. Args: scriptName (str): The name of the color parameter. @@ -172,19 +145,22 @@ def addColorParam(self, scriptName, value=False): paramDef: The newly create paramenter definition. """ - paramDef = att.colorParamDef(scriptName, value) + paramDef = attribute.colorParamDef(scriptName, value) self.paramDefs[scriptName] = paramDef self.paramNames.append(scriptName) return paramDef - def addParam(self, scriptName, valueType, value, minimum=None, maximum=None, keyable=False, readable=True, storable=True, writable=True, niceName=None, shortName=None): - """ - Add paramenter to the paramenter definition Dictionary. + def addParam(self, scriptName, valueType, value, + minimum=None, maximum=None, keyable=False, + readable=True, storable=True, writable=True, + niceName=None, shortName=None): + """Add paramenter to the paramenter definition Dictionary. Args: scriptName (str): Parameter scriptname. - valueType (str): The Attribute Type. Exp: 'string', 'bool', 'long', etc.. + valueType (str): The Attribute Type. Exp: 'string', 'bool', + 'long', etc.. value (float or int): Default parameter value. niceName (str): Parameter niceName. shortName (str): Parameter shortName. @@ -199,7 +175,9 @@ def addParam(self, scriptName, valueType, value, minimum=None, maximum=None, ke paramDef: The newly create paramenter definition. """ - paramDef = att.ParamDef2(scriptName, valueType, value, niceName, shortName, minimum, maximum, keyable, readable, storable, writable) + paramDef = attribute.ParamDef2(scriptName, valueType, value, niceName, + shortName, minimum, maximum, keyable, + readable, storable, writable) self.paramDefs[scriptName] = paramDef self.values[scriptName] = value self.paramNames.append(scriptName) @@ -207,8 +185,7 @@ def addParam(self, scriptName, valueType, value, minimum=None, maximum=None, ke return paramDef def addFCurveParam(self, scriptName, keys, interpolation=0): - """ - Add FCurve paramenter to the paramenter definition Dictionary. + """Add FCurve paramenter to the paramenter definition Dictionary. Args: scriptName (str): Attribute fullName. @@ -219,17 +196,15 @@ def addFCurveParam(self, scriptName, keys, interpolation=0): paramDef: The newly create paramenter definition. """ - paramDef = att.FCurveParamDef(scriptName, keys, interpolation) + paramDef = attribute.FCurveParamDef(scriptName, keys, interpolation) self.paramDefs[scriptName] = paramDef self.values[scriptName] = None self.paramNames.append(scriptName) return paramDef - def addEnumParam(self, scriptName, enum, value=False): - """ - Add FCurve paramenter to the paramenter definition Dictionary. + """Add FCurve paramenter to the paramenter definition Dictionary. Args: scriptName (str): Attribute fullName @@ -240,7 +215,7 @@ def addEnumParam(self, scriptName, enum, value=False): paramDef: The newly create paramenter definition. """ - paramDef = att.enumParamDef(scriptName, enum, value) + paramDef = attribute.enumParamDef(scriptName, enum, value) self.paramDefs[scriptName] = paramDef self.values[scriptName] = value self.paramNames.append(scriptName) @@ -251,24 +226,31 @@ def addEnumParam(self, scriptName, enum, value=False): # RIG GUIDE ########################################################## + class Rig(Main): - """ - Rig guide class. + """Rig guide class. This is the class for complete rig guide definition. - * It contains the component guide in correct hierarchy order and the options to generate the rig. + * It contains the component guide in correct hierarchy order and the + options to generate the rig. * Provide the methods to add more component, import/export guide. Attributes: - paramNames (list): List of parameter name cause it's actually important to keep them sorted. + paramNames (list): List of parameter name cause it's actually important + to keep them sorted. paramDefs (dic): Dictionary of parameter definition. values (dic): Dictionary of options values. - valid (bool): We will check a few things and make sure the guide we are loading is up to date. If parameters or object are missing a warning message will be display and the guide should be updated. + valid (bool): We will check a few things and make sure the guide we are + loading is up to date. If parameters or object are missing a + warning message will be display and the guide should be updated. controllers (dic): Dictionary of controllers. - components (dic): Dictionary of component. Keys are the component fullname (ie. 'arm_L0') - componentsIndex (list): List of component name sorted by order creation (hierarchy order) - parents (list): List of the parent of each component, in same order as self.components + components (dic): Dictionary of component. Keys are the component + fullname (ie. 'arm_L0') + componentsIndex (list): List of component name sorted by order + creation (hierarchy order) + parents (list): List of the parent of each component, in same order + as self.components """ def __init__(self): @@ -286,10 +268,8 @@ def __init__(self): self.addParameters() - def addParameters(self): - """ - Parameters for rig options. + """Parameters for rig options. Add more parameter to the parameter definition list. @@ -298,9 +278,16 @@ def addParameters(self): # Main Tab self.pRigName = self.addParam("rig_name", "string", "rig") self.pMode = self.addEnumParam("mode", ["Final", "WIP"], 0) - self.pStep = self.addEnumParam("step", ["All Steps", "Objects", "Properties", "Operators", "Connect", "Joints", "Finalize"], 6) + self.pStep = self.addEnumParam( + "step", + ["All Steps", "Objects", "Properties", + "Operators", "Connect", "Joints", "Finalize"], + 6) self.pIsModel = self.addParam("ismodel", "bool", True) - self.pClassicChannelNames = self.addParam("classicChannelNames", "bool", True) + self.pClassicChannelNames = self.addParam( + "classicChannelNames", + "bool", + True) self.pProxyChannels = self.addParam("proxyChannels", "bool", False) # -------------------------------------------------- @@ -311,15 +298,15 @@ def addParameters(self): # -------------------------------------------------- # Colors - #Index color - self.pLColorIndexfk = self.addParam("L_color_fk", "long", 6, 0, 31) - self.pLColorIndexik = self.addParam("L_color_ik", "long", 18, 0, 31) - self.pRColorIndexfk = self.addParam("R_color_fk", "long", 23, 0, 31) - self.pRColorIndexik = self.addParam("R_color_ik", "long", 14, 0, 31) - self.pCColorIndexfk = self.addParam("C_color_fk", "long", 13, 0, 31) - self.pCColorIndexik = self.addParam("C_color_ik", "long", 17, 0, 31) + # Index color + self.pLColorIndexfk = self.addParam("L_color_fk", "long", 6, 0, 31) + self.pLColorIndexik = self.addParam("L_color_ik", "long", 18, 0, 31) + self.pRColorIndexfk = self.addParam("R_color_fk", "long", 23, 0, 31) + self.pRColorIndexik = self.addParam("R_color_ik", "long", 14, 0, 31) + self.pCColorIndexfk = self.addParam("C_color_fk", "long", 13, 0, 31) + self.pCColorIndexik = self.addParam("C_color_ik", "long", 17, 0, 31) - #RGB colors for Maya 2015 and up + # RGB colors for Maya 2015 and up # self.pLColorfk = self.addColorParam("L_RGB_fk", [0, 1, 0]) # self.pLColorik = self.addColorParam("L_RGB_ik", [0, .5, 0]) # self.pRColorfk = self.addColorParam("R_RGB_fk", [0, 0, 1]) @@ -333,27 +320,30 @@ def addParameters(self): self.pSynoptic = self.addParam("synoptic", "string", "") self.pDoPreCustomStep = self.addParam("doPreCustomStep", "bool", False) - self.pDoPostCustomStep = self.addParam("doPostCustomStep", "bool", False) + self.pDoPostCustomStep = self.addParam("doPostCustomStep", + "bool", False) self.pPreCustomStep = self.addParam("preCustomStep", "string", "") self.pPostCustomStep = self.addParam("postCustomStep", "string", "") # -------------------------------------------------- # Comments self.pComments = self.addParam("comments", "string", "") - self.pUser = self.addParam("user", "string", getpass.getuser()) - self.pDate = self.addParam("date", "string", str(datetime.datetime.now())) - self.pMayaVersion = self.addParam("maya_version", "string", str(pm.mel.eval("getApplicationVersionAsFloat"))) - self.pGearVersion = self.addParam("gear_version", "string", mgear.getVersion()) - + self.pUser = self.addParam("user", "string", getpass.getuser()) + self.pDate = self.addParam( + "date", "string", str(datetime.datetime.now())) + self.pMayaVersion = self.addParam( + "maya_version", "string", + str(pm.mel.eval("getApplicationVersionAsFloat"))) + self.pGearVersion = self.addParam( + "gear_version", "string", mgear.getVersion()) def setFromSelection(self): - """ - Set the guide hierarchy from selection. - - """ + """Set the guide hierarchy from selection.""" selection = pm.ls(selection=True) if not selection: - mgear.log("Select one or more guide root or a guide model", mgear.sev_error) + mgear.log( + "Select one or more guide root or a guide model", + mgear.sev_error) self.valid = False return False @@ -362,10 +352,8 @@ def setFromSelection(self): return True - def setFromHierarchy(self, root, branch=True): - """ - Set the guide from given hierarchy. + """Set the guide from given hierarchy. Args: root (dagNode): The root of the hierarchy to parse. @@ -382,7 +370,7 @@ def setFromHierarchy(self, root, branch=True): if root.hasAttr("comp_type") or self.model == root: break root = root.getParent() - mgear.log( root) + mgear.log(root) # --------------------------------------------------- # First check and set the options @@ -403,57 +391,57 @@ def setFromHierarchy(self, root, branch=True): self.findComponentRecursive(root, branch) endTime = datetime.datetime.now() finalTime = endTime - startTime - mgear.log("Find recursive in [ " + str(finalTime) + " ]" ) + mgear.log("Find recursive in [ " + str(finalTime) + " ]") # Parenting if self.valid: for name in self.componentsIndex: mgear.log("Get parenting for: " + name) compParent = self.components[name] - # for localName, element in compParent.getObjects(self.model, False).items(): + # for localName, element in \ + # compParent.getObjects(self.model, False).items(): # NOTE: getObjects3 is an experimental function - for localName, element in compParent.getObjects3(self.model).items(): - for name in self.componentsIndex: + for localName, element in compParent.getObjects3( + self.model).items(): + for name in self.componentsIndex: compChild = self.components[name] compChild_parent = compChild.root.getParent() if element is not None and element == compChild_parent: compChild.parentComponent = compParent compChild.parentLocalName = localName - # More option values self.addOptionsValues() # End if not self.valid: - mgear.log("The guide doesn't seem to be up to date. Check logged messages and update the guide.", mgear.sev_warning) + mgear.log("The guide doesn't seem to be up to date." + "Check logged messages and update the guide.", + mgear.sev_warning) endTime = datetime.datetime.now() finalTime = endTime - startTime - mgear.log("Guide loaded from hierarchy in [ " + str(finalTime) + " ]" ) - + mgear.log("Guide loaded from hierarchy in [ " + str(finalTime) + " ]") def addOptionsValues(self): - """ - Gather or change some options values according to some others. + """Gather or change some options values according to some others. Note: - For the moment only gets the rig size to adapt size of object to the scale of the character + For the moment only gets the rig size to adapt size of object to + the scale of the character """ # Get rig size to adapt size of object to the scale of the character maximum = 1 - v = dt.Vector() + v = datatypes.Vector() for comp in self.components.values(): for pos in comp.apos: - d = vec.getDistance(v, pos) + d = vector.getDistance(v, pos) maximum = max(d, maximum) self.values["size"] = max(maximum * .05, .1) - def findComponentRecursive(self, node, branch=True): - """ - Finds components by recursive search. + """Finds components by recursive search. Args: node (dagNode): Object frome where start the search. @@ -466,7 +454,7 @@ def findComponentRecursive(self, node, branch=True): if comp_guide: comp_guide.setFromHierarchy(node) - mgear.log(comp_guide.fullName+" ("+comp_type+")") + mgear.log(comp_guide.fullName + " (" + comp_type + ")") if not comp_guide.valid: self.valid = False @@ -478,8 +466,9 @@ def findComponentRecursive(self, node, branch=True): self.findComponentRecursive(child) def getComponentGuide(self, comp_type): - """ - Get the componet guide python object. ie. Finds the guide.py of the component. + """Get the componet guide python object. + + ie. Finds the guide.py of the component. Args: comp_type (str): The component type. @@ -492,7 +481,8 @@ def getComponentGuide(self, comp_type): ''' path = os.path.join(basepath, comp_type, "guide.py") if not os.path.exists(path): - mgear.log("Can't find guide definition for : " + comp_type + ".\n"+ path, mgear.sev_error) + mgear.log("Can't find guide definition for : " + comp_type + ".\n"+ + path, mgear.sev_error) return False ''' @@ -517,14 +507,15 @@ def initialHierarchy(self): # Options self.options = self.addPropertyParamenters(self.model) - #the basic org nulls (Maya groups) - self.controllers_org = pm.group(n="controllers_org", em=True, p=self.model) + # the basic org nulls (Maya groups) + self.controllers_org = pm.group( + n="controllers_org", + em=True, + p=self.model) self.controllers_org.attr('visibility').set(0) - def drawNewComponent(self, parent, comp_type): - """ - Add a new component to the guide. + """Add a new component to the guide. Args: parent (dagNode): Parent of this new component guide. @@ -534,7 +525,8 @@ def drawNewComponent(self, parent, comp_type): comp_guide = self.getComponentGuide(comp_type) if not comp_guide: - mgear.log("Not component guide of type: " + comp_type + " have been found.", mgear.sev_error) + mgear.log("Not component guide of type: " + comp_type + + " have been found.", mgear.sev_error) return if parent is None: self.initialHierarchy() @@ -556,7 +548,6 @@ def drawNewComponent(self, parent, comp_type): comp_guide.setParamDefValue("comp_side", parent_side) comp_guide.setParamDefValue("ui_host", parent_uihost) - break parent_root = parent_root.getParent() @@ -573,10 +564,10 @@ def drawUpdate(self, oldRoot, parent=None): # controls shape try: - pm.delete(pm.PyNode(newParentName+"|controllers_org")) - oldRootName = oldRoot.name().split("|")[0]+"|controllers_org" - pm.parent(oldRootName, newParentName) - except: + pm.delete(pm.PyNode(newParentName + "|controllers_org")) + oldRootName = oldRoot.name().split("|")[0] + "|controllers_org" + (oldRootName, newParentName) + except TypeError: pm.displayError("The guide don't have controllers_org") # Components @@ -585,20 +576,16 @@ def drawUpdate(self, oldRoot, parent=None): oldParentName = comp_guide.root.getParent().name() try: - parent = pm.PyNode(oldParentName.replace(oldParentName.split("|")[0], newParentName)) - except: + parent = pm.PyNode(oldParentName.replace( + oldParentName.split("|")[0], newParentName)) + except TypeError: pm.displayWarning("No parent for the guide") parent = self.model comp_guide.draw(parent) - - - def update(self, sel): - """ - Update the guide if a parameter is missing - """ + """Update the guide if a parameter is missing""" if pm.attributeQuery("ismodel", node=sel, ex=True): self.model = sel @@ -612,11 +599,11 @@ def update(self, sel): pm.displayInfo("The Guide is updated") return - pm.rename(self.model, name+"_old") + pm.rename(self.model, name + "_old") deleteLater = self.model self.drawUpdate(deleteLater) - pm.rename(self.model, name) - pm.displayInfo("The guide %s have been updated"%name) + pm.rename(self.model, name) + pm.displayInfo("The guide %s have been updated" % name) pm.delete(deleteLater) def duplicate(self, root, symmetrize=False): @@ -624,16 +611,19 @@ def duplicate(self, root, symmetrize=False): Duplicate the guide hierarchy. Note: - Indeed this method is not duplicating. What it is doing is parse the compoment guide, + Indeed this method is not duplicating. + What it is doing is parse the compoment guide, and creating an new one base on the current selection. Warning: - Don't use the default Maya's duplicate tool to duplicate a Shifter's guide. + Don't use the default Maya's duplicate tool to duplicate a + Shifter's guide. Args: root (dagNode): The guide root to duplicate. - symmetrize (bool): If True, duplicate symmetrical in X axis. The guide have to be "Left" or "Right". + symmetrize (bool): If True, duplicate symmetrical in X axis. + The guide have to be "Left" or "Right". """ if not pm.attributeQuery("comp_type", node=root, ex=True): @@ -659,7 +649,10 @@ def duplicate(self, root, symmetrize=False): if comp_guide.parentComponent is None: parent = comp_guide.root.getParent() if symmetrize: - parent = dag.findChild(self.model, mgear.string.convertRLName(comp_guide.root.getParent().name())) + parent = dag.findChild( + self.model, + mgear.string.convertRLName( + comp_guide.root.getParent().name())) if not parent: parent = comp_guide.root.getParent() @@ -667,22 +660,29 @@ def duplicate(self, root, symmetrize=False): parent = comp_guide.root.getParent() else: - parent = dag.findChild(self.model, comp_guide.parentComponent.getName(comp_guide.parentLocalName)) + parent = dag.findChild( + self.model, + comp_guide.parentComponent.getName( + comp_guide.parentLocalName)) if not parent: - mgear.log("Unable to find parent (%s.%s) for guide %s"%(comp_guide.parentComponent.getFullName, comp_guide.parentLocalName, comp_guide.getFullName )) + mgear.log( + "Unable to find parent (%s.%s) for guide %s" % + (comp_guide.parentComponent.getFullName, + comp_guide.parentLocalName, + comp_guide.getFullName)) parent = self.model - comp_guide.root = None # Reset the root so we force the draw to duplicate + # Reset the root so we force the draw to duplicate + comp_guide.root = None + comp_guide.setIndex(self.model) comp_guide.draw(parent) pm.select(self.components[self.componentsIndex[0]].root) - def updateProperties(self, root, newName, newSide, newIndex): - """ - Update the Properties of the component. + """Update the Properties of the component. Args: root (dagNode): Root of the component. @@ -700,9 +700,9 @@ def updateProperties(self, root, newName, newSide, newIndex): comp_guide.rename(root, newName, newSide, newIndex) -################################################################################## +############################################################################### # HELPER SLOTS -################################################################################## +############################################################################### class helperSlots(object): @@ -715,7 +715,8 @@ def updateHostUI(self, lEdit, targetAttr): lEdit.setText(oSel[0].name()) self.root.attr(targetAttr).set(lEdit.text()) else: - pm.displayWarning("The selected element is not a valid object or not from a guide") + pm.displayWarning("The selected element is not a " + "valid object or not from a guide") else: pm.displayWarning("Please select first the object.") @@ -723,25 +724,28 @@ def updateLineEdit(self, lEdit, targetAttr): name = string.removeInvalidCharacter(lEdit.text()) self.root.attr(targetAttr).set(name) - def addItem2listWidget(self, listWidget, targetAttr=None): items = pm.selected() - itemsList = [i.text() for i in listWidget.findItems("", QtCore.Qt.MatchContains)] + itemsList = [i.text() for i in listWidget.findItems( + "", QtCore.Qt.MatchContains)] # Quick clean the first empty item if itemsList and not itemsList[0]: listWidget.takeItem(0) - for item in items: if item.name() not in itemsList: if item.hasAttr("isGearGuide"): listWidget.addItem(item.name()) else: - pm.displayWarning("The object: %s, is not a valid reference, Please select only guide componet roots and guide locators."%item.name()) + pm.displayWarning( + "The object: %s, is not a valid" + " reference, Please select only guide componet" + " roots and guide locators." % item.name()) else: - pm.displayWarning("The object: %s, is already in the list."%item.name()) + pm.displayWarning("The object: %s, is already in the list." % + item.name()) if targetAttr: self.updateListAttr(listWidget, targetAttr) @@ -752,9 +756,11 @@ def removeSelectedFromListWidget(self, listWidget, targetAttr=None): if targetAttr: self.updateListAttr(listWidget, targetAttr) - def moveFromListWidget2ListWidget(self, sourceListWidget, targetListWidget, targetAttrListWidget, targetAttr=None): + def moveFromListWidget2ListWidget(self, sourceListWidget, targetListWidget, + targetAttrListWidget, targetAttr=None): # Quick clean the first empty item - itemsList = [i.text() for i in targetAttrListWidget.findItems("", QtCore.Qt.MatchContains)] + itemsList = [i.text() for i in targetAttrListWidget.findItems( + "", QtCore.Qt.MatchContains)] if itemsList and not itemsList[0]: targetAttrListWidget.takeItem(0) @@ -765,26 +771,22 @@ def moveFromListWidget2ListWidget(self, sourceListWidget, targetListWidget, targ if targetAttr: self.updateListAttr(targetAttrListWidget, targetAttr) - - - def copyFromListWidget(self, sourceListWidget, targetListWidget, targetAttr=None): + def copyFromListWidget(self, sourceListWidget, targetListWidget, + targetAttr=None): targetListWidget.clear() - itemsList = [i.text() for i in sourceListWidget.findItems("", QtCore.Qt.MatchContains)] + itemsList = [i.text() for i in sourceListWidget.findItems( + "", QtCore.Qt.MatchContains)] for item in itemsList: targetListWidget.addItem(item) if targetAttr: self.updateListAttr(sourceListWidget, targetAttr) - def updateListAttr(self, sourceListWidget, targetAttr): - """ - Update the string attribute with values separated by commas. - - """ - newValue = ",".join([i.text() for i in sourceListWidget.findItems("", QtCore.Qt.MatchContains)]) + """Update the string attribute with values separated by commas""" + newValue = ",".join([i.text() for i in sourceListWidget.findItems( + "", QtCore.Qt.MatchContains)]) self.root.attr(targetAttr).set(newValue) - def updateComponentName(self): newName = self.mainSettingsTab.name_lineEdit.text() @@ -798,8 +800,9 @@ def updateComponentName(self): guide = Rig() guide.updateProperties(self.root, newName, newSide, newIndex) pm.select(self.root, r=True) - #sync index - self.mainSettingsTab.componentIndex_spinBox.setValue(self.root.attr("comp_index").get()) + # sync index + self.mainSettingsTab.componentIndex_spinBox.setValue( + self.root.attr("comp_index").get()) def updateConnector(self, sourceWidget, itemsList, *args): self.root.attr("connector").set(itemsList[sourceWidget.currentIndex()]) @@ -818,7 +821,7 @@ def updateSpinBox(self, sourceWidget, targetAttr, *args): return True def updateSlider(self, sourceWidget, targetAttr, *args): - self.root.attr(targetAttr).set(float(sourceWidget.value())/100) + self.root.attr(targetAttr).set(float(sourceWidget.value()) / 100) def updateComboBox(self, sourceWidget, targetAttr, *args): self.root.attr(targetAttr).set(sourceWidget.currentIndex()) @@ -828,19 +831,20 @@ def updateControlShape(self, sourceWidget, ctlList, targetAttr, *args): self.root.attr(targetAttr).set(ctlList[curIndx]) def setProfile(self): - pm.select(self.root, r=True) + pm.select(self.root, r=True) pm.runtime.GraphEditor() - def close_settings(self): self.close() - gqt.deleteInstances(self, MayaQDockWidget) + pyqt.deleteInstances(self, MayaQDockWidget) def editFile(self, widgetList): try: filepath = widgetList.selectedItems()[0].text().split("|")[-1][1:] - if os.environ.get(MGEAR_SHIFTER_CUSTOMSTEP_KEY, ""): - editPath = os.path.join( os.environ.get(MGEAR_SHIFTER_CUSTOMSTEP_KEY, "") , filepath) + if os.environ.get(MGEAR_SHIFTER_CUSTOMSTEP_KEY, ""): + editPath = os.path.join( + os.environ.get( + MGEAR_SHIFTER_CUSTOMSTEP_KEY, ""), filepath) else: editPath = filepath if filepath: @@ -852,17 +856,20 @@ def editFile(self, widgetList): subprocess.call(('xdg-open', editPath)) else: pm.displayWarning("Please select one item from the list") - except: + except Exception: pm.displayError("The step can't be find or does't exists") @classmethod def runStep(self, stepPath, customStepDic): try: with pm.UndoChunk(): - pm.displayInfo("EXEC: Executing custom step: %s"%stepPath) + pm.displayInfo( + "EXEC: Executing custom step: %s" % stepPath) fileName = os.path.split(stepPath)[1].split(".")[0] - if os.environ.get(MGEAR_SHIFTER_CUSTOMSTEP_KEY, ""): - runPath = os.path.join( os.environ.get(MGEAR_SHIFTER_CUSTOMSTEP_KEY, "") , stepPath) + if os.environ.get(MGEAR_SHIFTER_CUSTOMSTEP_KEY, ""): + runPath = os.path.join( + os.environ.get( + MGEAR_SHIFTER_CUSTOMSTEP_KEY, ""), stepPath) else: runPath = stepPath customStep = imp.load_source(fileName, runPath) @@ -870,36 +877,45 @@ def runStep(self, stepPath, customStepDic): cs = customStep.CustomShifterStep() cs.run(customStepDic) customStepDic[cs.name] = cs - pm.displayInfo("SUCCEED: Custom Shifter Step Class: %s. Succeed!!"%stepPath) + pm.displayInfo( + "SUCCEED: Custom Shifter Step Class: %s. " + "Succeed!!" % stepPath) else: - pm.displayInfo("SUCCEED: Custom Step simple script: %s. Succeed!!"%stepPath) + pm.displayInfo( + "SUCCEED: Custom Step simple script: %s. " + "Succeed!!" % stepPath) except Exception as ex: - template = "An exception of type {0} occured. Arguments:\n{1!r}" + template = "An exception of type {0} occured. " + "Arguments:\n{1!r}" message = template.format(type(ex).__name__, ex.args) - pm.displayError( message) + pm.displayError(message) pm.displayError(traceback.format_exc()) - cont = pm.confirmBox("FAIL: Custom Step Fail", "The step:%s has failed. Continue with next step?"%stepPath + "\n\n" + message + "\n\n" + traceback.format_exc(), "Continue", "Stop Build", "Try Again!") + cont = pm.confirmBox( + "FAIL: Custom Step Fail", + "The step:%s has failed. Continue with next step?" % + stepPath + "\n\n" + message + "\n\n" + + traceback.format_exc(), + "Continue", "Stop Build", "Try Again!") if cont == "Stop Build": # stop Build return True elif cont == "Try Again!": - try: #just in case there is nothing to undo + try: # just in case there is nothing to undo pm.undo() - except: + except Exception: pass pm.displayInfo("Trying again! : {}".format(stepPath)) inception = self.runStep(stepPath, customStepDic) - if inception: # stops build from the recursion loop. + if inception: # stops build from the recursion loop. return True else: return False - def runManualStep(self, widgetList): selItems = widgetList.selectedItems() for item in selItems: - self.runStep( item.text().split("|")[-1][1:], customStepDic={}) + self.runStep(item.text().split("|")[-1][1:], customStepDic={}) ################## @@ -910,21 +926,24 @@ def __init__(self, parent=None): super(guideSettingsTab, self).__init__(parent) self.setupUi(self) + class customStepTab(QtWidgets.QDialog, csui.Ui_Form): def __init__(self, parent=None): super(customStepTab, self).__init__(parent) self.setupUi(self) + class guideSettings(MayaQWidgetDockableMixin, QtWidgets.QDialog, helperSlots): # valueChanged = QtCore.Signal(int) def __init__(self, parent=None): self.toolName = TYPE # Delete old instances of the componet settings window. - gqt.deleteInstances(self, MayaQDockWidget) + pyqt.deleteInstances(self, MayaQDockWidget) # super(self.__class__, self).__init__(parent=parent) super(guideSettings, self).__init__() - # the inspectSettings function set the current selection to the component root before open the settings dialog + # the inspectSettings function set the current selection to the + # component root before open the settings dialog self.root = pm.selected()[0] self.guideSettingsTab = guideSettingsTab() @@ -939,7 +958,7 @@ def __init__(self, parent=None): self.setAttribute(QtCore.Qt.WA_DeleteOnClose, True) def setup_SettingWindow(self): - self.mayaMainWindow = gqt.maya_main_window() + self.mayaMainWindow = pyqt.maya_main_window() self.setObjectName(self.toolName) self.setWindowFlags(QtCore.Qt.Window) @@ -947,55 +966,68 @@ def setup_SettingWindow(self): self.resize(500, 615) def create_controls(self): - """ - Create the controls for the component base - - """ + """Create the controls for the component base""" self.tabs = QtWidgets.QTabWidget() self.tabs.setObjectName("settings_tab") # Close Button self.close_button = QtWidgets.QPushButton("Close") - - def populate_controls(self): - """ - Populate the controls values from the custom attributes of the component. + """Populate the controls values + from the custom attributes of the component. """ - #populate tab + # populate tab self.tabs.insertTab(0, self.guideSettingsTab, "Guide Settings") self.tabs.insertTab(1, self.customStepTab, "Custom Steps") - #populate main settings - self.guideSettingsTab.rigName_lineEdit.setText(self.root.attr("rig_name").get()) - self.guideSettingsTab.mode_comboBox.setCurrentIndex(self.root.attr("mode").get()) - self.guideSettingsTab.step_comboBox.setCurrentIndex(self.root.attr("step").get()) - self.populateCheck(self.guideSettingsTab.proxyChannels_checkBox, "proxyChannels") - self.populateCheck(self.guideSettingsTab.classicChannelNames_checkBox, "classicChannelNames") - self.populateCheck(self.guideSettingsTab.importSkin_checkBox, "importSkin") - self.guideSettingsTab.skin_lineEdit.setText(self.root.attr("skin").get()) - self.populateCheck(self.guideSettingsTab.jointRig_checkBox, "joint_rig") + # populate main settings + self.guideSettingsTab.rigName_lineEdit.setText( + self.root.attr("rig_name").get()) + self.guideSettingsTab.mode_comboBox.setCurrentIndex( + self.root.attr("mode").get()) + self.guideSettingsTab.step_comboBox.setCurrentIndex( + self.root.attr("step").get()) + self.populateCheck( + self.guideSettingsTab.proxyChannels_checkBox, "proxyChannels") + self.populateCheck( + self.guideSettingsTab.classicChannelNames_checkBox, + "classicChannelNames") + self.populateCheck( + self.guideSettingsTab.importSkin_checkBox, "importSkin") + self.guideSettingsTab.skin_lineEdit.setText( + self.root.attr("skin").get()) + self.populateCheck( + self.guideSettingsTab.jointRig_checkBox, "joint_rig") self.populateAvailableSynopticTabs() + for item in self.root.attr("synoptic").get().split(","): self.guideSettingsTab.rigTabs_listWidget.addItem(item) - self.guideSettingsTab.L_color_fk_spinBox.setValue(self.root.attr("L_color_fk").get()) - self.guideSettingsTab.L_color_ik_spinBox.setValue(self.root.attr("L_color_ik").get()) - self.guideSettingsTab.C_color_fk_spinBox.setValue(self.root.attr("C_color_fk").get()) - self.guideSettingsTab.C_color_ik_spinBox.setValue(self.root.attr("C_color_ik").get()) - self.guideSettingsTab.R_color_fk_spinBox.setValue(self.root.attr("R_color_fk").get()) - self.guideSettingsTab.R_color_ik_spinBox.setValue(self.root.attr("R_color_ik").get()) + + self.guideSettingsTab.L_color_fk_spinBox.setValue( + self.root.attr("L_color_fk").get()) + self.guideSettingsTab.L_color_ik_spinBox.setValue( + self.root.attr("L_color_ik").get()) + self.guideSettingsTab.C_color_fk_spinBox.setValue( + self.root.attr("C_color_fk").get()) + self.guideSettingsTab.C_color_ik_spinBox.setValue( + self.root.attr("C_color_ik").get()) + self.guideSettingsTab.R_color_fk_spinBox.setValue( + self.root.attr("R_color_fk").get()) + self.guideSettingsTab.R_color_ik_spinBox.setValue( + self.root.attr("R_color_ik").get()) # pupulate custom steps sttings - self.populateCheck(self.customStepTab.preCustomStep_checkBox, "doPreCustomStep") + self.populateCheck( + self.customStepTab.preCustomStep_checkBox, "doPreCustomStep") for item in self.root.attr("preCustomStep").get().split(","): self.customStepTab.preCustomStep_listWidget.addItem(item) - self.populateCheck(self.customStepTab.postCustomStep_checkBox, "doPostCustomStep") + self.populateCheck( + self.customStepTab.postCustomStep_checkBox, "doPostCustomStep") for item in self.root.attr("postCustomStep").get().split(","): self.customStepTab.postCustomStep_listWidget.addItem(item) - def create_layout(self): """ Create the layout for the component base settings @@ -1007,61 +1039,134 @@ def create_layout(self): self.setLayout(self.settings_layout) - def create_connections(self): - """ - Create the slots connections to the controls functions - - """ + """Create the slots connections to the controls functions""" self.close_button.clicked.connect(self.close_settings) # Setting Tab - self.guideSettingsTab.rigName_lineEdit.editingFinished.connect(partial(self.updateLineEdit, self.guideSettingsTab.rigName_lineEdit, "rig_name" ) ) - self.guideSettingsTab.mode_comboBox.currentIndexChanged.connect(partial(self.updateComboBox, self.guideSettingsTab.mode_comboBox, "mode")) - self.guideSettingsTab.step_comboBox.currentIndexChanged.connect(partial(self.updateComboBox, self.guideSettingsTab.step_comboBox, "step")) - - self.guideSettingsTab.proxyChannels_checkBox.stateChanged.connect(partial(self.updateCheck, self.guideSettingsTab.proxyChannels_checkBox, "proxyChannels")) - self.guideSettingsTab.classicChannelNames_checkBox.stateChanged.connect(partial(self.updateCheck, self.guideSettingsTab.classicChannelNames_checkBox, "classicChannelNames")) - - self.guideSettingsTab.importSkin_checkBox.stateChanged.connect(partial(self.updateCheck, self.guideSettingsTab.importSkin_checkBox, "importSkin")) - self.guideSettingsTab.jointRig_checkBox.stateChanged.connect(partial(self.updateCheck, self.guideSettingsTab.jointRig_checkBox, "joint_rig")) - self.guideSettingsTab.addTab_pushButton.clicked.connect(partial(self.moveFromListWidget2ListWidget, self.guideSettingsTab.available_listWidget, self.guideSettingsTab.rigTabs_listWidget, self.guideSettingsTab.rigTabs_listWidget, "synoptic")) - self.guideSettingsTab.removeTab_pushButton.clicked.connect(partial(self.moveFromListWidget2ListWidget, self.guideSettingsTab.rigTabs_listWidget, self.guideSettingsTab.available_listWidget, self.guideSettingsTab.rigTabs_listWidget, "synoptic")) - self.guideSettingsTab.loadSkinPath_pushButton.clicked.connect(self.skinLoad) - self.guideSettingsTab.rigTabs_listWidget.installEventFilter(self) - - self.guideSettingsTab.L_color_fk_spinBox.valueChanged.connect(partial(self.updateSpinBox, self.guideSettingsTab.L_color_fk_spinBox, "L_color_fk")) - self.guideSettingsTab.L_color_ik_spinBox.valueChanged.connect(partial(self.updateSpinBox, self.guideSettingsTab.L_color_ik_spinBox, "L_color_ik")) - self.guideSettingsTab.C_color_fk_spinBox.valueChanged.connect(partial(self.updateSpinBox, self.guideSettingsTab.C_color_fk_spinBox, "C_color_fk")) - self.guideSettingsTab.C_color_ik_spinBox.valueChanged.connect(partial(self.updateSpinBox, self.guideSettingsTab.C_color_ik_spinBox, "C_color_ik")) - self.guideSettingsTab.R_color_fk_spinBox.valueChanged.connect(partial(self.updateSpinBox, self.guideSettingsTab.R_color_fk_spinBox, "R_color_fk")) - self.guideSettingsTab.R_color_ik_spinBox.valueChanged.connect(partial(self.updateSpinBox, self.guideSettingsTab.R_color_ik_spinBox, "R_color_ik")) + tap = self.guideSettingsTab + tap.rigName_lineEdit.editingFinished.connect( + partial(self.updateLineEdit, + tap.rigName_lineEdit, + "rig_name")) + tap.mode_comboBox.currentIndexChanged.connect( + partial(self.updateComboBox, + tap.mode_comboBox, + "mode")) + tap.step_comboBox.currentIndexChanged.connect( + partial(self.updateComboBox, + tap.step_comboBox, + "step")) + tap.proxyChannels_checkBox.stateChanged.connect( + partial(self.updateCheck, + tap.proxyChannels_checkBox, + "proxyChannels")) + tap.classicChannelNames_checkBox.stateChanged.connect( + partial(self.updateCheck, + tap.classicChannelNames_checkBox, + "classicChannelNames")) + tap.importSkin_checkBox.stateChanged.connect( + partial(self.updateCheck, + tap.importSkin_checkBox, + "importSkin")) + tap.jointRig_checkBox.stateChanged.connect( + partial(self.updateCheck, + tap.jointRig_checkBox, + "joint_rig")) + tap.addTab_pushButton.clicked.connect( + partial(self.moveFromListWidget2ListWidget, + tap.available_listWidget, + tap.rigTabs_listWidget, + tap.rigTabs_listWidget, + "synoptic")) + tap.removeTab_pushButton.clicked.connect( + partial(self.moveFromListWidget2ListWidget, + tap.rigTabs_listWidget, + tap.available_listWidget, + tap.rigTabs_listWidget, + "synoptic")) + tap.loadSkinPath_pushButton.clicked.connect( + self.skinLoad) + tap.rigTabs_listWidget.installEventFilter(self) + + tap.L_color_fk_spinBox.valueChanged.connect( + partial(self.updateSpinBox, + tap.L_color_fk_spinBox, + "L_color_fk")) + tap.L_color_ik_spinBox.valueChanged.connect( + partial(self.updateSpinBox, + tap.L_color_ik_spinBox, + "L_color_ik")) + tap.C_color_fk_spinBox.valueChanged.connect( + partial(self.updateSpinBox, + tap.C_color_fk_spinBox, + "C_color_fk")) + tap.C_color_ik_spinBox.valueChanged.connect( + partial(self.updateSpinBox, + tap.C_color_ik_spinBox, + "C_color_ik")) + tap.R_color_fk_spinBox.valueChanged.connect( + partial(self.updateSpinBox, + tap.R_color_fk_spinBox, + "R_color_fk")) + tap.R_color_ik_spinBox.valueChanged.connect( + partial(self.updateSpinBox, + tap.R_color_ik_spinBox, + "R_color_ik")) # custom Step Tab - self.customStepTab.preCustomStep_checkBox.stateChanged.connect(partial(self.updateCheck, self.customStepTab.preCustomStep_checkBox, "doPreCustomStep")) - self.customStepTab.preCustomStepAdd_pushButton.clicked.connect(self.addCustomStep) - self.customStepTab.preCustomStepNew_pushButton.clicked.connect(self.newCustomStep) - self.customStepTab.preCustomStepDuplicate_pushButton.clicked.connect(self.duplicateCustomStep) - self.customStepTab.preCustomStepExport_pushButton.clicked.connect(self.exportCustomStep) - self.customStepTab.preCustomStepImport_pushButton.clicked.connect(self.importCustomStep) - self.customStepTab.preCustomStepRemove_pushButton.clicked.connect(partial(self.removeSelectedFromListWidget, self.customStepTab.preCustomStep_listWidget, "preCustomStep")) - self.customStepTab.preCustomStep_listWidget.installEventFilter(self) - self.customStepTab.preCustomStepRun_pushButton.clicked.connect(partial(self.runManualStep, self.customStepTab.preCustomStep_listWidget)) - self.customStepTab.preCustomStepEdit_pushButton.clicked.connect(partial(self.editFile, self.customStepTab.preCustomStep_listWidget)) - - self.customStepTab.postCustomStep_checkBox.stateChanged.connect(partial(self.updateCheck, self.customStepTab.postCustomStep_checkBox, "doPostCustomStep")) - self.customStepTab.postCustomStepAdd_pushButton.clicked.connect(partial(self.addCustomStep, False)) - self.customStepTab.postCustomStepNew_pushButton.clicked.connect(partial(self.newCustomStep, False)) - self.customStepTab.postCustomStepDuplicate_pushButton.clicked.connect(partial(self.duplicateCustomStep, False)) - self.customStepTab.postCustomStepExport_pushButton.clicked.connect(partial(self.exportCustomStep, False)) - self.customStepTab.postCustomStepImport_pushButton.clicked.connect(partial(self.importCustomStep, False)) - self.customStepTab.postCustomStepRemove_pushButton.clicked.connect(partial(self.removeSelectedFromListWidget, self.customStepTab.postCustomStep_listWidget, "postCustomStep")) - self.customStepTab.postCustomStep_listWidget.installEventFilter(self) - self.customStepTab.postCustomStepRun_pushButton.clicked.connect(partial(self.runManualStep, self.customStepTab.postCustomStep_listWidget)) - self.customStepTab.postCustomStepEdit_pushButton.clicked.connect(partial(self.editFile, self.customStepTab.postCustomStep_listWidget)) - - - + csTap = self.customStepTab + csTap.preCustomStep_checkBox.stateChanged.connect( + partial(self.updateCheck, + csTap.preCustomStep_checkBox, + "doPreCustomStep")) + csTap.preCustomStepAdd_pushButton.clicked.connect( + self.addCustomStep) + csTap.preCustomStepNew_pushButton.clicked.connect( + self.newCustomStep) + csTap.preCustomStepDuplicate_pushButton.clicked.connect( + self.duplicateCustomStep) + csTap.preCustomStepExport_pushButton.clicked.connect( + self.exportCustomStep) + csTap.preCustomStepImport_pushButton.clicked.connect( + self.importCustomStep) + csTap.preCustomStepRemove_pushButton.clicked.connect( + partial(self.removeSelectedFromListWidget, + csTap.preCustomStep_listWidget, + "preCustomStep")) + csTap.preCustomStep_listWidget.installEventFilter(self) + csTap.preCustomStepRun_pushButton.clicked.connect( + partial(self.runManualStep, + csTap.preCustomStep_listWidget)) + csTap.preCustomStepEdit_pushButton.clicked.connect( + partial(self.editFile, + csTap.preCustomStep_listWidget)) + + csTap.postCustomStep_checkBox.stateChanged.connect( + partial(self.updateCheck, + csTap.postCustomStep_checkBox, + "doPostCustomStep")) + csTap.postCustomStepAdd_pushButton.clicked.connect( + partial(self.addCustomStep, False)) + csTap.postCustomStepNew_pushButton.clicked.connect( + partial(self.newCustomStep, False)) + csTap.postCustomStepDuplicate_pushButton.clicked.connect( + partial(self.duplicateCustomStep, False)) + csTap.postCustomStepExport_pushButton.clicked.connect( + partial(self.exportCustomStep, False)) + csTap.postCustomStepImport_pushButton.clicked.connect( + partial(self.importCustomStep, False)) + csTap.postCustomStepRemove_pushButton.clicked.connect( + partial(self.removeSelectedFromListWidget, + csTap.postCustomStep_listWidget, + "postCustomStep")) + csTap.postCustomStep_listWidget.installEventFilter(self) + csTap.postCustomStepRun_pushButton.clicked.connect( + partial(self.runManualStep, + csTap.postCustomStep_listWidget)) + csTap.postCustomStepEdit_pushButton.clicked.connect( + partial(self.editFile, + csTap.postCustomStep_listWidget)) def eventFilter(self, sender, event): if event.type() == QtCore.QEvent.ChildRemoved: @@ -1084,7 +1189,8 @@ def populateAvailableSynopticTabs(self): if not defPath or not os.path.isdir(defPath): defPath = shifter.SYNOPTIC_PATH - tabsDirectories = [ name for name in os.listdir(defPath) if os.path.isdir(os.path.join(defPath, name)) ] + tabsDirectories = [name for name in os.listdir(defPath) if + os.path.isdir(os.path.join(defPath, name))] # Quick clean the first empty item if tabsDirectories and not tabsDirectories[0]: self.guideSettingsTab.available_listWidget.takeItem(0) @@ -1096,8 +1202,12 @@ def populateAvailableSynopticTabs(self): def skinLoad(self, *args): startDir = self.root.attr("skin").get() - filePath = pm.fileDialog2(dialogStyle=2, fileMode=1, startingDirectory=startDir, okc="Apply", - fileFilter='mGear skin (*%s)' % skin.FILE_EXT) + filePath = pm.fileDialog2( + dialogStyle=2, + fileMode=1, + startingDirectory=startDir, + okc="Apply", + fileFilter='mGear skin (*%s)' % skin.FILE_EXT) if not filePath: return if not isinstance(filePath, basestring): @@ -1124,32 +1234,37 @@ def addCustomStep(self, pre=True, *args): stepAttr = "postCustomStep" stepWidget = self.customStepTab.postCustomStep_listWidget - # Check if we have a custom enviroment for the custom steps initial folder - if os.environ.get(MGEAR_SHIFTER_CUSTOMSTEP_KEY, ""): + # Check if we have a custom env for the custom steps initial folder + if os.environ.get(MGEAR_SHIFTER_CUSTOMSTEP_KEY, ""): startDir = os.environ.get(MGEAR_SHIFTER_CUSTOMSTEP_KEY, "") else: startDir = self.root.attr(stepAttr).get() - filePath = pm.fileDialog2(dialogStyle=2, fileMode=1, startingDirectory=startDir, okc="Add", - fileFilter='Custom Step .py (*.py)') + filePath = pm.fileDialog2( + dialogStyle=2, + fileMode=1, + startingDirectory=startDir, + okc="Add", + fileFilter='Custom Step .py (*.py)') if not filePath: return if not isinstance(filePath, basestring): filePath = filePath[0] # Quick clean the first empty item - itemsList = [i.text() for i in stepWidget.findItems("", QtCore.Qt.MatchContains)] + itemsList = [i.text() for i in stepWidget.findItems( + "", QtCore.Qt.MatchContains)] if itemsList and not itemsList[0]: stepWidget.takeItem(0) - if os.environ.get(MGEAR_SHIFTER_CUSTOMSTEP_KEY, ""): + if os.environ.get(MGEAR_SHIFTER_CUSTOMSTEP_KEY, ""): filePath = os.path.abspath(filePath) - baseReplace = os.path.abspath(os.environ.get(MGEAR_SHIFTER_CUSTOMSTEP_KEY, "")) + baseReplace = os.path.abspath(os.environ.get( + MGEAR_SHIFTER_CUSTOMSTEP_KEY, "")) filePath = filePath.replace(baseReplace, "")[1:] - fileName = os.path.split(filePath)[1].split(".")[0] - stepWidget.addItem(fileName +" | "+filePath) + stepWidget.addItem(fileName + " | " + filePath) self.updateListAttr(stepWidget, stepAttr) def newCustomStep(self, pre=True, *args): @@ -1170,14 +1285,18 @@ def newCustomStep(self, pre=True, *args): stepAttr = "postCustomStep" stepWidget = self.customStepTab.postCustomStep_listWidget - # Check if we have a custom enviroment for the custom steps initial folder - if os.environ.get(MGEAR_SHIFTER_CUSTOMSTEP_KEY, ""): + # Check if we have a custom env for the custom steps initial folder + if os.environ.get(MGEAR_SHIFTER_CUSTOMSTEP_KEY, ""): startDir = os.environ.get(MGEAR_SHIFTER_CUSTOMSTEP_KEY, "") else: startDir = self.root.attr(stepAttr).get() - filePath = pm.fileDialog2(dialogStyle=2, fileMode=0, startingDirectory=startDir, okc="New", - fileFilter='Custom Step .py (*.py)') + filePath = pm.fileDialog2( + dialogStyle=2, + fileMode=0, + startingDirectory=startDir, + okc="New", + fileFilter='Custom Step .py (*.py)') if not filePath: return if not isinstance(filePath, basestring): @@ -1198,32 +1317,36 @@ def __init__(self): def run(self, stepDict): """Run method. - i.e: stepDict["mgearRun"].global_ctl gets the global_ctl from shifter rig on post step - i.e: stepDict["otherCustomStepName"].ctlMesh gets the ctlMesh from a previous custom - step called "otherCustomStepName" + i.e: stepDict["mgearRun"].global_ctl gets the global_ctl from + shifter rig on post step + i.e: stepDict["otherCustomStepName"].ctlMesh gets the ctlMesh + from a previous custom step called "otherCustomStepName" Args: - stepDict (dic): Dictionary containing the objects from the previous steps + stepDict (dic): Dictionary containing the objects from + the previous steps Returns: None: None """ - return'''%stepName + return''' % stepName f = open(filePath, 'w') f.write(rawString + "\n") f.close() # Quick clean the first empty item - itemsList = [i.text() for i in stepWidget.findItems("", QtCore.Qt.MatchContains)] + itemsList = [i.text() for i in stepWidget.findItems( + "", QtCore.Qt.MatchContains)] if itemsList and not itemsList[0]: stepWidget.takeItem(0) - if os.environ.get(MGEAR_SHIFTER_CUSTOMSTEP_KEY, ""): + if os.environ.get(MGEAR_SHIFTER_CUSTOMSTEP_KEY, ""): filePath = os.path.abspath(filePath) - baseReplace = os.path.abspath(os.environ.get(MGEAR_SHIFTER_CUSTOMSTEP_KEY, "")) + baseReplace = os.path.abspath(os.environ.get( + MGEAR_SHIFTER_CUSTOMSTEP_KEY, "")) filePath = filePath.replace(baseReplace, "")[1:] fileName = os.path.split(filePath)[1].split(".")[0] - stepWidget.addItem(fileName +" | "+filePath) + stepWidget.addItem(fileName + " | " + filePath) self.updateListAttr(stepWidget, stepAttr) def duplicateCustomStep(self, pre=True, *args): @@ -1244,69 +1367,79 @@ def duplicateCustomStep(self, pre=True, *args): stepAttr = "postCustomStep" stepWidget = self.customStepTab.postCustomStep_listWidget - # Check if we have a custom enviroment for the custom steps initial folder - if os.environ.get(MGEAR_SHIFTER_CUSTOMSTEP_KEY, ""): + # Check if we have a custom env for the custom steps initial folder + if os.environ.get(MGEAR_SHIFTER_CUSTOMSTEP_KEY, ""): startDir = os.environ.get(MGEAR_SHIFTER_CUSTOMSTEP_KEY, "") else: startDir = self.root.attr(stepAttr).get() if stepWidget.selectedItems(): - sourcePath = stepWidget.selectedItems()[0].text().split("|")[-1][1:] - - filePath = pm.fileDialog2(dialogStyle=2, fileMode=0, startingDirectory=startDir, okc="New", - fileFilter='Custom Step .py (*.py)') + sourcePath = stepWidget.selectedItems()[0].text().split( + "|")[-1][1:] + + filePath = pm.fileDialog2( + dialogStyle=2, + fileMode=0, + startingDirectory=startDir, + okc="New", + fileFilter='Custom Step .py (*.py)') if not filePath: return if not isinstance(filePath, basestring): filePath = filePath[0] - if os.environ.get(MGEAR_SHIFTER_CUSTOMSTEP_KEY, ""): + if os.environ.get(MGEAR_SHIFTER_CUSTOMSTEP_KEY, ""): sourcePath = os.path.join(startDir, sourcePath) shutil.copy(sourcePath, filePath) # Quick clean the first empty item - itemsList = [i.text() for i in stepWidget.findItems("", QtCore.Qt.MatchContains)] + itemsList = [i.text() for i in stepWidget.findItems( + "", QtCore.Qt.MatchContains)] if itemsList and not itemsList[0]: stepWidget.takeItem(0) - if os.environ.get(MGEAR_SHIFTER_CUSTOMSTEP_KEY, ""): + if os.environ.get(MGEAR_SHIFTER_CUSTOMSTEP_KEY, ""): filePath = os.path.abspath(filePath) - baseReplace = os.path.abspath(os.environ.get(MGEAR_SHIFTER_CUSTOMSTEP_KEY, "")) + baseReplace = os.path.abspath(os.environ.get( + MGEAR_SHIFTER_CUSTOMSTEP_KEY, "")) filePath = filePath.replace(baseReplace, "")[1:] - fileName = os.path.split(filePath)[1].split(".")[0] - stepWidget.addItem(fileName +" | "+filePath) + stepWidget.addItem(fileName + " | " + filePath) self.updateListAttr(stepWidget, stepAttr) def exportCustomStep(self, pre=True, *args): """Export custom steps to a json file Args: - pre (bool, optional): If true takes the steps from the pre step list + pre (bool, optional): If true takes the steps from the + pre step list *args: Maya's Dummy Returns: None: None """ if pre: - stepAttr = "preCustomStep" stepWidget = self.customStepTab.preCustomStep_listWidget else: - stepAttr = "postCustomStep" stepWidget = self.customStepTab.postCustomStep_listWidget # Quick clean the first empty item - itemsList = [i.text() for i in stepWidget.findItems("", QtCore.Qt.MatchContains)] + itemsList = [i.text() for i in stepWidget.findItems( + "", QtCore.Qt.MatchContains)] if itemsList and not itemsList[0]: stepWidget.takeItem(0) - # Check if we have a custom enviroment for the custom steps initial folder - if os.environ.get(MGEAR_SHIFTER_CUSTOMSTEP_KEY, ""): + # Check if we have a custom env for the custom steps initial folder + if os.environ.get(MGEAR_SHIFTER_CUSTOMSTEP_KEY, ""): startDir = os.environ.get(MGEAR_SHIFTER_CUSTOMSTEP_KEY, "") - itemsList = [os.path.join(startDir, i.text().split("|")[-1][1:]) for i in stepWidget.findItems("", QtCore.Qt.MatchContains)] + itemsList = [os.path.join(startDir, i.text().split("|")[-1][1:]) + for i in stepWidget.findItems( + "", QtCore.Qt.MatchContains)] else: - itemsList = [i.text().split("|")[-1][1:] for i in stepWidget.findItems("", QtCore.Qt.MatchContains)] + itemsList = [i.text().split("|")[-1][1:] + for i in stepWidget.findItems( + "", QtCore.Qt.MatchContains)] if itemsList: startDir = os.path.split(itemsList[-1])[0] else: @@ -1314,7 +1447,7 @@ def exportCustomStep(self, pre=True, *args): return stepsDict = {} - stepsDict["itemsList"] = itemsList + stepsDict["itemsList"] = itemsList for item in itemsList: step = open(item, "r") data = step.read() @@ -1322,8 +1455,11 @@ def exportCustomStep(self, pre=True, *args): step.close() data_string = json.dumps(stepsDict, indent=4, sort_keys=True) - filePath = pm.fileDialog2(dialogStyle=2, fileMode=0, startingDirectory=startDir, - fileFilter='Shifter Custom Steps .scs (*%s)' %".scs") + filePath = pm.fileDialog2( + dialogStyle=2, + fileMode=0, + startingDirectory=startDir, + fileFilter='Shifter Custom Steps .scs (*%s)' % ".scs") if not filePath: return if not isinstance(filePath, basestring): @@ -1350,19 +1486,26 @@ def importCustomStep(self, pre=True, *args): stepWidget = self.customStepTab.postCustomStep_listWidget # option import only paths or unpack steps - option = pm.confirmDialog( title='Shifter Custom Step Import Style', - message='Do you want to import only the path or unpack and import?', - button=['Only Path','Unpack', 'Cancel'], defaultButton='Only Path', - cancelButton='Cancel', dismissString='Cancel' ) - - if option in ['Only Path', 'Unpack' ]: - if os.environ.get(MGEAR_SHIFTER_CUSTOMSTEP_KEY, ""): + option = pm.confirmDialog( + title='Shifter Custom Step Import Style', + message='Do you want to import only the path or' + ' unpack and import?', + button=['Only Path', 'Unpack', 'Cancel'], + defaultButton='Only Path', + cancelButton='Cancel', + dismissString='Cancel') + + if option in ['Only Path', 'Unpack']: + if os.environ.get(MGEAR_SHIFTER_CUSTOMSTEP_KEY, ""): startDir = os.environ.get(MGEAR_SHIFTER_CUSTOMSTEP_KEY, "") else: startDir = pm.workspace(q=True, rootDirectory=True) - filePath = pm.fileDialog2( dialogStyle=2, fileMode=1, startingDirectory=startDir, - fileFilter='Shifter Custom Steps .scs (*%s)' %".scs") + filePath = pm.fileDialog2( + dialogStyle=2, + fileMode=1, + startingDirectory=startDir, + fileFilter='Shifter Custom Steps .scs (*%s)' % ".scs") if not filePath: return if not isinstance(filePath, basestring): @@ -1370,12 +1513,15 @@ def importCustomStep(self, pre=True, *args): stepDict = json.load(open(filePath)) stepsList = [] - if option =='Only Path': + if option == 'Only Path': for item in stepDict["itemsList"]: stepsList.append(item) elif option == 'Unpack': - unPackDir = pm.fileDialog2(dialogStyle=2, fileMode=2, startingDirectory=startDir) + unPackDir = pm.fileDialog2( + dialogStyle=2, + fileMode=2, + startingDirectory=startDir) if not filePath: return if not isinstance(unPackDir, basestring): @@ -1389,22 +1535,23 @@ def importCustomStep(self, pre=True, *args): f.write(stepDict[item]) f.close() - if option in ['Only Path', 'Unpack' ]: + if option in ['Only Path', 'Unpack']: for item in stepsList: # Quick clean the first empty item - itemsList = [i.text() for i in stepWidget.findItems("", QtCore.Qt.MatchContains)] + itemsList = [i.text() for i in stepWidget.findItems( + "", QtCore.Qt.MatchContains)] if itemsList and not itemsList[0]: stepWidget.takeItem(0) - if os.environ.get(MGEAR_SHIFTER_CUSTOMSTEP_KEY, ""): + if os.environ.get(MGEAR_SHIFTER_CUSTOMSTEP_KEY, ""): item = os.path.abspath(item) - baseReplace = os.path.abspath(os.environ.get(MGEAR_SHIFTER_CUSTOMSTEP_KEY, "")) + baseReplace = os.path.abspath(os.environ.get( + MGEAR_SHIFTER_CUSTOMSTEP_KEY, "")) item = item.replace(baseReplace, "")[1:] - fileName = os.path.split(item)[1].split(".")[0] - stepWidget.addItem(fileName +" | "+item) + stepWidget.addItem(fileName + " | " + item) self.updateListAttr(stepWidget, stepAttr) From 528c86820c32c9288cd9598cc6311351ab507f95 Mon Sep 17 00:00:00 2001 From: miquelcampos Date: Fri, 17 Nov 2017 12:25:21 +0900 Subject: [PATCH 057/134] PEP8 #100 : shifter refactor: component/__init__.py --- .../mgear/maya/shifter/component/__init__.py | 676 ++++++++++-------- 1 file changed, 368 insertions(+), 308 deletions(-) diff --git a/scripts/mgear/maya/shifter/component/__init__.py b/scripts/mgear/maya/shifter/component/__init__.py index dd0f6e7..67b3779 100644 --- a/scripts/mgear/maya/shifter/component/__init__.py +++ b/scripts/mgear/maya/shifter/component/__init__.py @@ -1,28 +1,3 @@ -# MGEAR is under the terms of the MIT License - -# Copyright (c) 2016 Jeremie Passerin, Miquel Campos - -# Permission is hereby granted, free of charge, to any person obtaining a copy -# of this software and associated documentation files (the "Software"), to deal -# in the Software without restriction, including without limitation the rights -# to use, copy, modify, merge, publish, distribute, sublicense, and/or sell -# copies of the Software, and to permit persons to whom the Software is -# furnished to do so, subject to the following conditions: - -# The above copyright notice and this permission notice shall be included in all -# copies or substantial portions of the Software. - -# THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR -# IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, -# FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE -# AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER -# LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, -# OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE -# SOFTWARE. - -# Author: Jeremie Passerin geerem@hotmail.com www.jeremiepasserin.com -# Author: Miquel Campos hello@miquel-campos.com www.miquel-campos.com -# Date: 2016 / 10 / 10 """ Shifter component rig class. @@ -33,32 +8,32 @@ ############################################# # pymel import pymel.core as pm -import pymel.core.datatypes as dt +from pymel.core import datatypes from pymel import versions # mgear import mgear -import mgear.maya.primitive as pri -import mgear.maya.vector as vec -import mgear.maya.transform as tra -import mgear.maya.attribute as att -import mgear.maya.applyop as aop +from mgear.maya import primitive, vector, transform, attribute +# node and icon imported with alias to avoid confusion with variables of the +# same name import mgear.maya.node as nod import mgear.maya.icon as ico ############################################# # COMPONENT ############################################# + + class Main(object): - """ - Main component class + """Main component class Attributes: rig (Rig): The parent Rig of this component. guide (ComponentGuide): The guide for this component. """ - steps = ["Objects", "Properties", "Operators", "Connect", "Joints", "Finalize"] + steps = ["Objects", "Properties", "Operators", + "Connect", "Joints", "Finalize"] local_params = ("tx", "ty", "tz", "rx", "ry", "rz", "ro", "sx", "sy", "sz") t_params = ("tx", "ty", "tz") @@ -66,9 +41,9 @@ class Main(object): s_params = ("sx", "sy", "sz") tr_params = ("tx", "ty", "tz", "rx", "ry", "rz", "ro") rs_params = ("rx", "ry", "rz", "ro", "sx", "sy", "sz") - x_axis = dt.Vector(1,0,0) - y_axis = dt.Vector(0,1,0) - z_axis = dt.Vector(0,0,1) + x_axis = datatypes.Vector(1, 0, 0) + y_axis = datatypes.Vector(0, 1, 0) + z_axis = datatypes.Vector(0, 0, 1) def __init__(self, rig, guide): @@ -103,22 +78,23 @@ def __init__(self, rig, guide): # -------------------------------------------------- # Builder init - self.groups = {} ## Dictionary of groups - self.subGroups = {} ## Dictionary of subGroups - self.controlers = [] ## List of all the controllers of the component + self.groups = {} # Dictionary of groups + self.subGroups = {} # Dictionary of subGroups + self.controlers = [] # List of all the controllers of the component # -------------------------------------------------- # Connector init self.connections = {} - self.connections["standard"] = self.connect_standard + self.connections["standard"] = self.connect_standard self.relatives = {} - self.jointRelatives = {} #joint relatives mapping for automatic connection + self.jointRelatives = {} # joint relatives mapping for auto connection self.controlRelatives = {} # -------------------------------------------------- # Joint positions init - # jnt_pos is a list of lists [Joint position object + name + optional flag "parent_jnt_org" or object fullName ] + # jnt_pos is a list of lists [Joint position object + name + optional + # flag "parent_jnt_org" or object fullName ] self.jnt_pos = [] self.jointList = [] @@ -126,15 +102,18 @@ def __init__(self, rig, guide): # -------------------------------------------------- # Step - self.stepMethods = [eval("self.step_0%s"%i) for i in range(len(self.steps))] + self.stepMethods = [eval("self.step_0%s" % i) + for i in range(len(self.steps))] # ===================================================== # BUILDING STEP # ===================================================== def step_00(self): - """ - Step 00. PreScript, initial Hierarchy, create objects and set the connection relation. + """Step 00. + + PreScript, initial Hierarchy, create objects and set the connection + relation. """ self.preScript() self.initialHierarchy() @@ -143,10 +122,10 @@ def step_00(self): self.setRelation() return - def step_01(self): - """ - Step 01. Get the properties host, create parameters and set layout and logic. + """Step 01. + + Get the properties host, create parameters and set layout and logic. """ self.getHost() self.validateProxyChannels() @@ -154,7 +133,6 @@ def step_01(self): self.addAttributes() return - def step_02(self): """ Step 02. Apply all the operators. @@ -162,7 +140,6 @@ def step_02(self): self.addOperators() return - def step_03(self): """ Step 03. Connect the component to the rest of the rig. @@ -173,7 +150,6 @@ def step_03(self): self.postConnect() return - def step_04(self): """ Step 04. Joint structure creation. @@ -181,7 +157,6 @@ def step_04(self): self.jointStructure() return - def step_05(self): """ Step 05. Finalize the component and post Script. @@ -198,37 +173,43 @@ def preScript(self): """ return - def initialHierarchy(self): """ Create the inital structure for the rig. """ # Root - self.root = pri.addTransformFromPos(self.model, self.getName("root"), self.guide.pos["root"]) - self.addToGroup( self.root, names=["componentsRoots"]) - - #infos - att.addAttribute(self.root, "componentType", "string", self.guide.compType) - att.addAttribute(self.root, "componentName", "string", self.guide.compName) - att.addAttribute(self.root, "componentVersion", "string", str(self.guide.version)[1:-1]) - att.addAttribute(self.root, "componentAuthor", "string", self.guide.author) - att.addAttribute(self.root, "componentURL", "string", self.guide.url) - att.addAttribute(self.root, "componentEmail", "string", self.guide.email) + self.root = primitive.addTransformFromPos( + self.model, self.getName("root"), self.guide.pos["root"]) + self.addToGroup(self.root, names=["componentsRoots"]) + + # infos + attribute.addAttribute(self.root, "componentType", + "string", self.guide.compType) + attribute.addAttribute(self.root, "componentName", + "string", self.guide.compName) + attribute.addAttribute(self.root, "componentVersion", + "string", str(self.guide.version)[1:-1]) + attribute.addAttribute(self.root, "componentAuthor", + "string", self.guide.author) + attribute.addAttribute(self.root, "componentURL", + "string", self.guide.url) + attribute.addAttribute(self.root, "componentEmail", + "string", self.guide.email) # joint -------------------------------- if self.options["joint_rig"]: - self.component_jnt_org = pri.addTransform(self.rig.jnt_org, self.getName("jnt_org")) - # The initial assigment of the active jnt and the parent relative jnt is the same, later will be updated base in the user options + self.component_jnt_org = primitive.addTransform( + self.rig.jnt_org, self.getName("jnt_org")) + # The initial assigment of the active jnt and the parent relative + # jnt is the same, later will be updated base in the user options self.active_jnt = self.component_jnt_org self.parent_relative_jnt = self.component_jnt_org return - def addObjects(self): - """ - This method creates the objects of the component. + """This method creates the objects of the component. Note: REIMPLEMENT. This method should be reimplemented in each component. @@ -236,20 +217,22 @@ def addObjects(self): """ return - def addJoint(self, obj, name, newActiveJnt=None, UniScale=True, segComp=0, gearMulMatrix=True): - """ - Add joint as child of the active joint or under driver object. + def addJoint(self, obj, name, newActiveJnt=None, UniScale=True, segComp=0, + gearMulMatrix=True): + """Add joint as child of the active joint or under driver object. Args: obj (dagNode): The input driver object for the joint. name (str): The joint name. - newActiveJnt (bool or dagNode): If a joint is pass, this joint will be the active joint - and parent of the newly created joint. - UniScale (bool): Connects the joint scale with the Z axis for a unifor scalin, if set False - will connect with each axis separated. - segComp (bool): Set True or False the segment compensation in the joint.. - gearMulMatrix (bool): Use the custom gear_multiply matrix node, if False will use - Maya's default mulMatrix node. + newActiveJnt (bool or dagNode): If a joint is pass, this joint will + be the active joint and parent of the newly created joint. + UniScale (bool): Connects the joint scale with the Z axis for a + unifor scalin, if set Falsewill connect with each axis + separated. + segComp (bool): Set True or False the segment compensation in the + joint.. + gearMulMatrix (bool): Use the custom gear_multiply matrix node, if + False will use Maya's default mulMatrix node. Returns: dagNode: The newly created joint. @@ -260,36 +243,44 @@ def addJoint(self, obj, name, newActiveJnt=None, UniScale=True, segComp=0, gearM if newActiveJnt: self.active_jnt = newActiveJnt - jnt = pri.addJoint(self.active_jnt, self.getName(str(name) + "_jnt"), tra.getTransform(obj)) - #All new jnts are the active by default + jnt = primitive.addJoint(self.active_jnt, self.getName( + str(name) + "_jnt"), transform.getTransform(obj)) + # All new jnts are the active by default self.active_jnt = jnt if gearMulMatrix: - mulmat_node = aop.gear_mulmatrix_op(obj + ".worldMatrix", jnt + ".parentInverseMatrix") - dm_node = nod.createDecomposeMatrixNode(mulmat_node+".output") + mulmat_node = attribute.gear_mulmatrix_op( + obj + ".worldMatrix", jnt + ".parentInverseMatrix") + dm_node = nod.createDecomposeMatrixNode( + mulmat_node + ".output") m = mulmat_node.attr('output').get() else: - mulmat_node = nod.createMultMatrixNode(obj + ".worldMatrix", jnt + ".parentInverseMatrix") - dm_node = nod.createDecomposeMatrixNode(mulmat_node+".matrixSum") + mulmat_node = nod.createMultMatrixNode( + obj + ".worldMatrix", jnt + ".parentInverseMatrix") + dm_node = nod.createDecomposeMatrixNode( + mulmat_node + ".matrixSum") m = mulmat_node.attr('matrixSum').get() - pm.connectAttr(dm_node+".outputTranslate", jnt+".t") - pm.connectAttr(dm_node+".outputRotate", jnt+".r") + pm.connectAttr(dm_node + ".outputTranslate", jnt + ".t") + pm.connectAttr(dm_node + ".outputRotate", jnt + ".r") # TODO: fix squash stretch solver to scale the joint uniform - # the next line cheat the uniform scaling only fo X or Y axis oriented joints + # the next line cheat the uniform scaling only fo X or Y axis + # oriented joints if UniScale: - pm.connectAttr(dm_node+".outputScaleZ", jnt+".sx") - pm.connectAttr(dm_node+".outputScaleZ", jnt+".sy") - pm.connectAttr(dm_node+".outputScaleZ", jnt+".sz") + pm.connectAttr(dm_node + ".outputScaleZ", jnt + ".sx") + pm.connectAttr(dm_node + ".outputScaleZ", jnt + ".sy") + pm.connectAttr(dm_node + ".outputScaleZ", jnt + ".sz") else: - pm.connectAttr(dm_node+".outputScale", jnt+".s") - pm.connectAttr(dm_node+".outputShear", jnt+".shear") + pm.connectAttr(dm_node + ".outputScale", jnt + ".s") + pm.connectAttr(dm_node + ".outputShear", jnt + ".shear") - # Segment scale compensate Off to avoid issues with the global scale + # Segment scale compensate Off to avoid issues with the global + # scale jnt.setAttr("segmentScaleCompensate", segComp) jnt.setAttr("jointOrient", 0, 0, 0) - # setting the joint orient compensation in order to have clean rotation channels + # setting the joint orient compensation in order to have clean + # rotation channels jnt.attr("jointOrientX").set(jnt.attr("rx").get()) jnt.attr("jointOrientY").set(jnt.attr("ry").get()) jnt.attr("jointOrientZ").set(jnt.attr("rz").get()) @@ -297,19 +288,21 @@ def addJoint(self, obj, name, newActiveJnt=None, UniScale=True, segComp=0, gearM im = m.inverse() if gearMulMatrix: - aop.gear_mulmatrix_op(mulmat_node.attr('output'), im, jnt,'r') + attribute.gear_mulmatrix_op(mulmat_node.attr('output'), + im, jnt, 'r') else: - nod.createMultMatrixNode(mulmat_node.attr('matrixSum'), im, jnt,'r') + nod.createMultMatrixNode( + mulmat_node.attr('matrixSum'), im, jnt, 'r') else: - jnt = pri.addJoint(obj, self.getName(str(name)+"_jnt"), tra.getTransform(obj)) + jnt = primitive.addJoint(obj, self.getName( + str(name) + "_jnt"), transform.getTransform(obj)) pm.connectAttr(self.rig.jntVis_att, jnt.attr("visibility")) self.addToGroup(jnt, "deformers") return jnt - def getNormalFromPos(self, pos): """ Get the normal vector from 3 positions. @@ -322,10 +315,10 @@ def getNormalFromPos(self, pos): """ if len(pos) < 3: - mgear.log("%s : Not enough references to define normal"%self.fullName, mgear.sev_error) - - return vec.getPlaneNormal(pos[0], pos[1], pos[2]) + mgear.log("%s : Not enough references to define normal" % + self.fullName, mgear.sev_error) + return vector.getPlaneNormal(pos[0], pos[1], pos[2]) def getBiNormalFromPos(self, pos): """ @@ -339,10 +332,10 @@ def getBiNormalFromPos(self, pos): """ if len(pos) < 3: - mgear.log("%s : Not enough references to define binormal"%self.fullName, mgear.sev_error) - - return vec.getPlaneBiNormal(pos[0], pos[1], pos[2]) + mgear.log("%s : Not enough references to define binormal" % + self.fullName, mgear.sev_error) + return vector.getPlaneBiNormal(pos[0], pos[1], pos[2]) def addCtl(self, parent, name, m, color, icon, tp=None, lp=True, **kwargs): """ @@ -353,9 +346,11 @@ def addCtl(self, parent, name, m, color, icon, tp=None, lp=True, **kwargs): parent (dagNode): The control parent name (str): The control name. m (matrix): The transfromation matrix for the control. - color (int or list of float): The color for the control in idex or RGB. + color (int or list of float): The color for the control in index or + RGB. icon (str): The controls default shape. - tp (dagNode): Tag Parent Control object to connect as a parent controller + tp (dagNode): Tag Parent Control object to connect as a parent + controller lp (bool): Lock the parent controller channels kwargs (variant): Other arguments for the icon type variations. @@ -364,36 +359,45 @@ def addCtl(self, parent, name, m, color, icon, tp=None, lp=True, **kwargs): """ fullName = self.getName(name) - bufferName = fullName+"_controlBuffer" + bufferName = fullName + "_controlBuffer" if bufferName in self.rig.guide.controllers.keys(): ctl_ref = self.rig.guide.controllers[bufferName] - ctl = pri.addTransform(parent, fullName, m) + ctl = primitive.addTransform(parent, fullName, m) for shape in ctl_ref.getShapes(): ctl.addChild(shape, shape=True, add=True) - pm.rename(shape, fullName+"Shape") + pm.rename(shape, fullName + "Shape") ico.setcolor(ctl, color) else: ctl = ico.create(parent, fullName, m, color, icon, **kwargs) # create the attributes to handlde mirror and symetrical pose - att.addAttribute(ctl, "invTx", "bool", 0, keyable=False, niceName="Invert Mirror TX") - att.addAttribute(ctl, "invTy", "bool", 0, keyable=False, niceName="Invert Mirror TY") - att.addAttribute(ctl, "invTz", "bool", 0, keyable=False, niceName="Invert Mirror TZ") - att.addAttribute(ctl, "invRx", "bool", 0, keyable=False, niceName="Invert Mirror RX") - att.addAttribute(ctl, "invRy", "bool", 0, keyable=False, niceName="Invert Mirror RY") - att.addAttribute(ctl, "invRz", "bool", 0, keyable=False, niceName="Invert Mirror RZ") - att.addAttribute(ctl, "invSx", "bool", 0, keyable=False, niceName="Invert Mirror SX") - att.addAttribute(ctl, "invSy", "bool", 0, keyable=False, niceName="Invert Mirror SY") - att.addAttribute(ctl, "invSz", "bool", 0, keyable=False, niceName="Invert Mirror SZ") + attribute.addAttribute(ctl, "invTx", "bool", 0, keyable=False, + niceName="Invert Mirror TX") + attribute.addAttribute(ctl, "invTy", "bool", 0, keyable=False, + niceName="Invert Mirror TY") + attribute.addAttribute(ctl, "invTz", "bool", 0, keyable=False, + niceName="Invert Mirror TZ") + attribute.addAttribute(ctl, "invRx", "bool", 0, keyable=False, + niceName="Invert Mirror RX") + attribute.addAttribute(ctl, "invRy", "bool", 0, keyable=False, + niceName="Invert Mirror RY") + attribute.addAttribute(ctl, "invRz", "bool", 0, keyable=False, + niceName="Invert Mirror RZ") + attribute.addAttribute(ctl, "invSx", "bool", 0, keyable=False, + niceName="Invert Mirror SX") + attribute.addAttribute(ctl, "invSy", "bool", 0, keyable=False, + niceName="Invert Mirror SY") + attribute.addAttribute(ctl, "invSz", "bool", 0, keyable=False, + niceName="Invert Mirror SZ") if self.settings["ctlGrp"]: ctlGrp = self.settings["ctlGrp"] - self.addToGroup(ctl, ctlGrp, "controllers") + self.addToGroup(ctl, ctlGrp, "controllers") else: ctlGrp = "controllers" self.addToGroup(ctl, ctlGrp) - #lock the control parent attributes if is not a control + # lock the control parent attributes if is not a control if parent not in self.groups[ctlGrp] and lp: self.transform2Lock.append(parent) @@ -401,54 +405,58 @@ def addCtl(self, parent, name, m, color, icon, tp=None, lp=True, **kwargs): for oShape in ctl.getShapes(): oShape.isHistoricallyInteresting.set(False) - #set controller tag + # set controller tag if versions.current() >= 201650: try: - oldTag = pm.PyNode( ctl.name()+"_tag" ) + oldTag = pm.PyNode(ctl.name() + "_tag") if not oldTag.controllerObject.connections(): - # NOTE: The next line is comment out. Because this will happend alot since maya does't clean - # controller tags after deleting the control Object of the tag. This have been log to Autodesk. + # NOTE: The next line is comment out. Because this will + # happend alot since maya does't clean + # controller tags after deleting the control Object of the + # tag. This have been log to Autodesk. # If orphane tags are found, it will be clean in silence. - # pm.displayWarning("Orphane Tag: %s will be delete and created new for: %s"%(oldTag.name(), ctl.name())) + # pm.displayWarning("Orphane Tag: %s will be delete and + # created new for: %s"%(oldTag.name(), ctl.name())) pm.delete(oldTag) - except: + except TypeError: pass pm.controller(ctl) - if tp: ctt = pm.PyNode(pm.controller(ctl, q=True)[0]) tpTagNode = pm.PyNode(pm.controller(tp, q=True)[0]) tpTagNode.cycleWalkSibling.set(True) pm.connectAttr(tpTagNode.prepopulate, ctt.prepopulate, f=True) # The connectAttr to the children attribute is giving error - # i.e: pm.connectAttr(ctt.attr("parent"), tpTagNode.attr("children"), na=True) + # i.e: pm.connectAttr(ctt.attr("parent"), + # tpTagNode.attr("children"), na=True) # if using the next available option tag - # I was expecting to use ctt.setParent(tp) but doest't work as expected. - # After reading the documentation this method looks prety useless. + # I was expecting to use ctt.setParent(tp) but doest't work as + # expected. + # After reading the documentation this method looks prety + # useless. # Looks like is boolean and works based on selection :( # this is a dirty loop workaround. Naaah! i = 0 while True: try: - pm.connectAttr(ctt.parent, tpTagNode.attr("children[%s]"%str(i))) + pm.connectAttr(ctt.parent, tpTagNode.attr( + "children[%s]" % str(i))) break - except: - i+=1 - if i >100: - pm.displayWarning("The controller tag for %s has reached the limit index of 100 children"%ctl.name()) + except RuntimeError: + i += 1 + if i > 100: + pm.displayWarning( + "The controller tag for %s has reached the " + "limit index of 100 children" % ctl.name()) break - - return ctl - def addToGroup(self, objects, names=["hidden"], parentGrp=None): - """ - Add the object in a collection for later group creation. + """Add the object in a collection for later group creation. Args: objects (dagNode or list of dagNode): Object to put in the group. @@ -473,33 +481,29 @@ def addToGroup(self, objects, names=["hidden"], parentGrp=None): if name not in self.subGroups[parentGrp]: self.subGroups[parentGrp].append(name) - - # ===================================================== # PROPERTY # ===================================================== def getHost(self): - """ - Get the host for the properties. - """ + """Get the host for the properties""" self.uihost = self.rig.findRelative(self.settings["ui_host"]) def validateProxyChannels(self): - """ - Check the Maya version to determinate if we can use proxy channels - and check user setting on the guide. + """Check the Maya version to determinate if we can use proxy channels + + Also check user setting on the guide. This feature is available from 2016.5 + """ - if versions.current() >= 201650 and self.options["proxyChannels"]: + if versions.current() >= 201650 and self.options["proxyChannels"]: self.validProxyChannels = True else: self.validProxyChannels = False def addAttributes(self): - """ - This method add the attributes of the component. + """This method add the attributes of the component. Note: REIMPLEMENT. This method should be reimplemented in each component. @@ -507,110 +511,139 @@ def addAttributes(self): """ return - def addFullNameParam(self): - """ - Add a parameter to the animation property. + """Add a parameter to the animation property. + Note that animatable and keyable are True per default. """ # attr = self.addAnimEnumParam("", "", 0, ["---------------"] ) if self.options["classicChannelNames"]: - attr = self.addAnimEnumParam(self.getName(), "__________", 0, [self.getName()] ) + attr = self.addAnimEnumParam( + self.getName(), "__________", 0, [self.getName()]) else: - attr = self.addAnimEnumParam(self.guide.compName, "__________", 0, [self.guide.compName] ) + attr = self.addAnimEnumParam( + self.guide.compName, "__________", 0, [self.guide.compName]) return attr + def addAnimParam(self, longName, niceName, attType, value, minValue=None, + maxValue=None, keyable=True, readable=True, storable=True, + writable=True): + """Add a parameter to the animation property. - def addAnimParam(self, longName, niceName, attType, value, minValue=None, maxValue=None, keyable=True, readable=True, storable=True, writable=True): - """ - Add a parameter to the animation property. Note that animatable and keyable are True per default. Args: longName (str): The attribute name. niceName (str): The attribute nice name. (optional) - attType (str): The Attribute Type. Exp: 'string', 'bool', 'long', etc.. + attType (str): The Attribute Type.Exp:'string', 'bool', 'long', etc value (float or int): The default value. minValue (float or int): minimum value. (optional) maxValue (float or int): maximum value. (optional) keyable (bool): Set if the attribute is keyable or not. (optional) - readable (bool): Set if the attribute is readable or not. (optional) - storable (bool): Set if the attribute is storable or not. (optional) - writable (bool): Set if the attribute is writable or not. (optional) + readable (bool): Set if the attribute is readable or not.(optional) + storable (bool): Set if the attribute is storable or not.(optional) + writable (bool): Set if the attribute is writable or not.(optional) Returns: str: The long name of the new attribute """ if self.options["classicChannelNames"]: - attr = att.addAttribute(self.uihost, self.getName(longName), attType, value, niceName, None, minValue=minValue, maxValue=maxValue, keyable=keyable, readable=readable, storable=storable, writable=writable) + attr = attribute.addAttribute(self.uihost, self.getName(longName), + attType, value, niceName, None, + minValue=minValue, maxValue=maxValue, + keyable=keyable, readable=readable, + storable=storable, writable=writable) else: if self.uihost.hasAttr(self.getCompName(longName)): attr = self.uihost.attr(self.getCompName(longName)) else: - attr = att.addAttribute(self.uihost, self.getCompName(longName), attType, value, niceName, None, minValue=minValue, maxValue=maxValue, keyable=keyable, readable=readable, storable=storable, writable=writable) + attr = attribute.addAttribute(self.uihost, + self.getCompName(longName), + attType, value, niceName, None, + minValue=minValue, + maxValue=maxValue, + keyable=keyable, + readable=readable, + storable=storable, + writable=writable) return attr - ## Add a parameter to the animation property.\n + # Add a parameter to the animation property.\n # Note that animatable and keyable are True per default. # @param self - def addAnimEnumParam(self, longName, niceName, value, enum=[], keyable=True, readable=True, storable=True, writable=True): - """ - Add a parameter to the animation property. + def addAnimEnumParam(self, longName, niceName, value, enum=[], + keyable=True, readable=True, storable=True, + writable=True): + """Add a parameter to the animation property. + Note that animatable and keyable are True per default. Args: longName (str): The attribute name. niceName (str): The attribute nice name. (optional) - attType (str): The Attribute Type. Exp: 'string', 'bool', 'long', etc.. + attType (str): The Attribute Type. Exp: 'string', 'bool', etc.. value (float or int): The default value. enum (list of str): The list of elements in the enumerate control keyable (bool): Set if the attribute is keyable or not. (optional) - readable (bool): Set if the attribute is readable or not. (optional) - storable (bool): Set if the attribute is storable or not. (optional) - writable (bool): Set if the attribute is writable or not. (optional) + readable (bool): Set if the attribute is readable or not.(optional) + storable (bool): Set if the attribute is storable or not.(optional) + writable (bool): Set if the attribute is writable or not.(optional) Returns: str: The long name of the new attribute """ if self.options["classicChannelNames"]: - attr = att.addEnumAttribute(self.uihost, self.getName(longName), value, enum, niceName, None, keyable=keyable, readable=readable, storable=storable, writable=writable) + attr = attribute.addEnumAttribute( + self.uihost, self.getName(longName), value, enum, niceName, + None, keyable=keyable, readable=readable, storable=storable, + writable=writable) else: if self.uihost.hasAttr(self.getCompName(longName)): attr = self.uihost.attr(self.getCompName(longName)) else: - attr = att.addEnumAttribute(self.uihost, self.getCompName(longName), value, enum, niceName, None, keyable=keyable, readable=readable, storable=storable, writable=writable) + attr = attribute.addEnumAttribute(self.uihost, + self.getCompName(longName), + value, enum, niceName, None, + keyable=keyable, + readable=readable, + storable=storable, + writable=writable) return attr - - def addSetupParam(self, longName, niceName, attType, value, minValue=None, maxValue=None, keyable=True, readable=True, storable=True, writable=True): - """ - Add a parameter to the setup property. + def addSetupParam(self, longName, niceName, attType, value, minValue=None, + maxValue=None, keyable=True, readable=True, + storable=True, writable=True): + """Add a parameter to the setup property. Note that animatable and keyable are False per default. Args: longName (str): The attribute name. niceName (str): The attribute nice name. (optional) - attType (str): The Attribute Type. Exp: 'string', 'bool', 'long', etc.. + attType (str): The Attribute Type. Exp: 'string', 'bool', etc.. value (float or int): The default value. minValue (float or int): minimum value. (optional) maxValue (float or int): maximum value. (optional) - keyable (bool): Set if the attribute is keyable or not. (optional) - readable (bool): Set if the attribute is readable or not. (optional) - storable (bool): Set if the attribute is storable or not. (optional) - writable (bool): Set if the attribute is writable or not. (optional) + keyable (bool): Set if the attribute is keyable or not.(optional) + readable (bool): Set if the attribute is readable or not.(optional) + storable (bool): Set if the attribute is storable or not.(optional) + writable (bool): Set if the attribute is writable or not.(optional) Returns: str: The long name of the new attribute """ - attr = att.addAttribute(self.root, longName, attType, value, niceName, None, minValue=minValue, maxValue=maxValue, keyable=keyable, readable=readable, storable=storable, writable=writable) + attr = attribute.addAttribute(self.root, longName, attType, value, + niceName, None, minValue=minValue, + maxValue=maxValue, keyable=keyable, + readable=readable, storable=storable, + writable=writable) return attr @@ -618,8 +651,7 @@ def addSetupParam(self, longName, niceName, attType, value, minValue=None, maxVa # OPERATORS # ===================================================== def addOperators(self): - """ - This method add the operators of the component. + """This method add the operators of the component. Note: REIMPLEMENT. This method should be reimplemented in each component. @@ -632,8 +664,7 @@ def addOperators(self): # ===================================================== def addConnection(self): - """ - Add more connection definition to the set. + """Add more connection definition to the set. Note: REIMPLEMENT. This method should be reimplemented in each component. @@ -642,10 +673,8 @@ def addConnection(self): """ return - def setRelation(self): - """ - Set the relation beetween object from guide to rig. + """Set the relation beetween object from guide to rig. Note: REIMPLEMENT. This method should be reimplemented in each component. @@ -655,10 +684,8 @@ def setRelation(self): self.relatives[name] = self.root self.controlRelatives[name] = self.global_ctl - def getRelation(self, name): - """ - Return the relational object from guide to rig. + """Return the relational object from guide to rig. Args: name (str): Local name of the guide object. @@ -668,14 +695,14 @@ def getRelation(self, name): """ if name not in self.relatives.keys(): - mgear.log("Can't find reference for object : " + self.fullName + "." + name, mgear.sev_error) + mgear.log("Can't find reference for object : " + + self.fullName + "." + name, mgear.sev_error) return False return self.relatives[name] def getControlRelation(self, name): - """ - Return the relational object from guide to rig. + """Return the relational object from guide to rig. Args: name (str): Local name of the guide object. @@ -685,42 +712,52 @@ def getControlRelation(self, name): """ if name not in self.controlRelatives.keys(): - mgear.log("Control tag relative: Can't find reference for object : " + self.fullName + "." + name, mgear.sev_error) + mgear.log("Control tag relative: Can't find reference for " + " object : " + self.fullName + "." + name, + mgear.sev_error) return False return self.controlRelatives[name] def initControlTag(self): """Initialice the control tag parent. + The controllers tag are a new feature from Maya 2016.5 and up. Helps to stablish realtions with a custom walkpick. - Also tells maya how to evaluate the control properly on parallel evaluation + Also tells maya how to evaluate the control properly on parallel + evaluation + """ self.parentCtlTag = None if versions.current() >= 201650: parent_name = "none" if self.guide.parentComponent is not None: - parent_name = self.guide.parentComponent.getName(self.guide.parentLocalName) + parent_name = self.guide.parentComponent.getName( + self.guide.parentLocalName) self.parentCtlTag = self.rig.findControlRelative(parent_name) - def initConnector(self): - """ - Initialize the connections beetween the component and his parent component. + """Initialize the connections + + Initialize the connections beetween the component and his parent + component. + """ parent_name = "none" if self.guide.parentComponent is not None: - parent_name = self.guide.parentComponent.getName(self.guide.parentLocalName) + parent_name = self.guide.parentComponent.getName( + self.guide.parentLocalName) self.parent = self.rig.findRelative(parent_name) self.parent_comp = self.rig.findComponent(parent_name) - def connect(self): - """ - Connect the component to the rest of the rig using the defined connection. - """ + """Connect the component + + Connect the component to the rest of the rig using the defined + connection. + """ if self.settings["connector"] not in self.connections.keys(): mgear.log("Unable to connect object", mgear.sev_error) @@ -730,17 +767,19 @@ def connect(self): return True - def connect_standard(self): - """ + """Standard Connection + Standard connection definition. This is a simple parenting of the root. + """ self.parent.addChild(self.root) - def connect_standardWithIkRef(self): - """ + """Standard IK Connection + Standard connection definition with ik and upv references. + """ self.parent.addChild(self.root) @@ -748,11 +787,11 @@ def connect_standardWithIkRef(self): self.connectRef(self.settings["ikrefarray"], self.ik_cns) self.connectRef(self.settings["upvrefarray"], self.upv_cns, True) - - def connect_orientCns(self): - """ + """Connection with ori cns + Connection definition using orientation constraint. + """ self.parent.addChild(self.root) @@ -771,22 +810,21 @@ def connect_orientCns(self): ref.append(self.ik_cns) cns_node = pm.orientConstraint(*ref, maintainOffset=True) - cns_attr = pm.orientConstraint(cns_node, query=True, weightAliasList=True) + cns_attr = pm.orientConstraint( + cns_node, query=True, weightAliasList=True) for i, attr in enumerate(cns_attr): pm.setAttr(attr, 1.0) node_name = pm.createNode("condition") - pm.connectAttr(self.ikref_att, node_name+".firstTerm") - pm.setAttr(node_name+".secondTerm", i) - pm.setAttr(node_name+".operation", 0) - pm.setAttr(node_name+".colorIfTrueR", 1) - pm.setAttr(node_name+".colorIfFalseR", 0) - pm.connectAttr(node_name+".outColorR", attr) + pm.connectAttr(self.ikref_att, node_name + ".firstTerm") + pm.setAttr(node_name + ".secondTerm", i) + pm.setAttr(node_name + ".operation", 0) + pm.setAttr(node_name + ".colorIfTrueR", 1) + pm.setAttr(node_name + ".colorIfFalseR", 0) + pm.connectAttr(node_name + ".outColorR", attr) def connect_standardWithSimpleIkRef(self): - """ - Standard connection definition with simple IK reference. - """ + """Standard connection definition with simple IK reference.""" self.parent.addChild(self.root) @@ -813,7 +851,8 @@ def connect_averageParentCns(self): ref.append(self.ik_cns) cns_node = pm.parentConstraint(*ref, maintainOffset=True) - cns_attr = pm.parentConstraint(cns_node, query=True, weightAliasList=True) + cns_attr = pm.parentConstraint( + cns_node, query=True, weightAliasList=True) for i, attr in enumerate(cns_attr): pm.setAttr(attr, 1.0) @@ -840,7 +879,8 @@ def connectRef(self, refArray, cns_obj, upVAttr=None): ref.append(cns_obj) cns_node = pm.parentConstraint(*ref, maintainOffset=True) - cns_attr = pm.parentConstraint(cns_node, query=True, weightAliasList=True) + cns_attr = pm.parentConstraint( + cns_node, query=True, weightAliasList=True) # check if the ref Array is for IK or Up vector if upVAttr: oAttr = self.upvref_att @@ -849,16 +889,16 @@ def connectRef(self, refArray, cns_obj, upVAttr=None): for i, attr in enumerate(cns_attr): node_name = pm.createNode("condition") - pm.connectAttr(oAttr, node_name+".firstTerm") - pm.setAttr(node_name+".secondTerm", i) - pm.setAttr(node_name+".operation", 0) - pm.setAttr(node_name+".colorIfTrueR", 1) - pm.setAttr(node_name+".colorIfFalseR", 0) - pm.connectAttr(node_name+".outColorR", attr) - - def connectRef2(self, refArray, cns_obj, in_attr, init_ref=False, skipTranslate = False ): - """ - Connect the cns_obj to a multiple object using parentConstraint. + pm.connectAttr(oAttr, node_name + ".firstTerm") + pm.setAttr(node_name + ".secondTerm", i) + pm.setAttr(node_name + ".operation", 0) + pm.setAttr(node_name + ".colorIfTrueR", 1) + pm.setAttr(node_name + ".colorIfFalseR", 0) + pm.connectAttr(node_name + ".outColorR", attr) + + def connectRef2(self, refArray, cns_obj, in_attr, init_ref=False, + skipTranslate=False): + """Connect the cns_obj to a multiple object using parentConstraint. Args: refArray (string): List of driver objects divided by ",". @@ -866,8 +906,8 @@ def connectRef2(self, refArray, cns_obj, in_attr, init_ref=False, skipTranslate upVAttr (bool): Set if the ref Array is for IK or Up vector init_ref (list of dagNode): Set the initial default ref connections skipTranslate (bool): if True will skip the translation connections - """ + """ if refArray: ref_names = refArray.split(",") if len(ref_names) == 1: @@ -876,31 +916,37 @@ def connectRef2(self, refArray, cns_obj, in_attr, init_ref=False, skipTranslate else: ref = [] for ref_name in ref_names: - if self.rig.findRelative(ref_name) == self.rig.findRelative("return the global ctl"): - pass - else: + rrn = self.rig.findRelative(ref_name) + rgn = self.rig.findRelative("return the global ctl") + if rrn != rgn: ref.append(self.rig.findRelative(ref_name)) if init_ref: ref = init_ref + ref ref.append(cns_obj) if skipTranslate: - cns_node = pm.parentConstraint(*ref, maintainOffset=True, skipTranslate=["x","y","z"]) + cns_node = pm.parentConstraint( + *ref, + maintainOffset=True, + skipTranslate=["x", "y", "z"]) else: cns_node = pm.parentConstraint(*ref, maintainOffset=True) - cns_attr = pm.parentConstraint(cns_node, query=True, weightAliasList=True) + cns_attr = pm.parentConstraint( + cns_node, query=True, weightAliasList=True) for i, attr in enumerate(cns_attr): node_name = pm.createNode("condition") - pm.connectAttr(in_attr, node_name+".firstTerm") - pm.setAttr(node_name+".secondTerm", i) - pm.setAttr(node_name+".operation", 0) - pm.setAttr(node_name+".colorIfTrueR", 1) - pm.setAttr(node_name+".colorIfFalseR", 0) - pm.connectAttr(node_name+".outColorR", attr) + pm.connectAttr(in_attr, node_name + ".firstTerm") + pm.setAttr(node_name + ".secondTerm", i) + pm.setAttr(node_name + ".operation", 0) + pm.setAttr(node_name + ".colorIfTrueR", 1) + pm.setAttr(node_name + ".colorIfFalseR", 0) + pm.connectAttr(node_name + ".outColorR", attr) def connect_standardWithRotRef(self, refArray, cns_obj): - """ - Connect the cns_obj to a multiple object using parentConstraint, but skipping translation connection. + """Connect the cns_obj to a multiple object + + Connect the cns_obj to a multiple object using parentConstraint, but + skipping translation connection. Args: refArray (list of dagNode): List of driver objects @@ -915,21 +961,21 @@ def connect_standardWithRotRef(self, refArray, cns_obj): ref.append(self.rig.findRelative(ref_name)) ref.append(cns_obj) - cns_node = pm.parentConstraint(*ref, maintainOffset=True, skipTranslate=["x","y","z"]) - cns_attr = pm.parentConstraint(cns_node, query=True, weightAliasList=True) + cns_node = pm.parentConstraint( + *ref, maintainOffset=True, skipTranslate=["x", "y", "z"]) + cns_attr = pm.parentConstraint( + cns_node, query=True, weightAliasList=True) for i, attr in enumerate(cns_attr): node_name = pm.createNode("condition") - pm.connectAttr(self.ref_att, node_name+".firstTerm") - pm.setAttr(node_name+".secondTerm", i) - pm.setAttr(node_name+".operation", 0) - pm.setAttr(node_name+".colorIfTrueR", 1) - pm.setAttr(node_name+".colorIfFalseR", 0) - pm.connectAttr(node_name+".outColorR", attr) - + pm.connectAttr(self.ref_att, node_name + ".firstTerm") + pm.setAttr(node_name + ".secondTerm", i) + pm.setAttr(node_name + ".operation", 0) + pm.setAttr(node_name + ".colorIfTrueR", 1) + pm.setAttr(node_name + ".colorIfFalseR", 0) + pm.connectAttr(node_name + ".outColorR", attr) def postConnect(self): - """ - Post connection actions. + """Post connection actions. Note: REIMPLEMENT. This method should be reimplemented in each component. @@ -937,88 +983,110 @@ def postConnect(self): """ return - # ===================================================== # JOINTS STRUCTURE # ===================================================== def jointStructure(self): - """ - Handle the building of the joint structure, when we select jnt_org option. + """Build the Joint structure + + Handle the building of the joint structure, when we select jnt_org + option. """ - #get parent component joint + # get parent component joint if self.settings["useIndex"]: try: - self.active_jnt = self.parent_comp.jointList[self.settings["parentJointIndex"]] - except: - pm.displayWarning("The parent component for: %s don't have any joint with the index: %s."%(self.fullName, str(self.settings["parentJointIndex"]))) + self.active_jnt = self.parent_comp.jointList[ + self.settings["parentJointIndex"]] + except Exception: + pm.displayWarning( + "The parent component for: %s don't have " + "any joint with the index: %s." % + (self.fullName, str(self.settings["parentJointIndex"]))) else: parent_name = "none" if self.guide.parentComponent is not None: - parent_name = self.guide.parentComponent.getName(self.guide.parentLocalName) + parent_name = self.guide.parentComponent.getName( + self.guide.parentLocalName) relative_name = self.rig.getRelativeName(parent_name) oParent_comp = self.parent_comp while oParent_comp: try: - self.active_jnt = oParent_comp.jointList[oParent_comp.jointRelatives[relative_name]] - # when we search in the parent component for a active jnt we also store it for later retrive + self.active_jnt = oParent_comp.jointList[ + oParent_comp.jointRelatives[relative_name]] + # when we search in the parent component for a active jnt + # we also store it for later retrive self.parent_relative_jnt = self.active_jnt break - except: + except Exception: if oParent_comp.parent_comp: - parent_name = oParent_comp.guide.parentComponent.getName(oParent_comp.guide.parentLocalName) - relative_name = oParent_comp.rig.getRelativeName(parent_name) + pgpc = oParent_comp.guide.parentComponent + parent_name = pgpc.getName( + oParent_comp.guide.parentLocalName) + relative_name = oParent_comp.rig.getRelativeName( + parent_name) else: - pm.displayInfo("The parent components for: %s don't have joint List in any of them use the root off guide."%self.fullName) + pm.displayInfo( + "The parent components for: %s don't have joint " + "List in any of them use the root off guide." % + self.fullName) oParent_comp = oParent_comp.parent_comp # Joint creation for jpo in self.jnt_pos: - if len(jpo)>=3 and self.options["joint_rig"]: + if len(jpo) >= 3 and self.options["joint_rig"]: if jpo[2] == "component_jnt_org": newActiveJnt = self.component_jnt_org elif jpo[2] == "parent_relative_jnt": - # this option force the active jnt always to the parent relative jnt. - # if None the active jnt will be updated to the latest in each jnt creation + # this option force the active jnt always to the parent + # relative jnt. + # If None the active jnt will be updated to the latest in + # each jnt creation newActiveJnt = self.parent_relative_jnt else: try: - # here jpo[2] is also the string name of the jnt inside the component. IE: "root" - newActiveJnt = self.jointList[self.jointRelatives[jpo[2]]] + # here jpo[2] is also the string name of the jnt inside + # the component. IE: "root" + newActiveJnt = self.jointList[ + self.jointRelatives[jpo[2]]] - except: + except Exception: if jpo[2]: - pm.displayWarning( "Joint Structure creation: The object %s can't be found. Joint parent is NONE for %s, from %s"%(jpo[2], jpo[0], self.fullName)) + pm.displayWarning( + "Joint Structure creation: " + "The object %s can't be found. Joint parent is" + " NONE for %s, from %s" % + (jpo[2], jpo[0], self.fullName)) newActiveJnt = None else: newActiveJnt = None # Handle the uniform scale - if len(jpo)==4 and self.options["joint_rig"]: + if len(jpo) == 4 and self.options["joint_rig"]: uniScale = jpo[3] else: uniScale = True # handle the matrix node connection - if len(jpo)==5 and self.options["joint_rig"]: + if len(jpo) == 5 and self.options["joint_rig"]: gearMulMatrix = jpo[4] else: gearMulMatrix = True - self.jointList.append(self.addJoint(jpo[0], jpo[1], newActiveJnt, uniScale, gearMulMatrix=gearMulMatrix)) - + self.jointList.append( + self.addJoint(jpo[0], jpo[1], newActiveJnt, uniScale, + gearMulMatrix=gearMulMatrix)) # ===================================================== # FINALIZE # ===================================================== def finalize(self): - """ - Finalize and clean the rig builing. - """ - #locking the attributes for all the ctl parents that are not ctl itself. + """Finalize and clean the rig builing.""" + # locking the attributes for all the ctl parents that are not ctl + # itself. for t in self.transform2Lock: - att.lockAttribute(t) + attribute.lockAttribute(t) return @@ -1034,11 +1102,10 @@ def postScript(self): # ===================================================== def getName(self, name="", side=None): - """ - Return the name for component element + """Return the name for component element Args: - name (str): The name to concatenate to the component name. (Optional) + name (str): The name to concatenate to component name. (Optional) side (str): The side (Optional). Returns: @@ -1051,14 +1118,12 @@ def getName(self, name="", side=None): name = str(name) if name: - return "_".join([self.name, side+str(self.index), name]) + return "_".join([self.name, side + str(self.index), name]) else: return self.fullName - def getCompName(self, name=""): - """ - Return the component type name + """Return the component type name Args: name (str): The name to concatenate to the component name. @@ -1069,21 +1134,16 @@ def getCompName(self, name=""): return "_".join([self.guide.compName, name]) - # ===================================================== # PROPERTIES # ===================================================== def getFullName(self): - """ - return the fullname of the component - """ + """return the fullname of the component""" return self.guide.fullName - def getType(self): - """ - return the type of the component + """return the type of the component """ return self.guide.type From e3ed0007949c844713246a5d1d15fbb8c6bb86ad Mon Sep 17 00:00:00 2001 From: miquelcampos Date: Fri, 17 Nov 2017 12:45:07 +0900 Subject: [PATCH 058/134] PEP8 #100 : shifter refactor: debug some errors introduced while refactoring --- scripts/mgear/maya/shifter/__init__.py | 8 +++++--- scripts/mgear/maya/shifter/component/__init__.py | 6 +++--- 2 files changed, 8 insertions(+), 6 deletions(-) diff --git a/scripts/mgear/maya/shifter/__init__.py b/scripts/mgear/maya/shifter/__init__.py index 0c86f31..6c1983c 100644 --- a/scripts/mgear/maya/shifter/__init__.py +++ b/scripts/mgear/maya/shifter/__init__.py @@ -14,15 +14,17 @@ from . import guide, component from mgear.maya import primitive, attribute, skin, dag +# icon imported with alias to avoid confusion with variables of the same name +import mgear.maya.icon as ico # check if we have loaded the necessary plugins -if not pm.pluginInfo("mgear_solvers", q=True, load=True): +if not pm.pluginInfo("mgear_solvers", q=True, loaded=True): try: pm.loadPlugin("mgear_solvers") except RuntimeError: pm.displayError("You need the mgear_solvers plugin!") -if not pm.pluginInfo("matrixNodes", q=True, load=True): +if not pm.pluginInfo("matrixNodes", q=True, loaded=True): pm.loadPlugin("matrixNodes") COMPONENT_PATH = os.path.join(os.path.dirname(__file__), "component") @@ -347,7 +349,7 @@ def addCtl(self, parent, name, m, color, icon, **kwargs): for shape in ctl_ref.getShapes(): ctl.addChild(shape, shape=True, add=True) else: - ctl = icon.create(parent, name, m, color, icon, **kwargs) + ctl = ico.create(parent, name, m, color, icon, **kwargs) self.addToGroup(ctl, "controllers") diff --git a/scripts/mgear/maya/shifter/component/__init__.py b/scripts/mgear/maya/shifter/component/__init__.py index 67b3779..b6d6f45 100644 --- a/scripts/mgear/maya/shifter/component/__init__.py +++ b/scripts/mgear/maya/shifter/component/__init__.py @@ -13,7 +13,7 @@ # mgear import mgear -from mgear.maya import primitive, vector, transform, attribute +from mgear.maya import primitive, vector, transform, attribute, applyop # node and icon imported with alias to avoid confusion with variables of the # same name import mgear.maya.node as nod @@ -249,7 +249,7 @@ def addJoint(self, obj, name, newActiveJnt=None, UniScale=True, segComp=0, self.active_jnt = jnt if gearMulMatrix: - mulmat_node = attribute.gear_mulmatrix_op( + mulmat_node = applyop.gear_mulmatrix_op( obj + ".worldMatrix", jnt + ".parentInverseMatrix") dm_node = nod.createDecomposeMatrixNode( mulmat_node + ".output") @@ -288,7 +288,7 @@ def addJoint(self, obj, name, newActiveJnt=None, UniScale=True, segComp=0, im = m.inverse() if gearMulMatrix: - attribute.gear_mulmatrix_op(mulmat_node.attr('output'), + applyop.gear_mulmatrix_op(mulmat_node.attr('output'), im, jnt, 'r') else: nod.createMultMatrixNode( From 8d59cdcb436439e1baab0b0bba3e6834b76fe4df Mon Sep 17 00:00:00 2001 From: miquelcampos Date: Fri, 17 Nov 2017 17:44:49 +0900 Subject: [PATCH 059/134] PEP8 #100 : Shifter: base modules and base component modules refactor --- scripts/mgear/maya/shifter/component/guide.py | 528 +++++++++--------- .../maya/shifter/component/mainSettingsUI.py | 159 +++--- scripts/mgear/maya/shifter/customStep.py | 36 +- scripts/mgear/maya/shifter/gameToolsUI.py | 75 ++- scripts/mgear/maya/shifter/gui.py | 286 +++++----- scripts/mgear/maya/shifter/guideUI.py | 250 +++++---- 6 files changed, 708 insertions(+), 626 deletions(-) diff --git a/scripts/mgear/maya/shifter/component/guide.py b/scripts/mgear/maya/shifter/component/guide.py index d48305c..20c03ef 100644 --- a/scripts/mgear/maya/shifter/component/guide.py +++ b/scripts/mgear/maya/shifter/component/guide.py @@ -1,39 +1,8 @@ -# MGEAR is under the terms of the MIT License - -# Copyright (c) 2016 Jeremie Passerin, Miquel Campos - -# Permission is hereby granted, free of charge, to any person obtaining a copy -# of this software and associated documentation files (the "Software"), to deal -# in the Software without restriction, including without limitation the rights -# to use, copy, modify, merge, publish, distribute, sublicense, and/or sell -# copies of the Software, and to permit persons to whom the Software is -# furnished to do so, subject to the following conditions: - -# The above copyright notice and this permission notice shall be included in all -# copies or substantial portions of the Software. - -# THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR -# IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, -# FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE -# AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER -# LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, -# OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE -# SOFTWARE. - -# Author: Jeremie Passerin geerem@hotmail.com www.jeremiepasserin.com -# Author: Miquel Campos hello@miquel-campos.com www.miquel-campos.com -# Date: 2016 / 10 / 10 - - """ Shifter's Component guide class. """ -########################################################## -# GLOBAL -########################################################## from functools import partial -import datetime import maya.cmds as cmds # pyMel @@ -43,17 +12,11 @@ # mgear import mgear -import mgear.string as string +from mgear import string -import mgear.maya.dag as dag -import mgear.maya.vector as vec -import mgear.maya.transform as tra -import mgear.maya.icon as ico -import mgear.maya.curve as cur -import mgear.maya.applyop as aop -import mgear.maya.attribute as att -import mgear.maya.pyqt as gqt +from mgear.maya import dag, vector, transform, applyop, attribute, curve, pyqt +import mgear.maya.icon as ico from mgear.maya.shifter.guide import MainGuide from mgear.maya.shifter.guide import helperSlots @@ -61,8 +24,7 @@ import mainSettingsUI as msui -QtGui, QtCore, QtWidgets, wrapInstance = gqt.qt_import() - +QtGui, QtCore, QtWidgets, wrapInstance = pyqt.qt_import() ########################################################## @@ -70,19 +32,22 @@ ########################################################## class ComponentGuide(MainGuide): - """ - Main class for component guide creation. + """Main class for component guide creation. + This class handles all the parameters and objectDefs creation. - It also know how to parse its own hierachy of object to retrieve position and transform. + It also know how to parse its own hierachy of object to retrieve position + and transform. Finally it also now how to export itself as xml_node. Attributes: - paramNames (list): List of parameter name cause it's actually important to keep them sorted. + paramNames (list): List of parameter name cause it's actually important + to keep them sorted. paramDefs (dic): Dictionary of parameter definition. values (dic): Dictionary of options values. - valid (bool): We will check a few things and make sure the guide we are loading is up to date. - If parameters or object are missing a warning message will be display and - the guide should be updated. + valid (bool): We will check a few things and make sure the guide we are + loading is up to date. + If parameters or object are missing a warning message will be + display and the guide should be updated. tra (dic): dictionary of global transform atra (list): list of global transform pos (dic): dictionary of global postion @@ -90,36 +55,42 @@ class ComponentGuide(MainGuide): prim (dic): dictionary of primitive blades (dic): dictionary of blades size (float): Size reference of the component. Default = .1 - save_transform (list): Transform of object name in this list will be saved - save_primitive (list): Primitive of object name in this list will be saved + save_transform (list): Transform of object name in this list will + be saved + save_primitive (list): Primitive of object name in this list will + be saved save_blade (list): Normal and BiNormal of object will be saved minmax (dic): Define the min and max object for multi location objects """ - compType = "component" ## Component type - compName = "component" ## Component default name + compType = "component" # Component type + compName = "component" # Component default name compSide = "C" - compIndex = 0 ## Component default index + compIndex = 0 # Component default index - description = "" ## Description of the component + description = "" # Description of the component connectors = [] compatible = [] ctl_grp = "" # ==================================================== - ## Init method. - # @param self - # @param ref an xml definition or a SI3DObject + # Init method. def __init__(self): # Parameters names, definition and values. - self.paramNames = [] ## List of parameter name cause it's actually important to keep them sorted. - self.paramDefs = {} ## Dictionary of parameter definition. - self.values = {} ## Dictionary of options values. - - # We will check a few things and make sure the guide we are loading is up to date. - # If parameters or object are missing a warning message will be display and the guide should be updated. + # List of parameter name cause it's actually important to keep + # them sorted. + self.paramNames = [] + # Dictionary of parameter definition. + self.paramDefs = {} + # Dictionary of options values. + self.values = {} + + # We will check a few things and make sure the guide we are loading is + # up to date. + # If parameters or object are missing a warning message will be display + # and the guide should be updated. self.valid = True self.root = None @@ -130,31 +101,33 @@ def __init__(self): self.parentLocalName = None # List and dictionary used during the creation of the component - self.tra = {} ## dictionary of global transform - self.atra = [] ## list of global transform - self.pos = {} ## dictionary of global postion - self.apos = [] ## list of global position - self.prim = {} ## dictionary of primitive + self.tra = {} # dictionary of global transform + self.atra = [] # list of global transform + self.pos = {} # dictionary of global postion + self.apos = [] # list of global position + self.prim = {} # dictionary of primitive self.blades = {} self.size = .1 # self.root_size = None - # List and dictionary used to define data of the guide that should be saved - # self.pick_transform = [] ## User will have to pick the position of this object name - self.save_transform = [] ## Transform of object name in this list will be saved - self.save_primitive = [] ## Primitive of object name in this list will be saved - self.save_blade = [] ## Normal and BiNormal of object will be saved - self.minmax = {} ## Define the min and max object for multi location objects + # List and dictionary used to define data of the guide that + # should be saved + # Transform of object name in this list will be saved + self.save_transform = [] + # Primitive of object name in this list will be saved + self.save_primitive = [] + # Normal and BiNormal of object will be saved + self.save_blade = [] + # Define the min and max object for multi location objects + self.minmax = {} # Init the guide self.postInit() self.initialHierarchy() self.addParameters() - def postInit(self): - """ - Define the objects name and categories. + """Define the objects name and categories. Note: REIMPLEMENT. This method should be reimplemented in each component. @@ -167,21 +140,22 @@ def postInit(self): # OBJECTS AND PARAMETERS def initialHierarchy(self): - """ - Initial hierachy. It's no more than the basic set of parameters and layout + """Initial hierachy. + + It's no more than the basic set of parameters and layout needed for the setting property. """ # Parameters -------------------------------------- # This are the necessary parameter for component guide definition - self.pCompType = self.addParam("comp_type", "string", self.compType) - self.pCompName = self.addParam("comp_name", "string", self.compName) - self.pCompSide = self.addParam("comp_side", "string", self.compSide) - self.pCompIndex = self.addParam("comp_index", "long", self.compIndex, 0) - self.pConnector = self.addParam("connector", "string", "standard") - self.pUIHost = self.addParam("ui_host", "string", "") - self.pCtlGroup = self.addParam("ctlGrp", "string", "") - + self.pCompType = self.addParam("comp_type", "string", self.compType) + self.pCompName = self.addParam("comp_name", "string", self.compName) + self.pCompSide = self.addParam("comp_side", "string", self.compSide) + self.pCompIndex = self.addParam( + "comp_index", "long", self.compIndex, 0) + self.pConnector = self.addParam("connector", "string", "standard") + self.pUIHost = self.addParam("ui_host", "string", "") + self.pCtlGroup = self.addParam("ctlGrp", "string", "") # Items ------------------------------------------- typeItems = [self.compType, self.compType] @@ -194,10 +168,8 @@ def initialHierarchy(self): connectorItems.append(item) connectorItems.append(item) - def addObjects(self): - """ - Create the objects of the guide. + """Create the objects of the guide. Note: REIMPLEMENT. This method should be reimplemented in each component. @@ -205,10 +177,8 @@ def addObjects(self): """ self.root = self.addRoot() - def addParameters(self): - """ - Create the parameter definitions of the guide. + """Create the parameter definitions of the guide. Note: REIMPLEMENT. This method should be reimplemented in each component. @@ -219,8 +189,7 @@ def addParameters(self): # ==================================================== # SET / GET def setFromHierarchy(self, root): - """ - Set the component guide from given hierarchy. + """Set the component guide from given hierarchy. Args: root (dagNode): The root of the hierarchy to parse. @@ -232,7 +201,8 @@ def setFromHierarchy(self, root): # --------------------------------------------------- # First check and set the settings if not self.root.hasAttr("comp_type"): - mgear.log("%s is not a proper guide."%self.root.longName(), mgear.sev_error) + mgear.log("%s is not a proper guide." % + self.root.longName(), mgear.sev_error) self.valid = False return @@ -243,7 +213,8 @@ def setFromHierarchy(self, root): for name in self.save_transform: if "#" in name: i = 0 - while not self.minmax[name].max > 0 or i < self.minmax[name].max: + while not self.minmax[name].max > 0 or i < \ + self.minmax[name].max: localName = string.replaceSharpWithPadding(name, i) node = dag.findChild(self.model, self.getName(localName)) @@ -258,7 +229,9 @@ def setFromHierarchy(self, root): i += 1 if i < self.minmax[name].min: - mgear.log("Minimum of object requiered for "+name+" hasn't been reached!!", mgear.sev_warning) + mgear.log("Minimum of object requiered for " + + name + " hasn't been reached!!", + mgear.sev_warning) self.valid = False continue @@ -284,17 +257,15 @@ def setFromHierarchy(self, root): self.valid = False continue - self.blades[name] = vec.Blade(node.getMatrix(worldSpace=True)) + self.blades[name] = vector.Blade(node.getMatrix(worldSpace=True)) self.size = self.getSize() - # ==================================================== # DRAW def draw(self, parent): - """ - Draw the guide in the scene. + """Draw the guide in the scene. Args: parent (dagNode): the parent of the component. @@ -305,16 +276,12 @@ def draw(self, parent): self.addObjects() pm.select(self.root) - - - #TODO: add function to scale the points of the icons + # TODO: add function to scale the points of the icons # Set the size of the root # self.root.size = self.root_size - def drawFromUI(self, parent): - """ - Draw the guide in the scene from the UI command. + """Draw the guide in the scene from the UI command. Args: parent (dagNode): the parent of the component. @@ -325,19 +292,15 @@ def drawFromUI(self, parent): return False self.draw(parent) - tra.resetTransform(self.root, r=False, s=False) + transform.resetTransform(self.root, r=False, s=False) gui.Guide_UI.inspectSettings() return True - - def modalPositions(self): - """ - Launch a modal dialog to set position of the guide. + """Launch a modal dialog to set position of the guide.""" - """ self.jNumberVal = False self.dirAxisVal = False self.jSpacVal = False @@ -350,37 +313,38 @@ def _addLocMultiOptions(): pm.setParent(q=True) - pm.columnLayout( adjustableColumn=True, cal="right" ) - pm.text(l='', al="center") + pm.columnLayout(adjustableColumn=True, cal="right") + pm.text(label='', al="center") fl = pm.formLayout() - jNumber = pm.intFieldGrp(v1=3, l="Joint Number") - pm.setParent( '..' ) - pm.formLayout(fl, e=True, af=(jNumber, "left",-30)) + jNumber = pm.intFieldGrp(v1=3, label="Joint Number") + pm.setParent('..') + pm.formLayout(fl, e=True, af=(jNumber, "left", -30)) dirSet = ["X", "-X", "Y", "-Y", "Z", "-Z"] fl = pm.formLayout() - dirAxis = pm.optionMenu(l="Direction") + dirAxis = pm.optionMenu(label="Direction") dirAxis.addMenuItems(dirSet) - pm.setParent( '..' ) + pm.setParent('..') pm.formLayout(fl, e=True, af=(dirAxis, "left", 70)) fl = pm.formLayout() - jSpac = pm.floatFieldGrp(v1=1.0, l="spacing") - pm.setParent( '..' ) - pm.formLayout(fl, e=True, af=(jSpac, "left",-30)) + jSpac = pm.floatFieldGrp(v1=1.0, label="spacing") + pm.setParent('..') + pm.formLayout(fl, e=True, af=(jSpac, "left", -30)) - pm.text(l='', al="center") + pm.text(label='', al="center") - pm.button(l='Continue', c=partial(_retriveOptions, jNumber, dirAxis, jSpac)) - pm.setParent( '..' ) + pm.button(label='Continue', c=partial( + _retriveOptions, jNumber, dirAxis, jSpac)) + pm.setParent('..') def _retriveOptions(jNumber, dirAxis, jSpac, *args): self.jNumberVal = jNumber.getValue()[0] self.dirAxisVal = dirAxis.getValue() self.jSpacVal = jSpac.getValue()[0] - pm.layoutDialog( dismiss="Continue" ) + pm.layoutDialog(dismiss="Continue") def _show(): @@ -392,36 +356,35 @@ def _show(): if self.dirAxisVal == "X": offVec = dt.Vector(self.jSpacVal, 0, 0) elif self.dirAxisVal == "-X": - offVec = dt.Vector(self.jSpacVal*-1, 0, 0) + offVec = dt.Vector(self.jSpacVal * -1, 0, 0) elif self.dirAxisVal == "Y": offVec = dt.Vector(0, self.jSpacVal, 0) elif self.dirAxisVal == "-Y": - offVec = dt.Vector(0, self.jSpacVal*-1, 0) + offVec = dt.Vector(0, self.jSpacVal * -1, 0) elif self.dirAxisVal == "Z": offVec = dt.Vector(0, 0, self.jSpacVal) elif self.dirAxisVal == "-Z": - offVec = dt.Vector(0, 0, self.jSpacVal*-1) + offVec = dt.Vector(0, 0, self.jSpacVal * -1) newPosition = dt.Vector(0, 0, 0) for i in range(self.jNumberVal): newPosition = offVec + newPosition localName = string.replaceSharpWithPadding(name, i) - self.tra[localName] = tra.getTransformFromPos(newPosition) + self.tra[localName] = transform.getTransformFromPos( + newPosition) return True # ==================================================== # UPDATE - def setIndex(self, model): - """ - Update the component index to get the next valid one. + """Update the component index to get the next valid one. Args: model (dagNode): The parent model of the guide. - """ - self.model = model.getParent(generations=-1) + """ + self.model = model.getParent(generations=-1) # Find next index available while True: @@ -430,34 +393,33 @@ def setIndex(self, model): break self.setParamDefValue("comp_index", self.values["comp_index"] + 1) - def symmetrize(self): - """ - Inverse the transform of each element of the guide. - """ + """Inverse the transform of each element of the guide.""" if self.values["comp_side"] not in ["R", "L"]: mgear.log("Can't symmetrize central component", mgear.sev_error) return False for name, paramDef in self.paramDefs.items(): if paramDef.valueType == "string": - self.setParamDefValue(name, mgear.string.convertRLName(self.values[name])) + self.setParamDefValue( + name, mgear.string.convertRLName(self.values[name])) for name, t in self.tra.items(): - self.tra[name] = tra.getSymmetricalTransform(t) + self.tra[name] = transform.getSymmetricalTransform(t) for name, blade in self.blades.items(): - self.blades[name] = vec.Blade(tra.getSymmetricalTransform(blade.transform)) + self.blades[name] = vector.Blade( + transform.getSymmetricalTransform(blade.transform)) return True def rename(self, root, newName, newSide, newIndex): - """ - Rename the component. + """Rename the component. Args: root (dagNode): The parent of the component newName (str): The new name. newSide (str): Side of the component. newIndex (int): index of the comonent. + """ self.parent = root @@ -471,61 +433,64 @@ def rename(self, root, newName, newSide, newIndex): self.parent.attr("comp_name").set(newName) self.parent.attr("comp_side").set(newSide) # set new index and update to the next valid - self.setParamDefValue("comp_name",newName) - self.setParamDefValue("comp_side",newSide) + self.setParamDefValue("comp_name", newName) + self.setParamDefValue("comp_side", newSide) - self.setParamDefValue("comp_index",newIndex) + self.setParamDefValue("comp_index", newIndex) self.setIndex(self.parent) - self.parent.attr("comp_index").set( self.values["comp_index"]) + self.parent.attr("comp_index").set(self.values["comp_index"]) - - # objList = dag.findComponentChildren(self.parent, oldName, oldSideIndex) + # objList = dag.findComponentChildren( + # self.parent, oldName, oldSideIndex) # NOTE: Experimenta using findComponentChildren2 - objList = dag.findComponentChildren2(self.parent, oldName, oldSideIndex) - newSideIndex = newSide + str(self.values["comp_index"]) + objList = dag.findComponentChildren2( + self.parent, oldName, oldSideIndex) + newSideIndex = newSide + str(self.values["comp_index"]) objList.append(self.parent) for obj in objList: - suffix = obj.name().split("_")[-1] + suffix = obj.name().split("_")[-1] if len(obj.name().split("_")) == 3: new_name = "_".join([newName, newSideIndex, suffix]) else: - subIndex = obj.name().split("_")[-2] + subIndex = obj.name().split("_")[-2] new_name = "_".join([newName, newSideIndex, subIndex, suffix]) pm.rename(obj, new_name) - # ==================================================== # ELEMENTS - def addRoot(self): - """ - Add a root object to the guide. + """Add a root object to the guide. + This method can initialize the object or draw it. - Root object is a simple transform with a specific display and a setting property. + Root object is a simple transform with a specific display and a setting + property. Returns: dagNode: The root + """ if "root" not in self.tra.keys(): - self.tra["root"] = tra.getTransformFromPos(dt.Vector(0,0,0)) + self.tra["root"] = transform.getTransformFromPos( + dt.Vector(0, 0, 0)) - self.root = ico.guideRootIcon(self.parent, self.getName("root"), color=13, m=self.tra["root"] ) + self.root = ico.guideRootIcon(self.parent, self.getName( + "root"), color=13, m=self.tra["root"]) - #Add Parameters from parameter definition list. + # Add Parameters from parameter definition list. for scriptName in self.paramNames: paramDef = self.paramDefs[scriptName] paramDef.create(self.root) return self.root - def addLoc(self, name, parent, position=None): - """ - Add a loc object to the guide. + """Add a loc object to the guide. + This mehod can initialize the object or draw it. - Loc object is a simple null to define a position or a tranformation in the guide. + Loc object is a simple null to define a position or a tranformation in + the guide. Args: name (str): Local name of the element. @@ -537,35 +502,41 @@ def addLoc(self, name, parent, position=None): """ if name not in self.tra.keys(): - self.tra[name] = tra.getTransformFromPos(position) + self.tra[name] = transform.getTransformFromPos(position) if name in self.prim.keys(): - # this functionality is not implemented. The actual design from softimage Gear should be review to fit in Maya. - loc = self.prim[name].create(parent, self.getName(name), self.tra[name], color=17) + # this functionality is not implemented. The actual design from + # softimage Gear should be review to fit in Maya. + loc = self.prim[name].create( + parent, self.getName(name), self.tra[name], color=17) else: - loc = ico.guideLocatorIcon(parent, self.getName(name), color=17, m=self.tra[name]) + loc = ico.guideLocatorIcon(parent, self.getName( + name), color=17, m=self.tra[name]) return loc + def addLocMulti(self, name, parent, updateParent=True): + """Add multiple loc objects to the guide. - def addLocMulti(self, name, parent, updateParent = True): - """ - Add multiple loc objects to the guide. This method can initialize the object or draw it. - Loc object is a simple null to define a position or a tranformation in the guide. + Loc object is a simple null to define a position or a tranformation in + the guide. Args: name (str): Local name of the element. parent (dagNode): The parent of the element. minimum (int): The minimum number of loc. maximum (int): The maximum number of loc. - updateParent (bool): if True update the parent reference. False, keep the same for all loc. + updateParent (bool): if True update the parent reference. False, + keep the same for all loc. Returns: list of dagNode: The created loc objects in a list. """ if "#" not in name: - mgear.log("You need to put a '#' in the name of multiple location.", mgear.sev_error) + mgear.log( + "You need to put a '#' in the name of multiple location.", + mgear.sev_error) return False locs = [] @@ -575,7 +546,8 @@ def addLocMulti(self, name, parent, updateParent = True): if localName not in self.tra.keys(): break - loc = ico.guideLocatorIcon(parent, self.getName(localName), color=17, m=self.tra[localName]) + loc = ico.guideLocatorIcon(parent, self.getName( + localName), color=17, m=self.tra[localName]) locs.append(loc) if updateParent: parent = loc @@ -583,10 +555,9 @@ def addLocMulti(self, name, parent, updateParent = True): i += 1 return locs - def addBlade(self, name, parentPos, parentDir): - """ - Add a blade object to the guide. + """Add a blade object to the guide. + This mehod can initialize the object or draw it. Blade object is a 3points curve to define a plan in the guide. @@ -600,27 +571,32 @@ def addBlade(self, name, parentPos, parentDir): """ if name not in self.blades.keys(): - self.blades[name] = vec.Blade(tra.getTransformFromPos(dt.Vector(0,0,0))) + self.blades[name] = vector.Blade( + transform.getTransformFromPos(dt.Vector(0, 0, 0))) offset = False else: offset = True dist = .6 * self.root.attr("scaleX").get() - blade = ico.guideBladeIcon(parent=parentPos, name=self.getName(name),lenX=dist, color=13, m=self.blades[name].transform ) - aim_cns = aop.aimCns(blade, parentDir, axis="xy", wupType=2, wupVector=[0,1,0], wupObject=self.root, maintainOffset=offset) + blade = ico.guideBladeIcon(parent=parentPos, name=self.getName( + name), lenX=dist, color=13, m=self.blades[name].transform) + aim_cns = applyop.aimCns(blade, parentDir, axis="xy", wupType=2, + wupVector=[0, 1, 0], wupObject=self.root, + maintainOffset=offset) pm.pointConstraint(parentPos, blade) - offsetAttr = att.addAttribute(blade, "bladeRollOffset", "float", aim_cns.attr("offsetX").get()) + offsetAttr = attribute.addAttribute( + blade, "bladeRollOffset", "float", aim_cns.attr("offsetX").get()) pm.connectAttr(offsetAttr, aim_cns.attr("offsetX")) - att.lockAttribute(blade) + attribute.lockAttribute(blade) return blade - def addDispCurve(self, name, centers=[], degree=1): - """ - Add a display curve object to the guide. - Display curve object is a simple curve to show the connection between different guide element.. + """Add a display curve object to the guide. + + Display curve object is a simple curve to show the connection between + different guide element.. Args: name (str): Local name of the element. @@ -631,7 +607,8 @@ def addDispCurve(self, name, centers=[], degree=1): dagNode: The newly creted curve. """ - crv = cur.addCnsCurve(centers[0], self.getName(name), centers, degree) + crv = curve.addCnsCurve( + centers[0], self.getName(name), centers, degree) crv.attr("overrideEnabled").set(1) crv.attr("overrideDisplayType").set(1) @@ -639,14 +616,8 @@ def addDispCurve(self, name, centers=[], degree=1): # ==================================================== # MISC - ## - # @param self - # @paran model - # @return Dictionary of X3DObject - def getObjects(self, model, includeShapes=True): - """ - Get the objects of the component. + """Get the objects of the component. Args: model(dagNode): The root of the component. @@ -662,34 +633,36 @@ def getObjects(self, model, includeShapes=True): else: children = pm.listRelatives(model, ad=True, typ='transform') pm.select(children) - for child in pm.ls(self.fullName+"_*", selection=True): - objects[child[child.index(self.fullName+"_")+len(self.fullName+"_"):]] = child + for child in pm.ls(self.fullName + "_*", selection=True): + objects[child[child.index( + self.fullName + "_") + len(self.fullName + "_"):]] = child return objects def getObjects2(self, model, includeShapes=True): - """ - Get the objects of the component. + """Get the objects of the component. - Args: - model(dagNode): The root of the component. - includeShapes (boo): If True, will include the shapes. + Args: + model(dagNode): The root of the component. + includeShapes (boo): If True, will include the shapes. - Returns: - list of dagNode: The list of the objects. + Returns: + list of dagNode: The list of the objects. - """ - objects = {} - if includeShapes: - children = [pm.PyNode(x) for x in cmds.listRelatives(model.longName(), ad=True, fullPath=True)] - else: - children = [pm.PyNode(x) for x in cmds.listRelatives(model.longName(), ad=True, typ='transform', fullPath=True)] - for child in children: - cName = child.longName() - if cName.startswith(self.fullName): - objects[cName.split("_")[-1]] = child + """ + objects = {} + if includeShapes: + children = [pm.PyNode(x) for x in cmds.listRelatives( + model.longName(), ad=True, fullPath=True)] + else: + children = [pm.PyNode(x) for x in cmds.listRelatives( + model.longName(), ad=True, typ='transform', fullPath=True)] + for child in children: + cName = child.longName() + if cName.startswith(self.fullName): + objects[cName.split("_")[-1]] = child - return objects + return objects def getObjects3(self, model): """ @@ -706,39 +679,41 @@ def getObjects3(self, model): """ objects = {} - for child in cmds.ls(self.fullName+"_*", type="transform"): - objects[child[child.index(self.fullName+"_")+len(self.fullName+"_"):]] = child + for child in cmds.ls(self.fullName + "_*", type="transform"): + objects[child[child.index( + self.fullName + "_") + len(self.fullName + "_"):]] = child return objects def addMinMax(self, name, minimum=1, maximum=-1): - """ - Add minimun and maximum number of locator when we use the modal menu. + """Add minimun and maximum number of locator + + When we use the modal menu. + """ if "#" not in name: - mgear.log("Invalid definition for min/max. You should have a '#' in the name", mgear.sev_error) + mgear.log( + "Invalid definition for min/max. You should have a '#' in " + "the name", mgear.sev_error) self.minmax[name] = MinMax(minimum, maximum) - def getSize(self): - """ - Get the size of the component. + """Get the size of the component. Returns: float: the size + """ size = .01 for pos in self.apos: - d = vec.getDistance(self.pos["root"], pos) + d = vector.getDistance(self.pos["root"], pos) size = max(size, d) size = max(size, .01) return size - def getName(self, name): - """ - Return the fullname of given element of the component. + """Return the fullname of given element of the component. Args: name (str): Localname of the element. @@ -748,21 +723,18 @@ def getName(self, name): """ return self.fullName + "_" + name - def getFullName(self): - """ - Return the fullname of the component. + """Return the fullname of the component. Returns: str: Component fullname. """ - return self.values["comp_name"] + "_" + self.values["comp_side"] + str(self.values["comp_index"]) - + return self.values["comp_name"] + "_" + self.values["comp_side"] + \ + str(self.values["comp_index"]) def getType(self): - """ - Return the type of the component. + """Return the type of the component. Returns: str: component type. @@ -770,15 +742,13 @@ def getType(self): """ return self.compType - def getObjectNames(self): - """ - Get the objects names of the component + """Get the objects names of the component Returns: set: The names set. - """ + """ names = set() names.update(self.save_transform) names.update(self.save_primitive) @@ -787,8 +757,7 @@ def getObjectNames(self): return names def getVersion(self): - """ - Get the version of the component. + """Get the version of the component. Returns: str: versionof the component. @@ -803,6 +772,8 @@ def getVersion(self): ########################################################## # OTHER CLASSES ########################################################## + + class MinMax(object): """ Minimun and maximum class. @@ -830,12 +801,14 @@ def __init__(self, parent=None): super(mainSettingsTab, self).__init__() self.setupUi(self) + class componentMainSettings(QtWidgets.QDialog, helperSlots): valueChanged = QtCore.Signal(int) def __init__(self, parent=None): super(componentMainSettings, self).__init__() - # the inspectSettings function set the current selection to the component root before open the settings dialog + # the inspectSettings function set the current selection to the + # component root before open the settings dialog self.root = pm.selected()[0] self.mainSettingsTab = mainSettingsTab() @@ -858,29 +831,36 @@ def create_controls(self): # Close Button self.close_button = QtWidgets.QPushButton("Close") - def populate_controls(self): - """ - Populate the controls values from the custom attributes of the component. + """Populate Controls attribute values + + Populate the controls values from the custom attributes + of the component. """ - #populate tab + # populate tab self.tabs.insertTab(0, self.mainSettingsTab, "Main Settings") - #populate main settings - self.mainSettingsTab.name_lineEdit.setText(self.root.attr("comp_name").get()) + # populate main settings + self.mainSettingsTab.name_lineEdit.setText( + self.root.attr("comp_name").get()) sideSet = ["C", "L", "R"] sideIndex = sideSet.index(self.root.attr("comp_side").get()) self.mainSettingsTab.side_comboBox.setCurrentIndex(sideIndex) - self.mainSettingsTab.componentIndex_spinBox.setValue(self.root.attr("comp_index").get()) + self.mainSettingsTab.componentIndex_spinBox.setValue( + self.root.attr("comp_index").get()) if self.root.attr("useIndex").get(): - self.mainSettingsTab.useJointIndex_checkBox.setCheckState(QtCore.Qt.Checked) + self.mainSettingsTab.useJointIndex_checkBox.setCheckState( + QtCore.Qt.Checked) else: - self.mainSettingsTab.useJointIndex_checkBox.setCheckState(QtCore.Qt.Unchecked) - self.mainSettingsTab.parentJointIndex_spinBox.setValue(self.root.attr("parentJointIndex").get()) - self.mainSettingsTab.host_lineEdit.setText(self.root.attr("ui_host").get()) - self.mainSettingsTab.subGroup_lineEdit.setText(self.root.attr("ctlGrp").get()) - + self.mainSettingsTab.useJointIndex_checkBox.setCheckState( + QtCore.Qt.Unchecked) + self.mainSettingsTab.parentJointIndex_spinBox.setValue( + self.root.attr("parentJointIndex").get()) + self.mainSettingsTab.host_lineEdit.setText( + self.root.attr("ui_host").get()) + self.mainSettingsTab.subGroup_lineEdit.setText( + self.root.attr("ctlGrp").get()) def create_layout(self): """ @@ -889,7 +869,6 @@ def create_layout(self): """ return - def create_connections(self): """ Create the slots connections to the controls functions @@ -897,10 +876,25 @@ def create_connections(self): """ self.close_button.clicked.connect(self.close_settings) - self.mainSettingsTab.name_lineEdit.editingFinished.connect(self.updateComponentName ) - self.mainSettingsTab.side_comboBox.currentIndexChanged.connect(self.updateComponentName ) - self.mainSettingsTab.componentIndex_spinBox.valueChanged.connect(self.updateComponentName ) - self.mainSettingsTab.useJointIndex_checkBox.stateChanged.connect(partial(self.updateCheck, self.mainSettingsTab.useJointIndex_checkBox, "useIndex")) - self.mainSettingsTab.parentJointIndex_spinBox.valueChanged.connect(partial(self.updateSpinBox, self.mainSettingsTab.parentJointIndex_spinBox, "parentJointIndex")) - self.mainSettingsTab.host_pushButton.clicked.connect(partial(self.updateHostUI, self.mainSettingsTab.host_lineEdit, "ui_host")) - self.mainSettingsTab.subGroup_lineEdit.editingFinished.connect(partial(self.updateLineEdit, self.mainSettingsTab.subGroup_lineEdit, "ctlGrp") ) + self.mainSettingsTab.name_lineEdit.editingFinished.connect( + self.updateComponentName) + self.mainSettingsTab.side_comboBox.currentIndexChanged.connect( + self.updateComponentName) + self.mainSettingsTab.componentIndex_spinBox.valueChanged.connect( + self.updateComponentName) + self.mainSettingsTab.useJointIndex_checkBox.stateChanged.connect( + partial(self.updateCheck, + self.mainSettingsTab.useJointIndex_checkBox, + "useIndex")) + self.mainSettingsTab.parentJointIndex_spinBox.valueChanged.connect( + partial(self.updateSpinBox, + self.mainSettingsTab.parentJointIndex_spinBox, + "parentJointIndex")) + self.mainSettingsTab.host_pushButton.clicked.connect( + partial(self.updateHostUI, + self.mainSettingsTab.host_lineEdit, + "ui_host")) + self.mainSettingsTab.subGroup_lineEdit.editingFinished.connect( + partial(self.updateLineEdit, + self.mainSettingsTab.subGroup_lineEdit, + "ctlGrp")) diff --git a/scripts/mgear/maya/shifter/component/mainSettingsUI.py b/scripts/mgear/maya/shifter/component/mainSettingsUI.py index 7dba75d..870b6f5 100644 --- a/scripts/mgear/maya/shifter/component/mainSettingsUI.py +++ b/scripts/mgear/maya/shifter/component/mainSettingsUI.py @@ -1,33 +1,9 @@ -# MGEAR is under the terms of the MIT License - -# Copyright (c) 2016 Jeremie Passerin, Miquel Campos - -# Permission is hereby granted, free of charge, to any person obtaining a copy -# of this software and associated documentation files (the "Software"), to deal -# in the Software without restriction, including without limitation the rights -# to use, copy, modify, merge, publish, distribute, sublicense, and/or sell -# copies of the Software, and to permit persons to whom the Software is -# furnished to do so, subject to the following conditions: - -# The above copyright notice and this permission notice shall be included in all -# copies or substantial portions of the Software. - -# THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR -# IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, -# FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE -# AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER -# LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, -# OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE -# SOFTWARE. - -# Author: Jeremie Passerin geerem@hotmail.com www.jeremiepasserin.com -# Author: Miquel Campos hello@miquel-campos.com www.miquel-campos.com -# Date: 2016 / 10 / 10 - import mgear.maya.pyqt as gqt QtGui, QtCore, QtWidgets, wrapInstance = gqt.qt_import() + class Ui_Form(object): + def setupUi(self, Form): Form.setObjectName("Form") Form.resize(286, 527) @@ -42,54 +18,73 @@ def setupUi(self, Form): self.formLayout.setObjectName("formLayout") self.name_label = QtWidgets.QLabel(self.mainSettings_groupBox) self.name_label.setObjectName("name_label") - self.formLayout.setWidget(0, QtWidgets.QFormLayout.LabelRole, self.name_label) + self.formLayout.setWidget( + 0, QtWidgets.QFormLayout.LabelRole, self.name_label) self.name_lineEdit = QtWidgets.QLineEdit(self.mainSettings_groupBox) self.name_lineEdit.setObjectName("name_lineEdit") - self.formLayout.setWidget(0, QtWidgets.QFormLayout.FieldRole, self.name_lineEdit) + self.formLayout.setWidget( + 0, QtWidgets.QFormLayout.FieldRole, self.name_lineEdit) self.side_label = QtWidgets.QLabel(self.mainSettings_groupBox) self.side_label.setObjectName("side_label") - self.formLayout.setWidget(1, QtWidgets.QFormLayout.LabelRole, self.side_label) + self.formLayout.setWidget( + 1, QtWidgets.QFormLayout.LabelRole, self.side_label) self.side_comboBox = QtWidgets.QComboBox(self.mainSettings_groupBox) - sizePolicy = QtWidgets.QSizePolicy(QtWidgets.QSizePolicy.Expanding, QtWidgets.QSizePolicy.Fixed) + sizePolicy = QtWidgets.QSizePolicy( + QtWidgets.QSizePolicy.Expanding, QtWidgets.QSizePolicy.Fixed) sizePolicy.setHorizontalStretch(0) sizePolicy.setVerticalStretch(0) - sizePolicy.setHeightForWidth(self.side_comboBox.sizePolicy().hasHeightForWidth()) + sizePolicy.setHeightForWidth( + self.side_comboBox.sizePolicy().hasHeightForWidth()) self.side_comboBox.setSizePolicy(sizePolicy) self.side_comboBox.setObjectName("side_comboBox") self.side_comboBox.addItem("") self.side_comboBox.addItem("") self.side_comboBox.addItem("") - self.formLayout.setWidget(1, QtWidgets.QFormLayout.FieldRole, self.side_comboBox) - self.componentIndex_label = QtWidgets.QLabel(self.mainSettings_groupBox) + self.formLayout.setWidget( + 1, QtWidgets.QFormLayout.FieldRole, self.side_comboBox) + self.componentIndex_label = QtWidgets.QLabel( + self.mainSettings_groupBox) self.componentIndex_label.setObjectName("componentIndex_label") - self.formLayout.setWidget(2, QtWidgets.QFormLayout.LabelRole, self.componentIndex_label) - self.componentIndex_spinBox = QtWidgets.QSpinBox(self.mainSettings_groupBox) - sizePolicy = QtWidgets.QSizePolicy(QtWidgets.QSizePolicy.Expanding, QtWidgets.QSizePolicy.Fixed) + self.formLayout.setWidget( + 2, QtWidgets.QFormLayout.LabelRole, self.componentIndex_label) + self.componentIndex_spinBox = QtWidgets.QSpinBox( + self.mainSettings_groupBox) + sizePolicy = QtWidgets.QSizePolicy( + QtWidgets.QSizePolicy.Expanding, QtWidgets.QSizePolicy.Fixed) sizePolicy.setHorizontalStretch(0) sizePolicy.setVerticalStretch(0) - sizePolicy.setHeightForWidth(self.componentIndex_spinBox.sizePolicy().hasHeightForWidth()) + sizePolicy.setHeightForWidth( + self.componentIndex_spinBox.sizePolicy().hasHeightForWidth()) self.componentIndex_spinBox.setSizePolicy(sizePolicy) self.componentIndex_spinBox.setObjectName("componentIndex_spinBox") - self.formLayout.setWidget(2, QtWidgets.QFormLayout.FieldRole, self.componentIndex_spinBox) + self.formLayout.setWidget( + 2, QtWidgets.QFormLayout.FieldRole, self.componentIndex_spinBox) self.conector_label = QtWidgets.QLabel(self.mainSettings_groupBox) self.conector_label.setObjectName("conector_label") - self.formLayout.setWidget(3, QtWidgets.QFormLayout.LabelRole, self.conector_label) - self.connector_comboBox = QtWidgets.QComboBox(self.mainSettings_groupBox) - sizePolicy = QtWidgets.QSizePolicy(QtWidgets.QSizePolicy.Expanding, QtWidgets.QSizePolicy.Fixed) + self.formLayout.setWidget( + 3, QtWidgets.QFormLayout.LabelRole, self.conector_label) + self.connector_comboBox = QtWidgets.QComboBox( + self.mainSettings_groupBox) + sizePolicy = QtWidgets.QSizePolicy( + QtWidgets.QSizePolicy.Expanding, QtWidgets.QSizePolicy.Fixed) sizePolicy.setHorizontalStretch(0) sizePolicy.setVerticalStretch(0) - sizePolicy.setHeightForWidth(self.connector_comboBox.sizePolicy().hasHeightForWidth()) + sizePolicy.setHeightForWidth( + self.connector_comboBox.sizePolicy().hasHeightForWidth()) self.connector_comboBox.setSizePolicy(sizePolicy) self.connector_comboBox.setObjectName("connector_comboBox") self.connector_comboBox.addItem("") - self.formLayout.setWidget(3, QtWidgets.QFormLayout.FieldRole, self.connector_comboBox) + self.formLayout.setWidget( + 3, QtWidgets.QFormLayout.FieldRole, self.connector_comboBox) self.gridLayout_4.addLayout(self.formLayout, 0, 0, 1, 1) self.gridLayout.addWidget(self.mainSettings_groupBox, 0, 0, 1, 1) self.groupBox = QtWidgets.QGroupBox(Form) - sizePolicy = QtWidgets.QSizePolicy(QtWidgets.QSizePolicy.Minimum, QtWidgets.QSizePolicy.Minimum) + sizePolicy = QtWidgets.QSizePolicy( + QtWidgets.QSizePolicy.Minimum, QtWidgets.QSizePolicy.Minimum) sizePolicy.setHorizontalStretch(0) sizePolicy.setVerticalStretch(0) - sizePolicy.setHeightForWidth(self.groupBox.sizePolicy().hasHeightForWidth()) + sizePolicy.setHeightForWidth( + self.groupBox.sizePolicy().hasHeightForWidth()) self.groupBox.setSizePolicy(sizePolicy) self.groupBox.setObjectName("groupBox") self.gridLayout_2 = QtWidgets.QGridLayout(self.groupBox) @@ -108,29 +103,38 @@ def setupUi(self, Form): self.gridLayout_2.addLayout(self.horizontalLayout_2, 0, 0, 1, 1) self.gridLayout.addWidget(self.groupBox, 2, 0, 1, 1) self.jointConnexionSettings_groupBox = QtWidgets.QGroupBox(Form) - sizePolicy = QtWidgets.QSizePolicy(QtWidgets.QSizePolicy.Minimum, QtWidgets.QSizePolicy.Minimum) + sizePolicy = QtWidgets.QSizePolicy( + QtWidgets.QSizePolicy.Minimum, QtWidgets.QSizePolicy.Minimum) sizePolicy.setHorizontalStretch(0) sizePolicy.setVerticalStretch(0) - sizePolicy.setHeightForWidth(self.jointConnexionSettings_groupBox.sizePolicy().hasHeightForWidth()) + sizePolicy.setHeightForWidth( + self.jointConnexionSettings_groupBox.sizePolicy().hasHeightForWidth()) self.jointConnexionSettings_groupBox.setSizePolicy(sizePolicy) - self.jointConnexionSettings_groupBox.setObjectName("jointConnexionSettings_groupBox") - self.gridLayout_3 = QtWidgets.QGridLayout(self.jointConnexionSettings_groupBox) + self.jointConnexionSettings_groupBox.setObjectName( + "jointConnexionSettings_groupBox") + self.gridLayout_3 = QtWidgets.QGridLayout( + self.jointConnexionSettings_groupBox) self.gridLayout_3.setObjectName("gridLayout_3") self.verticalLayout = QtWidgets.QVBoxLayout() self.verticalLayout.setObjectName("verticalLayout") - self.useJointIndex_checkBox = QtWidgets.QCheckBox(self.jointConnexionSettings_groupBox) + self.useJointIndex_checkBox = QtWidgets.QCheckBox( + self.jointConnexionSettings_groupBox) self.useJointIndex_checkBox.setObjectName("useJointIndex_checkBox") self.verticalLayout.addWidget(self.useJointIndex_checkBox) self.horizontalLayout = QtWidgets.QHBoxLayout() self.horizontalLayout.setObjectName("horizontalLayout") - self.parentJointIndex_label = QtWidgets.QLabel(self.jointConnexionSettings_groupBox) + self.parentJointIndex_label = QtWidgets.QLabel( + self.jointConnexionSettings_groupBox) self.parentJointIndex_label.setObjectName("parentJointIndex_label") self.horizontalLayout.addWidget(self.parentJointIndex_label) - self.parentJointIndex_spinBox = QtWidgets.QSpinBox(self.jointConnexionSettings_groupBox) - sizePolicy = QtWidgets.QSizePolicy(QtWidgets.QSizePolicy.Expanding, QtWidgets.QSizePolicy.Fixed) + self.parentJointIndex_spinBox = QtWidgets.QSpinBox( + self.jointConnexionSettings_groupBox) + sizePolicy = QtWidgets.QSizePolicy( + QtWidgets.QSizePolicy.Expanding, QtWidgets.QSizePolicy.Fixed) sizePolicy.setHorizontalStretch(0) sizePolicy.setVerticalStretch(0) - sizePolicy.setHeightForWidth(self.parentJointIndex_spinBox.sizePolicy().hasHeightForWidth()) + sizePolicy.setHeightForWidth( + self.parentJointIndex_spinBox.sizePolicy().hasHeightForWidth()) self.parentJointIndex_spinBox.setSizePolicy(sizePolicy) self.parentJointIndex_spinBox.setMinimum(-1) self.parentJointIndex_spinBox.setMaximum(999999) @@ -139,14 +143,19 @@ def setupUi(self, Form): self.horizontalLayout.addWidget(self.parentJointIndex_spinBox) self.verticalLayout.addLayout(self.horizontalLayout) self.gridLayout_3.addLayout(self.verticalLayout, 0, 0, 1, 1) - self.gridLayout.addWidget(self.jointConnexionSettings_groupBox, 1, 0, 1, 1) - spacerItem = QtWidgets.QSpacerItem(20, 40, QtWidgets.QSizePolicy.Minimum, QtWidgets.QSizePolicy.Expanding) + self.gridLayout.addWidget( + self.jointConnexionSettings_groupBox, 1, 0, 1, 1) + spacerItem = QtWidgets.QSpacerItem( + 20, 40, QtWidgets.QSizePolicy.Minimum, + QtWidgets.QSizePolicy.Expanding) self.gridLayout.addItem(spacerItem, 4, 0, 1, 1) self.groupBox_2 = QtWidgets.QGroupBox(Form) - sizePolicy = QtWidgets.QSizePolicy(QtWidgets.QSizePolicy.Minimum, QtWidgets.QSizePolicy.Minimum) + sizePolicy = QtWidgets.QSizePolicy( + QtWidgets.QSizePolicy.Minimum, QtWidgets.QSizePolicy.Minimum) sizePolicy.setHorizontalStretch(0) sizePolicy.setVerticalStretch(0) - sizePolicy.setHeightForWidth(self.groupBox_2.sizePolicy().hasHeightForWidth()) + sizePolicy.setHeightForWidth( + self.groupBox_2.sizePolicy().hasHeightForWidth()) self.groupBox_2.setSizePolicy(sizePolicy) self.groupBox_2.setObjectName("groupBox_2") self.gridLayout_5 = QtWidgets.QGridLayout(self.groupBox_2) @@ -166,18 +175,28 @@ def retranslateUi(self, Form): Form.setWindowTitle(gqt.fakeTranslate("Form", "Form", None, -1)) self.name_label.setText(gqt.fakeTranslate("Form", "Name:", None, -1)) self.side_label.setText(gqt.fakeTranslate("Form", "Side:", None, -1)) - self.side_comboBox.setItemText(0, gqt.fakeTranslate("Form", "Center", None, -1)) - self.side_comboBox.setItemText(1, gqt.fakeTranslate("Form", "Left", None, -1)) - self.side_comboBox.setItemText(2, gqt.fakeTranslate("Form", "Right", None, -1)) - self.componentIndex_label.setText(gqt.fakeTranslate("Form", "Component Index:", None, -1)) - self.conector_label.setText(gqt.fakeTranslate("Form", "Connector:", None, -1)) - self.connector_comboBox.setItemText(0, gqt.fakeTranslate("Form", "standard", None, -1)) - self.groupBox.setTitle(gqt.fakeTranslate("Form", "Channels Host Settings", None, -1)) + self.side_comboBox.setItemText( + 0, gqt.fakeTranslate("Form", "Center", None, -1)) + self.side_comboBox.setItemText( + 1, gqt.fakeTranslate("Form", "Left", None, -1)) + self.side_comboBox.setItemText( + 2, gqt.fakeTranslate("Form", "Right", None, -1)) + self.componentIndex_label.setText( + gqt.fakeTranslate("Form", "Component Index:", None, -1)) + self.conector_label.setText( + gqt.fakeTranslate("Form", "Connector:", None, -1)) + self.connector_comboBox.setItemText( + 0, gqt.fakeTranslate("Form", "standard", None, -1)) + self.groupBox.setTitle(gqt.fakeTranslate( + "Form", "Channels Host Settings", None, -1)) self.host_label.setText(gqt.fakeTranslate("Form", "Host:", None, -1)) self.host_pushButton.setText(gqt.fakeTranslate("Form", "<<", None, -1)) - self.jointConnexionSettings_groupBox.setTitle(gqt.fakeTranslate("Form", "Joint Connexion Settings", None, -1)) - self.useJointIndex_checkBox.setText(gqt.fakeTranslate("Form", "Use Joint Index", None, -1)) - self.parentJointIndex_label.setText(gqt.fakeTranslate("Form", "Parent Joint Index:", None, -1)) - self.groupBox_2.setTitle(gqt.fakeTranslate("Form", "Custom Controllers Group", None, -1)) + self.jointConnexionSettings_groupBox.setTitle( + gqt.fakeTranslate("Form", "Joint Connexion Settings", None, -1)) + self.useJointIndex_checkBox.setText( + gqt.fakeTranslate("Form", "Use Joint Index", None, -1)) + self.parentJointIndex_label.setText( + gqt.fakeTranslate("Form", "Parent Joint Index:", None, -1)) + self.groupBox_2.setTitle(gqt.fakeTranslate( + "Form", "Custom Controllers Group", None, -1)) self.subGroup_lineEdit.setToolTip(gqt.fakeTranslate("Form", "

Name for a custom controllers Group (Maya set) for the component controllers.

i.e: Setting the name "arm" will create a sub group (sub set in Mayas terminology) with the name "rig_arm_grp". This group will be under the "rig_controllers_grp"

Leave this option empty for the default behaviour.

", None, -1)) - diff --git a/scripts/mgear/maya/shifter/customStep.py b/scripts/mgear/maya/shifter/customStep.py index 111ce79..0fee9f8 100644 --- a/scripts/mgear/maya/shifter/customStep.py +++ b/scripts/mgear/maya/shifter/customStep.py @@ -1,43 +1,17 @@ -# MGEAR is under the terms of the MIT License - -# Copyright (c) 2016 Jeremie Passerin, Miquel Campos - -# Permission is hereby granted, free of charge, to any person obtaining a copy -# of this software and associated documentation files (the "Software"), to deal -# in the Software without restriction, including without limitation the rights -# to use, copy, modify, merge, publish, distribute, sublicense, and/or sell -# copies of the Software, and to permit persons to whom the Software is -# furnished to do so, subject to the following conditions: - -# The above copyright notice and this permission notice shall be included in all -# copies or substantial portions of the Software. - -# THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR -# IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, -# FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE -# AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER -# LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, -# OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE -# SOFTWARE. - -# Author: Jeremie Passerin geerem@hotmail.com www.jeremiepasserin.com -# Author: Miquel Campos hello@miquel-campos.com www.miquel-campos.com -# Date: 2016 / 10 / 10 - -#maya import pymel.core as pm - class customShifterMainStep(object): ''' Main Class for shifter custom steps ''' + def run(self, storedDic): """This function mus be re implemented for each custom step. Args: - storedDic (dic): We have to pass the stored dictionary from the previous pass + storedDic (dic): We have to pass the stored dictionary from the + previous pass Raises: Exception: Description @@ -49,8 +23,8 @@ def dup(self, source, name=None): Args: source (PyNode): The Source object to duplicate - name (None, string): The name for the new object. If the value is None - the name will be set by using the custom step name + name (None, string): The name for the new object. If the value + is None the name will be set by using the custom step name Returns: PyNode: The new duplicated object. diff --git a/scripts/mgear/maya/shifter/gameToolsUI.py b/scripts/mgear/maya/shifter/gameToolsUI.py index 255fc7d..c130be5 100644 --- a/scripts/mgear/maya/shifter/gameToolsUI.py +++ b/scripts/mgear/maya/shifter/gameToolsUI.py @@ -1,15 +1,9 @@ -# -*- coding: utf-8 -*- -# Form implementation generated from reading ui file 'D:/repo/mgear/scripts/mgear/maya/shifter/gameToolsUI.ui' -# -# Created: Wed Nov 1 16:06:54 2017 -# by: pyside2-uic running on PySide2 2.0.0~alpha0 -# -# WARNING! All changes made in this file will be lost! +from PySide2 import QtCore, QtWidgets -from PySide2 import QtCore, QtGui, QtWidgets class Ui_gameTools(object): + def setupUi(self, gameTools): gameTools.setObjectName("gameTools") gameTools.resize(284, 332) @@ -37,13 +31,15 @@ def setupUi(self, gameTools): self.rigNode_lineEdit = QtWidgets.QLineEdit(self.gameTools_groupBox) self.rigNode_lineEdit.setObjectName("rigNode_lineEdit") self.gridLayout_2.addWidget(self.rigNode_lineEdit, 1, 0, 1, 1) - self.rigNode_pushButton = QtWidgets.QPushButton(self.gameTools_groupBox) + self.rigNode_pushButton = QtWidgets.QPushButton( + self.gameTools_groupBox) self.rigNode_pushButton.setObjectName("rigNode_pushButton") self.gridLayout_2.addWidget(self.rigNode_pushButton, 1, 1, 1, 1) self.meshNode_lineEdit = QtWidgets.QLineEdit(self.gameTools_groupBox) self.meshNode_lineEdit.setObjectName("meshNode_lineEdit") self.gridLayout_2.addWidget(self.meshNode_lineEdit, 2, 0, 1, 1) - self.meshNode_pushButton = QtWidgets.QPushButton(self.gameTools_groupBox) + self.meshNode_pushButton = QtWidgets.QPushButton( + self.gameTools_groupBox) self.meshNode_pushButton.setObjectName("meshNode_pushButton") self.gridLayout_2.addWidget(self.meshNode_pushButton, 2, 1, 1, 1) self.path_lineEdit = QtWidgets.QLineEdit(self.gameTools_groupBox) @@ -58,20 +54,27 @@ def setupUi(self, gameTools): self.script_pushButton = QtWidgets.QPushButton(self.gameTools_groupBox) self.script_pushButton.setObjectName("script_pushButton") self.gridLayout_2.addWidget(self.script_pushButton, 4, 1, 1, 1) - self.disconnectExport_pushButton = QtWidgets.QPushButton(self.gameTools_groupBox) - self.disconnectExport_pushButton.setObjectName("disconnectExport_pushButton") - self.gridLayout_2.addWidget(self.disconnectExport_pushButton, 5, 0, 1, 2) + self.disconnectExport_pushButton = QtWidgets.QPushButton( + self.gameTools_groupBox) + self.disconnectExport_pushButton.setObjectName( + "disconnectExport_pushButton") + self.gridLayout_2.addWidget( + self.disconnectExport_pushButton, 5, 0, 1, 2) self.verticalLayout.addWidget(self.gameTools_groupBox) self.assembly_groupBox = QtWidgets.QGroupBox(gameTools) self.assembly_groupBox.setObjectName("assembly_groupBox") self.gridLayout_3 = QtWidgets.QGridLayout(self.assembly_groupBox) self.gridLayout_3.setObjectName("gridLayout_3") - self.importConnect_pushButton = QtWidgets.QPushButton(self.assembly_groupBox) + self.importConnect_pushButton = QtWidgets.QPushButton( + self.assembly_groupBox) self.importConnect_pushButton.setObjectName("importConnect_pushButton") self.gridLayout_3.addWidget(self.importConnect_pushButton, 0, 0, 1, 1) - self.referenceConnect_pushButton = QtWidgets.QPushButton(self.assembly_groupBox) - self.referenceConnect_pushButton.setObjectName("referenceConnect_pushButton") - self.gridLayout_3.addWidget(self.referenceConnect_pushButton, 1, 0, 1, 1) + self.referenceConnect_pushButton = QtWidgets.QPushButton( + self.assembly_groupBox) + self.referenceConnect_pushButton.setObjectName( + "referenceConnect_pushButton") + self.gridLayout_3.addWidget( + self.referenceConnect_pushButton, 1, 0, 1, 1) self.verticalLayout.addWidget(self.assembly_groupBox) self.gridLayout_4.addLayout(self.verticalLayout, 0, 0, 1, 1) @@ -79,15 +82,29 @@ def setupUi(self, gameTools): QtCore.QMetaObject.connectSlotsByName(gameTools) def retranslateUi(self, gameTools): - gameTools.setWindowTitle(QtWidgets.QApplication.translate("gameTools", "SHIFTER Game Tools", None, -1)) - self.gameTools_groupBox.setTitle(QtWidgets.QApplication.translate("gameTools", "EXPORT", None, -1)) - self.assetName_label.setText(QtWidgets.QApplication.translate("gameTools", "Asset Name", None, -1)) - self.rigNode_pushButton.setText(QtWidgets.QApplication.translate("gameTools", "<<< Rig Top Node", None, -1)) - self.meshNode_pushButton.setText(QtWidgets.QApplication.translate("gameTools", "<<< Mesh Top Node", None, -1)) - self.path_pushButton.setText(QtWidgets.QApplication.translate("gameTools", "set Output Folder", None, -1)) - self.script_pushButton.setText(QtWidgets.QApplication.translate("gameTools", "set Custom Script", None, -1)) - self.disconnectExport_pushButton.setText(QtWidgets.QApplication.translate("gameTools", "Disconnect and Export", None, -1)) - self.assembly_groupBox.setTitle(QtWidgets.QApplication.translate("gameTools", "ASSEMBLY", None, -1)) - self.importConnect_pushButton.setText(QtWidgets.QApplication.translate("gameTools", "Import and Connect", None, -1)) - self.referenceConnect_pushButton.setText(QtWidgets.QApplication.translate("gameTools", "Reference and Connect", None, -1)) - + gameTools.setWindowTitle(QtWidgets.QApplication.translate( + "gameTools", "SHIFTER Game Tools", None, -1)) + self.gameTools_groupBox.setTitle( + QtWidgets.QApplication.translate("gameTools", "EXPORT", None, -1)) + self.assetName_label.setText(QtWidgets.QApplication.translate( + "gameTools", "Asset Name", None, -1)) + self.rigNode_pushButton.setText(QtWidgets.QApplication.translate( + "gameTools", "<<< Rig Top Node", None, -1)) + self.meshNode_pushButton.setText(QtWidgets.QApplication.translate( + "gameTools", "<<< Mesh Top Node", None, -1)) + self.path_pushButton.setText(QtWidgets.QApplication.translate( + "gameTools", "set Output Folder", None, -1)) + self.script_pushButton.setText(QtWidgets.QApplication.translate( + "gameTools", "set Custom Script", None, -1)) + self.disconnectExport_pushButton.setText( + QtWidgets.QApplication.translate( + "gameTools", "Disconnect and Export", None, -1)) + self.assembly_groupBox.setTitle( + QtWidgets.QApplication.translate( + "gameTools", "ASSEMBLY", None, -1)) + self.importConnect_pushButton.setText( + QtWidgets.QApplication.translate( + "gameTools", "Import and Connect", None, -1)) + self.referenceConnect_pushButton.setText( + QtWidgets.QApplication.translate( + "gameTools", "Reference and Connect", None, -1)) diff --git a/scripts/mgear/maya/shifter/gui.py b/scripts/mgear/maya/shifter/gui.py index 34ae4af..d6bc381 100644 --- a/scripts/mgear/maya/shifter/gui.py +++ b/scripts/mgear/maya/shifter/gui.py @@ -1,33 +1,3 @@ -# MGEAR is under the terms of the MIT License - -# Copyright (c) 2016 Jeremie Passerin, Miquel Campos - -# Permission is hereby granted, free of charge, to any person obtaining a copy -# of this software and associated documentation files (the "Software"), to deal -# in the Software without restriction, including without limitation the rights -# to use, copy, modify, merge, publish, distribute, sublicense, and/or sell -# copies of the Software, and to permit persons to whom the Software is -# furnished to do so, subject to the following conditions: - -# The above copyright notice and this permission notice shall be included in all -# copies or substantial portions of the Software. - -# THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR -# IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, -# FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE -# AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER -# LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, -# OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE -# SOFTWARE. - -# Author: Jeremie Passerin geerem@hotmail.com www.jeremiepasserin.com -# Author: Miquel Campos hello@miquel-campos.com www.miquel-campos.com -# Date: 2016 / 10 / 10 - -########################################################## -# GLOBAL -########################################################## -# Built-in import os from functools import partial @@ -37,10 +7,7 @@ # mgear import mgear -import mgear.maya.shifter as shifter -import mgear.maya.skin as skin -import mgear.maya.pyqt as gqt -import mgear.maya.utils as mutils +from mgear.maya import shifter, skin, pyqt, utils GUIDE_UI_WINDOW_NAME = "guide_UI_window" GUIDE_DOCK_NAME = "Guide_Components" @@ -58,8 +25,7 @@ def __init__(self): print "deleting win" pm.deleteUI(GUIDE_UI_WINDOW_NAME) - - if pm.dockControl( GUIDE_DOCK_NAME, exists=True): + if pm.dockControl(GUIDE_DOCK_NAME, exists=True): print "deleting dock" pm.deleteUI(GUIDE_DOCK_NAME) @@ -67,31 +33,50 @@ def __init__(self): scrollHight = 600 # Create Window and main tab - self.ui_window = pm.window(GUIDE_UI_WINDOW_NAME, width=panelWeight, title="Guide Tools", sizeable=True) - self.ui_topLevelColumn = pm.columnLayout(adjustableColumn=True, columnAlign="center") + self.ui_window = pm.window( + GUIDE_UI_WINDOW_NAME, width=panelWeight, title="Guide Tools", + sizeable=True) + self.ui_topLevelColumn = pm.columnLayout( + adjustableColumn=True, columnAlign="center") # pm.columnLayout() - pm.rowLayout( numberOfColumns=1, columnWidth=[(1, panelWeight)] ) - pm.button(label="Settings", w=panelWeight, h=30, bgc=[.042, .351, .615], command=partial(self.inspectSettings) ) - pm.setParent( '..' ) - pm.rowLayout( numberOfColumns=3, columnWidth=[(1, (panelWeight/3)-1), (2, (panelWeight/3)-1), (3, (panelWeight/3)-1)] ) - pm.button(label="Dupl.", w=(panelWeight/3)-1, h=23, bgc=[.311, .635, 0], command=partial(self.duplicate, False) ) - pm.button(label="Dupl. Sym", w=(panelWeight/3)-1, h=23, bgc=[.465, .785, .159], command=partial(self.duplicate, True) ) - pm.button(label="Extr. Ctl", w=(panelWeight/3)-1, h=23, bgc=[.835, .792, .042], command=partial(self.extractControls) ) - pm.setParent( '..' ) - pm.rowLayout( numberOfColumns=1, columnWidth=[(1, panelWeight)] ) - pm.button(label="Build from selection", w=panelWeight, h=30, bgc=[.912, .427, .176], command=partial(self.buildFromSelection) ) - pm.setParent( '..' ) - - self.ui_tabs = pm.tabLayout(width=panelWeight, innerMarginWidth=5, innerMarginHeight=5) + pm.rowLayout(numberOfColumns=1, columnWidth=[(1, panelWeight)]) + pm.button(label="Settings", w=panelWeight, h=30, + bgc=[.042, .351, .615], + command=partial(self.inspectSettings)) + pm.setParent('..') + pm.rowLayout(numberOfColumns=3, columnWidth=[ + (1, (panelWeight / 3) - 1), + (2, (panelWeight / 3) - 1), + (3, (panelWeight / 3) - 1)]) + pm.button(label="Dupl.", w=(panelWeight / 3) - 1, h=23, + bgc=[.311, .635, 0], command=partial(self.duplicate, False)) + pm.button(label="Dupl. Sym", w=(panelWeight / 3) - 1, h=23, + bgc=[.465, .785, .159], + command=partial(self.duplicate, True)) + pm.button(label="Extr. Ctl", w=(panelWeight / 3) - 1, h=23, + bgc=[.835, .792, .042], + command=partial(self.extractControls)) + pm.setParent('..') + pm.rowLayout(numberOfColumns=1, columnWidth=[(1, panelWeight)]) + pm.button(label="Build from selection", w=panelWeight, h=30, + bgc=[.912, .427, .176], + command=partial(self.buildFromSelection)) + pm.setParent('..') + + self.ui_tabs = pm.tabLayout( + width=panelWeight, innerMarginWidth=5, innerMarginHeight=5) pm.tabLayout(self.ui_tabs, q=True, width=True) # self.ui_compColumn = pm.columnLayout(adj=True, rs=3) - self.ui_compFrameLayout = pm.frameLayout(height=scrollHight, collapsable=False, borderVisible=False, labelVisible=False) + self.ui_compFrameLayout = pm.frameLayout( + height=scrollHight, collapsable=False, borderVisible=False, + labelVisible=False) self.ui_compList_Scroll = pm.scrollLayout(hst=0) - self.ui_compList_column = pm.columnLayout(columnWidth=panelWeight, adj=True, rs=2) + self.ui_compList_column = pm.columnLayout( + columnWidth=panelWeight, adj=True, rs=2) pm.separator() # List of components @@ -104,38 +89,54 @@ def __init__(self): pm.separator() for comp_name in comps: - if comp_name in trackLoadComponent: - pm.displayWarning("Custom component name: %s, already in default components. Names should be unique. This component is not loaded"%comp_name) + if comp_name in trackLoadComponent: + pm.displayWarning( + "Custom component name: %s, already in default " + "components. Names should be unique. This component is" + " not loaded" % comp_name) continue else: trackLoadComponent.append(comp_name) - if not os.path.exists(os.path.join(path, comp_name, "__init__.py")): + if not os.path.exists(os.path.join(path, + comp_name, "__init__.py")): continue - # module = __import__("mgear.maya.rig.component."+comp_name, globals(), locals(), ["*"], -1) module = shifter.importComponentGuide(comp_name) - # print module - # print dir(module) + reload(module) image = os.path.join(path, comp_name, "icon.jpg") buttonSize = 25 - textDesc = "Name: "+module.NAME+"\nType:: "+module.TYPE+"\n===========\nAuthor: "+module.AUTHOR+"\nWeb: "+module.URL+\ - "\nEmail: "+module.EMAIL+"\n===========\nDescription:\n"+module.DESCRIPTION - - pm.rowLayout(numberOfColumns=2, columnWidth=([1, buttonSize]), adjustableColumn=2, columnAttach=([1, "both", 0], [2, "both", 5])) - pm.symbolButton(ann=textDesc, width=buttonSize, height=buttonSize, bgc=[0,0,0], ebg=False, i=image, command=partial(self.drawComp, module.TYPE)) + textDesc = "Name: " + module.NAME + "\nType:: " + \ + module.TYPE + "\n===========\nAuthor: " + \ + module.AUTHOR + "\nWeb: " + module.URL + \ + "\nEmail: " + module.EMAIL + \ + "\n===========\nDescription:\n" + module.DESCRIPTION + + pm.rowLayout(numberOfColumns=2, + columnWidth=([1, buttonSize]), + adjustableColumn=2, + columnAttach=([1, "both", 0], [2, "both", 5])) + pm.symbolButton(ann=textDesc, + width=buttonSize, + height=buttonSize, + bgc=[0, 0, 0], + ebg=False, i=image, + command=partial(self.drawComp, module.TYPE)) pm.columnLayout(columnAlign="center") - pm.text(align="center", width=panelWeight*.6, label=module.TYPE, ann=textDesc, fn="plainLabelFont") + pm.text(align="center", width=panelWeight * .6, + label=module.TYPE, ann=textDesc, fn="plainLabelFont") pm.setParent(self.ui_compList_column) pm.separator() # Display the window - pm.tabLayout(self.ui_tabs, edit=True, tabLabelIndex=([1, "Components"])) + pm.tabLayout(self.ui_tabs, edit=True, + tabLabelIndex=([1, "Components"])) allowedAreas = ['right', 'left'] - pm.dockControl( GUIDE_DOCK_NAME, area='right', content=self.ui_window, allowedArea=allowedAreas, width=panelWeight , s=True) + pm.dockControl(GUIDE_DOCK_NAME, area='right', content=self.ui_window, + allowedArea=allowedAreas, width=panelWeight, s=True) def drawComp(self, compType, *args): @@ -149,20 +150,21 @@ def drawComp(self, compType, *args): guide.drawNewComponent(parent, compType) @classmethod - @mutils.one_undo + @utils.one_undo def buildFromSelection(self, *args): - logWin = pm.window( title="mGear Build Log", iconName='mGear Log') - pm.columnLayout( adjustableColumn=True ) + logWin = pm.window(title="mGear Build Log", iconName='mGear Log') + pm.columnLayout(adjustableColumn=True) pm.cmdScrollFieldReporter(width=800, height=500, clr=True) - pm.button( label='Close', command=('import pymel.core as pm\npm.deleteUI(\"' + logWin + '\", window=True)') ) - pm.setParent( '..' ) - pm.showWindow( logWin ) + pm.button(label='Close', command=( + 'import pymel.core as pm\npm.deleteUI(\"' + logWin + + '\", window=True)')) + pm.setParent('..') + pm.showWindow(logWin) print mgear.logInfos() rg = shifter.Rig() rg.buildFromSelection() - @classmethod def duplicate(self, sym, *args): oSel = pm.selected() @@ -171,7 +173,8 @@ def duplicate(self, sym, *args): guide = shifter.RigGuide() guide.duplicate(root, sym) else: - mgear.log("Select one component root to edit properties", mgear.sev_error) + mgear.log("Select one component root to edit properties", + mgear.sev_error) return @classmethod @@ -181,7 +184,8 @@ def inspectSettings(self, *args): if oSel: root = oSel[0] else: - pm.displayWarning("please select one object from the componenet guide") + pm.displayWarning( + "please select one object from the componenet guide") return comp_type = False @@ -196,29 +200,28 @@ def inspectSettings(self, *args): root = root.getParent() pm.select(root) - if comp_type: guide = shifter.importComponentGuide(comp_type) - gqt.showDialog(guide.componentSettings) + pyqt.showDialog(guide.componentSettings) elif guide_root: module_name = "mgear.maya.shifter.guide" guide = __import__(module_name, globals(), locals(), ["*"], -1) - gqt.showDialog(guide.guideSettings) - + pyqt.showDialog(guide.guideSettings) else: - pm.displayError("The selected object is not part of component guide") + pm.displayError( + "The selected object is not part of component guide") @classmethod def inspectProperties(self, *args): modeSet = ["FK", "IK", "IK/FK"] - rotOrderSet = ["XYZ","YZX", "ZXY", "XZY", "YXZ", "ZYX"] + rotOrderSet = ["XYZ", "YZX", "ZXY", "XZY", "YXZ", "ZYX"] guideModeSet = ["Final", "WIP"] # apply changes - def applyCloseGuide( root, *args): + def applyCloseGuide(root, *args): if pm.attributeQuery("mode", node=root, ex=True): root.attr("mode").set(guideModeSet.index(pMode.getValue())) pm.select(root, r=True) @@ -227,8 +230,11 @@ def applyCloseGuide( root, *args): def skinLoad(root, *args): startDir = root.attr("skin").get() - filePath = pm.fileDialog2(dialogStyle=2, fileMode=1, startingDirectory=startDir, - fileFilter='mGear skin (*%s)' % skin.FILE_EXT) + filePath = pm.fileDialog2( + dialogStyle=2, + fileMode=1, + startingDirectory=startDir, + fileFilter='mGear skin (*%s)' % skin.FILE_EXT) if not filePath: return if not isinstance(filePath, basestring): @@ -236,14 +242,15 @@ def skinLoad(root, *args): root.attr("skin").set(filePath) - def applyCloseComp( root, *args): + def applyCloseComp(root, *args): newName = pName.getText() newSide = pSide.getValue() newIndex = pIndex.getValue1() if pm.attributeQuery("mode", node=root, ex=True): root.attr("mode").set(modeSet.index(pMode.getValue())) if pm.attributeQuery("default_rotorder", node=root, ex=True): - root.attr("default_rotorder").set(rotOrderSet.index(pRotOrder.getValue())) + root.attr("default_rotorder").set( + rotOrderSet.index(pRotOrder.getValue())) guide = shifter.RigGuide() guide.updateProperties(root, newName, newSide, newIndex) @@ -254,58 +261,58 @@ def applyCloseComp( root, *args): if pm.window("compProperties", exists=True): pm.deleteUI("compProperties") - oSel = pm.selected() if oSel: root = oSel[0] else: - mgear.log("Select one root Guide or component to edit properties", mgear.sev_error) + mgear.log( + "Select one root Guide or component to edit properties", + mgear.sev_error) return - if pm.attributeQuery("comp_type", node=root, ex=True): - #property window constructor - customAttr = pm.listAttr( root, ud=True) + # property window constructor + customAttr = pm.listAttr(root, ud=True) - window = pm.window( title=root.name() ) - pm.columnLayout( adjustableColumn=True, cal="right" ) + window = pm.window(title=root.name()) + pm.columnLayout(adjustableColumn=True, cal="right") for attr in customAttr: if attr == "comp_name": fl = pm.formLayout() oriVal = root.attr("comp_name").get() - pName = pm.textFieldGrp(l="comp_name") - pm.setParent( '..' ) + pName = pm.textFieldGrp(label="comp_name") + pm.setParent('..') pm.formLayout(fl, e=True, af=(pName, "left", 0)) pName.setText(oriVal) elif attr == "comp_side": sideSet = ["C", "L", "R"] fl = pm.formLayout() - pSide = pm.optionMenu(l="comp_side") + pSide = pm.optionMenu(label="comp_side") pSide.addMenuItems(sideSet) pSide.setWidth(120) - pm.setParent( '..' ) + pm.setParent('..') pm.formLayout(fl, e=1, af=(pSide, "left", 90)) oriVal = root.attr("comp_side").get() - pSide.setValue(oriVal ) + pSide.setValue(oriVal) elif attr == "mode": fl = pm.formLayout() - pMode = pm.optionMenu(l="mode") + pMode = pm.optionMenu(label="mode") pMode.addMenuItems(modeSet) pMode.setWidth(120) - pm.setParent( '..' ) + pm.setParent('..') pm.formLayout(fl, e=1, af=(pMode, "left", 115)) oriVal = root.attr("mode").get() pMode.setValue(modeSet[oriVal]) elif attr == "default_rotorder": fl = pm.formLayout() - pRotOrder = pm.optionMenu(l="default_rotorder") + pRotOrder = pm.optionMenu(label="default_rotorder") pRotOrder.addMenuItems(rotOrderSet) pRotOrder.setWidth(140) - pm.setParent( '..' ) + pm.setParent('..') pm.formLayout(fl, e=1, af=(pRotOrder, "left", 60)) oriVal = root.attr("default_rotorder").get() pRotOrder.setValue(rotOrderSet[oriVal]) @@ -313,57 +320,63 @@ def applyCloseComp( root, *args): elif attr == "comp_index": fl = pm.formLayout() oriVal = root.attr("comp_index").get() - pIndex = pm.intFieldGrp(v1=oriVal, l="comp_index") - pm.setParent( '..' ) + pIndex = pm.intFieldGrp(v1=oriVal, label="comp_index") + pm.setParent('..') pm.formLayout(fl, e=True, af=(pIndex, "left", 0)) else: editable = True if attr == "comp_type": editable = False - pm.columnLayout( cal="right" ) - pm.attrControlGrp( attribute= root.attr(attr), po=True, en=editable) - pm.setParent( '..' ) + pm.columnLayout(cal="right") + pm.attrControlGrp(attribute=root.attr( + attr), po=True, en=editable) + pm.setParent('..') - pm.button( label='Apply', command=partial(applyCloseComp, root), h=100) - pm.setParent( '..' ) - pm.showWindow( window ) + pm.button(label='Apply', command=partial( + applyCloseComp, root), h=100) + pm.setParent('..') + pm.showWindow(window) elif pm.attributeQuery("ismodel", node=root, ex=True): - #property window constructor - customAttr = pm.listAttr( root, ud=True) + # property window constructor + customAttr = pm.listAttr(root, ud=True) - window = pm.window( title=root.name() ) - pm.columnLayout( adjustableColumn=True, cal="right" ) + window = pm.window(title=root.name()) + pm.columnLayout(adjustableColumn=True, cal="right") for attr in customAttr: if attr.split("_")[-1] not in ["r", "g", "b"]: if attr == "mode": fl = pm.formLayout() - pMode = pm.optionMenu(l="mode") + pMode = pm.optionMenu(label="mode") pMode.addMenuItems(guideModeSet) pMode.setWidth(120) - pm.setParent( '..' ) + pm.setParent('..') pm.formLayout(fl, e=1, af=(pMode, "left", 115)) oriVal = root.attr("mode").get() pMode.setValue(guideModeSet[oriVal]) elif attr == "skin": - pm.columnLayout( cal="right" ) - pm.attrControlGrp( attribute= root.attr(attr), po=True) - pm.setParent( '..' ) - pm.button( label='Load Skin ', command=partial(skinLoad, root)) + pm.columnLayout(cal="right") + pm.attrControlGrp(attribute=root.attr(attr), po=True) + pm.setParent('..') + pm.button(label='Load Skin ', + command=partial(skinLoad, root)) else: - pm.columnLayout( cal="right" ) - pm.attrControlGrp( attribute= root.attr(attr), po=True) - pm.setParent( '..' ) + pm.columnLayout(cal="right") + pm.attrControlGrp(attribute=root.attr(attr), po=True) + pm.setParent('..') - pm.button( label='Apply', command=partial(applyCloseGuide, root ), h=50) - pm.setParent( '..' ) - pm.showWindow( window ) + pm.button(label='Apply', command=partial( + applyCloseGuide, root), h=50) + pm.setParent('..') + pm.showWindow(window) else: - mgear.log("Select a root Guide or component to edit properties", mgear.sev_error) + mgear.log( + "Select a root Guide or component to edit properties", + mgear.sev_error) return def extractControls(self, *args): @@ -372,21 +385,24 @@ def extractControls(self, *args): try: cGrp = pm.PyNode("controllers_org") - except: + except TypeError: cGrp = False - mgear.log("Not controller group in the scene or the group is not unique", mgear.sev_error ) + mgear.log( + "Not controller group in the scene or the group is not unique", + mgear.sev_error) for x in oSel: try: - old = pm.PyNode(cGrp.name() + "|" + x.name().split("|")[-1] +"_controlBuffer") + old = pm.PyNode(cGrp.name() + "|" + + x.name().split("|")[-1] + "_controlBuffer") pm.delete(old) - except: + except TypeError: pass new = pm.duplicate(x)[0] pm.parent(new, cGrp, a=True) - pm.rename(new, x.name() +"_controlBuffer") + pm.rename(new, x.name() + "_controlBuffer") toDel = new.getChildren(type="transform") pm.delete(toDel) try: - pm.sets( "rig_controllers_grp", remove=new ) - except: + pm.sets("rig_controllers_grp", remove=new) + except TypeError: pass diff --git a/scripts/mgear/maya/shifter/guideUI.py b/scripts/mgear/maya/shifter/guideUI.py index 19f8446..8e267e1 100644 --- a/scripts/mgear/maya/shifter/guideUI.py +++ b/scripts/mgear/maya/shifter/guideUI.py @@ -1,33 +1,9 @@ -# MGEAR is under the terms of the MIT License - -# Copyright (c) 2016 Jeremie Passerin, Miquel Campos - -# Permission is hereby granted, free of charge, to any person obtaining a copy -# of this software and associated documentation files (the "Software"), to deal -# in the Software without restriction, including without limitation the rights -# to use, copy, modify, merge, publish, distribute, sublicense, and/or sell -# copies of the Software, and to permit persons to whom the Software is -# furnished to do so, subject to the following conditions: - -# The above copyright notice and this permission notice shall be included in all -# copies or substantial portions of the Software. - -# THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR -# IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, -# FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE -# AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER -# LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, -# OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE -# SOFTWARE. - -# Author: Jeremie Passerin geerem@hotmail.com www.jeremiepasserin.com -# Author: Miquel Campos hello@miquel-campos.com www.miquel-campos.com -# Date: 2016 / 10 / 10 - import mgear.maya.pyqt as gqt QtGui, QtCore, QtWidgets, wrapInstance = gqt.qt_import() + class Ui_Form(object): + def setupUi(self, Form): Form.setObjectName("Form") Form.resize(459, 809) @@ -57,10 +33,12 @@ def setupUi(self, Form): self.L_color_fk_label.setObjectName("L_color_fk_label") self.horizontalLayout_3.addWidget(self.L_color_fk_label) self.L_color_fk_spinBox = QtWidgets.QSpinBox(self.groupBox_5) - sizePolicy = QtWidgets.QSizePolicy(QtWidgets.QSizePolicy.Expanding, QtWidgets.QSizePolicy.Fixed) + sizePolicy = QtWidgets.QSizePolicy( + QtWidgets.QSizePolicy.Expanding, QtWidgets.QSizePolicy.Fixed) sizePolicy.setHorizontalStretch(0) sizePolicy.setVerticalStretch(0) - sizePolicy.setHeightForWidth(self.L_color_fk_spinBox.sizePolicy().hasHeightForWidth()) + sizePolicy.setHeightForWidth( + self.L_color_fk_spinBox.sizePolicy().hasHeightForWidth()) self.L_color_fk_spinBox.setSizePolicy(sizePolicy) self.L_color_fk_spinBox.setMaximum(31) self.L_color_fk_spinBox.setObjectName("L_color_fk_spinBox") @@ -72,10 +50,12 @@ def setupUi(self, Form): self.L_color_fk_label_5.setObjectName("L_color_fk_label_5") self.horizontalLayout_7.addWidget(self.L_color_fk_label_5) self.C_color_fk_spinBox = QtWidgets.QSpinBox(self.groupBox_5) - sizePolicy = QtWidgets.QSizePolicy(QtWidgets.QSizePolicy.Expanding, QtWidgets.QSizePolicy.Fixed) + sizePolicy = QtWidgets.QSizePolicy( + QtWidgets.QSizePolicy.Expanding, QtWidgets.QSizePolicy.Fixed) sizePolicy.setHorizontalStretch(0) sizePolicy.setVerticalStretch(0) - sizePolicy.setHeightForWidth(self.C_color_fk_spinBox.sizePolicy().hasHeightForWidth()) + sizePolicy.setHeightForWidth( + self.C_color_fk_spinBox.sizePolicy().hasHeightForWidth()) self.C_color_fk_spinBox.setSizePolicy(sizePolicy) self.C_color_fk_spinBox.setMaximum(31) self.C_color_fk_spinBox.setObjectName("C_color_fk_spinBox") @@ -87,10 +67,12 @@ def setupUi(self, Form): self.L_color_fk_label_3.setObjectName("L_color_fk_label_3") self.horizontalLayout_5.addWidget(self.L_color_fk_label_3) self.R_color_fk_spinBox = QtWidgets.QSpinBox(self.groupBox_5) - sizePolicy = QtWidgets.QSizePolicy(QtWidgets.QSizePolicy.Expanding, QtWidgets.QSizePolicy.Fixed) + sizePolicy = QtWidgets.QSizePolicy( + QtWidgets.QSizePolicy.Expanding, QtWidgets.QSizePolicy.Fixed) sizePolicy.setHorizontalStretch(0) sizePolicy.setVerticalStretch(0) - sizePolicy.setHeightForWidth(self.R_color_fk_spinBox.sizePolicy().hasHeightForWidth()) + sizePolicy.setHeightForWidth( + self.R_color_fk_spinBox.sizePolicy().hasHeightForWidth()) self.R_color_fk_spinBox.setSizePolicy(sizePolicy) self.R_color_fk_spinBox.setMaximum(31) self.R_color_fk_spinBox.setObjectName("R_color_fk_spinBox") @@ -102,10 +84,12 @@ def setupUi(self, Form): self.L_color_fk_label_2.setObjectName("L_color_fk_label_2") self.horizontalLayout_4.addWidget(self.L_color_fk_label_2) self.L_color_ik_spinBox = QtWidgets.QSpinBox(self.groupBox_5) - sizePolicy = QtWidgets.QSizePolicy(QtWidgets.QSizePolicy.Expanding, QtWidgets.QSizePolicy.Fixed) + sizePolicy = QtWidgets.QSizePolicy( + QtWidgets.QSizePolicy.Expanding, QtWidgets.QSizePolicy.Fixed) sizePolicy.setHorizontalStretch(0) sizePolicy.setVerticalStretch(0) - sizePolicy.setHeightForWidth(self.L_color_ik_spinBox.sizePolicy().hasHeightForWidth()) + sizePolicy.setHeightForWidth( + self.L_color_ik_spinBox.sizePolicy().hasHeightForWidth()) self.L_color_ik_spinBox.setSizePolicy(sizePolicy) self.L_color_ik_spinBox.setMaximum(31) self.L_color_ik_spinBox.setObjectName("L_color_ik_spinBox") @@ -117,10 +101,12 @@ def setupUi(self, Form): self.L_color_fk_label_6.setObjectName("L_color_fk_label_6") self.horizontalLayout_8.addWidget(self.L_color_fk_label_6) self.C_color_ik_spinBox = QtWidgets.QSpinBox(self.groupBox_5) - sizePolicy = QtWidgets.QSizePolicy(QtWidgets.QSizePolicy.Expanding, QtWidgets.QSizePolicy.Fixed) + sizePolicy = QtWidgets.QSizePolicy( + QtWidgets.QSizePolicy.Expanding, QtWidgets.QSizePolicy.Fixed) sizePolicy.setHorizontalStretch(0) sizePolicy.setVerticalStretch(0) - sizePolicy.setHeightForWidth(self.C_color_ik_spinBox.sizePolicy().hasHeightForWidth()) + sizePolicy.setHeightForWidth( + self.C_color_ik_spinBox.sizePolicy().hasHeightForWidth()) self.C_color_ik_spinBox.setSizePolicy(sizePolicy) self.C_color_ik_spinBox.setMaximum(31) self.C_color_ik_spinBox.setObjectName("C_color_ik_spinBox") @@ -132,10 +118,12 @@ def setupUi(self, Form): self.L_color_fk_label_4.setObjectName("L_color_fk_label_4") self.horizontalLayout_6.addWidget(self.L_color_fk_label_4) self.R_color_ik_spinBox = QtWidgets.QSpinBox(self.groupBox_5) - sizePolicy = QtWidgets.QSizePolicy(QtWidgets.QSizePolicy.Expanding, QtWidgets.QSizePolicy.Fixed) + sizePolicy = QtWidgets.QSizePolicy( + QtWidgets.QSizePolicy.Expanding, QtWidgets.QSizePolicy.Fixed) sizePolicy.setHorizontalStretch(0) sizePolicy.setVerticalStretch(0) - sizePolicy.setHeightForWidth(self.R_color_ik_spinBox.sizePolicy().hasHeightForWidth()) + sizePolicy.setHeightForWidth( + self.R_color_ik_spinBox.sizePolicy().hasHeightForWidth()) self.R_color_ik_spinBox.setSizePolicy(sizePolicy) self.R_color_ik_spinBox.setMaximum(31) self.R_color_ik_spinBox.setObjectName("R_color_ik_spinBox") @@ -156,31 +144,40 @@ def setupUi(self, Form): self.verticalLayout_3.addWidget(self.rigTabs_label) self.rigTabs_listWidget = QtWidgets.QListWidget(self.groupBox_4) self.rigTabs_listWidget.setDragDropOverwriteMode(True) - self.rigTabs_listWidget.setDragDropMode(QtWidgets.QAbstractItemView.InternalMove) + self.rigTabs_listWidget.setDragDropMode( + QtWidgets.QAbstractItemView.InternalMove) self.rigTabs_listWidget.setDefaultDropAction(QtCore.Qt.MoveAction) self.rigTabs_listWidget.setAlternatingRowColors(True) - self.rigTabs_listWidget.setSelectionMode(QtWidgets.QAbstractItemView.ExtendedSelection) + self.rigTabs_listWidget.setSelectionMode( + QtWidgets.QAbstractItemView.ExtendedSelection) self.rigTabs_listWidget.setSelectionRectVisible(False) self.rigTabs_listWidget.setObjectName("rigTabs_listWidget") self.verticalLayout_3.addWidget(self.rigTabs_listWidget) self.horizontalLayout_2.addLayout(self.verticalLayout_3) self.verticalLayout_4 = QtWidgets.QVBoxLayout() - self.verticalLayout_4.setSizeConstraint(QtWidgets.QLayout.SetDefaultConstraint) + self.verticalLayout_4.setSizeConstraint( + QtWidgets.QLayout.SetDefaultConstraint) self.verticalLayout_4.setObjectName("verticalLayout_4") - spacerItem = QtWidgets.QSpacerItem(20, 40, QtWidgets.QSizePolicy.Minimum, QtWidgets.QSizePolicy.Expanding) + spacerItem = QtWidgets.QSpacerItem( + 20, 40, QtWidgets.QSizePolicy.Minimum, + QtWidgets.QSizePolicy.Expanding) self.verticalLayout_4.addItem(spacerItem) self.addTab_pushButton = QtWidgets.QPushButton(self.groupBox_4) self.addTab_pushButton.setObjectName("addTab_pushButton") self.verticalLayout_4.addWidget(self.addTab_pushButton) self.removeTab_pushButton = QtWidgets.QPushButton(self.groupBox_4) - sizePolicy = QtWidgets.QSizePolicy(QtWidgets.QSizePolicy.Minimum, QtWidgets.QSizePolicy.Fixed) + sizePolicy = QtWidgets.QSizePolicy( + QtWidgets.QSizePolicy.Minimum, QtWidgets.QSizePolicy.Fixed) sizePolicy.setHorizontalStretch(0) sizePolicy.setVerticalStretch(0) - sizePolicy.setHeightForWidth(self.removeTab_pushButton.sizePolicy().hasHeightForWidth()) + sizePolicy.setHeightForWidth( + self.removeTab_pushButton.sizePolicy().hasHeightForWidth()) self.removeTab_pushButton.setSizePolicy(sizePolicy) self.removeTab_pushButton.setObjectName("removeTab_pushButton") self.verticalLayout_4.addWidget(self.removeTab_pushButton) - spacerItem1 = QtWidgets.QSpacerItem(20, 40, QtWidgets.QSizePolicy.Minimum, QtWidgets.QSizePolicy.Expanding) + spacerItem1 = QtWidgets.QSpacerItem( + 20, 40, QtWidgets.QSizePolicy.Minimum, + QtWidgets.QSizePolicy.Expanding) self.verticalLayout_4.addItem(spacerItem1) self.horizontalLayout_2.addLayout(self.verticalLayout_4) self.verticalLayout_2 = QtWidgets.QVBoxLayout() @@ -190,10 +187,12 @@ def setupUi(self, Form): self.verticalLayout_2.addWidget(self.available_label) self.available_listWidget = QtWidgets.QListWidget(self.groupBox_4) self.available_listWidget.setDragDropOverwriteMode(True) - self.available_listWidget.setDragDropMode(QtWidgets.QAbstractItemView.NoDragDrop) + self.available_listWidget.setDragDropMode( + QtWidgets.QAbstractItemView.NoDragDrop) self.available_listWidget.setDefaultDropAction(QtCore.Qt.IgnoreAction) self.available_listWidget.setAlternatingRowColors(True) - self.available_listWidget.setSelectionMode(QtWidgets.QAbstractItemView.ExtendedSelection) + self.available_listWidget.setSelectionMode( + QtWidgets.QAbstractItemView.ExtendedSelection) self.available_listWidget.setSelectionRectVisible(False) self.available_listWidget.setObjectName("available_listWidget") self.verticalLayout_2.addWidget(self.available_listWidget) @@ -208,21 +207,26 @@ def setupUi(self, Form): self.formLayout.setObjectName("formLayout") self.rigName_label = QtWidgets.QLabel(self.groupBox) self.rigName_label.setObjectName("rigName_label") - self.formLayout.setWidget(0, QtWidgets.QFormLayout.LabelRole, self.rigName_label) + self.formLayout.setWidget( + 0, QtWidgets.QFormLayout.LabelRole, self.rigName_label) self.rigName_lineEdit = QtWidgets.QLineEdit(self.groupBox) self.rigName_lineEdit.setObjectName("rigName_lineEdit") - self.formLayout.setWidget(0, QtWidgets.QFormLayout.FieldRole, self.rigName_lineEdit) + self.formLayout.setWidget( + 0, QtWidgets.QFormLayout.FieldRole, self.rigName_lineEdit) self.mode_label = QtWidgets.QLabel(self.groupBox) self.mode_label.setObjectName("mode_label") - self.formLayout.setWidget(1, QtWidgets.QFormLayout.LabelRole, self.mode_label) + self.formLayout.setWidget( + 1, QtWidgets.QFormLayout.LabelRole, self.mode_label) self.mode_comboBox = QtWidgets.QComboBox(self.groupBox) self.mode_comboBox.setObjectName("mode_comboBox") self.mode_comboBox.addItem("") self.mode_comboBox.addItem("") - self.formLayout.setWidget(1, QtWidgets.QFormLayout.FieldRole, self.mode_comboBox) + self.formLayout.setWidget( + 1, QtWidgets.QFormLayout.FieldRole, self.mode_comboBox) self.step_label = QtWidgets.QLabel(self.groupBox) self.step_label.setObjectName("step_label") - self.formLayout.setWidget(2, QtWidgets.QFormLayout.LabelRole, self.step_label) + self.formLayout.setWidget( + 2, QtWidgets.QFormLayout.LabelRole, self.step_label) self.step_comboBox = QtWidgets.QComboBox(self.groupBox) self.step_comboBox.setObjectName("step_comboBox") self.step_comboBox.addItem("") @@ -232,7 +236,8 @@ def setupUi(self, Form): self.step_comboBox.addItem("") self.step_comboBox.addItem("") self.step_comboBox.addItem("") - self.formLayout.setWidget(2, QtWidgets.QFormLayout.FieldRole, self.step_comboBox) + self.formLayout.setWidget( + 2, QtWidgets.QFormLayout.FieldRole, self.step_comboBox) self.gridLayout_3.addLayout(self.formLayout, 0, 0, 1, 1) self.gridLayout_2.addWidget(self.groupBox, 0, 0, 1, 1) self.groupBox_2 = QtWidgets.QGroupBox(Form) @@ -259,10 +264,12 @@ def setupUi(self, Form): self.gridLayout_4.addLayout(self.verticalLayout, 0, 0, 1, 1) self.gridLayout_2.addWidget(self.groupBox_2, 2, 0, 1, 1) self.groupBox_3 = QtWidgets.QGroupBox(Form) - sizePolicy = QtWidgets.QSizePolicy(QtWidgets.QSizePolicy.Preferred, QtWidgets.QSizePolicy.Fixed) + sizePolicy = QtWidgets.QSizePolicy( + QtWidgets.QSizePolicy.Preferred, QtWidgets.QSizePolicy.Fixed) sizePolicy.setHorizontalStretch(0) sizePolicy.setVerticalStretch(0) - sizePolicy.setHeightForWidth(self.groupBox_3.sizePolicy().hasHeightForWidth()) + sizePolicy.setHeightForWidth( + self.groupBox_3.sizePolicy().hasHeightForWidth()) self.groupBox_3.setSizePolicy(sizePolicy) self.groupBox_3.setObjectName("groupBox_3") self.gridLayout_5 = QtWidgets.QGridLayout(self.groupBox_3) @@ -278,9 +285,12 @@ def setupUi(self, Form): self.proxyChannels_checkBox = QtWidgets.QCheckBox(self.groupBox_6) self.proxyChannels_checkBox.setObjectName("proxyChannels_checkBox") self.gridLayout_8.addWidget(self.proxyChannels_checkBox, 0, 0, 1, 1) - self.classicChannelNames_checkBox = QtWidgets.QCheckBox(self.groupBox_6) - self.classicChannelNames_checkBox.setObjectName("classicChannelNames_checkBox") - self.gridLayout_8.addWidget(self.classicChannelNames_checkBox, 1, 0, 1, 1) + self.classicChannelNames_checkBox = QtWidgets.QCheckBox( + self.groupBox_6) + self.classicChannelNames_checkBox.setObjectName( + "classicChannelNames_checkBox") + self.gridLayout_8.addWidget( + self.classicChannelNames_checkBox, 1, 0, 1, 1) self.gridLayout_2.addWidget(self.groupBox_6, 1, 0, 1, 1) self.retranslateUi(Form) @@ -288,42 +298,94 @@ def setupUi(self, Form): def retranslateUi(self, Form): Form.setWindowTitle(gqt.fakeTranslate("Form", "Form", None, -1)) - self.groupBox_5.setTitle(gqt.fakeTranslate("Form", "Color Settings", None, -1)) + self.groupBox_5.setTitle(gqt.fakeTranslate( + "Form", "Color Settings", None, -1)) self.label.setText(gqt.fakeTranslate("Form", "Left", None, -1)) self.label_2.setText(gqt.fakeTranslate("Form", "Center", None, -1)) self.label_3.setText(gqt.fakeTranslate("Form", "Right", None, -1)) - self.L_color_fk_label.setText(gqt.fakeTranslate("Form", "FK", None, -1)) - self.L_color_fk_label_5.setText(gqt.fakeTranslate("Form", "FK", None, -1)) - self.L_color_fk_label_3.setText(gqt.fakeTranslate("Form", "FK", None, -1)) - self.L_color_fk_label_2.setText(gqt.fakeTranslate("Form", "IK", None, -1)) - self.L_color_fk_label_6.setText(gqt.fakeTranslate("Form", "IK", None, -1)) - self.L_color_fk_label_4.setText(gqt.fakeTranslate("Form", " IK", None, -1)) - self.groupBox_4.setTitle(gqt.fakeTranslate("Form", "Synoptic Settings", None, -1)) - self.rigTabs_label.setText(gqt.fakeTranslate("Form", "Rig Tabs", None, -1)) - self.addTab_pushButton.setText(gqt.fakeTranslate("Form", "<<", None, -1)) - self.removeTab_pushButton.setText(gqt.fakeTranslate("Form", ">>", None, -1)) - self.available_label.setText(gqt.fakeTranslate("Form", "Available Tabs", None, -1)) - self.groupBox.setTitle(gqt.fakeTranslate("Form", "Rig Settings", None, -1)) - self.rigName_label.setText(gqt.fakeTranslate("Form", "Rig Name", None, -1)) - self.mode_label.setText(gqt.fakeTranslate("Form", "Debug Mode", None, -1)) - self.mode_comboBox.setItemText(0, gqt.fakeTranslate("Form", "Final", None, -1)) - self.mode_comboBox.setItemText(1, gqt.fakeTranslate("Form", "WIP", None, -1)) - self.step_label.setText(gqt.fakeTranslate("Form", "Guide Build Steps:", None, -1)) - self.step_comboBox.setItemText(0, gqt.fakeTranslate("Form", "All Steps", None, -1)) - self.step_comboBox.setItemText(1, gqt.fakeTranslate("Form", "Objects", None, -1)) - self.step_comboBox.setItemText(2, gqt.fakeTranslate("Form", "Attributes", None, -1)) - self.step_comboBox.setItemText(3, gqt.fakeTranslate("Form", "Operators", None, -1)) - self.step_comboBox.setItemText(4, gqt.fakeTranslate("Form", "Connect", None, -1)) - self.step_comboBox.setItemText(5, gqt.fakeTranslate("Form", "Joints", None, -1)) - self.step_comboBox.setItemText(6, gqt.fakeTranslate("Form", "Finalize", None, -1)) - self.groupBox_2.setTitle(gqt.fakeTranslate("Form", "Skinning Settings", None, -1)) - self.importSkin_checkBox.setText(gqt.fakeTranslate("Form", "Import Skin", None, -1)) - self.skin_label.setText(gqt.fakeTranslate("Form", "Skin Path", None, -1)) - self.loadSkinPath_pushButton.setText(gqt.fakeTranslate("Form", "Load Path", None, -1)) - self.groupBox_3.setTitle(gqt.fakeTranslate("Form", "Joint Settings", None, -1)) - self.jointRig_checkBox.setText(gqt.fakeTranslate("Form", "Separated Joint Structure", None, -1)) - self.groupBox_6.setTitle(gqt.fakeTranslate("Form", "Animation Channels Settings", None, -1)) - self.proxyChannels_checkBox.setText(gqt.fakeTranslate("Form", "Add Internal Proxy Channels", None, -1)) - self.classicChannelNames_checkBox.setToolTip(gqt.fakeTranslate("Form", "

If this option is checked. The channel name will have unique full name.

i.e: "arm_L0_blend"

If the option is unchecked. The channel will use the simple name.

i.e: "arm_blend"

NOTE: With the option unchecked. If the channel host (uiHost) have 2 or more componets of the same type. The connection will be shared amoung all the componets with the same name channel.

i.e: If we have 2 arms, the channels will be shared for both arms. To avoid this behaviour with the unchecked option, please use a unique channel host for each component.

", None, -1)) - self.classicChannelNames_checkBox.setText(gqt.fakeTranslate("Form", "Use Classic Channel Names (All channels will have unique names.)", None, -1)) - + self.L_color_fk_label.setText( + gqt.fakeTranslate("Form", "FK", None, -1)) + self.L_color_fk_label_5.setText( + gqt.fakeTranslate("Form", "FK", None, -1)) + self.L_color_fk_label_3.setText( + gqt.fakeTranslate("Form", "FK", None, -1)) + self.L_color_fk_label_2.setText( + gqt.fakeTranslate("Form", "IK", None, -1)) + self.L_color_fk_label_6.setText( + gqt.fakeTranslate("Form", "IK", None, -1)) + self.L_color_fk_label_4.setText( + gqt.fakeTranslate("Form", " IK", None, -1)) + self.groupBox_4.setTitle(gqt.fakeTranslate( + "Form", "Synoptic Settings", None, -1)) + self.rigTabs_label.setText( + gqt.fakeTranslate("Form", "Rig Tabs", None, -1)) + self.addTab_pushButton.setText( + gqt.fakeTranslate("Form", "<<", None, -1)) + self.removeTab_pushButton.setText( + gqt.fakeTranslate("Form", ">>", None, -1)) + self.available_label.setText(gqt.fakeTranslate( + "Form", "Available Tabs", None, -1)) + self.groupBox.setTitle(gqt.fakeTranslate( + "Form", "Rig Settings", None, -1)) + self.rigName_label.setText( + gqt.fakeTranslate("Form", "Rig Name", None, -1)) + self.mode_label.setText(gqt.fakeTranslate( + "Form", "Debug Mode", None, -1)) + self.mode_comboBox.setItemText( + 0, gqt.fakeTranslate("Form", "Final", None, -1)) + self.mode_comboBox.setItemText( + 1, gqt.fakeTranslate("Form", "WIP", None, -1)) + self.step_label.setText(gqt.fakeTranslate( + "Form", "Guide Build Steps:", None, -1)) + self.step_comboBox.setItemText( + 0, gqt.fakeTranslate("Form", "All Steps", None, -1)) + self.step_comboBox.setItemText( + 1, gqt.fakeTranslate("Form", "Objects", None, -1)) + self.step_comboBox.setItemText( + 2, gqt.fakeTranslate("Form", "Attributes", None, -1)) + self.step_comboBox.setItemText( + 3, gqt.fakeTranslate("Form", "Operators", None, -1)) + self.step_comboBox.setItemText( + 4, gqt.fakeTranslate("Form", "Connect", None, -1)) + self.step_comboBox.setItemText( + 5, gqt.fakeTranslate("Form", "Joints", None, -1)) + self.step_comboBox.setItemText( + 6, gqt.fakeTranslate("Form", "Finalize", None, -1)) + self.groupBox_2.setTitle(gqt.fakeTranslate( + "Form", "Skinning Settings", None, -1)) + self.importSkin_checkBox.setText( + gqt.fakeTranslate("Form", "Import Skin", None, -1)) + self.skin_label.setText(gqt.fakeTranslate( + "Form", "Skin Path", None, -1)) + self.loadSkinPath_pushButton.setText( + gqt.fakeTranslate("Form", "Load Path", None, -1)) + self.groupBox_3.setTitle(gqt.fakeTranslate( + "Form", "Joint Settings", None, -1)) + self.jointRig_checkBox.setText(gqt.fakeTranslate( + "Form", "Separated Joint Structure", None, -1)) + self.groupBox_6.setTitle(gqt.fakeTranslate( + "Form", "Animation Channels Settings", None, -1)) + self.proxyChannels_checkBox.setText(gqt.fakeTranslate( + "Form", "Add Internal Proxy Channels", None, -1)) + self.classicChannelNames_checkBox.setToolTip( + gqt.fakeTranslate( + "Form", "

If this option" + " is checked. The channel name will have unique full name." + "

" + "i.e: "arm_L0_blend"

If the option" + " is unchecked. The channel will use the simple name. " + "

i." + "e: "arm_blend"

NOTE: With the option unchecked. " + "If the channel host (uiHost) have 2 or more componets of the " + "same type. The connection will be shared amoung all the " + "componets with the same name channel.

i.e: If we have 2 arms, the " + "channels will be shared for both arms. To avoid this " + "behaviour with the unchecked option, please use a unique" + " channel host for each component.

", + None, -1)) + self.classicChannelNames_checkBox.setText(gqt.fakeTranslate( + "Form", + "Use Classic Channel Names (All channels will have unique names.)", + None, -1)) From 9beb58872477006477464cd22038bc3d40f19d9a Mon Sep 17 00:00:00 2001 From: miquelcampos Date: Fri, 17 Nov 2017 18:11:06 +0900 Subject: [PATCH 060/134] Codeclimate config: excluding all qt designer compile files *UI.py --- .codeclimate.yml | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/.codeclimate.yml b/.codeclimate.yml index bb7eedf..231ecd7 100644 --- a/.codeclimate.yml +++ b/.codeclimate.yml @@ -5,7 +5,8 @@ engines: ratings: paths: - "**.py" - + exclude_paths: - "*/**/widget.py" - "scripts/mgear/maya/shifter/component/**" + - "*UI.py" From 08fbfe87b2130add35ac4eaf293407cf9c5d64ff Mon Sep 17 00:00:00 2001 From: miquelcampos Date: Fri, 17 Nov 2017 18:13:07 +0900 Subject: [PATCH 061/134] Codeclimate config: excluding all qt designer compile files **UI.py --- .codeclimate.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.codeclimate.yml b/.codeclimate.yml index 231ecd7..a9e0cda 100644 --- a/.codeclimate.yml +++ b/.codeclimate.yml @@ -9,4 +9,4 @@ ratings: exclude_paths: - "*/**/widget.py" - "scripts/mgear/maya/shifter/component/**" - - "*UI.py" + - "**UI.py" From f7249f29ea3027008584d44ddcd7a1b0d18e5ca1 Mon Sep 17 00:00:00 2001 From: miquelcampos Date: Fri, 17 Nov 2017 19:31:37 +0900 Subject: [PATCH 062/134] PEP8 #100 : Shifter: components started and some adjustments WIP --- .../mgear/maya/shifter/component/__init__.py | 2 +- .../shifter/component/arm_2jnt_01/__init__.py | 602 +++++++++++------- .../shifter/component/arm_2jnt_01/guide.py | 203 +++--- 3 files changed, 482 insertions(+), 325 deletions(-) diff --git a/scripts/mgear/maya/shifter/component/__init__.py b/scripts/mgear/maya/shifter/component/__init__.py index b6d6f45..1f6072d 100644 --- a/scripts/mgear/maya/shifter/component/__init__.py +++ b/scripts/mgear/maya/shifter/component/__init__.py @@ -289,7 +289,7 @@ def addJoint(self, obj, name, newActiveJnt=None, UniScale=True, segComp=0, if gearMulMatrix: applyop.gear_mulmatrix_op(mulmat_node.attr('output'), - im, jnt, 'r') + im, jnt, 'r') else: nod.createMultMatrixNode( mulmat_node.attr('matrixSum'), im, jnt, 'r') diff --git a/scripts/mgear/maya/shifter/component/arm_2jnt_01/__init__.py b/scripts/mgear/maya/shifter/component/arm_2jnt_01/__init__.py index 4392a48..acb1afb 100644 --- a/scripts/mgear/maya/shifter/component/arm_2jnt_01/__init__.py +++ b/scripts/mgear/maya/shifter/component/arm_2jnt_01/__init__.py @@ -1,55 +1,22 @@ -# MGEAR is under the terms of the MIT License - -# Copyright (c) 2016 Jeremie Passerin, Miquel Campos - -# Permission is hereby granted, free of charge, to any person obtaining a copy -# of this software and associated documentation files (the "Software"), to deal -# in the Software without restriction, including without limitation the rights -# to use, copy, modify, merge, publish, distribute, sublicense, and/or sell -# copies of the Software, and to permit persons to whom the Software is -# furnished to do so, subject to the following conditions: - -# The above copyright notice and this permission notice shall be included in all -# copies or substantial portions of the Software. - -# THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR -# IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, -# FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE -# AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER -# LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, -# OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE -# SOFTWARE. - -# Author: Jeremie Passerin geerem@hotmail.com www.jeremiepasserin.com -# Author: Miquel Campos hello@miquel-campos.com www.miquel-campos.com -# Date: 2016 / 10 / 10 - -############################################# -# GLOBAL -############################################# # Maya import pymel.core as pm -import pymel.core.datatypes as dt +from pymel.core import datatypes # mgear from mgear.maya.shifter.component import MainComponent -import mgear.maya.primitive as pri -import mgear.maya.transform as tra -import mgear.maya.attribute as att -import mgear.maya.node as nod -import mgear.maya.vector as vec -import mgear.maya.applyop as aop -import mgear.maya.fcurve as fcu +from mgear.maya import node, fcurve, applyop, vector +from mgear.maya import attribute, transform, primitive ############################################# # COMPONENT ############################################# + + class Component(MainComponent): def addObjects(self): - """ """ @@ -58,248 +25,379 @@ def addObjects(self): self.normal = self.getNormalFromPos(self.guide.apos) self.binormal = self.getBiNormalFromPos(self.guide.apos) - self.length0 = vec.getDistance(self.guide.apos[0], self.guide.apos[1]) - self.length1 = vec.getDistance(self.guide.apos[1], self.guide.apos[2]) - self.length2 = vec.getDistance(self.guide.apos[2], self.guide.apos[3]) + self.length0 = vector.getDistance(self.guide.apos[0], + self.guide.apos[1]) + self.length1 = vector.getDistance(self.guide.apos[1], + self.guide.apos[2]) + self.length2 = vector.getDistance(self.guide.apos[2], + self.guide.apos[3]) # 1 bone chain for upv ref - self.armChainUpvRef = pri.add2DChain(self.root, self.getName("armUpvRef%s_jnt"), [self.guide.apos[0],self.guide.apos[2]], self.normal, False, self.WIP) - self.armChainUpvRef[1].setAttr("jointOrientZ", self.armChainUpvRef[1].getAttr("jointOrientZ")*-1) - - # FK Controlers ----------------------------------- - t = tra.getTransformLookingAt(self.guide.apos[0], self.guide.apos[1], self.normal, "xz", self.negate) - self.fk0_npo = pri.addTransform(self.root, self.getName("fk0_npo"), t) - self.fk0_ctl = self.addCtl(self.fk0_npo, "fk0_ctl", t, self.color_fk, "cube", w=self.length0, h=self.size*.1, d=self.size*.1, po=dt.Vector(.5*self.length0*self.n_factor,0,0),tp=self.parentCtlTag) - att.setKeyableAttributes(self.fk0_ctl, ["tx", "ty", "tz", "ro", "rx", "ry", "rz", "sx"]) + self.armChainUpvRef = primitive.add2DChain( + self.root, + self.getName("armUpvRef%s_jnt"), + [self.guide.apos[0], self.guide.apos[2]], + self.normal, False, self.WIP) - t = tra.getTransformLookingAt(self.guide.apos[1], self.guide.apos[2], self.normal, "xz", self.negate) - self.fk1_npo = pri.addTransform(self.fk0_ctl, self.getName("fk1_npo"), t) - self.fk1_ctl = self.addCtl(self.fk1_npo, "fk1_ctl", t, self.color_fk, "cube", w=self.length1, h=self.size*.1, d=self.size*.1, po=dt.Vector(.5*self.length1*self.n_factor,0,0),tp=self.fk0_ctl ) - att.setKeyableAttributes(self.fk1_ctl, ["tx", "ty", "tz", "ro", "rx", "ry", "rz", "sx"]) + self.armChainUpvRef[1].setAttr("jointOrientZ", self.armChainUpvRef[ + 1].getAttr("jointOrientZ") * -1) - t = tra.getTransformLookingAt(self.guide.apos[2], self.guide.apos[3], self.normal, "xz", self.negate) - self.fk2_npo = pri.addTransform(self.fk1_ctl, self.getName("fk2_npo"), t) - self.fk2_ctl = self.addCtl(self.fk2_npo, "fk2_ctl", t, self.color_fk, "cube", w=self.length2, h=self.size*.1, d=self.size*.1, po=dt.Vector(.5*self.length2*self.n_factor,0,0), tp=self.fk1_ctl) - att.setKeyableAttributes(self.fk2_ctl) + # FK Controlers ----------------------------------- + t = transform.getTransformLookingAt(self.guide.apos[0], + self.guide.apos[1], + self.normal, "xz", + self.negate) + + self.fk0_npo = primitive.addTransform(self.root, + self.getName("fk0_npo"), + t) + + self.fk0_ctl = self.addCtl(self.fk0_npo, "fk0_ctl", t, self.color_fk, + "cube", w=self.length0, h=self.size * .1, + d=self.size * .1, + po=datatypes.Vector(.5 * self.length0 * + self.n_factor, 0, 0), + tp=self.parentCtlTag) + + attribute.setKeyableAttributes( + self.fk0_ctl, ["tx", "ty", "tz", "ro", "rx", "ry", "rz", "sx"]) + + t = transform.getTransformLookingAt(self.guide.apos[1], + self.guide.apos[2], + self.normal, "xz", self.negate) + + self.fk1_npo = primitive.addTransform(self.fk0_ctl, + self.getName("fk1_npo"), t) + + self.fk1_ctl = self.addCtl(self.fk1_npo, "fk1_ctl", t, self.color_fk, + "cube", w=self.length1, h=self.size * .1, + d=self.size * .1, + po=datatypes.Vector(.5 * self.length1 * + self.n_factor, 0, 0), + tp=self.fk0_ctl) + + attribute.setKeyableAttributes( + self.fk1_ctl, ["tx", "ty", "tz", "ro", "rx", "ry", "rz", "sx"]) + + t = transform.getTransformLookingAt(self.guide.apos[2], + self.guide.apos[3], + self.normal, "xz", self.negate) + + self.fk2_npo = primitive.addTransform(self.fk1_ctl, + self.getName("fk2_npo"), + t) + + self.fk2_ctl = self.addCtl(self.fk2_npo, "fk2_ctl", t, self.color_fk, + "cube", w=self.length2, h=self.size * .1, + d=self.size * .1, + po=datatypes.Vector(.5 * self.length2 * + self.n_factor, 0, 0), + tp=self.fk1_ctl) + + attribute.setKeyableAttributes(self.fk2_ctl) self.fk_ctl = [self.fk0_ctl, self.fk1_ctl, self.fk2_ctl] - for x in self.fk_ctl: - att.setInvertMirror(x, ["tx", "ty", "tz"]) - + for x in self.fk_ctl: + attribute.setInvertMirror(x, ["tx", "ty", "tz"]) # IK Controlers ----------------------------------- - self.ik_cns = pri.addTransformFromPos(self.root, self.getName("ik_cns"), self.guide.pos["wrist"]) + self.ik_cns = primitive.addTransformFromPos( + self.root, self.getName("ik_cns"), self.guide.pos["wrist"]) - self.ikcns_ctl = self.addCtl(self.ik_cns, "ikcns_ctl", tra.getTransformFromPos(self.guide.pos["wrist"]), self.color_ik, "null", w=self.size*.12, tp=self.parentCtlTag) - att.setInvertMirror(self.ikcns_ctl, ["tx", "ty", "tz"]) + self.ikcns_ctl = self.addCtl( + self.ik_cns, "ikcns_ctl", + transform.getTransformFromPos(self.guide.pos["wrist"]), + self.color_ik, "null", w=self.size * .12, tp=self.parentCtlTag) + + attribute.setInvertMirror(self.ikcns_ctl, ["tx", "ty", "tz"]) if self.negate: - m = tra.getTransformLookingAt(self.guide.pos["wrist"], self.guide.pos["eff"], self.normal, "x-y", True) + m = transform.getTransformLookingAt(self.guide.pos["wrist"], + self.guide.pos["eff"], + self.normal, "x-y", True) else: - m = tra.getTransformLookingAt(self.guide.pos["wrist"], self.guide.pos["eff"], self.normal, "xy", False) - self.ik_ctl = self.addCtl(self.ikcns_ctl, "ik_ctl", m, self.color_ik, "cube", w=self.size*.12, h=self.size*.12, d=self.size*.12, tp=self.ikcns_ctl) + m = transform.getTransformLookingAt(self.guide.pos["wrist"], + self.guide.pos["eff"], + self.normal, "xy", False) + + self.ik_ctl = self.addCtl(self.ikcns_ctl, "ik_ctl", m, self.color_ik, + "cube", w=self.size * .12, h=self.size * .12, + d=self.size * .12, tp=self.ikcns_ctl) + if self.settings["mirrorIK"]: if self.negate: self.ik_cns.sx.set(-1) - self.ik_ctl.rz.set(self.ik_ctl.rz.get()*-1) + self.ik_ctl.rz.set(self.ik_ctl.rz.get() * -1) else: - att.setInvertMirror(self.ik_ctl, ["tx", "ry", "rz"]) - att.setKeyableAttributes(self.ik_ctl) - self.ik_ctl_ref = pri.addTransform(self.ik_ctl, self.getName("ikCtl_ref"), m) + attribute.setInvertMirror(self.ik_ctl, ["tx", "ry", "rz"]) + attribute.setKeyableAttributes(self.ik_ctl) + self.ik_ctl_ref = primitive.addTransform( + self.ik_ctl, self.getName("ikCtl_ref"), m) # upv v = self.guide.apos[2] - self.guide.apos[0] v = self.normal ^ v v.normalize() - v *= self.size*.5 + v *= self.size * .5 v += self.guide.apos[1] - self.upv_cns = pri.addTransformFromPos(self.root, self.getName("upv_cns"), v) + self.upv_cns = primitive.addTransformFromPos( + self.root, self.getName("upv_cns"), v) + + self.upv_ctl = self.addCtl(self.upv_cns, "upv_ctl", + transform.getTransform(self.upv_cns), + self.color_ik, "diamond", w=self.size * .12, + tp=self.parentCtlTag) - self.upv_ctl = self.addCtl(self.upv_cns, "upv_ctl", tra.getTransform(self.upv_cns), self.color_ik, "diamond", w=self.size*.12, tp=self.parentCtlTag) if self.settings["mirrorMid"]: if self.negate: self.upv_cns.rz.set(180) self.upv_cns.sy.set(-1) else: - att.setInvertMirror(self.upv_ctl, ["tx"]) - att.setKeyableAttributes(self.upv_ctl, self.t_params) + attribute.setInvertMirror(self.upv_ctl, ["tx"]) + attribute.setKeyableAttributes(self.upv_ctl, self.t_params) - #IK rotation controls + # IK rotation controls if self.settings["ikTR"]: - self.ikRot_npo = pri.addTransform(self.root, self.getName("ikRot_npo"), m) - self.ikRot_cns = pri.addTransform(self.ikRot_npo, self.getName("ikRot_cns"), m) - self.ikRot_ctl = self.addCtl(self.ikRot_cns, "ikRot_ctl", m, self.color_ik, "sphere", w=self.size*.12, tp=self.ik_ctl) - att.setKeyableAttributes(self.ikRot_ctl, self.r_params) - + self.ikRot_npo = primitive.addTransform( + self.root, self.getName("ikRot_npo"), m) + self.ikRot_cns = primitive.addTransform( + self.ikRot_npo, self.getName("ikRot_cns"), m) + self.ikRot_ctl = self.addCtl(self.ikRot_cns, "ikRot_ctl", m, + self.color_ik, "sphere", + w=self.size * .12, tp=self.ik_ctl) + attribute.setKeyableAttributes(self.ikRot_ctl, self.r_params) # References -------------------------------------- # Calculate again the transfor for the IK ref. This way align with FK - trnIK_ref = tra.getTransformLookingAt(self.guide.pos["wrist"], self.guide.pos["eff"], self.normal, "xz", self.negate) - self.ik_ref = pri.addTransform(self.ik_ctl_ref, self.getName("ik_ref"), trnIK_ref) - self.fk_ref = pri.addTransform(self.fk_ctl[2], self.getName("fk_ref"), trnIK_ref) + trnIK_ref = transform.getTransformLookingAt(self.guide.pos["wrist"], + self.guide.pos["eff"], + self.normal, "xz", + self.negate) + self.ik_ref = primitive.addTransform( + self.ik_ctl_ref, self.getName("ik_ref"), trnIK_ref) + self.fk_ref = primitive.addTransform( + self.fk_ctl[2], self.getName("fk_ref"), trnIK_ref) # Chain -------------------------------------------- # The outputs of the ikfk2bone solver - self.bone0 = pri.addLocator(self.root, self.getName("0_bone"), tra.getTransform(self.fk_ctl[0])) + self.bone0 = primitive.addLocator(self.root, self.getName( + "0_bone"), transform.getTransform(self.fk_ctl[0])) self.bone0_shp = self.bone0.getShape() - self.bone0_shp.setAttr("localPositionX", self.n_factor*.5) + self.bone0_shp.setAttr("localPositionX", self.n_factor * .5) self.bone0_shp.setAttr("localScale", .5, 0, 0) self.bone0.setAttr("sx", self.length0) self.bone0.setAttr("visibility", False) - self.bone1 = pri.addLocator(self.root, self.getName("1_bone"), tra.getTransform(self.fk_ctl[1])) + self.bone1 = primitive.addLocator(self.root, self.getName( + "1_bone"), transform.getTransform(self.fk_ctl[1])) self.bone1_shp = self.bone1.getShape() - self.bone1_shp.setAttr("localPositionX", self.n_factor*.5) + self.bone1_shp.setAttr("localPositionX", self.n_factor * .5) self.bone1_shp.setAttr("localScale", .5, 0, 0) self.bone1.setAttr("sx", self.length1) self.bone1.setAttr("visibility", False) - self.ctrn_loc = pri.addTransformFromPos(self.root, self.getName("ctrn_loc"), self.guide.apos[1]) - self.eff_loc = pri.addTransformFromPos(self.root, self.getName("eff_loc"), self.guide.apos[2]) + self.ctrn_loc = primitive.addTransformFromPos( + self.root, self.getName("ctrn_loc"), self.guide.apos[1]) + self.eff_loc = primitive.addTransformFromPos( + self.root, self.getName("eff_loc"), self.guide.apos[2]) # Mid Controler ------------------------------------ - t = tra.getTransform(self.ctrn_loc) - self.mid_cns = pri.addTransform(self.ctrn_loc, self.getName("mid_cns"), t) - self.mid_ctl = self.addCtl(self.mid_cns, "mid_ctl", t, self.color_ik, "sphere", w=self.size*.2, tp=self.parentCtlTag) + t = transform.getTransform(self.ctrn_loc) + + self.mid_cns = primitive.addTransform( + self.ctrn_loc, self.getName("mid_cns"), t) + + self.mid_ctl = self.addCtl(self.mid_cns, "mid_ctl", t, self.color_ik, + "sphere", w=self.size * .2, + tp=self.parentCtlTag) if self.settings["mirrorMid"]: if self.negate: self.mid_cns.rz.set(180) self.mid_cns.sz.set(-1) - self.mid_ctl_twst_npo = pri.addTransform(self.mid_ctl, self.getName("mid_twst_npo"), t) - self.mid_ctl_twst_ref = pri.addTransform(self.mid_ctl_twst_npo, self.getName("mid_twst_ref"), t) + self.mid_ctl_twst_npo = primitive.addTransform( + self.mid_ctl, self.getName("mid_twst_npo"), t) + self.mid_ctl_twst_ref = primitive.addTransform( + self.mid_ctl_twst_npo, self.getName("mid_twst_ref"), t) else: self.mid_ctl_twst_ref = self.mid_ctl - att.setInvertMirror(self.mid_ctl, ["tx", "ty", "tz"]) + attribute.setInvertMirror(self.mid_ctl, ["tx", "ty", "tz"]) - - #Roll join ref - self.rollRef = pri.add2DChain(self.root, self.getName("rollChain"), self.guide.apos[:2], self.normal, self.negate) + # Roll join ref + self.rollRef = primitive.add2DChain(self.root, self.getName( + "rollChain"), self.guide.apos[:2], self.normal, self.negate) for x in self.rollRef: x.setAttr("visibility", False) - self.tws0_loc = pri.addTransform(self.rollRef[0], self.getName("tws0_loc"), tra.getTransform(self.fk_ctl[0])) - self.tws0_rot = pri.addTransform(self.tws0_loc, self.getName("tws0_rot"), tra.getTransform(self.fk_ctl[0])) - - self.tws1_npo = pri.addTransform(self.ctrn_loc, self.getName("tws1_npo"), tra.getTransform(self.ctrn_loc)) - self.tws1_loc = pri.addTransform(self.tws1_npo, self.getName("tws1_loc"), tra.getTransform(self.ctrn_loc)) - self.tws1_rot = pri.addTransform(self.tws1_loc, self.getName("tws1_rot"), tra.getTransform(self.ctrn_loc)) - - self.tws2_npo = pri.addTransform(self.root, self.getName("tws2_npo"), tra.getTransform(self.fk_ctl[2])) - self.tws2_loc = pri.addTransform(self.tws2_npo, self.getName("tws2_loc"), tra.getTransform(self.fk_ctl[2])) - self.tws2_rot = pri.addTransform(self.tws2_loc, self.getName("tws2_rot"), tra.getTransform(self.fk_ctl[2])) + self.tws0_loc = primitive.addTransform(self.rollRef[0], self.getName( + "tws0_loc"), transform.getTransform(self.fk_ctl[0])) + self.tws0_rot = primitive.addTransform(self.tws0_loc, self.getName( + "tws0_rot"), transform.getTransform(self.fk_ctl[0])) + + self.tws1_npo = primitive.addTransform(self.ctrn_loc, self.getName( + "tws1_npo"), transform.getTransform(self.ctrn_loc)) + self.tws1_loc = primitive.addTransform(self.tws1_npo, self.getName( + "tws1_loc"), transform.getTransform(self.ctrn_loc)) + self.tws1_rot = primitive.addTransform(self.tws1_loc, self.getName( + "tws1_rot"), transform.getTransform(self.ctrn_loc)) + + self.tws2_npo = primitive.addTransform(self.root, self.getName( + "tws2_npo"), transform.getTransform(self.fk_ctl[2])) + self.tws2_loc = primitive.addTransform(self.tws2_npo, self.getName( + "tws2_loc"), transform.getTransform(self.fk_ctl[2])) + self.tws2_rot = primitive.addTransform(self.tws2_loc, self.getName( + "tws2_rot"), transform.getTransform(self.fk_ctl[2])) # Divisions ---------------------------------------- - # We have at least one division at the start, the end and one for the elbow. + 2 for elbow angle control + # We have at least one division at the start, the end and one for the + # elbow. + 2 for elbow angle control self.divisions = self.settings["div0"] + self.settings["div1"] + 3 + 2 self.div_cns = [] for i in range(self.divisions): - div_cns = pri.addTransform(self.root, self.getName("div%s_loc" % i)) + div_cns = primitive.addTransform( + self.root, self.getName("div%s_loc" % i)) self.div_cns.append(div_cns) self.jnt_pos.append([div_cns, i]) - # End reference ------------------------------------ # To help the deformation on the wrist self.jnt_pos.append([self.eff_loc, 'end']) - #match IK FK references - self.match_fk0_off = pri.addTransform(self.root, self.getName("matchFk0_npo"), tra.getTransform(self.fk_ctl[1])) - self.match_fk0 = pri.addTransform(self.match_fk0_off, self.getName("fk0_mth"), tra.getTransform(self.fk_ctl[0])) - self.match_fk1_off = pri.addTransform(self.root, self.getName("matchFk1_npo"), tra.getTransform(self.fk_ctl[2])) - self.match_fk1 = pri.addTransform(self.match_fk1_off, self.getName("fk1_mth"), tra.getTransform(self.fk_ctl[1])) + # match IK FK references + self.match_fk0_off = primitive.addTransform(self.root, self.getName( + "matchFk0_npo"), transform.getTransform(self.fk_ctl[1])) + self.match_fk0 = primitive.addTransform( + self.match_fk0_off, self.getName( + "fk0_mth"), transform.getTransform(self.fk_ctl[0])) + self.match_fk1_off = primitive.addTransform( + self.root, self.getName( + "matchFk1_npo"), transform.getTransform(self.fk_ctl[2])) + self.match_fk1 = primitive.addTransform( + self.match_fk1_off, self.getName( + "fk1_mth"), transform.getTransform(self.fk_ctl[1])) if self.settings["ikTR"]: reference = self.ikRot_ctl - self.match_ikRot = pri.addTransform(self.fk2_ctl, self.getName("ikRot_mth"), tra.getTransform(self.ikRot_ctl)) + self.match_ikRot = primitive.addTransform( + self.fk2_ctl, self.getName( + "ikRot_mth"), transform.getTransform(self.ikRot_ctl)) else: reference = self.ik_ctl - self.match_fk2 = pri.addTransform(reference, self.getName("fk2_mth"), tra.getTransform(self.fk_ctl[2])) + self.match_fk2 = primitive.addTransform(reference, self.getName( + "fk2_mth"), transform.getTransform(self.fk_ctl[2])) - self.match_ik = pri.addTransform(self.fk2_ctl, self.getName("ik_mth"), tra.getTransform(self.ik_ctl)) - self.match_ikUpv = pri.addTransform(self.fk0_ctl, self.getName("upv_mth"), tra.getTransform(self.upv_ctl)) + self.match_ik = primitive.addTransform(self.fk2_ctl, self.getName( + "ik_mth"), transform.getTransform(self.ik_ctl)) + self.match_ikUpv = primitive.addTransform(self.fk0_ctl, self.getName( + "upv_mth"), transform.getTransform(self.upv_ctl)) def addAttributes(self): # Anim ------------------------------------------- - self.blend_att = self.addAnimParam("blend", "Fk/Ik Blend", "double", self.settings["blend"], 0, 1) - self.roll_att = self.addAnimParam("roll", "Roll", "double", 0, -180, 180) - self.armpit_roll_att = self.addAnimParam("aproll", "Armpit Roll", "double", 0, -360, 360) - - self.scale_att = self.addAnimParam("ikscale", "Scale", "double", 1, .001, 99) - self.maxstretch_att = self.addAnimParam("maxstretch", "Max Stretch", "double", self.settings["maxstretch"], 1, 99) - self.slide_att = self.addAnimParam("slide", "Slide", "double", .5, 0, 1) - self.softness_att = self.addAnimParam("softness", "Softness", "double", 0, 0, 1) - self.reverse_att = self.addAnimParam("reverse", "Reverse", "double", 0, 0, 1) - self.roundness_att = self.addAnimParam("roundness", "Roundness", "double", 0, 0, self.size) - self.volume_att = self.addAnimParam("volume", "Volume", "double", 1, 0, 1) + self.blend_att = self.addAnimParam( + "blend", "Fk/Ik Blend", "double", self.settings["blend"], 0, 1) + self.roll_att = self.addAnimParam( + "roll", "Roll", "double", 0, -180, 180) + self.armpit_roll_att = self.addAnimParam( + "aproll", "Armpit Roll", "double", 0, -360, 360) + + self.scale_att = self.addAnimParam( + "ikscale", "Scale", "double", 1, .001, 99) + self.maxstretch_att = self.addAnimParam( + "maxstretch", "Max Stretch", "double", + self.settings["maxstretch"], 1, 99) + self.slide_att = self.addAnimParam( + "slide", "Slide", "double", .5, 0, 1) + self.softness_att = self.addAnimParam( + "softness", "Softness", "double", 0, 0, 1) + self.reverse_att = self.addAnimParam( + "reverse", "Reverse", "double", 0, 0, 1) + self.roundness_att = self.addAnimParam( + "roundness", "Roundness", "double", 0, 0, self.size) + self.volume_att = self.addAnimParam( + "volume", "Volume", "double", 1, 0, 1) # Ref if self.settings["ikrefarray"]: ref_names = self.settings["ikrefarray"].split(",") if len(ref_names) > 1: - self.ikref_att = self.addAnimEnumParam("ikref", "Ik Ref", 0, self.settings["ikrefarray"].split(",")) + self.ikref_att = self.addAnimEnumParam( + "ikref", "Ik Ref", 0, + self.settings["ikrefarray"].split(",")) if self.settings["ikTR"]: ref_names = ["Auto", "ik_ctl"] if self.settings["ikrefarray"]: ref_names = ref_names + self.settings["ikrefarray"].split(",") - self.ikRotRef_att = self.addAnimEnumParam("ikRotRef", "Ik Rot Ref", 0, ref_names) - - + self.ikRotRef_att = self.addAnimEnumParam( + "ikRotRef", "Ik Rot Ref", 0, ref_names) if self.settings["upvrefarray"]: ref_names = self.settings["upvrefarray"].split(",") ref_names = ["Auto"] + ref_names if len(ref_names) > 1: - self.upvref_att = self.addAnimEnumParam("upvref", "UpV Ref", 0, ref_names) + self.upvref_att = self.addAnimEnumParam( + "upvref", "UpV Ref", 0, ref_names) if self.settings["pinrefarray"]: - ref_names = self.settings["pinrefarray" ].split(",") + ref_names = self.settings["pinrefarray"].split(",") ref_names = ["Auto"] + ref_names if len(ref_names) > 1: - self.pin_att = self.addAnimEnumParam("elbowref", "Elbow Ref", 0, ref_names) + self.pin_att = self.addAnimEnumParam( + "elbowref", "Elbow Ref", 0, ref_names) if self.validProxyChannels: - att.addProxyAttribute([self.blend_att, self.roundness_att], [self.fk0_ctl, self.fk1_ctl, self.fk2_ctl, self.ik_ctl, self.upv_ctl]) - att.addProxyAttribute(self.roll_att, [self.ik_ctl, self.upv_ctl]) - - + attribute.addProxyAttribute([self.blend_att, self.roundness_att], + [self.fk0_ctl, self.fk1_ctl, + self.fk2_ctl, self.ik_ctl, + self.upv_ctl]) + attribute.addProxyAttribute( + self.roll_att, [self.ik_ctl, self.upv_ctl]) # Setup ------------------------------------------ # Eval Fcurve - self.st_value = fcu.getFCurveValues(self.settings["st_profile"], self.divisions) - self.sq_value = fcu.getFCurveValues(self.settings["sq_profile"], self.divisions) + self.st_value = fcurve.getFCurveValues( + self.settings["st_profile"], self.divisions) + self.sq_value = fcurve.getFCurveValues( + self.settings["sq_profile"], self.divisions) + + self.st_att = [self.addSetupParam("stretch_%s" % i, "Stretch %s" % i, + "double", self.st_value[i], -1, 0) + for i in range(self.divisions)] - self.st_att = [ self.addSetupParam("stretch_%s"%i, "Stretch %s"%i, "double", self.st_value[i], -1, 0) for i in range(self.divisions) ] - self.sq_att = [ self.addSetupParam("squash_%s"%i, "Squash %s"%i, "double", self.sq_value[i], 0, 1) for i in range(self.divisions) ] + self.sq_att = [self.addSetupParam("squash_%s" % i, "Squash %s" % i, + "double", self.sq_value[i], 0, 1) + for i in range(self.divisions)] - self.resample_att = self.addSetupParam("resample", "Resample", "bool", True) - self.absolute_att = self.addSetupParam("absolute", "Absolute", "bool", False) + self.resample_att = self.addSetupParam( + "resample", "Resample", "bool", True) + self.absolute_att = self.addSetupParam( + "absolute", "Absolute", "bool", False) def addOperators(self): - # 1 bone chain Upv ref ===================================================================================== - self.ikHandleUpvRef = pri.addIkHandle(self.root, self.getName("ikHandleLegChainUpvRef"), self.armChainUpvRef, "ikSCsolver") + # 1 bone chain Upv ref ================================================ + self.ikHandleUpvRef = primitive.addIkHandle(self.root, self.getName( + "ikHandleLegChainUpvRef"), self.armChainUpvRef, "ikSCsolver") pm.pointConstraint(self.ik_ctl, self.ikHandleUpvRef) - pm.parentConstraint( self.armChainUpvRef[0], self.upv_cns, mo=True) + pm.parentConstraint(self.armChainUpvRef[0], self.upv_cns, mo=True) # Visibilities ------------------------------------- # fk - fkvis_node = nod.createReverseNode(self.blend_att) + fkvis_node = node.createReverseNode(self.blend_att) for shp in self.fk0_ctl.getShapes(): - pm.connectAttr(fkvis_node+".outputX", shp.attr("visibility")) + pm.connectAttr(fkvis_node + ".outputX", shp.attr("visibility")) for shp in self.fk1_ctl.getShapes(): - pm.connectAttr(fkvis_node+".outputX", shp.attr("visibility")) + pm.connectAttr(fkvis_node + ".outputX", shp.attr("visibility")) for shp in self.fk2_ctl.getShapes(): - pm.connectAttr(fkvis_node+".outputX", shp.attr("visibility")) + pm.connectAttr(fkvis_node + ".outputX", shp.attr("visibility")) # ik for shp in self.upv_ctl.getShapes(): @@ -312,149 +410,173 @@ def addOperators(self): for shp in self.ikRot_ctl.getShapes(): pm.connectAttr(self.blend_att, shp.attr("visibility")) - # Controls ROT order ----------------------------------- - att.setRotOrder(self.fk0_ctl, "XZY") - att.setRotOrder(self.fk1_ctl, "XYZ") - att.setRotOrder(self.fk2_ctl, "YZX") - # att.setRotOrder(self.ik_ctl, "ZYX") - att.setRotOrder(self.ik_ctl, "XYZ") - + attribute.setRotOrder(self.fk0_ctl, "XZY") + attribute.setRotOrder(self.fk1_ctl, "XYZ") + attribute.setRotOrder(self.fk2_ctl, "YZX") + # attribute.setRotOrder(self.ik_ctl, "ZYX") + attribute.setRotOrder(self.ik_ctl, "XYZ") # IK Solver ----------------------------------------- out = [self.bone0, self.bone1, self.ctrn_loc, self.eff_loc] - node = aop.gear_ikfk2bone_op(out, self.root, self.ik_ref, self.upv_ctl, self.fk_ctl[0], self.fk_ctl[1], self.fk_ref, self.length0, self.length1, self.negate) + o_node = applyop.gear_ikfk2bone_op(out, self.root, self.ik_ref, + self.upv_ctl, self.fk_ctl[0], + self.fk_ctl[1], self.fk_ref, + self.length0, self.length1, + self.negate) if self.settings["ikTR"]: - #connect the control inputs - outEff_dm = node.listConnections(c=True)[-1][1] + # connect the control inputs + outEff_dm = o_node.listConnections(c=True)[-1][1] - outEff_dm.attr("outputTranslate") >> self.ikRot_npo.attr("translate") + outEff_dm.attr("outputTranslate") >> self.ikRot_npo.attr( + "translate") outEff_dm.attr("outputScale") >> self.ikRot_npo.attr("scale") - dm_node = nod.createDecomposeMatrixNode(node.attr("outB")) + dm_node = node.createDecomposeMatrixNode(o_node.attr("outB")) dm_node.attr("outputRotate") >> self.ikRot_npo.attr("rotate") - #rotation + # rotation - mulM_node = aop.gear_mulmatrix_op(self.ikRot_ctl.attr("worldMatrix"), self.eff_loc.attr("parentInverseMatrix")) - intM_node = aop.gear_intmatrix_op(node.attr("outEff"), mulM_node.attr("output"), node.attr("blend")) - dm_node = nod.createDecomposeMatrixNode(intM_node.attr("output")) + mulM_node = applyop.gear_mulmatrix_op(self.ikRot_ctl.attr( + "worldMatrix"), self.eff_loc.attr("parentInverseMatrix")) + intM_node = applyop.gear_intmatrix_op( + o_node.attr("outEff"), mulM_node.attr("output"), + o_node.attr("blend")) + dm_node = node.createDecomposeMatrixNode(intM_node.attr("output")) dm_node.attr("outputRotate") >> self.eff_loc.attr("rotate") - tra.matchWorldTransform(self.fk2_ctl, self.ikRot_cns) - - #scale: this fix the scalin popping issue - intM_node = aop.gear_intmatrix_op(self.fk2_ctl.attr("worldMatrix"), self.ik_ctl_ref.attr("worldMatrix"), node.attr("blend")) - mulM_node = aop.gear_mulmatrix_op(intM_node.attr("output"), self.eff_loc.attr("parentInverseMatrix")) - dm_node = nod.createDecomposeMatrixNode(mulM_node.attr("output")) + transform.matchWorldTransform(self.fk2_ctl, self.ikRot_cns) + + # scale: this fix the scalin popping issue + intM_node = applyop.gear_intmatrix_op(self.fk2_ctl.attr( + "worldMatrix"), self.ik_ctl_ref.attr("worldMatrix"), + o_node.attr("blend")) + mulM_node = applyop.gear_mulmatrix_op(intM_node.attr( + "output"), self.eff_loc.attr("parentInverseMatrix")) + dm_node = node.createDecomposeMatrixNode(mulM_node.attr("output")) dm_node.attr("outputScale") >> self.eff_loc.attr("scale") - - pm.connectAttr(self.blend_att, node+".blend") + pm.connectAttr(self.blend_att, o_node + ".blend") if self.negate: mulVal = -1 else: mulVal = 1 - nod.createMulNode(self.roll_att, mulVal, node+".roll") - pm.connectAttr(self.scale_att, node+".scaleA") - pm.connectAttr(self.scale_att, node+".scaleB") - pm.connectAttr(self.maxstretch_att, node+".maxstretch") - pm.connectAttr(self.slide_att, node+".slide") - pm.connectAttr(self.softness_att, node+".softness") - pm.connectAttr(self.reverse_att, node+".reverse") + node.createMulNode(self.roll_att, mulVal, o_node + ".roll") + pm.connectAttr(self.scale_att, o_node + ".scaleA") + pm.connectAttr(self.scale_att, o_node + ".scaleB") + pm.connectAttr(self.maxstretch_att, o_node + ".maxstretch") + pm.connectAttr(self.slide_att, o_node + ".slide") + pm.connectAttr(self.softness_att, o_node + ".softness") + pm.connectAttr(self.reverse_att, o_node + ".reverse") # Twist references --------------------------------- - pm.pointConstraint(self.mid_ctl_twst_ref, self.tws1_npo, maintainOffset=False) - pm.scaleConstraint(self.mid_ctl_twst_ref, self.tws1_npo, maintainOffset=False) - pm.orientConstraint(self.mid_ctl_twst_ref, self.tws1_npo, maintainOffset=False) + pm.pointConstraint(self.mid_ctl_twst_ref, + self.tws1_npo, maintainOffset=False) + pm.scaleConstraint(self.mid_ctl_twst_ref, + self.tws1_npo, maintainOffset=False) + pm.orientConstraint(self.mid_ctl_twst_ref, + self.tws1_npo, maintainOffset=False) - node = aop.gear_mulmatrix_op(self.eff_loc.attr("worldMatrix"), self.root.attr("worldInverseMatrix")) + o_node = applyop.gear_mulmatrix_op(self.eff_loc.attr( + "worldMatrix"), self.root.attr("worldInverseMatrix")) dm_node = pm.createNode("decomposeMatrix") - pm.connectAttr(node+".output", dm_node+".inputMatrix") - pm.connectAttr(dm_node+".outputTranslate", self.tws2_npo.attr("translate")) + pm.connectAttr(o_node + ".output", dm_node + ".inputMatrix") + pm.connectAttr(dm_node + ".outputTranslate", + self.tws2_npo.attr("translate")) dm_node = pm.createNode("decomposeMatrix") - pm.connectAttr(node+".output", dm_node+".inputMatrix") - pm.connectAttr(dm_node+".outputRotate", self.tws2_npo.attr("rotate")) + pm.connectAttr(o_node + ".output", dm_node + ".inputMatrix") + pm.connectAttr(dm_node + ".outputRotate", self.tws2_npo.attr("rotate")) - node = aop.gear_mulmatrix_op(self.eff_loc.attr("worldMatrix"), self.tws2_rot.attr("parentInverseMatrix")) + o_node = applyop.gear_mulmatrix_op(self.eff_loc.attr( + "worldMatrix"), self.tws2_rot.attr("parentInverseMatrix")) dm_node = pm.createNode("decomposeMatrix") - pm.connectAttr(node+".output", dm_node+".inputMatrix") - att.setRotOrder(self.tws2_rot, "XYZ") - pm.connectAttr(dm_node+".outputRotate", self.tws2_rot+".rotate") + pm.connectAttr(o_node + ".output", dm_node + ".inputMatrix") + attribute.setRotOrder(self.tws2_rot, "XYZ") + pm.connectAttr(dm_node + ".outputRotate", self.tws2_rot + ".rotate") self.tws0_rot.setAttr("sx", .001) self.tws2_rot.setAttr("sx", .001) - add_node = nod.createAddNode(self.roundness_att, .001) - pm.connectAttr(add_node+".output", self.tws1_rot.attr("sx")) - - pm.connectAttr(self.armpit_roll_att, self.tws0_rot+".rotateX") - - #Roll Shoulder - aop.splineIK(self.getName("rollRef"), self.rollRef, parent=self.root, cParent=self.bone0 ) + add_node = node.createAddNode(self.roundness_att, .001) + pm.connectAttr(add_node + ".output", self.tws1_rot.attr("sx")) + pm.connectAttr(self.armpit_roll_att, self.tws0_rot + ".rotateX") + # Roll Shoulder + applyop.splineIK(self.getName("rollRef"), self.rollRef, + parent=self.root, cParent=self.bone0) # Volume ------------------------------------------- - distA_node = nod.createDistNode(self.tws0_loc, self.tws1_loc) - distB_node = nod.createDistNode(self.tws1_loc, self.tws2_loc) - add_node = nod.createAddNode(distA_node+".distance", distB_node+".distance") - div_node = nod.createDivNode(add_node+".output", self.root.attr("sx")) + distA_node = node.createDistNode(self.tws0_loc, self.tws1_loc) + distB_node = node.createDistNode(self.tws1_loc, self.tws2_loc) + add_node = node.createAddNode( + distA_node + ".distance", distB_node + ".distance") + div_node = node.createDivNode( + add_node + ".output", self.root.attr("sx")) dm_node = pm.createNode("decomposeMatrix") - pm.connectAttr(self.root.attr("worldMatrix"), dm_node+".inputMatrix") + pm.connectAttr(self.root.attr("worldMatrix"), dm_node + ".inputMatrix") - div_node2 = nod.createDivNode(div_node+".outputX", dm_node+".outputScaleX") - self.volDriver_att = div_node2+".outputX" + div_node2 = node.createDivNode( + div_node + ".outputX", dm_node + ".outputScaleX") + self.volDriver_att = div_node2 + ".outputX" # Divisions ---------------------------------------- - # at 0 or 1 the division will follow exactly the rotation of the controler.. and we wont have this nice tangent + roll + # at 0 or 1 the division will follow exactly the rotation of the + # controler.. and we wont have this nice tangent + roll for i, div_cns in enumerate(self.div_cns): - if i < (self.settings["div0"]+1): - perc = i*.5 / (self.settings["div0"]+1.0) + if i < (self.settings["div0"] + 1): + perc = i * .5 / (self.settings["div0"] + 1.0) elif i < (self.settings["div0"] + 2): perc = .49 - elif i < (self.settings["div0"] + 3 ): + elif i < (self.settings["div0"] + 3): perc = .50 - elif i < (self.settings["div0"] + 4 ): + elif i < (self.settings["div0"] + 4): perc = .51 else: - perc = .5 + (i-self.settings["div0"]-3.0)*.5 / (self.settings["div1"]+1.0) + perc = .5 + \ + (i - self.settings["div0"] - 3.0) * .5 / \ + (self.settings["div1"] + 1.0) perc = max(.001, min(.990, perc)) # Roll if self.negate: - node = aop.gear_rollsplinekine_op(div_cns, [self.tws2_rot, self.tws1_rot, self.tws0_rot], 1-perc, 40) + o_node = applyop.gear_rollsplinekine_op( + div_cns, [self.tws2_rot, self.tws1_rot, self.tws0_rot], + 1 - perc, 40) else: - node = aop.gear_rollsplinekine_op(div_cns, [self.tws0_rot, self.tws1_rot, self.tws2_rot], perc, 40) + o_node = applyop.gear_rollsplinekine_op( + div_cns, [self.tws0_rot, self.tws1_rot, self.tws2_rot], + perc, 40) - pm.connectAttr(self.resample_att, node+".resample") - pm.connectAttr(self.absolute_att, node+".absolute") + pm.connectAttr(self.resample_att, o_node + ".resample") + pm.connectAttr(self.absolute_att, o_node + ".absolute") # Squash n Stretch - node = aop.gear_squashstretch2_op(div_cns, None, pm.getAttr(self.volDriver_att), "x") - pm.connectAttr(self.volume_att, node+".blend") - pm.connectAttr(self.volDriver_att, node+".driver") - pm.connectAttr(self.st_att[i], node+".stretch") - pm.connectAttr(self.sq_att[i], node+".squash") + o_node = applyop.gear_squashstretch2_op( + div_cns, None, pm.getAttr(self.volDriver_att), "x") + pm.connectAttr(self.volume_att, o_node + ".blend") + pm.connectAttr(self.volDriver_att, o_node + ".driver") + pm.connectAttr(self.st_att[i], o_node + ".stretch") + pm.connectAttr(self.sq_att[i], o_node + ".squash") # match IK/FK ref pm.parentConstraint(self.bone0, self.match_fk0_off, mo=True) pm.parentConstraint(self.bone1, self.match_fk1_off, mo=True) if self.settings["ikTR"]: - tra.matchWorldTransform(self.ikRot_ctl,self.match_ikRot ) - tra.matchWorldTransform(self.fk_ctl[2], self.match_fk2 ) + transform.matchWorldTransform(self.ikRot_ctl, self.match_ikRot) + transform.matchWorldTransform(self.fk_ctl[2], self.match_fk2) return # ===================================================== # CONNECTOR # ===================================================== - ## Set the relation beetween object from guide to rig.\n + # Set the relation beetween object from guide to rig.\n # @param self # TODO: replace bone0 and control objects by loc connections def setRelation(self): @@ -465,7 +587,7 @@ def setRelation(self): self.jointRelatives["root"] = 0 self.jointRelatives["elbow"] = self.settings["div0"] + 2 - self.jointRelatives["wrist"] = len(self.div_cns)-1 + self.jointRelatives["wrist"] = len(self.div_cns) - 1 self.jointRelatives["eff"] = -1 self.controlRelatives["root"] = self.fk0_ctl @@ -473,12 +595,13 @@ def setRelation(self): self.controlRelatives["wrist"] = self.fk2_ctl self.controlRelatives["eff"] = self.fk2_ctl - ## Add more connection definition to the set. + # Add more connection definition to the set. # @param self def addConnection(self): self.connections["shoulder_01"] = self.connect_shoulder_01 - ## standard connection definition. + # standard connection definition. # @param self + def connect_standard(self): if self.settings["ikTR"]: @@ -487,16 +610,19 @@ def connect_standard(self): self.connectRef(self.settings["upvrefarray"], self.upv_cns, True) if self.settings["ikrefarray"]: - ikRotRefArray = "Auto,ik_ctl,"+self.settings["ikrefarray"] + ikRotRefArray = "Auto,ik_ctl," + self.settings["ikrefarray"] else: ikRotRefArray = "Auto,ik_ctl" - self.connectRef2(ikRotRefArray, self.ikRot_cns, self.ikRotRef_att, [self.ikRot_npo, self.ik_ctl], True) + self.connectRef2(ikRotRefArray, self.ikRot_cns, self.ikRotRef_att, + [self.ikRot_npo, self.ik_ctl], True) else: self.connect_standardWithIkRef() if self.settings["pinrefarray"]: - self.connectRef2("Auto,"+ self.settings["pinrefarray"], self.mid_cns, self.pin_att, [self.ctrn_loc], False) + self.connectRef2( + "Auto," + self.settings["pinrefarray"], self.mid_cns, + self.pin_att, [self.ctrn_loc], False) def connect_shoulder_01(self): self.connect_standard() - pm.parent(self.rollRef[0],self.parent_comp.ctl) + pm.parent(self.rollRef[0], self.parent_comp.ctl) diff --git a/scripts/mgear/maya/shifter/component/arm_2jnt_01/guide.py b/scripts/mgear/maya/shifter/component/arm_2jnt_01/guide.py index 77ac378..26020f5 100644 --- a/scripts/mgear/maya/shifter/component/arm_2jnt_01/guide.py +++ b/scripts/mgear/maya/shifter/component/arm_2jnt_01/guide.py @@ -1,32 +1,3 @@ -# MGEAR is under the terms of the MIT License - -# Copyright (c) 2016 Jeremie Passerin, Miquel Campos - -# Permission is hereby granted, free of charge, to any person obtaining a copy -# of this software and associated documentation files (the "Software"), to deal -# in the Software without restriction, including without limitation the rights -# to use, copy, modify, merge, publish, distribute, sublicense, and/or sell -# copies of the Software, and to permit persons to whom the Software is -# furnished to do so, subject to the following conditions: - -# The above copyright notice and this permission notice shall be included in all -# copies or substantial portions of the Software. - -# THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR -# IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, -# FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE -# AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER -# LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, -# OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE -# SOFTWARE. - -# Author: Jeremie Passerin geerem@hotmail.com www.jeremiepasserin.com -# Author: Miquel Campos hello@miquel-campos.com www.miquel-campos.com -# Date: 2016 / 10 / 10 - -########################################################## -# GLOBAL -########################################################## from functools import partial import pymel.core as pm @@ -34,7 +5,7 @@ from mgear.maya.shifter.component.guide import ComponentGuide import mgear.maya.transform as tra -#Pyside +# Pyside from mgear.maya.shifter.component.guide import componentMainSettings import mgear.maya.pyqt as gqt from maya.app.general.mayaMixin import MayaQWidgetDockableMixin @@ -46,7 +17,7 @@ AUTHOR = "Jeremie Passerin, Miquel Campos" URL = "www.jeremiepasserin.com, www.miquel-campos.com" EMAIL = "geerem@hotmail.com, hello@miquel-campos.com" -VERSION = [1,3,0] +VERSION = [1, 3, 0] TYPE = "arm_2jnt_01" NAME = "arm" DESCRIPTION = "2 bones arm with Maya nodes for roll bones. With elbow Pin" @@ -54,6 +25,8 @@ ########################################################## # CLASS ########################################################## + + class Guide(ComponentGuide): compType = TYPE @@ -74,33 +47,34 @@ def postInit(self): self.save_transform = ["root", "elbow", "wrist", "eff"] # ===================================================== - ## Add more object to the object definition list. + # Add more object to the object definition list. # @param self def addObjects(self): self.root = self.addRoot() - vTemp = tra.getOffsetPosition( self.root, [3,0,-.01]) + vTemp = tra.getOffsetPosition(self.root, [3, 0, -.01]) self.elbow = self.addLoc("elbow", self.root, vTemp) - vTemp = tra.getOffsetPosition( self.root, [6,0,0]) + vTemp = tra.getOffsetPosition(self.root, [6, 0, 0]) self.wrist = self.addLoc("wrist", self.elbow, vTemp) - vTemp = tra.getOffsetPosition( self.root, [7,0,0]) + vTemp = tra.getOffsetPosition(self.root, [7, 0, 0]) self.eff = self.addLoc("eff", self.wrist, vTemp) - self.dispcrv = self.addDispCurve("crv", [self.root, self.elbow, self.wrist, self.eff]) + self.dispcrv = self.addDispCurve( + "crv", [self.root, self.elbow, self.wrist, self.eff]) # ===================================================== - ## Add more parameter to the parameter definition list. + # Add more parameter to the parameter definition list. # @param self def addParameters(self): # Default Values - self.pBlend = self.addParam("blend", "double", 1, 0, 1) - self.pIkRefArray = self.addParam("ikrefarray", "string", "") + self.pBlend = self.addParam("blend", "double", 1, 0, 1) + self.pIkRefArray = self.addParam("ikrefarray", "string", "") self.pUpvRefArray = self.addParam("upvrefarray", "string", "") self.pUpvRefArray = self.addParam("pinrefarray", "string", "") - self.pMaxStretch = self.addParam("maxstretch", "double", 1.5 , 1, None) - self.pIKTR = self.addParam("ikTR", "bool", False) + self.pMaxStretch = self.addParam("maxstretch", "double", 1.5, 1, None) + self.pIKTR = self.addParam("ikTR", "bool", False) self.pMirrorMid = self.addParam("mirrorMid", "bool", False) self.pMirrorIK = self.addParam("mirrorIK", "bool", False) @@ -109,12 +83,14 @@ def addParameters(self): self.pDiv1 = self.addParam("div1", "long", 2, 1, None) # FCurves - self.pSt_profile = self.addFCurveParam("st_profile", [[0,0],[.5,-.5],[1,0]]) - self.pSq_profile = self.addFCurveParam("sq_profile", [[0,0],[.5,.5],[1,0]]) - - self.pUseIndex = self.addParam("useIndex", "bool", False) - self.pParentJointIndex = self.addParam("parentJointIndex", "long", -1, None, None) + self.pSt_profile = self.addFCurveParam( + "st_profile", [[0, 0], [.5, -.5], [1, 0]]) + self.pSq_profile = self.addFCurveParam( + "sq_profile", [[0, 0], [.5, .5], [1, 0]]) + self.pUseIndex = self.addParam("useIndex", "bool", False) + self.pParentJointIndex = self.addParam( + "parentJointIndex", "long", -1, None, None) ########################################################## @@ -130,15 +106,14 @@ def __init__(self, parent=None): class componentSettings(MayaQWidgetDockableMixin, componentMainSettings): - def __init__(self, parent = None): + def __init__(self, parent=None): self.toolName = TYPE # Delete old instances of the componet settings window. gqt.deleteInstances(self, MayaQDockWidget) - super(self.__class__, self).__init__(parent = parent) + super(self.__class__, self).__init__(parent=parent) self.settingsTab = settingsTab() - self.setup_componentSettingWindow() self.create_componentControls() self.populate_componentControls() @@ -156,19 +131,23 @@ def setup_componentSettingWindow(self): def create_componentControls(self): return - def populate_componentControls(self): - """ - Populate the controls values from the custom attributes of the component. + """Populate Controls + + Populate the controls values from the custom attributes of the + component. """ - #populate tab + # populate tab self.tabs.insertTab(1, self.settingsTab, "Component Settings") - #populate component settings - self.settingsTab.ikfk_slider.setValue(int(self.root.attr("blend").get()*100)) - self.settingsTab.ikfk_spinBox.setValue(int(self.root.attr("blend").get()*100)) - self.settingsTab.maxStretch_spinBox.setValue(self.root.attr("maxstretch").get()) + # populate component settings + self.settingsTab.ikfk_slider.setValue( + int(self.root.attr("blend").get() * 100)) + self.settingsTab.ikfk_spinBox.setValue( + int(self.root.attr("blend").get() * 100)) + self.settingsTab.maxStretch_spinBox.setValue( + self.root.attr("maxstretch").get()) self.populateCheck(self.settingsTab.ikTR_checkBox, "ikTR") self.populateCheck(self.settingsTab.mirrorMid_checkBox, "mirrorMid") self.populateCheck(self.settingsTab.mirrorIK_checkBox, "mirrorIK") @@ -184,19 +163,21 @@ def populate_componentControls(self): for item in pinRefArrayItems: self.settingsTab.pinRefArray_listWidget.addItem(item) - #populate connections in main settings + # populate connections in main settings + self.c_box = self.mainSettingsTab.connector_comboBox for cnx in Guide.connectors: - self.mainSettingsTab.connector_comboBox.addItem(cnx) - self.connector_items = [ self.mainSettingsTab.connector_comboBox.itemText(i) for i in range( self.mainSettingsTab.connector_comboBox.count())] + self.c_box.addItem(cnx) + self.connector_items = [self.c_box.itemText(i) for i in + range(self.c_box.count())] currentConnector = self.root.attr("connector").get() if currentConnector not in self.connector_items: - self.mainSettingsTab.connector_comboBox.addItem(currentConnector) + self.c_box.addItem(currentConnector) self.connector_items.append(currentConnector) - pm.displayWarning("The current connector: %s, is not a valid connector for this component. Build will Fail!!") + pm.displayWarning( + "The current connector: %s, is not a valid connector for this" + " component. Build will Fail!!") comboIndex = self.connector_items.index(currentConnector) - self.mainSettingsTab.connector_comboBox.setCurrentIndex(comboIndex) - - + self.c_box.setCurrentIndex(comboIndex) def create_componentLayout(self): @@ -208,29 +189,81 @@ def create_componentLayout(self): def create_componentConnections(self): - self.settingsTab.ikfk_slider.valueChanged.connect(partial(self.updateSlider, self.settingsTab.ikfk_slider, "blend")) - self.settingsTab.ikfk_spinBox.valueChanged.connect(partial(self.updateSlider, self.settingsTab.ikfk_spinBox, "blend")) - self.settingsTab.maxStretch_spinBox.valueChanged.connect(partial(self.updateSpinBox, self.settingsTab.maxStretch_spinBox, "maxstretch")) - self.settingsTab.div0_spinBox.valueChanged.connect(partial(self.updateSpinBox, self.settingsTab.div0_spinBox, "div0")) - self.settingsTab.div1_spinBox.valueChanged.connect(partial(self.updateSpinBox, self.settingsTab.div1_spinBox, "div1")) - self.settingsTab.squashStretchProfile_pushButton.clicked.connect(self.setProfile) - self.settingsTab.ikTR_checkBox.stateChanged.connect(partial(self.updateCheck, self.settingsTab.ikTR_checkBox, "ikTR")) - self.settingsTab.mirrorMid_checkBox.stateChanged.connect(partial(self.updateCheck, self.settingsTab.mirrorMid_checkBox, "mirrorMid")) - self.settingsTab.mirrorIK_checkBox.stateChanged.connect(partial(self.updateCheck, self.settingsTab.mirrorIK_checkBox, "mirrorIK")) - - self.settingsTab.ikRefArrayAdd_pushButton.clicked.connect(partial(self.addItem2listWidget, self.settingsTab.ikRefArray_listWidget, "ikrefarray")) - self.settingsTab.ikRefArrayRemove_pushButton.clicked.connect(partial(self.removeSelectedFromListWidget, self.settingsTab.ikRefArray_listWidget, "ikrefarray")) - self.settingsTab.ikRefArray_copyRef_pushButton.clicked.connect(partial(self.copyFromListWidget, self.settingsTab.upvRefArray_listWidget, self.settingsTab.ikRefArray_listWidget, "ikrefarray")) + self.settingsTab.ikfk_slider.valueChanged.connect( + partial(self.updateSlider, self.settingsTab.ikfk_slider, "blend")) + + self.settingsTab.ikfk_spinBox.valueChanged.connect( + partial(self.updateSlider, self.settingsTab.ikfk_spinBox, "blend")) + + self.settingsTab.maxStretch_spinBox.valueChanged.connect( + partial(self.updateSpinBox, + self.settingsTab.maxStretch_spinBox, "maxstretch")) + + self.settingsTab.div0_spinBox.valueChanged.connect( + partial(self.updateSpinBox, self.settingsTab.div0_spinBox, "div0")) + + self.settingsTab.div1_spinBox.valueChanged.connect( + partial(self.updateSpinBox, self.settingsTab.div1_spinBox, "div1")) + + self.settingsTab.squashStretchProfile_pushButton.clicked.connect( + self.setProfile) + + self.settingsTab.ikTR_checkBox.stateChanged.connect( + partial(self.updateCheck, self.settingsTab.ikTR_checkBox, "ikTR")) + + self.settingsTab.mirrorMid_checkBox.stateChanged.connect( + partial(self.updateCheck, + self.settingsTab.mirrorMid_checkBox, "mirrorMid")) + + self.settingsTab.mirrorIK_checkBox.stateChanged.connect( + partial(self.updateCheck, + self.settingsTab.mirrorIK_checkBox, "mirrorIK")) + + self.settingsTab.ikRefArrayAdd_pushButton.clicked.connect(partial( + self.addItem2listWidget, + self.settingsTab.ikRefArray_listWidget, "ikrefarray")) + + self.settingsTab.ikRefArrayRemove_pushButton.clicked.connect(partial( + self.removeSelectedFromListWidget, + self.settingsTab.ikRefArray_listWidget, "ikrefarray")) + + self.settingsTab.ikRefArray_copyRef_pushButton.clicked.connect(partial( + self.copyFromListWidget, + self.settingsTab.upvRefArray_listWidget, + self.settingsTab.ikRefArray_listWidget, "ikrefarray")) + self.settingsTab.ikRefArray_listWidget.installEventFilter(self) - self.settingsTab.upvRefArrayAdd_pushButton.clicked.connect(partial(self.addItem2listWidget, self.settingsTab.upvRefArray_listWidget, "upvrefarray")) - self.settingsTab.upvRefArrayRemove_pushButton.clicked.connect(partial(self.removeSelectedFromListWidget, self.settingsTab.upvRefArray_listWidget, "upvrefarray")) - self.settingsTab.upvRefArray_copyRef_pushButton.clicked.connect(partial(self.copyFromListWidget, self.settingsTab.ikRefArray_listWidget, self.settingsTab.upvRefArray_listWidget, "upvrefarray")) + self.settingsTab.upvRefArrayAdd_pushButton.clicked.connect(partial( + self.addItem2listWidget, + self.settingsTab.upvRefArray_listWidget, "upvrefarray")) + + self.settingsTab.upvRefArrayRemove_pushButton.clicked.connect(partial( + self.removeSelectedFromListWidget, + self.settingsTab.upvRefArray_listWidget, "upvrefarray")) + + self.settingsTab.upvRefArray_copyRef_pushButton.clicked.connect( + partial( + self.copyFromListWidget, + self.settingsTab.ikRefArray_listWidget, + self.settingsTab.upvRefArray_listWidget, "upvrefarray")) + self.settingsTab.upvRefArray_listWidget.installEventFilter(self) - self.settingsTab.pinRefArrayAdd_pushButton.clicked.connect(partial(self.addItem2listWidget, self.settingsTab.pinRefArray_listWidget, "pinrefarray")) - self.settingsTab.pinRefArrayRemove_pushButton.clicked.connect(partial(self.removeSelectedFromListWidget, self.settingsTab.pinRefArray_listWidget, "pinrefarray")) - self.settingsTab.pinRefArray_copyRef_pushButton.clicked.connect(partial(self.copyFromListWidget, self.settingsTab.ikRefArray_listWidget, self.settingsTab.pinRefArray_listWidget, "pinrefarray")) + self.settingsTab.pinRefArrayAdd_pushButton.clicked.connect(partial( + self.addItem2listWidget, + self.settingsTab.pinRefArray_listWidget, "pinrefarray")) + + self.settingsTab.pinRefArrayRemove_pushButton.clicked.connect(partial( + self.removeSelectedFromListWidget, + self.settingsTab.pinRefArray_listWidget, "pinrefarray")) + + self.settingsTab.pinRefArray_copyRef_pushButton.clicked.connect( + partial( + self.copyFromListWidget, + self.settingsTab.ikRefArray_listWidget, + self.settingsTab.pinRefArray_listWidget, "pinrefarray")) + self.settingsTab.pinRefArray_listWidget.installEventFilter(self) def eventFilter(self, sender, event): @@ -245,7 +278,5 @@ def eventFilter(self, sender, event): else: return QtWidgets.QDialog.eventFilter(self, sender, event) - - def dockCloseEventTriggered(self): gqt.deleteInstances(self, MayaQDockWidget) From 52ed18a987d84f1d7b92edb691b6e4293f51c09c Mon Sep 17 00:00:00 2001 From: miquelcampos Date: Mon, 20 Nov 2017 10:37:05 +0900 Subject: [PATCH 063/134] PEP8 #100 : Shifter:Refactoring WIP and #89 vendoring QT --- .../mgear/maya/shifter/component/__init__.py | 26 +++++------ .../shifter/component/arm_2jnt_01/guide.py | 3 +- scripts/mgear/maya/shifter/component/guide.py | 45 +++++++++---------- .../maya/shifter/component/mainSettingsUI.py | 2 +- scripts/mgear/maya/shifter/customStepUI.py | 2 +- scripts/mgear/maya/shifter/gameToolsUI.py | 2 +- scripts/mgear/maya/shifter/gui.py | 4 +- scripts/mgear/maya/shifter/guide.py | 2 +- scripts/mgear/maya/shifter/guideUI.py | 2 +- 9 files changed, 43 insertions(+), 45 deletions(-) diff --git a/scripts/mgear/maya/shifter/component/__init__.py b/scripts/mgear/maya/shifter/component/__init__.py index 1f6072d..45a88a3 100644 --- a/scripts/mgear/maya/shifter/component/__init__.py +++ b/scripts/mgear/maya/shifter/component/__init__.py @@ -13,11 +13,11 @@ # mgear import mgear -from mgear.maya import primitive, vector, transform, attribute, applyop -# node and icon imported with alias to avoid confusion with variables of the +from mgear.maya import primitive, vector, transform +from mgear.maya import attribute, applyop, node, icon +# node and iconShape imported with alias to avoid confusion with variables of the # same name -import mgear.maya.node as nod -import mgear.maya.icon as ico +# import mgear.maya.iconShape as icon ############################################# # COMPONENT @@ -251,13 +251,13 @@ def addJoint(self, obj, name, newActiveJnt=None, UniScale=True, segComp=0, if gearMulMatrix: mulmat_node = applyop.gear_mulmatrix_op( obj + ".worldMatrix", jnt + ".parentInverseMatrix") - dm_node = nod.createDecomposeMatrixNode( + dm_node = node.createDecomposeMatrixNode( mulmat_node + ".output") m = mulmat_node.attr('output').get() else: - mulmat_node = nod.createMultMatrixNode( + mulmat_node = node.createMultMatrixNode( obj + ".worldMatrix", jnt + ".parentInverseMatrix") - dm_node = nod.createDecomposeMatrixNode( + dm_node = node.createDecomposeMatrixNode( mulmat_node + ".matrixSum") m = mulmat_node.attr('matrixSum').get() pm.connectAttr(dm_node + ".outputTranslate", jnt + ".t") @@ -291,7 +291,7 @@ def addJoint(self, obj, name, newActiveJnt=None, UniScale=True, segComp=0, applyop.gear_mulmatrix_op(mulmat_node.attr('output'), im, jnt, 'r') else: - nod.createMultMatrixNode( + node.createMultMatrixNode( mulmat_node.attr('matrixSum'), im, jnt, 'r') else: @@ -337,7 +337,7 @@ def getBiNormalFromPos(self, pos): return vector.getPlaneBiNormal(pos[0], pos[1], pos[2]) - def addCtl(self, parent, name, m, color, icon, tp=None, lp=True, **kwargs): + def addCtl(self, parent, name, m, color, iconShape, tp=None, lp=True, **kwargs): """ Create the control and apply the shape, if this is alrealdy stored in the guide controllers grp. @@ -348,11 +348,11 @@ def addCtl(self, parent, name, m, color, icon, tp=None, lp=True, **kwargs): m (matrix): The transfromation matrix for the control. color (int or list of float): The color for the control in index or RGB. - icon (str): The controls default shape. + iconShape (str): The controls default shape. tp (dagNode): Tag Parent Control object to connect as a parent controller lp (bool): Lock the parent controller channels - kwargs (variant): Other arguments for the icon type variations. + kwargs (variant): Other arguments for the iconShape type variations. Returns: dagNode: The Control. @@ -366,9 +366,9 @@ def addCtl(self, parent, name, m, color, icon, tp=None, lp=True, **kwargs): for shape in ctl_ref.getShapes(): ctl.addChild(shape, shape=True, add=True) pm.rename(shape, fullName + "Shape") - ico.setcolor(ctl, color) + icon.setcolor(ctl, color) else: - ctl = ico.create(parent, fullName, m, color, icon, **kwargs) + ctl = icon.create(parent, fullName, m, color, iconShape, **kwargs) # create the attributes to handlde mirror and symetrical pose attribute.addAttribute(ctl, "invTx", "bool", 0, keyable=False, diff --git a/scripts/mgear/maya/shifter/component/arm_2jnt_01/guide.py b/scripts/mgear/maya/shifter/component/arm_2jnt_01/guide.py index 26020f5..7070ae9 100644 --- a/scripts/mgear/maya/shifter/component/arm_2jnt_01/guide.py +++ b/scripts/mgear/maya/shifter/component/arm_2jnt_01/guide.py @@ -11,7 +11,8 @@ from maya.app.general.mayaMixin import MayaQWidgetDockableMixin from maya.app.general.mayaMixin import MayaQDockWidget import settingsUI as sui -QtGui, QtCore, QtWidgets, wrapInstance = gqt.qt_import() +# QtGui, QtCore, QtWidgets, wrapInstance = gqt.qt_import() +from mgear.vendor.Qt import QtWidgets, QtCore # guide info AUTHOR = "Jeremie Passerin, Miquel Campos" diff --git a/scripts/mgear/maya/shifter/component/guide.py b/scripts/mgear/maya/shifter/component/guide.py index 20c03ef..46b74d1 100644 --- a/scripts/mgear/maya/shifter/component/guide.py +++ b/scripts/mgear/maya/shifter/component/guide.py @@ -7,31 +7,28 @@ import maya.cmds as cmds # pyMel import pymel.core as pm -import pymel.core.datatypes as dt +from pymel.core import datatypes # mgear import mgear from mgear import string -from mgear.maya import dag, vector, transform, applyop, attribute, curve, pyqt +from mgear.maya import dag, vector, transform, applyop, attribute, curve, icon -import mgear.maya.icon as ico - -from mgear.maya.shifter.guide import MainGuide -from mgear.maya.shifter.guide import helperSlots -import mgear.maya.shifter.gui as gui +from mgear.maya.shifter import guide, gui +# import mgear.maya.shifter.gui as gui import mainSettingsUI as msui -QtGui, QtCore, QtWidgets, wrapInstance = pyqt.qt_import() - +from mgear.vendor.Qt import QtWidgets, QtCore ########################################################## # COMPONENT GUIDE ########################################################## -class ComponentGuide(MainGuide): + +class ComponentGuide(guide.Main): """Main class for component guide creation. This class handles all the parameters and objectDefs creation. @@ -354,19 +351,19 @@ def _show(): if self.jNumberVal: if self.dirAxisVal == "X": - offVec = dt.Vector(self.jSpacVal, 0, 0) + offVec = datatypes.Vector(self.jSpacVal, 0, 0) elif self.dirAxisVal == "-X": - offVec = dt.Vector(self.jSpacVal * -1, 0, 0) + offVec = datatypes.Vector(self.jSpacVal * -1, 0, 0) elif self.dirAxisVal == "Y": - offVec = dt.Vector(0, self.jSpacVal, 0) + offVec = datatypes.Vector(0, self.jSpacVal, 0) elif self.dirAxisVal == "-Y": - offVec = dt.Vector(0, self.jSpacVal * -1, 0) + offVec = datatypes.Vector(0, self.jSpacVal * -1, 0) elif self.dirAxisVal == "Z": - offVec = dt.Vector(0, 0, self.jSpacVal) + offVec = datatypes.Vector(0, 0, self.jSpacVal) elif self.dirAxisVal == "-Z": - offVec = dt.Vector(0, 0, self.jSpacVal * -1) + offVec = datatypes.Vector(0, 0, self.jSpacVal * -1) - newPosition = dt.Vector(0, 0, 0) + newPosition = datatypes.Vector(0, 0, 0) for i in range(self.jNumberVal): newPosition = offVec + newPosition localName = string.replaceSharpWithPadding(name, i) @@ -473,9 +470,9 @@ def addRoot(self): """ if "root" not in self.tra.keys(): self.tra["root"] = transform.getTransformFromPos( - dt.Vector(0, 0, 0)) + datatypes.Vector(0, 0, 0)) - self.root = ico.guideRootIcon(self.parent, self.getName( + self.root = icon.guideRootIcon(self.parent, self.getName( "root"), color=13, m=self.tra["root"]) # Add Parameters from parameter definition list. @@ -509,7 +506,7 @@ def addLoc(self, name, parent, position=None): loc = self.prim[name].create( parent, self.getName(name), self.tra[name], color=17) else: - loc = ico.guideLocatorIcon(parent, self.getName( + loc = icon.guideLocatorIcon(parent, self.getName( name), color=17, m=self.tra[name]) return loc @@ -546,7 +543,7 @@ def addLocMulti(self, name, parent, updateParent=True): if localName not in self.tra.keys(): break - loc = ico.guideLocatorIcon(parent, self.getName( + loc = icon.guideLocatorIcon(parent, self.getName( localName), color=17, m=self.tra[localName]) locs.append(loc) if updateParent: @@ -572,13 +569,13 @@ def addBlade(self, name, parentPos, parentDir): """ if name not in self.blades.keys(): self.blades[name] = vector.Blade( - transform.getTransformFromPos(dt.Vector(0, 0, 0))) + transform.getTransformFromPos(datatypes.Vector(0, 0, 0))) offset = False else: offset = True dist = .6 * self.root.attr("scaleX").get() - blade = ico.guideBladeIcon(parent=parentPos, name=self.getName( + blade = icon.guideBladeIcon(parent=parentPos, name=self.getName( name), lenX=dist, color=13, m=self.blades[name].transform) aim_cns = applyop.aimCns(blade, parentDir, axis="xy", wupType=2, wupVector=[0, 1, 0], wupObject=self.root, @@ -802,7 +799,7 @@ def __init__(self, parent=None): self.setupUi(self) -class componentMainSettings(QtWidgets.QDialog, helperSlots): +class componentMainSettings(QtWidgets.QDialog, guide.helperSlots): valueChanged = QtCore.Signal(int) def __init__(self, parent=None): diff --git a/scripts/mgear/maya/shifter/component/mainSettingsUI.py b/scripts/mgear/maya/shifter/component/mainSettingsUI.py index 870b6f5..b03353d 100644 --- a/scripts/mgear/maya/shifter/component/mainSettingsUI.py +++ b/scripts/mgear/maya/shifter/component/mainSettingsUI.py @@ -1,5 +1,5 @@ import mgear.maya.pyqt as gqt -QtGui, QtCore, QtWidgets, wrapInstance = gqt.qt_import() +from mgear.vendor.Qt import QtCore, QtWidgets class Ui_Form(object): diff --git a/scripts/mgear/maya/shifter/customStepUI.py b/scripts/mgear/maya/shifter/customStepUI.py index d53de1d..eb7c9c4 100644 --- a/scripts/mgear/maya/shifter/customStepUI.py +++ b/scripts/mgear/maya/shifter/customStepUI.py @@ -1,5 +1,5 @@ import mgear.maya.pyqt as gqt -QtGui, QtCore, QtWidgets, wrapInstance = gqt.qt_import() +from mgear.vendor.Qt import QtCore, QtWidgets class Ui_Form(object): diff --git a/scripts/mgear/maya/shifter/gameToolsUI.py b/scripts/mgear/maya/shifter/gameToolsUI.py index c130be5..dcf25a4 100644 --- a/scripts/mgear/maya/shifter/gameToolsUI.py +++ b/scripts/mgear/maya/shifter/gameToolsUI.py @@ -1,5 +1,5 @@ -from PySide2 import QtCore, QtWidgets +from mgear.vendor.Qt import QtCore, QtWidgets class Ui_gameTools(object): diff --git a/scripts/mgear/maya/shifter/gui.py b/scripts/mgear/maya/shifter/gui.py index d6bc381..87cb5bc 100644 --- a/scripts/mgear/maya/shifter/gui.py +++ b/scripts/mgear/maya/shifter/gui.py @@ -140,7 +140,7 @@ def __init__(self): def drawComp(self, compType, *args): - guide = shifter.RigGuide() + guide = shifter.guide.Rig() if pm.selected(): parent = pm.selected()[0] @@ -161,7 +161,7 @@ def buildFromSelection(self, *args): '\", window=True)')) pm.setParent('..') pm.showWindow(logWin) - print mgear.logInfos() + mgear.logInfos() rg = shifter.Rig() rg.buildFromSelection() diff --git a/scripts/mgear/maya/shifter/guide.py b/scripts/mgear/maya/shifter/guide.py index f387c01..5cce922 100644 --- a/scripts/mgear/maya/shifter/guide.py +++ b/scripts/mgear/maya/shifter/guide.py @@ -35,7 +35,7 @@ # pyside from maya.app.general.mayaMixin import MayaQDockWidget from maya.app.general.mayaMixin import MayaQWidgetDockableMixin -QtGui, QtCore, QtWidgets, wrapInstance = pyqt.qt_import() +from mgear.vendor.Qt import QtCore, QtWidgets GUIDE_UI_WINDOW_NAME = "guide_UI_window" GUIDE_DOCK_NAME = "Guide_Components" diff --git a/scripts/mgear/maya/shifter/guideUI.py b/scripts/mgear/maya/shifter/guideUI.py index 8e267e1..4e94da6 100644 --- a/scripts/mgear/maya/shifter/guideUI.py +++ b/scripts/mgear/maya/shifter/guideUI.py @@ -1,5 +1,5 @@ import mgear.maya.pyqt as gqt -QtGui, QtCore, QtWidgets, wrapInstance = gqt.qt_import() +from mgear.vendor.Qt import QtCore, QtWidgets class Ui_Form(object): From 87cb262091e3614585ca7b9453f5199facbaa9dc Mon Sep 17 00:00:00 2001 From: miquelcampos Date: Mon, 20 Nov 2017 10:39:20 +0900 Subject: [PATCH 064/134] PEP8 #100 : Shifter:Refactoring icon import --- scripts/mgear/maya/shifter/__init__.py | 12 +++++------- scripts/mgear/maya/shifter/component/guide.py | 1 - 2 files changed, 5 insertions(+), 8 deletions(-) diff --git a/scripts/mgear/maya/shifter/__init__.py b/scripts/mgear/maya/shifter/__init__.py index 6c1983c..8b08bd9 100644 --- a/scripts/mgear/maya/shifter/__init__.py +++ b/scripts/mgear/maya/shifter/__init__.py @@ -13,9 +13,7 @@ import mgear.maya.utils from . import guide, component -from mgear.maya import primitive, attribute, skin, dag -# icon imported with alias to avoid confusion with variables of the same name -import mgear.maya.icon as ico +from mgear.maya import primitive, attribute, skin, dag, icon # check if we have loaded the necessary plugins @@ -325,7 +323,7 @@ def finalize(self): "Skin doesn't exist or is not correct. " + self.options["skin"] + " Skipped!") - def addCtl(self, parent, name, m, color, icon, **kwargs): + def addCtl(self, parent, name, m, color, iconShape, **kwargs): """Create the control and apply the shape, if this is alrealdy stored in the guide controllers grp. @@ -335,8 +333,8 @@ def addCtl(self, parent, name, m, color, icon, **kwargs): m (matrix): The transfromation matrix for the control. color (int or list of float): The color for the control in index or RGB. - icon (str): The controls default shape. - kwargs (variant): Other arguments for the icon type variations. + iconShape (str): The controls default shape. + kwargs (variant): Other arguments for the iconShape type variations Returns: dagNode: The Control. @@ -349,7 +347,7 @@ def addCtl(self, parent, name, m, color, icon, **kwargs): for shape in ctl_ref.getShapes(): ctl.addChild(shape, shape=True, add=True) else: - ctl = ico.create(parent, name, m, color, icon, **kwargs) + ctl = icon.create(parent, name, m, color, iconShape, **kwargs) self.addToGroup(ctl, "controllers") diff --git a/scripts/mgear/maya/shifter/component/guide.py b/scripts/mgear/maya/shifter/component/guide.py index 46b74d1..b8c0cce 100644 --- a/scripts/mgear/maya/shifter/component/guide.py +++ b/scripts/mgear/maya/shifter/component/guide.py @@ -17,7 +17,6 @@ from mgear.maya import dag, vector, transform, applyop, attribute, curve, icon from mgear.maya.shifter import guide, gui -# import mgear.maya.shifter.gui as gui import mainSettingsUI as msui From 0235e59a56f1712b034644b9f2e43074fefbfbaf Mon Sep 17 00:00:00 2001 From: miquelcampos Date: Mon, 20 Nov 2017 13:47:49 +0900 Subject: [PATCH 065/134] PEP8 #100 : Shifter:Refactoring icon import --- .../mgear/maya/shifter/component/__init__.py | 4 +- .../shifter/component/squash_01/__init__.py | 179 ++++++++++-------- .../maya/shifter/component/squash_01/guide.py | 98 ++++------ 3 files changed, 134 insertions(+), 147 deletions(-) diff --git a/scripts/mgear/maya/shifter/component/__init__.py b/scripts/mgear/maya/shifter/component/__init__.py index 45a88a3..596bbad 100644 --- a/scripts/mgear/maya/shifter/component/__init__.py +++ b/scripts/mgear/maya/shifter/component/__init__.py @@ -15,9 +15,7 @@ import mgear from mgear.maya import primitive, vector, transform from mgear.maya import attribute, applyop, node, icon -# node and iconShape imported with alias to avoid confusion with variables of the -# same name -# import mgear.maya.iconShape as icon + ############################################# # COMPONENT diff --git a/scripts/mgear/maya/shifter/component/squash_01/__init__.py b/scripts/mgear/maya/shifter/component/squash_01/__init__.py index 4e99421..15c6f7e 100644 --- a/scripts/mgear/maya/shifter/component/squash_01/__init__.py +++ b/scripts/mgear/maya/shifter/component/squash_01/__init__.py @@ -1,91 +1,84 @@ -# MGEAR is under the terms of the MIT License -# Copyright (c) 2016 Jeremie Passerin, Miquel Campos - -# Permission is hereby granted, free of charge, to any person obtaining a copy -# of this software and associated documentation files (the "Software"), to deal -# in the Software without restriction, including without limitation the rights -# to use, copy, modify, merge, publish, distribute, sublicense, and/or sell -# copies of the Software, and to permit persons to whom the Software is -# furnished to do so, subject to the following conditions: - -# The above copyright notice and this permission notice shall be included in all -# copies or substantial portions of the Software. - -# THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR -# IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, -# FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE -# AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER -# LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, -# OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE -# SOFTWARE. - -# Author: Jeremie Passerin geerem@hotmail.com www.jeremiepasserin.com -# Author: Miquel Campos hello@miquel-campos.com www.miquel-campos.com -# Date: 2016 / 10 / 10 - -########################################################## -# GLOBAL -########################################################## -# Maya import pymel.core as pm import pymel.core.datatypes as dt # mgear -from mgear.maya.shifter.component import MainComponent +# from mgear.maya.shifter.component import MainComponent +from mgear.maya.shifter import component -import mgear.maya.primitive as pri -import mgear.maya.transform as tra -import mgear.maya.applyop as aop -import mgear.maya.attribute as att -import mgear.maya.node as nod -import mgear.maya.vector as vec +from mgear.maya import primitive, transform, applyop, attribute, node, vector ########################################################## # COMPONENT ########################################################## -## The main component class. -class Component(MainComponent): +# The main component class. +class Component(component.Main): # ===================================================== # OBJECTS # ===================================================== - ## Add all the objects needed to create the component. + # Add all the objects needed to create the component. # @param self def addObjects(self): - self.normal = self.guide.blades["blade"].z*-1 + self.normal = self.guide.blades["blade"].z * -1 self.binormal = self.guide.blades["blade"].x - t = tra.getTransformLookingAt(self.guide.apos[0], self.guide.apos[1], self.normal, axis="yx", negate=self.negate) - - self.ctl_npo = pri.addTransform(self.root, self.getName("ctl_npo"), t) - self.ctl = self.addCtl(self.ctl_npo, "base_ctl", t, self.color_ik, "square", w=1.0, tp=self.parentCtlTag) - - self.ref_base = pri.addTransform(self.ctl, self.getName("ref_base"), t) - - t = tra.setMatrixPosition(t, self.guide.apos[1]) - self.ik_cns = pri.addTransform(self.ctl, self.getName("ik_cns"), t) - self.squash_npo = pri.addTransform(self.ik_cns, self.getName("squash_npo"), t) - self.squash_ctl = self.addCtl(self.squash_npo, "squash_ctl", t, self.color_ik, "crossarrow", w=1.0, ro=dt.Vector(1.5708,0,0), tp=self.ctl) - att.setKeyableAttributes(self.squash_ctl, ["tx", "ty", "tz"] ) - - self.ref_squash = pri.addTransform(self.squash_ctl, self.getName("ref_squash"), t) + t = transform.getTransformLookingAt(self.guide.apos[0], + self.guide.apos[1], + self.normal, + axis="yx", + negate=self.negate) + self.ctl_npo = primitive.addTransform(self.root, + self.getName("ctl_npo"), t) + self.ctl = self.addCtl(self.ctl_npo, + "base_ctl", + t, + self.color_ik, + "square", + w=1.0, + tp=self.parentCtlTag) + + self.ref_base = primitive.addTransform(self.ctl, + self.getName("ref_base"), + t) + + t = transform.setMatrixPosition(t, self.guide.apos[1]) + + self.ik_cns = primitive.addTransform(self.ctl, + self.getName("ik_cns"), + t) + self.squash_npo = primitive.addTransform(self.ik_cns, + self.getName("squash_npo"), + t) + self.squash_ctl = self.addCtl(self.squash_npo, + "squash_ctl", + t, + self.color_ik, + "crossarrow", + w=1.0, + ro=dt.Vector(1.5708, 0, 0), + tp=self.ctl) + + attribute.setKeyableAttributes(self.squash_ctl, ["tx", "ty", "tz"]) + + self.ref_squash = primitive.addTransform(self.squash_ctl, + self.getName("ref_squash"), + t) self.div_cns = [] - div_cns = pri.addTransform(self.root, self.getName("div0_loc")) + div_cns = primitive.addTransform(self.root, self.getName("div0_loc")) self.div_cns.append(div_cns) self.jnt_pos.append([div_cns, 0, None, False]) - # ===================================================== # PROPERTY # ===================================================== - ## Add parameters to the anim and setup properties to control the component. + # Add parameters to the anim and setup properties to control the component. # @param self def addAttributes(self): @@ -93,34 +86,60 @@ def addAttributes(self): if self.settings["ikrefarray"]: ref_names = self.settings["ikrefarray"].split(",") if len(ref_names) > 1: - self.ikref_att = self.addAnimEnumParam("ikref", "Ik Ref", 0, self.settings["ikrefarray"].split(",")) + self.ikref_att = self.addAnimEnumParam( + "ikref", + "Ik Ref", + 0, + self.settings["ikrefarray"].split(",")) # ===================================================== # OPERATORS # ===================================================== - ## Apply operators, constraints, expressions to the hierarchy.\n + # Apply operators, constraints, expressions to the hierarchy.\n # In order to keep the code clean and easier to debug, # we shouldn't create any new object in this method. # @param self def addOperators(self): - aop.aimCns(self.ref_base, self.squash_ctl, axis="yx", wupType=2, wupVector=[1,0,0], wupObject=self.ctl, maintainOffset=False) - aop.aimCns(self.ref_squash, self.ctl, axis="-yx", wupType=2, wupVector=[1,0,0], wupObject=self.squash_ctl, maintainOffset=False) + applyop.aimCns(self.ref_base, + self.squash_ctl, + axis="yx", + wupType=2, + wupVector=[1, 0, 0], + wupObject=self.ctl, + maintainOffset=False) + applyop.aimCns(self.ref_squash, + self.ctl, + axis="-yx", + wupType=2, + wupVector=[1, 0, 0], + wupObject=self.squash_ctl, + maintainOffset=False) bIncrement = 1.0 - blend=0 + blend = 0 for i, div_cns in enumerate(self.div_cns): - intMatrix = aop.gear_intmatrix_op(self.ref_base.attr("worldMatrix"), self.ref_squash.attr("worldMatrix"), blend) - aop.gear_mulmatrix_op(intMatrix.attr("output"), div_cns.attr("parentInverseMatrix[0]"), div_cns) + intMatrix = applyop.gear_intmatrix_op( + self.ref_base.attr("worldMatrix"), + self.ref_squash.attr("worldMatrix"), + blend) - blend = blend+bIncrement + applyop.gear_mulmatrix_op(intMatrix.attr("output"), + div_cns.attr("parentInverseMatrix[0]"), + div_cns) - d = vec.getDistance(self.guide.apos[0], self.guide.apos[1]) - dist_node = nod.createDistNode(self.squash_ctl, self.ctl) - rootWorld_node = nod.createDecomposeMatrixNode(self.ctl.attr("worldMatrix")) - div_node = nod.createDivNode(dist_node+".distance", rootWorld_node+".outputScaleY") - div_node = nod.createDivNode(div_node+".outputX", d) - rev_node = nod.createReverseNode(div_node+".outputX") - add_node = pm.createNode("plusMinusAverage") + blend = blend + bIncrement + + d = vector.getDistance(self.guide.apos[0], self.guide.apos[1]) + dist_node = node.createDistNode(self.squash_ctl, self.ctl) + rootWorld_node = node.createDecomposeMatrixNode( + self.ctl.attr("worldMatrix")) + + div_node = node.createDivNode(dist_node + ".distance", + rootWorld_node + ".outputScaleY") + + div_node = node.createDivNode(div_node + ".outputX", d) + rev_node = node.createReverseNode(div_node + ".outputX") + add_node = pm.createNode("plusMinusAverage") add_node.input1D[0].set(1.0) rev_node.outputX >> add_node.input1D[1] @@ -129,11 +148,10 @@ def addOperators(self): add_node.output1D >> self.ref_base.scaleX add_node.output1D >> self.ref_base.scaleZ - # ===================================================== # CONNECTOR # ===================================================== - ## Set the relation beetween object from guide to rig.\n + # Set the relation beetween object from guide to rig.\n # @param self def setRelation(self): self.relatives["root"] = self.ref_base @@ -142,13 +160,14 @@ def setRelation(self): self.controlRelatives["root"] = self.ctl self.controlRelatives["squash"] = self.squash_ctl - for i in range(0, len(self.div_cns)-1): - self.relatives["%s_loc"%i] = self.div_cns[i+1] - self.jointRelatives["%s_loc"%i] = i+1 - self.relatives["%s_loc"%(len(self.div_cns)-1)] = self.div_cns[-1] - self.jointRelatives["%s_loc"%(len(self.div_cns)-1)] = len(self.div_cns)-1 + for i in range(0, len(self.div_cns) - 1): + self.relatives["%s_loc" % i] = self.div_cns[i + 1] + self.jointRelatives["%s_loc" % i] = i + 1 + self.relatives["%s_loc" % (len(self.div_cns) - 1)] = self.div_cns[-1] + jnt_rel_len = len(self.div_cns) - 1 + self.jointRelatives["%s_loc" % (len(self.div_cns) - 1)] = jnt_rel_len - ## standard connection definition. + # standard connection definition. # @param self def connect_standard(self): self.connect_standardWithSimpleIkRef() diff --git a/scripts/mgear/maya/shifter/component/squash_01/guide.py b/scripts/mgear/maya/shifter/component/squash_01/guide.py index 5c2ccc6..c67a2ad 100644 --- a/scripts/mgear/maya/shifter/component/squash_01/guide.py +++ b/scripts/mgear/maya/shifter/component/squash_01/guide.py @@ -1,53 +1,18 @@ -# MGEAR is under the terms of the MIT License - -# Copyright (c) 2016 Jeremie Passerin, Miquel Campos - -# Permission is hereby granted, free of charge, to any person obtaining a copy -# of this software and associated documentation files (the "Software"), to deal -# in the Software without restriction, including without limitation the rights -# to use, copy, modify, merge, publish, distribute, sublicense, and/or sell -# copies of the Software, and to permit persons to whom the Software is -# furnished to do so, subject to the following conditions: - -# The above copyright notice and this permission notice shall be included in all -# copies or substantial portions of the Software. - -# THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR -# IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, -# FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE -# AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER -# LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, -# OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE -# SOFTWARE. - -# Author: Jeremie Passerin geerem@hotmail.com www.jeremiepasserin.com -# Author: Miquel Campos hello@miquel-campos.com www.miquel-campos.com -# Date: 2016 / 10 / 10 - -########################################################## -# GLOBAL -########################################################## from functools import partial - -# mgear -from mgear.maya.shifter.component.guide import ComponentGuide -import mgear.maya.transform as tra +from mgear.maya.shifter.component import guide +from mgear.maya import transform, pyqt import settingsUI as sui - - -#Pyside +from mgear.vendor.Qt import QtWidgets, QtCore from mgear.maya.shifter.component.guide import componentMainSettings -import mgear.maya.pyqt as gqt from maya.app.general.mayaMixin import MayaQWidgetDockableMixin from maya.app.general.mayaMixin import MayaQDockWidget -QtGui, QtCore, QtWidgets, wrapInstance = gqt.qt_import() # guide info AUTHOR = "Miquel Campos" URL = "www.miquel-campos.com" EMAIL = "hello@miquel-campos.com" -VERSION = [1,0,0] +VERSION = [1, 0, 0] TYPE = "squash_01" NAME = "squash" DESCRIPTION = "Linear squash component" @@ -55,7 +20,9 @@ ########################################################## # CLASS ########################################################## -class Guide(ComponentGuide): + + +class Guide(guide.ComponentGuide): compType = TYPE compName = NAME @@ -66,42 +33,38 @@ class Guide(ComponentGuide): email = EMAIL version = VERSION - - # ===================================================== - ## - # @param self def postInit(self): self.save_transform = ["root", "tip"] self.save_blade = ["blade"] - # ===================================================== - ## Add more object to the object definition list. - # @param self def addObjects(self): self.root = self.addRoot() - vTemp = tra.getOffsetPosition( self.root, [2,0,0]) + vTemp = transform.getOffsetPosition(self.root, [2, 0, 0]) self.loc = self.addLoc("tip", self.root, vTemp) self.blade = self.addBlade("blade", self.root, self.loc) centers = [self.root, self.loc] self.dispcrv = self.addDispCurve("crv", centers) - - # ===================================================== - ## Add more parameter to the parameter definition list. + # Add more parameter to the parameter definition list. # @param self def addParameters(self): - self.pRefArray = self.addParam("ikrefarray", "string", "") + self.pRefArray = self.addParam("ikrefarray", "string", "") self.pUseIndex = self.addParam("useIndex", "bool", False) - self.pParentJointIndex = self.addParam("parentJointIndex", "long", -1, None, None) + self.pParentJointIndex = self.addParam("parentJointIndex", + "long", + -1, + None, + None) ########################################################## # Setting Page ########################################################## + class settingsTab(QtWidgets.QDialog, sui.Ui_Form): def __init__(self, parent=None): @@ -111,15 +74,14 @@ def __init__(self, parent=None): class componentSettings(MayaQWidgetDockableMixin, componentMainSettings): - def __init__(self, parent = None): + def __init__(self, parent=None): self.toolName = TYPE # Delete old instances of the componet settings window. - gqt.deleteInstances(self, MayaQDockWidget) + pyqt.deleteInstances(self, MayaQDockWidget) - super(self.__class__, self).__init__(parent = parent) + super(self.__class__, self).__init__(parent=parent) self.settingsTab = settingsTab() - self.setup_componentSettingWindow() self.create_componentControls() self.populate_componentControls() @@ -127,7 +89,7 @@ def __init__(self, parent = None): self.create_componentConnections() def setup_componentSettingWindow(self): - self.mayaMainWindow = gqt.maya_main_window() + self.mayaMainWindow = pyqt.maya_main_window() self.setObjectName(self.toolName) self.setWindowFlags(QtCore.Qt.Window) @@ -138,11 +100,13 @@ def create_componentControls(self): return def populate_componentControls(self): - """ - Populate the controls values from the custom attributes of the component. + """Populate the controls values. + + Populate the controls values from the custom attributes of the + component. """ - #populate tab + # populate tab self.tabs.insertTab(1, self.settingsTab, "Component Settings") refArrayItems = self.root.attr("ikrefarray").get().split(",") @@ -159,8 +123,14 @@ def create_componentLayout(self): def create_componentConnections(self): - self.settingsTab.refArrayAdd_pushButton.clicked.connect(partial(self.addItem2listWidget, self.settingsTab.refArray_listWidget, "ikrefarray")) - self.settingsTab.refArrayRemove_pushButton.clicked.connect(partial(self.removeSelectedFromListWidget, self.settingsTab.refArray_listWidget, "ikrefarray")) + self.settingsTab.refArrayAdd_pushButton.clicked.connect( + partial(self.addItem2listWidget, + self.settingsTab.refArray_listWidget, + "ikrefarray")) + self.settingsTab.refArrayRemove_pushButton.clicked.connect( + partial(self.removeSelectedFromListWidget, + self.settingsTab.refArray_listWidget, + "ikrefarray")) self.settingsTab.refArray_listWidget.installEventFilter(self) def eventFilter(self, sender, event): @@ -172,4 +142,4 @@ def eventFilter(self, sender, event): return QtWidgets.QDialog.eventFilter(self, sender, event) def dockCloseEventTriggered(self): - gqt.deleteInstances(self, MayaQDockWidget) + pyqt.deleteInstances(self, MayaQDockWidget) From f7c527642030aae7048292b5be3e0574995612c3 Mon Sep 17 00:00:00 2001 From: miquelcampos Date: Mon, 20 Nov 2017 13:52:14 +0900 Subject: [PATCH 066/134] Revert "PEP8 #100 : Shifter:Refactoring icon import" This reverts commit 0235e59a56f1712b034644b9f2e43074fefbfbaf. --- .../mgear/maya/shifter/component/__init__.py | 4 +- .../shifter/component/squash_01/__init__.py | 179 ++++++++---------- .../maya/shifter/component/squash_01/guide.py | 98 ++++++---- 3 files changed, 147 insertions(+), 134 deletions(-) diff --git a/scripts/mgear/maya/shifter/component/__init__.py b/scripts/mgear/maya/shifter/component/__init__.py index 596bbad..45a88a3 100644 --- a/scripts/mgear/maya/shifter/component/__init__.py +++ b/scripts/mgear/maya/shifter/component/__init__.py @@ -15,7 +15,9 @@ import mgear from mgear.maya import primitive, vector, transform from mgear.maya import attribute, applyop, node, icon - +# node and iconShape imported with alias to avoid confusion with variables of the +# same name +# import mgear.maya.iconShape as icon ############################################# # COMPONENT diff --git a/scripts/mgear/maya/shifter/component/squash_01/__init__.py b/scripts/mgear/maya/shifter/component/squash_01/__init__.py index 15c6f7e..4e99421 100644 --- a/scripts/mgear/maya/shifter/component/squash_01/__init__.py +++ b/scripts/mgear/maya/shifter/component/squash_01/__init__.py @@ -1,84 +1,91 @@ +# MGEAR is under the terms of the MIT License +# Copyright (c) 2016 Jeremie Passerin, Miquel Campos + +# Permission is hereby granted, free of charge, to any person obtaining a copy +# of this software and associated documentation files (the "Software"), to deal +# in the Software without restriction, including without limitation the rights +# to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +# copies of the Software, and to permit persons to whom the Software is +# furnished to do so, subject to the following conditions: + +# The above copyright notice and this permission notice shall be included in all +# copies or substantial portions of the Software. + +# THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +# IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +# FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +# AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +# LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +# OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE +# SOFTWARE. + +# Author: Jeremie Passerin geerem@hotmail.com www.jeremiepasserin.com +# Author: Miquel Campos hello@miquel-campos.com www.miquel-campos.com +# Date: 2016 / 10 / 10 + +########################################################## +# GLOBAL +########################################################## +# Maya import pymel.core as pm import pymel.core.datatypes as dt # mgear -# from mgear.maya.shifter.component import MainComponent -from mgear.maya.shifter import component +from mgear.maya.shifter.component import MainComponent -from mgear.maya import primitive, transform, applyop, attribute, node, vector +import mgear.maya.primitive as pri +import mgear.maya.transform as tra +import mgear.maya.applyop as aop +import mgear.maya.attribute as att +import mgear.maya.node as nod +import mgear.maya.vector as vec ########################################################## # COMPONENT ########################################################## -# The main component class. -class Component(component.Main): +## The main component class. +class Component(MainComponent): # ===================================================== # OBJECTS # ===================================================== - # Add all the objects needed to create the component. + ## Add all the objects needed to create the component. # @param self def addObjects(self): - self.normal = self.guide.blades["blade"].z * -1 + self.normal = self.guide.blades["blade"].z*-1 self.binormal = self.guide.blades["blade"].x - t = transform.getTransformLookingAt(self.guide.apos[0], - self.guide.apos[1], - self.normal, - axis="yx", - negate=self.negate) - self.ctl_npo = primitive.addTransform(self.root, - self.getName("ctl_npo"), t) - self.ctl = self.addCtl(self.ctl_npo, - "base_ctl", - t, - self.color_ik, - "square", - w=1.0, - tp=self.parentCtlTag) - - self.ref_base = primitive.addTransform(self.ctl, - self.getName("ref_base"), - t) - - t = transform.setMatrixPosition(t, self.guide.apos[1]) - - self.ik_cns = primitive.addTransform(self.ctl, - self.getName("ik_cns"), - t) - self.squash_npo = primitive.addTransform(self.ik_cns, - self.getName("squash_npo"), - t) - self.squash_ctl = self.addCtl(self.squash_npo, - "squash_ctl", - t, - self.color_ik, - "crossarrow", - w=1.0, - ro=dt.Vector(1.5708, 0, 0), - tp=self.ctl) - - attribute.setKeyableAttributes(self.squash_ctl, ["tx", "ty", "tz"]) - - self.ref_squash = primitive.addTransform(self.squash_ctl, - self.getName("ref_squash"), - t) + t = tra.getTransformLookingAt(self.guide.apos[0], self.guide.apos[1], self.normal, axis="yx", negate=self.negate) + + self.ctl_npo = pri.addTransform(self.root, self.getName("ctl_npo"), t) + self.ctl = self.addCtl(self.ctl_npo, "base_ctl", t, self.color_ik, "square", w=1.0, tp=self.parentCtlTag) + + self.ref_base = pri.addTransform(self.ctl, self.getName("ref_base"), t) + + t = tra.setMatrixPosition(t, self.guide.apos[1]) + self.ik_cns = pri.addTransform(self.ctl, self.getName("ik_cns"), t) + self.squash_npo = pri.addTransform(self.ik_cns, self.getName("squash_npo"), t) + self.squash_ctl = self.addCtl(self.squash_npo, "squash_ctl", t, self.color_ik, "crossarrow", w=1.0, ro=dt.Vector(1.5708,0,0), tp=self.ctl) + att.setKeyableAttributes(self.squash_ctl, ["tx", "ty", "tz"] ) + + self.ref_squash = pri.addTransform(self.squash_ctl, self.getName("ref_squash"), t) self.div_cns = [] - div_cns = primitive.addTransform(self.root, self.getName("div0_loc")) + div_cns = pri.addTransform(self.root, self.getName("div0_loc")) self.div_cns.append(div_cns) self.jnt_pos.append([div_cns, 0, None, False]) + # ===================================================== # PROPERTY # ===================================================== - # Add parameters to the anim and setup properties to control the component. + ## Add parameters to the anim and setup properties to control the component. # @param self def addAttributes(self): @@ -86,61 +93,35 @@ def addAttributes(self): if self.settings["ikrefarray"]: ref_names = self.settings["ikrefarray"].split(",") if len(ref_names) > 1: - self.ikref_att = self.addAnimEnumParam( - "ikref", - "Ik Ref", - 0, - self.settings["ikrefarray"].split(",")) + self.ikref_att = self.addAnimEnumParam("ikref", "Ik Ref", 0, self.settings["ikrefarray"].split(",")) # ===================================================== # OPERATORS # ===================================================== - # Apply operators, constraints, expressions to the hierarchy.\n + ## Apply operators, constraints, expressions to the hierarchy.\n # In order to keep the code clean and easier to debug, # we shouldn't create any new object in this method. # @param self def addOperators(self): - applyop.aimCns(self.ref_base, - self.squash_ctl, - axis="yx", - wupType=2, - wupVector=[1, 0, 0], - wupObject=self.ctl, - maintainOffset=False) - applyop.aimCns(self.ref_squash, - self.ctl, - axis="-yx", - wupType=2, - wupVector=[1, 0, 0], - wupObject=self.squash_ctl, - maintainOffset=False) + aop.aimCns(self.ref_base, self.squash_ctl, axis="yx", wupType=2, wupVector=[1,0,0], wupObject=self.ctl, maintainOffset=False) + aop.aimCns(self.ref_squash, self.ctl, axis="-yx", wupType=2, wupVector=[1,0,0], wupObject=self.squash_ctl, maintainOffset=False) bIncrement = 1.0 - blend = 0 + blend=0 for i, div_cns in enumerate(self.div_cns): - intMatrix = applyop.gear_intmatrix_op( - self.ref_base.attr("worldMatrix"), - self.ref_squash.attr("worldMatrix"), - blend) - - applyop.gear_mulmatrix_op(intMatrix.attr("output"), - div_cns.attr("parentInverseMatrix[0]"), - div_cns) - - blend = blend + bIncrement + intMatrix = aop.gear_intmatrix_op(self.ref_base.attr("worldMatrix"), self.ref_squash.attr("worldMatrix"), blend) + aop.gear_mulmatrix_op(intMatrix.attr("output"), div_cns.attr("parentInverseMatrix[0]"), div_cns) - d = vector.getDistance(self.guide.apos[0], self.guide.apos[1]) - dist_node = node.createDistNode(self.squash_ctl, self.ctl) + blend = blend+bIncrement - rootWorld_node = node.createDecomposeMatrixNode( - self.ctl.attr("worldMatrix")) - - div_node = node.createDivNode(dist_node + ".distance", - rootWorld_node + ".outputScaleY") - - div_node = node.createDivNode(div_node + ".outputX", d) - rev_node = node.createReverseNode(div_node + ".outputX") + d = vec.getDistance(self.guide.apos[0], self.guide.apos[1]) + dist_node = nod.createDistNode(self.squash_ctl, self.ctl) + rootWorld_node = nod.createDecomposeMatrixNode(self.ctl.attr("worldMatrix")) + div_node = nod.createDivNode(dist_node+".distance", rootWorld_node+".outputScaleY") + div_node = nod.createDivNode(div_node+".outputX", d) + rev_node = nod.createReverseNode(div_node+".outputX") add_node = pm.createNode("plusMinusAverage") + add_node.input1D[0].set(1.0) rev_node.outputX >> add_node.input1D[1] @@ -148,10 +129,11 @@ def addOperators(self): add_node.output1D >> self.ref_base.scaleX add_node.output1D >> self.ref_base.scaleZ + # ===================================================== # CONNECTOR # ===================================================== - # Set the relation beetween object from guide to rig.\n + ## Set the relation beetween object from guide to rig.\n # @param self def setRelation(self): self.relatives["root"] = self.ref_base @@ -160,14 +142,13 @@ def setRelation(self): self.controlRelatives["root"] = self.ctl self.controlRelatives["squash"] = self.squash_ctl - for i in range(0, len(self.div_cns) - 1): - self.relatives["%s_loc" % i] = self.div_cns[i + 1] - self.jointRelatives["%s_loc" % i] = i + 1 - self.relatives["%s_loc" % (len(self.div_cns) - 1)] = self.div_cns[-1] - jnt_rel_len = len(self.div_cns) - 1 - self.jointRelatives["%s_loc" % (len(self.div_cns) - 1)] = jnt_rel_len + for i in range(0, len(self.div_cns)-1): + self.relatives["%s_loc"%i] = self.div_cns[i+1] + self.jointRelatives["%s_loc"%i] = i+1 + self.relatives["%s_loc"%(len(self.div_cns)-1)] = self.div_cns[-1] + self.jointRelatives["%s_loc"%(len(self.div_cns)-1)] = len(self.div_cns)-1 - # standard connection definition. + ## standard connection definition. # @param self def connect_standard(self): self.connect_standardWithSimpleIkRef() diff --git a/scripts/mgear/maya/shifter/component/squash_01/guide.py b/scripts/mgear/maya/shifter/component/squash_01/guide.py index c67a2ad..5c2ccc6 100644 --- a/scripts/mgear/maya/shifter/component/squash_01/guide.py +++ b/scripts/mgear/maya/shifter/component/squash_01/guide.py @@ -1,18 +1,53 @@ +# MGEAR is under the terms of the MIT License + +# Copyright (c) 2016 Jeremie Passerin, Miquel Campos + +# Permission is hereby granted, free of charge, to any person obtaining a copy +# of this software and associated documentation files (the "Software"), to deal +# in the Software without restriction, including without limitation the rights +# to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +# copies of the Software, and to permit persons to whom the Software is +# furnished to do so, subject to the following conditions: + +# The above copyright notice and this permission notice shall be included in all +# copies or substantial portions of the Software. + +# THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +# IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +# FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +# AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +# LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +# OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE +# SOFTWARE. + +# Author: Jeremie Passerin geerem@hotmail.com www.jeremiepasserin.com +# Author: Miquel Campos hello@miquel-campos.com www.miquel-campos.com +# Date: 2016 / 10 / 10 + +########################################################## +# GLOBAL +########################################################## from functools import partial -from mgear.maya.shifter.component import guide -from mgear.maya import transform, pyqt + +# mgear +from mgear.maya.shifter.component.guide import ComponentGuide +import mgear.maya.transform as tra import settingsUI as sui -from mgear.vendor.Qt import QtWidgets, QtCore + + +#Pyside from mgear.maya.shifter.component.guide import componentMainSettings +import mgear.maya.pyqt as gqt from maya.app.general.mayaMixin import MayaQWidgetDockableMixin from maya.app.general.mayaMixin import MayaQDockWidget +QtGui, QtCore, QtWidgets, wrapInstance = gqt.qt_import() # guide info AUTHOR = "Miquel Campos" URL = "www.miquel-campos.com" EMAIL = "hello@miquel-campos.com" -VERSION = [1, 0, 0] +VERSION = [1,0,0] TYPE = "squash_01" NAME = "squash" DESCRIPTION = "Linear squash component" @@ -20,9 +55,7 @@ ########################################################## # CLASS ########################################################## - - -class Guide(guide.ComponentGuide): +class Guide(ComponentGuide): compType = TYPE compName = NAME @@ -33,38 +66,42 @@ class Guide(guide.ComponentGuide): email = EMAIL version = VERSION + + # ===================================================== + ## + # @param self def postInit(self): self.save_transform = ["root", "tip"] self.save_blade = ["blade"] + # ===================================================== + ## Add more object to the object definition list. + # @param self def addObjects(self): self.root = self.addRoot() - vTemp = transform.getOffsetPosition(self.root, [2, 0, 0]) + vTemp = tra.getOffsetPosition( self.root, [2,0,0]) self.loc = self.addLoc("tip", self.root, vTemp) self.blade = self.addBlade("blade", self.root, self.loc) centers = [self.root, self.loc] self.dispcrv = self.addDispCurve("crv", centers) + + # ===================================================== - # Add more parameter to the parameter definition list. + ## Add more parameter to the parameter definition list. # @param self def addParameters(self): - self.pRefArray = self.addParam("ikrefarray", "string", "") + self.pRefArray = self.addParam("ikrefarray", "string", "") self.pUseIndex = self.addParam("useIndex", "bool", False) - self.pParentJointIndex = self.addParam("parentJointIndex", - "long", - -1, - None, - None) + self.pParentJointIndex = self.addParam("parentJointIndex", "long", -1, None, None) ########################################################## # Setting Page ########################################################## - class settingsTab(QtWidgets.QDialog, sui.Ui_Form): def __init__(self, parent=None): @@ -74,14 +111,15 @@ def __init__(self, parent=None): class componentSettings(MayaQWidgetDockableMixin, componentMainSettings): - def __init__(self, parent=None): + def __init__(self, parent = None): self.toolName = TYPE # Delete old instances of the componet settings window. - pyqt.deleteInstances(self, MayaQDockWidget) + gqt.deleteInstances(self, MayaQDockWidget) - super(self.__class__, self).__init__(parent=parent) + super(self.__class__, self).__init__(parent = parent) self.settingsTab = settingsTab() + self.setup_componentSettingWindow() self.create_componentControls() self.populate_componentControls() @@ -89,7 +127,7 @@ def __init__(self, parent=None): self.create_componentConnections() def setup_componentSettingWindow(self): - self.mayaMainWindow = pyqt.maya_main_window() + self.mayaMainWindow = gqt.maya_main_window() self.setObjectName(self.toolName) self.setWindowFlags(QtCore.Qt.Window) @@ -100,13 +138,11 @@ def create_componentControls(self): return def populate_componentControls(self): - """Populate the controls values. - - Populate the controls values from the custom attributes of the - component. + """ + Populate the controls values from the custom attributes of the component. """ - # populate tab + #populate tab self.tabs.insertTab(1, self.settingsTab, "Component Settings") refArrayItems = self.root.attr("ikrefarray").get().split(",") @@ -123,14 +159,8 @@ def create_componentLayout(self): def create_componentConnections(self): - self.settingsTab.refArrayAdd_pushButton.clicked.connect( - partial(self.addItem2listWidget, - self.settingsTab.refArray_listWidget, - "ikrefarray")) - self.settingsTab.refArrayRemove_pushButton.clicked.connect( - partial(self.removeSelectedFromListWidget, - self.settingsTab.refArray_listWidget, - "ikrefarray")) + self.settingsTab.refArrayAdd_pushButton.clicked.connect(partial(self.addItem2listWidget, self.settingsTab.refArray_listWidget, "ikrefarray")) + self.settingsTab.refArrayRemove_pushButton.clicked.connect(partial(self.removeSelectedFromListWidget, self.settingsTab.refArray_listWidget, "ikrefarray")) self.settingsTab.refArray_listWidget.installEventFilter(self) def eventFilter(self, sender, event): @@ -142,4 +172,4 @@ def eventFilter(self, sender, event): return QtWidgets.QDialog.eventFilter(self, sender, event) def dockCloseEventTriggered(self): - pyqt.deleteInstances(self, MayaQDockWidget) + gqt.deleteInstances(self, MayaQDockWidget) From b6a453fff738d6f55e162cb36deb72b63f19cc80 Mon Sep 17 00:00:00 2001 From: miquelcampos Date: Mon, 20 Nov 2017 19:07:11 +0900 Subject: [PATCH 067/134] PEP8 #100 : Shifter:Refactoring WIP --- .../mgear/maya/shifter/component/__init__.py | 3 - .../shifter/component/arm_2jnt_01/__init__.py | 557 +++++--- .../shifter/component/arm_2jnt_01/guide.py | 135 +- .../arm_2jnt_freeTangents_01/__init__.py | 1253 ++++++++++++----- .../arm_2jnt_freeTangents_01/guide.py | 243 ++-- .../shifter/component/squash_01/__init__.py | 199 +-- .../maya/shifter/component/squash_01/guide.py | 110 +- scripts/mgear/maya/shifter/gui.py | 2 +- 8 files changed, 1617 insertions(+), 885 deletions(-) diff --git a/scripts/mgear/maya/shifter/component/__init__.py b/scripts/mgear/maya/shifter/component/__init__.py index 45a88a3..0b7c33f 100644 --- a/scripts/mgear/maya/shifter/component/__init__.py +++ b/scripts/mgear/maya/shifter/component/__init__.py @@ -15,9 +15,6 @@ import mgear from mgear.maya import primitive, vector, transform from mgear.maya import attribute, applyop, node, icon -# node and iconShape imported with alias to avoid confusion with variables of the -# same name -# import mgear.maya.iconShape as icon ############################################# # COMPONENT diff --git a/scripts/mgear/maya/shifter/component/arm_2jnt_01/__init__.py b/scripts/mgear/maya/shifter/component/arm_2jnt_01/__init__.py index acb1afb..17e9d1e 100644 --- a/scripts/mgear/maya/shifter/component/arm_2jnt_01/__init__.py +++ b/scripts/mgear/maya/shifter/component/arm_2jnt_01/__init__.py @@ -1,10 +1,9 @@ -# Maya +"""Component Arm 2 joints 01 module""" + import pymel.core as pm from pymel.core import datatypes - -# mgear -from mgear.maya.shifter.component import MainComponent +from mgear.maya.shifter import component from mgear.maya import node, fcurve, applyop, vector from mgear.maya import attribute, transform, primitive @@ -14,12 +13,15 @@ ############################################# -class Component(MainComponent): +class Component(component.Main): + """Shifter component Class""" + # ===================================================== + # OBJECTS + # ===================================================== def addObjects(self): - """ + """Add all the objects needed to create the component.""" - """ self.WIP = self.options["mode"] self.normal = self.getNormalFromPos(self.guide.apos) @@ -39,8 +41,8 @@ def addObjects(self): [self.guide.apos[0], self.guide.apos[2]], self.normal, False, self.WIP) - self.armChainUpvRef[1].setAttr("jointOrientZ", self.armChainUpvRef[ - 1].getAttr("jointOrientZ") * -1) + negateOri = self.armChainUpvRef[1].getAttr("jointOrientZ") * -1 + self.armChainUpvRef[1].setAttr("jointOrientZ", negateOri) # FK Controlers ----------------------------------- t = transform.getTransformLookingAt(self.guide.apos[0], @@ -52,46 +54,67 @@ def addObjects(self): self.getName("fk0_npo"), t) - self.fk0_ctl = self.addCtl(self.fk0_npo, "fk0_ctl", t, self.color_fk, - "cube", w=self.length0, h=self.size * .1, + vec_po = datatypes.Vector(.5 * self.length0 * self.n_factor, 0, 0) + self.fk0_ctl = self.addCtl(self.fk0_npo, + "fk0_ctl", + t, + self.color_fk, + "cube", + w=self.length0, + h=self.size * .1, d=self.size * .1, - po=datatypes.Vector(.5 * self.length0 * - self.n_factor, 0, 0), + po=vec_po, tp=self.parentCtlTag) attribute.setKeyableAttributes( - self.fk0_ctl, ["tx", "ty", "tz", "ro", "rx", "ry", "rz", "sx"]) + self.fk0_ctl, + ["tx", "ty", "tz", "ro", "rx", "ry", "rz", "sx"]) t = transform.getTransformLookingAt(self.guide.apos[1], self.guide.apos[2], - self.normal, "xz", self.negate) + self.normal, + "xz", + self.negate) self.fk1_npo = primitive.addTransform(self.fk0_ctl, - self.getName("fk1_npo"), t) - - self.fk1_ctl = self.addCtl(self.fk1_npo, "fk1_ctl", t, self.color_fk, - "cube", w=self.length1, h=self.size * .1, + self.getName("fk1_npo"), + t) + vec_po = datatypes.Vector(.5 * self.length1 * self.n_factor, 0, 0) + self.fk1_ctl = self.addCtl(self.fk1_npo, + "fk1_ctl", + t, + self.color_fk, + "cube", + w=self.length1, + h=self.size * .1, d=self.size * .1, - po=datatypes.Vector(.5 * self.length1 * - self.n_factor, 0, 0), + po=vec_po, tp=self.fk0_ctl) attribute.setKeyableAttributes( - self.fk1_ctl, ["tx", "ty", "tz", "ro", "rx", "ry", "rz", "sx"]) + self.fk1_ctl, + ["tx", "ty", "tz", "ro", "rx", "ry", "rz", "sx"]) t = transform.getTransformLookingAt(self.guide.apos[2], self.guide.apos[3], - self.normal, "xz", self.negate) + self.normal, + "xz", + self.negate) self.fk2_npo = primitive.addTransform(self.fk1_ctl, self.getName("fk2_npo"), t) - self.fk2_ctl = self.addCtl(self.fk2_npo, "fk2_ctl", t, self.color_fk, - "cube", w=self.length2, h=self.size * .1, + vec_po = datatypes.Vector(.5 * self.length2 * self.n_factor, 0, 0) + self.fk2_ctl = self.addCtl(self.fk2_npo, + "fk2_ctl", + t, + self.color_fk, + "cube", + w=self.length2, + h=self.size * .1, d=self.size * .1, - po=datatypes.Vector(.5 * self.length2 * - self.n_factor, 0, 0), + po=vec_po, tp=self.fk1_ctl) attribute.setKeyableAttributes(self.fk2_ctl) @@ -106,25 +129,39 @@ def addObjects(self): self.ik_cns = primitive.addTransformFromPos( self.root, self.getName("ik_cns"), self.guide.pos["wrist"]) - self.ikcns_ctl = self.addCtl( - self.ik_cns, "ikcns_ctl", - transform.getTransformFromPos(self.guide.pos["wrist"]), - self.color_ik, "null", w=self.size * .12, tp=self.parentCtlTag) + t = transform.getTransformFromPos(self.guide.pos["wrist"]) + self.ikcns_ctl = self.addCtl(self.ik_cns, + "ikcns_ctl", + t, + self.color_ik, + "null", + w=self.size * .12, + tp=self.parentCtlTag) attribute.setInvertMirror(self.ikcns_ctl, ["tx", "ty", "tz"]) if self.negate: m = transform.getTransformLookingAt(self.guide.pos["wrist"], self.guide.pos["eff"], - self.normal, "x-y", True) + self.normal, + "x-y", + True) else: m = transform.getTransformLookingAt(self.guide.pos["wrist"], self.guide.pos["eff"], - self.normal, "xy", False) - - self.ik_ctl = self.addCtl(self.ikcns_ctl, "ik_ctl", m, self.color_ik, - "cube", w=self.size * .12, h=self.size * .12, - d=self.size * .12, tp=self.ikcns_ctl) + self.normal, + "xy", + False) + + self.ik_ctl = self.addCtl(self.ikcns_ctl, + "ik_ctl", + m, + self.color_ik, + "cube", + w=self.size * .12, + h=self.size * .12, + d=self.size * .12, + tp=self.ikcns_ctl) if self.settings["mirrorIK"]: if self.negate: @@ -133,8 +170,9 @@ def addObjects(self): else: attribute.setInvertMirror(self.ik_ctl, ["tx", "ry", "rz"]) attribute.setKeyableAttributes(self.ik_ctl) - self.ik_ctl_ref = primitive.addTransform( - self.ik_ctl, self.getName("ikCtl_ref"), m) + self.ik_ctl_ref = primitive.addTransform(self.ik_ctl, + self.getName("ikCtl_ref"), + m) # upv v = self.guide.apos[2] - self.guide.apos[0] @@ -143,12 +181,16 @@ def addObjects(self): v *= self.size * .5 v += self.guide.apos[1] - self.upv_cns = primitive.addTransformFromPos( - self.root, self.getName("upv_cns"), v) + self.upv_cns = primitive.addTransformFromPos(self.root, + self.getName("upv_cns"), + v) - self.upv_ctl = self.addCtl(self.upv_cns, "upv_ctl", + self.upv_ctl = self.addCtl(self.upv_cns, + "upv_ctl", transform.getTransform(self.upv_cns), - self.color_ik, "diamond", w=self.size * .12, + self.color_ik, + "diamond", + w=self.size * .12, tp=self.parentCtlTag) if self.settings["mirrorMid"]: @@ -161,13 +203,19 @@ def addObjects(self): # IK rotation controls if self.settings["ikTR"]: - self.ikRot_npo = primitive.addTransform( - self.root, self.getName("ikRot_npo"), m) - self.ikRot_cns = primitive.addTransform( - self.ikRot_npo, self.getName("ikRot_cns"), m) - self.ikRot_ctl = self.addCtl(self.ikRot_cns, "ikRot_ctl", m, - self.color_ik, "sphere", - w=self.size * .12, tp=self.ik_ctl) + self.ikRot_npo = primitive.addTransform(self.root, + self.getName("ikRot_npo"), + m) + self.ikRot_cns = primitive.addTransform(self.ikRot_npo, + self.getName("ikRot_cns"), + m) + self.ikRot_ctl = self.addCtl(self.ikRot_cns, + "ikRot_ctl", + m, + self.color_ik, + "sphere", + w=self.size * .12, + tp=self.ik_ctl) attribute.setKeyableAttributes(self.ikRot_ctl, self.r_params) @@ -175,53 +223,71 @@ def addObjects(self): # Calculate again the transfor for the IK ref. This way align with FK trnIK_ref = transform.getTransformLookingAt(self.guide.pos["wrist"], self.guide.pos["eff"], - self.normal, "xz", + self.normal, + "xz", self.negate) - self.ik_ref = primitive.addTransform( - self.ik_ctl_ref, self.getName("ik_ref"), trnIK_ref) - self.fk_ref = primitive.addTransform( - self.fk_ctl[2], self.getName("fk_ref"), trnIK_ref) + self.ik_ref = primitive.addTransform(self.ik_ctl_ref, + self.getName("ik_ref"), + trnIK_ref) + self.fk_ref = primitive.addTransform(self.fk_ctl[2], + self.getName("fk_ref"), + trnIK_ref) # Chain -------------------------------------------- # The outputs of the ikfk2bone solver - self.bone0 = primitive.addLocator(self.root, self.getName( - "0_bone"), transform.getTransform(self.fk_ctl[0])) + self.bone0 = primitive.addLocator( + self.root, + self.getName("0_bone"), + transform.getTransform(self.fk_ctl[0])) self.bone0_shp = self.bone0.getShape() self.bone0_shp.setAttr("localPositionX", self.n_factor * .5) self.bone0_shp.setAttr("localScale", .5, 0, 0) self.bone0.setAttr("sx", self.length0) self.bone0.setAttr("visibility", False) - self.bone1 = primitive.addLocator(self.root, self.getName( - "1_bone"), transform.getTransform(self.fk_ctl[1])) + self.bone1 = primitive.addLocator( + self.root, + self.getName("1_bone"), + transform.getTransform(self.fk_ctl[1])) self.bone1_shp = self.bone1.getShape() self.bone1_shp.setAttr("localPositionX", self.n_factor * .5) self.bone1_shp.setAttr("localScale", .5, 0, 0) self.bone1.setAttr("sx", self.length1) self.bone1.setAttr("visibility", False) - self.ctrn_loc = primitive.addTransformFromPos( - self.root, self.getName("ctrn_loc"), self.guide.apos[1]) - self.eff_loc = primitive.addTransformFromPos( - self.root, self.getName("eff_loc"), self.guide.apos[2]) + self.ctrn_loc = primitive.addTransformFromPos(self.root, + self.getName("ctrn_loc"), + self.guide.apos[1]) + self.eff_loc = primitive.addTransformFromPos(self.root, + self.getName("eff_loc"), + self.guide.apos[2]) # Mid Controler ------------------------------------ t = transform.getTransform(self.ctrn_loc) - self.mid_cns = primitive.addTransform( - self.ctrn_loc, self.getName("mid_cns"), t) + self.mid_cns = primitive.addTransform(self.ctrn_loc, + self.getName("mid_cns"), + t) - self.mid_ctl = self.addCtl(self.mid_cns, "mid_ctl", t, self.color_ik, - "sphere", w=self.size * .2, + self.mid_ctl = self.addCtl(self.mid_cns, + "mid_ctl", + t, + self.color_ik, + "sphere", + w=self.size * .2, tp=self.parentCtlTag) if self.settings["mirrorMid"]: if self.negate: self.mid_cns.rz.set(180) self.mid_cns.sz.set(-1) self.mid_ctl_twst_npo = primitive.addTransform( - self.mid_ctl, self.getName("mid_twst_npo"), t) + self.mid_ctl, + self.getName("mid_twst_npo"), + t) self.mid_ctl_twst_ref = primitive.addTransform( - self.mid_ctl_twst_npo, self.getName("mid_twst_ref"), t) + self.mid_ctl_twst_npo, + self.getName("mid_twst_ref"), + t) else: self.mid_ctl_twst_ref = self.mid_ctl attribute.setInvertMirror(self.mid_ctl, ["tx", "ty", "tz"]) @@ -232,24 +298,40 @@ def addObjects(self): for x in self.rollRef: x.setAttr("visibility", False) - self.tws0_loc = primitive.addTransform(self.rollRef[0], self.getName( - "tws0_loc"), transform.getTransform(self.fk_ctl[0])) - self.tws0_rot = primitive.addTransform(self.tws0_loc, self.getName( - "tws0_rot"), transform.getTransform(self.fk_ctl[0])) - - self.tws1_npo = primitive.addTransform(self.ctrn_loc, self.getName( - "tws1_npo"), transform.getTransform(self.ctrn_loc)) - self.tws1_loc = primitive.addTransform(self.tws1_npo, self.getName( - "tws1_loc"), transform.getTransform(self.ctrn_loc)) - self.tws1_rot = primitive.addTransform(self.tws1_loc, self.getName( - "tws1_rot"), transform.getTransform(self.ctrn_loc)) - - self.tws2_npo = primitive.addTransform(self.root, self.getName( - "tws2_npo"), transform.getTransform(self.fk_ctl[2])) - self.tws2_loc = primitive.addTransform(self.tws2_npo, self.getName( - "tws2_loc"), transform.getTransform(self.fk_ctl[2])) - self.tws2_rot = primitive.addTransform(self.tws2_loc, self.getName( - "tws2_rot"), transform.getTransform(self.fk_ctl[2])) + self.tws0_loc = primitive.addTransform( + self.rollRef[0], + self.getName("tws0_loc"), + transform.getTransform(self.fk_ctl[0])) + self.tws0_rot = primitive.addTransform( + self.tws0_loc, + self.getName("tws0_rot"), + transform.getTransform(self.fk_ctl[0])) + + self.tws1_npo = primitive.addTransform( + self.ctrn_loc, + self.getName("tws1_npo"), + transform.getTransform(self.ctrn_loc)) + self.tws1_loc = primitive.addTransform( + self.tws1_npo, + self.getName("tws1_loc"), + transform.getTransform(self.ctrn_loc)) + self.tws1_rot = primitive.addTransform( + self.tws1_loc, + self.getName("tws1_rot"), + transform.getTransform(self.ctrn_loc)) + + self.tws2_npo = primitive.addTransform( + self.root, + self.getName("tws2_npo"), + transform.getTransform(self.fk_ctl[2])) + self.tws2_loc = primitive.addTransform( + self.tws2_npo, + self.getName("tws2_loc"), + transform.getTransform(self.fk_ctl[2])) + self.tws2_rot = primitive.addTransform( + self.tws2_loc, + self.getName("tws2_rot"), + transform.getTransform(self.fk_ctl[2])) # Divisions ---------------------------------------- # We have at least one division at the start, the end and one for the @@ -259,8 +341,8 @@ def addObjects(self): self.div_cns = [] for i in range(self.divisions): - div_cns = primitive.addTransform( - self.root, self.getName("div%s_loc" % i)) + div_cns = primitive.addTransform(self.root, + self.getName("div%s_loc" % i)) self.div_cns.append(div_cns) self.jnt_pos.append([div_cns, i]) @@ -269,124 +351,214 @@ def addObjects(self): # To help the deformation on the wrist self.jnt_pos.append([self.eff_loc, 'end']) # match IK FK references - self.match_fk0_off = primitive.addTransform(self.root, self.getName( - "matchFk0_npo"), transform.getTransform(self.fk_ctl[1])) + self.match_fk0_off = primitive.addTransform( + self.root, + self.getName("matchFk0_npo"), + transform.getTransform(self.fk_ctl[1])) self.match_fk0 = primitive.addTransform( - self.match_fk0_off, self.getName( - "fk0_mth"), transform.getTransform(self.fk_ctl[0])) + self.match_fk0_off, + self.getName("fk0_mth"), + transform.getTransform(self.fk_ctl[0])) self.match_fk1_off = primitive.addTransform( self.root, self.getName( "matchFk1_npo"), transform.getTransform(self.fk_ctl[2])) self.match_fk1 = primitive.addTransform( - self.match_fk1_off, self.getName( - "fk1_mth"), transform.getTransform(self.fk_ctl[1])) + self.match_fk1_off, + self.getName("fk1_mth"), + transform.getTransform(self.fk_ctl[1])) if self.settings["ikTR"]: reference = self.ikRot_ctl self.match_ikRot = primitive.addTransform( - self.fk2_ctl, self.getName( - "ikRot_mth"), transform.getTransform(self.ikRot_ctl)) + self.fk2_ctl, + self.getName("ikRot_mth"), + transform.getTransform(self.ikRot_ctl)) else: reference = self.ik_ctl - self.match_fk2 = primitive.addTransform(reference, self.getName( - "fk2_mth"), transform.getTransform(self.fk_ctl[2])) + self.match_fk2 = primitive.addTransform( + reference, + self.getName("fk2_mth"), + transform.getTransform(self.fk_ctl[2])) - self.match_ik = primitive.addTransform(self.fk2_ctl, self.getName( - "ik_mth"), transform.getTransform(self.ik_ctl)) - self.match_ikUpv = primitive.addTransform(self.fk0_ctl, self.getName( - "upv_mth"), transform.getTransform(self.upv_ctl)) + self.match_ik = primitive.addTransform( + self.fk2_ctl, + self.getName("ik_mth"), + transform.getTransform(self.ik_ctl)) + self.match_ikUpv = primitive.addTransform( + self.fk0_ctl, + self.getName("upv_mth"), + transform.getTransform(self.upv_ctl)) + # ===================================================== + # ATTRIBUTES + # ===================================================== def addAttributes(self): + """Create the anim and setupr rig attributes for the component""" # Anim ------------------------------------------- - self.blend_att = self.addAnimParam( - "blend", "Fk/Ik Blend", "double", self.settings["blend"], 0, 1) - self.roll_att = self.addAnimParam( - "roll", "Roll", "double", 0, -180, 180) - self.armpit_roll_att = self.addAnimParam( - "aproll", "Armpit Roll", "double", 0, -360, 360) - - self.scale_att = self.addAnimParam( - "ikscale", "Scale", "double", 1, .001, 99) - self.maxstretch_att = self.addAnimParam( - "maxstretch", "Max Stretch", "double", - self.settings["maxstretch"], 1, 99) - self.slide_att = self.addAnimParam( - "slide", "Slide", "double", .5, 0, 1) - self.softness_att = self.addAnimParam( - "softness", "Softness", "double", 0, 0, 1) - self.reverse_att = self.addAnimParam( - "reverse", "Reverse", "double", 0, 0, 1) - self.roundness_att = self.addAnimParam( - "roundness", "Roundness", "double", 0, 0, self.size) - self.volume_att = self.addAnimParam( - "volume", "Volume", "double", 1, 0, 1) + self.blend_att = self.addAnimParam("blend", + "Fk/Ik Blend", + "double", + self.settings["blend"], + 0, + 1) + self.roll_att = self.addAnimParam("roll", + "Roll", + "double", + 0, + -180, + 180) + self.armpit_roll_att = self.addAnimParam("aproll", + "Armpit Roll", + "double", + 0, + -360, + 360) + + self.scale_att = self.addAnimParam("ikscale", + "Scale", + "double", + 1, + .001, + 99) + self.maxstretch_att = self.addAnimParam("maxstretch", + "Max Stretch", + "double", + self.settings["maxstretch"], + 1, + 99) + self.slide_att = self.addAnimParam("slide", + "Slide", + "double", + .5, + 0, + 1) + self.softness_att = self.addAnimParam("softness", + "Softness", + "double", + 0, + 0, + 1) + self.reverse_att = self.addAnimParam("reverse", + "Reverse", + "double", + 0, + 0, + 1) + self.roundness_att = self.addAnimParam("roundness", + "Roundness", + "double", + 0, + 0, + self.size) + self.volume_att = self.addAnimParam("volume", + "Volume", + "double", + 1, + 0, + 1) # Ref if self.settings["ikrefarray"]: ref_names = self.settings["ikrefarray"].split(",") if len(ref_names) > 1: self.ikref_att = self.addAnimEnumParam( - "ikref", "Ik Ref", 0, + "ikref", + "Ik Ref", + 0, self.settings["ikrefarray"].split(",")) if self.settings["ikTR"]: ref_names = ["Auto", "ik_ctl"] if self.settings["ikrefarray"]: ref_names = ref_names + self.settings["ikrefarray"].split(",") - self.ikRotRef_att = self.addAnimEnumParam( - "ikRotRef", "Ik Rot Ref", 0, ref_names) + self.ikRotRef_att = self.addAnimEnumParam("ikRotRef", + "Ik Rot Ref", + 0, + ref_names) if self.settings["upvrefarray"]: ref_names = self.settings["upvrefarray"].split(",") ref_names = ["Auto"] + ref_names if len(ref_names) > 1: - self.upvref_att = self.addAnimEnumParam( - "upvref", "UpV Ref", 0, ref_names) + self.upvref_att = self.addAnimEnumParam("upvref", + "UpV Ref", + 0, ref_names) if self.settings["pinrefarray"]: ref_names = self.settings["pinrefarray"].split(",") ref_names = ["Auto"] + ref_names if len(ref_names) > 1: - self.pin_att = self.addAnimEnumParam( - "elbowref", "Elbow Ref", 0, ref_names) + self.pin_att = self.addAnimEnumParam("elbowref", + "Elbow Ref", + 0, + ref_names) if self.validProxyChannels: - attribute.addProxyAttribute([self.blend_att, self.roundness_att], - [self.fk0_ctl, self.fk1_ctl, - self.fk2_ctl, self.ik_ctl, - self.upv_ctl]) attribute.addProxyAttribute( - self.roll_att, [self.ik_ctl, self.upv_ctl]) + [self.blend_att, self.roundness_att], + [self.fk0_ctl, + self.fk1_ctl, + self.fk2_ctl, + self.ik_ctl, + self.upv_ctl]) + attribute.addProxyAttribute(self.roll_att, + [self.ik_ctl, self.upv_ctl]) # Setup ------------------------------------------ # Eval Fcurve - self.st_value = fcurve.getFCurveValues( - self.settings["st_profile"], self.divisions) - self.sq_value = fcurve.getFCurveValues( - self.settings["sq_profile"], self.divisions) - - self.st_att = [self.addSetupParam("stretch_%s" % i, "Stretch %s" % i, - "double", self.st_value[i], -1, 0) + self.st_value = fcurve.getFCurveValues(self.settings["st_profile"], + self.divisions) + self.sq_value = fcurve.getFCurveValues(self.settings["sq_profile"], + self.divisions) + + self.st_att = [self.addSetupParam("stretch_%s" % i, + "Stretch %s" % i, + "double", self.st_value[i], + -1, + 0) for i in range(self.divisions)] - self.sq_att = [self.addSetupParam("squash_%s" % i, "Squash %s" % i, - "double", self.sq_value[i], 0, 1) + self.sq_att = [self.addSetupParam("squash_%s" % i, + "Squash %s" % i, + "double", + self.sq_value[i], + 0, + 1) for i in range(self.divisions)] - self.resample_att = self.addSetupParam( - "resample", "Resample", "bool", True) - self.absolute_att = self.addSetupParam( - "absolute", "Absolute", "bool", False) + self.resample_att = self.addSetupParam("resample", + "Resample", + "bool", + True) + self.absolute_att = self.addSetupParam("absolute", + "Absolute", + "bool", + False) + # ===================================================== + # OPERATORS + # ===================================================== def addOperators(self): + """Create operators and set the relations for the component rig + + Apply operators, constraints, expressions to the hierarchy. + In order to keep the code clean and easier to debug, + we shouldn't create any new object in this method. - # 1 bone chain Upv ref ================================================ - self.ikHandleUpvRef = primitive.addIkHandle(self.root, self.getName( - "ikHandleLegChainUpvRef"), self.armChainUpvRef, "ikSCsolver") - pm.pointConstraint(self.ik_ctl, self.ikHandleUpvRef) - pm.parentConstraint(self.armChainUpvRef[0], self.upv_cns, mo=True) + """ + # 1 bone chain Upv ref ============================================== + self.ikHandleUpvRef = primitive.addIkHandle( + self.root, + self.getName("ikHandleLegChainUpvRef"), + self.armChainUpvRef, + "ikSCsolver") + pm.pointConstraint(self.ik_ctl, + self.ikHandleUpvRef) + pm.parentConstraint(self.armChainUpvRef[0], + self.upv_cns, + mo=True) # Visibilities ------------------------------------- # fk @@ -414,44 +586,51 @@ def addOperators(self): attribute.setRotOrder(self.fk0_ctl, "XZY") attribute.setRotOrder(self.fk1_ctl, "XYZ") attribute.setRotOrder(self.fk2_ctl, "YZX") - # attribute.setRotOrder(self.ik_ctl, "ZYX") attribute.setRotOrder(self.ik_ctl, "XYZ") # IK Solver ----------------------------------------- out = [self.bone0, self.bone1, self.ctrn_loc, self.eff_loc] - o_node = applyop.gear_ikfk2bone_op(out, self.root, self.ik_ref, - self.upv_ctl, self.fk_ctl[0], - self.fk_ctl[1], self.fk_ref, - self.length0, self.length1, + o_node = applyop.gear_ikfk2bone_op(out, + self.root, + self.ik_ref, + self.upv_ctl, + self.fk_ctl[0], + self.fk_ctl[1], + self.fk_ref, + self.length0, + self.length1, self.negate) if self.settings["ikTR"]: # connect the control inputs outEff_dm = o_node.listConnections(c=True)[-1][1] - outEff_dm.attr("outputTranslate") >> self.ikRot_npo.attr( - "translate") + inAttr = self.ikRot_npo.attr("translate") + outEff_dm.attr("outputTranslate") >> inAttr + outEff_dm.attr("outputScale") >> self.ikRot_npo.attr("scale") dm_node = node.createDecomposeMatrixNode(o_node.attr("outB")) dm_node.attr("outputRotate") >> self.ikRot_npo.attr("rotate") # rotation - - mulM_node = applyop.gear_mulmatrix_op(self.ikRot_ctl.attr( - "worldMatrix"), self.eff_loc.attr("parentInverseMatrix")) - intM_node = applyop.gear_intmatrix_op( - o_node.attr("outEff"), mulM_node.attr("output"), - o_node.attr("blend")) + mulM_node = applyop.gear_mulmatrix_op( + self.ikRot_ctl.attr("worldMatrix"), + self.eff_loc.attr("parentInverseMatrix")) + intM_node = applyop.gear_intmatrix_op(o_node.attr("outEff"), + mulM_node.attr("output"), + o_node.attr("blend")) dm_node = node.createDecomposeMatrixNode(intM_node.attr("output")) dm_node.attr("outputRotate") >> self.eff_loc.attr("rotate") transform.matchWorldTransform(self.fk2_ctl, self.ikRot_cns) # scale: this fix the scalin popping issue - intM_node = applyop.gear_intmatrix_op(self.fk2_ctl.attr( - "worldMatrix"), self.ik_ctl_ref.attr("worldMatrix"), + intM_node = applyop.gear_intmatrix_op( + self.fk2_ctl.attr("worldMatrix"), + self.ik_ctl_ref.attr("worldMatrix"), o_node.attr("blend")) - mulM_node = applyop.gear_mulmatrix_op(intM_node.attr( - "output"), self.eff_loc.attr("parentInverseMatrix")) + mulM_node = applyop.gear_mulmatrix_op( + intM_node.attr("output"), + self.eff_loc.attr("parentInverseMatrix")) dm_node = node.createDecomposeMatrixNode(mulM_node.attr("output")) dm_node.attr("outputScale") >> self.eff_loc.attr("scale") @@ -488,8 +667,9 @@ def addOperators(self): pm.connectAttr(o_node + ".output", dm_node + ".inputMatrix") pm.connectAttr(dm_node + ".outputRotate", self.tws2_npo.attr("rotate")) - o_node = applyop.gear_mulmatrix_op(self.eff_loc.attr( - "worldMatrix"), self.tws2_rot.attr("parentInverseMatrix")) + o_node = applyop.gear_mulmatrix_op( + self.eff_loc.attr("worldMatrix"), + self.tws2_rot.attr("parentInverseMatrix")) dm_node = pm.createNode("decomposeMatrix") pm.connectAttr(o_node + ".output", dm_node + ".inputMatrix") attribute.setRotOrder(self.tws2_rot, "XYZ") @@ -510,16 +690,16 @@ def addOperators(self): # Volume ------------------------------------------- distA_node = node.createDistNode(self.tws0_loc, self.tws1_loc) distB_node = node.createDistNode(self.tws1_loc, self.tws2_loc) - add_node = node.createAddNode( - distA_node + ".distance", distB_node + ".distance") - div_node = node.createDivNode( - add_node + ".output", self.root.attr("sx")) + add_node = node.createAddNode(distA_node + ".distance", + distB_node + ".distance") + div_node = node.createDivNode(add_node + ".output", + self.root.attr("sx")) dm_node = pm.createNode("decomposeMatrix") pm.connectAttr(self.root.attr("worldMatrix"), dm_node + ".inputMatrix") - div_node2 = node.createDivNode( - div_node + ".outputX", dm_node + ".outputScaleX") + div_node2 = node.createDivNode(div_node + ".outputX", + dm_node + ".outputScaleX") self.volDriver_att = div_node2 + ".outputX" # Divisions ---------------------------------------- @@ -576,10 +756,9 @@ def addOperators(self): # ===================================================== # CONNECTOR # ===================================================== - # Set the relation beetween object from guide to rig.\n - # @param self - # TODO: replace bone0 and control objects by loc connections def setRelation(self): + """Set the relation beetween object from guide to rig""" + self.relatives["root"] = self.div_cns[0] self.relatives["elbow"] = self.div_cns[self.settings["div0"] + 2] self.relatives["wrist"] = self.div_cns[-1] @@ -595,14 +774,13 @@ def setRelation(self): self.controlRelatives["wrist"] = self.fk2_ctl self.controlRelatives["eff"] = self.fk2_ctl - # Add more connection definition to the set. - # @param self def addConnection(self): + """Add more connection definition to the set""" + self.connections["shoulder_01"] = self.connect_shoulder_01 - # standard connection definition. - # @param self def connect_standard(self): + """standard connection definition for the component""" if self.settings["ikTR"]: self.parent.addChild(self.root) @@ -613,7 +791,9 @@ def connect_standard(self): ikRotRefArray = "Auto,ik_ctl," + self.settings["ikrefarray"] else: ikRotRefArray = "Auto,ik_ctl" - self.connectRef2(ikRotRefArray, self.ikRot_cns, self.ikRotRef_att, + self.connectRef2(ikRotRefArray, + self.ikRot_cns, + self.ikRotRef_att, [self.ikRot_npo, self.ik_ctl], True) else: self.connect_standardWithIkRef() @@ -624,5 +804,6 @@ def connect_standard(self): self.pin_att, [self.ctrn_loc], False) def connect_shoulder_01(self): + """ Custom connection to be use with shoulder 01 component""" self.connect_standard() pm.parent(self.rollRef[0], self.parent_comp.ctl) diff --git a/scripts/mgear/maya/shifter/component/arm_2jnt_01/guide.py b/scripts/mgear/maya/shifter/component/arm_2jnt_01/guide.py index 7070ae9..744dc36 100644 --- a/scripts/mgear/maya/shifter/component/arm_2jnt_01/guide.py +++ b/scripts/mgear/maya/shifter/component/arm_2jnt_01/guide.py @@ -1,18 +1,16 @@ +"""Guide Arm 2 joints 01 module""" + from functools import partial import pymel.core as pm -# mgear -from mgear.maya.shifter.component.guide import ComponentGuide -import mgear.maya.transform as tra +from mgear.maya.shifter.component import guide +from mgear.maya import transform, pyqt +from mgear.vendor.Qt import QtWidgets, QtCore -# Pyside -from mgear.maya.shifter.component.guide import componentMainSettings -import mgear.maya.pyqt as gqt from maya.app.general.mayaMixin import MayaQWidgetDockableMixin from maya.app.general.mayaMixin import MayaQDockWidget + import settingsUI as sui -# QtGui, QtCore, QtWidgets, wrapInstance = gqt.qt_import() -from mgear.vendor.Qt import QtWidgets, QtCore # guide info AUTHOR = "Jeremie Passerin, Miquel Campos" @@ -28,7 +26,8 @@ ########################################################## -class Guide(ComponentGuide): +class Guide(guide.ComponentGuide): + """Component Guide Class""" compType = TYPE compName = NAME @@ -41,33 +40,28 @@ class Guide(ComponentGuide): connectors = ["shoulder_01"] - # ===================================================== - ## - # @param self def postInit(self): + """Initialize the position for the guide""" + self.save_transform = ["root", "elbow", "wrist", "eff"] - # ===================================================== - # Add more object to the object definition list. - # @param self def addObjects(self): + """Add the Guide Root, blade and locators""" self.root = self.addRoot() - vTemp = tra.getOffsetPosition(self.root, [3, 0, -.01]) + vTemp = transform.getOffsetPosition(self.root, [3, 0, -.01]) self.elbow = self.addLoc("elbow", self.root, vTemp) - vTemp = tra.getOffsetPosition(self.root, [6, 0, 0]) + vTemp = transform.getOffsetPosition(self.root, [6, 0, 0]) self.wrist = self.addLoc("wrist", self.elbow, vTemp) - vTemp = tra.getOffsetPosition(self.root, [7, 0, 0]) + vTemp = transform.getOffsetPosition(self.root, [7, 0, 0]) self.eff = self.addLoc("eff", self.wrist, vTemp) self.dispcrv = self.addDispCurve( "crv", [self.root, self.elbow, self.wrist, self.eff]) - # ===================================================== - # Add more parameter to the parameter definition list. - # @param self def addParameters(self): + """Add the configurations settings""" # Default Values self.pBlend = self.addParam("blend", "double", 1, 0, 1) @@ -84,14 +78,17 @@ def addParameters(self): self.pDiv1 = self.addParam("div1", "long", 2, 1, None) # FCurves - self.pSt_profile = self.addFCurveParam( - "st_profile", [[0, 0], [.5, -.5], [1, 0]]) - self.pSq_profile = self.addFCurveParam( - "sq_profile", [[0, 0], [.5, .5], [1, 0]]) + self.pSt_profile = self.addFCurveParam("st_profile", + [[0, 0], [.5, -.5], [1, 0]]) + self.pSq_profile = self.addFCurveParam("sq_profile", + [[0, 0], [.5, .5], [1, 0]]) self.pUseIndex = self.addParam("useIndex", "bool", False) - self.pParentJointIndex = self.addParam( - "parentJointIndex", "long", -1, None, None) + self.pParentJointIndex = self.addParam("parentJointIndex", + "long", + -1, + None, + None) ########################################################## @@ -99,18 +96,20 @@ def addParameters(self): ########################################################## class settingsTab(QtWidgets.QDialog, sui.Ui_Form): + """The Component settings UI""" def __init__(self, parent=None): super(settingsTab, self).__init__(parent) self.setupUi(self) -class componentSettings(MayaQWidgetDockableMixin, componentMainSettings): +class componentSettings(MayaQWidgetDockableMixin, guide.componentMainSettings): + """Create the component setting window""" def __init__(self, parent=None): self.toolName = TYPE # Delete old instances of the componet settings window. - gqt.deleteInstances(self, MayaQDockWidget) + pyqt.deleteInstances(self, MayaQDockWidget) super(self.__class__, self).__init__(parent=parent) self.settingsTab = settingsTab() @@ -122,7 +121,7 @@ def __init__(self, parent=None): self.create_componentConnections() def setup_componentSettingWindow(self): - self.mayaMainWindow = gqt.maya_main_window() + self.mayaMainWindow = pyqt.maya_main_window() self.setObjectName(self.toolName) self.setWindowFlags(QtCore.Qt.Window) @@ -155,11 +154,14 @@ def populate_componentControls(self): self.settingsTab.div0_spinBox.setValue(self.root.attr("div0").get()) self.settingsTab.div1_spinBox.setValue(self.root.attr("div1").get()) ikRefArrayItems = self.root.attr("ikrefarray").get().split(",") + for item in ikRefArrayItems: self.settingsTab.ikRefArray_listWidget.addItem(item) + upvRefArrayItems = self.root.attr("upvrefarray").get().split(",") for item in upvRefArrayItems: self.settingsTab.upvRefArray_listWidget.addItem(item) + pinRefArrayItems = self.root.attr("pinrefarray").get().split(",") for item in pinRefArrayItems: self.settingsTab.pinRefArray_listWidget.addItem(item) @@ -170,6 +172,7 @@ def populate_componentControls(self): self.c_box.addItem(cnx) self.connector_items = [self.c_box.itemText(i) for i in range(self.c_box.count())] + currentConnector = self.root.attr("connector").get() if currentConnector not in self.connector_items: self.c_box.addItem(currentConnector) @@ -218,52 +221,60 @@ def create_componentConnections(self): self.settingsTab.mirrorIK_checkBox.stateChanged.connect( partial(self.updateCheck, - self.settingsTab.mirrorIK_checkBox, "mirrorIK")) + self.settingsTab.mirrorIK_checkBox, + "mirrorIK")) - self.settingsTab.ikRefArrayAdd_pushButton.clicked.connect(partial( - self.addItem2listWidget, - self.settingsTab.ikRefArray_listWidget, "ikrefarray")) + self.settingsTab.ikRefArrayAdd_pushButton.clicked.connect( + partial(self.addItem2listWidget, + self.settingsTab.ikRefArray_listWidget, + "ikrefarray")) - self.settingsTab.ikRefArrayRemove_pushButton.clicked.connect(partial( - self.removeSelectedFromListWidget, - self.settingsTab.ikRefArray_listWidget, "ikrefarray")) + self.settingsTab.ikRefArrayRemove_pushButton.clicked.connect( + partial(self.removeSelectedFromListWidget, + self.settingsTab.ikRefArray_listWidget, + "ikrefarray")) - self.settingsTab.ikRefArray_copyRef_pushButton.clicked.connect(partial( - self.copyFromListWidget, - self.settingsTab.upvRefArray_listWidget, - self.settingsTab.ikRefArray_listWidget, "ikrefarray")) + self.settingsTab.ikRefArray_copyRef_pushButton.clicked.connect( + partial(self.copyFromListWidget, + self.settingsTab.upvRefArray_listWidget, + self.settingsTab.ikRefArray_listWidget, + "ikrefarray")) self.settingsTab.ikRefArray_listWidget.installEventFilter(self) - self.settingsTab.upvRefArrayAdd_pushButton.clicked.connect(partial( - self.addItem2listWidget, - self.settingsTab.upvRefArray_listWidget, "upvrefarray")) + self.settingsTab.upvRefArrayAdd_pushButton.clicked.connect( + partial(self.addItem2listWidget, + self.settingsTab.upvRefArray_listWidget, + "upvrefarray")) - self.settingsTab.upvRefArrayRemove_pushButton.clicked.connect(partial( - self.removeSelectedFromListWidget, - self.settingsTab.upvRefArray_listWidget, "upvrefarray")) + self.settingsTab.upvRefArrayRemove_pushButton.clicked.connect( + partial(self.removeSelectedFromListWidget, + self.settingsTab.upvRefArray_listWidget, + "upvrefarray")) self.settingsTab.upvRefArray_copyRef_pushButton.clicked.connect( - partial( - self.copyFromListWidget, - self.settingsTab.ikRefArray_listWidget, - self.settingsTab.upvRefArray_listWidget, "upvrefarray")) + partial(self.copyFromListWidget, + self.settingsTab.ikRefArray_listWidget, + self.settingsTab.upvRefArray_listWidget, + "upvrefarray")) self.settingsTab.upvRefArray_listWidget.installEventFilter(self) - self.settingsTab.pinRefArrayAdd_pushButton.clicked.connect(partial( - self.addItem2listWidget, - self.settingsTab.pinRefArray_listWidget, "pinrefarray")) + self.settingsTab.pinRefArrayAdd_pushButton.clicked.connect( + partial(self.addItem2listWidget, + self.settingsTab.pinRefArray_listWidget, + "pinrefarray")) - self.settingsTab.pinRefArrayRemove_pushButton.clicked.connect(partial( - self.removeSelectedFromListWidget, - self.settingsTab.pinRefArray_listWidget, "pinrefarray")) + self.settingsTab.pinRefArrayRemove_pushButton.clicked.connect( + partial(self.removeSelectedFromListWidget, + self.settingsTab.pinRefArray_listWidget, + "pinrefarray")) self.settingsTab.pinRefArray_copyRef_pushButton.clicked.connect( - partial( - self.copyFromListWidget, - self.settingsTab.ikRefArray_listWidget, - self.settingsTab.pinRefArray_listWidget, "pinrefarray")) + partial(self.copyFromListWidget, + self.settingsTab.ikRefArray_listWidget, + self.settingsTab.pinRefArray_listWidget, + "pinrefarray")) self.settingsTab.pinRefArray_listWidget.installEventFilter(self) @@ -280,4 +291,4 @@ def eventFilter(self, sender, event): return QtWidgets.QDialog.eventFilter(self, sender, event) def dockCloseEventTriggered(self): - gqt.deleteInstances(self, MayaQDockWidget) + pyqt.deleteInstances(self, MayaQDockWidget) diff --git a/scripts/mgear/maya/shifter/component/arm_2jnt_freeTangents_01/__init__.py b/scripts/mgear/maya/shifter/component/arm_2jnt_freeTangents_01/__init__.py index 9ce2d8b..1499cfe 100644 --- a/scripts/mgear/maya/shifter/component/arm_2jnt_freeTangents_01/__init__.py +++ b/scripts/mgear/maya/shifter/component/arm_2jnt_freeTangents_01/__init__.py @@ -1,263 +1,471 @@ -# MGEAR is under the terms of the MIT License +"""Component Arm 2 joints 01 module""" -# Copyright (c) 2016 Jeremie Passerin, Miquel Campos - -# Permission is hereby granted, free of charge, to any person obtaining a copy -# of this software and associated documentation files (the "Software"), to deal -# in the Software without restriction, including without limitation the rights -# to use, copy, modify, merge, publish, distribute, sublicense, and/or sell -# copies of the Software, and to permit persons to whom the Software is -# furnished to do so, subject to the following conditions: - -# The above copyright notice and this permission notice shall be included in all -# copies or substantial portions of the Software. - -# THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR -# IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, -# FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE -# AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER -# LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, -# OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE -# SOFTWARE. - -# Author: Jeremie Passerin geerem@hotmail.com www.jeremiepasserin.com -# Author: Miquel Campos hello@miquel-campos.com www.miquel-campos.com -# Date: 2016 / 10 / 10 - -############################################# -# GLOBAL -############################################# -# Maya import pymel.core as pm -import pymel.core.datatypes as dt +from pymel.core import datatypes +from mgear.maya.shifter import component -# mgear -from mgear.maya.shifter.component import MainComponent +from mgear.maya import node, fcurve, applyop, vector +from mgear.maya import attribute, transform, primitive -import mgear.maya.primitive as pri -import mgear.maya.transform as tra -import mgear.maya.attribute as att -import mgear.maya.node as nod -import mgear.maya.vector as vec -import mgear.maya.applyop as aop -import mgear.maya.fcurve as fcu ############################################# # COMPONENT ############################################# -class Component(MainComponent): - def addObjects(self): +class Component(component.Main): + """Shifter component Class""" + # ===================================================== + # OBJECTS + # ===================================================== + def addObjects(self): + """Add all the objects needed to create the component.""" self.WIP = self.options["mode"] - self.normal = self.getNormalFromPos(self.guide.apos) self.binormal = self.getBiNormalFromPos(self.guide.apos) - self.length0 = vec.getDistance(self.guide.apos[0], self.guide.apos[1]) - self.length1 = vec.getDistance(self.guide.apos[1], self.guide.apos[2]) - self.length2 = vec.getDistance(self.guide.apos[2], self.guide.apos[3]) + self.length0 = vector.getDistance(self.guide.apos[0], + self.guide.apos[1]) + self.length1 = vector.getDistance(self.guide.apos[1], + self.guide.apos[2]) + self.length2 = vector.getDistance(self.guide.apos[2], + self.guide.apos[3]) # 1 bone chain for upv ref - self.armChainUpvRef= pri.add2DChain(self.root, self.getName("armUpvRef%s_jnt"), [self.guide.apos[0],self.guide.apos[2]], self.normal, False, self.WIP) - self.armChainUpvRef[1].setAttr("jointOrientZ", self.armChainUpvRef[1].getAttr("jointOrientZ")*-1) + self.armChainUpvRef = primitive.add2DChain( + self.root, + self.getName("armUpvRef%s_jnt"), + [self.guide.apos[0], self.guide.apos[2]], + self.normal, False, self.WIP) - # FK Controlers ----------------------------------- - t = tra.getTransformLookingAt(self.guide.apos[0], self.guide.apos[1], self.normal, "xz", self.negate) - self.fk0_npo = pri.addTransform(self.root, self.getName("fk0_npo"), t) - self.fk0_ctl = self.addCtl(self.fk0_npo, "fk0_ctl", t, self.color_fk, "cube", w=self.length0, h=self.size*.1, d=self.size*.1, po=dt.Vector(.5*self.length0*self.n_factor,0,0), tp=self.parentCtlTag) - att.setKeyableAttributes(self.fk0_ctl, ["tx", "ty", "tz", "ro", "rx", "ry", "rz", "sx"]) + self.armChainUpvRef[1].setAttr( + "jointOrientZ", + self.armChainUpvRef[1].getAttr("jointOrientZ") * -1) - t = tra.getTransformLookingAt(self.guide.apos[1], self.guide.apos[2], self.normal, "xz", self.negate) - self.fk1_npo = pri.addTransform(self.fk0_ctl, self.getName("fk1_npo"), t) - self.fk1_ctl = self.addCtl(self.fk1_npo, "fk1_ctl", t, self.color_fk, "cube", w=self.length1, h=self.size*.1, d=self.size*.1, po=dt.Vector(.5*self.length1*self.n_factor,0,0), tp=self.fk0_ctl) - att.setKeyableAttributes(self.fk1_ctl, ["tx", "ty", "tz", "ro", "rx", "ry", "rz", "sx"]) - - t = tra.getTransformLookingAt(self.guide.apos[2], self.guide.apos[3], self.normal, "xz", self.negate) - self.fk2_npo = pri.addTransform(self.fk1_ctl, self.getName("fk2_npo"), t) - self.fk2_ctl = self.addCtl(self.fk2_npo, "fk2_ctl", t, self.color_fk, "cube", w=self.length2, h=self.size*.1, d=self.size*.1, po=dt.Vector(.5*self.length2*self.n_factor,0,0), tp=self.fk1_ctl) - att.setKeyableAttributes(self.fk2_ctl) + # FK Controlers ----------------------------------- + t = transform.getTransformLookingAt(self.guide.apos[0], + self.guide.apos[1], + self.normal, + "xz", + self.negate) + self.fk0_npo = primitive.addTransform(self.root, + self.getName("fk0_npo"), + t) + + po_vec = datatypes.Vector(.5 * self.length0 * self.n_factor, 0, 0) + self.fk0_ctl = self.addCtl(self.fk0_npo, + "fk0_ctl", + t, + self.color_fk, + "cube", + w=self.length0, + h=self.size * .1, + d=self.size * .1, + po=po_vec, + tp=self.parentCtlTag) + + attribute.setKeyableAttributes( + self.fk0_ctl, + ["tx", "ty", "tz", "ro", "rx", "ry", "rz", "sx"]) + + t = transform.getTransformLookingAt(self.guide.apos[1], + self.guide.apos[2], + self.normal, + "xz", + self.negate) + self.fk1_npo = primitive.addTransform(self.fk0_ctl, + self.getName("fk1_npo"), + t) + + po_vec = datatypes.Vector(.5 * self.length1 * self.n_factor, 0, 0) + self.fk1_ctl = self.addCtl(self.fk1_npo, + "fk1_ctl", + t, + self.color_fk, + "cube", + w=self.length1, + h=self.size * .1, + d=self.size * .1, + po=po_vec, + tp=self.fk0_ctl) + + attribute.setKeyableAttributes( + self.fk1_ctl, + ["tx", "ty", "tz", "ro", "rx", "ry", "rz", "sx"]) + + t = transform.getTransformLookingAt(self.guide.apos[2], + self.guide.apos[3], + self.normal, + "xz", + self.negate) + self.fk2_npo = primitive.addTransform(self.fk1_ctl, + self.getName("fk2_npo"), + t) + + po_vec = datatypes.Vector(.5 * self.length2 * self.n_factor, 0, 0) + self.fk2_ctl = self.addCtl(self.fk2_npo, + "fk2_ctl", + t, + self.color_fk, + "cube", + w=self.length2, + h=self.size * .1, + d=self.size * .1, + po=po_vec, + tp=self.fk1_ctl) + + attribute.setKeyableAttributes(self.fk2_ctl) self.fk_ctl = [self.fk0_ctl, self.fk1_ctl, self.fk2_ctl] - for x in self.fk_ctl: - att.setInvertMirror(x, ["tx", "ty", "tz"]) - + for x in self.fk_ctl: + attribute.setInvertMirror(x, ["tx", "ty", "tz"]) # IK Controlers ----------------------------------- - self.ik_cns = pri.addTransformFromPos(self.root, self.getName("ik_cns"), self.guide.pos["wrist"]) + self.ik_cns = primitive.addTransformFromPos(self.root, + self.getName("ik_cns"), + self.guide.pos["wrist"]) + + t = transform.getTransformFromPos(self.guide.pos["wrist"]) + self.ikcns_ctl = self.addCtl(self.ik_cns, + "ikcns_ctl", + t, + self.color_ik, + "null", + w=self.size * .12, + tp=self.parentCtlTag) - self.ikcns_ctl = self.addCtl(self.ik_cns, "ikcns_ctl", tra.getTransformFromPos(self.guide.pos["wrist"]), self.color_ik, "null", w=self.size*.12, tp=self.parentCtlTag) - att.setInvertMirror(self.ikcns_ctl, ["tx", "ty", "tz"]) + attribute.setInvertMirror(self.ikcns_ctl, ["tx", "ty", "tz"]) if self.negate: - m = tra.getTransformLookingAt(self.guide.pos["wrist"], self.guide.pos["eff"], self.normal, "x-y", True) + m = transform.getTransformLookingAt(self.guide.pos["wrist"], + self.guide.pos["eff"], + self.normal, + "x-y", + True) else: - m = tra.getTransformLookingAt(self.guide.pos["wrist"], self.guide.pos["eff"], self.normal, "xy", False) - self.ik_ctl = self.addCtl(self.ikcns_ctl, "ik_ctl", m, self.color_ik, "cube", w=self.size*.12, h=self.size*.12, d=self.size*.12, tp=self.ikcns_ctl) + m = transform.getTransformLookingAt(self.guide.pos["wrist"], + self.guide.pos["eff"], + self.normal, + "xy", + False) + self.ik_ctl = self.addCtl(self.ikcns_ctl, + "ik_ctl", + m, + self.color_ik, + "cube", + w=self.size * .12, + h=self.size * .12, + d=self.size * .12, + tp=self.ikcns_ctl) if self.settings["mirrorIK"]: if self.negate: self.ik_cns.sx.set(-1) - self.ik_ctl.rz.set(self.ik_ctl.rz.get()*-1) + self.ik_ctl.rz.set(self.ik_ctl.rz.get() * -1) else: - att.setInvertMirror(self.ik_ctl, ["tx", "ry", "rz"]) - att.setKeyableAttributes(self.ik_ctl) - self.ik_ctl_ref = pri.addTransform(self.ik_ctl, self.getName("ikCtl_ref"), m) + attribute.setInvertMirror(self.ik_ctl, ["tx", "ry", "rz"]) + attribute.setKeyableAttributes(self.ik_ctl) + self.ik_ctl_ref = primitive.addTransform(self.ik_ctl, + self.getName("ikCtl_ref"), + m) # upv v = self.guide.apos[2] - self.guide.apos[0] v = self.normal ^ v v.normalize() - v *= self.size*.5 + v *= self.size * .5 v += self.guide.apos[1] - self.upv_cns = pri.addTransformFromPos(self.root, self.getName("upv_cns"), v) + self.upv_cns = primitive.addTransformFromPos(self.root, + self.getName("upv_cns"), + v) - self.upv_ctl = self.addCtl(self.upv_cns, "upv_ctl", tra.getTransform(self.upv_cns), self.color_ik, "diamond", w=self.size*.12, tp=self.parentCtlTag) + self.upv_ctl = self.addCtl(self.upv_cns, + "upv_ctl", + transform.getTransform(self.upv_cns), + self.color_ik, + "diamond", + w=self.size * .12, + tp=self.parentCtlTag) if self.settings["mirrorMid"]: if self.negate: self.upv_cns.rz.set(180) self.upv_cns.sy.set(-1) else: - att.setInvertMirror(self.upv_ctl, ["tx"]) - att.setKeyableAttributes(self.upv_ctl, self.t_params) + attribute.setInvertMirror(self.upv_ctl, ["tx"]) + attribute.setKeyableAttributes(self.upv_ctl, self.t_params) - #IK rotation controls + # IK rotation controls if self.settings["ikTR"]: - self.ikRot_npo = pri.addTransform(self.root, self.getName("ikRot_npo"), m) - self.ikRot_cns = pri.addTransform(self.ikRot_npo, self.getName("ikRot_cns"), m) - self.ikRot_ctl = self.addCtl(self.ikRot_cns, "ikRot_ctl", m, self.color_ik, "sphere", w=self.size*.12, tp=self.ik_ctl) - att.setKeyableAttributes(self.ikRot_ctl, self.r_params) + self.ikRot_npo = primitive.addTransform(self.root, + self.getName("ikRot_npo"), + m) + self.ikRot_cns = primitive.addTransform(self.ikRot_npo, + self.getName("ikRot_cns"), + m) + self.ikRot_ctl = self.addCtl(self.ikRot_cns, + "ikRot_ctl", + m, + self.color_ik, + "sphere", + w=self.size * .12, + tp=self.ik_ctl) + attribute.setKeyableAttributes(self.ikRot_ctl, self.r_params) # References -------------------------------------- # Calculate again the transfor for the IK ref. This way align with FK - trnIK_ref = tra.getTransformLookingAt(self.guide.pos["wrist"], self.guide.pos["eff"], self.normal, "xz", self.negate) - self.ik_ref = pri.addTransform(self.ik_ctl_ref, self.getName("ik_ref"), trnIK_ref) - self.fk_ref = pri.addTransform(self.fk_ctl[2], self.getName("fk_ref"), trnIK_ref) + trnIK_ref = transform.getTransformLookingAt(self.guide.pos["wrist"], + self.guide.pos["eff"], + self.normal, + "xz", + self.negate) + self.ik_ref = primitive.addTransform(self.ik_ctl_ref, + self.getName("ik_ref"), + trnIK_ref) + self.fk_ref = primitive.addTransform(self.fk_ctl[2], + self.getName("fk_ref"), + trnIK_ref) # Chain -------------------------------------------- # The outputs of the ikfk2bone solver - self.bone0 = pri.addLocator(self.root, self.getName("0_bone"), tra.getTransform(self.fk_ctl[0])) + self.bone0 = primitive.addLocator( + self.root, + self.getName("0_bone"), + transform.getTransform(self.fk_ctl[0])) + self.bone0_shp = self.bone0.getShape() - self.bone0_shp.setAttr("localPositionX", self.n_factor*.5) + self.bone0_shp.setAttr("localPositionX", self.n_factor * .5) self.bone0_shp.setAttr("localScale", .5, 0, 0) self.bone0.setAttr("sx", self.length0) bShape = self.bone0.getShape() bShape.setAttr("visibility", False) - self.bone1 = pri.addLocator(self.root, self.getName("1_bone"), tra.getTransform(self.fk_ctl[1])) + t = transform.getTransform(self.fk_ctl[1]) + self.bone1 = primitive.addLocator(self.root, + self.getName("1_bone"), + t) + self.bone1_shp = self.bone1.getShape() - self.bone1_shp.setAttr("localPositionX", self.n_factor*.5) + self.bone1_shp.setAttr("localPositionX", self.n_factor * .5) self.bone1_shp.setAttr("localScale", .5, 0, 0) self.bone1.setAttr("sx", self.length1) bShape = self.bone1.getShape() bShape.setAttr("visibility", False) - #Elbow control - - tA = tra.getTransformLookingAt(self.guide.apos[0], self.guide.apos[1], self.normal, "xz", self.negate) - tA = tra.setMatrixPosition(tA, self.guide.apos[1]) - tB = tra.getTransformLookingAt(self.guide.apos[1], self.guide.apos[2], self.normal, "xz", self.negate) - t = tra.getInterpolateTransformMatrix(tA, tB) - self.ctrn_loc = pri.addTransform(self.root, self.getName("ctrn_loc"), t) - - #match IK FK references - self.match_fk0_off = pri.addTransform(self.root, self.getName("matchFk0_npo"), tra.getTransform(self.fk_ctl[1])) - self.match_fk0 = pri.addTransform(self.match_fk0_off, self.getName("fk0_mth"), tra.getTransform(self.fk_ctl[0])) - self.match_fk1_off = pri.addTransform(self.root, self.getName("matchFk1_npo"), tra.getTransform(self.fk_ctl[2])) - self.match_fk1 = pri.addTransform(self.match_fk1_off, self.getName("fk1_mth"), tra.getTransform(self.fk_ctl[1])) - self.match_fk2 = pri.addTransform(self.ik_ctl, self.getName("fk2_mth"), tra.getTransform(self.fk_ctl[2])) - - self.match_ik = pri.addTransform(self.fk2_ctl, self.getName("ik_mth"), tra.getTransform(self.ik_ctl)) - self.match_ikUpv = pri.addTransform(self.fk0_ctl, self.getName("upv_mth"), tra.getTransform(self.upv_ctl)) - - + # Elbow control + + tA = transform.getTransformLookingAt(self.guide.apos[0], + self.guide.apos[1], + self.normal, + "xz", + self.negate) + tA = transform.setMatrixPosition(tA, self.guide.apos[1]) + tB = transform.getTransformLookingAt(self.guide.apos[1], + self.guide.apos[2], + self.normal, + "xz", + self.negate) + + t = transform.getInterpolateTransformMatrix(tA, tB) + self.ctrn_loc = primitive.addTransform(self.root, + self.getName("ctrn_loc"), + t) + + # match IK FK references + self.match_fk0_off = primitive.addTransform( + self.root, self.getName("matchFk0_npo"), + transform.getTransform(self.fk_ctl[1])) + + self.match_fk0 = primitive.addTransform( + self.match_fk0_off, self.getName("fk0_mth"), + transform.getTransform(self.fk_ctl[0])) + + self.match_fk1_off = primitive.addTransform( + self.root, + self.getName("matchFk1_npo"), + transform.getTransform(self.fk_ctl[2])) + + self.match_fk1 = primitive.addTransform( + self.match_fk1_off, + self.getName("fk1_mth"), + transform.getTransform(self.fk_ctl[1])) + + self.match_fk2 = primitive.addTransform( + self.ik_ctl, + self.getName("fk2_mth"), + transform.getTransform(self.fk_ctl[2])) + + self.match_ik = primitive.addTransform( + self.fk2_ctl, + self.getName("ik_mth"), + transform.getTransform(self.ik_ctl)) + + self.match_ikUpv = primitive.addTransform( + self.fk0_ctl, + self.getName("upv_mth"), + transform.getTransform(self.upv_ctl)) # Eff locator - self.eff_loc = pri.addTransformFromPos(self.root, self.getName("eff_loc"), self.guide.apos[2]) + self.eff_loc = primitive.addTransformFromPos( + self.root, + self.getName("eff_loc"), + self.guide.apos[2]) # Mid Controler ------------------------------------ - t = tra.getTransform(self.ctrn_loc) - self.mid_cns = pri.addTransform(self.ctrn_loc, self.getName("mid_cns"), t) - self.mid_ctl = self.addCtl(self.mid_cns, "mid_ctl", t, self.color_ik, "sphere", w=self.size*.2, tp=self.parentCtlTag) + t = transform.getTransform(self.ctrn_loc) + self.mid_cns = primitive.addTransform(self.ctrn_loc, + self.getName("mid_cns"), + t) + self.mid_ctl = self.addCtl(self.mid_cns, + "mid_ctl", + t, + self.color_ik, + "sphere", + w=self.size * .2, + tp=self.parentCtlTag) + if self.settings["mirrorMid"]: if self.negate: self.mid_cns.rz.set(180) self.mid_cns.sz.set(-1) else: - att.setInvertMirror(self.mid_ctl, ["tx", "ty", "tz"]) - att.setKeyableAttributes(self.mid_ctl, self.t_params) - - #Roll join ref--------------------------------- - self.tws0_loc = pri.addTransform(self.root, self.getName("tws0_loc"), tra.getTransform(self.fk_ctl[0])) - - self.tws1_npo = pri.addTransform(self.ctrn_loc, self.getName("tws1_npo"), tra.getTransform(self.ctrn_loc)) - self.tws1_loc = pri.addTransform(self.tws1_npo, self.getName("tws1_loc"), tra.getTransform(self.ctrn_loc)) - - self.tws1A_npo = pri.addTransform(self.mid_ctl, self.getName("tws1A_npo"), tA) - self.tws1A_loc = pri.addTransform(self.tws1A_npo, self.getName("tws1A_loc"), tA) - self.tws1B_npo = pri.addTransform(self.mid_ctl, self.getName("tws1B_npo"), tB) - self.tws1B_loc = pri.addTransform(self.tws1B_npo, self.getName("tws1B_loc"), tB) - - - self.tws2_npo = pri.addTransform(self.root, self.getName("tws2_npo"), tra.getTransform(self.fk_ctl[2])) - self.tws2_loc = pri.addTransform(self.tws2_npo, self.getName("tws2_loc"), tra.getTransform(self.fk_ctl[2])) + attribute.setInvertMirror(self.mid_ctl, ["tx", "ty", "tz"]) + attribute.setKeyableAttributes(self.mid_ctl, self.t_params) + + # Roll join ref--------------------------------- + self.tws0_loc = primitive.addTransform( + self.root, + self.getName("tws0_loc"), + transform.getTransform(self.fk_ctl[0])) + + self.tws1_npo = primitive.addTransform( + self.ctrn_loc, + self.getName("tws1_npo"), + transform.getTransform(self.ctrn_loc)) + + self.tws1_loc = primitive.addTransform( + self.tws1_npo, + self.getName("tws1_loc"), + transform.getTransform(self.ctrn_loc)) + + self.tws1A_npo = primitive.addTransform(self.mid_ctl, + self.getName("tws1A_npo"), + tA) + self.tws1A_loc = primitive.addTransform(self.tws1A_npo, + self.getName("tws1A_loc"), + tA) + self.tws1B_npo = primitive.addTransform(self.mid_ctl, + self.getName("tws1B_npo"), + tB) + self.tws1B_loc = primitive.addTransform(self.tws1B_npo, + self.getName("tws1B_loc"), + tB) + + self.tws2_npo = primitive.addTransform( + self.root, + self.getName("tws2_npo"), + transform.getTransform(self.fk_ctl[2])) + + self.tws2_loc = primitive.addTransform( + self.tws2_npo, + self.getName("tws2_loc"), + transform.getTransform(self.fk_ctl[2])) # Roll twist chain --------------------------------- - #Arm + # Arm self.armChainPos = [] - ii = 1.0/(self.settings["div0"]+1) + ii = 1.0 / (self.settings["div0"] + 1) i = 0.0 - for p in range(self.settings["div0"]+2): - self.armChainPos.append(vec.linearlyInterpolate(self.guide.pos["root"], self.guide.pos["elbow"], blend=i)) - i=i+ii - - self.armTwistChain= pri.add2DChain(self.root, self.getName("armTwist%s_jnt"), self.armChainPos, self.normal, False, self.WIP) - - #Forearm + for p in range(self.settings["div0"] + 2): + p_vec = vector.linearlyInterpolate(self.guide.pos["root"], + self.guide.pos["elbow"], + blend=i) + self.armChainPos.append(p_vec) + i = i + ii + + self.armTwistChain = primitive.add2DChain( + self.root, + self.getName("armTwist%s_jnt"), + self.armChainPos, + self.normal, + False, + self.WIP) + + # Forearm self.forearmChainPos = [] - ii = 1.0/(self.settings["div1"]+1) + ii = 1.0 / (self.settings["div1"] + 1) i = 0.0 - for p in range(self.settings["div1"]+2): - self.forearmChainPos.append(vec.linearlyInterpolate(self.guide.pos["elbow"], self.guide.pos["wrist"], blend=i)) - i=i+ii - - self.forearmTwistChain= pri.add2DChain(self.root, self.getName("forearmTwist%s_jnt"), self.forearmChainPos, self.normal, False, self.WIP) + for p in range(self.settings["div1"] + 2): + p_vec = vector.linearlyInterpolate(self.guide.pos["elbow"], + self.guide.pos["wrist"], + blend=i) + self.forearmChainPos.append(p_vec) + i = i + ii + + self.forearmTwistChain = primitive.add2DChain( + self.root, + self.getName("forearmTwist%s_jnt"), + self.forearmChainPos, + self.normal, False, + self.WIP) pm.parent(self.forearmTwistChain[0], self.mid_ctl) - #Hand Aux chain and nonroll + # Hand Aux chain and nonroll self.auxChainPos = [] ii = .5 i = 0.0 for p in range(3): - self.auxChainPos.append(vec.linearlyInterpolate(self.guide.pos["wrist"], self.guide.pos["eff"], blend=i)) - i=i+ii + p_vec = vector.linearlyInterpolate(self.guide.pos["wrist"], + self.guide.pos["eff"], + blend=i) + self.auxChainPos.append(p_vec) + i = i + ii t = self.root.getMatrix(worldSpace=True) - self.aux_npo = pri.addTransform(self.root, self.getName("aux_npo"), t) - self.auxTwistChain = pri.add2DChain(self.aux_npo, self.getName("auxTwist%s_jnt"), self.auxChainPos, self.normal, False, self.WIP) - - #Non Roll join ref --------------------------------- - self.armRollRef = pri.add2DChain(self.root, self.getName("armRollRef%s_jnt"), self.armChainPos[:2], self.normal, False, self.WIP) - - - self.forearmRollRef = pri.add2DChain(self.aux_npo, self.getName("forearmRollRef%s_jnt"), self.auxChainPos[:2], self.normal, False, self.WIP) - + self.aux_npo = primitive.addTransform(self.root, + self.getName("aux_npo"), + t) + self.auxTwistChain = primitive.add2DChain( + self.aux_npo, + self.getName("auxTwist%s_jnt"), + self.auxChainPos, + self.normal, + False, + self.WIP) + + # Non Roll join ref --------------------------------- + self.armRollRef = primitive.add2DChain( + self.root, + self.getName("armRollRef%s_jnt"), + self.armChainPos[:2], + self.normal, + False, + self.WIP) + + self.forearmRollRef = primitive.add2DChain( + self.aux_npo, + self.getName("forearmRollRef%s_jnt"), + self.auxChainPos[:2], + self.normal, + False, + self.WIP) # Divisions ---------------------------------------- - # We have at least one division at the start, the end and one for the elbow. + 2 for elbow angle control + # We have attribute least one division attribute the start, the end + # and one for the elbow. + 2 for elbow angle control self.divisions = self.settings["div0"] + self.settings["div1"] + 4 self.div_cns = [] for i in range(self.divisions): - div_cns = pri.addTransform(self.root, self.getName("div%s_loc" % i)) + div_cns = primitive.addTransform(self.root, + self.getName("div%s_loc" % i)) self.div_cns.append(div_cns) @@ -265,131 +473,302 @@ def addObjects(self): # End reference ------------------------------------ # To help the deformation on the wrist - self.end_ref = pri.addTransform(self.eff_loc, self.getName("end_ref"), tra.getTransform(self.eff_loc)) + self.end_ref = primitive.addTransform( + self.eff_loc, + self.getName("end_ref"), + transform.getTransform(self.eff_loc)) if self.negate: self.end_ref.attr("rz").set(180.0) if self.settings["ikTR"]: - reference = self.ikRot_ctl - self.match_ikRot = pri.addTransform(self.fk2_ctl, self.getName("ikRot_mth"), tra.getTransform(self.ikRot_ctl)) - else: - reference = self.ik_ctl + # reference = self.ikRot_ctl + self.match_ikRot = primitive.addTransform( + self.fk2_ctl, + self.getName("ikRot_mth"), + transform.getTransform(self.ikRot_ctl)) + # else: + # reference = self.ik_ctl self.jnt_pos.append([self.end_ref, "end"]) # Tangent controls - t = tra.getInterpolateTransformMatrix(self.fk_ctl[0], self.tws1A_npo, .5) - self.armTangentA_loc = pri.addTransform(self.root, self.getName("armTangentA_loc"), self.fk_ctl[0].getMatrix(worldSpace=True)) - self.armTangentA_npo = pri.addTransform(self.armTangentA_loc, self.getName("armTangentA_npo"), t) - self.armTangentA_ctl = self.addCtl(self.armTangentA_npo, "armTangentA_ctl", t, self.color_ik, "circle", w=self.size*.2, ro=dt.Vector(0,0,1.570796), tp=self.mid_ctl) + t = transform.getInterpolateTransformMatrix(self.fk_ctl[0], + self.tws1A_npo, + .5) + self.armTangentA_loc = primitive.addTransform( + self.root, + self.getName("armTangentA_loc"), + self.fk_ctl[0].getMatrix(worldSpace=True)) + + self.armTangentA_npo = primitive.addTransform( + self.armTangentA_loc, + self.getName("armTangentA_npo"), + t) + + self.armTangentA_ctl = self.addCtl(self.armTangentA_npo, + "armTangentA_ctl", + t, + self.color_ik, + "circle", + w=self.size * .2, + ro=datatypes.Vector(0, 0, 1.570796), + tp=self.mid_ctl) if self.negate: self.armTangentA_npo.rz.set(180) self.armTangentA_npo.sz.set(-1) - att.setKeyableAttributes(self.armTangentA_ctl, self.t_params) - - t = tra.getInterpolateTransformMatrix(self.fk_ctl[0], self.tws1A_npo, .9) - self.armTangentB_npo = pri.addTransform(self.tws1A_loc, self.getName("armTangentB_npo"), t) - self.armTangentB_ctl = self.addCtl(self.armTangentB_npo, "armTangentB_ctl", t, self.color_ik, "circle", w=self.size*.1, ro=dt.Vector(0,0,1.570796), tp=self.mid_ctl) + attribute.setKeyableAttributes(self.armTangentA_ctl, self.t_params) + + t = transform.getInterpolateTransformMatrix(self.fk_ctl[0], + self.tws1A_npo, + .9) + self.armTangentB_npo = primitive.addTransform( + self.tws1A_loc, + self.getName("armTangentB_npo"), + t) + self.armTangentB_ctl = self.addCtl(self.armTangentB_npo, + "armTangentB_ctl", + t, + self.color_ik, + "circle", + w=self.size * .1, + ro=datatypes.Vector(0, 0, 1.570796), + tp=self.mid_ctl) if self.negate: self.armTangentB_npo.rz.set(180) self.armTangentB_npo.sz.set(-1) - att.setKeyableAttributes(self.armTangentB_ctl, self.t_params) + attribute.setKeyableAttributes(self.armTangentB_ctl, self.t_params) tC = self.tws1B_npo.getMatrix(worldSpace=True) - tC = tra.setMatrixPosition(tC, self.guide.apos[2]) - t = tra.getInterpolateTransformMatrix(self.tws1B_npo, tC, .1) - self.forearmTangentA_npo = pri.addTransform(self.tws1B_loc, self.getName("forearmTangentA_npo"), t) - self.forearmTangentA_ctl = self.addCtl(self.forearmTangentA_npo, "forearmTangentA_ctl", t, self.color_ik, "circle", w=self.size*.1, ro=dt.Vector(0,0,1.570796), tp=self.mid_ctl) + tC = transform.setMatrixPosition(tC, self.guide.apos[2]) + t = transform.getInterpolateTransformMatrix(self.tws1B_npo, tC, .1) + self.forearmTangentA_npo = primitive.addTransform( + self.tws1B_loc, + self.getName("forearmTangentA_npo"), + t) + + self.forearmTangentA_ctl = self.addCtl( + self.forearmTangentA_npo, + "forearmTangentA_ctl", + t, + self.color_ik, + "circle", + w=self.size * .1, + ro=datatypes.Vector(0, 0, 1.570796), + tp=self.mid_ctl) + if self.negate: self.forearmTangentA_npo.rz.set(180) self.forearmTangentA_npo.sz.set(-1) - att.setKeyableAttributes(self.forearmTangentA_ctl, self.t_params) + attribute.setKeyableAttributes(self.forearmTangentA_ctl, self.t_params) + + t = transform.getInterpolateTransformMatrix(self.tws1B_npo, tC, .5) + self.forearmTangentB_loc = primitive.addTransform( + self.root, + self.getName("forearmTangentB_loc"), + tC) + self.forearmTangentB_npo = primitive.addTransform( + self.forearmTangentB_loc, + self.getName("forearmTangentB_npo"), + t) + self.forearmTangentB_ctl = self.addCtl( + self.forearmTangentB_npo, + "forearmTangentB_ctl", + t, + self.color_ik, + "circle", + w=self.size * .2, + ro=datatypes.Vector(0, 0, 1.570796), + tp=self.mid_ctl) - t = tra.getInterpolateTransformMatrix(self.tws1B_npo, tC, .5) - self.forearmTangentB_loc = pri.addTransform(self.root, self.getName("forearmTangentB_loc"), tC) - self.forearmTangentB_npo = pri.addTransform(self.forearmTangentB_loc, self.getName("forearmTangentB_npo"), t) - self.forearmTangentB_ctl = self.addCtl(self.forearmTangentB_npo, "forearmTangentB_ctl", t, self.color_ik, "circle", w=self.size*.2, ro=dt.Vector(0,0,1.570796), tp=self.mid_ctl) if self.negate: self.forearmTangentB_npo.rz.set(180) self.forearmTangentB_npo.sz.set(-1) - att.setKeyableAttributes(self.forearmTangentB_ctl, self.t_params) + attribute.setKeyableAttributes(self.forearmTangentB_ctl, self.t_params) t = self.mid_ctl.getMatrix(worldSpace=True) - self.elbowTangent_npo = pri.addTransform(self.mid_ctl, self.getName("elbowTangent_npo"), t) - self.elbowTangent_ctl = self.addCtl(self.elbowTangent_npo, "elbowTangent_ctl", t, self.color_fk, "circle", w=self.size*.15, ro=dt.Vector(0,0,1.570796), tp=self.mid_ctl) + self.elbowTangent_npo = primitive.addTransform( + self.mid_ctl, + self.getName("elbowTangent_npo"), + t) + + self.elbowTangent_ctl = self.addCtl( + self.elbowTangent_npo, + "elbowTangent_ctl", + t, + self.color_fk, + "circle", + w=self.size * .15, + ro=datatypes.Vector(0, 0, 1.570796), + tp=self.mid_ctl) + if self.negate: self.elbowTangent_npo.rz.set(180) self.elbowTangent_npo.sz.set(-1) - att.setKeyableAttributes(self.elbowTangent_ctl, self.t_params) - + attribute.setKeyableAttributes(self.elbowTangent_ctl, self.t_params) + # ===================================================== + # ATTRIBUTES + # ===================================================== def addAttributes(self): + """Create the anim and setupr rig attributes for the component""" # Anim ------------------------------------------- - self.blend_att = self.addAnimParam("blend", "Fk/Ik Blend", "double", self.settings["blend"], 0, 1) - self.roll_att = self.addAnimParam("roll", "Roll", "double", 0, -180, 180) - - self.scale_att = self.addAnimParam("ikscale", "Scale", "double", 1, .001, 99) - self.maxstretch_att = self.addAnimParam("maxstretch", "Max Stretch", "double", self.settings["maxstretch"], 1, 99) - self.slide_att = self.addAnimParam("slide", "Slide", "double", .5, 0, 1) - self.softness_att = self.addAnimParam("softness", "Softness", "double", 0, 0, 1) - self.reverse_att = self.addAnimParam("reverse", "Reverse", "double", 0, 0, 1) - self.roundness_att = self.addAnimParam("roundness", "Roundness", "double", 0, 0, 1) - self.volume_att = self.addAnimParam("volume", "Volume", "double", 1, 0, 1) - self.tangentVis_att = self.addAnimParam("Tangent_vis", "Tangent vis", "bool", False) + self.blend_att = self.addAnimParam("blend", + "Fk/Ik Blend", + "double", + self.settings["blend"], + 0, + 1) + self.roll_att = self.addAnimParam("roll", + "Roll", + "double", + 0, + -180, + 180) + self.scale_att = self.addAnimParam("ikscale", + "Scale", + "double", + 1, + .001, + 99) + self.maxstretch_att = self.addAnimParam("maxstretch", + "Max Stretch", + "double", + self.settings["maxstretch"], + 1, + 99) + self.slide_att = self.addAnimParam("slide", + "Slide", + "double", + .5, + 0, + 1) + self.softness_att = self.addAnimParam("softness", + "Softness", + "double", + 0, + 0, + 1) + self.reverse_att = self.addAnimParam("reverse", + "Reverse", + "double", + 0, + 0, + 1) + self.roundness_att = self.addAnimParam("roundness", + "Roundness", + "double", + 0, + 0, + 1) + self.volume_att = self.addAnimParam("volume", + "Volume", + "double", + 1, + 0, + 1) + self.tangentVis_att = self.addAnimParam("Tangent_vis", + "Tangent vis", + "bool", + False) # Ref if self.settings["ikrefarray"]: ref_names = self.settings["ikrefarray"].split(",") if len(ref_names) > 1: - self.ikref_att = self.addAnimEnumParam("ikref", "Ik Ref", 0, self.settings["ikrefarray"].split(",")) + self.ikref_att = self.addAnimEnumParam( + "ikref", + "Ik Ref", + 0, + self.settings["ikrefarray"].split(",")) if self.settings["ikTR"]: ref_names = ["Auto", "ik_ctl"] if self.settings["ikrefarray"]: ref_names = ref_names + self.settings["ikrefarray"].split(",") - self.ikRotRef_att = self.addAnimEnumParam("ikRotRef", "Ik Rot Ref", 0, ref_names) + self.ikRotRef_att = self.addAnimEnumParam("ikRotRef", + "Ik Rot Ref", + 0, + ref_names) if self.settings["upvrefarray"]: ref_names = self.settings["upvrefarray"].split(",") ref_names = ["Auto"] + ref_names if len(ref_names) > 1: - self.upvref_att = self.addAnimEnumParam("upvref", "UpV Ref", 0, ref_names) + self.upvref_att = self.addAnimEnumParam("upvref", + "UpV Ref", + 0, + ref_names) if self.settings["pinrefarray"]: - ref_names = self.settings["pinrefarray" ].split(",") + ref_names = self.settings["pinrefarray"].split(",") ref_names = ["Auto"] + ref_names if len(ref_names) > 1: - self.pin_att = self.addAnimEnumParam("elbowref", "Elbow Ref", 0, ref_names) + self.pin_att = self.addAnimEnumParam("elbowref", + "Elbow Ref", + 0, + ref_names) # Setup ------------------------------------------ # Eval Fcurve - self.st_value = fcu.getFCurveValues(self.settings["st_profile"], self.divisions) - self.sq_value = fcu.getFCurveValues(self.settings["sq_profile"], self.divisions) - - self.st_att = [ self.addSetupParam("stretch_%s"%i, "Stretch %s"%i, "double", self.st_value[i], -1, 0) for i in range(self.divisions) ] - self.sq_att = [ self.addSetupParam("squash_%s"%i, "Squash %s"%i, "double", self.sq_value[i], 0, 1) for i in range(self.divisions) ] - - self.resample_att = self.addSetupParam("resample", "Resample", "bool", True) - self.absolute_att = self.addSetupParam("absolute", "Absolute", "bool", False) + self.st_value = fcurve.getFCurveValues(self.settings["st_profile"], + self.divisions) + self.sq_value = fcurve.getFCurveValues(self.settings["sq_profile"], + self.divisions) + + self.st_att = [self.addSetupParam("stretch_%s" % i, + "Stretch %s" % i, + "double", + self.st_value[i], -1, 0) + for i in range(self.divisions)] + + self.sq_att = [self.addSetupParam("squash_%s" % i, + "Squash %s" % i, + "double", + self.sq_value[i], + 0, + 1) + for i in range(self.divisions)] + + self.resample_att = self.addSetupParam("resample", + "Resample", + "bool", + True) + self.absolute_att = self.addSetupParam("absolute", + "Absolute", + "bool", + False) + # ===================================================== + # OPERATORS + # ===================================================== def addOperators(self): - - # 1 bone chain Upv ref ===================================================================================== - self.ikHandleUpvRef = pri.addIkHandle(self.root, self.getName("ikHandleLegChainUpvRef"), self.armChainUpvRef, "ikSCsolver") + """Create operators and set the relations for the component rig + + Apply operators, constraints, expressions to the hierarchy. + In order to keep the code clean and easier to debug, + we shouldn't create any new object in this method. + + """ + # 1 bone chain Upv ref ====================================== + self.ikHandleUpvRef = primitive.addIkHandle( + self.root, + self.getName("ikHandleLegChainUpvRef"), + self.armChainUpvRef, + "ikSCsolver") pm.pointConstraint(self.ik_ctl, self.ikHandleUpvRef) - pm.parentConstraint( self.armChainUpvRef[0], self.upv_cns, mo=True) + pm.parentConstraint(self.armChainUpvRef[0], self.upv_cns, mo=True) # Visibilities ------------------------------------- # fk - fkvis_node = nod.createReverseNode(self.blend_att) + fkvis_node = node.createReverseNode(self.blend_att) for shp in self.fk0_ctl.getShapes(): - pm.connectAttr(fkvis_node+".outputX", shp.attr("visibility")) + pm.connectAttr(fkvis_node + ".outputX", shp.attr("visibility")) for shp in self.fk1_ctl.getShapes(): - pm.connectAttr(fkvis_node+".outputX", shp.attr("visibility")) + pm.connectAttr(fkvis_node + ".outputX", shp.attr("visibility")) for shp in self.fk2_ctl.getShapes(): - pm.connectAttr(fkvis_node+".outputX", shp.attr("visibility")) + pm.connectAttr(fkvis_node + ".outputX", shp.attr("visibility")) # ik for shp in self.upv_ctl.getShapes(): @@ -403,76 +782,122 @@ def addOperators(self): pm.connectAttr(self.blend_att, shp.attr("visibility")) # Controls ROT order ----------------------------------- - att.setRotOrder(self.fk0_ctl, "XZY") - att.setRotOrder(self.fk1_ctl, "XYZ") - att.setRotOrder(self.fk2_ctl, "YZX") - # att.setRotOrder(self.ik_ctl, "ZYX") - att.setRotOrder(self.ik_ctl, "XYZ") - + attribute.setRotOrder(self.fk0_ctl, "XZY") + attribute.setRotOrder(self.fk1_ctl, "XYZ") + attribute.setRotOrder(self.fk2_ctl, "YZX") + attribute.setRotOrder(self.ik_ctl, "XYZ") # IK Solver ----------------------------------------- out = [self.bone0, self.bone1, self.ctrn_loc, self.eff_loc] - node = aop.gear_ikfk2bone_op(out, self.root, self.ik_ref, self.upv_ctl, self.fk_ctl[0], self.fk_ctl[1], self.fk_ref, self.length0, self.length1, self.negate) + o_node = applyop.gear_ikfk2bone_op(out, + self.root, + self.ik_ref, + self.upv_ctl, + self.fk_ctl[0], + self.fk_ctl[1], + self.fk_ref, + self.length0, + self.length1, + self.negate) if self.settings["ikTR"]: - #connect the control inputs - outEff_dm = node.listConnections(c=True)[-1][1] + # connect the control inputs + outEff_dm = o_node.listConnections(c=True)[-1][1] + + in_attr = self.ikRot_npo.attr("translate") + outEff_dm.attr("outputTranslate") >> in_attr - outEff_dm.attr("outputTranslate") >> self.ikRot_npo.attr("translate") outEff_dm.attr("outputScale") >> self.ikRot_npo.attr("scale") - dm_node = nod.createDecomposeMatrixNode(node.attr("outB")) + dm_node = node.createDecomposeMatrixNode(o_node.attr("outB")) dm_node.attr("outputRotate") >> self.ikRot_npo.attr("rotate") - #rotation + # rotation + + mulM_node = applyop.gear_mulmatrix_op( + self.ikRot_ctl.attr("worldMatrix"), + self.eff_loc.attr("parentInverseMatrix")) - mulM_node = aop.gear_mulmatrix_op(self.ikRot_ctl.attr("worldMatrix"), self.eff_loc.attr("parentInverseMatrix")) - intM_node = aop.gear_intmatrix_op(node.attr("outEff"), mulM_node.attr("output"), node.attr("blend")) - dm_node = nod.createDecomposeMatrixNode(intM_node.attr("output")) + intM_node = applyop.gear_intmatrix_op(o_node.attr("outEff"), + mulM_node.attr("output"), + o_node.attr("blend")) + dm_node = node.createDecomposeMatrixNode(intM_node.attr("output")) dm_node.attr("outputRotate") >> self.eff_loc.attr("rotate") - tra.matchWorldTransform(self.fk2_ctl, self.ikRot_cns) + transform.matchWorldTransform(self.fk2_ctl, self.ikRot_cns) - #scale: this fix the scalin popping issue - intM_node = aop.gear_intmatrix_op(self.fk2_ctl.attr("worldMatrix"), self.ik_ctl_ref.attr("worldMatrix"), node.attr("blend")) - mulM_node = aop.gear_mulmatrix_op(intM_node.attr("output"), self.eff_loc.attr("parentInverseMatrix")) - dm_node = nod.createDecomposeMatrixNode(mulM_node.attr("output")) - dm_node.attr("outputScale") >> self.eff_loc.attr("scale") + # scale: this fix the scalin popping issue + intM_node = applyop.gear_intmatrix_op( + self.fk2_ctl.attr("worldMatrix"), + self.ik_ctl_ref.attr("worldMatrix"), + o_node.attr("blend")) + mulM_node = applyop.gear_mulmatrix_op( + intM_node.attr("output"), + self.eff_loc.attr("parentInverseMatrix")) + + dm_node = node.createDecomposeMatrixNode(mulM_node.attr("output")) + dm_node.attr("outputScale") >> self.eff_loc.attr("scale") - pm.connectAttr(self.blend_att, node+".blend") + pm.connectAttr(self.blend_att, o_node + ".blend") if self.negate: mulVal = -1 else: mulVal = 1 - nod.createMulNode(self.roll_att, mulVal, node+".roll") - pm.connectAttr(self.scale_att, node+".scaleA") - pm.connectAttr(self.scale_att, node+".scaleB") - pm.connectAttr(self.maxstretch_att, node+".maxstretch") - pm.connectAttr(self.slide_att, node+".slide") - pm.connectAttr(self.softness_att, node+".softness") - pm.connectAttr(self.reverse_att, node+".reverse") + node.createMulNode(self.roll_att, mulVal, o_node + ".roll") + pm.connectAttr(self.scale_att, o_node + ".scaleA") + pm.connectAttr(self.scale_att, o_node + ".scaleB") + pm.connectAttr(self.maxstretch_att, o_node + ".maxstretch") + pm.connectAttr(self.slide_att, o_node + ".slide") + pm.connectAttr(self.softness_att, o_node + ".softness") + pm.connectAttr(self.reverse_att, o_node + ".reverse") # Twist references --------------------------------- - node = aop.gear_mulmatrix_op(self.eff_loc.attr("worldMatrix"), self.root.attr("worldInverseMatrix")) - dm_node = pm.createNode("decomposeMatrix") - pm.connectAttr(node+".output", dm_node+".inputMatrix") - pm.connectAttr(dm_node+".outputTranslate", self.tws2_npo.attr("translate")) - + o_node = applyop.gear_mulmatrix_op( + self.eff_loc.attr("worldMatrix"), + self.root.attr("worldInverseMatrix")) dm_node = pm.createNode("decomposeMatrix") - pm.connectAttr(node+".output", dm_node+".inputMatrix") - pm.connectAttr(dm_node+".outputRotate", self.tws2_npo.attr("rotate")) - - #spline IK for twist jnts - self.ikhArmTwist, self.armTwistCrv = aop.splineIK(self.getName("armTwist"), self.armTwistChain, parent=self.root, cParent=self.bone0 ) - self.ikhForearmTwist, self.forearmTwistCrv = aop.splineIK(self.getName("forearmTwist"), self.forearmTwistChain, parent=self.root, cParent=self.bone1 ) + pm.connectAttr(o_node + ".output", dm_node + ".inputMatrix") + pm.connectAttr(dm_node + ".outputTranslate", + self.tws2_npo.attr("translate")) - #references - self.ikhArmRef, self.tmpCrv = aop.splineIK(self.getName("armRollRef"), self.armRollRef, parent=self.root, cParent=self.bone0 ) - self.ikhForearmRef, self.tmpCrv = aop.splineIK(self.getName("forearmRollRef"), self.forearmRollRef, parent=self.root, cParent=self.eff_loc ) - self.ikhAuxTwist, self.tmpCrv = aop.splineIK(self.getName("auxTwist"), self.auxTwistChain, parent=self.root, cParent=self.eff_loc ) - - #setting connexions for ikhArmTwist + dm_node = pm.createNode("decomposeMatrix") + pm.connectAttr(o_node + ".output", dm_node + ".inputMatrix") + pm.connectAttr(dm_node + ".outputRotate", self.tws2_npo.attr("rotate")) + + # spline IK for twist jnts + self.ikhArmTwist, self.armTwistCrv = applyop.splineIK( + self.getName("armTwist"), + self.armTwistChain, + parent=self.root, + cParent=self.bone0) + + self.ikhForearmTwist, self.forearmTwistCrv = applyop.splineIK( + self.getName("forearmTwist"), + self.forearmTwistChain, + parent=self.root, + cParent=self.bone1) + + # references + self.ikhArmRef, self.tmpCrv = applyop.splineIK( + self.getName("armRollRef"), + self.armRollRef, + parent=self.root, + cParent=self.bone0) + + self.ikhForearmRef, self.tmpCrv = applyop.splineIK( + self.getName("forearmRollRef"), + self.forearmRollRef, + parent=self.root, + cParent=self.eff_loc) + + self.ikhAuxTwist, self.tmpCrv = applyop.splineIK( + self.getName("auxTwist"), + self.auxTwistChain, + parent=self.root, + cParent=self.eff_loc) + + # setting connexions for ikhArmTwist self.ikhArmTwist.attr("dTwistControlEnable").set(True) self.ikhArmTwist.attr("dWorldUpType").set(4) self.ikhArmTwist.attr("dWorldUpAxis").set(3) @@ -480,10 +905,13 @@ def addOperators(self): self.ikhArmTwist.attr("dWorldUpVectorY").set(0.0) self.ikhArmTwist.attr("dWorldUpVectorEndZ").set(1.0) self.ikhArmTwist.attr("dWorldUpVectorEndY").set(0.0) - pm.connectAttr(self.armRollRef[0].attr("worldMatrix[0]"), self.ikhArmTwist.attr("dWorldUpMatrix")) - pm.connectAttr(self.bone0.attr("worldMatrix[0]"), self.ikhArmTwist.attr("dWorldUpMatrixEnd")) - #setting connexions for ikhAuxTwist + pm.connectAttr(self.armRollRef[0].attr("worldMatrix[0]"), + self.ikhArmTwist.attr("dWorldUpMatrix")) + pm.connectAttr(self.bone0.attr("worldMatrix[0]"), + self.ikhArmTwist.attr("dWorldUpMatrixEnd")) + + # setting connexions for ikhAuxTwist self.ikhAuxTwist.attr("dTwistControlEnable").set(True) self.ikhAuxTwist.attr("dWorldUpType").set(4) self.ikhAuxTwist.attr("dWorldUpAxis").set(3) @@ -491,162 +919,232 @@ def addOperators(self): self.ikhAuxTwist.attr("dWorldUpVectorY").set(0.0) self.ikhAuxTwist.attr("dWorldUpVectorEndZ").set(1.0) self.ikhAuxTwist.attr("dWorldUpVectorEndY").set(0.0) - pm.connectAttr(self.forearmRollRef[0].attr("worldMatrix[0]"), self.ikhAuxTwist.attr("dWorldUpMatrix")) - pm.connectAttr(self.eff_loc.attr("worldMatrix[0]"), self.ikhAuxTwist.attr("dWorldUpMatrixEnd")) - pm.connectAttr(self.auxTwistChain[1].attr("rx"), self.ikhForearmTwist.attr("twist")) + pm.connectAttr(self.forearmRollRef[0].attr("worldMatrix[0]"), + self.ikhAuxTwist.attr("dWorldUpMatrix")) + pm.connectAttr(self.eff_loc.attr("worldMatrix[0]"), + self.ikhAuxTwist.attr("dWorldUpMatrixEnd")) + pm.connectAttr(self.auxTwistChain[1].attr("rx"), + self.ikhForearmTwist.attr("twist")) pm.parentConstraint(self.bone1, self.aux_npo, maintainOffset=True) - #scale arm length for twist chain (not the squash and stretch) + # scale arm length for twist chain (not the squash and stretch) arclen_node = pm.arclen(self.armTwistCrv, ch=True) alAttrArm = arclen_node.attr("arcLength") - muldiv_nodeArm = pm.createNode("multiplyDivide") - pm.connectAttr(arclen_node.attr("arcLength"), muldiv_nodeArm.attr("input1X")) + muldiv_nodeArm = pm.createNode("multiplyDivide") + pm.connectAttr(arclen_node.attr("arcLength"), + muldiv_nodeArm.attr("input1X")) muldiv_nodeArm.attr("input2X").set(alAttrArm.get()) muldiv_nodeArm.attr("operation").set(2) for jnt in self.armTwistChain: - pm.connectAttr(muldiv_nodeArm.attr("outputX"),jnt.attr("sx")) + pm.connectAttr(muldiv_nodeArm.attr("outputX"), jnt.attr("sx")) - #scale forearm length for twist chain (not the squash and stretch) + # scale forearm length for twist chain (not the squash and stretch) arclen_node = pm.arclen(self.forearmTwistCrv, ch=True) alAttrForearm = arclen_node.attr("arcLength") - muldiv_nodeForearm = pm.createNode("multiplyDivide") - pm.connectAttr(arclen_node.attr("arcLength"), muldiv_nodeForearm.attr("input1X")) + muldiv_nodeForearm = pm.createNode("multiplyDivide") + pm.connectAttr(arclen_node.attr("arcLength"), + muldiv_nodeForearm.attr("input1X")) muldiv_nodeForearm.attr("input2X").set(alAttrForearm.get()) muldiv_nodeForearm.attr("operation").set(2) for jnt in self.forearmTwistChain: - pm.connectAttr(muldiv_nodeForearm.attr("outputX"),jnt.attr("sx")) + pm.connectAttr(muldiv_nodeForearm.attr("outputX"), jnt.attr("sx")) - #scale compensation for the first twist join + # scale compensation for the first twist join dm_node = pm.createNode("decomposeMatrix") - pm.connectAttr(self.root.attr("worldMatrix[0]"), dm_node.attr("inputMatrix")) - pm.connectAttr(dm_node.attr("outputScale"), self.armTwistChain[0].attr("inverseScale")) - pm.connectAttr(dm_node.attr("outputScale"), self.forearmTwistChain[0].attr("inverseScale")) - - #tangent controls - muldiv_node = pm.createNode("multiplyDivide") + pm.connectAttr(self.root.attr("worldMatrix[0]"), + dm_node.attr("inputMatrix")) + pm.connectAttr(dm_node.attr("outputScale"), + self.armTwistChain[0].attr("inverseScale")) + pm.connectAttr(dm_node.attr("outputScale"), + self.forearmTwistChain[0].attr("inverseScale")) + + # tangent controls + muldiv_node = pm.createNode("multiplyDivide") muldiv_node.attr("input2X").set(-1) pm.connectAttr(self.tws1A_npo.attr("rz"), muldiv_node.attr("input1X")) - muldiv_nodeBias = pm.createNode("multiplyDivide") - pm.connectAttr(muldiv_node.attr("outputX"), muldiv_nodeBias.attr("input1X")) + muldiv_nodeBias = pm.createNode("multiplyDivide") + pm.connectAttr(muldiv_node.attr("outputX"), + muldiv_nodeBias.attr("input1X")) pm.connectAttr(self.roundness_att, muldiv_nodeBias.attr("input2X")) - pm.connectAttr(muldiv_nodeBias.attr("outputX"), self.tws1A_loc.attr("rz") ) + pm.connectAttr(muldiv_nodeBias.attr("outputX"), + self.tws1A_loc.attr("rz")) if self.negate: axis = "xz" else: axis = "-xz" - aop.aimCns(self.tws1A_npo, self.tws0_loc, axis=axis, wupType=2, wupVector=[0,0,1], wupObject=self.mid_ctl, maintainOffset=False) + applyop.aimCns(self.tws1A_npo, + self.tws0_loc, + axis=axis, + wupType=2, + wupVector=[0, 0, 1], + wupObject=self.mid_ctl, + maintainOffset=False) + + applyop.aimCns(self.forearmTangentB_loc, + self.forearmTangentA_npo, + axis=axis, + wupType=2, + wupVector=[0, 0, 1], + wupObject=self.mid_ctl, + maintainOffset=False) - aop.aimCns(self.forearmTangentB_loc, self.forearmTangentA_npo, axis=axis, wupType=2, wupVector=[0,0,1], wupObject=self.mid_ctl, maintainOffset=False) pm.pointConstraint(self.eff_loc, self.forearmTangentB_loc) - - muldiv_node = pm.createNode("multiplyDivide") + muldiv_node = pm.createNode("multiplyDivide") muldiv_node.attr("input2X").set(-1) pm.connectAttr(self.tws1B_npo.attr("rz"), muldiv_node.attr("input1X")) - muldiv_nodeBias = pm.createNode("multiplyDivide") - pm.connectAttr(muldiv_node.attr("outputX"), muldiv_nodeBias.attr("input1X")) - pm.connectAttr(self.roundness_att, muldiv_nodeBias.attr("input2X")) - pm.connectAttr(muldiv_nodeBias.attr("outputX"), self.tws1B_loc.attr("rz") ) + muldiv_nodeBias = pm.createNode("multiplyDivide") + pm.connectAttr(muldiv_node.attr("outputX"), + muldiv_nodeBias.attr("input1X")) + pm.connectAttr(self.roundness_att, + muldiv_nodeBias.attr("input2X")) + pm.connectAttr(muldiv_nodeBias.attr("outputX"), + self.tws1B_loc.attr("rz")) if self.negate: axis = "-xz" else: axis = "xz" - aop.aimCns(self.tws1B_npo, self.tws2_loc, axis=axis, wupType=2, wupVector=[0,0,1], wupObject=self.mid_ctl, maintainOffset=False) - - aop.aimCns(self.armTangentA_loc, self.armTangentB_npo, axis=axis, wupType=2, wupVector=[0,0,1], wupObject=self.mid_ctl, maintainOffset=False) + applyop.aimCns(self.tws1B_npo, + self.tws2_loc, + axis=axis, + wupType=2, + wupVector=[0, 0, 1], + wupObject=self.mid_ctl, + maintainOffset=False) + + applyop.aimCns(self.armTangentA_loc, + self.armTangentB_npo, + axis=axis, + wupType=2, + wupVector=[0, 0, 1], + wupObject=self.mid_ctl, + maintainOffset=False) # Volume ------------------------------------------- - distA_node = nod.createDistNode(self.tws0_loc, self.tws1_loc) - distB_node = nod.createDistNode(self.tws1_loc, self.tws2_loc) - add_node = nod.createAddNode(distA_node+".distance", distB_node+".distance") - div_node = nod.createDivNode(add_node+".output", self.root.attr("sx")) + distA_node = node.createDistNode(self.tws0_loc, self.tws1_loc) + distB_node = node.createDistNode(self.tws1_loc, self.tws2_loc) + add_node = node.createAddNode(distA_node + ".distance", + distB_node + ".distance") + div_node = node.createDivNode(add_node + ".output", + self.root.attr("sx")) dm_node = pm.createNode("decomposeMatrix") - pm.connectAttr(self.root.attr("worldMatrix"), dm_node+".inputMatrix") - - div_node2 = nod.createDivNode(div_node+".outputX", dm_node+".outputScaleX") - self.volDriver_att = div_node2+".outputX" - - # connecting tangent scaele compensation after volume to aboid duplicate some nodes ------------------------------ - distA_node = nod.createDistNode(self.tws0_loc, self.mid_ctl) - distB_node = nod.createDistNode(self.mid_ctl, self.tws2_loc) - - - div_nodeArm = nod.createDivNode(distA_node+".distance", dm_node.attr("outputScaleX")) - div_node2 = nod.createDivNode(div_nodeArm+".outputX", distA_node.attr("distance").get()) - pm.connectAttr(div_node2.attr("outputX"), self.tws1A_loc.attr("sx")) - pm.connectAttr(div_node2.attr("outputX"), self.armTangentA_loc.attr("sx")) - - div_nodeForearm = nod.createDivNode(distB_node+".distance", dm_node.attr("outputScaleX")) - div_node2 = nod.createDivNode(div_nodeForearm+".outputX", distB_node.attr("distance").get()) - pm.connectAttr(div_node2.attr("outputX"), self.tws1B_loc.attr("sx")) - pm.connectAttr(div_node2.attr("outputX"), self.forearmTangentB_loc.attr("sx")) - - #conection curve - aop.gear_curvecns_op(self.armTwistCrv, [ self.armTangentA_loc, self.armTangentA_ctl, self.armTangentB_ctl,self.elbowTangent_ctl ]) - aop.gear_curvecns_op(self.forearmTwistCrv, [ self.elbowTangent_ctl, self.forearmTangentA_ctl, self.forearmTangentB_ctl,self.forearmTangentB_loc ]) - - #Tangent controls vis + pm.connectAttr(self.root.attr("worldMatrix"), dm_node + ".inputMatrix") + + div_node2 = node.createDivNode(div_node + ".outputX", + dm_node + ".outputScaleX") + self.volDriver_att = div_node2 + ".outputX" + + # connecting tangent scaele compensation after + # volume to aboid duplicate some nodes + distA_node = node.createDistNode(self.tws0_loc, self.mid_ctl) + distB_node = node.createDistNode(self.mid_ctl, self.tws2_loc) + + div_nodeArm = node.createDivNode(distA_node + ".distance", + dm_node.attr("outputScaleX")) + div_node2 = node.createDivNode(div_nodeArm + ".outputX", + distA_node.attr("distance").get()) + pm.connectAttr(div_node2.attr("outputX"), + self.tws1A_loc.attr("sx")) + pm.connectAttr(div_node2.attr("outputX"), + self.armTangentA_loc.attr("sx")) + + div_nodeForearm = node.createDivNode(distB_node + ".distance", + dm_node.attr("outputScaleX")) + div_node2 = node.createDivNode(div_nodeForearm + ".outputX", + distB_node.attr("distance").get()) + pm.connectAttr(div_node2.attr("outputX"), + self.tws1B_loc.attr("sx")) + pm.connectAttr(div_node2.attr("outputX"), + self.forearmTangentB_loc.attr("sx")) + + # conection curve + cns_list = [self.armTangentA_loc, self.armTangentA_ctl, + self.armTangentB_ctl, self.elbowTangent_ctl] + applyop.gear_curvecns_op(self.armTwistCrv, cns_list) + + cns_list = [self.elbowTangent_ctl, self.forearmTangentA_ctl, + self.forearmTangentB_ctl, self.forearmTangentB_loc] + applyop.gear_curvecns_op(self.forearmTwistCrv, cns_list) + + # Tangent controls vis for shp in self.armTangentA_ctl.getShapes(): - pm.connectAttr( self.tangentVis_att, shp.attr("visibility")) + pm.connectAttr(self.tangentVis_att, shp.attr("visibility")) for shp in self.armTangentB_ctl.getShapes(): - pm.connectAttr( self.tangentVis_att, shp.attr("visibility")) + pm.connectAttr(self.tangentVis_att, shp.attr("visibility")) for shp in self.forearmTangentA_ctl.getShapes(): - pm.connectAttr( self.tangentVis_att, shp.attr("visibility")) + pm.connectAttr(self.tangentVis_att, shp.attr("visibility")) for shp in self.forearmTangentB_ctl.getShapes(): - pm.connectAttr( self.tangentVis_att, shp.attr("visibility")) + pm.connectAttr(self.tangentVis_att, shp.attr("visibility")) for shp in self.elbowTangent_ctl.getShapes(): - pm.connectAttr( self.tangentVis_att, shp.attr("visibility")) + pm.connectAttr(self.tangentVis_att, shp.attr("visibility")) # Divisions ---------------------------------------- - # at 0 or 1 the division will follow exactly the rotation of the controler.. and we wont have this nice tangent + roll + # attribute 0 or 1 the division will follow exactly the rotation of + # the controler.. and we wont have this nice tangent + roll for i, div_cns in enumerate(self.div_cns): - if i < (self.settings["div0"]+2): - mulmat_node = aop.gear_mulmatrix_op(self.armTwistChain[i]+".worldMatrix", div_cns+".parentInverseMatrix") + if i < (self.settings["div0"] + 2): + mulmat_node = applyop.gear_mulmatrix_op( + self.armTwistChain[i] + ".worldMatrix", + div_cns + ".parentInverseMatrix") lastArmDiv = div_cns else: - mulmat_node = aop.gear_mulmatrix_op(self.forearmTwistChain[i-(self.settings["div0"]+2)]+".worldMatrix", div_cns+".parentInverseMatrix") + ftc = self.forearmTwistChain[i - (self.settings["div0"] + 2)] + mulmat_node = applyop.gear_mulmatrix_op( + ftc + ".worldMatrix", + div_cns + ".parentInverseMatrix") lastForeDiv = div_cns - dm_node = nod.createDecomposeMatrixNode(mulmat_node+".output") - pm.connectAttr(dm_node+".outputTranslate", div_cns+".t") - pm.connectAttr(dm_node+".outputRotate", div_cns+".r") - # Squash n Stretch - node = aop.gear_squashstretch2_op(div_cns, None, pm.getAttr(self.volDriver_att), "x") - pm.connectAttr(self.volume_att, node+".blend") - pm.connectAttr(self.volDriver_att, node+".driver") - pm.connectAttr(self.st_att[i], node+".stretch") - pm.connectAttr(self.sq_att[i], node+".squash") + dm_node = node.createDecomposeMatrixNode(mulmat_node + ".output") + pm.connectAttr(dm_node + ".outputTranslate", div_cns + ".t") + pm.connectAttr(dm_node + ".outputRotate", div_cns + ".r") - #force translation for last loc arm and foreamr - aop.gear_mulmatrix_op(self.elbowTangent_ctl.worldMatrix,lastArmDiv.parentInverseMatrix, lastArmDiv, "t" ) - aop.gear_mulmatrix_op(self.tws2_loc.worldMatrix,lastForeDiv.parentInverseMatrix, lastForeDiv, "t" ) + # Squash n Stretch + o_node = applyop.gear_squashstretch2_op( + div_cns, + None, + pm.getAttr(self.volDriver_att), + "x") + pm.connectAttr(self.volume_att, o_node + ".blend") + pm.connectAttr(self.volDriver_att, o_node + ".driver") + pm.connectAttr(self.st_att[i], o_node + ".stretch") + pm.connectAttr(self.sq_att[i], o_node + ".squash") + + # force translation for last loc arm and foreamr + applyop.gear_mulmatrix_op(self.elbowTangent_ctl.worldMatrix, + lastArmDiv.parentInverseMatrix, + lastArmDiv, + "t") + applyop.gear_mulmatrix_op(self.tws2_loc.worldMatrix, + lastForeDiv.parentInverseMatrix, + lastForeDiv, + "t") # return # NOTE: next line fix the issue on meters. - # This is special case becasuse the IK solver from mGear use the scale as lenght and we have shear - # TODO: check for a more clean and elegant solution instead of re-match the world matrix again - tra.matchWorldTransform(self.fk_ctl[0], self.match_fk0_off) - tra.matchWorldTransform(self.fk_ctl[1], self.match_fk1_off) - tra.matchWorldTransform(self.fk_ctl[0], self.match_fk0) - tra.matchWorldTransform(self.fk_ctl[1], self.match_fk1) + # This is special case becasuse the IK solver from mGear use the scale + # as lenght and we have shear + # TODO: check for a more clean and elegant solution instead of re-match + # the world matrix again + transform.matchWorldTransform(self.fk_ctl[0], self.match_fk0_off) + transform.matchWorldTransform(self.fk_ctl[1], self.match_fk1_off) + transform.matchWorldTransform(self.fk_ctl[0], self.match_fk0) + transform.matchWorldTransform(self.fk_ctl[1], self.match_fk1) # match IK/FK ref pm.parentConstraint(self.bone0, self.match_fk0_off, mo=True) pm.parentConstraint(self.bone1, self.match_fk1_off, mo=True) if self.settings["ikTR"]: - tra.matchWorldTransform(self.ikRot_ctl,self.match_ikRot ) - tra.matchWorldTransform(self.fk_ctl[2], self.match_fk2 ) - + transform.matchWorldTransform(self.ikRot_ctl, self.match_ikRot) + transform.matchWorldTransform(self.fk_ctl[2], self.match_fk2) # ===================================================== # CONNECTOR # ===================================================== - ## Set the relation beetween object from guide to rig.\n - # @param self def setRelation(self): + """Set the relation beetween object from guide to rig""" self.relatives["root"] = self.div_cns[0] self.relatives["elbow"] = self.div_cns[self.settings["div0"] + 2] self.relatives["wrist"] = self.div_cns[-1] @@ -654,7 +1152,7 @@ def setRelation(self): self.jointRelatives["root"] = 0 self.jointRelatives["elbow"] = self.settings["div0"] + 2 - self.jointRelatives["wrist"] = len(self.div_cns)-2 + self.jointRelatives["wrist"] = len(self.div_cns) - 2 self.jointRelatives["eff"] = -1 self.controlRelatives["root"] = self.fk0_ctl @@ -662,31 +1160,40 @@ def setRelation(self): self.controlRelatives["wrist"] = self.fk2_ctl self.controlRelatives["eff"] = self.fk2_ctl - ## Add more connection definition to the set. - # @param self def addConnection(self): + """Add more connection definition to the set""" + self.connections["shoulder_01"] = self.connect_shoulder_01 - ## standard connection definition. - # @param self def connect_standard(self): + """standard connection definition for the component""" + if self.settings["ikTR"]: self.parent.addChild(self.root) self.connectRef(self.settings["ikrefarray"], self.ik_cns) self.connectRef(self.settings["upvrefarray"], self.upv_cns, True) if self.settings["ikrefarray"]: - ikRotRefArray = "Auto,ik_ctl,"+self.settings["ikrefarray"] + ikRotRefArray = "Auto,ik_ctl," + self.settings["ikrefarray"] else: ikRotRefArray = "Auto,ik_ctl" - self.connectRef2(ikRotRefArray, self.ikRot_cns, self.ikRotRef_att, [self.ikRot_npo, self.ik_ctl], True) + self.connectRef2(ikRotRefArray, + self.ikRot_cns, + self.ikRotRef_att, + [self.ikRot_npo, self.ik_ctl], + True) else: self.connect_standardWithIkRef() if self.settings["pinrefarray"]: - self.connectRef2("Auto,"+ self.settings["pinrefarray"], self.mid_cns, self.pin_att, [self.ctrn_loc], False) - + self.connectRef2("Auto," + self.settings["pinrefarray"], + self.mid_cns, + self.pin_att, + [self.ctrn_loc], + False) def connect_shoulder_01(self): + """ Custom connection to be use with shoulder 01 component""" + self.connect_standard() - pm.parent(self.armRollRef[0],self.parent_comp.ctl) + pm.parent(self.armRollRef[0], self.parent_comp.ctl) diff --git a/scripts/mgear/maya/shifter/component/arm_2jnt_freeTangents_01/guide.py b/scripts/mgear/maya/shifter/component/arm_2jnt_freeTangents_01/guide.py index 78080d4..bf6f693 100644 --- a/scripts/mgear/maya/shifter/component/arm_2jnt_freeTangents_01/guide.py +++ b/scripts/mgear/maya/shifter/component/arm_2jnt_freeTangents_01/guide.py @@ -1,61 +1,34 @@ -# MGEAR is under the terms of the MIT License +"""Guide Arm 2 joints 01 module""" -# Copyright (c) 2016 Jeremie Passerin, Miquel Campos - -# Permission is hereby granted, free of charge, to any person obtaining a copy -# of this software and associated documentation files (the "Software"), to deal -# in the Software without restriction, including without limitation the rights -# to use, copy, modify, merge, publish, distribute, sublicense, and/or sell -# copies of the Software, and to permit persons to whom the Software is -# furnished to do so, subject to the following conditions: - -# The above copyright notice and this permission notice shall be included in all -# copies or substantial portions of the Software. - -# THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR -# IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, -# FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE -# AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER -# LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, -# OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE -# SOFTWARE. - -# Author: Jeremie Passerin geerem@hotmail.com www.jeremiepasserin.com -# Author: Miquel Campos hello@miquel-campos.com www.miquel-campos.com -# Date: 2016 / 10 / 10 - -########################################################## -# GLOBAL -########################################################## from functools import partial import pymel.core as pm -# mgear -from mgear.maya.shifter.component.guide import ComponentGuide - -import mgear.maya.transform as tra +from mgear.maya.shifter.component import guide +from mgear.maya import transform, pyqt +from mgear.vendor.Qt import QtWidgets, QtCore -#Pyside -from mgear.maya.shifter.component.guide import componentMainSettings -import mgear.maya.pyqt as gqt from maya.app.general.mayaMixin import MayaQWidgetDockableMixin from maya.app.general.mayaMixin import MayaQDockWidget + import settingsUI as sui -QtGui, QtCore, QtWidgets, wrapInstance = gqt.qt_import() # guide info AUTHOR = "Jeremie Passerin, Miquel Campos" URL = "www.jeremiepasserin.com, www.miquel-campos.com" EMAIL = "geerem@hotmail.com, hello@miquel-campos.com" -VERSION = [1,3,0] +VERSION = [1, 3, 0] TYPE = "arm_2jnt_freeTangents_01" NAME = "arm" -DESCRIPTION = "2 bones arm with classic bendy/roll arms. With elbow pin and only one central tangent" +DESCRIPTION = "2 bones arm with classic bendy/roll arms. With elbow pin and " \ + "only one central tangent" ########################################################## # CLASS ########################################################## -class Guide(ComponentGuide): + + +class Guide(guide.ComponentGuide): + """Component Guide Class""" compType = TYPE compName = NAME @@ -68,55 +41,55 @@ class Guide(ComponentGuide): connectors = ["shoulder_01"] - # ===================================================== - ## - # @param self def postInit(self): + """Initialize the position for the guide""" self.save_transform = ["root", "elbow", "wrist", "eff"] - # ===================================================== - ## Add more object to the object definition list. - # @param self def addObjects(self): + """Add the Guide Root, blade and locators""" self.root = self.addRoot() - vTemp = tra.getOffsetPosition( self.root, [3,0,-.01]) + vTemp = transform.getOffsetPosition(self.root, [3, 0, -.01]) self.elbow = self.addLoc("elbow", self.root, vTemp) - vTemp = tra.getOffsetPosition( self.root, [6,0,0]) + vTemp = transform.getOffsetPosition(self.root, [6, 0, 0]) self.wrist = self.addLoc("wrist", self.elbow, vTemp) - vTemp = tra.getOffsetPosition( self.root, [7,0,0]) + vTemp = transform.getOffsetPosition(self.root, [7, 0, 0]) self.eff = self.addLoc("eff", self.wrist, vTemp) - self.dispcrv = self.addDispCurve("crv", [self.root, self.elbow, self.wrist, self.eff]) + self.dispcrv = self.addDispCurve( + "crv", + [self.root, self.elbow, self.wrist, self.eff]) - # ===================================================== - ## Add more parameter to the parameter definition list. - # @param self def addParameters(self): + """Add the configurations settings""" # Default Values - self.pBlend = self.addParam("blend", "double", 1, 0, 1) - self.pIkRefArray = self.addParam("ikrefarray", "string", "") + self.pBlend = self.addParam("blend", "double", 1, 0, 1) + self.pIkRefArray = self.addParam("ikrefarray", "string", "") self.pUpvRefArray = self.addParam("upvrefarray", "string", "") self.pUpvRefArray = self.addParam("pinrefarray", "string", "") - self.pMaxStretch = self.addParam("maxstretch", "double", 1.5 , 1, None) - self.pIKTR = self.addParam("ikTR", "bool", False) + self.pMaxStretch = self.addParam("maxstretch", "double", 1.5, 1, None) + self.pIKTR = self.addParam("ikTR", "bool", False) self.pMirrorMid = self.addParam("mirrorMid", "bool", False) self.pMirrorIK = self.addParam("mirrorIK", "bool", False) - # Divisions self.pDiv0 = self.addParam("div0", "long", 2, 1, None) self.pDiv1 = self.addParam("div1", "long", 2, 1, None) # FCurves - self.pSt_profile = self.addFCurveParam("st_profile", [[0,0],[.5,-.5],[1,0]]) - self.pSq_profile = self.addFCurveParam("sq_profile", [[0,0],[.5,.5],[1,0]]) - - self.pUseIndex = self.addParam("useIndex", "bool", False) - self.pParentJointIndex = self.addParam("parentJointIndex", "long", -1, None, None) + self.pSt_profile = self.addFCurveParam("st_profile", + [[0, 0], [.5, -.5], [1, 0]]) + self.pSq_profile = self.addFCurveParam("sq_profile", + [[0, 0], [.5, .5], [1, 0]]) + self.pUseIndex = self.addParam("useIndex", "bool", False) + self.pParentJointIndex = self.addParam("parentJointIndex", + "long", + -1, + None, + None) ########################################################## @@ -124,23 +97,24 @@ def addParameters(self): ########################################################## class settingsTab(QtWidgets.QDialog, sui.Ui_Form): + """The Component settings UI""" def __init__(self, parent=None): super(settingsTab, self).__init__(parent) self.setupUi(self) -class componentSettings(MayaQWidgetDockableMixin, componentMainSettings): +class componentSettings(MayaQWidgetDockableMixin, guide.componentMainSettings): + """Create the component setting window""" - def __init__(self, parent = None): + def __init__(self, parent=None): self.toolName = TYPE # Delete old instances of the componet settings window. - gqt.deleteInstances(self, MayaQDockWidget) + pyqt.deleteInstances(self, MayaQDockWidget) - super(self.__class__, self).__init__(parent = parent) + super(self.__class__, self).__init__(parent=parent) self.settingsTab = settingsTab() - self.setup_componentSettingWindow() self.create_componentControls() self.populate_componentControls() @@ -148,7 +122,7 @@ def __init__(self, parent = None): self.create_componentConnections() def setup_componentSettingWindow(self): - self.mayaMainWindow = gqt.maya_main_window() + self.mayaMainWindow = pyqt.maya_main_window() self.setObjectName(self.toolName) self.setWindowFlags(QtCore.Qt.Window) @@ -158,19 +132,23 @@ def setup_componentSettingWindow(self): def create_componentControls(self): return - def populate_componentControls(self): - """ - Populate the controls values from the custom attributes of the component. + """Populate Controls + + Populate the controls values from the custom attributes of the + component. """ - #populate tab + # populate tab self.tabs.insertTab(1, self.settingsTab, "Component Settings") - #populate component settings - self.settingsTab.ikfk_slider.setValue(int(self.root.attr("blend").get()*100)) - self.settingsTab.ikfk_spinBox.setValue(int(self.root.attr("blend").get()*100)) - self.settingsTab.maxStretch_spinBox.setValue(self.root.attr("maxstretch").get()) + # populate component settings + self.settingsTab.ikfk_slider.setValue( + int(self.root.attr("blend").get() * 100)) + self.settingsTab.ikfk_spinBox.setValue( + int(self.root.attr("blend").get() * 100)) + self.settingsTab.maxStretch_spinBox.setValue( + self.root.attr("maxstretch").get()) self.populateCheck(self.settingsTab.ikTR_checkBox, "ikTR") self.populateCheck(self.settingsTab.mirrorMid_checkBox, "mirrorMid") self.populateCheck(self.settingsTab.mirrorIK_checkBox, "mirrorIK") @@ -186,19 +164,25 @@ def populate_componentControls(self): for item in pinRefArrayItems: self.settingsTab.pinRefArray_listWidget.addItem(item) - #populate connections in main settings + # populate connections in main settings for cnx in Guide.connectors: self.mainSettingsTab.connector_comboBox.addItem(cnx) - self.connector_items = [ self.mainSettingsTab.connector_comboBox.itemText(i) for i in range( self.mainSettingsTab.connector_comboBox.count())] + + sll = [self.mainSettingsTab.connector_comboBox.itemText(i) + for i in + range(self.mainSettingsTab.connector_comboBox.count())] + + self.connector_items = sll currentConnector = self.root.attr("connector").get() if currentConnector not in self.connector_items: self.mainSettingsTab.connector_comboBox.addItem(currentConnector) self.connector_items.append(currentConnector) - pm.displayWarning("The current connector: %s, is not a valid connector for this component. Build will Fail!!") + pm.displayWarning( + "The current connector: %s, is not a valid " + "connector for this component. Build will Fail!!") comboIndex = self.connector_items.index(currentConnector) self.mainSettingsTab.connector_comboBox.setCurrentIndex(comboIndex) - def create_componentLayout(self): self.settings_layout = QtWidgets.QVBoxLayout() @@ -209,29 +193,86 @@ def create_componentLayout(self): def create_componentConnections(self): - self.settingsTab.ikfk_slider.valueChanged.connect(partial(self.updateSlider, self.settingsTab.ikfk_slider, "blend")) - self.settingsTab.ikfk_spinBox.valueChanged.connect(partial(self.updateSlider, self.settingsTab.ikfk_spinBox, "blend")) - self.settingsTab.maxStretch_spinBox.valueChanged.connect(partial(self.updateSpinBox, self.settingsTab.maxStretch_spinBox, "maxstretch")) - self.settingsTab.div0_spinBox.valueChanged.connect(partial(self.updateSpinBox, self.settingsTab.div0_spinBox, "div0")) - self.settingsTab.div1_spinBox.valueChanged.connect(partial(self.updateSpinBox, self.settingsTab.div1_spinBox, "div1")) - self.settingsTab.squashStretchProfile_pushButton.clicked.connect(self.setProfile) - self.settingsTab.ikTR_checkBox.stateChanged.connect(partial(self.updateCheck, self.settingsTab.ikTR_checkBox, "ikTR")) - self.settingsTab.mirrorMid_checkBox.stateChanged.connect(partial(self.updateCheck, self.settingsTab.mirrorMid_checkBox, "mirrorMid")) - self.settingsTab.mirrorIK_checkBox.stateChanged.connect(partial(self.updateCheck, self.settingsTab.mirrorIK_checkBox, "mirrorIK")) - - self.settingsTab.ikRefArrayAdd_pushButton.clicked.connect(partial(self.addItem2listWidget, self.settingsTab.ikRefArray_listWidget, "ikrefarray")) - self.settingsTab.ikRefArrayRemove_pushButton.clicked.connect(partial(self.removeSelectedFromListWidget, self.settingsTab.ikRefArray_listWidget, "ikrefarray")) - self.settingsTab.ikRefArray_copyRef_pushButton.clicked.connect(partial(self.copyFromListWidget, self.settingsTab.upvRefArray_listWidget, self.settingsTab.ikRefArray_listWidget, "ikrefarray")) + self.settingsTab.ikfk_slider.valueChanged.connect( + partial(self.updateSlider, self.settingsTab.ikfk_slider, "blend")) + + self.settingsTab.ikfk_spinBox.valueChanged.connect( + partial(self.updateSlider, self.settingsTab.ikfk_spinBox, "blend")) + + self.settingsTab.maxStretch_spinBox.valueChanged.connect( + partial(self.updateSpinBox, + self.settingsTab.maxStretch_spinBox, + "maxstretch")) + + self.settingsTab.div0_spinBox.valueChanged.connect( + partial(self.updateSpinBox, self.settingsTab.div0_spinBox, "div0")) + + self.settingsTab.div1_spinBox.valueChanged.connect( + partial(self.updateSpinBox, self.settingsTab.div1_spinBox, "div1")) + + self.settingsTab.squashStretchProfile_pushButton.clicked.connect( + self.setProfile) + + self.settingsTab.ikTR_checkBox.stateChanged.connect( + partial(self.updateCheck, self.settingsTab.ikTR_checkBox, "ikTR")) + + self.settingsTab.mirrorMid_checkBox.stateChanged.connect( + partial(self.updateCheck, + self.settingsTab.mirrorMid_checkBox, + "mirrorMid")) + self.settingsTab.mirrorIK_checkBox.stateChanged.connect( + partial(self.updateCheck, + self.settingsTab.mirrorIK_checkBox, + "mirrorIK")) + + self.settingsTab.ikRefArrayAdd_pushButton.clicked.connect( + partial(self.addItem2listWidget, + self.settingsTab.ikRefArray_listWidget, + "ikrefarray")) + + self.settingsTab.ikRefArrayRemove_pushButton.clicked.connect( + partial(self.removeSelectedFromListWidget, + self.settingsTab.ikRefArray_listWidget, + "ikrefarray")) + + self.settingsTab.ikRefArray_copyRef_pushButton.clicked.connect( + partial(self.copyFromListWidget, + self.settingsTab.upvRefArray_listWidget, + self.settingsTab.ikRefArray_listWidget, + "ikrefarray")) self.settingsTab.ikRefArray_listWidget.installEventFilter(self) - self.settingsTab.upvRefArrayAdd_pushButton.clicked.connect(partial(self.addItem2listWidget, self.settingsTab.upvRefArray_listWidget, "upvrefarray")) - self.settingsTab.upvRefArrayRemove_pushButton.clicked.connect(partial(self.removeSelectedFromListWidget, self.settingsTab.upvRefArray_listWidget, "upvrefarray")) - self.settingsTab.upvRefArray_copyRef_pushButton.clicked.connect(partial(self.copyFromListWidget, self.settingsTab.ikRefArray_listWidget, self.settingsTab.upvRefArray_listWidget, "upvrefarray")) + self.settingsTab.upvRefArrayAdd_pushButton.clicked.connect( + partial(self.addItem2listWidget, + self.settingsTab.upvRefArray_listWidget, + "upvrefarray")) + + self.settingsTab.upvRefArrayRemove_pushButton.clicked.connect( + partial(self.removeSelectedFromListWidget, + self.settingsTab.upvRefArray_listWidget, + "upvrefarray")) + + self.settingsTab.upvRefArray_copyRef_pushButton.clicked.connect( + partial(self.copyFromListWidget, + self.settingsTab.ikRefArray_listWidget, + self.settingsTab.upvRefArray_listWidget, + "upvrefarray")) self.settingsTab.upvRefArray_listWidget.installEventFilter(self) - self.settingsTab.pinRefArrayAdd_pushButton.clicked.connect(partial(self.addItem2listWidget, self.settingsTab.pinRefArray_listWidget, "pinrefarray")) - self.settingsTab.pinRefArrayRemove_pushButton.clicked.connect(partial(self.removeSelectedFromListWidget, self.settingsTab.pinRefArray_listWidget, "pinrefarray")) - self.settingsTab.pinRefArray_copyRef_pushButton.clicked.connect(partial(self.copyFromListWidget, self.settingsTab.ikRefArray_listWidget, self.settingsTab.pinRefArray_listWidget, "pinrefarray")) + self.settingsTab.pinRefArrayAdd_pushButton.clicked.connect( + partial(self.addItem2listWidget, + self.settingsTab.pinRefArray_listWidget, + "pinrefarray")) + self.settingsTab.pinRefArrayRemove_pushButton.clicked.connect( + partial(self.removeSelectedFromListWidget, + self.settingsTab.pinRefArray_listWidget, + "pinrefarray")) + + self.settingsTab.pinRefArray_copyRef_pushButton.clicked.connect( + partial(self.copyFromListWidget, + self.settingsTab.ikRefArray_listWidget, + self.settingsTab.pinRefArray_listWidget, + "pinrefarray")) self.settingsTab.pinRefArray_listWidget.installEventFilter(self) def eventFilter(self, sender, event): @@ -246,7 +287,5 @@ def eventFilter(self, sender, event): else: return QtWidgets.QDialog.eventFilter(self, sender, event) - - def dockCloseEventTriggered(self): - gqt.deleteInstances(self, MayaQDockWidget) + pyqt.deleteInstances(self, MayaQDockWidget) diff --git a/scripts/mgear/maya/shifter/component/squash_01/__init__.py b/scripts/mgear/maya/shifter/component/squash_01/__init__.py index 4e99421..caec27a 100644 --- a/scripts/mgear/maya/shifter/component/squash_01/__init__.py +++ b/scripts/mgear/maya/shifter/component/squash_01/__init__.py @@ -1,126 +1,145 @@ -# MGEAR is under the terms of the MIT License +"""Component Squash 01 module""" -# Copyright (c) 2016 Jeremie Passerin, Miquel Campos - -# Permission is hereby granted, free of charge, to any person obtaining a copy -# of this software and associated documentation files (the "Software"), to deal -# in the Software without restriction, including without limitation the rights -# to use, copy, modify, merge, publish, distribute, sublicense, and/or sell -# copies of the Software, and to permit persons to whom the Software is -# furnished to do so, subject to the following conditions: - -# The above copyright notice and this permission notice shall be included in all -# copies or substantial portions of the Software. - -# THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR -# IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, -# FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE -# AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER -# LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, -# OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE -# SOFTWARE. - -# Author: Jeremie Passerin geerem@hotmail.com www.jeremiepasserin.com -# Author: Miquel Campos hello@miquel-campos.com www.miquel-campos.com -# Date: 2016 / 10 / 10 - -########################################################## -# GLOBAL -########################################################## -# Maya import pymel.core as pm import pymel.core.datatypes as dt +from mgear.maya.shifter import component -# mgear -from mgear.maya.shifter.component import MainComponent - -import mgear.maya.primitive as pri -import mgear.maya.transform as tra -import mgear.maya.applyop as aop -import mgear.maya.attribute as att -import mgear.maya.node as nod -import mgear.maya.vector as vec - +from mgear.maya import primitive, transform, applyop, attribute, node, vector ########################################################## # COMPONENT ########################################################## -## The main component class. -class Component(MainComponent): + + +class Component(component.Main): + """Shifter component Class""" # ===================================================== # OBJECTS # ===================================================== - ## Add all the objects needed to create the component. - # @param self def addObjects(self): + """Add all the objects needed to create the component.""" - self.normal = self.guide.blades["blade"].z*-1 + self.normal = self.guide.blades["blade"].z * -1 self.binormal = self.guide.blades["blade"].x - t = tra.getTransformLookingAt(self.guide.apos[0], self.guide.apos[1], self.normal, axis="yx", negate=self.negate) - - self.ctl_npo = pri.addTransform(self.root, self.getName("ctl_npo"), t) - self.ctl = self.addCtl(self.ctl_npo, "base_ctl", t, self.color_ik, "square", w=1.0, tp=self.parentCtlTag) - - self.ref_base = pri.addTransform(self.ctl, self.getName("ref_base"), t) - - t = tra.setMatrixPosition(t, self.guide.apos[1]) - self.ik_cns = pri.addTransform(self.ctl, self.getName("ik_cns"), t) - self.squash_npo = pri.addTransform(self.ik_cns, self.getName("squash_npo"), t) - self.squash_ctl = self.addCtl(self.squash_npo, "squash_ctl", t, self.color_ik, "crossarrow", w=1.0, ro=dt.Vector(1.5708,0,0), tp=self.ctl) - att.setKeyableAttributes(self.squash_ctl, ["tx", "ty", "tz"] ) - - self.ref_squash = pri.addTransform(self.squash_ctl, self.getName("ref_squash"), t) + t = transform.getTransformLookingAt(self.guide.apos[0], + self.guide.apos[1], + self.normal, + axis="yx", + negate=self.negate) + self.ctl_npo = primitive.addTransform(self.root, + self.getName("ctl_npo"), t) + self.ctl = self.addCtl(self.ctl_npo, + "base_ctl", + t, + self.color_ik, + "square", + w=1.0, + tp=self.parentCtlTag) + + self.ref_base = primitive.addTransform(self.ctl, + self.getName("ref_base"), + t) + + t = transform.setMatrixPosition(t, self.guide.apos[1]) + + self.ik_cns = primitive.addTransform(self.ctl, + self.getName("ik_cns"), + t) + self.squash_npo = primitive.addTransform(self.ik_cns, + self.getName("squash_npo"), + t) + self.squash_ctl = self.addCtl(self.squash_npo, + "squash_ctl", + t, + self.color_ik, + "crossarrow", + w=1.0, + ro=dt.Vector(1.5708, 0, 0), + tp=self.ctl) + + attribute.setKeyableAttributes(self.squash_ctl, ["tx", "ty", "tz"]) + + self.ref_squash = primitive.addTransform(self.squash_ctl, + self.getName("ref_squash"), + t) self.div_cns = [] - div_cns = pri.addTransform(self.root, self.getName("div0_loc")) + div_cns = primitive.addTransform(self.root, self.getName("div0_loc")) self.div_cns.append(div_cns) self.jnt_pos.append([div_cns, 0, None, False]) - # ===================================================== - # PROPERTY + # ATTRIBUTES # ===================================================== - ## Add parameters to the anim and setup properties to control the component. - # @param self def addAttributes(self): + """Create the anim and setupr rig attributes for the component""" # Ref if self.settings["ikrefarray"]: ref_names = self.settings["ikrefarray"].split(",") if len(ref_names) > 1: - self.ikref_att = self.addAnimEnumParam("ikref", "Ik Ref", 0, self.settings["ikrefarray"].split(",")) + self.ikref_att = self.addAnimEnumParam( + "ikref", + "Ik Ref", + 0, + self.settings["ikrefarray"].split(",")) # ===================================================== # OPERATORS # ===================================================== - ## Apply operators, constraints, expressions to the hierarchy.\n - # In order to keep the code clean and easier to debug, - # we shouldn't create any new object in this method. - # @param self def addOperators(self): - aop.aimCns(self.ref_base, self.squash_ctl, axis="yx", wupType=2, wupVector=[1,0,0], wupObject=self.ctl, maintainOffset=False) - aop.aimCns(self.ref_squash, self.ctl, axis="-yx", wupType=2, wupVector=[1,0,0], wupObject=self.squash_ctl, maintainOffset=False) + """Create operators and set the relations for the component rig + + Apply operators/Solvers, constraints, expressions to the hierarchy. + In order to keep the code clean and easier to debug, + we shouldn't create any new object in this method. + + """ + applyop.aimCns(self.ref_base, + self.squash_ctl, + axis="yx", + wupType=2, + wupVector=[1, 0, 0], + wupObject=self.ctl, + maintainOffset=False) + applyop.aimCns(self.ref_squash, + self.ctl, + axis="-yx", + wupType=2, + wupVector=[1, 0, 0], + wupObject=self.squash_ctl, + maintainOffset=False) bIncrement = 1.0 - blend=0 + blend = 0 for i, div_cns in enumerate(self.div_cns): - intMatrix = aop.gear_intmatrix_op(self.ref_base.attr("worldMatrix"), self.ref_squash.attr("worldMatrix"), blend) - aop.gear_mulmatrix_op(intMatrix.attr("output"), div_cns.attr("parentInverseMatrix[0]"), div_cns) + intMatrix = applyop.gear_intmatrix_op( + self.ref_base.attr("worldMatrix"), + self.ref_squash.attr("worldMatrix"), + blend) - blend = blend+bIncrement + applyop.gear_mulmatrix_op(intMatrix.attr("output"), + div_cns.attr("parentInverseMatrix[0]"), + div_cns) - d = vec.getDistance(self.guide.apos[0], self.guide.apos[1]) - dist_node = nod.createDistNode(self.squash_ctl, self.ctl) - rootWorld_node = nod.createDecomposeMatrixNode(self.ctl.attr("worldMatrix")) - div_node = nod.createDivNode(dist_node+".distance", rootWorld_node+".outputScaleY") - div_node = nod.createDivNode(div_node+".outputX", d) - rev_node = nod.createReverseNode(div_node+".outputX") - add_node = pm.createNode("plusMinusAverage") + blend = blend + bIncrement + d = vector.getDistance(self.guide.apos[0], self.guide.apos[1]) + dist_node = node.createDistNode(self.squash_ctl, self.ctl) + + rootWorld_node = node.createDecomposeMatrixNode( + self.ctl.attr("worldMatrix")) + + div_node = node.createDivNode(dist_node + ".distance", + rootWorld_node + ".outputScaleY") + + div_node = node.createDivNode(div_node + ".outputX", d) + rev_node = node.createReverseNode(div_node + ".outputX") + add_node = pm.createNode("plusMinusAverage") add_node.input1D[0].set(1.0) rev_node.outputX >> add_node.input1D[1] @@ -129,26 +148,24 @@ def addOperators(self): add_node.output1D >> self.ref_base.scaleX add_node.output1D >> self.ref_base.scaleZ - # ===================================================== # CONNECTOR # ===================================================== - ## Set the relation beetween object from guide to rig.\n - # @param self def setRelation(self): + """Set the relation beetween object from guide to rig""" self.relatives["root"] = self.ref_base self.relatives["squash"] = self.ref_squash self.controlRelatives["root"] = self.ctl self.controlRelatives["squash"] = self.squash_ctl - for i in range(0, len(self.div_cns)-1): - self.relatives["%s_loc"%i] = self.div_cns[i+1] - self.jointRelatives["%s_loc"%i] = i+1 - self.relatives["%s_loc"%(len(self.div_cns)-1)] = self.div_cns[-1] - self.jointRelatives["%s_loc"%(len(self.div_cns)-1)] = len(self.div_cns)-1 + for i in range(0, len(self.div_cns) - 1): + self.relatives["%s_loc" % i] = self.div_cns[i + 1] + self.jointRelatives["%s_loc" % i] = i + 1 + self.relatives["%s_loc" % (len(self.div_cns) - 1)] = self.div_cns[-1] + jnt_rel_len = len(self.div_cns) - 1 + self.jointRelatives["%s_loc" % (len(self.div_cns) - 1)] = jnt_rel_len - ## standard connection definition. - # @param self def connect_standard(self): + """standard connection definition for the component""" self.connect_standardWithSimpleIkRef() diff --git a/scripts/mgear/maya/shifter/component/squash_01/guide.py b/scripts/mgear/maya/shifter/component/squash_01/guide.py index 5c2ccc6..17fac49 100644 --- a/scripts/mgear/maya/shifter/component/squash_01/guide.py +++ b/scripts/mgear/maya/shifter/component/squash_01/guide.py @@ -1,53 +1,21 @@ -# MGEAR is under the terms of the MIT License +"""Guide Squash 01 module""" -# Copyright (c) 2016 Jeremie Passerin, Miquel Campos - -# Permission is hereby granted, free of charge, to any person obtaining a copy -# of this software and associated documentation files (the "Software"), to deal -# in the Software without restriction, including without limitation the rights -# to use, copy, modify, merge, publish, distribute, sublicense, and/or sell -# copies of the Software, and to permit persons to whom the Software is -# furnished to do so, subject to the following conditions: - -# The above copyright notice and this permission notice shall be included in all -# copies or substantial portions of the Software. - -# THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR -# IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, -# FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE -# AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER -# LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, -# OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE -# SOFTWARE. - -# Author: Jeremie Passerin geerem@hotmail.com www.jeremiepasserin.com -# Author: Miquel Campos hello@miquel-campos.com www.miquel-campos.com -# Date: 2016 / 10 / 10 - -########################################################## -# GLOBAL -########################################################## from functools import partial +from mgear.maya.shifter.component import guide +from mgear.maya import transform, pyqt +from mgear.vendor.Qt import QtWidgets, QtCore -# mgear -from mgear.maya.shifter.component.guide import ComponentGuide -import mgear.maya.transform as tra -import settingsUI as sui - - -#Pyside -from mgear.maya.shifter.component.guide import componentMainSettings -import mgear.maya.pyqt as gqt from maya.app.general.mayaMixin import MayaQWidgetDockableMixin from maya.app.general.mayaMixin import MayaQDockWidget -QtGui, QtCore, QtWidgets, wrapInstance = gqt.qt_import() + +import settingsUI as sui # guide info AUTHOR = "Miquel Campos" URL = "www.miquel-campos.com" EMAIL = "hello@miquel-campos.com" -VERSION = [1,0,0] +VERSION = [1, 0, 0] TYPE = "squash_01" NAME = "squash" DESCRIPTION = "Linear squash component" @@ -55,7 +23,10 @@ ########################################################## # CLASS ########################################################## -class Guide(ComponentGuide): + + +class Guide(guide.ComponentGuide): + """Component Guide Class""" compType = TYPE compName = NAME @@ -66,60 +37,61 @@ class Guide(ComponentGuide): email = EMAIL version = VERSION - - # ===================================================== - ## - # @param self def postInit(self): + """Initialize the position for the guide""" + self.save_transform = ["root", "tip"] self.save_blade = ["blade"] - # ===================================================== - ## Add more object to the object definition list. - # @param self def addObjects(self): + """Add the Guide Root, blade and locators""" self.root = self.addRoot() - vTemp = tra.getOffsetPosition( self.root, [2,0,0]) + vTemp = transform.getOffsetPosition(self.root, [2, 0, 0]) self.loc = self.addLoc("tip", self.root, vTemp) self.blade = self.addBlade("blade", self.root, self.loc) centers = [self.root, self.loc] self.dispcrv = self.addDispCurve("crv", centers) - - # ===================================================== - ## Add more parameter to the parameter definition list. + # Add more parameter to the parameter definition list. # @param self def addParameters(self): + """Add the configurations settings""" - self.pRefArray = self.addParam("ikrefarray", "string", "") + self.pRefArray = self.addParam("ikrefarray", "string", "") self.pUseIndex = self.addParam("useIndex", "bool", False) - self.pParentJointIndex = self.addParam("parentJointIndex", "long", -1, None, None) + self.pParentJointIndex = self.addParam("parentJointIndex", + "long", + -1, + None, + None) ########################################################## # Setting Page ########################################################## + class settingsTab(QtWidgets.QDialog, sui.Ui_Form): + """The Component settings UI""" def __init__(self, parent=None): super(settingsTab, self).__init__(parent) self.setupUi(self) -class componentSettings(MayaQWidgetDockableMixin, componentMainSettings): +class componentSettings(MayaQWidgetDockableMixin, guide.componentMainSettings): + """Create the component setting window""" - def __init__(self, parent = None): + def __init__(self, parent=None): self.toolName = TYPE # Delete old instances of the componet settings window. - gqt.deleteInstances(self, MayaQDockWidget) + pyqt.deleteInstances(self, MayaQDockWidget) - super(self.__class__, self).__init__(parent = parent) + super(self.__class__, self).__init__(parent=parent) self.settingsTab = settingsTab() - self.setup_componentSettingWindow() self.create_componentControls() self.populate_componentControls() @@ -127,7 +99,7 @@ def __init__(self, parent = None): self.create_componentConnections() def setup_componentSettingWindow(self): - self.mayaMainWindow = gqt.maya_main_window() + self.mayaMainWindow = pyqt.maya_main_window() self.setObjectName(self.toolName) self.setWindowFlags(QtCore.Qt.Window) @@ -138,11 +110,13 @@ def create_componentControls(self): return def populate_componentControls(self): - """ - Populate the controls values from the custom attributes of the component. + """Populate the controls values. + + Populate the controls values from the custom attributes of the + component. """ - #populate tab + # populate tab self.tabs.insertTab(1, self.settingsTab, "Component Settings") refArrayItems = self.root.attr("ikrefarray").get().split(",") @@ -159,8 +133,14 @@ def create_componentLayout(self): def create_componentConnections(self): - self.settingsTab.refArrayAdd_pushButton.clicked.connect(partial(self.addItem2listWidget, self.settingsTab.refArray_listWidget, "ikrefarray")) - self.settingsTab.refArrayRemove_pushButton.clicked.connect(partial(self.removeSelectedFromListWidget, self.settingsTab.refArray_listWidget, "ikrefarray")) + self.settingsTab.refArrayAdd_pushButton.clicked.connect( + partial(self.addItem2listWidget, + self.settingsTab.refArray_listWidget, + "ikrefarray")) + self.settingsTab.refArrayRemove_pushButton.clicked.connect( + partial(self.removeSelectedFromListWidget, + self.settingsTab.refArray_listWidget, + "ikrefarray")) self.settingsTab.refArray_listWidget.installEventFilter(self) def eventFilter(self, sender, event): @@ -172,4 +152,4 @@ def eventFilter(self, sender, event): return QtWidgets.QDialog.eventFilter(self, sender, event) def dockCloseEventTriggered(self): - gqt.deleteInstances(self, MayaQDockWidget) + pyqt.deleteInstances(self, MayaQDockWidget) diff --git a/scripts/mgear/maya/shifter/gui.py b/scripts/mgear/maya/shifter/gui.py index 87cb5bc..8c653df 100644 --- a/scripts/mgear/maya/shifter/gui.py +++ b/scripts/mgear/maya/shifter/gui.py @@ -170,7 +170,7 @@ def duplicate(self, sym, *args): oSel = pm.selected() if oSel: root = oSel[0] - guide = shifter.RigGuide() + guide = shifter.guide.Rig() guide.duplicate(root, sym) else: mgear.log("Select one component root to edit properties", From 0145e93e825040861d9b4e1efdb0055ba11a3c3a Mon Sep 17 00:00:00 2001 From: miquelcampos Date: Tue, 21 Nov 2017 10:13:15 +0900 Subject: [PATCH 068/134] Adding CONTRIBUTING.md --- CONTRIBUTING.md | 40 +++++++++++++++++++ .../shifter/component/arm_2jnt_01/guide.py | 3 +- scripts/mgear/maya/shifter/gui.py | 2 +- 3 files changed, 43 insertions(+), 2 deletions(-) create mode 100644 CONTRIBUTING.md diff --git a/CONTRIBUTING.md b/CONTRIBUTING.md new file mode 100644 index 0000000..4494ec0 --- /dev/null +++ b/CONTRIBUTING.md @@ -0,0 +1,40 @@ +## Contributing to mGear + + + + +### Code Style + +We are moving all the code to [PEP8](https://www.python.org/dev/peps/pep-0008/) +If you want to contribute please follow the PEP8 standard + +#### Line indentation for arguments + +```python + +# No +function(arg1, arg2, + kwarg=False, kwarg2=True) + +# No +function( + arg1, arg2, + kwarg=False, kwarg2=True) + +# Yes +function(arg1, + arg2, + kwarg=False, + kwarg2=True) +# Yes +function( + arg1, arg2, kwarg=False, kwarg2=True) + +# OK +function( + arg1, + arg2, + kwarg=False, + kwarg2=True) + +``` \ No newline at end of file diff --git a/scripts/mgear/maya/shifter/component/arm_2jnt_01/guide.py b/scripts/mgear/maya/shifter/component/arm_2jnt_01/guide.py index 744dc36..1693377 100644 --- a/scripts/mgear/maya/shifter/component/arm_2jnt_01/guide.py +++ b/scripts/mgear/maya/shifter/component/arm_2jnt_01/guide.py @@ -58,7 +58,8 @@ def addObjects(self): self.eff = self.addLoc("eff", self.wrist, vTemp) self.dispcrv = self.addDispCurve( - "crv", [self.root, self.elbow, self.wrist, self.eff]) + "crv", + [self.root, self.elbow, self.wrist, self.eff]) def addParameters(self): """Add the configurations settings""" diff --git a/scripts/mgear/maya/shifter/gui.py b/scripts/mgear/maya/shifter/gui.py index 8c653df..3dcdb63 100644 --- a/scripts/mgear/maya/shifter/gui.py +++ b/scripts/mgear/maya/shifter/gui.py @@ -252,7 +252,7 @@ def applyCloseComp(root, *args): root.attr("default_rotorder").set( rotOrderSet.index(pRotOrder.getValue())) - guide = shifter.RigGuide() + guide = shifter.guide.Rig() guide.updateProperties(root, newName, newSide, newIndex) pm.select(root, r=True) From 703f6a583773eea645764cc6f530009f4df95d79 Mon Sep 17 00:00:00 2001 From: miquelcampos Date: Tue, 21 Nov 2017 10:18:31 +0900 Subject: [PATCH 069/134] Update CONTRIBUTING.md --- CONTRIBUTING.md | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/CONTRIBUTING.md b/CONTRIBUTING.md index 4494ec0..c1fc774 100644 --- a/CONTRIBUTING.md +++ b/CONTRIBUTING.md @@ -5,10 +5,10 @@ ### Code Style -We are moving all the code to [PEP8](https://www.python.org/dev/peps/pep-0008/) +We are refactoring all the code to [PEP8](https://www.python.org/dev/peps/pep-0008/) If you want to contribute please follow the PEP8 standard -#### Line indentation for arguments +#### Line break for long arguments ```python From a9f2492d30840bc84bd07038b32c0a64a3ea3e98 Mon Sep 17 00:00:00 2001 From: miquelcampos Date: Tue, 21 Nov 2017 12:22:29 +0900 Subject: [PATCH 070/134] PEP8 #100 : Shifter: Component arm_ms_2jnt_01 --- .../component/arm_ms_2jnt_01/__init__.py | 1038 +++++++++++------ .../shifter/component/arm_ms_2jnt_01/guide.py | 225 ++-- 2 files changed, 833 insertions(+), 430 deletions(-) diff --git a/scripts/mgear/maya/shifter/component/arm_ms_2jnt_01/__init__.py b/scripts/mgear/maya/shifter/component/arm_ms_2jnt_01/__init__.py index 11ecd84..4af2976 100644 --- a/scripts/mgear/maya/shifter/component/arm_ms_2jnt_01/__init__.py +++ b/scripts/mgear/maya/shifter/component/arm_ms_2jnt_01/__init__.py @@ -1,28 +1,4 @@ -# MGEAR is under the terms of the MIT License - -# Copyright (c) 2016 Jeremie Passerin, Miquel Campos - -# Permission is hereby granted, free of charge, to any person obtaining a copy -# of this software and associated documentation files (the "Software"), to deal -# in the Software without restriction, including without limitation the rights -# to use, copy, modify, merge, publish, distribute, sublicense, and/or sell -# copies of the Software, and to permit persons to whom the Software is -# furnished to do so, subject to the following conditions: - -# The above copyright notice and this permission notice shall be included in all -# copies or substantial portions of the Software. - -# THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR -# IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, -# FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE -# AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER -# LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, -# OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE -# SOFTWARE. - -# Author: Jeremie Passerin geerem@hotmail.com www.jeremiepasserin.com -# Author: Miquel Campos hello@miquel-campos.com www.miquel-campos.com -# Date: 2016 / 11 / 18 +"""Component Arm Miles 2 joints 01 module""" # ms 2jnt feature ----------------------- # //done//FK isolation @@ -35,315 +11,644 @@ # //done//addition limb jt layer ctl(optional) # To Do List ------------------------------- - # upper sleeve lower sleeve ctl(optional) -# custom Upper limb 4 pt bezier node with input for rot interpolation +# custom Upper limb 4 pt bezier o_node with input for rot interpolation -############################################# -# GLOBAL -############################################# -# Maya import pymel.core as pm -import pymel.core.datatypes as dt - +from pymel.core import datatypes -# mgear -from mgear.maya.shifter.component import MainComponent +from mgear.maya.shifter import component -import mgear.maya.primitive as pri -import mgear.maya.transform as tra -import mgear.maya.attribute as att -import mgear.maya.node as nod -import mgear.maya.vector as vec -import mgear.maya.applyop as aop -import mgear.maya.fcurve as fcu +from mgear.maya import node, fcurve, applyop, vector +from mgear.maya import attribute, transform, primitive ############################################# # COMPONENT ############################################# -class Component(MainComponent): - def addObjects(self): +class Component(component.Main): + """Shifter component Class""" + + # ===================================================== + # OBJECTS + # ===================================================== + def addObjects(self): + """Add all the objects needed to create the component.""" self.normal = self.getNormalFromPos(self.guide.apos) self.binormal = self.getBiNormalFromPos(self.guide.apos) - self.length0 = vec.getDistance(self.guide.apos[0], self.guide.apos[1]) - self.length1 = vec.getDistance(self.guide.apos[1], self.guide.apos[2]) - self.length2 = vec.getDistance(self.guide.apos[2], self.guide.apos[3]) + self.length0 = vector.getDistance( + self.guide.apos[0], self.guide.apos[1]) + self.length1 = vector.getDistance( + self.guide.apos[1], self.guide.apos[2]) + self.length2 = vector.getDistance( + self.guide.apos[2], self.guide.apos[3]) # FK Controlers ----------------------------------- - # *ms* set npo @ Tpose, to make the fk rotation work best with rot order"yzx" + # *ms* set npo @ Tpose, to make the fk rotation work + # best with rot order"yzx" - self.fk_cns = pri.addTransformFromPos(self.root, self.getName("fk_cns"), self.guide.apos[0]) + self.fk_cns = primitive.addTransformFromPos( + self.root, self.getName("fk_cns"), self.guide.apos[0]) - tpv = self.guide.apos[0] + ((self.guide.apos[1] - self.guide.apos[0])*[1,0,0]) - t = tra.getTransformLookingAt(self.guide.apos[0], tpv, self.normal, "xz", self.negate) - # *ms* add FK isolation - self.fk0_npo = pri.addTransform(self.fk_cns, self.getName("fk0_npo"), t) + vec_offset = ((self.guide.apos[1] - self.guide.apos[0]) * [1, 0, 0]) + tpv = self.guide.apos[0] + vec_offset - t = tra.getTransformLookingAt(self.guide.apos[0], self.guide.apos[1], self.normal, "xz", self.negate) - self.fk0_ctl = self.addCtl(self.fk0_npo, "fk0_ctl", t, self.color_fk, "cube", w=self.length0*.7, h=self.size*.1, d=self.size*.1, po=dt.Vector(.35*self.length0*self.n_factor,0,0), tp=self.parentCtlTag) - att.setKeyableAttributes(self.fk0_ctl) + t = transform.getTransformLookingAt( + self.guide.apos[0], tpv, self.normal, "xz", self.negate) + # *ms* add FK isolation + self.fk0_npo = primitive.addTransform( + self.fk_cns, self.getName("fk0_npo"), t) + + t = transform.getTransformLookingAt(self.guide.apos[0], + self.guide.apos[1], + self.normal, "xz", + self.negate) + + po_off = datatypes.Vector(.35 * self.length0 * self.n_factor, 0, 0) + + self.fk0_ctl = self.addCtl(self.fk0_npo, + "fk0_ctl", + t, + self.color_fk, + "cube", + w=self.length0 * .7, + h=self.size * .1, + d=self.size * .1, + po=po_off, + tp=self.parentCtlTag) + attribute.setKeyableAttributes(self.fk0_ctl) # *ms* add fk roll control Simage style - self.fk0_roll_ctl = self.addCtl(self.fk0_ctl, "fk0_roll_ctl", t, self.color_fk, "cube", w=self.length0*.3, h=self.size*.1, d=self.size*0.1, po=dt.Vector(.85*self.length0*self.n_factor,0,0), tp=self.fk0_ctl) - att.setRotOrder(self.fk0_roll_ctl, "YZX") - att.setKeyableAttributes(self.fk0_roll_ctl, ["rx"]) - self.fk0_mtx = pri.addTransform(self.root, self.getName("fk0_mtx"), t) - - t = tra.setMatrixPosition(t, self.guide.apos[1]) - self.fk1_ref = pri.addTransform(self.fk0_roll_ctl, self.getName("fk1_ref"), t) - - self.fk1_loc = pri.addTransform(self.root, self.getName("fk1_loc"), t) - t = tra.getTransformLookingAt(self.guide.apos[1], self.guide.apos[2], self.normal, "xz", self.negate) - - self.fk1_npo = pri.addTransform(self.fk1_loc, self.getName("fk1_npo"), t) - self.fk1_ctl = self.addCtl(self.fk1_npo, "fk1_ctl", t, self.color_fk, "cube", w=self.length1*.7, h=self.size*.1, d=self.size*.1, po=dt.Vector(.35*self.length1*self.n_factor,0,0), tp=self.fk0_roll_ctl) - att.setKeyableAttributes(self.fk1_ctl) - self.fk1_mtx = pri.addTransform(self.fk1_ctl, self.getName("fk1_mtx"), t) - self.fk1_roll_ctl = self.addCtl(self.fk1_ctl, "fk1_roll_ctl", t, self.color_fk, "cube", w=self.length1*.3, h=self.size*.1, d=self.size*.1, po=dt.Vector(.85*self.length1*self.n_factor,0,0), tp=self.fk1_ctl) - att.setRotOrder(self.fk1_roll_ctl, "XYZ") - att.setKeyableAttributes(self.fk1_roll_ctl, ["rx"]) - - - t = tra.getTransformLookingAt(self.guide.apos[2], self.guide.apos[3], self.normal, "xz", self.negate) + po_off = datatypes.Vector(.85 * self.length0 * self.n_factor, 0, 0) + self.fk0_roll_ctl = self.addCtl(self.fk0_ctl, + "fk0_roll_ctl", + t, self.color_fk, + "cube", w=self.length0 * .3, + h=self.size * .1, + d=self.size * 0.1, + po=po_off, + tp=self.fk0_ctl) + + attribute.setRotOrder(self.fk0_roll_ctl, "YZX") + attribute.setKeyableAttributes(self.fk0_roll_ctl, ["rx"]) + self.fk0_mtx = primitive.addTransform( + self.root, self.getName("fk0_mtx"), t) + + t = transform.setMatrixPosition(t, self.guide.apos[1]) + + self.fk1_ref = primitive.addTransform( + self.fk0_roll_ctl, self.getName("fk1_ref"), t) + + self.fk1_loc = primitive.addTransform( + self.root, self.getName("fk1_loc"), t) + + t = transform.getTransformLookingAt(self.guide.apos[1], + self.guide.apos[2], + self.normal, + "xz", + self.negate) + + self.fk1_npo = primitive.addTransform( + self.fk1_loc, self.getName("fk1_npo"), t) + + po_off = datatypes.Vector(.35 * self.length1 * self.n_factor, 0, 0) + self.fk1_ctl = self.addCtl(self.fk1_npo, + "fk1_ctl", + t, + self.color_fk, + "cube", + w=self.length1 * .7, + h=self.size * .1, + d=self.size * .1, + po=po_off, tp=self.fk0_roll_ctl) + + attribute.setKeyableAttributes(self.fk1_ctl) + + self.fk1_mtx = primitive.addTransform( + self.fk1_ctl, self.getName("fk1_mtx"), t) + + po_off = datatypes.Vector(.85 * self.length1 * self.n_factor, 0, 0) + self.fk1_roll_ctl = self.addCtl(self.fk1_ctl, + "fk1_roll_ctl", + t, + self.color_fk, + "cube", + w=self.length1 * .3, + h=self.size * .1, + d=self.size * .1, + po=po_off, tp=self.fk1_ctl) + attribute.setRotOrder(self.fk1_roll_ctl, "XYZ") + attribute.setKeyableAttributes(self.fk1_roll_ctl, ["rx"]) + + t = transform.getTransformLookingAt(self.guide.apos[2], + self.guide.apos[3], + self.normal, + "xz", + self.negate) # *ms* buffer object to feed into ikfk solver for hand seperation - self.fk2_mtx = pri.addTransform(self.fk1_roll_ctl, self.getName("fk2_mtx"), t) - + self.fk2_mtx = primitive.addTransform(self.fk1_roll_ctl, + self.getName("fk2_mtx"), + t) # fk2_loc is need to take the effector position + bone1 rotation - t1= tra.getTransformLookingAt(self.guide.apos[2], self.guide.apos[1], self.normal, "-xz", self.negate) - self.fk2_loc = pri.addTransform(self.root, self.getName("fk2_loc"), t1) - - self.fk2_npo = pri.addTransform(self.fk2_loc, self.getName("fk2_npo"), t) - self.fk2_ctl = self.addCtl(self.fk2_npo, "fk2_ctl", t, self.color_fk, "cube", w=self.length2, h=self.size*.1, d=self.size*.1, po=dt.Vector(.5*self.length2*self.n_factor,0,0), tp=self.fk1_roll_ctl) - att.setKeyableAttributes(self.fk2_ctl) + t1 = transform.getTransformLookingAt(self.guide.apos[2], + self.guide.apos[1], + self.normal, + "-xz", + self.negate) + + self.fk2_loc = primitive.addTransform( + self.root, self.getName("fk2_loc"), t1) + + self.fk2_npo = primitive.addTransform(self.fk2_loc, + self.getName("fk2_npo"), + t) + po_off = datatypes.Vector(.5 * self.length2 * self.n_factor, 0, 0) + self.fk2_ctl = self.addCtl(self.fk2_npo, + "fk2_ctl", + t, + self.color_fk, + "cube", + w=self.length2, + h=self.size * .1, + d=self.size * .1, + po=po_off, + tp=self.fk1_roll_ctl) + attribute.setKeyableAttributes(self.fk2_ctl) self.fk_ctl = [self.fk0_roll_ctl, self.fk1_mtx, self.fk2_ctl] - self.fk_ctls = [self.fk0_ctl,self.fk0_roll_ctl, self.fk1_ctl, self.fk1_roll_ctl, self.fk2_ctl] - for x in self.fk_ctls: - att.setInvertMirror(x, ["tx", "ty", "tz"]) + self.fk_ctls = [self.fk0_ctl, + self.fk0_roll_ctl, + self.fk1_ctl, + self.fk1_roll_ctl, + self.fk2_ctl] + for x in self.fk_ctls: + attribute.setInvertMirror(x, ["tx", "ty", "tz"]) # IK Controlers ----------------------------------- - self.ik_cns = pri.addTransformFromPos(self.root, self.getName("ik_cns"), self.guide.pos["wrist"]) + self.ik_cns = primitive.addTransformFromPos( + self.root, self.getName("ik_cns"), self.guide.pos["wrist"]) - self.ikcns_ctl = self.addCtl(self.ik_cns, "ikcns_ctl", tra.getTransformFromPos(self.guide.pos["wrist"]), self.color_ik, "null", w=self.size*.12, tp=self.parentCtlTag) - att.setInvertMirror(self.ikcns_ctl, ["tx", "ty", "tz"]) + self.ikcns_ctl = self.addCtl( + self.ik_cns, + "ikcns_ctl", + transform.getTransformFromPos(self.guide.pos["wrist"]), + self.color_ik, + "null", + w=self.size * .12, tp=self.parentCtlTag) + attribute.setInvertMirror(self.ikcns_ctl, ["tx", "ty", "tz"]) if self.negate: - m = tra.getTransformLookingAt(self.guide.pos["wrist"], self.guide.pos["eff"], self.normal, "x-y", True) + m = transform.getTransformLookingAt(self.guide.pos["wrist"], + self.guide.pos["eff"], + self.normal, + "x-y", + True) else: - m = tra.getTransformLookingAt(self.guide.pos["wrist"], self.guide.pos["eff"], self.normal, "xy", False) - self.ik_ctl = self.addCtl(self.ikcns_ctl, "ik_ctl", m, self.color_ik, "cube", w=self.size*.12, h=self.size*.12, d=self.size*.12, tp=self.ikcns_ctl) - att.setKeyableAttributes(self.ik_ctl) - att.setInvertMirror(self.ik_ctl, ["tx", "ry", "rz"]) + m = transform.getTransformLookingAt(self.guide.pos["wrist"], + self.guide.pos["eff"], + self.normal, + "xy", + False) + self.ik_ctl = self.addCtl(self.ikcns_ctl, + "ik_ctl", + m, + self.color_ik, + "cube", + w=self.size * .12, + h=self.size * .12, + d=self.size * .12, + tp=self.ikcns_ctl) + attribute.setKeyableAttributes(self.ik_ctl) + attribute.setInvertMirror(self.ik_ctl, ["tx", "ry", "rz"]) # upv v = self.guide.apos[2] - self.guide.apos[0] v = self.normal ^ v v.normalize() - v *= self.size*.5 + v *= self.size * .5 v += self.guide.apos[1] # *ms* auto up vector ------------------------------ - self.upv_cns = pri.addTransformFromPos(self.root, self.getName("upv_cns"), self.guide.apos[0]) - self.upv_auv = pri.addTransformFromPos(self.root, self.getName("upv_auv"), self.guide.apos[0]) - self.upv_mtx = pri.addTransformFromPos(self.upv_cns, self.getName("upv_mtx"), self.guide.apos[0]) - - self.upv_npo = pri.addTransformFromPos(self.upv_mtx, self.getName("upv_npo"), v) - self.upv_ctl = self.addCtl(self.upv_npo, "upv_ctl", tra.getTransform(self.upv_npo), self.color_ik, "diamond", w=self.size*.12, tp=self.parentCtlTag) - att.setKeyableAttributes(self.upv_ctl, self.t_params) - att.setInvertMirror(self.upv_ctl, ["tx"]) + self.upv_cns = primitive.addTransformFromPos(self.root, + self.getName("upv_cns"), + self.guide.apos[0]) + self.upv_auv = primitive.addTransformFromPos(self.root, + self.getName("upv_auv"), + self.guide.apos[0]) + self.upv_mtx = primitive.addTransformFromPos(self.upv_cns, + self.getName("upv_mtx"), + self.guide.apos[0]) + + self.upv_npo = primitive.addTransformFromPos(self.upv_mtx, + self.getName("upv_npo"), + v) + self.upv_ctl = self.addCtl(self.upv_npo, + "upv_ctl", + transform.getTransform(self.upv_npo), + self.color_ik, + "diamond", + w=self.size * .12, + tp=self.parentCtlTag) + attribute.setKeyableAttributes(self.upv_ctl, self.t_params) + attribute.setInvertMirror(self.upv_ctl, ["tx"]) # References -------------------------------------- # Calculate again the transfor for the IK ref. This way align with FK - trnIK_ref = tra.getTransformLookingAt(self.guide.pos["wrist"], self.guide.pos["eff"], self.normal, "xz", self.negate) - self.ik_ref = pri.addTransform(self.ik_ctl, self.getName("ik_ref"), trnIK_ref) - self.fk_ref = pri.addTransform(self.fk_ctl[2], self.getName("fk_ref"), trnIK_ref) + trnIK_ref = transform.getTransformLookingAt(self.guide.pos["wrist"], + self.guide.pos["eff"], + self.normal, + "xz", + self.negate) + self.ik_ref = primitive.addTransform(self.ik_ctl, + self.getName("ik_ref"), + trnIK_ref) + self.fk_ref = primitive.addTransform(self.fk_ctl[2], + self.getName("fk_ref"), + trnIK_ref) # Chain -------------------------------------------- # take outputs of the ikfk2bone solver - self.bone0 = pri.addLocator(self.root, self.getName("0_bone"), tra.getTransform(self.fk_ctl[0])) + self.bone0 = primitive.addLocator( + self.root, + self.getName("0_bone"), + transform.getTransform(self.fk_ctl[0])) + self.bone0_shp = self.bone0.getShape() - self.bone0_shp.setAttr("localPositionX", self.n_factor*.5) + self.bone0_shp.setAttr("localPositionX", self.n_factor * .5) self.bone0_shp.setAttr("localScale", .5, 0, 0) self.bone0.setAttr("sx", self.length0) self.bone0.setAttr("visibility", False) - self.bone1 = pri.addLocator(self.root, self.getName("1_bone"), tra.getTransform(self.fk_ctl[1])) + self.bone1 = primitive.addLocator( + self.root, + self.getName("1_bone"), + transform.getTransform(self.fk_ctl[1])) + self.bone1_shp = self.bone1.getShape() - self.bone1_shp.setAttr("localPositionX", self.n_factor*.5) + self.bone1_shp.setAttr("localPositionX", self.n_factor * .5) self.bone1_shp.setAttr("localScale", .5, 0, 0) self.bone1.setAttr("sx", self.length1) self.bone1.setAttr("visibility", False) - self.ctrn_loc = pri.addTransformFromPos(self.root, self.getName("ctrn_loc"), self.guide.apos[1]) + self.ctrn_loc = primitive.addTransformFromPos(self.root, + self.getName("ctrn_loc"), + self.guide.apos[1]) # eff npo --- take the effector output of gear ik solver - self.eff_npo = pri.addTransformFromPos(self.root, self.getName("eff_npo"), self.guide.apos[2]) + self.eff_npo = primitive.addTransformFromPos(self.root, + self.getName("eff_npo"), + self.guide.apos[2]) # eff loc --- take the fk ik blend result - self.eff_loc = pri.addTransformFromPos(self.eff_npo, self.getName("eff_loc"), self.guide.apos[2]) + self.eff_loc = primitive.addTransformFromPos(self.eff_npo, + self.getName("eff_loc"), + self.guide.apos[2]) # Mid Controler ------------------------------------ - self.mid_ctl = self.addCtl(self.ctrn_loc, "mid_ctl", tra.getTransform(self.ctrn_loc), self.color_ik, "sphere", w=self.size*.2, tp=self.parentCtlTag) - att.setInvertMirror(self.mid_ctl, ["tx", "ty", "tz"]) + self.mid_ctl = self.addCtl(self.ctrn_loc, + "mid_ctl", + transform.getTransform(self.ctrn_loc), + self.color_ik, + "sphere", + w=self.size * .2, + tp=self.parentCtlTag) + attribute.setInvertMirror(self.mid_ctl, ["tx", "ty", "tz"]) # *ms* add elbow thickness - - - #Roll join ref - - self.tws0_npo = pri.addTransform(self.root, self.getName("tws0_npo"), tra.getTransform(self.fk_ctl[0])) - self.tws0_loc = pri.addTransform(self.tws0_npo, self.getName("tws0_loc"), tra.getTransform(self.fk_ctl[0])) - self.tws0_rot = pri.addTransform(self.tws0_loc, self.getName("tws0_rot"), tra.getTransform(self.fk_ctl[0])) - - self.tws1_npo = pri.addTransform(self.ctrn_loc, self.getName("tws1_npo"), tra.getTransform(self.ctrn_loc)) - self.tws1_loc = pri.addTransform(self.tws1_npo, self.getName("tws1_loc"), tra.getTransform(self.ctrn_loc)) - self.tws1_rot = pri.addTransform(self.tws1_loc, self.getName("tws1_rot"), tra.getTransform(self.ctrn_loc)) - - self.tws2_loc = pri.addTransform(self.tws1_npo, self.getName("tws2_loc"), tra.getTransform(self.ctrn_loc)) - self.tws2_rot = pri.addTransform(self.tws2_loc, self.getName("tws2_rot"), tra.getTransform(self.ctrn_loc)) - - self.tws3_npo = pri.addTransform(self.root, self.getName("tws3_npo"), tra.getTransform(self.fk_ctl[2])) - self.tws3_loc = pri.addTransform(self.tws3_npo, self.getName("tws3_loc"), tra.getTransform(self.fk_ctl[2])) - self.tws3_rot = pri.addTransform(self.tws3_loc, self.getName("tws3_rot"), tra.getTransform(self.fk_ctl[2])) + # Roll join ref + + self.tws0_npo = primitive.addTransform( + self.root, + self.getName("tws0_npo"), + transform.getTransform(self.fk_ctl[0])) + self.tws0_loc = primitive.addTransform( + self.tws0_npo, + self.getName("tws0_loc"), + transform.getTransform(self.fk_ctl[0])) + self.tws0_rot = primitive.addTransform( + self.tws0_loc, + self.getName("tws0_rot"), + transform.getTransform(self.fk_ctl[0])) + + self.tws1_npo = primitive.addTransform( + self.ctrn_loc, + self.getName("tws1_npo"), + transform.getTransform(self.ctrn_loc)) + self.tws1_loc = primitive.addTransform( + self.tws1_npo, + self.getName("tws1_loc"), + transform.getTransform(self.ctrn_loc)) + self.tws1_rot = primitive.addTransform( + self.tws1_loc, + self.getName("tws1_rot"), + transform.getTransform(self.ctrn_loc)) + + self.tws2_loc = primitive.addTransform( + self.tws1_npo, + self.getName("tws2_loc"), + transform.getTransform(self.ctrn_loc)) + self.tws2_rot = primitive.addTransform( + self.tws2_loc, + self.getName("tws2_rot"), + transform.getTransform(self.ctrn_loc)) + + self.tws3_npo = primitive.addTransform( + self.root, + self.getName("tws3_npo"), + transform.getTransform(self.fk_ctl[2])) + self.tws3_loc = primitive.addTransform( + self.tws3_npo, + self.getName("tws3_loc"), + transform.getTransform(self.fk_ctl[2])) + self.tws3_rot = primitive.addTransform( + self.tws3_loc, + self.getName("tws3_rot"), + transform.getTransform(self.fk_ctl[2])) # Divisions ---------------------------------------- - # We have at least one division at the start, the end and one for the elbow. + 2 for elbow angle control + # We have at least one division at the start, the end and one for the + # elbow. + 2 for elbow angle control # separate up and dn limb self.divisions = self.settings["div0"] + self.settings["div1"] + 3 + 2 - self.divisions0 = self.settings["div0"] +2 - self.divisions1 = self.settings["div1"] +2 + self.divisions0 = self.settings["div0"] + 2 + self.divisions1 = self.settings["div1"] + 2 self.div_cns = [] self.div_cnsUp = [] self.div_cnsDn = [] self.div_ctls = [] - self.div_org = pri.addTransform(self.root, self.getName("div_org"), tra.getTransform(self.root)) + self.div_org = primitive.addTransform( + self.root, + self.getName("div_org"), + transform.getTransform(self.root)) self.previousTag = self.parentCtlTag for i in range(self.divisions0): - div_cns = pri.addTransform(self.div_org, self.getName("div%s_loc" % i)) + div_cns = primitive.addTransform( + self.div_org, self.getName("div%s_loc" % i)) + if self.negate: - div_ctl = self.addCtl(div_cns, self.getName("div%s_ctl" % i), tra.getTransform(div_cns), self.color_fk, "square",d=self.size*.05,w=self.size*.1,po=dt.Vector(0,self.size*-0.05,0),ro=dt.Vector(0,0,dt.radians(90)), tp=self.previousTag) + div_ctl = self.addCtl( + div_cns, + self.getName("div%s_ctl" % i), + transform.getTransform(div_cns), + self.color_fk, "square", d=self.size * .05, + w=self.size * .1, + po=datatypes.Vector(0, self.size * -0.05, 0), + ro=datatypes.Vector(0, 0, datatypes.radians(90)), + tp=self.previousTag) else: - div_ctl = self.addCtl(div_cns, self.getName("div%s_ctl" % i), tra.getTransform(div_cns), self.color_fk, "square",d=self.size*.05,w=self.size*.1,po=dt.Vector(0,self.size*0.05,0),ro=dt.Vector(0,0,dt.radians(90)), tp=self.previousTag) - att.setKeyableAttributes(div_ctl) + div_ctl = self.addCtl( + div_cns, + self.getName("div%s_ctl" % i), + transform.getTransform(div_cns), + self.color_fk, + "square", + d=self.size * .05, + w=self.size * .1, + po=datatypes.Vector(0, self.size * 0.05, 0), + ro=datatypes.Vector(0, 0, datatypes.radians(90)), + tp=self.previousTag) + attribute.setKeyableAttributes(div_ctl) self.previousTag = div_ctl self.div_cns.append(div_cns) self.div_cnsUp.append(div_cns) - self.jnt_pos.append([div_ctl,i]) + self.jnt_pos.append([div_ctl, i]) self.div_ctls.append(div_ctl) # mid division d = self.divisions0 - self.div_mid = pri.addTransform(self.div_org, self.getName("div%s_loc" % d), tra.getTransform(self.mid_ctl)) + self.div_mid = primitive.addTransform( + self.div_org, + self.getName("div%s_loc" % d), + transform.getTransform(self.mid_ctl)) if self.negate: - self.div_mid_ctl = self.addCtl(self.div_mid, self.getName("div%s_ctl" % d), tra.getTransform(self.div_mid), self.color_fk, "square",d=self.size*.05, w=self.size*.1,po=dt.Vector(0,self.size*-0.05,0), ro=dt.Vector(0,0,dt.radians(90)), tp=self.previousTag) + self.div_mid_ctl = self.addCtl( + self.div_mid, + self.getName("div%s_ctl" % d), + transform.getTransform(self.div_mid), + self.color_fk, + "square", + d=self.size * .05, + w=self.size * .1, + po=datatypes.Vector(0, self.size * -0.05, 0), + ro=datatypes.Vector(0, 0, datatypes.radians(90)), + tp=self.previousTag) else: - self.div_mid_ctl = self.addCtl(self.div_mid, self.getName("div%s_ctl" % d), tra.getTransform(self.div_mid), self.color_fk, "square",d=self.size*.05, w=self.size*.1,po=dt.Vector(0,self.size*0.05,0), ro=dt.Vector(0,0,dt.radians(90)), tp=self.previousTag) - att.setKeyableAttributes(self.div_mid_ctl) + self.div_mid_ctl = self.addCtl( + self.div_mid, self.getName("div%s_ctl" % d), + transform.getTransform(self.div_mid), + self.color_fk, + "square", + d=self.size * .05, + w=self.size * .1, + po=datatypes.Vector(0, self.size * 0.05, 0), + ro=datatypes.Vector(0, 0, datatypes.radians(90)), + tp=self.previousTag) + attribute.setKeyableAttributes(self.div_mid_ctl) self.previousTag = div_ctl self.div_cns.append(self.div_mid) - self.jnt_pos.append([self.div_mid_ctl,self.divisions0]) + self.jnt_pos.append([self.div_mid_ctl, self.divisions0]) self.div_ctls.append(self.div_mid_ctl) # down division for i in range(self.divisions1): - dd = i +self.divisions1+1 - div_cns = pri.addTransform(self.div_org, self.getName("div%s_loc" % dd)) + dd = i + self.divisions1 + 1 + div_cns = primitive.addTransform( + self.div_org, self.getName("div%s_loc" % dd)) if self.negate: - div_ctl = self.addCtl(div_cns, self.getName("div%s_ctl" % dd), tra.getTransform(div_cns), self.color_fk, "square",d=self.size*.05, w=self.size*.1,po=dt.Vector(0,self.size*-0.05,0),ro=dt.Vector(0,0,dt.radians(90)), tp=self.previousTag) + div_ctl = self.addCtl( + div_cns, + self.getName("div%s_ctl" % dd), + transform.getTransform(div_cns), + self.color_fk, + "square", + d=self.size * .05, + w=self.size * .1, + po=datatypes.Vector(0, self.size * -0.05, 0), + ro=datatypes.Vector(0, 0, datatypes.radians(90)), + tp=self.previousTag) else: - div_ctl = self.addCtl(div_cns, self.getName("div%s_ctl" % dd), tra.getTransform(div_cns), self.color_fk, "square",d=self.size*.05, w=self.size*.1,po=dt.Vector(0,self.size*0.05,0),ro=dt.Vector(0,0,dt.radians(90)), tp=self.previousTag) - att.setKeyableAttributes(div_ctl) + div_ctl = self.addCtl( + div_cns, + self.getName("div%s_ctl" % dd), + transform.getTransform(div_cns), + self.color_fk, + "square", + d=self.size * .05, + w=self.size * .1, + po=datatypes.Vector(0, self.size * 0.05, 0), + ro=datatypes.Vector(0, 0, datatypes.radians(90)), + tp=self.previousTag) + attribute.setKeyableAttributes(div_ctl) self.previousTag = div_ctl self.div_cns.append(div_cns) self.div_cnsDn.append(div_cns) - self.jnt_pos.append([div_ctl,i+self.divisions0+1]) + self.jnt_pos.append([div_ctl, i + self.divisions0 + 1]) self.div_ctls.append(div_ctl) # End reference ------------------------------------ # To help the deformation on the wrist self.jnt_pos.append([self.eff_loc, 'end']) - #match IK FK references - - self.match_fk0 = pri.addTransform(self.root, self.getName("fk0_mth"), tra.getTransform(self.fk_ctl[0])) - self.match_fk1 = pri.addTransform(self.root, self.getName("fk1_mth"), tra.getTransform(self.fk_ctl[1])) - self.match_fk2 = pri.addTransform(self.ik_ctl, self.getName("fk2_mth"), tra.getTransform(self.fk_ctl[2])) - - self.match_ik = pri.addTransform(self.fk2_ctl, self.getName("ik_mth"), tra.getTransform(self.ik_ctl)) - self.match_ikUpv = pri.addTransform(self.fk0_roll_ctl, self.getName("upv_mth"), tra.getTransform(self.upv_ctl)) + # match IK FK references + + self.match_fk0 = primitive.addTransform( + self.root, + self.getName("fk0_mth"), + transform.getTransform(self.fk_ctl[0])) + self.match_fk1 = primitive.addTransform( + self.root, + self.getName("fk1_mth"), + transform.getTransform(self.fk_ctl[1])) + self.match_fk2 = primitive.addTransform( + self.ik_ctl, + self.getName("fk2_mth"), + transform.getTransform(self.fk_ctl[2])) + + self.match_ik = primitive.addTransform( + self.fk2_ctl, + self.getName("ik_mth"), + transform.getTransform(self.ik_ctl)) + self.match_ikUpv = primitive.addTransform( + self.fk0_roll_ctl, + self.getName("upv_mth"), + transform.getTransform(self.upv_ctl)) + # ===================================================== + # ATTRIBUTES + # ===================================================== def addAttributes(self): + """Create the anim and setupr rig attributes for the component""" # Anim ------------------------------------------- - self.blend_att = self.addAnimParam("blend", "Fk/Ik Arm", "double", self.settings["blend"], 0, 1) - self.blend2_att = self.addAnimParam("blend_hand", "Fk/Ik Hand", "double", self.settings["blend"], 0, 1) - self.auv_att = self.addAnimParam("auv", "Auto Upvector", "double", 0, 0, 1) - self.roll_att = self.addAnimParam("roll", "Roll", "double", 0, -180, 180) - self.armpit_roll_att = self.addAnimParam("aproll", "Armpit Roll", "double", 0, -360, 360) - - self.scale_att = self.addAnimParam("ikscale", "Scale", "double", 1, .001, 99) - self.maxstretch_att = self.addAnimParam("maxstretch", "Max Stretch", "double", self.settings["maxstretch"], 1, 99) - self.slide_att = self.addAnimParam("slide", "Slide", "double", .5, 0, 1) - self.softness_att = self.addAnimParam("softness", "Softness", "double", 0, 0, 1) - self.reverse_att = self.addAnimParam("reverse", "Reverse", "double", 0, 0, 1) - self.roundness0_att = self.addAnimParam("roundness_up", "Roundness Up", "double", 0, 0, self.size) - self.roundness1_att = self.addAnimParam("roundness_dn", "Roundness Dn", "double", 0, 0, self.size) - self.volume_att = self.addAnimParam("volume", "Volume", "double", 1, 0, 1) - self.elbow_thickness_att = self.addAnimParam("elbowthickness", "Elbow Thickness", "double", self.settings["elbow"], 0, 5) - self.jntctl_vis_att = self.addAnimParam("jntct_vis", "Joint Ctl Vis", "bool", 0,1,1) + self.blend_att = self.addAnimParam( + "blend", "Fk/Ik Arm", "double", self.settings["blend"], 0, 1) + self.blend2_att = self.addAnimParam( + "blend_hand", "Fk/Ik Hand", "double", self.settings["blend"], 0, 1) + self.auv_att = self.addAnimParam( + "auv", "Auto Upvector", "double", 0, 0, 1) + self.roll_att = self.addAnimParam( + "roll", "Roll", "double", 0, -180, 180) + self.armpit_roll_att = self.addAnimParam( + "aproll", "Armpit Roll", "double", 0, -360, 360) + self.scale_att = self.addAnimParam( + "ikscale", "Scale", "double", 1, .001, 99) + self.maxstretch_att = self.addAnimParam("maxstretch", + "Max Stretch", + "double", + self.settings["maxstretch"], + 1, + 99) + self.slide_att = self.addAnimParam( + "slide", "Slide", "double", .5, 0, 1) + self.softness_att = self.addAnimParam( + "softness", "Softness", "double", 0, 0, 1) + self.reverse_att = self.addAnimParam( + "reverse", "Reverse", "double", 0, 0, 1) + self.roundness0_att = self.addAnimParam( + "roundness_up", "Roundness Up", "double", 0, 0, self.size) + self.roundness1_att = self.addAnimParam( + "roundness_dn", "Roundness Dn", "double", 0, 0, self.size) + self.volume_att = self.addAnimParam( + "volume", "Volume", "double", 1, 0, 1) + self.elbow_thickness_att = self.addAnimParam("elbowthickness", + "Elbow Thickness", + "double", + self.settings["elbow"], + 0, + 5) + self.jntctl_vis_att = self.addAnimParam( + "jntct_vis", "Joint Ctl Vis", "bool", 0, 1, 1) # Ref if self.settings["fkrefarray"]: ref_names = self.settings["fkrefarray"].split(",") if len(ref_names) > 1: - self.ref_att = self.addAnimEnumParam("fkref", "Fk Ref", 0, self.settings["fkrefarray"].split(",")) + self.ref_att = self.addAnimEnumParam( + "fkref", + "Fk Ref", + 0, + self.settings["fkrefarray"].split(",")) if self.settings["ikrefarray"]: ref_names = self.settings["ikrefarray"].split(",") if len(ref_names) > 1: - self.ikref_att = self.addAnimEnumParam("ikref", "Ik Ref", 0, self.settings["ikrefarray"].split(",")) + self.ikref_att = self.addAnimEnumParam( + "ikref", + "Ik Ref", + 0, + self.settings["ikrefarray"].split(",")) if self.settings["upvrefarray"]: ref_names = self.settings["upvrefarray"].split(",") if len(ref_names) > 1: - self.upvref_att = self.addAnimEnumParam("upvref", "UpV Ref", 0, self.settings["upvrefarray"].split(",")) + self.upvref_att = self.addAnimEnumParam( + "upvref", + "UpV Ref", + 0, + self.settings["upvrefarray"].split(",")) # Setup ------------------------------------------ # Eval Fcurve - self.st_value = fcu.getFCurveValues(self.settings["st_profile"], self.divisions) - self.sq_value = fcu.getFCurveValues(self.settings["sq_profile"], self.divisions) + self.st_value = fcurve.getFCurveValues(self.settings["st_profile"], + self.divisions) + self.sq_value = fcurve.getFCurveValues(self.settings["sq_profile"], + self.divisions) + + self.st_att = [self.addSetupParam("stretch_%s" % i, + "Stretch %s" % i, + "double", + self.st_value[i], + -1, + 0) + for i in range(self.divisions)] + + self.sq_att = [self.addSetupParam("squash_%s" % i, + "Squash %s" % i, + "double", + self.sq_value[i], + 0, + 1) + for i in range(self.divisions)] + + self.resample_att = self.addSetupParam( + "resample", "Resample", "bool", True) + self.absolute_att = self.addSetupParam( + "absolute", "Absolute", "bool", False) - self.st_att = [ self.addSetupParam("stretch_%s"%i, "Stretch %s"%i, "double", self.st_value[i], -1, 0) for i in range(self.divisions) ] - self.sq_att = [ self.addSetupParam("squash_%s"%i, "Squash %s"%i, "double", self.sq_value[i], 0, 1) for i in range(self.divisions) ] + # ===================================================== + # OPERATORS + # ===================================================== + def addOperators(self): + """Create operators and set the relations for the component rig - self.resample_att = self.addSetupParam("resample", "Resample", "bool", True) - self.absolute_att = self.addSetupParam("absolute", "Absolute", "bool", False) + Apply operators, constraints, expressions to the hierarchy. + In order to keep the code clean and easier to debug, + we shouldn't create any new object in this method. - def addOperators(self): + """ # Visibilities ------------------------------------- # fk - fkvis_node = nod.createReverseNode(self.blend_att) + fkvis_node = node.createReverseNode(self.blend_att) for shp in self.fk0_ctl.getShapes(): - pm.connectAttr(fkvis_node+".outputX", shp.attr("visibility")) + pm.connectAttr(fkvis_node + ".outputX", shp.attr("visibility")) for shp in self.fk0_roll_ctl.getShapes(): - pm.connectAttr(fkvis_node+".outputX", shp.attr("visibility")) + pm.connectAttr(fkvis_node + ".outputX", shp.attr("visibility")) for shp in self.fk1_ctl.getShapes(): - pm.connectAttr(fkvis_node+".outputX", shp.attr("visibility")) + pm.connectAttr(fkvis_node + ".outputX", shp.attr("visibility")) for shp in self.fk1_roll_ctl.getShapes(): - pm.connectAttr(fkvis_node+".outputX", shp.attr("visibility")) + pm.connectAttr(fkvis_node + ".outputX", shp.attr("visibility")) - fkvis2_node = nod.createReverseNode(self.blend2_att) + fkvis2_node = node.createReverseNode(self.blend2_att) for shp in self.fk2_ctl.getShapes(): - pm.connectAttr(fkvis2_node+".outputX", shp.attr("visibility")) + pm.connectAttr(fkvis2_node + ".outputX", shp.attr("visibility")) # ik for shp in self.upv_ctl.getShapes(): @@ -359,162 +664,232 @@ def addOperators(self): pm.connectAttr(self.jntctl_vis_att, shp.attr("visibility")) # Controls ROT order ----------------------------------- - att.setRotOrder(self.fk0_ctl, "YZX") - att.setRotOrder(self.fk1_ctl, "XYZ") - att.setRotOrder(self.fk2_ctl, "YZX") - att.setRotOrder(self.ik_ctl, "XYZ") - + attribute.setRotOrder(self.fk0_ctl, "YZX") + attribute.setRotOrder(self.fk1_ctl, "XYZ") + attribute.setRotOrder(self.fk2_ctl, "YZX") + attribute.setRotOrder(self.ik_ctl, "XYZ") # IK Solver ----------------------------------------- out = [self.bone0, self.bone1, self.ctrn_loc, self.eff_npo] - node = aop.gear_ikfk2bone_op(out, self.root, self.ik_ref, self.upv_ctl, self.fk0_mtx, self.fk1_mtx, self.fk2_mtx, self.length0, self.length1, self.negate) - - pm.connectAttr(self.blend_att, node+".blend") - pm.connectAttr(self.roll_att, node+".roll") - pm.connectAttr(self.scale_att, node+".scaleA") - pm.connectAttr(self.scale_att, node+".scaleB") - pm.connectAttr(self.maxstretch_att, node+".maxstretch") - pm.connectAttr(self.slide_att, node+".slide") - pm.connectAttr(self.softness_att, node+".softness") - pm.connectAttr(self.reverse_att, node+".reverse") - # update issue on effector scale interpolation, disconnect for stability + o_node = applyop.gear_ikfk2bone_op(out, + self.root, + self.ik_ref, + self.upv_ctl, + self.fk0_mtx, + self.fk1_mtx, + self.fk2_mtx, + self.length0, + self.length1, + self.negate) + + pm.connectAttr(self.blend_att, o_node + ".blend") + pm.connectAttr(self.roll_att, o_node + ".roll") + pm.connectAttr(self.scale_att, o_node + ".scaleA") + pm.connectAttr(self.scale_att, o_node + ".scaleB") + pm.connectAttr(self.maxstretch_att, o_node + ".maxstretch") + pm.connectAttr(self.slide_att, o_node + ".slide") + pm.connectAttr(self.softness_att, o_node + ".softness") + pm.connectAttr(self.reverse_att, o_node + ".reverse") + # update issue on effector scale interpol, disconnect for stability pm.disconnectAttr(self.eff_npo.scale) # auto upvector ------------------------------------- if self.negate: - node = aop.aimCns(self.upv_auv, self.ik_ctl, axis="-xy", wupType=4, wupVector=[0,1,0], wupObject=self.upv_auv, maintainOffset=False) + o_node = applyop.aimCns(self.upv_auv, + self.ik_ctl, + axis="-xy", + wupType=4, + wupVector=[0, 1, 0], + wupObject=self.upv_auv, + maintainOffset=False) else: - node = aop.aimCns(self.upv_auv, self.ik_ctl, axis="xy", wupType=4, wupVector=[0,1,0], wupObject=self.upv_auv, maintainOffset=False) - - node = aop.gear_mulmatrix_op(self.upv_auv.attr("worldMatrix"), self.upv_mtx.attr("parentInverseMatrix")) + o_node = applyop.aimCns(self.upv_auv, + self.ik_ctl, + axis="xy", + wupType=4, + wupVector=[0, 1, 0], + wupObject=self.upv_auv, + maintainOffset=False) + + o_node = applyop.gear_mulmatrix_op( + self.upv_auv.attr("worldMatrix"), + self.upv_mtx.attr("parentInverseMatrix")) dm_node = pm.createNode("decomposeMatrix") - pm.connectAttr(node+".output", dm_node+".inputMatrix") + pm.connectAttr(o_node + ".output", dm_node + ".inputMatrix") pb_node = pm.createNode("pairBlend") - pb_node.attr("rotInterpolation").set (1) - pm.connectAttr(dm_node+".outputTranslate", pb_node+".inTranslate2") - pm.connectAttr(dm_node+".outputRotate", pb_node+".inRotate2") - pm.connectAttr(pb_node+".outRotate", self.upv_mtx.attr("rotate")) - pm.connectAttr(pb_node+".outTranslate", self.upv_mtx.attr("translate")) - pm.connectAttr(self.auv_att, pb_node+".weight") + pb_node.attr("rotInterpolation").set(1) + pm.connectAttr(dm_node + ".outputTranslate", pb_node + ".inTranslate2") + pm.connectAttr(dm_node + ".outputRotate", pb_node + ".inRotate2") + pm.connectAttr(pb_node + ".outRotate", self.upv_mtx.attr("rotate")) + pm.connectAttr(pb_node + ".outTranslate", + self.upv_mtx.attr("translate")) + pm.connectAttr(self.auv_att, pb_node + ".weight") # fk0 mtx connection - node = aop.gear_mulmatrix_op(self.fk0_roll_ctl.attr("worldMatrix"), self.fk0_mtx.attr("parentInverseMatrix")) + o_node = applyop.gear_mulmatrix_op( + self.fk0_roll_ctl.attr("worldMatrix"), + self.fk0_mtx.attr("parentInverseMatrix")) dm_node = pm.createNode("decomposeMatrix") - pm.connectAttr(node+".output", dm_node+".inputMatrix") - pm.connectAttr(dm_node+".outputTranslate", self.fk0_mtx.attr("translate")) - pm.connectAttr(dm_node+".outputRotate", self.fk0_mtx.attr("rotate")) + pm.connectAttr(o_node + ".output", dm_node + ".inputMatrix") + pm.connectAttr(dm_node + ".outputTranslate", + self.fk0_mtx.attr("translate")) + pm.connectAttr(dm_node + ".outputRotate", self.fk0_mtx.attr("rotate")) # fk1 loc connect to fk1 ref @ pos and rot, not scl to avoid shearing - node = aop.gear_mulmatrix_op(self.fk1_ref.attr("worldMatrix"), self.fk1_loc.attr("parentInverseMatrix")) + o_node = applyop.gear_mulmatrix_op( + self.fk1_ref.attr("worldMatrix"), + self.fk1_loc.attr("parentInverseMatrix")) dm_node = pm.createNode("decomposeMatrix") - pm.connectAttr(node+".output", dm_node+".inputMatrix") - pm.connectAttr(dm_node+".outputTranslate", self.fk1_loc.attr("translate")) - pm.connectAttr(dm_node+".outputRotate", self.fk1_loc.attr("rotate")) + pm.connectAttr(o_node + ".output", dm_node + ".inputMatrix") + pm.connectAttr(dm_node + ".outputTranslate", + self.fk1_loc.attr("translate")) + pm.connectAttr(dm_node + ".outputRotate", self.fk1_loc.attr("rotate")) # fk1 mtx orient cns to fk1 roll - pm.connectAttr(self.fk1_roll_ctl.attr("rotate"), self.fk1_mtx.attr("rotate")) + pm.connectAttr(self.fk1_roll_ctl.attr("rotate"), + self.fk1_mtx.attr("rotate")) # fk2_loc position constraint to effector------------------------ - node = aop.gear_mulmatrix_op(self.eff_npo.attr("worldMatrix"), self.fk2_loc.attr("parentInverseMatrix")) + o_node = applyop.gear_mulmatrix_op( + self.eff_npo.attr("worldMatrix"), + self.fk2_loc.attr("parentInverseMatrix")) dm_node = pm.createNode("decomposeMatrix") - pm.connectAttr(node+".output", dm_node+".inputMatrix") - pm.connectAttr(dm_node+".outputTranslate", self.fk2_loc.attr("translate")) - # fk2_loc rotation constraint to bone1 (bugfixed) ------------------------ - node = aop.gear_mulmatrix_op(self.bone1.attr("worldMatrix"), self.fk2_loc.attr("parentInverseMatrix")) + pm.connectAttr(o_node + ".output", dm_node + ".inputMatrix") + pm.connectAttr(dm_node + ".outputTranslate", + self.fk2_loc.attr("translate")) + # fk2_loc rotation constraint to bone1 (bugfixed) -------------- + o_node = applyop.gear_mulmatrix_op( + self.bone1.attr("worldMatrix"), + self.fk2_loc.attr("parentInverseMatrix")) dm_node = pm.createNode("decomposeMatrix") - pm.connectAttr(node+".output", dm_node+".inputMatrix") - pm.connectAttr(dm_node+".outputRotate", self.fk2_loc.attr("rotate")) + pm.connectAttr(o_node + ".output", dm_node + ".inputMatrix") + pm.connectAttr(dm_node + ".outputRotate", self.fk2_loc.attr("rotate")) - - # hand ikfk blending from fk ref to ik ref (serious bugfix)-------------------------------- - node = aop.gear_mulmatrix_op(self.fk_ref.attr("worldMatrix"), self.eff_loc.attr("parentInverseMatrix")) + # hand ikfk blending from fk ref to ik ref (serious bugfix)-------- + o_node = applyop.gear_mulmatrix_op( + self.fk_ref.attr("worldMatrix"), + self.eff_loc.attr("parentInverseMatrix")) dm_node = pm.createNode("decomposeMatrix") pb_node = pm.createNode("pairBlend") - pb_node.attr("rotInterpolation").set (1) - pm.connectAttr(node+".output", dm_node+".inputMatrix") - pm.connectAttr(dm_node+".outputRotate", pb_node+".inRotate1") - pm.connectAttr(self.blend2_att, pb_node+".weight") - pm.connectAttr(pb_node+".outRotate", self.eff_loc.attr("rotate")) - node = aop.gear_mulmatrix_op(self.ik_ref.attr("worldMatrix"), self.eff_loc.attr("parentInverseMatrix")) + pb_node.attr("rotInterpolation").set(1) + pm.connectAttr(o_node + ".output", dm_node + ".inputMatrix") + pm.connectAttr(dm_node + ".outputRotate", pb_node + ".inRotate1") + pm.connectAttr(self.blend2_att, pb_node + ".weight") + pm.connectAttr(pb_node + ".outRotate", self.eff_loc.attr("rotate")) + o_node = applyop.gear_mulmatrix_op( + self.ik_ref.attr("worldMatrix"), + self.eff_loc.attr("parentInverseMatrix")) dm_node1 = pm.createNode("decomposeMatrix") - pm.connectAttr(node+".output", dm_node1+".inputMatrix") - pm.connectAttr(dm_node1+".outputRotate", pb_node+".inRotate2") + pm.connectAttr(o_node + ".output", dm_node1 + ".inputMatrix") + pm.connectAttr(dm_node1 + ".outputRotate", pb_node + ".inRotate2") # use blendcolors to blend scale bc_node = pm.createNode("blendColors") - pm.connectAttr(self.blend_att, bc_node+".blender") - pm.connectAttr(dm_node+".outputScale", bc_node+".color2") - pm.connectAttr(dm_node1+".outputScale", bc_node+".color1") - pm.connectAttr(bc_node+".output", self.eff_loc.attr("scale")) + pm.connectAttr(self.blend_att, bc_node + ".blender") + pm.connectAttr(dm_node + ".outputScale", bc_node + ".color2") + pm.connectAttr(dm_node1 + ".outputScale", bc_node + ".color1") + pm.connectAttr(bc_node + ".output", self.eff_loc.attr("scale")) # Twist references --------------------------------- - pm.connectAttr(self.mid_ctl.attr("translate"), self.tws1_npo.attr("translate")) - pm.connectAttr(self.mid_ctl.attr("rotate"), self.tws1_npo.attr("rotate")) - pm.connectAttr(self.mid_ctl.attr("scale"), self.tws1_npo.attr("scale")) - - - node = aop.gear_mulmatrix_op(self.eff_loc.attr("worldMatrix"), self.tws3_npo.attr("parentInverseMatrix")) + pm.connectAttr(self.mid_ctl.attr("translate"), + self.tws1_npo.attr("translate")) + pm.connectAttr(self.mid_ctl.attr("rotate"), + self.tws1_npo.attr("rotate")) + pm.connectAttr(self.mid_ctl.attr("scale"), + self.tws1_npo.attr("scale")) + + o_node = applyop.gear_mulmatrix_op( + self.eff_loc.attr("worldMatrix"), + self.tws3_npo.attr("parentInverseMatrix")) dm_node = pm.createNode("decomposeMatrix") - pm.connectAttr(node+".output", dm_node+".inputMatrix") - pm.connectAttr(dm_node+".outputTranslate", self.tws3_npo.attr("translate")) - pm.connectAttr(dm_node+".outputRotate", self.tws3_npo.attr("rotate")) + pm.connectAttr(o_node + ".output", dm_node + ".inputMatrix") + pm.connectAttr(dm_node + ".outputTranslate", + self.tws3_npo.attr("translate")) - att.setRotOrder(self.tws3_rot, "XYZ") + pm.connectAttr(dm_node + ".outputRotate", + self.tws3_npo.attr("rotate")) + + attribute.setRotOrder(self.tws3_rot, "XYZ") # elbow thickness connection if self.negate: - node = nod.createMulNode([self.elbow_thickness_att,self.elbow_thickness_att], [0.5,-0.5,0], [self.tws1_loc+".translateX",self.tws2_loc+".translateX"]) + o_node = node.createMulNode( + [self.elbow_thickness_att, self.elbow_thickness_att], + [0.5, -0.5, 0], + [self.tws1_loc + ".translateX", self.tws2_loc + ".translateX"]) else: - node = nod.createMulNode([self.elbow_thickness_att,self.elbow_thickness_att], [-0.5,0.5,0], [self.tws1_loc+".translateX",self.tws2_loc+".translateX"]) + o_node = node.createMulNode( + [self.elbow_thickness_att, self.elbow_thickness_att], + [-0.5, 0.5, 0], + [self.tws1_loc + ".translateX", self.tws2_loc + ".translateX"]) # connect both tws1 and tws2 (mid tws) self.tws0_rot.setAttr("sx", .001) self.tws3_rot.setAttr("sx", .001) - add_node = nod.createAddNode(self.roundness0_att, .001) - pm.connectAttr(add_node+".output", self.tws1_rot.attr("sx")) - - add_node = nod.createAddNode(self.roundness1_att, .001) - pm.connectAttr(add_node+".output", self.tws2_rot.attr("sx")) + add_node = node.createAddNode(self.roundness0_att, .001) + pm.connectAttr(add_node + ".output", self.tws1_rot.attr("sx")) + add_node = node.createAddNode(self.roundness1_att, .001) + pm.connectAttr(add_node + ".output", self.tws2_rot.attr("sx")) - pm.connectAttr(self.armpit_roll_att, self.tws0_rot+".rotateX") + pm.connectAttr(self.armpit_roll_att, self.tws0_rot + ".rotateX") - #Roll Shoulder--use aimconstraint withour uovwctor to solve the stable twist + # Roll Shoulder--use aimconstraint withour uovwctor to solve + # the stable twist if self.negate: - node = aop.aimCns(self.tws0_loc, self.mid_ctl, axis="-xy", wupType=4, wupVector=[0,1,0], wupObject=self.tws0_npo, maintainOffset=False) + o_node = applyop.aimCns(self.tws0_loc, + self.mid_ctl, + axis="-xy", + wupType=4, + wupVector=[0, 1, 0], + wupObject=self.tws0_npo, + maintainOffset=False) else: - node = aop.aimCns(self.tws0_loc, self.mid_ctl, axis="xy", wupType=4, wupVector=[0,1,0], wupObject=self.tws0_npo, maintainOffset=False) - + o_node = applyop.aimCns(self.tws0_loc, + self.mid_ctl, + axis="xy", + wupType=4, + wupVector=[0, 1, 0], + wupObject=self.tws0_npo, + maintainOffset=False) # Volume ------------------------------------------- - distA_node = nod.createDistNode(self.tws0_loc, self.tws1_npo) - distB_node = nod.createDistNode(self.tws1_npo, self.tws3_loc) - add_node = nod.createAddNode(distA_node+".distance", distB_node+".distance") - div_node = nod.createDivNode(add_node+".output", self.root.attr("sx")) + distA_node = node.createDistNode(self.tws0_loc, self.tws1_npo) + distB_node = node.createDistNode(self.tws1_npo, self.tws3_loc) + add_node = node.createAddNode(distA_node + ".distance", + distB_node + ".distance") + div_node = node.createDivNode(add_node + ".output", + self.root.attr("sx")) dm_node = pm.createNode("decomposeMatrix") - pm.connectAttr(self.root.attr("worldMatrix"), dm_node+".inputMatrix") + pm.connectAttr(self.root.attr("worldMatrix"), dm_node + ".inputMatrix") - div_node2 = nod.createDivNode(div_node+".outputX", dm_node+".outputScaleX") - self.volDriver_att = div_node2+".outputX" + div_node2 = node.createDivNode(div_node + ".outputX", + dm_node + ".outputScaleX") + self.volDriver_att = div_node2 + ".outputX" # Divisions ---------------------------------------- # div mid constraint to mid ctl - node = aop.gear_mulmatrix_op(self.mid_ctl.attr("worldMatrix"), self.div_mid.attr("parentInverseMatrix")) + o_node = applyop.gear_mulmatrix_op( + self.mid_ctl.attr("worldMatrix"), + self.div_mid.attr("parentInverseMatrix")) dm_node = pm.createNode("decomposeMatrix") - pm.connectAttr(node+".output", dm_node+".inputMatrix") - pm.connectAttr(dm_node+".outputTranslate", self.div_mid.attr("translate")) - pm.connectAttr(dm_node+".outputRotate", self.div_mid.attr("rotate")) - - # at 0 or 1 the division will follow exactly the rotation of the controler.. and we wont have this nice tangent + roll + pm.connectAttr(o_node + ".output", dm_node + ".inputMatrix") + pm.connectAttr(dm_node + ".outputTranslate", + self.div_mid.attr("translate")) + pm.connectAttr(dm_node + ".outputRotate", + self.div_mid.attr("rotate")) + + # at 0 or 1 the division will follow exactly the rotation of the + # controler.. and we wont have this nice tangent + roll # linear scaling percentage (1) to effector (2) to elbow scl_1_perc = [] scl_2_perc = [] for i, div_cnsUp in enumerate(self.div_cnsUp): - if i < (self.settings["div0"]+1): - perc = i/ (self.settings["div0"]+1.0) + if i < (self.settings["div0"] + 1): + perc = i / (self.settings["div0"] + 1.0) elif i < (self.settings["div0"] + 2): perc = .95 @@ -522,23 +897,26 @@ def addOperators(self): # Roll if self.negate: - node = aop.gear_rollsplinekine_op(div_cnsUp, [self.tws1_rot, self.tws0_rot], 1-perc, 20) + o_node = applyop.gear_rollsplinekine_op( + div_cnsUp, [self.tws1_rot, self.tws0_rot], 1 - perc, 20) else: - node = aop.gear_rollsplinekine_op(div_cnsUp, [self.tws0_rot, self.tws1_rot], perc, 20) - pm.connectAttr(self.resample_att, node+".resample") - pm.connectAttr(self.absolute_att, node+".absolute") + o_node = applyop.gear_rollsplinekine_op( + div_cnsUp, [self.tws0_rot, self.tws1_rot], perc, 20) + + pm.connectAttr(self.resample_att, o_node + ".resample") + pm.connectAttr(self.absolute_att, o_node + ".absolute") - scl_1_perc.append(perc/2) + scl_1_perc.append(perc / 2) scl_2_perc.append(perc) scl_1_perc.append(0.5) scl_2_perc.append(1) for i, div_cnsDn in enumerate(self.div_cnsDn): if i == (0): - perc = .05 - elif i < (self.settings["div1"]+1): - perc = i/ (self.settings["div1"]+1.0) + perc = .05 + elif i < (self.settings["div1"] + 1): + perc = i / (self.settings["div1"] + 1.0) elif i < (self.settings["div1"] + 2): perc = .95 @@ -546,58 +924,63 @@ def addOperators(self): # Roll if self.negate: - node = aop.gear_rollsplinekine_op(div_cnsDn, [self.tws3_rot, self.tws2_rot], 1-perc, 20) + o_node = applyop.gear_rollsplinekine_op( + div_cnsDn, [self.tws3_rot, self.tws2_rot], 1 - perc, 20) else: - node = aop.gear_rollsplinekine_op(div_cnsDn, [self.tws2_rot, self.tws3_rot], perc, 20) - pm.connectAttr(self.resample_att, node+".resample") - pm.connectAttr(self.absolute_att, node+".absolute") + o_node = applyop.gear_rollsplinekine_op( + div_cnsDn, [self.tws2_rot, self.tws3_rot], perc, 20) + pm.connectAttr(self.resample_att, o_node + ".resample") + pm.connectAttr(self.absolute_att, o_node + ".absolute") - scl_1_perc.append(perc/2+0.5) - scl_2_perc.append(1-perc) + scl_1_perc.append(perc / 2 + 0.5) + scl_2_perc.append(1 - perc) # Squash n Stretch for i, div_cns in enumerate(self.div_cns): - node = aop.gear_squashstretch2_op(div_cns, None, pm.getAttr(self.volDriver_att), "x") - pm.connectAttr(self.volume_att, node+".blend") - pm.connectAttr(self.volDriver_att, node+".driver") - pm.connectAttr(self.st_att[i], node+".stretch") - pm.connectAttr(self.sq_att[i], node+".squash") + o_node = applyop.gear_squashstretch2_op( + div_cns, None, pm.getAttr(self.volDriver_att), "x") + pm.connectAttr(self.volume_att, o_node + ".blend") + pm.connectAttr(self.volDriver_att, o_node + ".driver") + pm.connectAttr(self.st_att[i], o_node + ".stretch") + pm.connectAttr(self.sq_att[i], o_node + ".squash") # get the first mult_node after sq op - mult_node = pm.listHistory(node, future=True )[1] + mult_node = pm.listHistory(o_node, future=True)[1] # linear blend effector scale bc_node = pm.createNode("blendColors") bc_node.setAttr("color2R", 1) bc_node.setAttr("color2G", 1) bc_node.setAttr("blender", scl_1_perc[i]) - pm.connectAttr(self.eff_loc.attr("scale"), bc_node+".color1") + pm.connectAttr(self.eff_loc.attr("scale"), bc_node + ".color1") # linear blend mid scale bc_node2 = pm.createNode("blendColors") bc_node2.setAttr("color2R", 1) bc_node2.setAttr("color2G", 1) bc_node2.setAttr("blender", scl_2_perc[i]) - pm.connectAttr(self.mid_ctl.attr("scale"), bc_node2+".color1") + pm.connectAttr(self.mid_ctl.attr("scale"), bc_node2 + ".color1") # mid_ctl scale * effector scale mult_node2 = pm.createNode("multiplyDivide") - pm.connectAttr(bc_node2+".output", mult_node2+".input1") - pm.connectAttr(bc_node+".output", mult_node2+".input2") + pm.connectAttr(bc_node2 + ".output", mult_node2 + ".input1") + pm.connectAttr(bc_node + ".output", mult_node2 + ".input2") # plug to sq scale - pm.connectAttr(mult_node2+".output", mult_node+".input2") + pm.connectAttr(mult_node2 + ".output", mult_node + ".input2") # match IK/FK ref - pm.connectAttr(self.bone0.attr("rotate"), self.match_fk0.attr("rotate")) - pm.connectAttr(self.bone0.attr("translate"), self.match_fk0.attr("translate")) - pm.connectAttr(self.bone1.attr("rotate"), self.match_fk1.attr("rotate")) - pm.connectAttr(self.bone1.attr("translate"), self.match_fk1.attr("translate")) + pm.connectAttr(self.bone0.attr("rotate"), + self.match_fk0.attr("rotate")) + pm.connectAttr(self.bone0.attr("translate"), + self.match_fk0.attr("translate")) + pm.connectAttr(self.bone1.attr("rotate"), + self.match_fk1.attr("rotate")) + pm.connectAttr(self.bone1.attr("translate"), + self.match_fk1.attr("translate")) return # ===================================================== # CONNECTOR # ===================================================== - ## Set the relation beetween object from guide to rig.\n - # @param self - # TODO: replace bone0 and control objects by loc connections def setRelation(self): + """Set the relation beetween object from guide to rig""" self.relatives["root"] = self.div_cns[0] self.relatives["elbow"] = self.div_cns[self.settings["div0"] + 2] self.relatives["wrist"] = self.div_cns[-1] @@ -605,16 +988,17 @@ def setRelation(self): self.jointRelatives["root"] = 0 self.jointRelatives["elbow"] = self.settings["div0"] + 2 - self.jointRelatives["wrist"] = len(self.div_cns)-1 + self.jointRelatives["wrist"] = len(self.div_cns) - 1 self.jointRelatives["eff"] = -1 self.controlRelatives["root"] = self.fk0_ctl self.controlRelatives["elbow"] = self.fk1_ctl self.controlRelatives["wrist"] = self.fk2_ctl self.controlRelatives["eff"] = self.fk2_ctl - ## standard connection definition. - # @param self + def connect_standard(self): + """standard connection definition for the component""" self.connect_standardWithIkRef() # fk isolation connection - self.connect_standardWithRotRef(self.settings["fkrefarray"], self.fk_cns) + self.connect_standardWithRotRef(self.settings["fkrefarray"], + self.fk_cns) diff --git a/scripts/mgear/maya/shifter/component/arm_ms_2jnt_01/guide.py b/scripts/mgear/maya/shifter/component/arm_ms_2jnt_01/guide.py index 560b13d..a170829 100644 --- a/scripts/mgear/maya/shifter/component/arm_ms_2jnt_01/guide.py +++ b/scripts/mgear/maya/shifter/component/arm_ms_2jnt_01/guide.py @@ -1,59 +1,32 @@ -# MGEAR is under the terms of the MIT License +"""Guide Arm Miles 2 joints 01 module""" -# Copyright (c) 2016 Jeremie Passerin, Miquel Campos - -# Permission is hereby granted, free of charge, to any person obtaining a copy -# of this software and associated documentation files (the "Software"), to deal -# in the Software without restriction, including without limitation the rights -# to use, copy, modify, merge, publish, distribute, sublicense, and/or sell -# copies of the Software, and to permit persons to whom the Software is -# furnished to do so, subject to the following conditions: - -# The above copyright notice and this permission notice shall be included in all -# copies or substantial portions of the Software. - -# THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR -# IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, -# FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE -# AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER -# LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, -# OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE -# SOFTWARE. - -# Author: Jeremie Passerin geerem@hotmail.com www.jeremiepasserin.com -# Author: Miquel Campos hello@miquel-campos.com www.miquel-campos.com -# Date: 2016 / 10 / 10 - -########################################################## -# GLOBAL -########################################################## from functools import partial -# mgear -from mgear.maya.shifter.component.guide import ComponentGuide -import mgear.maya.transform as tra +from mgear.maya.shifter.component import guide +from mgear.maya import transform, pyqt +from mgear.vendor.Qt import QtWidgets, QtCore -#Pyside -from mgear.maya.shifter.component.guide import componentMainSettings -import mgear.maya.pyqt as gqt from maya.app.general.mayaMixin import MayaQWidgetDockableMixin from maya.app.general.mayaMixin import MayaQDockWidget + import settingsUI as sui -QtGui, QtCore, QtWidgets, wrapInstance = gqt.qt_import() # guide info -AUTHOR = "Jeremie Passerin, Miquel Campos, Miles Cheng" -URL = "www.jeremiepasserin.com, www.miquletd.com" -EMAIL = "geerem@hotmail.com, hello@miquel-campos.com , miles@simage.com.hk" -VERSION = [1,3,0] +AUTHOR = "Miles Cheng, Jeremie Passerin, Miquel Campos" +URL = "" +EMAIL = "miles@simage.com.hk, geerem@hotmail.com, hello@miquel-campos.com" +VERSION = [1, 3, 0] TYPE = "arm_ms_2jnt_01" NAME = "arm" -DESCRIPTION = "2 bones arm with Maya nodes for roll bones + Simage specification" +DESCRIPTION = "2 bones arm with Maya nodes for roll bones + Simage specs" ########################################################## # CLASS ########################################################## -class Guide(ComponentGuide): + + +class Guide(guide.ComponentGuide): + """Component Guide Class""" compType = TYPE compName = NAME @@ -64,51 +37,51 @@ class Guide(ComponentGuide): email = EMAIL version = VERSION - # ===================================================== - ## - # @param self def postInit(self): + """Initialize the position for the guide""" self.save_transform = ["root", "elbow", "wrist", "eff"] - # ===================================================== - ## Add more object to the object definition list. - # @param self def addObjects(self): + """Add the Guide Root, blade and locators""" self.root = self.addRoot() - vTemp = tra.getOffsetPosition( self.root, [3,0,-.01]) + vTemp = transform.getOffsetPosition(self.root, [3, 0, -.01]) self.elbow = self.addLoc("elbow", self.root, vTemp) - vTemp = tra.getOffsetPosition( self.root, [6,0,0]) + vTemp = transform.getOffsetPosition(self.root, [6, 0, 0]) self.wrist = self.addLoc("wrist", self.elbow, vTemp) - vTemp = tra.getOffsetPosition( self.root, [7,0,0]) + vTemp = transform.getOffsetPosition(self.root, [7, 0, 0]) self.eff = self.addLoc("eff", self.wrist, vTemp) - self.dispcrv = self.addDispCurve("crv", [self.root, self.elbow, self.wrist, self.eff]) + self.dispcrv = self.addDispCurve( + "crv", [self.root, self.elbow, self.wrist, self.eff]) - # ===================================================== - ## Add more parameter to the parameter definition list. - # @param self def addParameters(self): + """Add the configurations settings""" # Default Values - self.pBlend = self.addParam("blend", "double", 0, 0, 1) - self.pFkRefArray = self.addParam("fkrefarray", "string", "") - self.pIkRefArray = self.addParam("ikrefarray", "string", "") + self.pBlend = self.addParam("blend", "double", 0, 0, 1) + self.pFkRefArray = self.addParam("fkrefarray", "string", "") + self.pIkRefArray = self.addParam("ikrefarray", "string", "") self.pUpvRefArray = self.addParam("upvrefarray", "string", "") - self.pMaxStretch = self.addParam("maxstretch", "double", 2 , 1, None) - self.pElbowThickness = self.addParam("elbow","double",0,0,None) + self.pMaxStretch = self.addParam("maxstretch", "double", 2, 1, None) + self.pElbowThickness = self.addParam("elbow", "double", 0, 0, None) # Divisions self.pDiv0 = self.addParam("div0", "long", 3, 1, None) self.pDiv1 = self.addParam("div1", "long", 3, 1, None) # FCurves - self.pSt_profile = self.addFCurveParam("st_profile", [[0,0],[.5,-.5],[1,0]]) - self.pSq_profile = self.addFCurveParam("sq_profile", [[0,0],[.5,.5],[1,0]]) - - self.pUseIndex = self.addParam("useIndex", "bool", False) - self.pParentJointIndex = self.addParam("parentJointIndex", "long", -1, None, None) + self.pSt_profile = self.addFCurveParam("st_profile", + [[0, 0], [.5, -.5], [1, 0]]) + self.pSq_profile = self.addFCurveParam("sq_profile", + [[0, 0], [.5, .5], [1, 0]]) + self.pUseIndex = self.addParam("useIndex", "bool", False) + self.pParentJointIndex = self.addParam("parentJointIndex", + "long", + -1, + None, + None) ########################################################## @@ -116,23 +89,24 @@ def addParameters(self): ########################################################## class settingsTab(QtWidgets.QDialog, sui.Ui_Form): + """The Component settings UI""" def __init__(self, parent=None): super(settingsTab, self).__init__(parent) self.setupUi(self) -class componentSettings(MayaQWidgetDockableMixin, componentMainSettings): +class componentSettings(MayaQWidgetDockableMixin, guide.componentMainSettings): + """Create the component setting window""" - def __init__(self, parent = None): + def __init__(self, parent=None): self.toolName = TYPE # Delete old instances of the componet settings window. - gqt.deleteInstances(self, MayaQDockWidget) + pyqt.deleteInstances(self, MayaQDockWidget) - super(self.__class__, self).__init__(parent = parent) + super(self.__class__, self).__init__(parent=parent) self.settingsTab = settingsTab() - self.setup_componentSettingWindow() self.create_componentControls() self.populate_componentControls() @@ -140,7 +114,7 @@ def __init__(self, parent = None): self.create_componentConnections() def setup_componentSettingWindow(self): - self.mayaMainWindow = gqt.maya_main_window() + self.mayaMainWindow = pyqt.maya_main_window() self.setObjectName(self.toolName) self.setWindowFlags(QtCore.Qt.Window) @@ -150,22 +124,29 @@ def setup_componentSettingWindow(self): def create_componentControls(self): return - def populate_componentControls(self): - """ - Populate the controls values from the custom attributes of the component. + """Populate Controls + + Populate the controls values from the custom attributes of the + component. """ - #populate tab + # populate tab self.tabs.insertTab(1, self.settingsTab, "Component Settings") - #populate component settings - self.settingsTab.ikfk_slider.setValue(int(self.root.attr("blend").get()*100)) - self.settingsTab.ikfk_spinBox.setValue(int(self.root.attr("blend").get()*100)) - self.settingsTab.maxStretch_spinBox.setValue(self.root.attr("maxstretch").get()) - self.settingsTab.elbow_spinBox.setValue(self.root.attr("elbow").get()) - self.settingsTab.div0_spinBox.setValue(self.root.attr("div0").get()) - self.settingsTab.div1_spinBox.setValue(self.root.attr("div1").get()) + # populate component settings + self.settingsTab.ikfk_slider.setValue( + int(self.root.attr("blend").get() * 100)) + self.settingsTab.ikfk_spinBox.setValue( + int(self.root.attr("blend").get() * 100)) + self.settingsTab.maxStretch_spinBox.setValue( + self.root.attr("maxstretch").get()) + self.settingsTab.elbow_spinBox.setValue( + self.root.attr("elbow").get()) + self.settingsTab.div0_spinBox.setValue( + self.root.attr("div0").get()) + self.settingsTab.div1_spinBox.setValue( + self.root.attr("div1").get()) fkRefArrayItems = self.root.attr("fkrefarray").get().split(",") for item in fkRefArrayItems: @@ -177,7 +158,6 @@ def populate_componentControls(self): for item in upvRefArrayItems: self.settingsTab.upvRefArray_listWidget.addItem(item) - def create_componentLayout(self): self.settings_layout = QtWidgets.QVBoxLayout() @@ -188,29 +168,69 @@ def create_componentLayout(self): def create_componentConnections(self): - self.settingsTab.ikfk_slider.valueChanged.connect(partial(self.updateSlider, self.settingsTab.ikfk_slider, "blend")) - self.settingsTab.ikfk_spinBox.valueChanged.connect(partial(self.updateSlider, self.settingsTab.ikfk_spinBox, "blend")) - self.settingsTab.maxStretch_spinBox.valueChanged.connect(partial(self.updateSpinBox, self.settingsTab.maxStretch_spinBox, "maxstretch")) - self.settingsTab.elbow_spinBox.valueChanged.connect(partial(self.updateSpinBox, self.settingsTab.elbow_spinBox, "elbow")) - - self.settingsTab.div0_spinBox.valueChanged.connect(partial(self.updateSpinBox, self.settingsTab.div0_spinBox, "div0")) - self.settingsTab.div1_spinBox.valueChanged.connect(partial(self.updateSpinBox, self.settingsTab.div1_spinBox, "div1")) - self.settingsTab.squashStretchProfile_pushButton.clicked.connect(self.setProfile) - - - self.settingsTab.fkRefArrayAdd_pushButton.clicked.connect(partial(self.addItem2listWidget, self.settingsTab.fkRefArray_listWidget, "fkrefarray")) - self.settingsTab.fkRefArrayRemove_pushButton.clicked.connect(partial(self.removeSelectedFromListWidget, self.settingsTab.fkRefArray_listWidget, "fkrefarray")) - self.settingsTab.fkRefArray_copyRef_pushButton.clicked.connect(partial(self.copyFromListWidget, self.settingsTab.ikRefArray_listWidget, self.settingsTab.fkRefArray_listWidget, "fkrefarray")) + self.settingsTab.ikfk_slider.valueChanged.connect( + partial(self.updateSlider, self.settingsTab.ikfk_slider, "blend")) + self.settingsTab.ikfk_spinBox.valueChanged.connect( + partial(self.updateSlider, self.settingsTab.ikfk_spinBox, "blend")) + self.settingsTab.maxStretch_spinBox.valueChanged.connect( + partial(self.updateSpinBox, + self.settingsTab.maxStretch_spinBox, + "maxstretch")) + self.settingsTab.elbow_spinBox.valueChanged.connect( + partial(self.updateSpinBox, + self.settingsTab.elbow_spinBox, + "elbow")) + + self.settingsTab.div0_spinBox.valueChanged.connect( + partial(self.updateSpinBox, self.settingsTab.div0_spinBox, "div0")) + self.settingsTab.div1_spinBox.valueChanged.connect( + partial(self.updateSpinBox, self.settingsTab.div1_spinBox, "div1")) + self.settingsTab.squashStretchProfile_pushButton.clicked.connect( + self.setProfile) + + self.settingsTab.fkRefArrayAdd_pushButton.clicked.connect( + partial(self.addItem2listWidget, + self.settingsTab.fkRefArray_listWidget, + "fkrefarray")) + self.settingsTab.fkRefArrayRemove_pushButton.clicked.connect( + partial(self.removeSelectedFromListWidget, + self.settingsTab.fkRefArray_listWidget, + "fkrefarray")) + self.settingsTab.fkRefArray_copyRef_pushButton.clicked.connect( + partial(self.copyFromListWidget, + self.settingsTab.ikRefArray_listWidget, + self.settingsTab.fkRefArray_listWidget, + "fkrefarray")) self.settingsTab.fkRefArray_listWidget.installEventFilter(self) - self.settingsTab.ikRefArrayAdd_pushButton.clicked.connect(partial(self.addItem2listWidget, self.settingsTab.ikRefArray_listWidget, "ikrefarray")) - self.settingsTab.ikRefArrayRemove_pushButton.clicked.connect(partial(self.removeSelectedFromListWidget, self.settingsTab.ikRefArray_listWidget, "ikrefarray")) - self.settingsTab.ikRefArray_copyRef_pushButton.clicked.connect(partial(self.copyFromListWidget, self.settingsTab.upvRefArray_listWidget, self.settingsTab.ikRefArray_listWidget, "ikrefarray")) + self.settingsTab.ikRefArrayAdd_pushButton.clicked.connect( + partial(self.addItem2listWidget, + self.settingsTab.ikRefArray_listWidget, + "ikrefarray")) + self.settingsTab.ikRefArrayRemove_pushButton.clicked.connect( + partial(self.removeSelectedFromListWidget, + self.settingsTab.ikRefArray_listWidget, + "ikrefarray")) + self.settingsTab.ikRefArray_copyRef_pushButton.clicked.connect( + partial(self.copyFromListWidget, + self.settingsTab.upvRefArray_listWidget, + self.settingsTab.ikRefArray_listWidget, + "ikrefarray")) self.settingsTab.ikRefArray_listWidget.installEventFilter(self) - self.settingsTab.upvRefArrayAdd_pushButton.clicked.connect(partial(self.addItem2listWidget, self.settingsTab.upvRefArray_listWidget, "upvrefarray")) - self.settingsTab.upvRefArrayRemove_pushButton.clicked.connect(partial(self.removeSelectedFromListWidget, self.settingsTab.upvRefArray_listWidget, "upvrefarray")) - self.settingsTab.upvRefArray_copyRef_pushButton.clicked.connect(partial(self.copyFromListWidget, self.settingsTab.ikRefArray_listWidget, self.settingsTab.upvRefArray_listWidget, "upvrefarray")) + self.settingsTab.upvRefArrayAdd_pushButton.clicked.connect( + partial(self.addItem2listWidget, + self.settingsTab.upvRefArray_listWidget, + "upvrefarray")) + self.settingsTab.upvRefArrayRemove_pushButton.clicked.connect( + partial(self.removeSelectedFromListWidget, + self.settingsTab.upvRefArray_listWidget, + "upvrefarray")) + self.settingsTab.upvRefArray_copyRef_pushButton.clicked.connect( + partial(self.copyFromListWidget, + self.settingsTab.ikRefArray_listWidget, + self.settingsTab.upvRefArray_listWidget, + "upvrefarray")) self.settingsTab.upvRefArray_listWidget.installEventFilter(self) def eventFilter(self, sender, event): @@ -225,6 +245,5 @@ def eventFilter(self, sender, event): else: return QtWidgets.QDialog.eventFilter(self, sender, event) - def dockCloseEventTriggered(self): - gqt.deleteInstances(self, MayaQDockWidget) + pyqt.deleteInstances(self, MayaQDockWidget) From 950a8ab874983b8a6baa3ec098fec99e8f15a8ad Mon Sep 17 00:00:00 2001 From: miquelcampos Date: Tue, 21 Nov 2017 13:00:08 +0900 Subject: [PATCH 071/134] PEP8 #100 : Shifter: Component chain_01 --- .../shifter/component/chain_01/__init__.py | 272 ++++++++++-------- .../maya/shifter/component/chain_01/guide.py | 155 +++++----- 2 files changed, 232 insertions(+), 195 deletions(-) diff --git a/scripts/mgear/maya/shifter/component/chain_01/__init__.py b/scripts/mgear/maya/shifter/component/chain_01/__init__.py index db8a085..caab11e 100644 --- a/scripts/mgear/maya/shifter/component/chain_01/__init__.py +++ b/scripts/mgear/maya/shifter/component/chain_01/__init__.py @@ -1,60 +1,28 @@ -# MGEAR is under the terms of the MIT License +"""Component Chain 01 module""" -# Copyright (c) 2016 Jeremie Passerin, Miquel Campos - -# Permission is hereby granted, free of charge, to any person obtaining a copy -# of this software and associated documentation files (the "Software"), to deal -# in the Software without restriction, including without limitation the rights -# to use, copy, modify, merge, publish, distribute, sublicense, and/or sell -# copies of the Software, and to permit persons to whom the Software is -# furnished to do so, subject to the following conditions: - -# The above copyright notice and this permission notice shall be included in all -# copies or substantial portions of the Software. - -# THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR -# IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, -# FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE -# AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER -# LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, -# OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE -# SOFTWARE. - -# Author: Jeremie Passerin geerem@hotmail.com www.jeremiepasserin.com -# Author: Miquel Campos hello@miquel-campos.com www.miquel-campos.com -# Date: 2016 / 10 / 10 - -########################################################## -# GLOBAL -########################################################## -# Maya import pymel.core as pm -import pymel.core.datatypes as dt +from pymel.core import datatypes -# mgear -from mgear.maya.shifter.component import MainComponent +from mgear.maya.shifter import component -import mgear.maya.primitive as pri -import mgear.maya.transform as tra -import mgear.maya.applyop as aop -import mgear.maya.attribute as att -import mgear.maya.node as nod -import mgear.maya.vector as vec +from mgear.maya import node, applyop, vector +from mgear.maya import attribute, transform, primitive ########################################################## # COMPONENT ########################################################## -## The main component class. -class Component(MainComponent): + + +class Component(component.Main): + """Shifter component Class""" # ===================================================== # OBJECTS # ===================================================== - ## Add all the objects needed to create the component. - # @param self def addObjects(self): + """Add all the objects needed to create the component.""" - self.normal = self.guide.blades["blade"].z*-1 + self.normal = self.guide.blades["blade"].z * -1 self.binormal = self.guide.blades["blade"].x self.isFk = self.settings["mode"] != 1 @@ -63,34 +31,57 @@ def addObjects(self): self.WIP = self.options["mode"] - # FK controllers ------------------------------------ if self.isFk: self.fk_npo = [] self.fk_ctl = [] self.fk_ref = [] self.fk_off = [] - t = self.guide.tra["root"] - self.ik_cns = pri.addTransform(self.root, self.getName("ik_cns"), t) + t = self.guide.transform["root"] + self.ik_cns = primitive.addTransform( + self.root, self.getName("ik_cns"), t) parent = self.ik_cns tOld = False fk_ctl = None self.previusTag = self.parentCtlTag - for i, t in enumerate(tra.getChainTransform(self.guide.apos, self.normal, self.negate)): - dist = vec.getDistance(self.guide.apos[i], self.guide.apos[i+1]) + for i, t in enumerate(transform.getChainTransform(self.guide.apos, + self.normal, + self.negate)): + dist = vector.getDistance(self.guide.apos[i], + self.guide.apos[i + 1]) if self.settings["neutralpose"] or not tOld: tnpo = t else: - tnpo = tra.setMatrixPosition(tOld, tra.getPositionFromMatrix(t)) + tnpo = transform.setMatrixPosition( + tOld, + transform.getPositionFromMatrix(t)) if i: - tref = tra.setMatrixPosition(tOld, tra.getPositionFromMatrix(t)) - fk_ref = pri.addTransform(fk_ctl, self.getName("fk%s_ref"%i), tref) + tref = transform.setMatrixPosition( + tOld, + transform.getPositionFromMatrix(t)) + fk_ref = primitive.addTransform( + fk_ctl, + self.getName("fk%s_ref" % i), + tref) self.fk_ref.append(fk_ref) else: tref = t - fk_off = pri.addTransform(parent, self.getName("fk%s_off"%i), tref) - fk_npo = pri.addTransform(fk_off, self.getName("fk%s_npo"%i), tnpo) - fk_ctl = self.addCtl(fk_npo, "fk%s_ctl"%i, t, self.color_fk, "cube", w=dist, h=self.size*.1, d=self.size*.1, po=dt.Vector(dist*.5*self.n_factor,0,0), tp=self.previusTag) + fk_off = primitive.addTransform( + parent, self.getName("fk%s_off" % i), tref) + fk_npo = primitive.addTransform( + fk_off, self.getName("fk%s_npo" % i), tnpo) + fk_ctl = self.addCtl( + fk_npo, + "fk%s_ctl" % i, + t, + self.color_fk, + "cube", + w=dist, + h=self.size * .1, + d=self.size * .1, + po=datatypes.Vector(dist * .5 * self.n_factor, 0, 0), + tp=self.previusTag) + self.fk_off.append(fk_off) self.fk_npo.append(fk_npo) self.fk_ctl.append(fk_ctl) @@ -100,76 +91,120 @@ def addObjects(self): # IK controllers ------------------------------------ if self.isIk: - normal = vec.getTransposedVector(self.normal, [self.guide.apos[0], self.guide.apos[1]], [self.guide.apos[-2], self.guide.apos[-1]]) - t = tra.getTransformLookingAt(self.guide.apos[-2], self.guide.apos[-1], normal, "xy", self.negate) - t = tra.setMatrixPosition(t, self.guide.apos[-1]) - - self.ik_cns = pri.addTransform(self.root, self.getName("ik_cns"), t) - self.ikcns_ctl = self.addCtl(self.ik_cns, "ikcns_ctl", t, self.color_ik, "null", w=self.size, tp=self.parentCtlTag) - self.ik_ctl = self.addCtl(self.ikcns_ctl, "ik_ctl", t, self.color_ik, "cube", w=self.size*.3, h=self.size*.3, d=self.size*.3, tp=self.ikcns_ctl) - att.setKeyableAttributes(self.ik_ctl, self.t_params) + normal = vector.getTransposedVector( + self.normal, + [self.guide.apos[0], self.guide.apos[1]], + [self.guide.apos[-2], self.guide.apos[-1]]) + t = transform.getTransformLookingAt(self.guide.apos[-2], + self.guide.apos[-1], + normal, + "xy", + self.negate) + t = transform.setMatrixPosition(t, self.guide.apos[-1]) + + self.ik_cns = primitive.addTransform(self.root, + self.getName("ik_cns"), + t) + self.ikcns_ctl = self.addCtl(self.ik_cns, + "ikcns_ctl", + t, + self.color_ik, + "null", + w=self.size, + tp=self.parentCtlTag) + self.ik_ctl = self.addCtl(self.ikcns_ctl, + "ik_ctl", + t, + self.color_ik, + "cube", + w=self.size * .3, + h=self.size * .3, + d=self.size * .3, + tp=self.ikcns_ctl) + attribute.setKeyableAttributes(self.ik_ctl, self.t_params) v = self.guide.apos[-1] - self.guide.apos[0] v = v ^ self.normal v.normalize() v *= self.size v += self.guide.apos[1] - self.upv_cns = pri.addTransformFromPos(self.root, self.getName("upv_cns"), v) - - self.upv_ctl = self.addCtl(self.upv_cns, "upv_ctl", tra.getTransform(self.upv_cns), self.color_ik, "diamond", w=self.size*.1, tp=self.parentCtlTag) - att.setKeyableAttributes(self.upv_ctl, self.t_params) + self.upv_cns = primitive.addTransformFromPos( + self.root, self.getName("upv_cns"), v) + + self.upv_ctl = self.addCtl(self.upv_cns, + "upv_ctl", + transform.getTransform(self.upv_cns), + self.color_ik, + "diamond", + w=self.size * .1, + tp=self.parentCtlTag) + attribute.setKeyableAttributes(self.upv_ctl, self.t_params) # Chain - self.chain = pri.add2DChain(self.root, self.getName("chain"), self.guide.apos, self.normal, self.negate) + self.chain = primitive.add2DChain(self.root, + self.getName("chain"), + self.guide.apos, + self.normal, + self.negate) self.chain[0].attr("visibility").set(self.WIP) # Chain of deformers ------------------------------- self.loc = [] parent = self.root - for i, t in enumerate(tra.getChainTransform(self.guide.apos, self.normal, self.negate)): - loc = pri.addTransform(parent, self.getName("%s_loc"%i), t) + for i, t in enumerate(transform.getChainTransform(self.guide.apos, + self.normal, + self.negate)): + loc = primitive.addTransform(parent, self.getName("%s_loc" % i), t) self.loc.append(loc) self.jnt_pos.append([loc, i, None, False]) # ===================================================== - # PROPERTY + # ATTRIBUTES # ===================================================== - ## Add parameters to the anim and setup properties to control the component. - # @param self def addAttributes(self): + """Create the anim and setupr rig attributes for the component""" # Anim ------------------------------------------- if self.isFkIk: - self.blend_att = self.addAnimParam("blend", "Fk/Ik Blend", "double", self.settings["blend"], 0, 1) + self.blend_att = self.addAnimParam( + "blend", "Fk/Ik Blend", "double", self.settings["blend"], 0, 1) if self.isIk: - self.roll_att = self.addAnimParam("roll", "Roll", "double", 0, -180, 180) + self.roll_att = self.addAnimParam( + "roll", "Roll", "double", 0, -180, 180) # Ref if self.settings["ikrefarray"]: ref_names = self.settings["ikrefarray"].split(",") if len(ref_names) > 1: - self.ikref_att = self.addAnimEnumParam("ikref", "Ik Ref", 0, self.settings["ikrefarray"].split(",")) + self.ikref_att = self.addAnimEnumParam( + "ikref", + "Ik Ref", + 0, + self.settings["ikrefarray"].split(",")) # ===================================================== # OPERATORS # ===================================================== - ## Apply operators, constraints, expressions to the hierarchy.\n - # In order to keep the code clean and easier to debug, - # we shouldn't create any new object in this method. - # @param self def addOperators(self): + """Create operators and set the relations for the component rig + Apply operators, constraints, expressions to the hierarchy. + In order to keep the code clean and easier to debug, + we shouldn't create any new object in this method. + + """ # Visibilities ------------------------------------- if self.isFkIk: # fk - fkvis_node = nod.createReverseNode(self.blend_att) + fkvis_node = node.createReverseNode(self.blend_att) for fk_ctl in self.fk_ctl: for shp in fk_ctl.getShapes(): - pm.connectAttr(fkvis_node+".outputX", shp.attr("visibility")) + pm.connectAttr(fkvis_node + ".outputX", + shp.attr("visibility")) # ik for shp in self.upv_ctl.getShapes(): @@ -182,83 +217,94 @@ def addOperators(self): # FK Chain ----------------------------------------- if self.isFk: for off, ref in zip(self.fk_off[1:], self.fk_ref): - aop.gear_mulmatrix_op(ref.worldMatrix, off.parentInverseMatrix, off, "rt") + applyop.gear_mulmatrix_op( + ref.worldMatrix, off.parentInverseMatrix, off, "rt") # IK Chain ----------------------------------------- if self.isIk: - self.ikh = pri.addIkHandle(self.root, self.getName("ikh"), self.chain) + self.ikh = primitive.addIkHandle( + self.root, self.getName("ikh"), self.chain) self.ikh.attr("visibility").set(False) - #Constraint and up vector + # Constraint and up vector pm.pointConstraint(self.ik_ctl, self.ikh, maintainOffset=False) pm.poleVectorConstraint(self.upv_ctl, self.ikh) # TwistTest - if [round(elem, 4) for elem in tra.getTranslation(self.chain[1])] != [round(elem, 4) for elem in self.guide.apos[1]]: - add_nodeTwist = nod.createAddNode(180.0, self.roll_att) - pm.connectAttr(add_nodeTwist+".output", self.ikh.attr("twist")) + o_list = [round(elem, 4) for elem + in transform.getTranslation(self.chain[1])] \ + != [round(elem, 4) for elem in self.guide.apos[1]] + + if o_list: + add_nodeTwist = node.createAddNode(180.0, self.roll_att) + pm.connectAttr(add_nodeTwist + ".output", + self.ikh.attr("twist")) else: pm.connectAttr(self.roll_att, self.ikh.attr("twist")) # Chain of deformers ------------------------------- for i, loc in enumerate(self.loc): - if self.settings["mode"] == 0: # fk only + if self.settings["mode"] == 0: # fk only pm.parentConstraint(self.fk_ctl[i], loc, maintainOffset=False) - pm.connectAttr(self.fk_ctl[i]+".scale", loc+".scale") + pm.connectAttr(self.fk_ctl[i] + ".scale", loc + ".scale") - elif self.settings["mode"] == 1: # ik only - pm.parentConstraint( self.chain[i], loc, maintainOffset=False) + elif self.settings["mode"] == 1: # ik only + pm.parentConstraint(self.chain[i], loc, maintainOffset=False) - elif self.settings["mode"] == 2: # fk/ik + elif self.settings["mode"] == 2: # fk/ik - rev_node = nod.createReverseNode(self.blend_att) + rev_node = node.createReverseNode(self.blend_att) # orientation - cns = pm.parentConstraint(self.fk_ctl[i], self.chain[i], loc, maintainOffset=False) + cns = pm.parentConstraint( + self.fk_ctl[i], self.chain[i], loc, maintainOffset=False) cns.interpType.set(0) - weight_att = pm.parentConstraint(cns, query=True, weightAliasList=True) - pm.connectAttr(rev_node+".outputX", weight_att[0]) + weight_att = pm.parentConstraint( + cns, query=True, weightAliasList=True) + pm.connectAttr(rev_node + ".outputX", weight_att[0]) pm.connectAttr(self.blend_att, weight_att[1]) - #scaling + # scaling blend_node = pm.createNode("blendColors") - pm.connectAttr(self.chain[i].attr("scale"), blend_node+".color1") - pm.connectAttr(self.fk_ctl[i].attr("scale"), blend_node+".color2") - pm.connectAttr(self.blend_att, blend_node+".blender") - pm.connectAttr(blend_node+".output", loc+".scale") + pm.connectAttr(self.chain[i].attr("scale"), + blend_node + ".color1") + pm.connectAttr(self.fk_ctl[i].attr("scale"), + blend_node + ".color2") + pm.connectAttr(self.blend_att, blend_node + ".blender") + pm.connectAttr(blend_node + ".output", loc + ".scale") # ===================================================== # CONNECTOR # ===================================================== - ## Set the relation between object from guide to rig.\n - # @param self def setRelation(self): + """Set the relation beetween object from guide to rig""" self.relatives["root"] = self.loc[0] self.controlRelatives["root"] = self.fk_ctl[0] self.jointRelatives["root"] = 0 - for i in range(0, len(self.loc)-1): - self.relatives["%s_loc"%i] = self.loc[i+1] - self.controlRelatives["%s_loc"%i] = self.fk_ctl[i+1] - self.jointRelatives["%s_loc"%i] = i+1 - self.relatives["%s_loc"%(len(self.loc)-1)] = self.loc[-1] - self.controlRelatives["%s_loc"%(len(self.loc)-1)] = self.fk_ctl[-1] - self.jointRelatives["%s_loc"%(len(self.loc)-1)] = len(self.loc)-1 - + for i in range(0, len(self.loc) - 1): + self.relatives["%s_loc" % i] = self.loc[i + 1] + self.controlRelatives["%s_loc" % i] = self.fk_ctl[i + 1] + self.jointRelatives["%s_loc" % i] = i + 1 + self.relatives["%s_loc" % (len(self.loc) - 1)] = self.loc[-1] + self.controlRelatives["%s_loc" % (len(self.loc) - 1)] = self.fk_ctl[-1] + self.jointRelatives["%s_loc" % (len(self.loc) - 1)] = len(self.loc) - 1 # @param self def addConnection(self): + """Add more connection definition to the set""" + self.connections["standard"] = self.connect_standard self.connections["orientation"] = self.connect_orientation self.connections["parent"] = self.connect_parent def connect_orientation(self): + """orientation connection definition for the component""" self.connect_orientCns() - ## standard connection definition. def connect_standard(self): + """standard connection definition for the component""" self.connect_standardWithSimpleIkRef() - # @param self def connect_parent(self): self.connect_standardWithSimpleIkRef() diff --git a/scripts/mgear/maya/shifter/component/chain_01/guide.py b/scripts/mgear/maya/shifter/component/chain_01/guide.py index d54899e..faa07d1 100644 --- a/scripts/mgear/maya/shifter/component/chain_01/guide.py +++ b/scripts/mgear/maya/shifter/component/chain_01/guide.py @@ -1,51 +1,22 @@ -# MGEAR is under the terms of the MIT License - -# Copyright (c) 2016 Jeremie Passerin, Miquel Campos - -# Permission is hereby granted, free of charge, to any person obtaining a copy -# of this software and associated documentation files (the "Software"), to deal -# in the Software without restriction, including without limitation the rights -# to use, copy, modify, merge, publish, distribute, sublicense, and/or sell -# copies of the Software, and to permit persons to whom the Software is -# furnished to do so, subject to the following conditions: - -# The above copyright notice and this permission notice shall be included in all -# copies or substantial portions of the Software. - -# THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR -# IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, -# FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE -# AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER -# LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, -# OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE -# SOFTWARE. - -# Author: Jeremie Passerin geerem@hotmail.com www.jeremiepasserin.com -# Author: Miquel Campos hello@miquel-campos.com www.miquel-campos.com -# Date: 2016 / 10 / 10 - -########################################################## -# GLOBAL -########################################################## +"""Guide Chain 01 module""" from functools import partial -# mgear -from mgear.maya.shifter.component.guide import ComponentGuide -#Pyside -from mgear.maya.shifter.component.guide import componentMainSettings -import mgear.maya.pyqt as gqt +from mgear.maya.shifter.component import guide +from mgear.maya import pyqt +from mgear.vendor.Qt import QtWidgets, QtCore + from maya.app.general.mayaMixin import MayaQWidgetDockableMixin from maya.app.general.mayaMixin import MayaQDockWidget + import settingsUI as sui -QtGui, QtCore, QtWidgets, wrapInstance = gqt.qt_import() # guide info AUTHOR = "Jeremie Passerin, Miquel Campos" URL = "www.jeremiepasserin.com, www.miquel-campos.com" EMAIL = "geerem@hotmail.com, hello@miquel-campos.com" -VERSION = [1,0,1] +VERSION = [1, 0, 1] TYPE = "chain_01" NAME = "chain" DESCRIPTION = "Simple IK/FK chain, With IK space switch" @@ -53,7 +24,10 @@ ########################################################## # CLASS ########################################################## -class Guide(ComponentGuide): + + +class Guide(guide.ComponentGuide): + """Component Guide Class""" compType = TYPE compName = NAME @@ -64,19 +38,15 @@ class Guide(ComponentGuide): email = EMAIL version = VERSION - - # ===================================================== - ## - # @param self def postInit(self): + """Initialize the position for the guide""" + self.save_transform = ["root", "#_loc"] self.save_blade = ["blade"] self.addMinMax("#_loc", 1, -1) - # ===================================================== - ## Add more object to the object definition list. - # @param self def addObjects(self): + """Add the Guide Root, blade and locators""" self.root = self.addRoot() self.locs = self.addLocMulti("#_loc", self.root) @@ -86,26 +56,27 @@ def addObjects(self): centers.extend(self.locs) self.dispcrv = self.addDispCurve("crv", centers) - # ===================================================== - ## Add more parameter to the parameter definition list. - # @param self def addParameters(self): + """Add the configurations settings""" - self.pType = self.addParam("mode", "long", 0, 0) - self.pBlend = self.addParam("blend", "double", 1, 0, 1) - # self.pBladeOffset = self.addParam("bladeOffset", "float", 0, 0) - self.pNeutralPose = self.addParam("neutralpose", "bool", False) - self.pIkRefArray = self.addParam("ikrefarray", "string", "") - self.pUseIndex = self.addParam("useIndex", "bool", False) - self.pParentJointIndex = self.addParam("parentJointIndex", "long", -1, None, None) + self.pType = self.addParam("mode", "long", 0, 0) + self.pBlend = self.addParam("blend", "double", 1, 0, 1) + self.pNeutralPose = self.addParam("neutralpose", "bool", False) + self.pIkRefArray = self.addParam("ikrefarray", "string", "") + self.pUseIndex = self.addParam("useIndex", "bool", False) + self.pParentJointIndex = self.addParam( + "parentJointIndex", "long", -1, None, None) - #TODO: if have IK or IK/FK lock the axis position to force 2D Planar IK solver - # Create a a method to lock and unlock while changing options in the PYSIDE component Settings + # TODO: if have IK or IK/FK lock the axis position to + # force 2D Planar IK solver + # Create a a method to lock and unlock while changing + # options in the PYSIDE component Settings ########################################################## # Setting Page ########################################################## + class settingsTab(QtWidgets.QDialog, sui.Ui_Form): def __init__(self, parent=None): @@ -113,17 +84,16 @@ def __init__(self, parent=None): self.setupUi(self) -class componentSettings(MayaQWidgetDockableMixin, componentMainSettings): +class componentSettings(MayaQWidgetDockableMixin, guide.componentMainSettings): - def __init__(self, parent = None): + def __init__(self, parent=None): self.toolName = TYPE # Delete old instances of the componet settings window. - gqt.deleteInstances(self, MayaQDockWidget) + pyqt.deleteInstances(self, MayaQDockWidget) - super(self.__class__, self).__init__(parent = parent) + super(self.__class__, self).__init__(parent=parent) self.settingsTab = settingsTab() - self.setup_componentSettingWindow() self.create_componentControls() self.populate_componentControls() @@ -131,7 +101,7 @@ def __init__(self, parent = None): self.create_componentConnections() def setup_componentSettingWindow(self): - self.mayaMainWindow = gqt.maya_main_window() + self.mayaMainWindow = pyqt.maya_main_window() self.setObjectName(self.toolName) self.setWindowFlags(QtCore.Qt.Window) @@ -141,29 +111,35 @@ def setup_componentSettingWindow(self): def create_componentControls(self): return - def populate_componentControls(self): - """ - Populate the controls values from the custom attributes of the component. + """Populate Controls + + Populate the controls values from the custom attributes of the + component. """ - #populate tab + # populate tab self.tabs.insertTab(1, self.settingsTab, "Component Settings") - #populate component settings - self.settingsTab.ikfk_slider.setValue(int(self.root.attr("blend").get()*100)) - self.settingsTab.ikfk_spinBox.setValue(int(self.root.attr("blend").get()*100)) - self.settingsTab.mode_comboBox.setCurrentIndex(self.root.attr("mode").get()) + # populate component settings + self.settingsTab.ikfk_slider.setValue( + int(self.root.attr("blend").get() * 100)) + self.settingsTab.ikfk_spinBox.setValue( + int(self.root.attr("blend").get() * 100)) + self.settingsTab.mode_comboBox.setCurrentIndex( + self.root.attr("mode").get()) + if self.root.attr("neutralpose").get(): - self.settingsTab.neutralPose_checkBox.setCheckState(QtCore.Qt.Checked) + self.settingsTab.neutralPose_checkBox.setCheckState( + QtCore.Qt.Checked) else: - self.settingsTab.neutralPose_checkBox.setCheckState(QtCore.Qt.Unchecked) + self.settingsTab.neutralPose_checkBox.setCheckState( + QtCore.Qt.Unchecked) ikRefArrayItems = self.root.attr("ikrefarray").get().split(",") for item in ikRefArrayItems: self.settingsTab.ikRefArray_listWidget.addItem(item) - def create_componentLayout(self): self.settings_layout = QtWidgets.QVBoxLayout() @@ -174,13 +150,29 @@ def create_componentLayout(self): def create_componentConnections(self): - self.settingsTab.ikfk_slider.valueChanged.connect(partial(self.updateSlider, self.settingsTab.ikfk_slider, "blend")) - self.settingsTab.ikfk_spinBox.valueChanged.connect(partial(self.updateSlider, self.settingsTab.ikfk_spinBox, "blend")) - self.settingsTab.mode_comboBox.currentIndexChanged.connect(partial(self.updateComboBox, self.settingsTab.mode_comboBox, "mode")) - self.settingsTab.neutralPose_checkBox.stateChanged.connect(partial(self.updateCheck, self.settingsTab.neutralPose_checkBox, "neutralpose")) - - self.settingsTab.ikRefArrayAdd_pushButton.clicked.connect(partial(self.addItem2listWidget, self.settingsTab.ikRefArray_listWidget, "ikrefarray")) - self.settingsTab.ikRefArrayRemove_pushButton.clicked.connect(partial(self.removeSelectedFromListWidget, self.settingsTab.ikRefArray_listWidget, "ikrefarray")) + self.settingsTab.ikfk_slider.valueChanged.connect( + partial(self.updateSlider, self.settingsTab.ikfk_slider, "blend")) + self.settingsTab.ikfk_spinBox.valueChanged.connect( + partial(self.updateSlider, self.settingsTab.ikfk_spinBox, "blend")) + + self.settingsTab.mode_comboBox.currentIndexChanged.connect( + partial(self.updateComboBox, + self.settingsTab.mode_comboBox, + "mode")) + + self.settingsTab.neutralPose_checkBox.stateChanged.connect( + partial(self.updateCheck, + self.settingsTab.neutralPose_checkBox, + "neutralpose")) + + self.settingsTab.ikRefArrayAdd_pushButton.clicked.connect( + partial(self.addItem2listWidget, + self.settingsTab.ikRefArray_listWidget, + "ikrefarray")) + self.settingsTab.ikRefArrayRemove_pushButton.clicked.connect( + partial(self.removeSelectedFromListWidget, + self.settingsTab.ikRefArray_listWidget, + "ikrefarray")) self.settingsTab.ikRefArray_listWidget.installEventFilter(self) def eventFilter(self, sender, event): @@ -191,6 +183,5 @@ def eventFilter(self, sender, event): else: return QtWidgets.QDialog.eventFilter(self, sender, event) - def dockCloseEventTriggered(self): - gqt.deleteInstances(self, MayaQDockWidget) + pyqt.deleteInstances(self, MayaQDockWidget) From 8890f070649240992aaac977ee1dd19a64b7b8fb Mon Sep 17 00:00:00 2001 From: miquelcampos Date: Tue, 21 Nov 2017 13:34:58 +0900 Subject: [PATCH 072/134] PEP8 #100 : Shifter: Component chain_spring_01 --- .../component/chain_spring_01/__init__.py | 196 +++++++++--------- .../component/chain_spring_01/guide.py | 84 +++----- 2 files changed, 122 insertions(+), 158 deletions(-) diff --git a/scripts/mgear/maya/shifter/component/chain_spring_01/__init__.py b/scripts/mgear/maya/shifter/component/chain_spring_01/__init__.py index 3d6137c..556dbb5 100644 --- a/scripts/mgear/maya/shifter/component/chain_spring_01/__init__.py +++ b/scripts/mgear/maya/shifter/component/chain_spring_01/__init__.py @@ -1,65 +1,30 @@ -# MGEAR is under the terms of the MIT License +"""Component Chain Spring 01 module""" -# Copyright (c) 2016 Jeremie Passerin, Miquel Campos - -# Permission is hereby granted, free of charge, to any person obtaining a copy -# of this software and associated documentation files (the "Software"), to deal -# in the Software without restriction, including without limitation the rights -# to use, copy, modify, merge, publish, distribute, sublicense, and/or sell -# copies of the Software, and to permit persons to whom the Software is -# furnished to do so, subject to the following conditions: - -# The above copyright notice and this permission notice shall be included in all -# copies or substantial portions of the Software. - -# THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR -# IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, -# FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE -# AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER -# LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, -# OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE -# SOFTWARE. - -# Author: Jeremie Passerin geerem@hotmail.com www.jeremiepasserin.com -# Author: Miquel Campos hello@miquel-campos.com www.miquel-campos.com -# Date: 2016 / 10 / 10 - - -########################################################## -# GLOBAL -########################################################## -# Maya import pymel.core as pm -import pymel.core.datatypes as dt +from pymel.core import datatypes +from mgear.maya.shifter import component -# mgear -from mgear.maya.shifter.component import MainComponent +from mgear.maya import applyop, vector +from mgear.maya import attribute, transform, primitive -import mgear.maya.primitive as pri -import mgear.maya.transform as tra -import mgear.maya.attribute as att -import mgear.maya.vector as vec -import mgear.maya.applyop as aop - -########################################################## +############################################# # COMPONENT -########################################################## -## The main component class. -class Component(MainComponent): +############################################# + + +class Component(component.Main): + """Shifter component Class""" # ===================================================== # OBJECTS # ===================================================== - ## Add all the objects needed to create the component. - # @param self def addObjects(self): # blades computation self.normal = self.guide.blades["blade"].z self.binormal = self.guide.blades["blade"].x - self.fk_npo = [] self.fk_ctl = [] self.spring_cns = [] @@ -69,21 +34,43 @@ def addObjects(self): self.spring_npo = [] self.spring_target = [] parent = self.root - self.previousTag = self.parentCtlTag - for i, t in enumerate(tra.getChainTransform(self.guide.apos, self.normal, self.negate)): - dist = vec.getDistance(self.guide.apos[i], self.guide.apos[i+1]) - - fk_npo = pri.addTransform(parent, self.getName("fk%s_npo"%i), t) - spring_aim = pri.addTransform(fk_npo, self.getName("spring%s_aim"%i), t) - spring_cns = pri.addTransform(fk_npo, self.getName("spring%s_cns"%i), t) - fk_ctl = self.addCtl(spring_cns, "fk%s_ctl"%i, t, self.color_fk, "cube", w=dist, h=self.size*.1, d=self.size*.1, po=dt.Vector(dist*.5*self.n_factor,0,0), tp=self.previousTag, lp=False) - self.previousTag = fk_ctl + self.previousTag = self.parentCtlTag + for i, t in enumerate(transform.getChainTransform(self.guide.apos, + self.normal, + self.negate)): + dist = vector.getDistance(self.guide.apos[i], + self.guide.apos[i + 1]) + + fk_npo = primitive.addTransform(parent, + self.getName("fk%s_npo" % i), t) + + spring_aim = primitive.addTransform( + fk_npo, + self.getName("spring%s_aim" % i), t) + + spring_cns = primitive.addTransform( + fk_npo, + self.getName("spring%s_cns" % i), t) + + fk_ctl = self.addCtl( + spring_cns, + "fk%s_ctl" % i, + t, + self.color_fk, + "cube", w=dist, + h=self.size * .1, + d=self.size * .1, + po=datatypes.Vector(dist * .5 * self.n_factor, 0, 0), + tp=self.previousTag, + lp=False) + self.previousTag = fk_ctl - t = tra.getTransformFromPos(self.guide.apos[i+1]) - spring_npo = pri.addTransform(parent, self.getName("spring%s_npo"%i), t) - spring_target = pri.addTransform(spring_npo, self.getName("spring%s"%i), t) - + t = transform.getTransformFromPos(self.guide.apos[i + 1]) + spring_npo = primitive.addTransform( + parent, self.getName("spring%s_npo" % i), t) + spring_target = primitive.addTransform( + spring_npo, self.getName("spring%s" % i), t) parent = fk_ctl @@ -94,95 +81,104 @@ def addObjects(self): self.fk_npo.append(fk_npo) self.fk_ctl.append(fk_ctl) - att.setKeyableAttributes(self.fk_ctl, self.tr_params) + attribute.setKeyableAttributes(self.fk_ctl, self.tr_params) self.spring_target.append(spring_target) - # Chain of deformers ------------------------------- self.loc = [] parent = self.root - for i, t in enumerate(tra.getChainTransform(self.guide.apos, self.normal, self.negate)): - loc = pri.addTransform(parent, self.getName("%s_loc"%i), t) + for i, t in enumerate(transform.getChainTransform(self.guide.apos, + self.normal, + self.negate)): + loc = primitive.addTransform(parent, self.getName("%s_loc" % i), t) self.loc.append(loc) self.jnt_pos.append([loc, i]) parent = loc # ===================================================== - # PROPERTY + # ATTRIBUTES # ===================================================== - ## Add parameters to the anim and setup properties to control the component. - # @param self def addAttributes(self): + """Create the anim and setupr rig attributes for the component""" # Anim ------------------------------------------- self.aDamping = [] self.aStiffness = [] - self.aSpring_intensity = self.addAnimParam("spring_intensity", "Spring chain intensity", "double", 0, 0, 1) + self.aSpring_intensity = self.addAnimParam("spring_intensity", + "Spring chain intensity", + "double", + 0, + 0, + 1) for i, tar in enumerate(self.spring_target): - aDamping = self.addAnimParam( "damping_%s"%i, "damping_%s"%i, "double", 0.5, 0, 1) + aDamping = self.addAnimParam("damping_%s" % i, + "damping_%s" % i, + "double", + 0.5, + 0, + 1) self.aDamping.append(aDamping) for i, tar in enumerate(self.spring_target): - aStiffness = self.addAnimParam( "stiffness_%s"%i, "stiffness_%s"%i, "double", 0.5, 0, 1) - self.aStiffness.append(aStiffness) + aStiffness = self.addAnimParam( + "stiffness_%s" % i, "stiffness_%s" % i, "double", 0.5, 0, 1) + self.aStiffness.append(aStiffness) # ===================================================== # OPERATORS # ===================================================== - ## Apply operators, constraints, expressions to the hierarchy.\n - # In order to keep the code clean and easier to debug, - # we shouldn't create any new object in this method. - # @param self def addOperators(self): + """Create operators and set the relations for the component rig + + Apply operators, constraints, expressions to the hierarchy. + In order to keep the code clean and easier to debug, + we shouldn't create any new object in this method. + + """ # Chain of deformers ------------------------------- for i, loc in enumerate(self.loc): pm.parentConstraint(self.fk_ctl[i], loc, maintainOffset=False) # spring operators - #settings aim contraints + # settings aim contraints for i, tranCns in enumerate(self.spring_aim): if self.negate: aimAxis = "-xy" else: aimAxis = "xy" - aop.aimCns(tranCns, self.spring_target[i], aimAxis, 2, [0,1,0], self.fk_npo[i], False) - aop.oriCns(tranCns, self.spring_cns[i]) - - springOP = aop.gear_spring_op(self.spring_target[i]) - - pm.connectAttr(self.aSpring_intensity, springOP+".intensity") - pm.connectAttr(self.aDamping[i], springOP+".damping") - pm.connectAttr(self.aStiffness[i], springOP+".stiffness") + applyop.aimCns(tranCns, + self.spring_target[i], + aimAxis, + 2, + [0, 1, 0], + self.fk_npo[i], + False) + applyop.oriCns(tranCns, self.spring_cns[i]) + springOP = applyop.gear_spring_op(self.spring_target[i]) + pm.connectAttr(self.aSpring_intensity, springOP + ".intensity") + pm.connectAttr(self.aDamping[i], springOP + ".damping") + pm.connectAttr(self.aStiffness[i], springOP + ".stiffness") # ===================================================== # CONNECTOR # ===================================================== - ## Set the relation between object from guide to rig.\n - # @param self def setRelation(self): - - # self.relatives["root"] = self.loc[0] - # self.jointRelatives["root"] = 0 - # for i in range(0, len(self.loc)-1): - # self.relatives["%s_loc"%i] = self.loc[i+1] - # self.jointRelatives["%s_loc"%i] = i+1 - # self.relatives["%s_loc"%(len(self.loc)-1)] = self.loc[-1] - # self.jointRelatives["%s_loc"%(len(self.loc)-1)] = len(self.loc)-1 + """Set the relation beetween object from guide to rig""" self.relatives["root"] = self.loc[0] self.controlRelatives["root"] = self.fk_ctl[0] self.jointRelatives["root"] = 0 - for i in range(0, len(self.loc)-1): - self.relatives["%s_loc"%i] = self.loc[i+1] - self.controlRelatives["%s_loc"%i] = self.fk_ctl[i+1] - self.jointRelatives["%s_loc"%i] = i+1 - self.relatives["%s_loc"%(len(self.loc)-1)] = self.loc[-1] - self.controlRelatives["%s_loc"%(len(self.loc)-1)] = self.fk_ctl[-1] - self.jointRelatives["%s_loc"%(len(self.loc)-1)] = len(self.loc)-1 + for i in range(0, len(self.loc) - 1): + self.relatives["%s_loc" % i] = self.loc[i + 1] + self.controlRelatives["%s_loc" % i] = self.fk_ctl[i + 1] + self.jointRelatives["%s_loc" % i] = i + 1 + self.relatives["%s_loc" % (len(self.loc) - 1)] = self.loc[-1] + self.controlRelatives["%s_loc" % (len(self.loc) - 1)] = self.fk_ctl[-1] + self.jointRelatives["%s_loc" % (len(self.loc) - 1)] = len(self.loc) - 1 diff --git a/scripts/mgear/maya/shifter/component/chain_spring_01/guide.py b/scripts/mgear/maya/shifter/component/chain_spring_01/guide.py index c02b8a5..9ff4051 100644 --- a/scripts/mgear/maya/shifter/component/chain_spring_01/guide.py +++ b/scripts/mgear/maya/shifter/component/chain_spring_01/guide.py @@ -1,48 +1,17 @@ -# MGEAR is under the terms of the MIT License +"""Guide Chain spring 01 module""" -# Copyright (c) 2016 Jeremie Passerin, Miquel Campos +from mgear.maya.shifter.component import guide +from mgear.maya import pyqt +from mgear.vendor.Qt import QtWidgets, QtCore -# Permission is hereby granted, free of charge, to any person obtaining a copy -# of this software and associated documentation files (the "Software"), to deal -# in the Software without restriction, including without limitation the rights -# to use, copy, modify, merge, publish, distribute, sublicense, and/or sell -# copies of the Software, and to permit persons to whom the Software is -# furnished to do so, subject to the following conditions: - -# The above copyright notice and this permission notice shall be included in all -# copies or substantial portions of the Software. - -# THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR -# IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, -# FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE -# AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER -# LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, -# OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE -# SOFTWARE. - -# Author: Jeremie Passerin geerem@hotmail.com www.jeremiepasserin.com -# Author: Miquel Campos hello@miquel-campos.com www.miquel-campos.com -# Date: 2016 / 10 / 10 - -########################################################## -# GLOBAL -########################################################## -# mgear -from mgear.maya.shifter.component.guide import ComponentGuide - -#Pyside -from mgear.maya.shifter.component.guide import componentMainSettings -import mgear.maya.pyqt as gqt from maya.app.general.mayaMixin import MayaQWidgetDockableMixin from maya.app.general.mayaMixin import MayaQDockWidget -QtGui, QtCore, QtWidgets, wrapInstance = gqt.qt_import() - # guide info AUTHOR = "Jeremie Passerin, Miquel Campos" URL = "www.jeremiepasserin.com, www.miquel-campos.com" EMAIL = "geerem@hotmail.com, hello@miquel-campos.com" -VERSION = [1,0,1] +VERSION = [1, 0, 1] TYPE = "chain_spring_01" NAME = "chainSpring" DESCRIPTION = "FK chain with spring" @@ -50,7 +19,10 @@ ########################################################## # CLASS ########################################################## -class Guide(ComponentGuide): + + +class Guide(guide.ComponentGuide): + """Component Guide Class""" compType = TYPE compName = NAME @@ -61,19 +33,14 @@ class Guide(ComponentGuide): email = EMAIL version = VERSION - - # ===================================================== - ## - # @param self def postInit(self): + """Initialize the position for the guide""" self.save_transform = ["root", "#_loc"] self.save_blade = ["blade"] self.addMinMax("#_loc", 1, -1) - # ===================================================== - ## Add more object to the object definition list. - # @param self def addObjects(self): + """Add the Guide Root, blade and locators""" self.root = self.addRoot() self.locs = self.addLocMulti("#_loc", self.root) @@ -83,12 +50,11 @@ def addObjects(self): centers.extend(self.locs) self.dispcrv = self.addDispCurve("crv", centers) - # ===================================================== - ## Add more parameter to the parameter definition list. - # @param self def addParameters(self): - self.pUseIndex = self.addParam("useIndex", "bool", False) - self.pParentJointIndex = self.addParam("parentJointIndex", "long", -1, None, None) + """Add the configurations settings""" + self.pUseIndex = self.addParam("useIndex", "bool", False) + self.pParentJointIndex = self.addParam( + "parentJointIndex", "long", -1, None, None) return @@ -97,14 +63,15 @@ def addParameters(self): ########################################################## -class componentSettings(MayaQWidgetDockableMixin, componentMainSettings): +class componentSettings(MayaQWidgetDockableMixin, guide.componentMainSettings): + """Create the component setting window""" - def __init__(self, parent = None): + def __init__(self, parent=None): self.toolName = TYPE # Delete old instances of the componet settings window. - gqt.deleteInstances(self, MayaQDockWidget) + pyqt.deleteInstances(self, MayaQDockWidget) - super(self.__class__, self).__init__(parent = parent) + super(self.__class__, self).__init__(parent=parent) self.setup_componentSettingWindow() self.create_componentControls() @@ -113,7 +80,7 @@ def __init__(self, parent = None): self.create_componentConnections() def setup_componentSettingWindow(self): - self.mayaMainWindow = gqt.maya_main_window() + self.mayaMainWindow = pyqt.maya_main_window() self.setObjectName(self.toolName) self.setWindowFlags(QtCore.Qt.Window) @@ -123,10 +90,11 @@ def setup_componentSettingWindow(self): def create_componentControls(self): return - def populate_componentControls(self): - """ - Populate the controls values from the custom attributes of the component. + """Populate Controls + + Populate the controls values from the custom attributes of the + component. """ return @@ -143,4 +111,4 @@ def create_componentConnections(self): return def dockCloseEventTriggered(self): - gqt.deleteInstances(self, MayaQDockWidget) + pyqt.deleteInstances(self, MayaQDockWidget) From b2a9550875ea170553713342fdbeaac20d1c5255 Mon Sep 17 00:00:00 2001 From: miquelcampos Date: Tue, 21 Nov 2017 18:07:40 +0900 Subject: [PATCH 073/134] Fix bug introduced while refactoring --- scripts/mgear/maya/shifter/component/arm_ms_2jnt_01/__init__.py | 2 +- scripts/mgear/maya/shifter/component/chain_01/__init__.py | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/scripts/mgear/maya/shifter/component/arm_ms_2jnt_01/__init__.py b/scripts/mgear/maya/shifter/component/arm_ms_2jnt_01/__init__.py index 4af2976..f1d40f8 100644 --- a/scripts/mgear/maya/shifter/component/arm_ms_2jnt_01/__init__.py +++ b/scripts/mgear/maya/shifter/component/arm_ms_2jnt_01/__init__.py @@ -564,7 +564,7 @@ def addAttributes(self): 0, 5) self.jntctl_vis_att = self.addAnimParam( - "jntct_vis", "Joint Ctl Vis", "bool", 0, 1, 1) + "jntct_vis", "Joint Ctl Vis", "bool", 0) # Ref if self.settings["fkrefarray"]: ref_names = self.settings["fkrefarray"].split(",") diff --git a/scripts/mgear/maya/shifter/component/chain_01/__init__.py b/scripts/mgear/maya/shifter/component/chain_01/__init__.py index caab11e..4e4185e 100644 --- a/scripts/mgear/maya/shifter/component/chain_01/__init__.py +++ b/scripts/mgear/maya/shifter/component/chain_01/__init__.py @@ -37,7 +37,7 @@ def addObjects(self): self.fk_ctl = [] self.fk_ref = [] self.fk_off = [] - t = self.guide.transform["root"] + t = self.guide.tra["root"] self.ik_cns = primitive.addTransform( self.root, self.getName("ik_cns"), t) parent = self.ik_cns From 2b58c2c11a0a46e0e097122e74d1eee6862b265b Mon Sep 17 00:00:00 2001 From: miquelcampos Date: Tue, 21 Nov 2017 18:30:34 +0900 Subject: [PATCH 074/134] PEP8 #100 : Shifter: Component control_01. NOTE: Control_02 is RnD Wip component and the new functionality will be implemented in control_01, so not refactor needed since will be deleted soon --- .../shifter/component/control_01/__init__.py | 104 ++++----- .../shifter/component/control_01/guide.py | 209 ++++++++++-------- 2 files changed, 158 insertions(+), 155 deletions(-) diff --git a/scripts/mgear/maya/shifter/component/control_01/__init__.py b/scripts/mgear/maya/shifter/component/control_01/__init__.py index 13bb3e4..b0810fc 100644 --- a/scripts/mgear/maya/shifter/component/control_01/__init__.py +++ b/scripts/mgear/maya/shifter/component/control_01/__init__.py @@ -1,85 +1,66 @@ -# MGEAR is under the terms of the MIT License +"""Component Control 01 module""" -# Copyright (c) 2016 Jeremie Passerin, Miquel Campos +from mgear.maya.shifter import component -# Permission is hereby granted, free of charge, to any person obtaining a copy -# of this software and associated documentation files (the "Software"), to deal -# in the Software without restriction, including without limitation the rights -# to use, copy, modify, merge, publish, distribute, sublicense, and/or sell -# copies of the Software, and to permit persons to whom the Software is -# furnished to do so, subject to the following conditions: +from mgear.maya import attribute, transform, primitive -# The above copyright notice and this permission notice shall be included in all -# copies or substantial portions of the Software. - -# THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR -# IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, -# FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE -# AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER -# LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, -# OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE -# SOFTWARE. - -# Author: Jeremie Passerin geerem@hotmail.com www.jeremiepasserin.com -# Author: Miquel Campos hello@miquel-campos.com www.miquel-campos.com -# Date: 2016 / 10 / 10 ############################################# -# GLOBAL +# COMPONENT ############################################# -# mgear -from mgear.maya.shifter.component import MainComponent - -import mgear.maya.primitive as pri -import mgear.maya.transform as tra -import mgear.maya.attribute as att -import mgear.maya.vector as vec -############################################# -# COMPONENT -############################################# -class Component(MainComponent): +class Component(component.Main): + """Shifter component Class""" + # ===================================================== + # OBJECTS + # ===================================================== def addObjects(self): - # self.length0 = vec.getDistance(self.guide.apos[0], self.guide.apos[1]) + """Add all the objects needed to create the component.""" if self.settings["neutralRotation"]: - t = tra.getTransformFromPos(self.guide.pos["root"]) + t = transform.getTransformFromPos(self.guide.pos["root"]) else: t = self.guide.tra["root"] - t = tra.setMatrixScale(t) - self.ik_cns = pri.addTransform(self.root, self.getName("ik_cns"), t) - - self.ctl = self.addCtl( self.ik_cns, - "ctl", - t, - self.color_ik, - self.settings["icon"], - w=self.settings["ctlSize"]*self.size, - h=self.settings["ctlSize"]*self.size, - d=self.settings["ctlSize"]*self.size, - tp=self.parentCtlTag) - - #we need to set the rotation order before lock any rotation axis + t = transform.setMatrixScale(t) + self.ik_cns = primitive.addTransform( + self.root, self.getName("ik_cns"), t) + + self.ctl = self.addCtl(self.ik_cns, + "ctl", + t, + self.color_ik, + self.settings["icon"], + w=self.settings["ctlSize"] * self.size, + h=self.settings["ctlSize"] * self.size, + d=self.settings["ctlSize"] * self.size, + tp=self.parentCtlTag) + + # we need to set the rotation order before lock any rotation axis if self.settings["k_ro"]: rotOderList = ["XYZ", "YZX", "ZXY", "XZY", "YXZ", "ZYX"] - att.setRotOrder(self.ctl, rotOderList[self.settings["default_rotorder"]]) + attribute.setRotOrder( + self.ctl, rotOderList[self.settings["default_rotorder"]]) - params = [ s for s in ["tx", "ty", "tz", "ro", "rx", "ry", "rz", "sx", "sy", "sz"] if self.settings["k_"+s] ] - att.setKeyableAttributes(self.ctl, params) + params = [s for s in + ["tx", "ty", "tz", "ro", "rx", "ry", "rz", "sx", "sy", "sz"] + if self.settings["k_" + s]] + attribute.setKeyableAttributes(self.ctl, params) if self.settings["joint"]: self.jnt_pos.append([self.ctl, 0, None, self.settings["uniScale"]]) - def addAttributes(self): # Ref if self.settings["ikrefarray"]: ref_names = self.settings["ikrefarray"].split(",") if len(ref_names) > 1: - self.ikref_att = self.addAnimEnumParam("ikref", "Ik Ref", 0, self.settings["ikrefarray"].split(",")) - + self.ikref_att = self.addAnimEnumParam( + "ikref", + "Ik Ref", + 0, + self.settings["ikrefarray"].split(",")) def addOperators(self): return @@ -87,25 +68,22 @@ def addOperators(self): # ===================================================== # CONNECTOR # ===================================================== - ## Set the relation beetween object from guide to rig.\n - # @param self def setRelation(self): + """Set the relation beetween object from guide to rig""" self.relatives["root"] = self.ctl self.controlRelatives["root"] = self.ctl if self.settings["joint"]: self.jointRelatives["root"] = 0 - - # @param self def addConnection(self): + """Add more connection definition to the set""" self.connections["standard"] = self.connect_standard self.connections["orientation"] = self.connect_orientation - - ## standard connection definition. - # @param self def connect_standard(self): + """standard connection definition for the component""" self.connect_standardWithSimpleIkRef() def connect_orientation(self): + """Orient connection definition for the component""" self.connect_orientCns() diff --git a/scripts/mgear/maya/shifter/component/control_01/guide.py b/scripts/mgear/maya/shifter/component/control_01/guide.py index 4a94155..9330d97 100644 --- a/scripts/mgear/maya/shifter/component/control_01/guide.py +++ b/scripts/mgear/maya/shifter/component/control_01/guide.py @@ -1,60 +1,36 @@ -# MGEAR is under the terms of the MIT License - -# Copyright (c) 2016 Jeremie Passerin, Miquel Campos - -# Permission is hereby granted, free of charge, to any person obtaining a copy -# of this software and associated documentation files (the "Software"), to deal -# in the Software without restriction, including without limitation the rights -# to use, copy, modify, merge, publish, distribute, sublicense, and/or sell -# copies of the Software, and to permit persons to whom the Software is -# furnished to do so, subject to the following conditions: - -# The above copyright notice and this permission notice shall be included in all -# copies or substantial portions of the Software. - -# THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR -# IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, -# FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE -# AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER -# LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, -# OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE -# SOFTWARE. - -# Author: Jeremie Passerin geerem@hotmail.com www.jeremiepasserin.com -# Author: Miquel Campos hello@miquel-campos.com www.miquel-campos.com -# Date: 2016 / 10 / 10 - -############################################# -# GLOBAL -############################################# -from functools import partial +"""Guide Control 01 module""" +from functools import partial import pymel.core as pm -# mgear -import mgear.maya.transform as tra -from mgear.maya.shifter.component.guide import ComponentGuide -#Pyside -from mgear.maya.shifter.component.guide import componentMainSettings -import mgear.maya.pyqt as gqt +from mgear.maya.shifter.component import guide +from mgear.maya import transform, pyqt +from mgear.vendor.Qt import QtWidgets, QtCore + from maya.app.general.mayaMixin import MayaQWidgetDockableMixin from maya.app.general.mayaMixin import MayaQDockWidget + import settingsUI as sui -QtGui, QtCore, QtWidgets, wrapInstance = gqt.qt_import() # guide info AUTHOR = "Jeremie Passerin, Miquel Campos" URL = "www.jeremiepasserin.com, www.miquel-campos.com" EMAIL = "geerem@hotmail.com, hello@miquel-campos.com" -VERSION = [1,1,0] +VERSION = [1, 1, 0] TYPE = "control_01" NAME = "control" -DESCRIPTION = "Simple controler with space switch and Rot order selection. \nThis component can use the root rotation to place the control orientation" +DESCRIPTION = "Simple controler with space switch and Rot order selection. \n"\ + "This component can use the root rotation to place the "\ + "control orientation" + ########################################################## # CLASS ########################################################## -class Guide(ComponentGuide): + + +class Guide(guide.ComponentGuide): + """Component Guide Class""" compType = TYPE compName = NAME @@ -72,39 +48,38 @@ def postInit(self): self.save_transform = ["root", "sizeRef"] # ===================================================== - ## Add more object to the object definition list. + # Add more object to the object definition list. # @param self def addObjects(self): self.root = self.addRoot() - vTemp = tra.getOffsetPosition( self.root, [0,0,1]) + vTemp = transform.getOffsetPosition(self.root, [0, 0, 1]) self.sizeRef = self.addLoc("sizeRef", self.root, vTemp) # self.sizeRef.visibility.set(False) pm.delete(self.sizeRef.getShapes()) - - # ===================================================== - ## Add more parameter to the parameter definition list. + # Add more parameter to the parameter definition list. # @param self def addParameters(self): - self.pIcon = self.addParam("icon", "string", "cube") - self.pIkRefArray = self.addParam("ikrefarray", "string", "") + self.pIkRefArray = self.addParam("ikrefarray", "string", "") self.pJoint = self.addParam("joint", "bool", False) self.pJoint = self.addParam("uniScale", "bool", True) for s in ["tx", "ty", "tz", "ro", "rx", "ry", "rz", "sx", "sy", "sz"]: - self.addParam("k_"+s, "bool", True) + self.addParam("k_" + s, "bool", True) - self.pDefault_RotOrder = self.addParam("default_rotorder", "long", 0, 0, 5) + self.pDefault_RotOrder = self.addParam( + "default_rotorder", "long", 0, 0, 5) self.pNeutralRotation = self.addParam("neutralRotation", "bool", True) - self.pCtlSize = self.addParam("ctlSize", "double", 1 , None, None) + self.pCtlSize = self.addParam("ctlSize", "double", 1, None, None) self.pUseIndex = self.addParam("useIndex", "bool", False) - self.pParentJointIndex = self.addParam("parentJointIndex", "long", -1, None, None) + self.pParentJointIndex = self.addParam( + "parentJointIndex", "long", -1, None, None) return @@ -112,26 +87,40 @@ def addParameters(self): # Setting Page ########################################################## + class settingsTab(QtWidgets.QDialog, sui.Ui_Form): + """The Component settings UI""" def __init__(self, parent=None): super(settingsTab, self).__init__(parent) self.setupUi(self) -class componentSettings(MayaQWidgetDockableMixin, componentMainSettings): +class componentSettings(MayaQWidgetDockableMixin, guide.componentMainSettings): + """Create the component setting window""" - def __init__(self, parent = None): + def __init__(self, parent=None): self.toolName = TYPE # Delete old instances of the componet settings window. - gqt.deleteInstances(self, MayaQDockWidget) - self.iconsList = ['arrow', 'circle', 'compas', 'cross', 'crossarrow', 'cube', 'cubewithpeak', 'cylinder', 'diamond', 'flower', 'null', 'pyramid', 'sphere', 'square'] - - - super(self.__class__, self).__init__(parent = parent) + pyqt.deleteInstances(self, MayaQDockWidget) + self.iconsList = ['arrow', + 'circle', + 'compas', + 'cross', + 'crossarrow', + 'cube', + 'cubewithpeak', + 'cylinder', + 'diamond', + 'flower', + 'null', + 'pyramid', + 'sphere', + 'square'] + + super(self.__class__, self).__init__(parent=parent) self.settingsTab = settingsTab() - self.setup_componentSettingWindow() self.create_componentControls() self.populate_componentControls() @@ -139,7 +128,7 @@ def __init__(self, parent = None): self.create_componentConnections() def setup_componentSettingWindow(self): - self.mayaMainWindow = gqt.maya_main_window() + self.mayaMainWindow = pyqt.maya_main_window() self.setObjectName(self.toolName) self.setWindowFlags(QtCore.Qt.Window) @@ -149,21 +138,24 @@ def setup_componentSettingWindow(self): def create_componentControls(self): return - def populate_componentControls(self): - """ - Populate the controls values from the custom attributes of the component. + """Populate Controls + + Populate the controls values from the custom attributes of the + component. """ - #populate tab + # populate tab self.tabs.insertTab(1, self.settingsTab, "Component Settings") - #populate component settings + # populate component settings self.populateCheck(self.settingsTab.joint_checkBox, "joint") self.populateCheck(self.settingsTab.uniScale_checkBox, "uniScale") - self.populateCheck(self.settingsTab.neutralRotation_checkBox, "neutralRotation") - self.settingsTab.ctlSize_doubleSpinBox.setValue(self.root.attr("ctlSize").get()) + self.populateCheck(self.settingsTab.neutralRotation_checkBox, + "neutralRotation") + self.settingsTab.ctlSize_doubleSpinBox.setValue( + self.root.attr("ctlSize").get()) sideIndex = self.iconsList.index(self.root.attr("icon").get()) self.settingsTab.controlShape_comboBox.setCurrentIndex(sideIndex) @@ -178,13 +170,13 @@ def populate_componentControls(self): self.populateCheck(self.settingsTab.sy_checkBox, "k_sy") self.populateCheck(self.settingsTab.sz_checkBox, "k_sz") - self.settingsTab.ro_comboBox.setCurrentIndex(self.root.attr("default_rotorder").get()) + self.settingsTab.ro_comboBox.setCurrentIndex( + self.root.attr("default_rotorder").get()) ikRefArrayItems = self.root.attr("ikrefarray").get().split(",") for item in ikRefArrayItems: self.settingsTab.ikRefArray_listWidget.addItem(item) - def create_componentLayout(self): self.settings_layout = QtWidgets.QVBoxLayout() @@ -195,27 +187,61 @@ def create_componentLayout(self): def create_componentConnections(self): - self.settingsTab.joint_checkBox.stateChanged.connect(partial(self.updateCheck, self.settingsTab.joint_checkBox, "joint")) - self.settingsTab.uniScale_checkBox.stateChanged.connect(partial(self.updateCheck, self.settingsTab.uniScale_checkBox, "uniScale")) - self.settingsTab.neutralRotation_checkBox.stateChanged.connect(partial(self.updateCheck, self.settingsTab.neutralRotation_checkBox, "neutralRotation")) - self.settingsTab.ctlSize_doubleSpinBox.valueChanged.connect(partial(self.updateSpinBox, self.settingsTab.ctlSize_doubleSpinBox, "ctlSize")) - self.settingsTab.controlShape_comboBox.currentIndexChanged.connect(partial(self.updateControlShape, self.settingsTab.controlShape_comboBox, self.iconsList, "icon")) - - self.settingsTab.tx_checkBox.stateChanged.connect(partial(self.updateCheck, self.settingsTab.tx_checkBox, "k_tx")) - self.settingsTab.ty_checkBox.stateChanged.connect(partial(self.updateCheck, self.settingsTab.ty_checkBox, "k_ty")) - self.settingsTab.tz_checkBox.stateChanged.connect(partial(self.updateCheck, self.settingsTab.tz_checkBox, "k_tz")) - self.settingsTab.rx_checkBox.stateChanged.connect(partial(self.updateCheck, self.settingsTab.rx_checkBox, "k_rx")) - self.settingsTab.ry_checkBox.stateChanged.connect(partial(self.updateCheck, self.settingsTab.ry_checkBox, "k_ry")) - self.settingsTab.rz_checkBox.stateChanged.connect(partial(self.updateCheck, self.settingsTab.rz_checkBox, "k_rz")) - self.settingsTab.ro_checkBox.stateChanged.connect(partial(self.updateCheck, self.settingsTab.ro_checkBox, "k_ro")) - self.settingsTab.sx_checkBox.stateChanged.connect(partial(self.updateCheck, self.settingsTab.sx_checkBox, "k_sx")) - self.settingsTab.sy_checkBox.stateChanged.connect(partial(self.updateCheck, self.settingsTab.sy_checkBox, "k_sy")) - self.settingsTab.sz_checkBox.stateChanged.connect(partial(self.updateCheck, self.settingsTab.sz_checkBox, "k_sz")) - - self.settingsTab.ro_comboBox.currentIndexChanged.connect(partial(self.updateComboBox, self.settingsTab.ro_comboBox, "default_rotorder")) - - self.settingsTab.ikRefArrayAdd_pushButton.clicked.connect(partial(self.addItem2listWidget, self.settingsTab.ikRefArray_listWidget, "ikrefarray")) - self.settingsTab.ikRefArrayRemove_pushButton.clicked.connect(partial(self.removeSelectedFromListWidget, self.settingsTab.ikRefArray_listWidget, "ikrefarray")) + self.settingsTab.joint_checkBox.stateChanged.connect( + partial(self.updateCheck, + self.settingsTab.joint_checkBox, + "joint")) + self.settingsTab.uniScale_checkBox.stateChanged.connect( + partial(self.updateCheck, + self.settingsTab.uniScale_checkBox, + "uniScale")) + self.settingsTab.neutralRotation_checkBox.stateChanged.connect( + partial(self.updateCheck, + self.settingsTab.neutralRotation_checkBox, + "neutralRotation")) + self.settingsTab.ctlSize_doubleSpinBox.valueChanged.connect( + partial(self.updateSpinBox, + self.settingsTab.ctlSize_doubleSpinBox, + "ctlSize")) + self.settingsTab.controlShape_comboBox.currentIndexChanged.connect( + partial(self.updateControlShape, + self.settingsTab.controlShape_comboBox, + self.iconsList, "icon")) + + self.settingsTab.tx_checkBox.stateChanged.connect( + partial(self.updateCheck, self.settingsTab.tx_checkBox, "k_tx")) + self.settingsTab.ty_checkBox.stateChanged.connect( + partial(self.updateCheck, self.settingsTab.ty_checkBox, "k_ty")) + self.settingsTab.tz_checkBox.stateChanged.connect( + partial(self.updateCheck, self.settingsTab.tz_checkBox, "k_tz")) + self.settingsTab.rx_checkBox.stateChanged.connect( + partial(self.updateCheck, self.settingsTab.rx_checkBox, "k_rx")) + self.settingsTab.ry_checkBox.stateChanged.connect( + partial(self.updateCheck, self.settingsTab.ry_checkBox, "k_ry")) + self.settingsTab.rz_checkBox.stateChanged.connect( + partial(self.updateCheck, self.settingsTab.rz_checkBox, "k_rz")) + self.settingsTab.ro_checkBox.stateChanged.connect( + partial(self.updateCheck, self.settingsTab.ro_checkBox, "k_ro")) + self.settingsTab.sx_checkBox.stateChanged.connect( + partial(self.updateCheck, self.settingsTab.sx_checkBox, "k_sx")) + self.settingsTab.sy_checkBox.stateChanged.connect( + partial(self.updateCheck, self.settingsTab.sy_checkBox, "k_sy")) + self.settingsTab.sz_checkBox.stateChanged.connect( + partial(self.updateCheck, self.settingsTab.sz_checkBox, "k_sz")) + + self.settingsTab.ro_comboBox.currentIndexChanged.connect( + partial(self.updateComboBox, + self.settingsTab.ro_comboBox, + "default_rotorder")) + + self.settingsTab.ikRefArrayAdd_pushButton.clicked.connect( + partial(self.addItem2listWidget, + self.settingsTab.ikRefArray_listWidget, + "ikrefarray")) + self.settingsTab.ikRefArrayRemove_pushButton.clicked.connect( + partial(self.removeSelectedFromListWidget, + self.settingsTab.ikRefArray_listWidget, + "ikrefarray")) self.settingsTab.ikRefArray_listWidget.installEventFilter(self) def eventFilter(self, sender, event): @@ -226,6 +252,5 @@ def eventFilter(self, sender, event): else: return QtWidgets.QDialog.eventFilter(self, sender, event) - def dockCloseEventTriggered(self): - gqt.deleteInstances(self, MayaQDockWidget) + pyqt.deleteInstances(self, MayaQDockWidget) From 4c561c943a70782deb048073e6e45440dad72f93 Mon Sep 17 00:00:00 2001 From: miquelcampos Date: Tue, 21 Nov 2017 19:10:00 +0900 Subject: [PATCH 075/134] PEP8 #100 : Shifter: Component Eye_01 --- .../maya/shifter/component/eye_01/__init__.py | 149 +++++++++--------- .../maya/shifter/component/eye_01/guide.py | 129 +++++++-------- 2 files changed, 128 insertions(+), 150 deletions(-) diff --git a/scripts/mgear/maya/shifter/component/eye_01/__init__.py b/scripts/mgear/maya/shifter/component/eye_01/__init__.py index 5801315..befb987 100644 --- a/scripts/mgear/maya/shifter/component/eye_01/__init__.py +++ b/scripts/mgear/maya/shifter/component/eye_01/__init__.py @@ -1,118 +1,121 @@ -# MGEAR is under the terms of the MIT License +"""Component Eye 01 module""" -# Copyright (c) 2016 Jeremie Passerin, Miquel Campos - -# Permission is hereby granted, free of charge, to any person obtaining a copy -# of this software and associated documentation files (the "Software"), to deal -# in the Software without restriction, including without limitation the rights -# to use, copy, modify, merge, publish, distribute, sublicense, and/or sell -# copies of the Software, and to permit persons to whom the Software is -# furnished to do so, subject to the following conditions: +import pymel.core as pm +from pymel.core import datatypes -# The above copyright notice and this permission notice shall be included in all -# copies or substantial portions of the Software. +from mgear.maya.shifter import component -# THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR -# IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, -# FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE -# AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER -# LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, -# OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE -# SOFTWARE. +from mgear.maya import attribute, transform, primitive, applyop -# Author: Jeremie Passerin geerem@hotmail.com www.jeremiepasserin.com -# Author: Miquel Campos hello@miquel-campos.com www.miquel-campos.com -# Date: 2016 / 10 / 10 ########################################################## -# GLOBAL +# COMPONENT ########################################################## -# Maya -import pymel.core as pm -import pymel.core.datatypes as dt -# mgear -from mgear.maya.shifter.component import MainComponent -import mgear.maya.primitive as pri -import mgear.maya.transform as tra -import mgear.maya.attribute as att -import mgear.maya.applyop as aop - -########################################################## -# COMPONENT -########################################################## -## The main component class. -class Component(MainComponent): +class Component(component.Main): + """Shifter component Class""" # ===================================================== # OBJECTS # ===================================================== - - ## Add all the objects needed to create the component. - # @param self def addObjects(self): - - t = tra.getTransformFromPos(self.guide.pos["root"]) - self.eyeOver_npo = pri.addTransform(self.root, self.getName("eyeOver_npo"), t) - self.eyeOver_ctl = self.addCtl(self.eyeOver_npo, "Over_ctl", t, self.color_fk, "sphere", w=1*self.size, tp=self.parentCtlTag) - self.eye_npo = pri.addTransform(self.root, self.getName("eye_npo"), t) - self.eyeFK_ctl = self.addCtl(self.eye_npo, "fk_ctl", t, self.color_fk, "arrow", w=1*self.size, tp=self.eyeOver_ctl) + """Add all the objects needed to create the component.""" + + t = transform.getTransformFromPos(self.guide.pos["root"]) + + self.eyeOver_npo = primitive.addTransform( + self.root, self.getName("eyeOver_npo"), t) + + self.eyeOver_ctl = self.addCtl(self.eyeOver_npo, + "Over_ctl", + t, + self.color_fk, + "sphere", + w=1 * self.size, + tp=self.parentCtlTag) + self.eye_npo = primitive.addTransform(self.root, + self.getName("eye_npo"), + t) + self.eyeFK_ctl = self.addCtl(self.eye_npo, + "fk_ctl", + t, + self.color_fk, + "arrow", + w=1 * self.size, + tp=self.eyeOver_ctl) # look at - t = tra.getTransformFromPos(self.guide.pos["look"]) - self.ik_cns = pri.addTransform(self.root, self.getName("ik_cns"), t) - self.eyeIK_npo = pri.addTransform(self.ik_cns, self.getName("ik_npo"), t) - self.eyeIK_ctl = self.addCtl(self.eyeIK_npo, "ik_ctl", t, self.color_fk, "circle", w=.5*self.size, tp=self.eyeFK_ctl, ro=dt.Vector([1.5708,0,0])) - att.setKeyableAttributes(self.eyeIK_ctl, self.t_params) + t = transform.getTransformFromPos(self.guide.pos["look"]) + self.ik_cns = primitive.addTransform( + self.root, self.getName("ik_cns"), t) + + self.eyeIK_npo = primitive.addTransform( + self.ik_cns, self.getName("ik_npo"), t) + + self.eyeIK_ctl = self.addCtl(self.eyeIK_npo, + "ik_ctl", + t, + self.color_fk, + "circle", + w=.5 * self.size, + tp=self.eyeFK_ctl, + ro=datatypes.Vector([1.5708, 0, 0])) + attribute.setKeyableAttributes(self.eyeIK_ctl, self.t_params) self.jnt_pos.append([self.eyeFK_ctl, "eye", "parent_relative_jnt"]) - self.jnt_pos.append([self.eyeOver_ctl, "eyeOver", "parent_relative_jnt", False]) - - + self.jnt_pos.append( + [self.eyeOver_ctl, "eyeOver", "parent_relative_jnt", False]) # ===================================================== - # PROPERTY + # ATTRIBUTES # ===================================================== - ## Add parameters to the anim and setup properties to control the component. - # @param self def addAttributes(self): + """Create the anim and setupr rig attributes for the component""" # Ref if self.settings["ikrefarray"]: ref_names = self.settings["ikrefarray"].split(",") if len(ref_names) > 1: - self.ikref_att = self.addAnimEnumParam("ikref", "Ik Ref", 0, self.settings["ikrefarray"].split(",")) + self.ikref_att = self.addAnimEnumParam( + "ikref", + "Ik Ref", + 0, + self.settings["ikrefarray"].split(",")) # ===================================================== # OPERATORS # ===================================================== - ## Apply operators, constraints, expressions to the hierarchy.\n - # In order to keep the code clean and easier to debug, - # we shouldn't create any new object in this method. - # @param self def addOperators(self): + """Create operators and set the relations for the component rig + + Apply operators, constraints, expressions to the hierarchy. + In order to keep the code clean and easier to debug, + we shouldn't create any new object in this method. + + """ upvDir = self.settings["upVectorDirection"] if upvDir == 0: - upvVec = [1,0,0] + upvVec = [1, 0, 0] elif upvDir == 1: - upvVec = [0,1,0] + upvVec = [0, 1, 0] else: - upvVec = [0,0,1] + upvVec = [0, 0, 1] - aop.aimCns(self.eye_npo, self.eyeIK_ctl, "zy", 2, upvVec, self.root, False) - - pm.scaleConstraint(self.eyeOver_ctl, self.eye_npo, maintainOffset=False) - pm.pointConstraint(self.eyeOver_ctl, self.eye_npo, maintainOffset=False) + applyop.aimCns( + self.eye_npo, self.eyeIK_ctl, "zy", 2, upvVec, self.root, False) + pm.scaleConstraint( + self.eyeOver_ctl, self.eye_npo, maintainOffset=False) + pm.pointConstraint( + self.eyeOver_ctl, self.eye_npo, maintainOffset=False) # ===================================================== # CONNECTOR # ===================================================== - ## Set the relation between object from guide to rig.\n - # @param self def setRelation(self): + """Set the relation beetween object from guide to rig""" self.relatives["root"] = self.eyeFK_ctl self.relatives["look"] = self.eyeOver_ctl @@ -122,8 +125,6 @@ def setRelation(self): self.jointRelatives["root"] = 0 self.jointRelatives["look"] = 1 - - ## standard connection definition. - # @param self def connect_standard(self): + """standard connection definition for the component""" self.connect_standardWithSimpleIkRef() diff --git a/scripts/mgear/maya/shifter/component/eye_01/guide.py b/scripts/mgear/maya/shifter/component/eye_01/guide.py index 041ef27..9517fc2 100644 --- a/scripts/mgear/maya/shifter/component/eye_01/guide.py +++ b/scripts/mgear/maya/shifter/component/eye_01/guide.py @@ -1,55 +1,21 @@ -# MGEAR is under the terms of the MIT License +"""Guide Eye 01 module""" -# Copyright (c) 2016 Jeremie Passerin, Miquel Campos - -# Permission is hereby granted, free of charge, to any person obtaining a copy -# of this software and associated documentation files (the "Software"), to deal -# in the Software without restriction, including without limitation the rights -# to use, copy, modify, merge, publish, distribute, sublicense, and/or sell -# copies of the Software, and to permit persons to whom the Software is -# furnished to do so, subject to the following conditions: - -# The above copyright notice and this permission notice shall be included in all -# copies or substantial portions of the Software. - -# THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR -# IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, -# FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE -# AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER -# LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, -# OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE -# SOFTWARE. - -# Author: Jeremie Passerin geerem@hotmail.com www.jeremiepasserin.com -# Author: Miquel Campos hello@miquel-campos.com www.miquel-campos.com -# Date: 2016 / 10 / 10 - - -########################################################## -# GLOBAL -########################################################## from functools import partial +from mgear.maya.shifter.component import guide +from mgear.maya import transform, pyqt +from mgear.vendor.Qt import QtWidgets, QtCore - -# mgear -from mgear.maya.shifter.component.guide import ComponentGuide -import mgear.maya.transform as tra - -#Pyside -from mgear.maya.shifter.component.guide import componentMainSettings -import mgear.maya.pyqt as gqt from maya.app.general.mayaMixin import MayaQWidgetDockableMixin from maya.app.general.mayaMixin import MayaQDockWidget -import settingsUI as sui -QtGui, QtCore, QtWidgets, wrapInstance = gqt.qt_import() +import settingsUI as sui # guide info AUTHOR = "Jeremie Passerin, Miquel Campos" URL = "www.jeremiepasserin.com, www.miquletd.com" EMAIL = "geerem@hotmail.com, hello@miquel-campos.com" -VERSION = [1,0,0] +VERSION = [1, 0, 0] TYPE = "eye_01" NAME = "eye" DESCRIPTION = "eye control rig" @@ -57,7 +23,10 @@ ########################################################## # CLASS ########################################################## -class Guide(ComponentGuide): + + +class Guide(guide.ComponentGuide): + """Component Guide Class""" compType = TYPE compName = NAME @@ -68,37 +37,32 @@ class Guide(ComponentGuide): email = EMAIL version = VERSION - - # ===================================================== - ## - # @param self def postInit(self): + """Initialize the position for the guide""" self.save_transform = ["root", "look"] - - # ===================================================== - ## Add more object to the object definition list. - # @param self def addObjects(self): + """Add the Guide Root, blade and locators""" - #eye guide + # eye guide self.root = self.addRoot() - vTemp = tra.getOffsetPosition( self.root, [0,0,1]) + vTemp = transform.getOffsetPosition(self.root, [0, 0, 1]) self.look = self.addLoc("look", self.root, vTemp) centers = [self.root, self.look] self.dispcrv = self.addDispCurve("crv", centers) - - # ===================================================== - ## Add more parameter to the parameter definition list. - # @param self def addParameters(self): + """Add the configurations settings""" + + self.pUpVDir = self.addEnumParam( + "upVectorDirection", ["X", "Y", "Z"], 1) - self.pUpVDir = self.addEnumParam("upVectorDirection", ["X", "Y", "Z"], 1) - self.pIkRefArray = self.addParam("ikrefarray", "string", "") + self.pIkRefArray = self.addParam("ikrefarray", "string", "") self.pUseIndex = self.addParam("useIndex", "bool", False) - self.pParentJointIndex = self.addParam("parentJointIndex", "long", -1, None, None) + + self.pParentJointIndex = self.addParam( + "parentJointIndex", "long", -1, None, None) ########################################################## @@ -106,23 +70,24 @@ def addParameters(self): ########################################################## class settingsTab(QtWidgets.QDialog, sui.Ui_Form): + """The Component settings UI""" def __init__(self, parent=None): super(settingsTab, self).__init__(parent) self.setupUi(self) -class componentSettings(MayaQWidgetDockableMixin, componentMainSettings): +class componentSettings(MayaQWidgetDockableMixin, guide.componentMainSettings): + """Create the component setting window""" - def __init__(self, parent = None): + def __init__(self, parent=None): self.toolName = TYPE # Delete old instances of the componet settings window. - gqt.deleteInstances(self, MayaQDockWidget) + pyqt.deleteInstances(self, MayaQDockWidget) - super(self.__class__, self).__init__(parent = parent) + super(self.__class__, self).__init__(parent=parent) self.settingsTab = settingsTab() - self.setup_componentSettingWindow() self.create_componentControls() self.populate_componentControls() @@ -130,7 +95,7 @@ def __init__(self, parent = None): self.create_componentConnections() def setup_componentSettingWindow(self): - self.mayaMainWindow = gqt.maya_main_window() + self.mayaMainWindow = pyqt.maya_main_window() self.setObjectName(self.toolName) self.setWindowFlags(QtCore.Qt.Window) @@ -140,23 +105,24 @@ def setup_componentSettingWindow(self): def create_componentControls(self): return - def populate_componentControls(self): - """ - Populate the controls values from the custom attributes of the component. + """Populate Controls + + Populate the controls values from the custom attributes of the + component. """ - #populate tab + # populate tab self.tabs.insertTab(1, self.settingsTab, "Component Settings") - #populate component settings - self.settingsTab.upVectorDirection_comboBox.setCurrentIndex(self.root.attr("upVectorDirection").get()) + # populate component settings + self.settingsTab.upVectorDirection_comboBox.setCurrentIndex( + self.root.attr("upVectorDirection").get()) ikRefArrayItems = self.root.attr("ikrefarray").get().split(",") for item in ikRefArrayItems: self.settingsTab.ikRefArray_listWidget.addItem(item) - def create_componentLayout(self): self.settings_layout = QtWidgets.QVBoxLayout() @@ -167,10 +133,22 @@ def create_componentLayout(self): def create_componentConnections(self): - self.settingsTab.upVectorDirection_comboBox.currentIndexChanged.connect(partial(self.updateComboBox, self.settingsTab.upVectorDirection_comboBox, "upVectorDirection")) + cBox = self.settingsTab.upVectorDirection_comboBox + cBox.currentIndexChanged.connect( + partial(self.updateComboBox, + self.settingsTab.upVectorDirection_comboBox, + "upVectorDirection")) + + self.settingsTab.ikRefArrayAdd_pushButton.clicked.connect( + partial(self.addItem2listWidget, + self.settingsTab.ikRefArray_listWidget, + "ikrefarray")) + + self.settingsTab.ikRefArrayRemove_pushButton.clicked.connect( + partial(self.removeSelectedFromListWidget, + self.settingsTab.ikRefArray_listWidget, + "ikrefarray")) - self.settingsTab.ikRefArrayAdd_pushButton.clicked.connect(partial(self.addItem2listWidget, self.settingsTab.ikRefArray_listWidget, "ikrefarray")) - self.settingsTab.ikRefArrayRemove_pushButton.clicked.connect(partial(self.removeSelectedFromListWidget, self.settingsTab.ikRefArray_listWidget, "ikrefarray")) self.settingsTab.ikRefArray_listWidget.installEventFilter(self) def eventFilter(self, sender, event): @@ -181,6 +159,5 @@ def eventFilter(self, sender, event): else: return QtWidgets.QDialog.eventFilter(self, sender, event) - def dockCloseEventTriggered(self): - gqt.deleteInstances(self, MayaQDockWidget) + pyqt.deleteInstances(self, MayaQDockWidget) From df498b556de15730ee0d5e1ba683e871a2d6cf2f Mon Sep 17 00:00:00 2001 From: miquelcampos Date: Wed, 22 Nov 2017 10:24:27 +0900 Subject: [PATCH 076/134] ) $ git commit -amPEP8 --- scripts/mgear/maya/shifter/component/__init__.py | 12 ++++++++++-- 1 file changed, 10 insertions(+), 2 deletions(-) diff --git a/scripts/mgear/maya/shifter/component/__init__.py b/scripts/mgear/maya/shifter/component/__init__.py index 0b7c33f..b47d735 100644 --- a/scripts/mgear/maya/shifter/component/__init__.py +++ b/scripts/mgear/maya/shifter/component/__init__.py @@ -334,7 +334,15 @@ def getBiNormalFromPos(self, pos): return vector.getPlaneBiNormal(pos[0], pos[1], pos[2]) - def addCtl(self, parent, name, m, color, iconShape, tp=None, lp=True, **kwargs): + def addCtl(self, + parent, + name, + m, + color, + iconShape, + tp=None, + lp=True, + **kwargs): """ Create the control and apply the shape, if this is alrealdy stored in the guide controllers grp. @@ -349,7 +357,7 @@ def addCtl(self, parent, name, m, color, iconShape, tp=None, lp=True, **kwargs): tp (dagNode): Tag Parent Control object to connect as a parent controller lp (bool): Lock the parent controller channels - kwargs (variant): Other arguments for the iconShape type variations. + kwargs (variant): Other arguments for the iconShape type variations Returns: dagNode: The Control. From d42be79a0839d8f79fbc7016cf58d82841265879 Mon Sep 17 00:00:00 2001 From: miquelcampos Date: Wed, 22 Nov 2017 12:12:18 +0900 Subject: [PATCH 077/134] PEP8 #100 Shifter: foot_bk_01 and hydraulic_01 --- .../shifter/component/foot_bk_01/__init__.py | 370 +++++++++++------- .../shifter/component/foot_bk_01/guide.py | 120 +++--- .../component/hydraulic_01/__init__.py | 178 +++++---- .../shifter/component/hydraulic_01/guide.py | 111 ++---- 4 files changed, 420 insertions(+), 359 deletions(-) diff --git a/scripts/mgear/maya/shifter/component/foot_bk_01/__init__.py b/scripts/mgear/maya/shifter/component/foot_bk_01/__init__.py index f6b3a0f..70790fa 100644 --- a/scripts/mgear/maya/shifter/component/foot_bk_01/__init__.py +++ b/scripts/mgear/maya/shifter/component/foot_bk_01/__init__.py @@ -1,53 +1,22 @@ -# MGEAR is under the terms of the MIT License - -# Copyright (c) 2016 Jeremie Passerin, Miquel Campos - -# Permission is hereby granted, free of charge, to any person obtaining a copy -# of this software and associated documentation files (the "Software"), to deal -# in the Software without restriction, including without limitation the rights -# to use, copy, modify, merge, publish, distribute, sublicense, and/or sell -# copies of the Software, and to permit persons to whom the Software is -# furnished to do so, subject to the following conditions: - -# The above copyright notice and this permission notice shall be included in all -# copies or substantial portions of the Software. - -# THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR -# IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, -# FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE -# AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER -# LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, -# OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE -# SOFTWARE. - -# Author: Jeremie Passerin geerem@hotmail.com www.jeremiepasserin.com -# Author: Miquel Campos hello@miquel-campos.com www.miquel-campos.com -# Date: 2016 / 10 / 10 - -############################################# -# GLOBAL -############################################# -# Maya +"""Component Foot Banking 01 module""" + import pymel.core as pm -import pymel.core.datatypes as dt +from pymel.core import datatypes -# mgear -from mgear.maya.shifter.component import MainComponent +from mgear.maya.shifter import component -import mgear.maya.primitive as pri -import mgear.maya.transform as tra -import mgear.maya.attribute as att -import mgear.maya.node as nod -import mgear.maya.vector as vec -import mgear.maya.applyop as aop +from mgear.maya import node, applyop, vector +from mgear.maya import attribute, transform, primitive -############################################# -# COMPONENT -############################################# -class Component(MainComponent): +class Component(component.Main): + """Shifter component Class""" + # ===================================================== + # OBJECTS + # ===================================================== def addObjects(self): + """Add all the objects needed to create the component.""" self.div_count = len(self.guide.apos) - 5 @@ -58,35 +27,83 @@ def addObjects(self): # Heel --------------------------------------------- # bank pivot - t = tra.getTransformLookingAt(self.guide.pos["heel"], self.guide.apos[-4], self.normal, "xz", self.negate) - t = tra.setMatrixPosition(t, self.guide.pos["inpivot"]) - self.in_npo = pri.addTransform(self.root, self.getName("in_npo"), t) - self.in_piv = pri.addTransform(self.in_npo, self.getName("in_piv"), t) - t = tra.setMatrixPosition(t, self.guide.pos["outpivot"]) - self.out_piv = pri.addTransform(self.in_piv, self.getName("out_piv"), t) + t = transform.getTransformLookingAt(self.guide.pos["heel"], + self.guide.apos[-4], + self.normal, + "xz", + self.negate) - # heel - t = tra.getTransformLookingAt(self.guide.pos["heel"], self.guide.apos[-4], self.normal, "xz", self.negate) + t = transform.setMatrixPosition(t, self.guide.pos["inpivot"]) - self.heel_loc = pri.addTransform(self.out_piv, self.getName("heel_loc"), t) - att.setRotOrder(self.heel_loc, "YZX") - self.heel_ctl = self.addCtl(self.heel_loc, "heel_ctl", t, self.color_ik, "sphere", w=self.size*.1, tp=self.parentCtlTag) - att.setKeyableAttributes(self.heel_ctl, self.r_params) + self.in_npo = primitive.addTransform( + self.root, self.getName("in_npo"), t) + + self.in_piv = primitive.addTransform( + self.in_npo, self.getName("in_piv"), t) + + t = transform.setMatrixPosition(t, self.guide.pos["outpivot"]) + + self.out_piv = primitive.addTransform( + self.in_piv, self.getName("out_piv"), t) + + # heel + t = transform.getTransformLookingAt(self.guide.pos["heel"], + self.guide.apos[-4], + self.normal, + "xz", + self.negate) + + self.heel_loc = primitive.addTransform( + self.out_piv, self.getName("heel_loc"), t) + + attribute.setRotOrder(self.heel_loc, "YZX") + self.heel_ctl = self.addCtl(self.heel_loc, + "heel_ctl", + t, + self.color_ik, + "sphere", + w=self.size * .1, + tp=self.parentCtlTag) + + attribute.setKeyableAttributes(self.heel_ctl, self.r_params) # Tip ---------------------------------------------- - v = dt.Vector(self.guide.apos[-5].x,self.guide.apos[-1].y,self.guide.apos[-5].z) - t = tra.setMatrixPosition(t, v) - self.tip_ctl = self.addCtl(self.heel_ctl, "tip_ctl", t, self.color_ik, "circle", w=self.size, tp=self.heel_ctl) - att.setKeyableAttributes(self.tip_ctl, self.r_params) + v = datatypes.Vector(self.guide.apos[-5].x, + self.guide.apos[-1].y, + self.guide.apos[-5].z) + t = transform.setMatrixPosition(t, v) + self.tip_ctl = self.addCtl(self.heel_ctl, + "tip_ctl", + t, + self.color_ik, + "circle", + w=self.size, + tp=self.heel_ctl) + attribute.setKeyableAttributes(self.tip_ctl, self.r_params) # Roll --------------------------------------------- if self.settings["useRollCtl"]: - t = tra.getTransformLookingAt(self.guide.pos["heel"], self.guide.apos[-4], self.normal, "xz", self.negate) - t = tra.setMatrixPosition(t, self.guide.pos["root"]) - - self.roll_np = pri.addTransform(self.root, self.getName("roll_npo"), t) - self.roll_ctl = self.addCtl(self.roll_np, "roll_ctl", t, self.color_ik, "cylinder", w=self.size*.5, h=self.size*.5, ro=dt.Vector(3.1415*.5,0,0), tp=self.tip_ctl) - att.setKeyableAttributes(self.roll_ctl, ["rx", "rz"]) + t = transform.getTransformLookingAt(self.guide.pos["heel"], + self.guide.apos[-4], + self.normal, + "xz", + self.negate) + t = transform.setMatrixPosition(t, self.guide.pos["root"]) + + self.roll_np = primitive.addTransform( + self.root, self.getName("roll_npo"), t) + + self.roll_ctl = self.addCtl(self.roll_np, + "roll_ctl", + t, + self.color_ik, + "cylinder", + w=self.size * .5, + h=self.size * .5, + ro=datatypes.Vector(3.1415 * .5, 0, 0), + tp=self.tip_ctl) + + attribute.setKeyableAttributes(self.roll_ctl, ["rx", "rz"]) # Backward Controlers ------------------------------ bk_pos = self.guide.apos[1:-3] @@ -98,15 +115,23 @@ def addObjects(self): for i, pos in enumerate(bk_pos): if i == 0: - t = tra.getTransform(self.heel_ctl) - t = tra.setMatrixPosition(t, pos) + t = transform.getTransform(self.heel_ctl) + t = transform.setMatrixPosition(t, pos) else: - dir = bk_pos[i-1] - t = tra.getTransformLookingAt(pos, dir, self.normal, "xz", self.negate) - - bk_loc = pri.addTransform(parent, self.getName("bk%s_loc"%i), t) - bk_ctl = self.addCtl(bk_loc, "bk%s_ctl"%i, t, self.color_ik, "sphere", w=self.size*.15, tp=self.previousTag) - att.setKeyableAttributes(bk_ctl, self.r_params) + dir = bk_pos[i - 1] + t = transform.getTransformLookingAt( + pos, dir, self.normal, "xz", self.negate) + + bk_loc = primitive.addTransform( + parent, self.getName("bk%s_loc" % i), t) + bk_ctl = self.addCtl(bk_loc, + "bk%s_ctl" % i, + t, + self.color_ik, + "sphere", + w=self.size * .15, + tp=self.previousTag) + attribute.setKeyableAttributes(bk_ctl, self.r_params) self.previousTag = bk_ctl self.bk_loc.append(bk_loc) @@ -114,8 +139,13 @@ def addObjects(self): parent = bk_ctl # FK Reference ------------------------------------ - self.fk_ref = pri.addTransformFromPos(self.bk_ctl[-1], self.getName("fk_ref"), self.guide.apos[0]) - self.fk_npo = pri.addTransform(self.fk_ref, self.getName("fk0_npo"), tra.getTransform(self.bk_ctl[-1])) + self.fk_ref = primitive.addTransformFromPos(self.bk_ctl[-1], + self.getName("fk_ref"), + self.guide.apos[0]) + self.fk_npo = primitive.addTransform( + self.fk_ref, + self.getName("fk0_npo"), + transform.getTransform(self.bk_ctl[-1])) # Forward Controlers ------------------------------ self.fk_ctl = [] @@ -123,34 +153,67 @@ def addObjects(self): parent = self.fk_npo self.previousTag = self.tip_ctl for i, bk_ctl in enumerate(reversed(self.bk_ctl[1:])): - t = tra.getTransform(bk_ctl) - dist = vec.getDistance(self.guide.apos[i+1], self.guide.apos[i+2]) + t = transform.getTransform(bk_ctl) + dist = vector.getDistance(self.guide.apos[i + 1], + self.guide.apos[i + 2]) + + fk_loc = primitive.addTransform( + parent, self.getName("fk%s_loc" % i), t) + + po_vec = datatypes.Vector(dist * .5 * self.n_factor, 0, 0) + fk_ctl = self.addCtl(fk_loc, + "fk%s_ctl" % i, + t, + self.color_fk, + "cube", + w=dist, + h=self.size * .5, + d=self.size * .5, + po=po_vec, + tp=self.previousTag) - fk_loc = pri.addTransform(parent, self.getName("fk%s_loc"%i), t) - fk_ctl = self.addCtl(fk_loc, "fk%s_ctl"%i, t, self.color_fk, "cube", w=dist, h=self.size*.5, d=self.size*.5, po=dt.Vector(dist*.5*self.n_factor,0,0), tp=self.previousTag) self.previousTag = fk_ctl - att.setKeyableAttributes(fk_ctl) + attribute.setKeyableAttributes(fk_ctl) self.jnt_pos.append([fk_ctl, i]) parent = fk_ctl self.fk_ctl.append(fk_ctl) self.fk_loc.append(fk_loc) + # ===================================================== + # ATTRIBUTES + # ===================================================== def addAttributes(self): + """Create the anim and setupr rig attributes for the component""" # Anim ------------------------------------------- # Roll Angles if not self.settings["useRollCtl"]: - self.roll_att = self.addAnimParam("roll", "Roll", "double", 0, -180, 180) - self.bank_att = self.addAnimParam("bank", "Bank", "double", 0, -180, 180) + self.roll_att = self.addAnimParam( + "roll", "Roll", "double", 0, -180, 180) + self.bank_att = self.addAnimParam( + "bank", "Bank", "double", 0, -180, 180) - self.angles_att = [ self.addAnimParam("angle_%s"%i, "Angle %s"%i, "double", -20) for i in range(self.div_count) ] + self.angles_att = [self.addAnimParam("angle_%s" % i, + "Angle %s" % i, + "double", -20) + for i in range(self.div_count)] # Setup ------------------------------------------ - self.blend_att = self.addSetupParam("blend", "Fk/Ik Blend", "double", 1, 0, 1) + self.blend_att = self.addSetupParam( + "blend", "Fk/Ik Blend", "double", 1, 0, 1) + # ===================================================== + # OPERATORS + # ===================================================== def addOperators(self): + """Create operators and set the relations for the component rig + Apply operators, constraints, expressions to the hierarchy. + In order to keep the code clean and easier to debug, + we shouldn't create any new object in this method. + + """ # Visibilities ------------------------------------- # ik @@ -167,77 +230,99 @@ def addOperators(self): pm.connectAttr(self.blend_att, shp.attr("visibility")) # Roll / Bank -------------------------------------- - if self.settings["useRollCtl"]: # Using the controler + if self.settings["useRollCtl"]: # Using the controler self.roll_att = self.roll_ctl.attr("rz") self.bank_att = self.roll_ctl.attr("rx") - clamp_node = nod.createClampNode([self.roll_att, self.bank_att, self.bank_att], [0, -180, 0], [180,0,180]) - inAdd_nod = nod.createAddNode(clamp_node+".outputB", pm.getAttr(self.in_piv.attr("rx")) * self.n_factor) + clamp_node = node.createClampNode( + [self.roll_att, self.bank_att, self.bank_att], + [0, -180, 0], + [180, 0, 180]) + + inAdd_nod = node.createAddNode( + clamp_node + ".outputB", + pm.getAttr(self.in_piv.attr("rx")) * self.n_factor) - pm.connectAttr(clamp_node+".outputR", self.heel_loc.attr("rz")) - pm.connectAttr(clamp_node+".outputG", self.out_piv.attr("rx")) - pm.connectAttr(inAdd_nod+".output", self.in_piv.attr("rx")) + pm.connectAttr(clamp_node + ".outputR", self.heel_loc.attr("rz")) + pm.connectAttr(clamp_node + ".outputG", self.out_piv.attr("rx")) + pm.connectAttr(inAdd_nod + ".output", self.in_piv.attr("rx")) # Reverse Controler offset ------------------------- - angle_outputs = nod.createAddNodeMulti(self.angles_att) + angle_outputs = node.createAddNodeMulti(self.angles_att) for i, bk_loc in enumerate(reversed(self.bk_loc)): - if i == 0 : # First + if i == 0: # First input = self.roll_att min_input = self.angles_att[i] - elif i == len(self.angles_att): # Last - sub_nod = nod.createSubNode(self.roll_att, angle_outputs[i-1]) - input = sub_nod+".output" + elif i == len(self.angles_att): # Last + sub_nod = node.createSubNode(self.roll_att, + angle_outputs[i - 1]) + input = sub_nod + ".output" min_input = -360 - else: # Others - sub_nod = nod.createSubNode(self.roll_att, angle_outputs[i-1]) - input = sub_nod+".output" + else: # Others + sub_nod = node.createSubNode(self.roll_att, + angle_outputs[i - 1]) + input = sub_nod + ".output" min_input = self.angles_att[i] - clamp_node = nod.createClampNode(input, min_input, 0) - add_node = nod.createAddNode(clamp_node+".outputR", bk_loc.getAttr("rz")) - pm.connectAttr(add_node+".output", bk_loc.attr("rz")) + clamp_node = node.createClampNode(input, min_input, 0) + + add_node = node.createAddNode(clamp_node + ".outputR", + bk_loc.getAttr("rz")) + + pm.connectAttr(add_node + ".output", bk_loc.attr("rz")) # Reverse compensation ----------------------------- for i, fk_loc in enumerate(self.fk_loc): - bk_ctl = self.bk_ctl[-i-1] - bk_loc = self.bk_loc[-i-1] + bk_ctl = self.bk_ctl[-i - 1] + bk_loc = self.bk_loc[-i - 1] fk_ctl = self.fk_ctl[i] # Inverse Rotorder - node = aop.gear_inverseRotorder_op(bk_ctl, fk_ctl) - pm.connectAttr(node+".output", bk_loc.attr("ro")) + o_node = applyop.gear_inverseRotorder_op(bk_ctl, fk_ctl) + pm.connectAttr(o_node + ".output", bk_loc.attr("ro")) pm.connectAttr(fk_ctl.attr("ro"), fk_loc.attr("ro")) - att.lockAttribute(bk_ctl, "ro") - + attribute.lockAttribute(bk_ctl, "ro") # Compensate the backward rotation # ik - addx_node = nod.createAddNode(bk_ctl.attr("rx"), bk_loc.attr("rx")) - addy_node = nod.createAddNode(bk_ctl.attr("ry"), bk_loc.attr("ry")) - addz_node = nod.createAddNode(bk_ctl.attr("rz"), bk_loc.attr("rz")) - addz_node = nod.createAddNode(addz_node+".output", -bk_loc.getAttr("rz") - fk_loc.getAttr("rz")) - - neg_node = nod.createMulNode([addx_node+".output",addy_node+".output",addz_node+".output"], [-1,-1,-1]) - ik_outputs = [neg_node+".outputX", neg_node+".outputY", neg_node+".outputZ"] + addx_node = node.createAddNode( + bk_ctl.attr("rx"), bk_loc.attr("rx")) + addy_node = node.createAddNode( + bk_ctl.attr("ry"), bk_loc.attr("ry")) + addz_node = node.createAddNode( + bk_ctl.attr("rz"), bk_loc.attr("rz")) + addz_node = node.createAddNode( + addz_node + ".output", + -bk_loc.getAttr("rz") - fk_loc.getAttr("rz")) + + neg_node = node.createMulNode([addx_node + ".output", + addy_node + ".output", + addz_node + ".output"], + [-1, -1, -1]) + ik_outputs = [neg_node + ".outputX", + neg_node + ".outputY", + neg_node + ".outputZ"] # fk - fk_outputs = [0,0,fk_loc.getAttr("rz")] + fk_outputs = [0, 0, fk_loc.getAttr("rz")] # blend - blend_node = nod.createBlendNode(ik_outputs, fk_outputs, self.blend_att) - pm.connectAttr(blend_node+".output", fk_loc.attr("rotate")) + blend_node = node.createBlendNode(ik_outputs, + fk_outputs, + self.blend_att) + pm.connectAttr(blend_node + ".output", fk_loc.attr("rotate")) return # ===================================================== # CONNECTOR # ===================================================== - ## Set the relation beetween object from guide to rig.\n - # @param self def setRelation(self): + """Set the relation beetween object from guide to rig""" + self.relatives["root"] = self.fk_ctl[0] self.relatives["heel"] = self.fk_ctl[0] self.relatives["inpivot"] = self.fk_ctl[0] @@ -254,57 +339,63 @@ def setRelation(self): self.jointRelatives["outpivot"] = 0 for i in range(self.div_count): - self.relatives["%s_loc"%i] = self.fk_ctl[i] - self.jointRelatives["%s_loc"%i] = i + self.relatives["%s_loc" % i] = self.fk_ctl[i] + self.jointRelatives["%s_loc" % i] = i if self.div_count > 0: - self.relatives["%s_loc"%self.div_count] = self.fk_ctl[-1] - self.jointRelatives["%s_loc"%self.div_count] = self.div_count-1 + self.relatives["%s_loc" % self.div_count] = self.fk_ctl[-1] + self.jointRelatives["%s_loc" % self.div_count] = self.div_count - 1 - ## Add more connection definition to the set. - # @param self def addConnection(self): + """Add more connection definition to the set""" + self.connections["leg_2jnt_01"] = self.connect_leg_2jnt_01 self.connections["leg_ms_2jnt_01"] = self.connect_leg_ms_2jnt_01 self.connections["leg_3jnt_01"] = self.connect_leg_3jnt_01 - ## leg connection definition. - # @param self def connect_leg_2jnt_01(self): + """Connector for leg 2jnt""" + # If the parent component hasn't been generated we skip the connection if self.parent_comp is None: return - pm.connectAttr(self.parent_comp.blend_att, self.blend_att) pm.parent(self.root, self.parent_comp.ik_ctl) pm.parent(self.parent_comp.ik_ref, self.bk_ctl[-1]) - pm.parentConstraint(self.parent_comp.tws2_rot, self.fk_ref, maintainOffset=True) + pm.parentConstraint( + self.parent_comp.tws2_rot, self.fk_ref, maintainOffset=True) return def connect_leg_ms_2jnt_01(self): + """Connector for leg ms 2jnt""" + # If the parent component hasn't been generated we skip the connection if self.parent_comp is None: return - pm.connectAttr(self.parent_comp.blend_att, self.blend_att) pm.parent(self.root, self.parent_comp.ik_ctl) pm.parent(self.parent_comp.ik_ref, self.bk_ctl[-1]) - pm.parentConstraint(self.parent_comp.tws3_rot, self.fk_ref, maintainOffset=True) - cns = pm.scaleConstraint(self.parent_comp.fk_ref, self.parent_comp.ik_ref, self.fk_ref, wal = True) + pm.parentConstraint(self.parent_comp.tws3_rot, + self.fk_ref, + maintainOffset=True) + cns = pm.scaleConstraint(self.parent_comp.fk_ref, + self.parent_comp.ik_ref, + self.fk_ref, wal=True) bc_node = pm.createNode("blendColors") - pm.connectAttr(bc_node+".outputB",cns+".%sW0"%self.parent_comp.fk_ref) - pm.connectAttr(bc_node+".outputR",cns+".%sW1"%self.parent_comp.ik_ref) - pm.connectAttr(self.parent_comp.blend_att, bc_node+".blender") - + pm.connectAttr(bc_node + ".outputB", + cns + ".%sW0" % self.parent_comp.fk_ref) + pm.connectAttr(bc_node + ".outputR", + cns + ".%sW1" % self.parent_comp.ik_ref) + pm.connectAttr(self.parent_comp.blend_att, bc_node + ".blender") return - ## leg connection definition. - # @param self def connect_leg_3jnt_01(self): + """Connector for leg 3jnt""" + # If the parent component hasn't been generated we skip the connection if self.parent_comp is None: return @@ -313,6 +404,7 @@ def connect_leg_3jnt_01(self): pm.parent(self.root, self.parent_comp.ik_ctl) pm.parent(self.parent_comp.ik_ref, self.bk_ctl[-1]) pm.parent(self.parent_comp.ik2b_ikCtl_ref, self.bk_ctl[-1]) - pm.parentConstraint(self.parent_comp.tws3_rot, self.fk_ref, maintainOffset=True) + pm.parentConstraint( + self.parent_comp.tws3_rot, self.fk_ref, maintainOffset=True) return diff --git a/scripts/mgear/maya/shifter/component/foot_bk_01/guide.py b/scripts/mgear/maya/shifter/component/foot_bk_01/guide.py index d50d588..571d977 100644 --- a/scripts/mgear/maya/shifter/component/foot_bk_01/guide.py +++ b/scripts/mgear/maya/shifter/component/foot_bk_01/guide.py @@ -1,53 +1,25 @@ # MGEAR is under the terms of the MIT License # Copyright (c) 2016 Jeremie Passerin, Miquel Campos +"""Guide Foot banking 01 module""" -# Permission is hereby granted, free of charge, to any person obtaining a copy -# of this software and associated documentation files (the "Software"), to deal -# in the Software without restriction, including without limitation the rights -# to use, copy, modify, merge, publish, distribute, sublicense, and/or sell -# copies of the Software, and to permit persons to whom the Software is -# furnished to do so, subject to the following conditions: - -# The above copyright notice and this permission notice shall be included in all -# copies or substantial portions of the Software. - -# THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR -# IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, -# FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE -# AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER -# LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, -# OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE -# SOFTWARE. - -# Author: Jeremie Passerin geerem@hotmail.com www.jeremiepasserin.com -# Author: Miquel Campos hello@miquel-campos.com www.miquel-campos.com -# Date: 2016 / 10 / 10 - -############################################# -# GLOBAL -############################################# from functools import partial -# pyMel import pymel.core as pm -# mgear -from mgear.maya.shifter.component.guide import ComponentGuide -import mgear.maya.transform as tra +from mgear.maya.shifter.component import guide +from mgear.maya import transform, pyqt +from mgear.vendor.Qt import QtWidgets, QtCore -#Pyside -from mgear.maya.shifter.component.guide import componentMainSettings -import mgear.maya.pyqt as gqt from maya.app.general.mayaMixin import MayaQWidgetDockableMixin from maya.app.general.mayaMixin import MayaQDockWidget + import settingsUI as sui -QtGui, QtCore, QtWidgets, wrapInstance = gqt.qt_import() # guide info AUTHOR = "Jeremie Passerin, Miquel Campos" URL = "www.jeremiepasserin.com, www.miquel-campos.com" EMAIL = "geerem@hotmail.com, hello@miquel-campos.com" -VERSION = [1,0,0] +VERSION = [1, 0, 0] TYPE = "foot_bk_01" NAME = "foot" DESCRIPTION = "Foot with reversed controllers to control foot roll." @@ -55,7 +27,10 @@ ########################################################## # CLASS ########################################################## -class Guide(ComponentGuide): + + +class Guide(guide.ComponentGuide): + """Component Guide Class""" compType = TYPE compName = NAME @@ -68,17 +43,13 @@ class Guide(ComponentGuide): connectors = ["leg_2jnt_01", "leg_ms_2jnt_01", "leg_3jnt_01"] - # ===================================================== - ## - # @param self def postInit(self): + """Initialize the position for the guide""" self.save_transform = ["root", "#_loc", "heel", "outpivot", "inpivot"] self.addMinMax("#_loc", 1, -1) - # ===================================================== - ## Add more object to the object definition list. - # @param self def addObjects(self): + """Add the Guide Root, blade and locators""" self.root = self.addRoot() self.locs = self.addLocMulti("#_loc", self.root) @@ -88,23 +59,23 @@ def addObjects(self): self.dispcrv = self.addDispCurve("crv", centers) # Heel and pivots - vTemp = tra.getOffsetPosition( self.root, [0,-1,-1]) + vTemp = transform.getOffsetPosition(self.root, [0, -1, -1]) self.heel = self.addLoc("heel", self.root, vTemp) - vTemp = tra.getOffsetPosition( self.root, [1,-1,-1]) + vTemp = transform.getOffsetPosition(self.root, [1, -1, -1]) self.outpivot = self.addLoc("outpivot", self.root, vTemp) - vTemp = tra.getOffsetPosition( self.root, [-1,-1,-1]) + vTemp = transform.getOffsetPosition(self.root, [-1, -1, -1]) self.inpivot = self.addLoc("inpivot", self.root, vTemp) - self.dispcrv = self.addDispCurve("1", [self.root, self.heel, self.outpivot, self.heel, self.inpivot]) + cnt = [self.root, self.heel, self.outpivot, self.heel, self.inpivot] + self.dispcrv = self.addDispCurve("1", cnt) - # ===================================================== - ## Add more parameter to the parameter definition list. - # @param self def addParameters(self): + """Add the configurations settings""" - self.pRoll = self.addParam("useRollCtl", "bool", True) - self.pUseIndex = self.addParam("useIndex", "bool", False) - self.pParentJointIndex = self.addParam("parentJointIndex", "long", -1, None, None) + self.pRoll = self.addParam("useRollCtl", "bool", True) + self.pUseIndex = self.addParam("useIndex", "bool", False) + self.pParentJointIndex = self.addParam( + "parentJointIndex", "long", -1, None, None) ########################################################## @@ -112,23 +83,24 @@ def addParameters(self): ########################################################## class settingsTab(QtWidgets.QDialog, sui.Ui_Form): + """The Component settings UI""" def __init__(self, parent=None): super(settingsTab, self).__init__(parent) self.setupUi(self) -class componentSettings(MayaQWidgetDockableMixin, componentMainSettings): +class componentSettings(MayaQWidgetDockableMixin, guide.componentMainSettings): + """Create the component setting window""" - def __init__(self, parent = None): + def __init__(self, parent=None): self.toolName = TYPE # Delete old instances of the componet settings window. - gqt.deleteInstances(self, MayaQDockWidget) + pyqt.deleteInstances(self, MayaQDockWidget) - super(self.__class__, self).__init__(parent = parent) + super(self.__class__, self).__init__(parent=parent) self.settingsTab = settingsTab() - self.setup_componentSettingWindow() self.create_componentControls() self.populate_componentControls() @@ -136,7 +108,7 @@ def __init__(self, parent = None): self.create_componentConnections() def setup_componentSettingWindow(self): - self.mayaMainWindow = gqt.maya_main_window() + self.mayaMainWindow = pyqt.maya_main_window() self.setObjectName(self.toolName) self.setWindowFlags(QtCore.Qt.Window) @@ -146,31 +118,34 @@ def setup_componentSettingWindow(self): def create_componentControls(self): return - def populate_componentControls(self): - """ - Populate the controls values from the custom attributes of the component. + """Populate Controls + + Populate the controls values from the custom attributes of the + component. """ - #populate tab + # populate tab self.tabs.insertTab(1, self.settingsTab, "Component Settings") - #populate component settings + # populate component settings self.populateCheck(self.settingsTab.useRollCtl_checkBox, "useRollCtl") - #populate connections in main settings + # populate connections in main settings for cnx in Guide.connectors: self.mainSettingsTab.connector_comboBox.addItem(cnx) - self.connector_items = [ self.mainSettingsTab.connector_comboBox.itemText(i) for i in range( self.mainSettingsTab.connector_comboBox.count())] + cBox = self.mainSettingsTab.connector_comboBox + self.connector_items = [cBox.itemText(i) for i in range(cBox.count())] currentConnector = self.root.attr("connector").get() if currentConnector not in self.connector_items: self.mainSettingsTab.connector_comboBox.addItem(currentConnector) self.connector_items.append(currentConnector) - pm.displayWarning("The current connector: %s, is not a valid connector for this component. Build will Fail!!") + pm.displayWarning("The current connector: %s, is not a valid " + "connector for this component. " + "Build will Fail!!") comboIndex = self.connector_items.index(currentConnector) self.mainSettingsTab.connector_comboBox.setCurrentIndex(comboIndex) - def create_componentLayout(self): self.settings_layout = QtWidgets.QVBoxLayout() @@ -181,9 +156,14 @@ def create_componentLayout(self): def create_componentConnections(self): - self.settingsTab.useRollCtl_checkBox.stateChanged.connect(partial(self.updateCheck, self.settingsTab.useRollCtl_checkBox, "neutralpose")) - self.mainSettingsTab.connector_comboBox.currentIndexChanged.connect(partial(self.updateConnector, self.mainSettingsTab.connector_comboBox, self.connector_items) ) - + self.settingsTab.useRollCtl_checkBox.stateChanged.connect( + partial(self.updateCheck, + self.settingsTab.useRollCtl_checkBox, + "neutralpose")) + self.mainSettingsTab.connector_comboBox.currentIndexChanged.connect( + partial(self.updateConnector, + self.mainSettingsTab.connector_comboBox, + self.connector_items)) def dockCloseEventTriggered(self): - gqt.deleteInstances(self, MayaQDockWidget) + pyqt.deleteInstances(self, MayaQDockWidget) diff --git a/scripts/mgear/maya/shifter/component/hydraulic_01/__init__.py b/scripts/mgear/maya/shifter/component/hydraulic_01/__init__.py index af4db59..705a009 100644 --- a/scripts/mgear/maya/shifter/component/hydraulic_01/__init__.py +++ b/scripts/mgear/maya/shifter/component/hydraulic_01/__init__.py @@ -1,135 +1,151 @@ -# MGEAR is under the terms of the MIT License +"""Component Hydraulic 01 module""" -# Copyright (c) 2016 Jeremie Passerin, Miquel Campos +from mgear.maya.shifter import component +from mgear.maya import attribute, transform, primitive, applyop -# Permission is hereby granted, free of charge, to any person obtaining a copy -# of this software and associated documentation files (the "Software"), to deal -# in the Software without restriction, including without limitation the rights -# to use, copy, modify, merge, publish, distribute, sublicense, and/or sell -# copies of the Software, and to permit persons to whom the Software is -# furnished to do so, subject to the following conditions: - -# The above copyright notice and this permission notice shall be included in all -# copies or substantial portions of the Software. - -# THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR -# IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, -# FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE -# AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER -# LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, -# OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE -# SOFTWARE. - -# Author: Jeremie Passerin geerem@hotmail.com www.jeremiepasserin.com -# Author: Miquel Campos hello@miquel-campos.com www.miquel-campos.com -# Date: 2016 / 10 / 10 ########################################################## -# GLOBAL +# COMPONENT ########################################################## -# mgear -from mgear.maya.shifter.component import MainComponent -import mgear.maya.primitive as pri -import mgear.maya.transform as tra -import mgear.maya.attribute as att -import mgear.maya.applyop as aop - -########################################################## -# COMPONENT -########################################################## -## The main component class. -class Component(MainComponent): +class Component(component.Main): + """Shifter component Class""" # ===================================================== # OBJECTS # ===================================================== - ## Add all the objects needed to create the component. - # @param self def addObjects(self): + """Add all the objects needed to create the component.""" - self.normal = self.guide.blades["blade"].z*-1 + self.normal = self.guide.blades["blade"].z * -1 self.binormal = self.guide.blades["blade"].x - t = tra.getTransformLookingAt(self.guide.apos[0], self.guide.apos[1], self.normal, axis="yx", negate=self.negate) - - self.ctl_npo = pri.addTransform(self.root, self.getName("ctl_npo"), t) - self.ctl = self.addCtl(self.ctl_npo, "base_ctl", t, self.color_ik, "square", w=1.0, tp=self.parentCtlTag) - att.setKeyableAttributes(self.ctl, self.tr_params) - - self.ref_base = pri.addTransform(self.ctl, self.getName("ref_base"), t) - - t = tra.setMatrixPosition(t, self.guide.apos[1]) - self.ik_cns = pri.addTransform(self.root, self.getName("ik_cns"), t) - self.tip_npo = pri.addTransform(self.ik_cns, self.getName("tip_npo"), t) - self.tip_ctl = self.addCtl(self.tip_npo, "tip_ctl", t, self.color_ik, "square", w=1.0, tp=self.ctl) - att.setKeyableAttributes(self.tip_ctl, self.tr_params) - - self.ref_tip = pri.addTransform(self.tip_ctl, self.getName("ref_tip"), t) + t = transform.getTransformLookingAt(self.guide.apos[0], + self.guide.apos[1], + self.normal, + axis="yx", + negate=self.negate) + + self.ctl_npo = primitive.addTransform( + self.root, self.getName("ctl_npo"), t) + self.ctl = self.addCtl(self.ctl_npo, + "base_ctl", + t, + self.color_ik, + "square", + w=1.0, + tp=self.parentCtlTag) + attribute.setKeyableAttributes(self.ctl, self.tr_params) + + self.ref_base = primitive.addTransform( + self.ctl, self.getName("ref_base"), t) + + t = transform.setMatrixPosition(t, self.guide.apos[1]) + self.ik_cns = primitive.addTransform( + self.root, self.getName("ik_cns"), t) + self.tip_npo = primitive.addTransform( + self.ik_cns, self.getName("tip_npo"), t) + + self.tip_ctl = self.addCtl(self.tip_npo, + "tip_ctl", + t, + self.color_ik, + "square", + w=1.0, + tp=self.ctl) + + attribute.setKeyableAttributes(self.tip_ctl, self.tr_params) + + self.ref_tip = primitive.addTransform( + self.tip_ctl, self.getName("ref_tip"), t) self.div_cns = [] for i in range(self.settings["div"]): - div_cns = pri.addTransform(self.root, self.getName("div%s_loc" % i)) + div_cns = primitive.addTransform(self.root, + self.getName("div%s_loc" % i)) self.div_cns.append(div_cns) self.jnt_pos.append([div_cns, i]) - # ===================================================== - # PROPERTY + # ATTRIBUTES # ===================================================== - ## Add parameters to the anim and setup properties to control the component. - # @param self def addAttributes(self): + """Create the anim and setupr rig attributes for the component""" + # Ref if self.settings["ikrefarray"]: ref_names = self.settings["ikrefarray"].split(",") if len(ref_names) > 1: - self.ikref_att = self.addAnimEnumParam("ikref", "Ik Ref", 0, self.settings["ikrefarray"].split(",")) - + self.ikref_att = self.addAnimEnumParam( + "ikref", + "Ik Ref", + 0, + self.settings["ikrefarray"].split(",")) # ===================================================== # OPERATORS # ===================================================== - ## Apply operators, constraints, expressions to the hierarchy.\n - # In order to keep the code clean and easier to debug, - # we shouldn't create any new object in this method. - # @param self def addOperators(self): - aop.aimCns(self.ref_base, self.tip_ctl, axis="yx", wupType=2, wupVector=[1,0,0], wupObject=self.ctl, maintainOffset=False) - aop.aimCns(self.ref_tip, self.ctl, axis="-yx", wupType=2, wupVector=[1,0,0], wupObject=self.tip_ctl, maintainOffset=False) - bIncrement = 1.0/ (self.settings["div"]-1) - blend=0 + """Create operators and set the relations for the component rig + + Apply operators, constraints, expressions to the hierarchy. + In order to keep the code clean and easier to debug, + we shouldn't create any new object in this method. + + """ + applyop.aimCns(self.ref_base, + self.tip_ctl, + axis="yx", + wupType=2, + wupVector=[1, 0, 0], + wupObject=self.ctl, + maintainOffset=False) + applyop.aimCns(self.ref_tip, + self.ctl, + axis="-yx", + wupType=2, + wupVector=[1, 0, 0], + wupObject=self.tip_ctl, + maintainOffset=False) + + bIncrement = 1.0 / (self.settings["div"] - 1) + blend = 0 for i, div_cns in enumerate(self.div_cns): - intMatrix = aop.gear_intmatrix_op(self.ref_base.attr("worldMatrix"), self.ref_tip.attr("worldMatrix"), blend) - aop.gear_mulmatrix_op(intMatrix.attr("output"), div_cns.attr("parentInverseMatrix[0]"), div_cns) + intMatrix = applyop.gear_intmatrix_op( + self.ref_base.attr("worldMatrix"), + self.ref_tip.attr("worldMatrix"), + blend) - blend = blend+bIncrement + applyop.gear_mulmatrix_op(intMatrix.attr("output"), + div_cns.attr("parentInverseMatrix[0]"), + div_cns) + blend = blend + bIncrement # ===================================================== # CONNECTOR # ===================================================== - ## Set the relation beetween object from guide to rig.\n - # @param self def setRelation(self): + """Set the relation beetween object from guide to rig""" self.relatives["root"] = self.ref_base self.relatives["tip"] = self.ref_tip self.controlRelatives["root"] = self.ctl self.controlRelatives["tip"] = self.tip_ctl - for i in range(0, len(self.div_cns)-1): - self.relatives["%s_loc"%i] = self.div_cns[i+1] - self.jointRelatives["%s_loc"%i] = i+1 + for i in range(0, len(self.div_cns) - 1): + self.relatives["%s_loc" % i] = self.div_cns[i + 1] + self.jointRelatives["%s_loc" % i] = i + 1 + + self.relatives["%s_loc" % (len(self.div_cns) - 1)] = self.div_cns[-1] - self.relatives["%s_loc"%(len(self.div_cns)-1)] = self.div_cns[-1] - self.jointRelatives["%s_loc"%(len(self.div_cns)-1)] = len(self.div_cns)-1 + dlen = len(self.div_cns) - 1 + self.jointRelatives["%s_loc" % (len(self.div_cns) - 1)] = dlen - ## standard connection definition. - # @param self def connect_standard(self): + """standard connection definition for the component""" self.connect_standardWithSimpleIkRef() diff --git a/scripts/mgear/maya/shifter/component/hydraulic_01/guide.py b/scripts/mgear/maya/shifter/component/hydraulic_01/guide.py index fa190b1..40743c5 100644 --- a/scripts/mgear/maya/shifter/component/hydraulic_01/guide.py +++ b/scripts/mgear/maya/shifter/component/hydraulic_01/guide.py @@ -1,52 +1,21 @@ -# MGEAR is under the terms of the MIT License +"""Guide Hydraulic 01 module""" -# Copyright (c) 2016 Jeremie Passerin, Miquel Campos - -# Permission is hereby granted, free of charge, to any person obtaining a copy -# of this software and associated documentation files (the "Software"), to deal -# in the Software without restriction, including without limitation the rights -# to use, copy, modify, merge, publish, distribute, sublicense, and/or sell -# copies of the Software, and to permit persons to whom the Software is -# furnished to do so, subject to the following conditions: - -# The above copyright notice and this permission notice shall be included in all -# copies or substantial portions of the Software. - -# THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR -# IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, -# FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE -# AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER -# LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, -# OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE -# SOFTWARE. - -# Author: Jeremie Passerin geerem@hotmail.com www.jeremiepasserin.com -# Author: Miquel Campos hello@miquel-campos.com www.miquel-campos.com -# Date: 2016 / 10 / 10 - -########################################################## -# GLOBAL -########################################################## from functools import partial -# mgear -from mgear.maya.shifter.component.guide import ComponentGuide -import mgear.maya.transform as tra - +from mgear.maya.shifter.component import guide +from mgear.maya import transform, pyqt +from mgear.vendor.Qt import QtWidgets, QtCore -#Pyside -from mgear.maya.shifter.component.guide import componentMainSettings -import mgear.maya.pyqt as gqt from maya.app.general.mayaMixin import MayaQWidgetDockableMixin from maya.app.general.mayaMixin import MayaQDockWidget + import settingsUI as sui -QtGui, QtCore, QtWidgets, wrapInstance = gqt.qt_import() # guide info AUTHOR = "Jeremie Passerin, Miquel Campos" URL = "www.jeremiepasserin.com, www.miquletd.com" EMAIL = "geerem@hotmail.com, hello@miquel-campos.com" -VERSION = [1,0,0] +VERSION = [1, 0, 0] TYPE = "hydraulic_01" NAME = "hydraulic" DESCRIPTION = "Hydraulic component for mechanical rigging." @@ -54,7 +23,10 @@ ########################################################## # CLASS ########################################################## -class Guide(ComponentGuide): + + +class Guide(guide.ComponentGuide): + """Component Guide Class""" compType = TYPE compName = NAME @@ -65,37 +37,29 @@ class Guide(ComponentGuide): email = EMAIL version = VERSION - - # ===================================================== - ## - # @param self def postInit(self): + """Initialize the position for the guide""" self.save_transform = ["root", "tip"] self.save_blade = ["blade"] - # ===================================================== - ## Add more object to the object definition list. - # @param self def addObjects(self): + """Add the Guide Root, blade and locators""" self.root = self.addRoot() - vTemp = tra.getOffsetPosition( self.root, [2,0,0]) + vTemp = transform.getOffsetPosition(self.root, [2, 0, 0]) self.loc = self.addLoc("tip", self.root, vTemp) self.blade = self.addBlade("blade", self.root, self.loc) centers = [self.root, self.loc] self.dispcrv = self.addDispCurve("crv", centers) - - - # ===================================================== - ## Add more parameter to the parameter definition list. - # @param self def addParameters(self): + """Add the configurations settings""" - self.pRefArray = self.addParam("ikrefarray", "string", "") + self.pRefArray = self.addParam("ikrefarray", "string", "") self.pUseIndex = self.addParam("useIndex", "bool", False) - self.pParentJointIndex = self.addParam("parentJointIndex", "long", -1, None, None) + self.pParentJointIndex = self.addParam( + "parentJointIndex", "long", -1, None, None) self.pDiv = self.addParam("div", "long", 2, 2, None) @@ -103,24 +67,26 @@ def addParameters(self): # Setting Page ########################################################## + class settingsTab(QtWidgets.QDialog, sui.Ui_Form): + """The Component settings UI""" def __init__(self, parent=None): super(settingsTab, self).__init__(parent) self.setupUi(self) -class componentSettings(MayaQWidgetDockableMixin, componentMainSettings): +class componentSettings(MayaQWidgetDockableMixin, guide.componentMainSettings): + """Create the component setting window""" - def __init__(self, parent = None): + def __init__(self, parent=None): self.toolName = TYPE # Delete old instances of the componet settings window. - gqt.deleteInstances(self, MayaQDockWidget) + pyqt.deleteInstances(self, MayaQDockWidget) - super(self.__class__, self).__init__(parent = parent) + super(self.__class__, self).__init__(parent=parent) self.settingsTab = settingsTab() - self.setup_componentSettingWindow() self.create_componentControls() self.populate_componentControls() @@ -128,7 +94,7 @@ def __init__(self, parent = None): self.create_componentConnections() def setup_componentSettingWindow(self): - self.mayaMainWindow = gqt.maya_main_window() + self.mayaMainWindow = pyqt.maya_main_window() self.setObjectName(self.toolName) self.setWindowFlags(QtCore.Qt.Window) @@ -138,23 +104,23 @@ def setup_componentSettingWindow(self): def create_componentControls(self): return - def populate_componentControls(self): - """ - Populate the controls values from the custom attributes of the component. + """Populate Controls + + Populate the controls values from the custom attributes of the + component. """ - #populate tab + # populate tab self.tabs.insertTab(1, self.settingsTab, "Component Settings") - #populate component settings + # populate component settings self.settingsTab.div_spinBox.setValue(self.root.attr("div").get()) refArrayItems = self.root.attr("ikrefarray").get().split(",") for item in refArrayItems: self.settingsTab.refArray_listWidget.addItem(item) - def create_componentLayout(self): self.settings_layout = QtWidgets.QVBoxLayout() @@ -165,9 +131,16 @@ def create_componentLayout(self): def create_componentConnections(self): - self.settingsTab.div_spinBox.valueChanged.connect(partial(self.updateSpinBox, self.settingsTab.div_spinBox, "div")) - self.settingsTab.refArrayAdd_pushButton.clicked.connect(partial(self.addItem2listWidget, self.settingsTab.refArray_listWidget, "ikrefarray")) - self.settingsTab.refArrayRemove_pushButton.clicked.connect(partial(self.removeSelectedFromListWidget, self.settingsTab.refArray_listWidget, "ikrefarray")) + self.settingsTab.div_spinBox.valueChanged.connect( + partial(self.updateSpinBox, self.settingsTab.div_spinBox, "div")) + self.settingsTab.refArrayAdd_pushButton.clicked.connect( + partial(self.addItem2listWidget, + self.settingsTab.refArray_listWidget, + "ikrefarray")) + self.settingsTab.refArrayRemove_pushButton.clicked.connect( + partial(self.removeSelectedFromListWidget, + self.settingsTab.refArray_listWidget, + "ikrefarray")) self.settingsTab.refArray_listWidget.installEventFilter(self) def eventFilter(self, sender, event): @@ -179,4 +152,4 @@ def eventFilter(self, sender, event): return QtWidgets.QDialog.eventFilter(self, sender, event) def dockCloseEventTriggered(self): - gqt.deleteInstances(self, MayaQDockWidget) + pyqt.deleteInstances(self, MayaQDockWidget) From b260309382c8df7d39b71e4c4977bd18c1453bc3 Mon Sep 17 00:00:00 2001 From: miquelcampos Date: Wed, 22 Nov 2017 18:42:55 +0900 Subject: [PATCH 078/134] PEP8 #100 Shifter: remaining components WIP --- CONTRIBUTING.md | 4 + scripts/mGear_guidesTemplates.py | 2 +- .../arm_2jnt_freeTangents_01/__init__.py | 2 +- .../shifter/component/leg_2jnt_01/__init__.py | 671 ++++++---- .../leg_2jnt_freeTangents_01/__init__.py | 1102 ++++++++++------ .../shifter/component/leg_3jnt_01/__init__.py | 1106 ++++++++++++----- .../component/leg_ms_2jnt_01/__init__.py | 1067 +++++++++++----- .../shifter/component/meta_01/__init__.py | 135 +- .../shifter/component/mouth_01/__init__.py | 373 +++--- .../shifter/component/neck_ik_01/__init__.py | 543 +++++--- .../shifter/component/shoulder_01/__init__.py | 139 ++- .../component/shoulder_ms_01/__init__.py | 156 ++- .../shifter/component/spine_ik_01/__init__.py | 656 +++++++--- .../shifter/component/spine_ik_02/__init__.py | 674 +++++++--- .../component/squash4Sides_01/__init__.py | 144 +-- scripts/mgear/maya/shifter/gui.py | 2 +- 16 files changed, 4473 insertions(+), 2303 deletions(-) diff --git a/CONTRIBUTING.md b/CONTRIBUTING.md index c1fc774..c919295 100644 --- a/CONTRIBUTING.md +++ b/CONTRIBUTING.md @@ -8,6 +8,10 @@ We are refactoring all the code to [PEP8](https://www.python.org/dev/peps/pep-0008/) If you want to contribute please follow the PEP8 standard +#### Ignore PEP8 Errors + +"W503": [Break bfore aor after binary operator](https://www.python.org/dev/peps/pep-0008/#should-a-line-break-before-or-after-a-binary-operator) + #### Line break for long arguments ```python diff --git a/scripts/mGear_guidesTemplates.py b/scripts/mGear_guidesTemplates.py index edc0ad8..5e5fbb3 100644 --- a/scripts/mGear_guidesTemplates.py +++ b/scripts/mGear_guidesTemplates.py @@ -10,7 +10,7 @@ def guideUI(*args): gui.Guide_UI() -@utils.one_undo +# @utils.one_undo def buildFromSelection(*args): """Build the rig from the guide root selection or a component root""" gui.Guide_UI.buildFromSelection() diff --git a/scripts/mgear/maya/shifter/component/arm_2jnt_freeTangents_01/__init__.py b/scripts/mgear/maya/shifter/component/arm_2jnt_freeTangents_01/__init__.py index 1499cfe..142e1ff 100644 --- a/scripts/mgear/maya/shifter/component/arm_2jnt_freeTangents_01/__init__.py +++ b/scripts/mgear/maya/shifter/component/arm_2jnt_freeTangents_01/__init__.py @@ -1037,7 +1037,7 @@ def addOperators(self): self.volDriver_att = div_node2 + ".outputX" # connecting tangent scaele compensation after - # volume to aboid duplicate some nodes + # volume to avoid duplicate some nodes distA_node = node.createDistNode(self.tws0_loc, self.mid_ctl) distB_node = node.createDistNode(self.mid_ctl, self.tws2_loc) diff --git a/scripts/mgear/maya/shifter/component/leg_2jnt_01/__init__.py b/scripts/mgear/maya/shifter/component/leg_2jnt_01/__init__.py index 82c85c9..f72f90f 100644 --- a/scripts/mgear/maya/shifter/component/leg_2jnt_01/__init__.py +++ b/scripts/mgear/maya/shifter/component/leg_2jnt_01/__init__.py @@ -1,275 +1,478 @@ -# MGEAR is under the terms of the MIT License +"""Component Leg 2 joints 01 module""" -# Copyright (c) 2016 Jeremie Passerin, Miquel Campos - -# Permission is hereby granted, free of charge, to any person obtaining a copy -# of this software and associated documentation files (the "Software"), to deal -# in the Software without restriction, including without limitation the rights -# to use, copy, modify, merge, publish, distribute, sublicense, and/or sell -# copies of the Software, and to permit persons to whom the Software is -# furnished to do so, subject to the following conditions: - -# The above copyright notice and this permission notice shall be included in all -# copies or substantial portions of the Software. - -# THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR -# IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, -# FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE -# AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER -# LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, -# OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE -# SOFTWARE. - -# Author: Jeremie Passerin geerem@hotmail.com www.jeremiepasserin.com -# Author: Miquel Campos hello@miquel-campos.com www.miquel-campos.com -# Date: 2016 / 10 / 10 - -############################################# -# GLOBAL -############################################# -# Maya import pymel.core as pm -import pymel.core.datatypes as dt +from pymel.core import datatypes -# mgear -from mgear.maya.shifter.component import MainComponent +from mgear.maya.shifter import component -import mgear.maya.primitive as pri -import mgear.maya.transform as tra -import mgear.maya.attribute as att -import mgear.maya.node as nod -import mgear.maya.vector as vec -import mgear.maya.applyop as aop -import mgear.maya.fcurve as fcu +from mgear.maya import node, fcurve, applyop, vector +from mgear.maya import attribute, transform, primitive ############################################# # COMPONENT ############################################# -class Component(MainComponent): + +class Component(component.Main): + """Shifter component Class""" + + # ===================================================== + # OBJECTS + # ===================================================== def addObjects(self): + """Add all the objects needed to create the component.""" self.WIP = self.options["mode"] self.normal = self.getNormalFromPos(self.guide.apos) - self.length0 = vec.getDistance(self.guide.apos[0], self.guide.apos[1]) - self.length1 = vec.getDistance(self.guide.apos[1], self.guide.apos[2]) - self.length2 = vec.getDistance(self.guide.apos[2], self.guide.apos[3]) + self.length0 = vector.getDistance( + self.guide.apos[0], self.guide.apos[1]) + self.length1 = vector.getDistance( + self.guide.apos[1], self.guide.apos[2]) + self.length2 = vector.getDistance( + self.guide.apos[2], self.guide.apos[3]) # 1 bone chain for upv ref - self.legChainUpvRef= pri.add2DChain(self.root, self.getName("legUpvRef%s_jnt"), [self.guide.apos[0],self.guide.apos[2]], self.normal, False, self.WIP) - self.legChainUpvRef[1].setAttr("jointOrientZ", self.legChainUpvRef[1].getAttr("jointOrientZ")*-1) - - - #extra neutral pose - t = tra.getTransformFromPos(self.guide.apos[0]) - - self.root_npo = pri.addTransform(self.root, self.getName("root_npo"), t) - self.root_ctl = self.addCtl(self.root_npo, "root_ctl", t, self.color_fk, "circle", w=self.length0/6, tp=self.parentCtlTag) + self.legChainUpvRef = primitive.add2DChain( + self.root, + self.getName("legUpvRef%s_jnt"), + [self.guide.apos[0], self.guide.apos[2]], + self.normal, + False, + self.WIP) + + self.legChainUpvRef[1].setAttr( + "jointOrientZ", + self.legChainUpvRef[1].getAttr("jointOrientZ") * -1) + + # extra neutral pose + t = transform.getTransformFromPos(self.guide.apos[0]) + + self.root_npo = primitive.addTransform(self.root, + self.getName("root_npo"), + t) + self.root_ctl = self.addCtl(self.root_npo, + "root_ctl", + t, + self.color_fk, + "circle", + w=self.length0 / 6, + tp=self.parentCtlTag) # FK Controlers ----------------------------------- - t = tra.getTransformLookingAt(self.guide.apos[0], self.guide.apos[1], self.normal, "xz", self.negate) - self.fk0_npo = pri.addTransform(self.root_ctl, self.getName("fk0_npo"), t) - self.fk0_ctl = self.addCtl(self.fk0_npo, "fk0_ctl", t, self.color_fk, "cube", w=self.length0, h=self.size*.1, d=self.size*.1, po=dt.Vector(.5*self.length0*self.n_factor,0,0), tp=self.root_ctl) - att.setKeyableAttributes(self.fk0_ctl, ["tx", "ty", "tz", "ro", "rx", "ry", "rz", "sx"]) - - t = tra.getTransformLookingAt(self.guide.apos[1], self.guide.apos[2], self.normal, "xz", self.negate) - self.fk1_npo = pri.addTransform(self.fk0_ctl, self.getName("fk1_npo"), t) - self.fk1_ctl = self.addCtl(self.fk1_npo, "fk1_ctl", t, self.color_fk, "cube", w=self.length1, h=self.size*.1, d=self.size*.1, po=dt.Vector(.5*self.length1*self.n_factor,0,0), tp=self.fk0_ctl) - att.setKeyableAttributes(self.fk1_ctl, ["tx", "ty", "tz", "ro", "rx", "ry", "rz", "sx"]) - - t = tra.getTransformLookingAt(self.guide.apos[2], self.guide.apos[3], self.normal, "xz", self.negate) - self.fk2_npo = pri.addTransform(self.fk1_ctl, self.getName("fk2_npo"), t) - self.fk2_ctl = self.addCtl(self.fk2_npo, "fk2_ctl", t, self.color_fk, "cube", w=self.length2, h=self.size*.1, d=self.size*.1, po=dt.Vector(.5*self.length2*self.n_factor,0,0), tp=self.fk1_ctl) - att.setKeyableAttributes(self.fk2_ctl) + t = transform.getTransformLookingAt(self.guide.apos[0], + self.guide.apos[1], + self.normal, + "xz", + self.negate) + self.fk0_npo = primitive.addTransform(self.root_ctl, + self.getName("fk0_npo"), + t) + po_vec = datatypes.Vector(.5 * self.length0 * self.n_factor, 0, 0) + self.fk0_ctl = self.addCtl(self.fk0_npo, + "fk0_ctl", + t, + self.color_fk, + "cube", + w=self.length0, + h=self.size * .1, + d=self.size * .1, + po=po_vec, + tp=self.root_ctl) + attribute.setKeyableAttributes( + self.fk0_ctl, ["tx", "ty", "tz", "ro", "rx", "ry", "rz", "sx"]) + + t = transform.getTransformLookingAt(self.guide.apos[1], + self.guide.apos[2], + self.normal, + "xz", + self.negate) + + self.fk1_npo = primitive.addTransform( + self.fk0_ctl, self.getName("fk1_npo"), t) + + po_vec = datatypes.Vector(.5 * self.length1 * self.n_factor, 0, 0) + self.fk1_ctl = self.addCtl(self.fk1_npo, + "fk1_ctl", + t, + self.color_fk, + "cube", + w=self.length1, + h=self.size * .1, + d=self.size * .1, + po=po_vec, + tp=self.fk0_ctl) + + attribute.setKeyableAttributes( + self.fk1_ctl, ["tx", "ty", "tz", "ro", "rx", "ry", "rz", "sx"]) + + t = transform.getTransformLookingAt(self.guide.apos[2], + self.guide.apos[3], + self.normal, + "xz", + self.negate) + + self.fk2_npo = primitive.addTransform( + self.fk1_ctl, self.getName("fk2_npo"), t) + + po_vec = datatypes.Vector(.5 * self.length2 * self.n_factor, 0, 0) + self.fk2_ctl = self.addCtl(self.fk2_npo, + "fk2_ctl", + t, + self.color_fk, + "cube", + w=self.length2, + h=self.size * .1, + d=self.size * .1, + po=po_vec, + tp=self.fk1_ctl) + attribute.setKeyableAttributes(self.fk2_ctl) self.fk_ctl = [self.fk0_ctl, self.fk1_ctl, self.fk2_ctl] - for x in self.fk_ctl: - att.setInvertMirror(x, ["tx", "ty", "tz"]) + for x in self.fk_ctl: + attribute.setInvertMirror(x, ["tx", "ty", "tz"]) # IK Controlers ----------------------------------- - self.ik_cns = pri.addTransformFromPos(self.root_ctl, self.getName("ik_cns"), self.guide.pos["ankle"]) - - self.ikcns_ctl = self.addCtl(self.ik_cns, "ikcns_ctl", tra.getTransformFromPos(self.guide.pos["ankle"]), self.color_ik, "null", w=self.size*.12, tp=self.root_ctl) - att.setInvertMirror(self.ikcns_ctl, ["tx"]) - - m = tra.getTransformLookingAt(self.guide.pos["ankle"], self.guide.pos["eff"], self.x_axis, "zx", False) - self.ik_ctl = self.addCtl(self.ikcns_ctl, "ik_ctl", tra.getTransformFromPos(self.guide.pos["ankle"]), self.color_ik, "cube", w=self.size*.12, h=self.size*.12, d=self.size*.12, tp=self.ikcns_ctl) - att.setKeyableAttributes(self.ik_ctl) - att.setRotOrder(self.ik_ctl, "XZY") - att.setInvertMirror(self.ik_ctl, ["tx", "ry", "rz"]) + self.ik_cns = primitive.addTransformFromPos(self.root_ctl, + self.getName("ik_cns"), + self.guide.pos["ankle"]) + + self.ikcns_ctl = self.addCtl( + self.ik_cns, + "ikcns_ctl", + transform.getTransformFromPos(self.guide.pos["ankle"]), + self.color_ik, + "null", + w=self.size * .12, + tp=self.root_ctl) + attribute.setInvertMirror(self.ikcns_ctl, ["tx"]) + + m = transform.getTransformLookingAt(self.guide.pos["ankle"], + self.guide.pos["eff"], + self.x_axis, + "zx", + False) + + self.ik_ctl = self.addCtl( + self.ikcns_ctl, + "ik_ctl", + transform.getTransformFromPos(self.guide.pos["ankle"]), + self.color_ik, + "cube", + w=self.size * .12, + h=self.size * .12, + d=self.size * .12, + tp=self.ikcns_ctl) + attribute.setKeyableAttributes(self.ik_ctl) + attribute.setRotOrder(self.ik_ctl, "XZY") + attribute.setInvertMirror(self.ik_ctl, ["tx", "ry", "rz"]) # upv v = self.guide.apos[2] - self.guide.apos[0] v = self.normal ^ v v.normalize() - v *= self.size*.5 + v *= self.size * .5 v += self.guide.apos[1] - self.upv_cns = pri.addTransformFromPos(self.ik_ctl, self.getName("upv_cns"), v) - - self.upv_ctl = self.addCtl(self.upv_cns, "upv_ctl", tra.getTransform(self.upv_cns), self.color_ik, "diamond", w=self.size*.12, tp=self.root_ctl) + self.upv_cns = primitive.addTransformFromPos(self.ik_ctl, + self.getName("upv_cns"), + v) + + self.upv_ctl = self.addCtl( + self.upv_cns, + "upv_ctl", + transform.getTransform(self.upv_cns), + self.color_ik, + "diamond", + w=self.size * .12, + tp=self.root_ctl) if self.settings["mirrorMid"]: if self.negate: self.upv_cns.rz.set(180) self.upv_cns.sy.set(-1) else: - att.setInvertMirror(self.upv_ctl, ["tx"]) - att.setKeyableAttributes(self.upv_ctl, self.t_params) + attribute.setInvertMirror(self.upv_ctl, ["tx"]) + attribute.setKeyableAttributes(self.upv_ctl, self.t_params) # References -------------------------------------- - self.ik_ref = pri.addTransform(self.ik_ctl, self.getName("ik_ref"), tra.getTransform(self.ik_ctl)) - self.fk_ref = pri.addTransform(self.fk_ctl[2], self.getName("fk_ref"), tra.getTransform(self.ik_ctl)) + self.ik_ref = primitive.addTransform( + self.ik_ctl, + self.getName("ik_ref"), + transform.getTransform(self.ik_ctl)) + self.fk_ref = primitive.addTransform( + self.fk_ctl[2], + self.getName("fk_ref"), + transform.getTransform(self.ik_ctl)) # Chain -------------------------------------------- # The outputs of the ikfk2bone solver - self.bone0 = pri.addLocator(self.root_ctl, self.getName("0_bone"), tra.getTransform(self.fk_ctl[0])) + self.bone0 = primitive.addLocator( + self.root_ctl, + self.getName("0_bone"), + transform.getTransform(self.fk_ctl[0])) + self.bone0_shp = self.bone0.getShape() - self.bone0_shp.setAttr("localPositionX", self.n_factor*.5) + self.bone0_shp.setAttr("localPositionX", self.n_factor * .5) self.bone0_shp.setAttr("localScale", .5, 0, 0) self.bone0.setAttr("sx", self.length0) self.bone0.setAttr("visibility", False) - self.bone1 = pri.addLocator(self.root_ctl, self.getName("1_bone"), tra.getTransform(self.fk_ctl[1])) + self.bone1 = primitive.addLocator( + self.root_ctl, + self.getName("1_bone"), + transform.getTransform(self.fk_ctl[1])) self.bone1_shp = self.bone1.getShape() - self.bone1_shp.setAttr("localPositionX", self.n_factor*.5) + self.bone1_shp.setAttr("localPositionX", self.n_factor * .5) self.bone1_shp.setAttr("localScale", .5, 0, 0) self.bone1.setAttr("sx", self.length1) self.bone1.setAttr("visibility", False) - self.ctrn_loc = pri.addTransformFromPos(self.root_ctl, self.getName("ctrn_loc"), self.guide.apos[1]) - self.eff_loc = pri.addTransformFromPos(self.root_ctl, self.getName("eff_loc"), self.guide.apos[2]) + self.ctrn_loc = primitive.addTransformFromPos(self.root_ctl, + self.getName("ctrn_loc"), + self.guide.apos[1]) + self.eff_loc = primitive.addTransformFromPos(self.root_ctl, + self.getName("eff_loc"), + self.guide.apos[2]) # tws_ref - t = tra.getRotationFromAxis(dt.Vector(0,-1,0), self.normal, "xz", self.negate) - t = tra.setMatrixPosition(t, self.guide.pos["ankle"]) + t = transform.getRotationFromAxis( + datatypes.Vector(0, -1, 0), self.normal, "xz", self.negate) + t = transform.setMatrixPosition(t, self.guide.pos["ankle"]) - self.tws_ref = pri.addTransform(self.eff_loc, self.getName("tws_ref"), t) + self.tws_ref = primitive.addTransform( + self.eff_loc, self.getName("tws_ref"), t) # Mid Controler ------------------------------------ - t = tra.getTransform(self.ctrn_loc) - self.mid_cns = pri.addTransform(self.ctrn_loc, self.getName("mid_cns"), t) - self.mid_ctl = self.addCtl(self.mid_cns, "mid_ctl", t, self.color_ik, "sphere", w=self.size*.2, tp=self.root_ctl) + t = transform.getTransform(self.ctrn_loc) + self.mid_cns = primitive.addTransform( + self.ctrn_loc, self.getName("mid_cns"), t) + self.mid_ctl = self.addCtl(self.mid_cns, + "mid_ctl", + t, + self.color_ik, + "sphere", + w=self.size * .2, + tp=self.root_ctl) + if self.settings["mirrorMid"]: if self.negate: self.mid_cns.rz.set(180) self.mid_cns.sz.set(-1) else: - att.setInvertMirror(self.mid_ctl, ["tx", "ty", "tz"]) + attribute.setInvertMirror(self.mid_ctl, ["tx", "ty", "tz"]) # Twist references --------------------------------- - x = dt.Vector(0,-1,0) - x = x * tra.getTransform(self.eff_loc) - z = dt.Vector(self.normal.x,self.normal.y,self.normal.z) - z = z * tra.getTransform(self.eff_loc) - - m = tra.getRotationFromAxis(x, z, "xz", self.negate) - m = tra.setMatrixPosition(m, tra.getTranslation(self.ik_ctl)) - - self.rollRef = pri.add2DChain(self.root, self.getName("rollChain"), self.guide.apos[:2], self.normal, self.negate, self.WIP) - - self.tws0_loc = pri.addTransform(self.rollRef[0], self.getName("tws0_loc"), tra.getTransform(self.fk_ctl[0])) - self.tws0_rot = pri.addTransform(self.tws0_loc, self.getName("tws0_rot"), tra.getTransform(self.fk_ctl[0])) - - self.tws1_loc = pri.addTransform(self.ctrn_loc, self.getName("tws1_loc"), tra.getTransform(self.ctrn_loc)) - self.tws1_rot = pri.addTransform(self.tws1_loc, self.getName("tws1_rot"), tra.getTransform(self.ctrn_loc)) + x = datatypes.Vector(0, -1, 0) + x = x * transform.getTransform(self.eff_loc) + z = datatypes.Vector(self.normal.x, self.normal.y, self.normal.z) + z = z * transform.getTransform(self.eff_loc) + + m = transform.getRotationFromAxis(x, z, "xz", self.negate) + m = transform.setMatrixPosition( + m, transform.getTranslation(self.ik_ctl)) + + self.rollRef = primitive.add2DChain(self.root, + self.getName("rollChain"), + self.guide.apos[:2], + self.normal, + self.negate, + self.WIP) + + self.tws0_loc = primitive.addTransform( + self.rollRef[0], + self.getName("tws0_loc"), + transform.getTransform(self.fk_ctl[0])) + + self.tws0_rot = primitive.addTransform( + self.tws0_loc, + self.getName("tws0_rot"), + transform.getTransform(self.fk_ctl[0])) + + self.tws1_loc = primitive.addTransform( + self.ctrn_loc, + self.getName("tws1_loc"), + transform.getTransform(self.ctrn_loc)) + + self.tws1_rot = primitive.addTransform( + self.tws1_loc, + self.getName("tws1_rot"), + transform.getTransform(self.ctrn_loc)) + + self.tws2_loc = primitive.addTransform( + self.root_ctl, + self.getName("tws2_loc"), + transform.getTransform(self.tws_ref)) + + self.tws2_rot = primitive.addTransform( + self.tws2_loc, + self.getName("tws2_rot"), + transform.getTransform(self.tws_ref)) - self.tws2_loc = pri.addTransform(self.root_ctl, self.getName("tws2_loc"), tra.getTransform(self.tws_ref)) - self.tws2_rot = pri.addTransform(self.tws2_loc, self.getName("tws2_rot"), tra.getTransform(self.tws_ref)) self.tws2_rot.setAttr("sx", .001) # Divisions ---------------------------------------- - # We have at least one division at the start, the end and one for the elbow. + 2 for knee angle control + # We have at least one division at the start, the end and one for + # the elbow. + 2 for knee angle control self.divisions = self.settings["div0"] + self.settings["div1"] + 3 + 2 self.div_cns = [] for i in range(self.divisions): - div_cns = pri.addTransform(self.root_ctl, self.getName("div%s_loc" % i)) + div_cns = primitive.addTransform(self.root_ctl, + self.getName("div%s_loc" % i)) self.div_cns.append(div_cns) self.jnt_pos.append([div_cns, i]) # End reference ------------------------------------ # To help the deformation on the ankle - self.end_ref = pri.addTransform(self.tws2_rot, self.getName("end_ref"), m) + self.end_ref = primitive.addTransform(self.tws2_rot, + self.getName("end_ref"), m) self.jnt_pos.append([self.end_ref, 'end']) - # match IK FK references - self.match_fk0_off = pri.addTransform(self.root, self.getName("matchFk0_npo"), tra.getTransform(self.fk_ctl[1])) - self.match_fk0 = pri.addTransform(self.match_fk0_off, self.getName("fk0_mth"), tra.getTransform(self.fk_ctl[0])) - self.match_fk1_off = pri.addTransform(self.root, self.getName("matchFk1_npo"), tra.getTransform(self.fk_ctl[2])) - self.match_fk1 = pri.addTransform(self.match_fk1_off, self.getName("fk1_mth"), tra.getTransform(self.fk_ctl[1])) - self.match_fk2 = pri.addTransform(self.ik_ctl, self.getName("fk2_mth"), tra.getTransform(self.fk_ctl[2])) - - self.match_ik = pri.addTransform(self.fk2_ctl, self.getName("ik_mth"), tra.getTransform(self.ik_ctl)) - self.match_ikUpv = pri.addTransform(self.fk0_ctl, self.getName("upv_mth"), tra.getTransform(self.upv_ctl)) + self.match_fk0_off = primitive.addTransform( + self.root, + self.getName("matchFk0_npo"), + transform.getTransform(self.fk_ctl[1])) + + self.match_fk0 = primitive.addTransform( + self.match_fk0_off, + self.getName("fk0_mth"), + transform.getTransform(self.fk_ctl[0])) + + self.match_fk1_off = primitive.addTransform( + self.root, + self.getName("matchFk1_npo"), + transform.getTransform(self.fk_ctl[2])) + + self.match_fk1 = primitive.addTransform( + self.match_fk1_off, + self.getName("fk1_mth"), + transform.getTransform(self.fk_ctl[1])) + + self.match_fk2 = primitive.addTransform( + self.ik_ctl, + self.getName("fk2_mth"), + transform.getTransform(self.fk_ctl[2])) + + self.match_ik = primitive.addTransform( + self.fk2_ctl, + self.getName("ik_mth"), + transform.getTransform(self.ik_ctl)) + + self.match_ikUpv = primitive.addTransform( + self.fk0_ctl, + self.getName("upv_mth"), + transform.getTransform(self.upv_ctl)) def addAttributes(self): # Anim ------------------------------------------- - self.blend_att = self.addAnimParam("blend", "Fk/Ik Blend", "double", self.settings["blend"], 0, 1) - self.roll_att = self.addAnimParam("roll", "Roll", "double", 0, -180, 180) - - self.scale_att = self.addAnimParam("ikscale", "Scale", "double", 1, .001, 99) - self.maxstretch_att = self.addAnimParam("maxstretch", "Max Stretch", "double", 1.5, 1, 99) - self.slide_att = self.addAnimParam("slide", "Slide", "double", .5, 0, 1) - self.softness_att = self.addAnimParam("softness", "Softness", "double", 0, 0, 1) - self.reverse_att = self.addAnimParam("reverse", "Reverse", "double", 0, 0, 1) - self.roundness_att = self.addAnimParam("roundness", "Roundness", "double", 0, 0, self.size) - self.volume_att = self.addAnimParam("volume", "Volume", "double", 1, 0, 1) + self.blend_att = self.addAnimParam( + "blend", "Fk/Ik Blend", "double", self.settings["blend"], 0, 1) + self.roll_att = self.addAnimParam( + "roll", "Roll", "double", 0, -180, 180) + self.scale_att = self.addAnimParam( + "ikscale", "Scale", "double", 1, .001, 99) + self.maxstretch_att = self.addAnimParam( + "maxstretch", "Max Stretch", "double", 1.5, 1, 99) + self.slide_att = self.addAnimParam( + "slide", "Slide", "double", .5, 0, 1) + self.softness_att = self.addAnimParam( + "softness", "Softness", "double", 0, 0, 1) + self.reverse_att = self.addAnimParam( + "reverse", "Reverse", "double", 0, 0, 1) + self.roundness_att = self.addAnimParam( + "roundness", "Roundness", "double", 0, 0, self.size) + self.volume_att = self.addAnimParam( + "volume", "Volume", "double", 1, 0, 1) # Ref if self.settings["ikrefarray"]: ref_names = self.settings["ikrefarray"].split(",") if len(ref_names) > 1: - self.ikref_att = self.addAnimEnumParam("ikref", "Ik Ref", 0, self.settings["ikrefarray"].split(",")) + self.ikref_att = self.addAnimEnumParam( + "ikref", + "Ik Ref", + 0, + self.settings["ikrefarray"].split(",")) ref_names = ["Auto", "ikFoot"] if self.settings["upvrefarray"]: ref_names = ref_names + self.settings["upvrefarray"].split(",") - self.upvref_att = self.addAnimEnumParam("upvref", "UpV Ref", 0, ref_names) + self.upvref_att = self.addAnimEnumParam( + "upvref", "UpV Ref", 0, ref_names) if self.settings["pinrefarray"]: - ref_names = self.settings["pinrefarray" ].split(",") + ref_names = self.settings["pinrefarray"].split(",") ref_names = ["Auto"] + ref_names if len(ref_names) > 1: - self.pin_att = self.addAnimEnumParam("kneeref", "Knee Ref", 0, ref_names) - + self.pin_att = self.addAnimEnumParam("kneeref", + "Knee Ref", + 0, + ref_names) # Setup ------------------------------------------ # Eval Fcurve - self.st_value = fcu.getFCurveValues(self.settings["st_profile"], self.divisions) - self.sq_value = fcu.getFCurveValues(self.settings["sq_profile"], self.divisions) + self.st_value = fcurve.getFCurveValues(self.settings["st_profile"], + self.divisions) + self.sq_value = fcurve.getFCurveValues(self.settings["sq_profile"], + self.divisions) + + self.st_att = [self.addSetupParam("stretch_%s" % i, + "Stretch %s" % i, + "double", self.st_value[i], -1, 0) + for i in range(self.divisions)] + self.sq_att = [self.addSetupParam("squash_%s" % i, + "Squash %s" % i, + "double", + self.sq_value[i], 0, 1) + for i in range(self.divisions)] + + self.resample_att = self.addSetupParam( + "resample", "Resample", "bool", True) + self.absolute_att = self.addSetupParam( + "absolute", "Absolute", "bool", False) - self.st_att = [ self.addSetupParam("stretch_%s"%i, "Stretch %s"%i, "double", self.st_value[i], -1, 0) for i in range(self.divisions) ] - self.sq_att = [ self.addSetupParam("squash_%s"%i, "Squash %s"%i, "double", self.sq_value[i], 0, 1) for i in range(self.divisions) ] + # ===================================================== + # OPERATORS + # ===================================================== + def addOperators(self): + """Create operators and set the relations for the component rig - self.resample_att = self.addSetupParam("resample", "Resample", "bool", True) - self.absolute_att = self.addSetupParam("absolute", "Absolute", "bool", False) + Apply operators, constraints, expressions to the hierarchy. + In order to keep the code clean and easier to debug, + we shouldn't create any new object in this method. - def addOperators(self): + """ - # 1 bone chain Upv ref ===================================================================================== - self.ikHandleUpvRef = pri.addIkHandle(self.root, self.getName("ikHandleLegChainUpvRef"), self.legChainUpvRef, "ikSCsolver") + # 1 bone chain Upv ref =========================== + self.ikHandleUpvRef = primitive.addIkHandle( + self.root, + self.getName("ikHandleLegChainUpvRef"), + self.legChainUpvRef, + "ikSCsolver") pm.pointConstraint(self.ik_ctl, self.ikHandleUpvRef) - pm.parentConstraint( self.legChainUpvRef[0], self.ik_ctl, self.upv_cns, mo=True) + pm.parentConstraint(self.legChainUpvRef[0], + self.ik_ctl, + self.upv_cns, + mo=True) # Visibilities ------------------------------------- - #shape.dispGeometry + # shape.dispGeometry # fk - fkvis_node = nod.createReverseNode(self.blend_att) + fkvis_node = node.createReverseNode(self.blend_att) for shp in self.fk0_ctl.getShapes(): - pm.connectAttr(fkvis_node+".outputX", shp.attr("visibility")) + pm.connectAttr(fkvis_node + ".outputX", shp.attr("visibility")) for shp in self.fk1_ctl.getShapes(): - pm.connectAttr(fkvis_node+".outputX", shp.attr("visibility")) + pm.connectAttr(fkvis_node + ".outputX", shp.attr("visibility")) for shp in self.fk2_ctl.getShapes(): - pm.connectAttr(fkvis_node+".outputX", shp.attr("visibility")) + pm.connectAttr(fkvis_node + ".outputX", shp.attr("visibility")) # ik for shp in self.upv_ctl.getShapes(): @@ -281,109 +484,134 @@ def addOperators(self): # IK Solver ----------------------------------------- out = [self.bone0, self.bone1, self.ctrn_loc, self.eff_loc] - node = aop.gear_ikfk2bone_op(out, self.root_ctl, self.ik_ref, self.upv_ctl, self.fk_ctl[0], self.fk_ctl[1], self.fk_ref, self.length0, self.length1, self.negate) - - pm.connectAttr(self.blend_att, node+".blend") + o_node = applyop.gear_ikfk2bone_op(out, + self.root_ctl, + self.ik_ref, + self.upv_ctl, + self.fk_ctl[0], + self.fk_ctl[1], + self.fk_ref, + self.length0, + self.length1, + self.negate) + + pm.connectAttr(self.blend_att, o_node + ".blend") if self.negate: mulVal = -1 else: mulVal = 1 - nod.createMulNode(self.roll_att, mulVal, node+".roll") - # pm.connectAttr(self.roll_att, node+".roll") - pm.connectAttr(self.scale_att, node+".scaleA") - pm.connectAttr(self.scale_att, node+".scaleB") - pm.connectAttr(self.maxstretch_att, node+".maxstretch") - pm.connectAttr(self.slide_att, node+".slide") - pm.connectAttr(self.softness_att, node+".softness") - pm.connectAttr(self.reverse_att, node+".reverse") + node.createMulNode(self.roll_att, mulVal, o_node + ".roll") + pm.connectAttr(self.scale_att, o_node + ".scaleA") + pm.connectAttr(self.scale_att, o_node + ".scaleB") + pm.connectAttr(self.maxstretch_att, o_node + ".maxstretch") + pm.connectAttr(self.slide_att, o_node + ".slide") + pm.connectAttr(self.softness_att, o_node + ".softness") + pm.connectAttr(self.reverse_att, o_node + ".reverse") # Twist references --------------------------------- - self.ikhArmRef, self.tmpCrv = aop.splineIK(self.getName("legRollRef"), self.rollRef, parent=self.root, cParent=self.bone0 ) - + self.ikhArmRef, self.tmpCrv = applyop.splineIK( + self.getName("legRollRef"), + self.rollRef, + parent=self.root, + cParent=self.bone0) pm.pointConstraint(self.mid_ctl, self.tws1_loc, maintainOffset=False) pm.scaleConstraint(self.mid_ctl, self.tws1_loc, maintainOffset=False) - aop.oriCns(self.mid_ctl, self.tws1_rot, maintainOffset=False) + applyop.oriCns(self.mid_ctl, self.tws1_rot, maintainOffset=False) pm.pointConstraint(self.eff_loc, self.tws2_loc, maintainOffset=False) pm.scaleConstraint(self.eff_loc, self.tws2_loc, maintainOffset=False) - aop.oriCns(self.bone1, self.tws2_loc, maintainOffset=False) + applyop.oriCns(self.bone1, self.tws2_loc, maintainOffset=False) - aop.oriCns(self.tws_ref, self.tws2_rot) + applyop.oriCns(self.tws_ref, self.tws2_rot) self.tws0_loc.setAttr("sx", .001) self.tws2_loc.setAttr("sx", .001) - add_node = nod.createAddNode(self.roundness_att, .001) - pm.connectAttr(add_node+".output", self.tws1_rot.attr("sx")) + add_node = node.createAddNode(self.roundness_att, .001) + pm.connectAttr(add_node + ".output", self.tws1_rot.attr("sx")) # Volume ------------------------------------------- - distA_node = nod.createDistNode(self.tws0_loc, self.tws1_loc) - distB_node = nod.createDistNode(self.tws1_loc, self.tws2_loc) - add_node = nod.createAddNode(distA_node+".distance", distB_node+".distance") - div_node = nod.createDivNode(add_node+".output", self.root_ctl.attr("sx")) - - #comp scaling issue + distA_node = node.createDistNode(self.tws0_loc, self.tws1_loc) + distB_node = node.createDistNode(self.tws1_loc, self.tws2_loc) + add_node = node.createAddNode(distA_node + ".distance", + distB_node + ".distance") + div_node = node.createDivNode(add_node + ".output", + self.root_ctl.attr("sx")) + + # comp scaling issue dm_node = pm.createNode("decomposeMatrix") - pm.connectAttr(self.root.attr("worldMatrix"), dm_node+".inputMatrix") - - div_node2 = nod.createDivNode(div_node+".outputX", dm_node+".outputScaleX") + pm.connectAttr(self.root.attr("worldMatrix"), dm_node + ".inputMatrix") + div_node2 = node.createDivNode(div_node + ".outputX", + dm_node + ".outputScaleX") - self.volDriver_att = div_node2+".outputX" + self.volDriver_att = div_node2 + ".outputX" # Divisions ---------------------------------------- - # at 0 or 1 the division will follow exactly the rotation of the controler.. and we wont have this nice tangent + roll + # at 0 or 1 the division will follow exactly the rotation of the + # controler.. and we wont have this nice tangent + roll for i, div_cns in enumerate(self.div_cns): subdiv = False - if i == len(self.div_cns)-1 or i == 0: + if i == len(self.div_cns) - 1 or i == 0: subdiv = 45 else: subdiv = 10 - - if i < (self.settings["div0"]+1): - perc = i*.5 / (self.settings["div0"]+1.0) + if i < (self.settings["div0"] + 1): + perc = i * .5 / (self.settings["div0"] + 1.0) elif i < (self.settings["div0"] + 2): perc = .49 subdiv = 45 - elif i < (self.settings["div0"] + 3 ): + elif i < (self.settings["div0"] + 3): perc = .50 subdiv = 45 - elif i < (self.settings["div0"] + 4 ): + elif i < (self.settings["div0"] + 4): perc = .51 subdiv = 45 else: - perc = .5 + (i-self.settings["div0"]-3.0)*.5 / (self.settings["div1"]+1.0) + perc = (.5 + + (i - self.settings["div0"] - 3.0) + * .5 + / (self.settings["div1"] + 1.0)) perc = max(.001, min(.999, perc)) # Roll if self.negate: - node = aop.gear_rollsplinekine_op(div_cns, [self.tws2_rot, self.tws1_rot, self.tws0_rot], 1-perc, subdiv) + o_node = applyop.gear_rollsplinekine_op( + div_cns, + [self.tws2_rot, self.tws1_rot, self.tws0_rot], + 1 - perc, + subdiv) else: - node = aop.gear_rollsplinekine_op(div_cns, [self.tws0_rot, self.tws1_rot, self.tws2_rot], perc, subdiv) + o_node = applyop.gear_rollsplinekine_op( + div_cns, + [self.tws0_rot, self.tws1_rot, self.tws2_rot], + perc, + subdiv) - pm.connectAttr(self.resample_att, node+".resample") - pm.connectAttr(self.absolute_att, node+".absolute") + pm.connectAttr(self.resample_att, o_node + ".resample") + pm.connectAttr(self.absolute_att, o_node + ".absolute") # Squash n Stretch - node = aop.gear_squashstretch2_op(div_cns, None, pm.getAttr(self.volDriver_att), "x") - pm.connectAttr(self.volume_att, node+".blend") - pm.connectAttr(self.volDriver_att, node+".driver") - pm.connectAttr(self.st_att[i], node+".stretch") - pm.connectAttr(self.sq_att[i], node+".squash") - - + o_node = applyop.gear_squashstretch2_op( + div_cns, None, pm.getAttr(self.volDriver_att), "x") + pm.connectAttr(self.volume_att, o_node + ".blend") + pm.connectAttr(self.volDriver_att, o_node + ".driver") + pm.connectAttr(self.st_att[i], o_node + ".stretch") + pm.connectAttr(self.sq_att[i], o_node + ".squash") # NOTE: next line fix the issue on meters. - # This is special case becasuse the IK solver from mGear use the scale as lenght and we have shear - # TODO: check for a more clean and elegant solution instead of re-match the world matrix again - # tra.matchWorldTransform(self.fk_ctl[0], self.match_fk0_off) - # tra.matchWorldTransform(self.fk_ctl[1], self.match_fk1_off) - # tra.matchWorldTransform(self.fk_ctl[0], self.match_fk0) - # tra.matchWorldTransform(self.fk_ctl[1], self.match_fk1) + # This is special case becasuse the IK solver from mGear use + # the scale as lenght and we have shear + # TODO: check for a more clean and elegant solution instead of + # re-match the world matrix again + # transform.matchWorldTransform(self.fk_ctl[0], self.match_fk0_off) + # transform.matchWorldTransform(self.fk_ctl[1], self.match_fk1_off) + # transform.matchWorldTransform(self.fk_ctl[0], self.match_fk0) + # transform.matchWorldTransform(self.fk_ctl[1], self.match_fk1) # match IK/FK ref pm.parentConstraint(self.bone0, self.match_fk0_off, mo=True) @@ -393,11 +621,10 @@ def addOperators(self): # ===================================================== # CONNECTOR # ===================================================== - ## Set the relation beetween object from guide to rig.\n - # @param self def setRelation(self): + """Set the relation beetween object from guide to rig""" self.relatives["root"] = self.div_cns[0] - self.relatives["knee"] = self.div_cns[self.settings["div0"] + 2] + self.relatives["knee"] = self.div_cns[self.settings["div0"] + 2] self.relatives["ankle"] = self.div_cns[-1] self.relatives["eff"] = self.end_ref @@ -409,19 +636,23 @@ def setRelation(self): self.jointRelatives["root"] = 0 self.jointRelatives["knee"] = self.settings["div0"] + 2 self.jointRelatives["ankle"] = len(self.div_cns) - self.jointRelatives["eff"] =len(self.div_cns) + self.jointRelatives["eff"] = len(self.div_cns) - ## standard connection definition. - # @param self - def connect_standard(self): + def addConnection(self): + """Add more connection definition to the set""" self.parent.addChild(self.root) # Set the Ik Reference self.connectRef(self.settings["ikrefarray"], self.ik_cns) if self.settings["upvrefarray"]: - self.connectRef("Auto,ikFoot,"+self.settings["upvrefarray"], self.upv_cns, True) + self.connectRef("Auto,ikFoot," + self.settings["upvrefarray"], + self.upv_cns, True) else: self.connectRef("Auto,ikFoot", self.upv_cns, True) if self.settings["pinrefarray"]: - self.connectRef2("Auto,"+ self.settings["pinrefarray"], self.mid_cns, self.pin_att, [self.ctrn_loc], False) + self.connectRef2("Auto," + self.settings["pinrefarray"], + self.mid_cns, + self.pin_att, + [self.ctrn_loc], + False) diff --git a/scripts/mgear/maya/shifter/component/leg_2jnt_freeTangents_01/__init__.py b/scripts/mgear/maya/shifter/component/leg_2jnt_freeTangents_01/__init__.py index c9349ee..2017b7e 100644 --- a/scripts/mgear/maya/shifter/component/leg_2jnt_freeTangents_01/__init__.py +++ b/scripts/mgear/maya/shifter/component/leg_2jnt_freeTangents_01/__init__.py @@ -1,244 +1,410 @@ -# MGEAR is under the terms of the MIT License +"""Component Leg 2 joints Free Tangents 01 module""" -# Copyright (c) 2016 Jeremie Passerin, Miquel Campos - -# Permission is hereby granted, free of charge, to any person obtaining a copy -# of this software and associated documentation files (the "Software"), to deal -# in the Software without restriction, including without limitation the rights -# to use, copy, modify, merge, publish, distribute, sublicense, and/or sell -# copies of the Software, and to permit persons to whom the Software is -# furnished to do so, subject to the following conditions: - -# The above copyright notice and this permission notice shall be included in all -# copies or substantial portions of the Software. - -# THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR -# IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, -# FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE -# AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER -# LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, -# OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE -# SOFTWARE. - -# Author: Jeremie Passerin geerem@hotmail.com www.jeremiepasserin.com -# Author: Miquel Campos hello@miquel-campos.com www.miquel-campos.com -# Date: 2016 / 10 / 10 - - -############################################# -# GLOBAL -############################################# -# Maya import pymel.core as pm -import pymel.core.datatypes as dt +from pymel.core import datatypes -# mgear -from mgear.maya.shifter.component import MainComponent +from mgear.maya.shifter import component -import mgear.maya.primitive as pri -import mgear.maya.transform as tra -import mgear.maya.attribute as att -import mgear.maya.node as nod -import mgear.maya.vector as vec -import mgear.maya.applyop as aop -import mgear.maya.fcurve as fcu +from mgear.maya import node, fcurve, applyop, vector +from mgear.maya import attribute, transform, primitive ############################################# # COMPONENT ############################################# -class Component(MainComponent): + +class Component(component.Main): + """Shifter component Class""" + + # ===================================================== + # OBJECTS + # ===================================================== def addObjects(self): + """Add all the objects needed to create the component.""" self.WIP = self.options["mode"] self.normal = self.getNormalFromPos(self.guide.apos) - self.length0 = vec.getDistance(self.guide.apos[0], self.guide.apos[1]) - self.length1 = vec.getDistance(self.guide.apos[1], self.guide.apos[2]) - self.length2 = vec.getDistance(self.guide.apos[2], self.guide.apos[3]) + self.length0 = vector.getDistance( + self.guide.apos[0], self.guide.apos[1]) + self.length1 = vector.getDistance( + self.guide.apos[1], self.guide.apos[2]) + self.length2 = vector.getDistance( + self.guide.apos[2], self.guide.apos[3]) # 1 bone chain for upv ref - self.legChainUpvRef= pri.add2DChain(self.root, self.getName("legUpvRef%s_jnt"), [self.guide.apos[0],self.guide.apos[2]], self.normal, False, self.WIP) - self.legChainUpvRef[1].setAttr("jointOrientZ", self.legChainUpvRef[1].getAttr("jointOrientZ")*-1) - - - - #extra neutral pose - t = tra.getTransformFromPos(self.guide.apos[0]) - - self.root_npo = pri.addTransform(self.root, self.getName("root_npo"), t) - self.root_ctl = self.addCtl(self.root_npo, "root_ctl", t, self.color_fk, "circle", w=self.length0/6, tp=self.parentCtlTag) + self.legChainUpvRef = primitive.add2DChain( + self.root, + self.getName("legUpvRef%s_jnt"), + [self.guide.apos[0], self.guide.apos[2]], + self.normal, + False, + self.WIP) + self.legChainUpvRef[1].setAttr( + "jointOrientZ", + self.legChainUpvRef[1].getAttr("jointOrientZ") * -1) + + # extra neutral pose + t = transform.getTransformFromPos(self.guide.apos[0]) + + self.root_npo = primitive.addTransform( + self.root, self.getName("root_npo"), t) + self.root_ctl = self.addCtl( + self.root_npo, + "root_ctl", + t, + self.color_fk, + "circle", + w=self.length0 / 6, + tp=self.parentCtlTag) # FK Controlers ----------------------------------- - t = tra.getTransformLookingAt(self.guide.apos[0], self.guide.apos[1], self.normal, "xz", self.negate) - self.fk0_npo = pri.addTransform(self.root_ctl, self.getName("fk0_npo"), t) - self.fk0_ctl = self.addCtl(self.fk0_npo, "fk0_ctl", t, self.color_fk, "cube", w=self.length0, h=self.size*.1, d=self.size*.1, po=dt.Vector(.5*self.length0*self.n_factor,0,0), tp=self.root_ctl) - att.setKeyableAttributes(self.fk0_ctl, ["tx", "ty", "tz", "ro", "rx", "ry", "rz", "sx"]) - - t = tra.getTransformLookingAt(self.guide.apos[1], self.guide.apos[2], self.normal, "xz", self.negate) - self.fk1_npo = pri.addTransform(self.fk0_ctl, self.getName("fk1_npo"), t) - self.fk1_ctl = self.addCtl(self.fk1_npo, "fk1_ctl", t, self.color_fk, "cube", w=self.length1, h=self.size*.1, d=self.size*.1, po=dt.Vector(.5*self.length1*self.n_factor,0,0), tp=self.fk0_ctl) - att.setKeyableAttributes(self.fk1_ctl, ["tx", "ty", "tz", "ro", "rx", "ry", "rz", "sx"]) - - t = tra.getTransformLookingAt(self.guide.apos[2], self.guide.apos[3], self.normal, "xz", self.negate) - self.fk2_npo = pri.addTransform(self.fk1_ctl, self.getName("fk2_npo"), t) - self.fk2_ctl = self.addCtl(self.fk2_npo, "fk2_ctl", t, self.color_fk, "cube", w=self.length2, h=self.size*.1, d=self.size*.1, po=dt.Vector(.5*self.length2*self.n_factor,0,0), tp=self.fk1_ctl) - att.setKeyableAttributes(self.fk2_ctl) + t = transform.getTransformLookingAt(self.guide.apos[0], + self.guide.apos[1], + self.normal, + "xz", + self.negate) + self.fk0_npo = primitive.addTransform( + self.root_ctl, self.getName("fk0_npo"), t) + self.fk0_ctl = self.addCtl( + self.fk0_npo, + "fk0_ctl", + t, + self.color_fk, + "cube", + w=self.length0, + h=self.size * .1, d=self.size * .1, + po=datatypes.Vector(.5 * self.length0 * self.n_factor, 0, 0), + tp=self.root_ctl) + attribute.setKeyableAttributes( + self.fk0_ctl, ["tx", "ty", "tz", "ro", "rx", "ry", "rz", "sx"]) + + t = transform.getTransformLookingAt(self.guide.apos[1], + self.guide.apos[2], + self.normal, + "xz", + self.negate) + self.fk1_npo = primitive.addTransform( + self.fk0_ctl, self.getName("fk1_npo"), t) + self.fk1_ctl = self.addCtl( + self.fk1_npo, + "fk1_ctl", + t, + self.color_fk, + "cube", + w=self.length1, + h=self.size * .1, + d=self.size * .1, + po=datatypes.Vector(.5 * self.length1 * self.n_factor, 0, 0), + tp=self.fk0_ctl) + + attribute.setKeyableAttributes( + self.fk1_ctl, ["tx", "ty", "tz", "ro", "rx", "ry", "rz", "sx"]) + + t = transform.getTransformLookingAt(self.guide.apos[2], + self.guide.apos[3], + self.normal, + "xz", + self.negate) + + self.fk2_npo = primitive.addTransform( + self.fk1_ctl, self.getName("fk2_npo"), t) + + self.fk2_ctl = self.addCtl( + self.fk2_npo, + "fk2_ctl", + t, + self.color_fk, + "cube", + w=self.length2, + h=self.size * .1, + d=self.size * .1, + po=datatypes.Vector(.5 * self.length2 * self.n_factor, 0, 0), + tp=self.fk1_ctl) + attribute.setKeyableAttributes(self.fk2_ctl) self.fk_ctl = [self.fk0_ctl, self.fk1_ctl, self.fk2_ctl] - for x in self.fk_ctl: - att.setInvertMirror(x, ["tx", "ty", "tz"]) + for x in self.fk_ctl: + attribute.setInvertMirror(x, ["tx", "ty", "tz"]) # IK Controlers ----------------------------------- - self.ik_cns = pri.addTransformFromPos(self.root_ctl, self.getName("ik_cns"), self.guide.pos["ankle"]) - - self.ikcns_ctl = self.addCtl(self.ik_cns, "ikcns_ctl", tra.getTransformFromPos(self.guide.pos["ankle"]), self.color_ik, "null", w=self.size*.12, tp=self.root_ctl) - att.setInvertMirror(self.ikcns_ctl, ["tx"]) - - m = tra.getTransformLookingAt(self.guide.pos["ankle"], self.guide.pos["eff"], self.x_axis, "zx", False) - self.ik_ctl = self.addCtl(self.ikcns_ctl, "ik_ctl", tra.getTransformFromPos(self.guide.pos["ankle"]), self.color_ik, "cube", w=self.size*.12, h=self.size*.12, d=self.size*.12, tp=self.ikcns_ctl) - att.setKeyableAttributes(self.ik_ctl) - att.setRotOrder(self.ik_ctl, "XZY") - att.setInvertMirror(self.ik_ctl, ["tx", "ry", "rz"]) + self.ik_cns = primitive.addTransformFromPos(self.root_ctl, + self.getName("ik_cns"), + self.guide.pos["ankle"]) + + self.ikcns_ctl = self.addCtl( + self.ik_cns, + "ikcns_ctl", + transform.getTransformFromPos(self.guide.pos["ankle"]), + self.color_ik, + "null", + w=self.size * .12, + tp=self.root_ctl) + attribute.setInvertMirror(self.ikcns_ctl, ["tx"]) + + m = transform.getTransformLookingAt(self.guide.pos["ankle"], + self.guide.pos["eff"], + self.x_axis, + "zx", + False) + + self.ik_ctl = self.addCtl( + self.ikcns_ctl, + "ik_ctl", + transform.getTransformFromPos(self.guide.pos["ankle"]), + self.color_ik, + "cube", + w=self.size * .12, + h=self.size * .12, + d=self.size * .12, + tp=self.ikcns_ctl) + attribute.setKeyableAttributes(self.ik_ctl) + attribute.setRotOrder(self.ik_ctl, "XZY") + attribute.setInvertMirror(self.ik_ctl, ["tx", "ry", "rz"]) # upv v = self.guide.apos[2] - self.guide.apos[0] v = self.normal ^ v v.normalize() - v *= self.size*.5 + v *= self.size * .5 v += self.guide.apos[1] - self.upv_cns = pri.addTransformFromPos(self.root, self.getName("upv_cns"), v) + self.upv_cns = primitive.addTransformFromPos( + self.root, self.getName("upv_cns"), v) + + self.upv_ctl = self.addCtl( + self.upv_cns, + "upv_ctl", + transform.getTransform(self.upv_cns), + self.color_ik, + "diamond", + w=self.size * .12, + tp=self.root_ctl) - self.upv_ctl = self.addCtl(self.upv_cns, "upv_ctl", tra.getTransform(self.upv_cns), self.color_ik, "diamond", w=self.size*.12, tp=self.root_ctl) if self.settings["mirrorMid"]: if self.negate: self.upv_cns.rz.set(180) self.upv_cns.sy.set(-1) else: - att.setInvertMirror(self.upv_ctl, ["tx"]) - att.setKeyableAttributes(self.upv_ctl, self.t_params) - - + attribute.setInvertMirror(self.upv_ctl, ["tx"]) + attribute.setKeyableAttributes(self.upv_ctl, self.t_params) # References -------------------------------------- - self.ik_ref = pri.addTransform(self.ik_ctl, self.getName("ik_ref"), tra.getTransform(self.ik_ctl)) - self.fk_ref = pri.addTransform(self.fk_ctl[2], self.getName("fk_ref"), tra.getTransform(self.ik_ctl)) + self.ik_ref = primitive.addTransform( + self.ik_ctl, + self.getName("ik_ref"), + transform.getTransform(self.ik_ctl)) + self.fk_ref = primitive.addTransform( + self.fk_ctl[2], + self.getName("fk_ref"), + transform.getTransform(self.ik_ctl)) # Chain -------------------------------------------- # The outputs of the ikfk2bone solver - self.bone0 = pri.addLocator(self.root_ctl, self.getName("0_bone"), tra.getTransform(self.fk_ctl[0])) + self.bone0 = primitive.addLocator( + self.root_ctl, + self.getName("0_bone"), + transform.getTransform(self.fk_ctl[0])) + self.bone0_shp = self.bone0.getShape() - self.bone0_shp.setAttr("localPositionX", self.n_factor*.5) + self.bone0_shp.setAttr("localPositionX", self.n_factor * .5) self.bone0_shp.setAttr("localScale", .5, 0, 0) self.bone0.setAttr("sx", self.length0) self.bone0.setAttr("visibility", False) - self.bone1 = pri.addLocator(self.root_ctl, self.getName("1_bone"), tra.getTransform(self.fk_ctl[1])) + self.bone1 = primitive.addLocator( + self.root_ctl, + self.getName("1_bone"), + transform.getTransform(self.fk_ctl[1])) + self.bone1_shp = self.bone1.getShape() - self.bone1_shp.setAttr("localPositionX", self.n_factor*.5) + self.bone1_shp.setAttr("localPositionX", self.n_factor * .5) self.bone1_shp.setAttr("localScale", .5, 0, 0) self.bone1.setAttr("sx", self.length1) self.bone1.setAttr("visibility", False) - tA = tra.getTransformLookingAt(self.guide.apos[0], self.guide.apos[1], self.normal, "xz", self.negate) - tA = tra.setMatrixPosition(tA, self.guide.apos[1]) - tB = tra.getTransformLookingAt(self.guide.apos[1], self.guide.apos[2], self.normal, "xz", self.negate) - t = tra.getInterpolateTransformMatrix(tA, tB) - self.ctrn_loc = pri.addTransform(self.root, self.getName("ctrn_loc"), t) - self.eff_loc = pri.addTransformFromPos(self.root_ctl, self.getName("eff_loc"), self.guide.apos[2]) + tA = transform.getTransformLookingAt(self.guide.apos[0], + self.guide.apos[1], + self.normal, + "xz", + self.negate) + tA = transform.setMatrixPosition(tA, self.guide.apos[1]) + tB = transform.getTransformLookingAt(self.guide.apos[1], + self.guide.apos[2], + self.normal, + "xz", + self.negate) + t = transform.getInterpolateTransformMatrix(tA, tB) + self.ctrn_loc = primitive.addTransform( + self.root, self.getName("ctrn_loc"), t) + self.eff_loc = primitive.addTransformFromPos(self.root_ctl, + self.getName("eff_loc"), + self.guide.apos[2]) # tws_ref - t = tra.getRotationFromAxis(dt.Vector(0,-1,0), self.normal, "xz", self.negate) - t = tra.setMatrixPosition(t, self.guide.pos["ankle"]) + t = transform.getRotationFromAxis( + datatypes.Vector(0, -1, 0), self.normal, "xz", self.negate) + t = transform.setMatrixPosition(t, self.guide.pos["ankle"]) - self.tws_ref = pri.addTransform(self.eff_loc, self.getName("tws_ref"), t) + self.tws_ref = primitive.addTransform( + self.eff_loc, self.getName("tws_ref"), t) # Mid Controler ------------------------------------ - t = tra.getTransform(self.ctrn_loc) - self.mid_cns = pri.addTransform(self.ctrn_loc, self.getName("mid_cns"), t) - self.mid_ctl = self.addCtl(self.mid_cns, "mid_ctl", t, self.color_ik, "sphere", w=self.size*.2, tp=self.root_ctl) + t = transform.getTransform(self.ctrn_loc) + self.mid_cns = primitive.addTransform( + self.ctrn_loc, self.getName("mid_cns"), t) + self.mid_ctl = self.addCtl(self.mid_cns, + "mid_ctl", + t, + self.color_ik, + "sphere", + w=self.size * .2, + tp=self.root_ctl) if self.settings["mirrorMid"]: if self.negate: self.mid_cns.rz.set(180) self.mid_cns.sz.set(-1) else: - att.setInvertMirror(self.mid_ctl, ["tx", "ty", "tz"]) - att.setKeyableAttributes(self.mid_ctl, self.t_params) + attribute.setInvertMirror(self.mid_ctl, ["tx", "ty", "tz"]) + attribute.setKeyableAttributes(self.mid_ctl, self.t_params) # Twist references --------------------------------- - x = dt.Vector(0,-1,0) - x = x * tra.getTransform(self.eff_loc) - z = dt.Vector(self.normal.x,self.normal.y,self.normal.z) - z = z * tra.getTransform(self.eff_loc) - - m = tra.getRotationFromAxis(x, z, "xz", self.negate) - m = tra.setMatrixPosition(m, tra.getTranslation(self.ik_ctl)) - - self.tws0_loc = pri.addTransform(self.root_ctl, self.getName("tws0_loc"), tra.getTransform(self.fk_ctl[0])) - self.tws0_rot = pri.addTransform(self.tws0_loc, self.getName("tws0_rot"), tra.getTransform(self.fk_ctl[0])) - - self.tws1_loc = pri.addTransform(self.ctrn_loc, self.getName("tws1_loc"), tra.getTransform(self.ctrn_loc)) - self.tws1_rot = pri.addTransform(self.tws1_loc, self.getName("tws1_rot"), tra.getTransform(self.ctrn_loc)) - - self.tws1A_npo = pri.addTransform(self.mid_ctl, self.getName("tws1A_npo"), tA) - self.tws1A_loc = pri.addTransform(self.tws1A_npo, self.getName("tws1A_loc"), tA) - self.tws1B_npo = pri.addTransform(self.mid_ctl, self.getName("tws1B_npo"), tB) - self.tws1B_loc = pri.addTransform(self.tws1B_npo, self.getName("tws1B_loc"), tB) - - self.tws2_npo = pri.addTransform(self.root, self.getName("tws2_npo"), tra.getTransform(self.fk_ctl[2])) - self.tws2_loc = pri.addTransform(self.tws2_npo, self.getName("tws2_loc"), tra.getTransform(self.fk_ctl[2])) - self.tws2_rot = pri.addTransform(self.tws2_npo, self.getName("tws2_rot"), tra.getTransform(self.fk_ctl[2])) + x = datatypes.Vector(0, -1, 0) + x = x * transform.getTransform(self.eff_loc) + z = datatypes.Vector(self.normal.x, self.normal.y, self.normal.z) + z = z * transform.getTransform(self.eff_loc) + + m = transform.getRotationFromAxis(x, z, "xz", self.negate) + m = transform.setMatrixPosition( + m, transform.getTranslation(self.ik_ctl)) + + self.tws0_loc = primitive.addTransform( + self.root_ctl, + self.getName("tws0_loc"), + transform.getTransform(self.fk_ctl[0])) + self.tws0_rot = primitive.addTransform( + self.tws0_loc, + self.getName("tws0_rot"), + transform.getTransform(self.fk_ctl[0])) + + self.tws1_loc = primitive.addTransform( + self.ctrn_loc, + self.getName("tws1_loc"), + transform.getTransform(self.ctrn_loc)) + self.tws1_rot = primitive.addTransform( + self.tws1_loc, + self.getName("tws1_rot"), + transform.getTransform(self.ctrn_loc)) + + self.tws1A_npo = primitive.addTransform( + self.mid_ctl, self.getName("tws1A_npo"), tA) + self.tws1A_loc = primitive.addTransform( + self.tws1A_npo, self.getName("tws1A_loc"), tA) + self.tws1B_npo = primitive.addTransform( + self.mid_ctl, self.getName("tws1B_npo"), tB) + self.tws1B_loc = primitive.addTransform( + self.tws1B_npo, self.getName("tws1B_loc"), tB) + + self.tws2_npo = primitive.addTransform( + self.root, self.getName("tws2_npo"), + transform.getTransform(self.fk_ctl[2])) + self.tws2_loc = primitive.addTransform( + self.tws2_npo, self.getName("tws2_loc"), + transform.getTransform(self.fk_ctl[2])) + self.tws2_rot = primitive.addTransform( + self.tws2_npo, self.getName("tws2_rot"), + transform.getTransform(self.fk_ctl[2])) # Roll twist chain --------------------------------- - #Arm + # Arm self.uplegChainPos = [] - ii = 1.0/(self.settings["div0"]+1) + ii = 1.0 / (self.settings["div0"] + 1) i = 0.0 - for p in range(self.settings["div0"]+2): - self.uplegChainPos.append(vec.linearlyInterpolate(self.guide.pos["root"], self.guide.pos["knee"], blend=i)) - i=i+ii - - self.uplegTwistChain= pri.add2DChain(self.root, self.getName("uplegTwist%s_jnt"), self.uplegChainPos, self.normal, False, self.WIP) - - #Forearm + for p in range(self.settings["div0"] + 2): + self.uplegChainPos.append( + vector.linearlyInterpolate(self.guide.pos["root"], + self.guide.pos["knee"], + blend=i)) + i = i + ii + + self.uplegTwistChain = primitive.add2DChain( + self.root, + self.getName("uplegTwist%s_jnt"), + self.uplegChainPos, + self.normal, + False, + self.WIP) + + # Forearm self.lowlegChainPos = [] - ii = 1.0/(self.settings["div1"]+1) + ii = 1.0 / (self.settings["div1"] + 1) i = 0.0 - for p in range(self.settings["div1"]+2): - self.lowlegChainPos.append(vec.linearlyInterpolate(self.guide.pos["knee"], self.guide.pos["ankle"], blend=i)) - i=i+ii - - self.lowlegTwistChain= pri.add2DChain(self.root, self.getName("lowlegTwist%s_jnt"), self.lowlegChainPos, self.normal, False, self.WIP) + for p in range(self.settings["div1"] + 2): + self.lowlegChainPos.append( + vector.linearlyInterpolate(self.guide.pos["knee"], + self.guide.pos["ankle"], + blend=i)) + i = i + ii + + self.lowlegTwistChain = primitive.add2DChain( + self.root, + self.getName("lowlegTwist%s_jnt"), + self.lowlegChainPos, + self.normal, + False, + self.WIP) pm.parent(self.lowlegTwistChain[0], self.mid_ctl) - #Hand Aux chain and nonroll + # Hand Aux chain and nonroll self.auxChainPos = [] ii = .5 i = 0.0 for p in range(3): - self.auxChainPos.append(vec.linearlyInterpolate(self.guide.pos["ankle"], self.guide.pos["eff"], blend=i)) - i=i+ii + self.auxChainPos.append( + vector.linearlyInterpolate(self.guide.pos["ankle"], + self.guide.pos["eff"], + blend=i)) + i = i + ii t = self.root.getMatrix(worldSpace=True) - self.aux_npo = pri.addTransform(self.root, self.getName("aux_npo"), t) - self.auxTwistChain = pri.add2DChain(self.aux_npo, self.getName("auxTwist%s_jnt"), self.lowlegChainPos[:3], self.normal, False, self.WIP) - #Non Roll join ref --------------------------------- - self.uplegRollRef = pri.add2DChain(self.root, self.getName("uplegRollRef%s_jnt"), self.uplegChainPos[:2], self.normal, False,self.WIP) - - - self.lowlegRollRef = pri.add2DChain(self.aux_npo, self.getName("lowlegRollRef%s_jnt"), self.lowlegChainPos[:2], self.normal, False, self.WIP) + self.aux_npo = primitive.addTransform( + self.root, self.getName("aux_npo"), t) + self.auxTwistChain = primitive.add2DChain( + self.aux_npo, + self.getName("auxTwist%s_jnt"), + self.lowlegChainPos[:3], + self.normal, + False, + self.WIP) + # Non Roll join ref --------------------------------- + self.uplegRollRef = primitive.add2DChain( + self.root, + self.getName("uplegRollRef%s_jnt"), + self.uplegChainPos[:2], + self.normal, + False, + self.WIP) + + self.lowlegRollRef = primitive.add2DChain( + self.aux_npo, + self.getName("lowlegRollRef%s_jnt"), + self.lowlegChainPos[:2], + self.normal, + False, + self.WIP) # Divisions ---------------------------------------- - # We have at least one division at the start, the end and one for the elbow. + 2 for knee angle control + # We have at least one division at the start, the end and one for the + # elbow. + 2 for knee angle control self.divisions = self.settings["div0"] + self.settings["div1"] + 4 self.div_cns = [] for i in range(self.divisions): - div_cns = pri.addTransform(self.root_ctl, self.getName("div%s_loc" % i)) + div_cns = primitive.addTransform( + self.root_ctl, self.getName("div%s_loc" % i)) self.div_cns.append(div_cns) @@ -246,130 +412,265 @@ def addObjects(self): # End reference ------------------------------------ # To help the deformation on the ankle - self.end_ref = pri.addTransform(self.eff_loc, self.getName("end_ref"), m) + self.end_ref = primitive.addTransform( + self.eff_loc, self.getName("end_ref"), m) for a in "xyz": - self.end_ref.attr("s%s"%a).set(1.0) + self.end_ref.attr("s%s" % a).set(1.0) if self.negate: self.end_ref.attr("ry").set(-180.0) self.jnt_pos.append([self.end_ref, 'end']) # Tangent controls - t = tra.getInterpolateTransformMatrix(self.fk_ctl[0], self.tws1A_npo, .5) - self.uplegTangentA_loc = pri.addTransform(self.root_ctl, self.getName("uplegTangentA_loc"), self.fk_ctl[0].getMatrix(worldSpace=True)) - self.uplegTangentA_npo = pri.addTransform(self.uplegTangentA_loc, self.getName("uplegTangentA_npo"), t) - self.uplegTangentA_ctl = self.addCtl(self.uplegTangentA_npo, "uplegTangentA_ctl", t, self.color_ik, "circle", w=self.size*.2, ro=dt.Vector(0,0,1.570796), tp=self.mid_ctl) + t = transform.getInterpolateTransformMatrix( + self.fk_ctl[0], self.tws1A_npo, .5) + self.uplegTangentA_loc = primitive.addTransform( + self.root_ctl, + self.getName("uplegTangentA_loc"), + self.fk_ctl[0].getMatrix(worldSpace=True)) + + self.uplegTangentA_npo = primitive.addTransform( + self.uplegTangentA_loc, self.getName("uplegTangentA_npo"), t) + + self.uplegTangentA_ctl = self.addCtl( + self.uplegTangentA_npo, + "uplegTangentA_ctl", + t, + self.color_ik, + "circle", + w=self.size * .2, + ro=datatypes.Vector(0, 0, 1.570796), + tp=self.mid_ctl) + if self.negate: self.uplegTangentA_npo.rz.set(180) self.uplegTangentA_npo.sz.set(-1) - att.setKeyableAttributes(self.uplegTangentA_ctl, self.t_params) + attribute.setKeyableAttributes(self.uplegTangentA_ctl, self.t_params) + + t = transform.getInterpolateTransformMatrix( + self.fk_ctl[0], self.tws1A_npo, .9) + self.uplegTangentB_npo = primitive.addTransform( + self.tws1A_loc, self.getName("uplegTangentB_npo"), t) + + self.uplegTangentB_ctl = self.addCtl( + self.uplegTangentB_npo, + "uplegTangentB_ctl", + t, + self.color_ik, + "circle", + w=self.size * .1, + ro=datatypes.Vector(0, 0, 1.570796), + tp=self.mid_ctl) - t = tra.getInterpolateTransformMatrix(self.fk_ctl[0], self.tws1A_npo, .9) - self.uplegTangentB_npo = pri.addTransform(self.tws1A_loc, self.getName("uplegTangentB_npo"), t) - self.uplegTangentB_ctl = self.addCtl(self.uplegTangentB_npo, "uplegTangentB_ctl", t, self.color_ik, "circle", w=self.size*.1, ro=dt.Vector(0,0,1.570796), tp=self.mid_ctl) if self.negate: self.uplegTangentB_npo.rz.set(180) self.uplegTangentB_npo.sz.set(-1) - att.setKeyableAttributes(self.uplegTangentB_ctl, self.t_params) + attribute.setKeyableAttributes(self.uplegTangentB_ctl, self.t_params) tC = self.tws1B_npo.getMatrix(worldSpace=True) - tC = tra.setMatrixPosition(tC, self.guide.apos[2]) - t = tra.getInterpolateTransformMatrix(self.tws1B_npo, tC, .1) - self.lowlegTangentA_npo = pri.addTransform(self.tws1B_loc, self.getName("lowlegTangentA_npo"), t) - self.lowlegTangentA_ctl = self.addCtl(self.lowlegTangentA_npo, "lowlegTangentA_ctl", t, self.color_ik, "circle", w=self.size*.1, ro=dt.Vector(0,0,1.570796), tp=self.mid_ctl) + tC = transform.setMatrixPosition(tC, self.guide.apos[2]) + t = transform.getInterpolateTransformMatrix(self.tws1B_npo, tC, .1) + self.lowlegTangentA_npo = primitive.addTransform( + self.tws1B_loc, self.getName("lowlegTangentA_npo"), t) + + self.lowlegTangentA_ctl = self.addCtl( + self.lowlegTangentA_npo, + "lowlegTangentA_ctl", + t, + self.color_ik, + "circle", + w=self.size * .1, + ro=datatypes.Vector(0, 0, 1.570796), + tp=self.mid_ctl) + if self.negate: self.lowlegTangentA_npo.rz.set(180) self.lowlegTangentA_npo.sz.set(-1) - att.setKeyableAttributes(self.lowlegTangentA_ctl, self.t_params) + attribute.setKeyableAttributes(self.lowlegTangentA_ctl, self.t_params) + + t = transform.getInterpolateTransformMatrix(self.tws1B_npo, tC, .5) + + self.lowlegTangentB_loc = primitive.addTransform( + self.root, self.getName("lowlegTangentB_loc"), tC) + + self.lowlegTangentB_npo = primitive.addTransform( + self.lowlegTangentB_loc, self.getName("lowlegTangentB_npo"), t) + + self.lowlegTangentB_ctl = self.addCtl( + self.lowlegTangentB_npo, + "lowlegTangentB_ctl", + t, + self.color_ik, + "circle", + w=self.size * .2, + ro=datatypes.Vector(0, 0, 1.570796), + tp=self.mid_ctl) - t = tra.getInterpolateTransformMatrix(self.tws1B_npo, tC, .5) - self.lowlegTangentB_loc = pri.addTransform(self.root, self.getName("lowlegTangentB_loc"), tC) - self.lowlegTangentB_npo = pri.addTransform(self.lowlegTangentB_loc, self.getName("lowlegTangentB_npo"), t) - self.lowlegTangentB_ctl = self.addCtl(self.lowlegTangentB_npo, "lowlegTangentB_ctl", t, self.color_ik, "circle", w=self.size*.2, ro=dt.Vector(0,0,1.570796), tp=self.mid_ctl) if self.negate: self.lowlegTangentB_npo.rz.set(180) self.lowlegTangentB_npo.sz.set(-1) - att.setKeyableAttributes(self.lowlegTangentB_ctl, self.t_params) + attribute.setKeyableAttributes(self.lowlegTangentB_ctl, self.t_params) t = self.mid_ctl.getMatrix(worldSpace=True) - self.kneeTangent_npo = pri.addTransform(self.mid_ctl, self.getName("kneeTangent_npo"), t) - self.kneeTangent_ctl = self.addCtl(self.kneeTangent_npo, "kneeTangent_ctl", t, self.color_fk, "circle", w=self.size*.25, ro=dt.Vector(0,0,1.570796), tp=self.mid_ctl) + self.kneeTangent_npo = primitive.addTransform( + self.mid_ctl, self.getName("kneeTangent_npo"), t) + + self.kneeTangent_ctl = self.addCtl( + self.kneeTangent_npo, + "kneeTangent_ctl", + t, + self.color_fk, + "circle", + w=self.size * .25, + ro=datatypes.Vector(0, 0, 1.570796), + tp=self.mid_ctl) + if self.negate: self.kneeTangent_npo.rz.set(180) self.kneeTangent_npo.sz.set(-1) - att.setKeyableAttributes(self.kneeTangent_ctl, self.t_params) + attribute.setKeyableAttributes(self.kneeTangent_ctl, self.t_params) # match IK FK references - self.match_fk0_off = pri.addTransform(self.root, self.getName("matchFk0_npo"), tra.getTransform(self.fk_ctl[1])) - self.match_fk0 = pri.addTransform(self.match_fk0_off, self.getName("fk0_mth"), tra.getTransform(self.fk_ctl[0])) - self.match_fk1_off = pri.addTransform(self.root, self.getName("matchFk1_npo"), tra.getTransform(self.fk_ctl[2])) - self.match_fk1 = pri.addTransform(self.match_fk1_off, self.getName("fk1_mth"), tra.getTransform(self.fk_ctl[1])) - self.match_fk2 = pri.addTransform(self.ik_ctl, self.getName("fk2_mth"), tra.getTransform(self.fk_ctl[2])) - - self.match_ik = pri.addTransform(self.fk2_ctl, self.getName("ik_mth"), tra.getTransform(self.ik_ctl)) - self.match_ikUpv = pri.addTransform(self.fk0_ctl, self.getName("upv_mth"), tra.getTransform(self.upv_ctl)) - + self.match_fk0_off = primitive.addTransform( + self.root, + self.getName("matchFk0_npo"), + transform.getTransform(self.fk_ctl[1])) + + self.match_fk0 = primitive.addTransform( + self.match_fk0_off, + self.getName("fk0_mth"), + transform.getTransform(self.fk_ctl[0])) + + self.match_fk1_off = primitive.addTransform( + self.root, + self.getName("matchFk1_npo"), + transform.getTransform(self.fk_ctl[2])) + + self.match_fk1 = primitive.addTransform( + self.match_fk1_off, + self.getName("fk1_mth"), + transform.getTransform(self.fk_ctl[1])) + + self.match_fk2 = primitive.addTransform( + self.ik_ctl, + self.getName("fk2_mth"), + transform.getTransform(self.fk_ctl[2])) + + self.match_ik = primitive.addTransform( + self.fk2_ctl, + self.getName("ik_mth"), + transform.getTransform(self.ik_ctl)) + + self.match_ikUpv = primitive.addTransform( + self.fk0_ctl, + self.getName("upv_mth"), + transform.getTransform(self.upv_ctl)) def addAttributes(self): # Anim ------------------------------------------- - self.blend_att = self.addAnimParam("blend", "Fk/Ik Blend", "double", self.settings["blend"], 0, 1) - self.roll_att = self.addAnimParam("roll", "Roll", "double", 0, -180, 180) - - self.scale_att = self.addAnimParam("ikscale", "Scale", "double", 1, .001, 99) - self.maxstretch_att = self.addAnimParam("maxstretch", "Max Stretch", "double", 1.5, 1, 99) - self.slide_att = self.addAnimParam("slide", "Slide", "double", .5, 0, 1) - self.softness_att = self.addAnimParam("softness", "Softness", "double", 0, 0, 1) - self.reverse_att = self.addAnimParam("reverse", "Reverse", "double", 0, 0, 1) - self.roundness_att = self.addAnimParam("roundness", "Roundness", "double", 0, 0, 1) - self.volume_att = self.addAnimParam("volume", "Volume", "double", 1, 0, 1) - self.tangentVis_att = self.addAnimParam("Tangent_vis", "Tangent vis", "bool", False) + self.blend_att = self.addAnimParam( + "blend", "Fk/Ik Blend", "double", self.settings["blend"], 0, 1) + self.roll_att = self.addAnimParam( + "roll", "Roll", "double", 0, -180, 180) + self.scale_att = self.addAnimParam( + "ikscale", "Scale", "double", 1, .001, 99) + self.maxstretch_att = self.addAnimParam( + "maxstretch", "Max Stretch", "double", 1.5, 1, 99) + self.slide_att = self.addAnimParam( + "slide", "Slide", "double", .5, 0, 1) + self.softness_att = self.addAnimParam( + "softness", "Softness", "double", 0, 0, 1) + self.reverse_att = self.addAnimParam( + "reverse", "Reverse", "double", 0, 0, 1) + self.roundness_att = self.addAnimParam( + "roundness", "Roundness", "double", 0, 0, 1) + self.volume_att = self.addAnimParam( + "volume", "Volume", "double", 1, 0, 1) + self.tangentVis_att = self.addAnimParam( + "Tangent_vis", "Tangent vis", "bool", False) # Ref if self.settings["ikrefarray"]: ref_names = self.settings["ikrefarray"].split(",") if len(ref_names) > 1: - self.ikref_att = self.addAnimEnumParam("ikref", "Ik Ref", 0, self.settings["ikrefarray"].split(",")) + self.ikref_att = self.addAnimEnumParam( + "ikref", + "Ik Ref", + 0, + self.settings["ikrefarray"].split(",")) ref_names = ["Auto", "ikFoot"] if self.settings["upvrefarray"]: ref_names = ref_names + self.settings["upvrefarray"].split(",") - self.upvref_att = self.addAnimEnumParam("upvref", "UpV Ref", 0, ref_names) + self.upvref_att = self.addAnimEnumParam( + "upvref", "UpV Ref", 0, ref_names) if self.settings["pinrefarray"]: - ref_names = self.settings["pinrefarray" ].split(",") + ref_names = self.settings["pinrefarray"].split(",") ref_names = ["Auto"] + ref_names if len(ref_names) > 1: - self.pin_att = self.addAnimEnumParam("kneeref", "Knee Ref", 0, ref_names) - + self.pin_att = self.addAnimEnumParam( + "kneeref", "Knee Ref", 0, ref_names) # Setup ------------------------------------------ # Eval Fcurve - self.st_value = fcu.getFCurveValues(self.settings["st_profile"], self.divisions) - self.sq_value = fcu.getFCurveValues(self.settings["sq_profile"], self.divisions) + self.st_value = fcurve.getFCurveValues( + self.settings["st_profile"], self.divisions) + self.sq_value = fcurve.getFCurveValues( + self.settings["sq_profile"], self.divisions) + + self.st_att = [self.addSetupParam("stretch_%s" % i, + "Stretch %s" % i, + "double", + self.st_value[i], + -1, + 0) + for i in range(self.divisions)] + + self.sq_att = [self.addSetupParam("squash_%s" % i, + "Squash %s" % i, + "double", + self.sq_value[i], + 0, + 1) + for i in range(self.divisions)] + + self.resample_att = self.addSetupParam( + "resample", "Resample", "bool", True) + self.absolute_att = self.addSetupParam( + "absolute", "Absolute", "bool", False) - self.st_att = [ self.addSetupParam("stretch_%s"%i, "Stretch %s"%i, "double", self.st_value[i], -1, 0) for i in range(self.divisions) ] - self.sq_att = [ self.addSetupParam("squash_%s"%i, "Squash %s"%i, "double", self.sq_value[i], 0, 1) for i in range(self.divisions) ] + # ===================================================== + # OPERATORS + # ===================================================== + def addOperators(self): + """Create operators and set the relations for the component rig - self.resample_att = self.addSetupParam("resample", "Resample", "bool", True) - self.absolute_att = self.addSetupParam("absolute", "Absolute", "bool", False) + Apply operators, constraints, expressions to the hierarchy. + In order to keep the code clean and easier to debug, + we shouldn't create any new object in this method. - def addOperators(self): + """ - # 1 bone chain Upv ref ===================================================================================== - self.ikHandleUpvRef = pri.addIkHandle(self.root, self.getName("ikHandleLegChainUpvRef"), self.legChainUpvRef, "ikSCsolver") + # 1 bone chain Upv ref ============================== + self.ikHandleUpvRef = primitive.addIkHandle( + self.root, + self.getName("ikHandleLegChainUpvRef"), + self.legChainUpvRef, + "ikSCsolver") pm.pointConstraint(self.ik_ctl, self.ikHandleUpvRef) - pm.parentConstraint( self.legChainUpvRef[0], self.upv_cns, mo=True) + pm.parentConstraint(self.legChainUpvRef[0], self.upv_cns, mo=True) # Visibilities ------------------------------------- - #shape.dispGeometry + # shape.dispGeometry # fk - fkvis_node = nod.createReverseNode(self.blend_att) + fkvis_node = node.createReverseNode(self.blend_att) for shp in self.fk0_ctl.getShapes(): - pm.connectAttr(fkvis_node+".outputX", shp.attr("visibility")) + pm.connectAttr(fkvis_node + ".outputX", shp.attr("visibility")) for shp in self.fk1_ctl.getShapes(): - pm.connectAttr(fkvis_node+".outputX", shp.attr("visibility")) + pm.connectAttr(fkvis_node + ".outputX", shp.attr("visibility")) for shp in self.fk2_ctl.getShapes(): - pm.connectAttr(fkvis_node+".outputX", shp.attr("visibility")) + pm.connectAttr(fkvis_node + ".outputX", shp.attr("visibility")) # ik for shp in self.upv_ctl.getShapes(): @@ -381,43 +682,78 @@ def addOperators(self): # IK Solver ----------------------------------------- out = [self.bone0, self.bone1, self.ctrn_loc, self.eff_loc] - node = aop.gear_ikfk2bone_op(out, self.root_ctl, self.ik_ref, self.upv_ctl, self.fk_ctl[0], self.fk_ctl[1], self.fk_ref, self.length0, self.length1, self.negate) - - pm.connectAttr(self.blend_att, node+".blend") + o_node = applyop.gear_ikfk2bone_op(out, + self.root_ctl, + self.ik_ref, + self.upv_ctl, + self.fk_ctl[0], + self.fk_ctl[1], + self.fk_ref, + self.length0, + self.length1, + self.negate) + + pm.connectAttr(self.blend_att, o_node + ".blend") if self.negate: mulVal = -1 else: mulVal = 1 - nod.createMulNode(self.roll_att, mulVal, node+".roll") - # pm.connectAttr(self.roll_att, node+".roll") - pm.connectAttr(self.scale_att, node+".scaleA") - pm.connectAttr(self.scale_att, node+".scaleB") - pm.connectAttr(self.maxstretch_att, node+".maxstretch") - pm.connectAttr(self.slide_att, node+".slide") - pm.connectAttr(self.softness_att, node+".softness") - pm.connectAttr(self.reverse_att, node+".reverse") + node.createMulNode(self.roll_att, mulVal, o_node + ".roll") + # pm.connectAttr(self.roll_att, o_node+".roll") + pm.connectAttr(self.scale_att, o_node + ".scaleA") + pm.connectAttr(self.scale_att, o_node + ".scaleB") + pm.connectAttr(self.maxstretch_att, o_node + ".maxstretch") + pm.connectAttr(self.slide_att, o_node + ".slide") + pm.connectAttr(self.softness_att, o_node + ".softness") + pm.connectAttr(self.reverse_att, o_node + ".reverse") # Twist references --------------------------------- - node = aop.gear_mulmatrix_op(self.eff_loc.attr("worldMatrix"), self.root.attr("worldInverseMatrix")) - dm_node = pm.createNode("decomposeMatrix") - pm.connectAttr(node+".output", dm_node+".inputMatrix") - pm.connectAttr(dm_node+".outputTranslate", self.tws2_npo.attr("translate")) - + o_node = applyop.gear_mulmatrix_op( + self.eff_loc.attr("worldMatrix"), + self.root.attr("worldInverseMatrix")) dm_node = pm.createNode("decomposeMatrix") - pm.connectAttr(node+".output", dm_node+".inputMatrix") - pm.connectAttr(dm_node+".outputRotate", self.tws2_npo.attr("rotate")) + pm.connectAttr(o_node + ".output", dm_node + ".inputMatrix") + pm.connectAttr(dm_node + ".outputTranslate", + self.tws2_npo.attr("translate")) - #spline IK for twist jnts - self.ikhUpLegTwist, self.uplegTwistCrv = aop.splineIK(self.getName("uplegTwist"), self.uplegTwistChain, parent=self.root, cParent=self.bone0 ) - self.ikhLowLegTwist, self.lowlegTwistCrv = aop.splineIK(self.getName("lowlegTwist"), self.lowlegTwistChain, parent=self.root, cParent=self.bone1 ) - - #references - self.ikhUpLegRef, self.tmpCrv = aop.splineIK(self.getName("uplegRollRef"), self.uplegRollRef, parent=self.root, cParent=self.bone0 ) - self.ikhLowLegRef, self.tmpCrv = aop.splineIK(self.getName("lowlegRollRef"), self.lowlegRollRef, parent=self.root, cParent=self.eff_loc ) - self.ikhAuxTwist, self.tmpCrv = aop.splineIK(self.getName("auxTwist"), self.auxTwistChain, parent=self.root, cParent=self.eff_loc ) - - #setting connexions for ikhUpLegTwist + dm_node = pm.createNode("decomposeMatrix") + pm.connectAttr(o_node + ".output", dm_node + ".inputMatrix") + pm.connectAttr(dm_node + ".outputRotate", self.tws2_npo.attr("rotate")) + + # spline IK for twist jnts + self.ikhUpLegTwist, self.uplegTwistCrv = applyop.splineIK( + self.getName("uplegTwist"), + self.uplegTwistChain, + parent=self.root, + cParent=self.bone0) + + self.ikhLowLegTwist, self.lowlegTwistCrv = applyop.splineIK( + self.getName("lowlegTwist"), + self.lowlegTwistChain, + parent=self.root, + cParent=self.bone1) + + # references + self.ikhUpLegRef, self.tmpCrv = applyop.splineIK( + self.getName("uplegRollRef"), + self.uplegRollRef, + parent=self.root, + cParent=self.bone0) + + self.ikhLowLegRef, self.tmpCrv = applyop.splineIK( + self.getName("lowlegRollRef"), + self.lowlegRollRef, + parent=self.root, + cParent=self.eff_loc) + + self.ikhAuxTwist, self.tmpCrv = applyop.splineIK( + self.getName("auxTwist"), + self.auxTwistChain, + parent=self.root, + cParent=self.eff_loc) + + # setting connexions for ikhUpLegTwist self.ikhUpLegTwist.attr("dTwistControlEnable").set(True) self.ikhUpLegTwist.attr("dWorldUpType").set(4) self.ikhUpLegTwist.attr("dWorldUpAxis").set(3) @@ -425,10 +761,12 @@ def addOperators(self): self.ikhUpLegTwist.attr("dWorldUpVectorY").set(0.0) self.ikhUpLegTwist.attr("dWorldUpVectorEndZ").set(1.0) self.ikhUpLegTwist.attr("dWorldUpVectorEndY").set(0.0) - pm.connectAttr(self.uplegRollRef[0].attr("worldMatrix[0]"), self.ikhUpLegTwist.attr("dWorldUpMatrix")) - pm.connectAttr(self.bone0.attr("worldMatrix[0]"), self.ikhUpLegTwist.attr("dWorldUpMatrixEnd")) + pm.connectAttr(self.uplegRollRef[0].attr("worldMatrix[0]"), + self.ikhUpLegTwist.attr("dWorldUpMatrix")) + pm.connectAttr(self.bone0.attr("worldMatrix[0]"), + self.ikhUpLegTwist.attr("dWorldUpMatrixEnd")) - #setting connexions for ikhAuxTwist + # setting connexions for ikhAuxTwist self.ikhAuxTwist.attr("dTwistControlEnable").set(True) self.ikhAuxTwist.attr("dWorldUpType").set(4) self.ikhAuxTwist.attr("dWorldUpAxis").set(3) @@ -436,154 +774,218 @@ def addOperators(self): self.ikhAuxTwist.attr("dWorldUpVectorY").set(0.0) self.ikhAuxTwist.attr("dWorldUpVectorEndZ").set(1.0) self.ikhAuxTwist.attr("dWorldUpVectorEndY").set(0.0) - pm.connectAttr(self.lowlegRollRef[0].attr("worldMatrix[0]"), self.ikhAuxTwist.attr("dWorldUpMatrix")) - pm.connectAttr(self.tws_ref.attr("worldMatrix[0]"), self.ikhAuxTwist.attr("dWorldUpMatrixEnd")) - pm.connectAttr(self.auxTwistChain[1].attr("rx"), self.ikhLowLegTwist.attr("twist")) + pm.connectAttr(self.lowlegRollRef[0].attr("worldMatrix[0]"), + self.ikhAuxTwist.attr("dWorldUpMatrix")) + pm.connectAttr(self.tws_ref.attr("worldMatrix[0]"), + self.ikhAuxTwist.attr("dWorldUpMatrixEnd")) + pm.connectAttr(self.auxTwistChain[1].attr("rx"), + self.ikhLowLegTwist.attr("twist")) pm.parentConstraint(self.bone1, self.aux_npo, maintainOffset=True) - #scale arm length for twist chain (not the squash and stretch) + # scale arm length for twist chain (not the squash and stretch) arclen_node = pm.arclen(self.uplegTwistCrv, ch=True) alAttrUpLeg = arclen_node.attr("arcLength") - muldiv_nodeArm = pm.createNode("multiplyDivide") - pm.connectAttr(arclen_node.attr("arcLength"), muldiv_nodeArm.attr("input1X")) + muldiv_nodeArm = pm.createNode("multiplyDivide") + pm.connectAttr(arclen_node.attr("arcLength"), + muldiv_nodeArm.attr("input1X")) muldiv_nodeArm.attr("input2X").set(alAttrUpLeg.get()) muldiv_nodeArm.attr("operation").set(2) for jnt in self.uplegTwistChain: - pm.connectAttr(muldiv_nodeArm.attr("outputX"),jnt.attr("sx")) + pm.connectAttr(muldiv_nodeArm.attr("outputX"), jnt.attr("sx")) - #scale forearm length for twist chain (not the squash and stretch) + # scale forearm length for twist chain (not the squash and stretch) arclen_node = pm.arclen(self.lowlegTwistCrv, ch=True) alAttrLowLeg = arclen_node.attr("arcLength") - muldiv_nodeLowLeg = pm.createNode("multiplyDivide") - pm.connectAttr(arclen_node.attr("arcLength"), muldiv_nodeLowLeg.attr("input1X")) + muldiv_nodeLowLeg = pm.createNode("multiplyDivide") + pm.connectAttr(arclen_node.attr("arcLength"), + muldiv_nodeLowLeg.attr("input1X")) muldiv_nodeLowLeg.attr("input2X").set(alAttrLowLeg.get()) muldiv_nodeLowLeg.attr("operation").set(2) for jnt in self.lowlegTwistChain: - pm.connectAttr(muldiv_nodeLowLeg.attr("outputX"),jnt.attr("sx")) + pm.connectAttr(muldiv_nodeLowLeg.attr("outputX"), jnt.attr("sx")) - #scale compensation for the first twist join + # scale compensation for the first twist join dm_node = pm.createNode("decomposeMatrix") - pm.connectAttr(self.root.attr("worldMatrix[0]"), dm_node.attr("inputMatrix")) - pm.connectAttr(dm_node.attr("outputScale"), self.uplegTwistChain[0].attr("inverseScale")) - pm.connectAttr(dm_node.attr("outputScale"), self.lowlegTwistChain[0].attr("inverseScale")) - - #tangent controls - muldiv_node = pm.createNode("multiplyDivide") + pm.connectAttr(self.root.attr("worldMatrix[0]"), + dm_node.attr("inputMatrix")) + pm.connectAttr(dm_node.attr("outputScale"), + self.uplegTwistChain[0].attr("inverseScale")) + pm.connectAttr(dm_node.attr("outputScale"), + self.lowlegTwistChain[0].attr("inverseScale")) + + # tangent controls + muldiv_node = pm.createNode("multiplyDivide") muldiv_node.attr("input2X").set(-1) pm.connectAttr(self.tws1A_npo.attr("rz"), muldiv_node.attr("input1X")) - muldiv_nodeBias = pm.createNode("multiplyDivide") - pm.connectAttr(muldiv_node.attr("outputX"), muldiv_nodeBias.attr("input1X")) - pm.connectAttr(self.roundness_att, muldiv_nodeBias.attr("input2X")) - pm.connectAttr(muldiv_nodeBias.attr("outputX"), self.tws1A_loc.attr("rz") ) + muldiv_nodeBias = pm.createNode("multiplyDivide") + pm.connectAttr(muldiv_node.attr("outputX"), + muldiv_nodeBias.attr("input1X")) + pm.connectAttr(self.roundness_att, + muldiv_nodeBias.attr("input2X")) + pm.connectAttr(muldiv_nodeBias.attr("outputX"), + self.tws1A_loc.attr("rz")) if self.negate: axis = "xz" else: axis = "-xz" - aop.aimCns(self.tws1A_npo, self.tws0_loc, axis=axis, wupType=2, wupVector=[0,0,1], wupObject=self.mid_ctl, maintainOffset=False) + applyop.aimCns(self.tws1A_npo, + self.tws0_loc, + axis=axis, + wupType=2, + wupVector=[0, 0, 1], + wupObject=self.mid_ctl, + maintainOffset=False) + + applyop.aimCns(self.lowlegTangentB_loc, + self.lowlegTangentA_npo, + axis=axis, + wupType=2, + wupVector=[0, 0, 1], + wupObject=self.mid_ctl, + maintainOffset=False) - aop.aimCns(self.lowlegTangentB_loc, self.lowlegTangentA_npo, axis=axis, wupType=2, wupVector=[0,0,1], wupObject=self.mid_ctl, maintainOffset=False) pm.pointConstraint(self.eff_loc, self.lowlegTangentB_loc) - - muldiv_node = pm.createNode("multiplyDivide") + muldiv_node = pm.createNode("multiplyDivide") muldiv_node.attr("input2X").set(-1) pm.connectAttr(self.tws1B_npo.attr("rz"), muldiv_node.attr("input1X")) - muldiv_nodeBias = pm.createNode("multiplyDivide") - pm.connectAttr(muldiv_node.attr("outputX"), muldiv_nodeBias.attr("input1X")) - pm.connectAttr(self.roundness_att, muldiv_nodeBias.attr("input2X")) - pm.connectAttr(muldiv_nodeBias.attr("outputX"), self.tws1B_loc.attr("rz") ) + muldiv_nodeBias = pm.createNode("multiplyDivide") + pm.connectAttr(muldiv_node.attr("outputX"), + muldiv_nodeBias.attr("input1X")) + pm.connectAttr(self.roundness_att, + muldiv_nodeBias.attr("input2X")) + pm.connectAttr(muldiv_nodeBias.attr("outputX"), + self.tws1B_loc.attr("rz")) if self.negate: axis = "-xz" else: axis = "xz" - aop.aimCns(self.tws1B_npo, self.tws2_loc, axis=axis, wupType=2, wupVector=[0,0,1], wupObject=self.mid_ctl, maintainOffset=False) - - aop.aimCns(self.uplegTangentA_loc, self.uplegTangentB_npo, axis=axis, wupType=2, wupVector=[0,0,1], wupObject=self.mid_ctl, maintainOffset=False) - - + applyop.aimCns(self.tws1B_npo, + self.tws2_loc, + axis=axis, + wupType=2, + wupVector=[0, 0, 1], + wupObject=self.mid_ctl, + maintainOffset=False) + + applyop.aimCns(self.uplegTangentA_loc, + self.uplegTangentB_npo, + axis=axis, + wupType=2, + wupVector=[0, 0, 1], + wupObject=self.mid_ctl, + maintainOffset=False) # Volume ------------------------------------------- - distA_node = nod.createDistNode(self.tws0_loc, self.tws1_loc) - distB_node = nod.createDistNode(self.tws1_loc, self.tws2_loc) - add_node = nod.createAddNode(distA_node+".distance", distB_node+".distance") - div_node = nod.createDivNode(add_node+".output", self.root_ctl.attr("sx")) - - #comp scaling issue + distA_node = node.createDistNode(self.tws0_loc, self.tws1_loc) + distB_node = node.createDistNode(self.tws1_loc, self.tws2_loc) + add_node = node.createAddNode(distA_node + ".distance", + distB_node + ".distance") + div_node = node.createDivNode(add_node + ".output", + self.root_ctl.attr("sx")) + + # comp scaling issue dm_node = pm.createNode("decomposeMatrix") - pm.connectAttr(self.root.attr("worldMatrix"), dm_node+".inputMatrix") + pm.connectAttr(self.root.attr("worldMatrix"), dm_node + ".inputMatrix") - div_node2 = nod.createDivNode(div_node+".outputX", dm_node+".outputScaleX") + div_node2 = node.createDivNode(div_node + ".outputX", + dm_node + ".outputScaleX") + self.volDriver_att = div_node2 + ".outputX" - self.volDriver_att = div_node2+".outputX" + # connecting tangent scaele compensation after volume to + # avoid duplicate some nodes + distA_node = node.createDistNode(self.tws0_loc, self.mid_ctl) + distB_node = node.createDistNode(self.mid_ctl, self.tws2_loc) - # connecting tangent scaele compensation after volume to aboid duplicate some nodes ------------------------------ - distA_node = nod.createDistNode(self.tws0_loc, self.mid_ctl) - distB_node = nod.createDistNode(self.mid_ctl, self.tws2_loc) + div_nodeUpLeg = node.createDivNode(distA_node + ".distance", + dm_node.attr("outputScaleX")) + div_node2 = node.createDivNode(div_nodeUpLeg + ".outputX", + distA_node.attr("distance").get()) - div_nodeUpLeg = nod.createDivNode(distA_node+".distance", dm_node.attr("outputScaleX")) - div_node2 = nod.createDivNode(div_nodeUpLeg+".outputX", distA_node.attr("distance").get()) pm.connectAttr(div_node2.attr("outputX"), self.tws1A_loc.attr("sx")) - pm.connectAttr(div_node2.attr("outputX"), self.uplegTangentA_loc.attr("sx")) - div_nodeLowLeg = nod.createDivNode(distB_node+".distance", dm_node.attr("outputScaleX")) - div_node2 = nod.createDivNode(div_nodeLowLeg+".outputX", distB_node.attr("distance").get()) - pm.connectAttr(div_node2.attr("outputX"), self.tws1B_loc.attr("sx")) - pm.connectAttr(div_node2.attr("outputX"), self.lowlegTangentB_loc.attr("sx")) + pm.connectAttr(div_node2.attr("outputX"), + self.uplegTangentA_loc.attr("sx")) - #conection curve - aop.gear_curvecns_op(self.uplegTwistCrv, [ self.uplegTangentA_loc, self.uplegTangentA_ctl, self.uplegTangentB_ctl,self.kneeTangent_ctl ]) - aop.gear_curvecns_op(self.lowlegTwistCrv, [ self.kneeTangent_ctl, self.lowlegTangentA_ctl, self.lowlegTangentB_ctl,self.lowlegTangentB_loc ]) + div_nodeLowLeg = node.createDivNode(distB_node + ".distance", + dm_node.attr("outputScaleX")) + div_node2 = node.createDivNode(div_nodeLowLeg + ".outputX", + distB_node.attr("distance").get()) - #Tangent controls vis + pm.connectAttr(div_node2.attr("outputX"), + self.tws1B_loc.attr("sx")) + pm.connectAttr(div_node2.attr("outputX"), + self.lowlegTangentB_loc.attr("sx")) + + # conection curve + cnts = [self.uplegTangentA_loc, self.uplegTangentA_ctl, + self.uplegTangentB_ctl, self.kneeTangent_ctl] + applyop.gear_curvecns_op(self.uplegTwistCrv, cnts) + + cnts = [self.kneeTangent_ctl, self.lowlegTangentA_ctl, + self.lowlegTangentB_ctl, self.lowlegTangentB_loc] + applyop.gear_curvecns_op(self.lowlegTwistCrv, cnts) + + # Tangent controls vis for shp in self.uplegTangentA_ctl.getShapes(): - pm.connectAttr( self.tangentVis_att, shp.attr("visibility")) + pm.connectAttr(self.tangentVis_att, shp.attr("visibility")) for shp in self.uplegTangentB_ctl.getShapes(): - pm.connectAttr( self.tangentVis_att, shp.attr("visibility")) + pm.connectAttr(self.tangentVis_att, shp.attr("visibility")) for shp in self.lowlegTangentA_ctl.getShapes(): - pm.connectAttr( self.tangentVis_att, shp.attr("visibility")) + pm.connectAttr(self.tangentVis_att, shp.attr("visibility")) for shp in self.lowlegTangentB_ctl.getShapes(): - pm.connectAttr( self.tangentVis_att, shp.attr("visibility")) + pm.connectAttr(self.tangentVis_att, shp.attr("visibility")) for shp in self.kneeTangent_ctl.getShapes(): - pm.connectAttr( self.tangentVis_att, shp.attr("visibility")) - + pm.connectAttr(self.tangentVis_att, shp.attr("visibility")) # Divisions ---------------------------------------- - # at 0 or 1 the division will follow exactly the rotation of the controler.. and we wont have this nice tangent + roll + # at 0 or 1 the division will follow exactly the rotation of the + # controler.. and we wont have this nice tangent + roll for i, div_cns in enumerate(self.div_cns): - if i < (self.settings["div0"]+2): - mulmat_node = aop.gear_mulmatrix_op(self.uplegTwistChain[i]+".worldMatrix", div_cns+".parentInverseMatrix") + if i < (self.settings["div0"] + 2): + mulmat_node = applyop.gear_mulmatrix_op( + self.uplegTwistChain[i] + ".worldMatrix", + div_cns + ".parentInverseMatrix") lastUpLegDiv = div_cns else: - mulmat_node = aop.gear_mulmatrix_op(self.lowlegTwistChain[i-(self.settings["div0"]+2)]+".worldMatrix", div_cns+".parentInverseMatrix") + o_node = self.lowlegTwistChain[i - (self.settings["div0"] + 2)] + mulmat_node = applyop.gear_mulmatrix_op( + o_node + ".worldMatrix", div_cns + ".parentInverseMatrix") lastLowLegDiv = div_cns - dm_node = nod.createDecomposeMatrixNode(mulmat_node+".output") - pm.connectAttr(dm_node+".outputTranslate", div_cns+".t") - pm.connectAttr(dm_node+".outputRotate", div_cns+".r") - + dm_node = node.createDecomposeMatrixNode(mulmat_node + ".output") + pm.connectAttr(dm_node + ".outputTranslate", div_cns + ".t") + pm.connectAttr(dm_node + ".outputRotate", div_cns + ".r") # Squash n Stretch - node = aop.gear_squashstretch2_op(div_cns, None, pm.getAttr(self.volDriver_att), "x") - pm.connectAttr(self.volume_att, node+".blend") - pm.connectAttr(self.volDriver_att, node+".driver") - pm.connectAttr(self.st_att[i], node+".stretch") - pm.connectAttr(self.sq_att[i], node+".squash") - - #force translation for last loc arm and foreamr - aop.gear_mulmatrix_op(self.kneeTangent_ctl.worldMatrix,lastUpLegDiv.parentInverseMatrix, lastUpLegDiv, "t" ) - aop.gear_mulmatrix_op(self.tws2_loc.worldMatrix,lastLowLegDiv.parentInverseMatrix, lastLowLegDiv, "t" ) - + o_node = applyop.gear_squashstretch2_op( + div_cns, None, pm.getAttr(self.volDriver_att), "x") + pm.connectAttr(self.volume_att, o_node + ".blend") + pm.connectAttr(self.volDriver_att, o_node + ".driver") + pm.connectAttr(self.st_att[i], o_node + ".stretch") + pm.connectAttr(self.sq_att[i], o_node + ".squash") + + # force translation for last loc arm and foreamr + applyop.gear_mulmatrix_op(self.kneeTangent_ctl.worldMatrix, + lastUpLegDiv.parentInverseMatrix, + lastUpLegDiv, + "t") + applyop.gear_mulmatrix_op(self.tws2_loc.worldMatrix, + lastLowLegDiv.parentInverseMatrix, + lastLowLegDiv, + "t") # NOTE: next line fix the issue on meters. - # This is special case becasuse the IK solver from mGear use the scale as lenght and we have shear - # TODO: check for a more clean and elegant solution instead of re-match the world matrix again - tra.matchWorldTransform(self.fk_ctl[0], self.match_fk0_off) - tra.matchWorldTransform(self.fk_ctl[1], self.match_fk1_off) - tra.matchWorldTransform(self.fk_ctl[0], self.match_fk0) - tra.matchWorldTransform(self.fk_ctl[1], self.match_fk1) - + # This is special case becasuse the IK solver from mGear use the + # scale as lenght and we have shear + # TODO: check for a more clean and elegant solution instead of + # re-match the world matrix again + transform.matchWorldTransform(self.fk_ctl[0], self.match_fk0_off) + transform.matchWorldTransform(self.fk_ctl[1], self.match_fk1_off) + transform.matchWorldTransform(self.fk_ctl[0], self.match_fk0) + transform.matchWorldTransform(self.fk_ctl[1], self.match_fk1) # match IK/FK ref pm.parentConstraint(self.bone0, self.match_fk0_off, mo=True) @@ -594,11 +996,10 @@ def addOperators(self): # ===================================================== # CONNECTOR # ===================================================== - ## Set the relation beetween object from guide to rig.\n - # @param self def setRelation(self): + """Set the relation beetween object from guide to rig""" self.relatives["root"] = self.div_cns[0] - self.relatives["knee"] = self.div_cns[self.settings["div0"] + 2] + self.relatives["knee"] = self.div_cns[self.settings["div0"] + 2] self.relatives["ankle"] = self.div_cns[-1] self.relatives["eff"] = self.end_ref @@ -612,17 +1013,22 @@ def setRelation(self): self.jointRelatives["ankle"] = len(self.div_cns) self.jointRelatives["eff"] = len(self.div_cns) - ## standard connection definition. - # @param self - def connect_standard(self): + def addConnection(self): + """Add more connection definition to the set""" self.parent.addChild(self.root) # Set the Ik Reference self.connectRef(self.settings["ikrefarray"], self.ik_cns) if self.settings["upvrefarray"]: - self.connectRef("Auto,ikFoot,"+self.settings["upvrefarray"], self.upv_cns, True) + self.connectRef("Auto,ikFoot," + self.settings["upvrefarray"], + self.upv_cns, + True) else: self.connectRef("Auto,ikFoot", self.upv_cns, True) if self.settings["pinrefarray"]: - self.connectRef2("Auto,"+ self.settings["pinrefarray"], self.mid_cns, self.pin_att, [self.ctrn_loc], False) + self.connectRef2("Auto," + self.settings["pinrefarray"], + self.mid_cns, + self.pin_att, + [self.ctrn_loc], + False) diff --git a/scripts/mgear/maya/shifter/component/leg_3jnt_01/__init__.py b/scripts/mgear/maya/shifter/component/leg_3jnt_01/__init__.py index 515ffdf..0020ba5 100644 --- a/scripts/mgear/maya/shifter/component/leg_3jnt_01/__init__.py +++ b/scripts/mgear/maya/shifter/component/leg_3jnt_01/__init__.py @@ -1,288 +1,591 @@ -# MGEAR is under the terms of the MIT License +"""Component Leg 3 joints 01 module""" -# Copyright (c) 2016 Jeremie Passerin, Miquel Campos - -# Permission is hereby granted, free of charge, to any person obtaining a copy -# of this software and associated documentation files (the "Software"), to deal -# in the Software without restriction, including without limitation the rights -# to use, copy, modify, merge, publish, distribute, sublicense, and/or sell -# copies of the Software, and to permit persons to whom the Software is -# furnished to do so, subject to the following conditions: - -# The above copyright notice and this permission notice shall be included in all -# copies or substantial portions of the Software. - -# THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR -# IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, -# FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE -# AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER -# LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, -# OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE -# SOFTWARE. - -# Author: Jeremie Passerin geerem@hotmail.com www.jeremiepasserin.com -# Author: Miquel Campos hello@miquel-campos.com www.miquel-campos.com -# Date: 2016 / 10 / 10 - - -############################################# -# GLOBAL -############################################# -# Maya import pymel.core as pm -import pymel.core.datatypes as dt +from pymel.core import datatypes -# mgear -from mgear.maya.shifter.component import MainComponent +from mgear.maya.shifter import component -import mgear.maya.primitive as pri -import mgear.maya.transform as tra -import mgear.maya.attribute as att -import mgear.maya.node as nod -import mgear.maya.vector as vec -import mgear.maya.applyop as aop -import mgear.maya.fcurve as fcu +from mgear.maya import node, fcurve, applyop, vector +from mgear.maya import attribute, transform, primitive ############################################# # COMPONENT ############################################# -class Component(MainComponent): + +class Component(component.Main): + """Shifter component Class""" + + # ===================================================== + # OBJECTS + # ===================================================== def addObjects(self): + """Add all the objects needed to create the component.""" - self.setup = pri.addTransformFromPos(self.setupWS, self.getName("WS")) - att.lockAttribute(self.setup) + self.setup = primitive.addTransformFromPos( + self.setupWS, self.getName("WS")) + attribute.lockAttribute(self.setup) self.WIP = self.options["mode"] self.normal = self.getNormalFromPos(self.guide.apos) - self.length0 = vec.getDistance(self.guide.apos[0], self.guide.apos[1]) - self.length1 = vec.getDistance(self.guide.apos[1], self.guide.apos[2]) - self.length2 = vec.getDistance(self.guide.apos[2], self.guide.apos[3]) - self.length3 = vec.getDistance(self.guide.apos[3], self.guide.apos[4]) + self.length0 = vector.getDistance(self.guide.apos[0], + self.guide.apos[1]) + self.length1 = vector.getDistance(self.guide.apos[1], + self.guide.apos[2]) + self.length2 = vector.getDistance(self.guide.apos[2], + self.guide.apos[3]) + self.length3 = vector.getDistance(self.guide.apos[3], + self.guide.apos[4]) # 3bones chain - self.chain3bones = pri.add2DChain(self.setup, self.getName("chain3bones%s_jnt"), self.guide.apos[0:4], self.normal, False, self.WIP) + self.chain3bones = primitive.add2DChain( + self.setup, + self.getName("chain3bones%s_jnt"), + self.guide.apos[0:4], + self.normal, + False, + self.WIP) # 2bones chain - self.chain2bones = pri.add2DChain(self.setup, self.getName("chain2bones%s_jnt"), self.guide.apos[0:3], self.normal, False, self.WIP) + self.chain2bones = primitive.add2DChain( + self.setup, + self.getName("chain2bones%s_jnt"), + self.guide.apos[0:3], + self.normal, + False, + self.WIP) # Leg chain - self.legBones = pri.add2DChain(self.root, self.getName("legBones%s_jnt"), self.guide.apos[0:4], self.normal, False, self.WIP) + self.legBones = primitive.add2DChain( + self.root, + self.getName("legBones%s_jnt"), + self.guide.apos[0:4], + self.normal, + False, + self.WIP) # Leg chain FK ref - self.legBonesFK = pri.add2DChain(self.root, self.getName("legFK%s_jnt"), self.guide.apos[0:4], self.normal, False, self.WIP) + self.legBonesFK = primitive.add2DChain( + self.root, + self.getName("legFK%s_jnt"), + self.guide.apos[0:4], + self.normal, + False, + self.WIP) # Leg chain IK ref - self.legBonesIK = pri.add2DChain(self.root, self.getName("legIK%s_jnt"), self.guide.apos[0:4], self.normal, False, self.WIP) + self.legBonesIK = primitive.add2DChain( + self.root, + self.getName("legIK%s_jnt"), + self.guide.apos[0:4], + self.normal, + False, + self.WIP) # 1 bone chain for upv ref - self.legChainUpvRef= pri.add2DChain(self.root, self.getName("legUpvRef%s_jnt"), [self.guide.apos[0],self.guide.apos[3]], self.normal, False, self.WIP) + self.legChainUpvRef = primitive.add2DChain( + self.root, + self.getName("legUpvRef%s_jnt"), + [self.guide.apos[0], self.guide.apos[3]], + self.normal, + False, + self.WIP) # mid joints - self.mid1_jnt = pri.addJoint(self.legBones[0], self.getName("mid1_jnt"),self.legBones[1].getMatrix(worldSpace=True), self.WIP ) + self.mid1_jnt = primitive.addJoint( + self.legBones[0], + self.getName("mid1_jnt"), + self.legBones[1].getMatrix(worldSpace=True), + self.WIP) + self.mid1_jnt.attr("radius").set(3) self.mid1_jnt.setAttr("jointOrient", 0, 0, 0) - self.mid2_jnt = pri.addJoint(self.legBones[1], self.getName("mid2_jnt"),self.legBones[2].getMatrix(worldSpace=True), self.WIP ) + + self.mid2_jnt = primitive.addJoint( + self.legBones[1], + self.getName("mid2_jnt"), + self.legBones[2].getMatrix(worldSpace=True), + self.WIP) + self.mid2_jnt.attr("radius").set(3) self.mid2_jnt.setAttr("jointOrient", 0, 0, 0) # base Controlers ----------------------------------- - t = tra.getTransformFromPos(self.guide.apos[0]) - self.root_npo = pri.addTransform(self.root, self.getName("root_npo"), t) - self.root_ctl = self.addCtl(self.root_npo, "root_ctl", t, self.color_fk, "circle", w=self.length0/6, tp=self.parentCtlTag) - att.lockAttribute(self.root_ctl, ["sx", "sy", "sz", "v"]) + t = transform.getTransformFromPos(self.guide.apos[0]) + self.root_npo = primitive.addTransform( + self.root, self.getName("root_npo"), t) + + self.root_ctl = self.addCtl(self.root_npo, + "root_ctl", + t, + self.color_fk, + "circle", + w=self.length0 / 6, + tp=self.parentCtlTag) + attribute.lockAttribute(self.root_ctl, ["sx", "sy", "sz", "v"]) # FK Controlers ----------------------------------- - t = tra.getTransformLookingAt(self.guide.apos[0], self.guide.apos[1], self.normal, "xz", self.negate) - self.fk0_npo = pri.addTransform(self.root_ctl, self.getName("fk0_npo"), t) - self.fk0_ctl = self.addCtl(self.fk0_npo, "fk0_ctl", t, self.color_fk, "cube", w=self.length0, h=self.size*.1, d=self.size*.1, po=dt.Vector(.5*self.length0*self.n_factor,0,0), tp=self.root_ctl) - att.setKeyableAttributes(self.fk0_ctl) - - t = tra.getTransformLookingAt(self.guide.apos[1], self.guide.apos[2], self.normal, "xz", self.negate) - self.fk1_npo = pri.addTransform(self.fk0_ctl, self.getName("fk1_npo"), t) - self.fk1_ctl = self.addCtl(self.fk1_npo, "fk1_ctl", t, self.color_fk, "cube", w=self.length1, h=self.size*.1, d=self.size*.1, po=dt.Vector(.5*self.length1*self.n_factor,0,0), tp=self.fk0_ctl) - att.setKeyableAttributes(self.fk1_ctl) - - t = tra.getTransformLookingAt(self.guide.apos[2], self.guide.apos[3], self.normal, "xz", self.negate) - self.fk2_npo = pri.addTransform(self.fk1_ctl, self.getName("fk2_npo"), t) - self.fk2_ctl = self.addCtl(self.fk2_npo, "fk2_ctl", t, self.color_fk, "cube", w=self.length2, h=self.size*.1, d=self.size*.1, po=dt.Vector(.5*self.length2*self.n_factor,0,0), tp=self.fk1_ctl) - att.setKeyableAttributes(self.fk2_ctl) - - t = tra.getTransformLookingAt(self.guide.apos[3], self.guide.apos[4], self.normal, "xz", self.negate) - self.fk3_npo = pri.addTransform(self.fk2_ctl, self.getName("fk3_npo"), t) - self.fk3_ctl = self.addCtl(self.fk3_npo, "fk3_ctl", t, self.color_fk, "cube", w=self.length3, h=self.size*.1, d=self.size*.1, po=dt.Vector(.5*self.length3*self.n_factor,0,0), tp=self.fk2_ctl) - att.setKeyableAttributes(self.fk3_ctl) - + t = transform.getTransformLookingAt(self.guide.apos[0], + self.guide.apos[1], + self.normal, + "xz", + self.negate) + + self.fk0_npo = primitive.addTransform( + self.root_ctl, self.getName("fk0_npo"), t) + + self.fk0_ctl = self.addCtl( + self.fk0_npo, + "fk0_ctl", + t, + self.color_fk, + "cube", + w=self.length0, + h=self.size * .1, + d=self.size * .1, + po=datatypes.Vector(.5 * self.length0 * self.n_factor, 0, 0), + tp=self.root_ctl) + attribute.setKeyableAttributes(self.fk0_ctl) + + t = transform.getTransformLookingAt(self.guide.apos[1], + self.guide.apos[2], + self.normal, + "xz", + self.negate) + self.fk1_npo = primitive.addTransform( + self.fk0_ctl, self.getName("fk1_npo"), t) + self.fk1_ctl = self.addCtl( + self.fk1_npo, + "fk1_ctl", + t, + self.color_fk, + "cube", + w=self.length1, + h=self.size * .1, + d=self.size * .1, + po=datatypes.Vector(.5 * self.length1 * self.n_factor, 0, 0), + tp=self.fk0_ctl) + attribute.setKeyableAttributes(self.fk1_ctl) + + t = transform.getTransformLookingAt(self.guide.apos[2], + self.guide.apos[3], + self.normal, + "xz", + self.negate) + + self.fk2_npo = primitive.addTransform( + self.fk1_ctl, self.getName("fk2_npo"), t) + + self.fk2_ctl = self.addCtl( + self.fk2_npo, + "fk2_ctl", + t, + self.color_fk, + "cube", + w=self.length2, + h=self.size * .1, + d=self.size * .1, + po=datatypes.Vector(.5 * self.length2 * self.n_factor, 0, 0), + tp=self.fk1_ctl) + + attribute.setKeyableAttributes(self.fk2_ctl) + + t = transform.getTransformLookingAt(self.guide.apos[3], + self.guide.apos[4], + self.normal, + "xz", + self.negate) + + self.fk3_npo = primitive.addTransform( + self.fk2_ctl, self.getName("fk3_npo"), t) + + self.fk3_ctl = self.addCtl( + self.fk3_npo, + "fk3_ctl", + t, + self.color_fk, + "cube", + w=self.length3, + h=self.size * .1, + d=self.size * .1, + po=datatypes.Vector(.5 * self.length3 * self.n_factor, 0, 0), + tp=self.fk2_ctl) + + attribute.setKeyableAttributes(self.fk3_ctl) self.fk_ctl = [self.fk0_ctl, self.fk1_ctl, self.fk2_ctl, self.fk3_ctl] - for x in self.fk_ctl: - att.setInvertMirror(x, ["tx", "ty", "tz"]) + for x in self.fk_ctl: + attribute.setInvertMirror(x, ["tx", "ty", "tz"]) # Mid Controlers ------------------------------------ - self.knee_lvl = pri.addTransform(self.root, self.getName("knee_lvl"), tra.getTransform(self.mid1_jnt)) - self.knee_ctl = self.addCtl(self.knee_lvl, "knee_ctl", tra.getTransform(self.mid1_jnt), self.color_ik, "sphere", w=self.size*.2, tp=self.root_ctl) - att.setInvertMirror(self.knee_ctl, ["tx", "ty", "tz"]) - att.lockAttribute(self.knee_ctl, ["sx", "sy", "sz", "v"]) - self.ankle_lvl = pri.addTransform(self.root, self.getName("ankle_lvl"), tra.getTransform(self.mid2_jnt)) - self.ankle_ctl = self.addCtl(self.ankle_lvl, "ankle_ctl", tra.getTransform(self.mid2_jnt), self.color_ik, "sphere", w=self.size*.2, tp=self.knee_ctl) - att.setInvertMirror(self.ankle_ctl, ["tx", "ty", "tz"]) - att.lockAttribute(self.ankle_ctl, ["sx", "sy", "sz", "v"]) + self.knee_lvl = primitive.addTransform( + self.root, + self.getName("knee_lvl"), + transform.getTransform(self.mid1_jnt)) + + self.knee_ctl = self.addCtl( + self.knee_lvl, + "knee_ctl", + transform.getTransform(self.mid1_jnt), + self.color_ik, + "sphere", + w=self.size * .2, + tp=self.root_ctl) + + attribute.setInvertMirror(self.knee_ctl, ["tx", "ty", "tz"]) + attribute.lockAttribute(self.knee_ctl, ["sx", "sy", "sz", "v"]) + + self.ankle_lvl = primitive.addTransform( + self.root, + self.getName("ankle_lvl"), + transform.getTransform(self.mid2_jnt)) + + self.ankle_ctl = self.addCtl( + self.ankle_lvl, + "ankle_ctl", + transform.getTransform(self.mid2_jnt), + self.color_ik, + "sphere", + w=self.size * .2, + tp=self.knee_ctl) + + attribute.setInvertMirror(self.ankle_ctl, ["tx", "ty", "tz"]) + attribute.lockAttribute(self.ankle_ctl, ["sx", "sy", "sz", "v"]) # IK controls -------------------------------------------------------- - #foot IK + # foot IK if self.settings["ikOri"]: - t = tra.getTransformLookingAt(self.guide.pos["foot"], self.guide.pos["eff"], self.x_axis, "zx", False) + t = transform.getTransformLookingAt(self.guide.pos["foot"], + self.guide.pos["eff"], + self.x_axis, + "zx", + False) else: - t = tra.getTransformLookingAt(self.guide.apos[3], self.guide.apos[4], self.normal, "z-x", False) - - self.ik_cns = pri.addTransform(self.root_ctl, self.getName("ik_cns"), t) - self.ikcns_ctl = self.addCtl(self.ik_cns, "ikcns_ctl", t, self.color_ik, "null", w=self.size*.12, tp=self.ankle_ctl) - att.setInvertMirror(self.ikcns_ctl, ["tx"]) - att.lockAttribute(self.ikcns_ctl, ["sx", "sy", "sz", "v"]) - - self.ik_ctl = self.addCtl(self.ikcns_ctl, "ik_ctl", t, self.color_ik, "cube", w=self.size*.12, h=self.size*.12, d=self.size*.12, tp=self.ikcns_ctl) - att.setKeyableAttributes(self.ik_ctl) - att.setRotOrder(self.ik_ctl, "XZY") - att.setInvertMirror(self.ik_ctl, ["tx", "ry", "rz"]) - att.lockAttribute(self.ik_ctl, ["sx", "sy", "sz", "v"]) + t = transform.getTransformLookingAt(self.guide.apos[3], + self.guide.apos[4], + self.normal, + "z-x", + False) + + self.ik_cns = primitive.addTransform( + self.root_ctl, self.getName("ik_cns"), t) + + self.ikcns_ctl = self.addCtl(self.ik_cns, + "ikcns_ctl", + t, + self.color_ik, + "null", + w=self.size * .12, + tp=self.ankle_ctl) + + attribute.setInvertMirror(self.ikcns_ctl, ["tx"]) + attribute.lockAttribute(self.ikcns_ctl, ["sx", "sy", "sz", "v"]) + + self.ik_ctl = self.addCtl(self.ikcns_ctl, + "ik_ctl", + t, + self.color_ik, + "cube", + w=self.size * .12, + h=self.size * .12, + d=self.size * .12, + tp=self.ikcns_ctl) + attribute.setKeyableAttributes(self.ik_ctl) + attribute.setRotOrder(self.ik_ctl, "XZY") + attribute.setInvertMirror(self.ik_ctl, ["tx", "ry", "rz"]) + attribute.lockAttribute(self.ik_ctl, ["sx", "sy", "sz", "v"]) # 2 bones ik layer - self.ik2b_ikCtl_ref = pri.addTransform(self.ik_ctl, self.getName("ik2B_A_ref"), t) - self.ik2b_bone_ref = pri.addTransform(self.chain3bones[3], self.getName("ik2B_B_ref"), t) - self.ik2b_blend = pri.addTransform(self.ik_ctl, self.getName("ik2B_blend"), t) - - self.roll_ctl = self.addCtl(self.ik2b_blend, "roll_ctl", t, self.color_ik, "crossarrow", w=self.length2*.5*self.n_factor, tp=self.ik_ctl) - self.ik2b_ik_npo = pri.addTransform(self.roll_ctl, self.getName("ik2B_ik_npo"), tra.getTransform(self.chain3bones[-1])) - self.ik2b_ik_ref = pri.addTransformFromPos(self.ik2b_ik_npo, self.getName("ik2B_ik_ref"), self.guide.pos["ankle"]) - att.lockAttribute(self.roll_ctl, ["tx", "ty", "tz", "sx", "sy", "sz", "v"]) + self.ik2b_ikCtl_ref = primitive.addTransform( + self.ik_ctl, self.getName("ik2B_A_ref"), t) + self.ik2b_bone_ref = primitive.addTransform( + self.chain3bones[3], self.getName("ik2B_B_ref"), t) + self.ik2b_blend = primitive.addTransform( + self.ik_ctl, self.getName("ik2B_blend"), t) + + self.roll_ctl = self.addCtl(self.ik2b_blend, + "roll_ctl", + t, + self.color_ik, + "crossarrow", + w=self.length2 * .5 * self.n_factor, + tp=self.ik_ctl) + + self.ik2b_ik_npo = primitive.addTransform( + self.roll_ctl, + self.getName("ik2B_ik_npo"), + transform.getTransform(self.chain3bones[-1])) + + self.ik2b_ik_ref = primitive.addTransformFromPos( + self.ik2b_ik_npo, + self.getName("ik2B_ik_ref"), + self.guide.pos["ankle"]) + + attribute.lockAttribute( + self.roll_ctl, ["tx", "ty", "tz", "sx", "sy", "sz", "v"]) # upv v = self.guide.apos[2] - self.guide.apos[0] v = self.normal ^ v v.normalize() - v *= self.size*.5 + v *= self.size * .5 v += self.guide.apos[1] - self.upv_lvl = pri.addTransformFromPos(self.root, self.getName("upv_lvl"), v) - self.upv_cns = pri.addTransformFromPos(self.upv_lvl, self.getName("upv_cns"), v) + self.upv_lvl = primitive.addTransformFromPos( + self.root, self.getName("upv_lvl"), v) + self.upv_cns = primitive.addTransformFromPos( + self.upv_lvl, self.getName("upv_cns"), v) + + self.upv_ctl = self.addCtl(self.upv_cns, + "upv_ctl", + transform.getTransform(self.upv_cns), + self.color_ik, + "diamond", + w=self.size * .12, + tp=self.ik_ctl) - self.upv_ctl = self.addCtl(self.upv_cns, "upv_ctl", tra.getTransform(self.upv_cns), self.color_ik, "diamond", w=self.size*.12, tp=self.ik_ctl) - att.setInvertMirror(self.upv_ctl, ["tx"]) - att.setKeyableAttributes(self.upv_ctl, ["tx", "ty", "tz"]) + attribute.setInvertMirror(self.upv_ctl, ["tx"]) + attribute.setKeyableAttributes(self.upv_ctl, ["tx", "ty", "tz"]) - # Soft IK objects 3 bones chain -------------------------------------------------------------------------------------------- - t = tra.getTransformLookingAt(self.guide.pos["root"], self.guide.pos["foot"], self.x_axis, "zx", False) - self.aim_tra = pri.addTransform(self.root_ctl, self.getName("aimSoftIK"), t) + # Soft IK objects 3 bones chain -------------------------------- + t = transform.getTransformLookingAt(self.guide.pos["root"], + self.guide.pos["foot"], + self.x_axis, + "zx", + False) - t = tra.getTransformFromPos(self.guide.pos["foot"]) - self.wristSoftIK = pri.addTransform(self.aim_tra, self.getName("wristSoftIK"), t) + self.aim_tra = primitive.addTransform( + self.root_ctl, self.getName("aimSoftIK"), t) - self.softblendLoc = pri.addTransform(self.root, self.getName("softblendLoc"), t) + t = transform.getTransformFromPos(self.guide.pos["foot"]) + self.wristSoftIK = primitive.addTransform( + self.aim_tra, self.getName("wristSoftIK"), t) - # Soft IK objects 2 Bones chain -------------------------------------------------------------------------------------------- - t = tra.getTransformLookingAt(self.guide.pos["root"], self.guide.pos["ankle"], self.x_axis, "zx", False) - self.aim_tra2 = pri.addTransform(self.root_ctl, self.getName("aimSoftIK2"), t) + self.softblendLoc = primitive.addTransform( + self.root, self.getName("softblendLoc"), t) - t = tra.getTransformFromPos(self.guide.pos["ankle"]) - self.ankleSoftIK = pri.addTransform(self.aim_tra2, self.getName("ankleSoftIK"), t) + # Soft IK objects 2 Bones chain ---------------------------- + t = transform.getTransformLookingAt(self.guide.pos["root"], + self.guide.pos["ankle"], + self.x_axis, + "zx", + False) - self.softblendLoc2 = pri.addTransform(self.root, self.getName("softblendLoc2"), t) + self.aim_tra2 = primitive.addTransform( + self.root_ctl, self.getName("aimSoftIK2"), t) + + t = transform.getTransformFromPos(self.guide.pos["ankle"]) + + self.ankleSoftIK = primitive.addTransform( + self.aim_tra2, self.getName("ankleSoftIK"), t) + + self.softblendLoc2 = primitive.addTransform( + self.root, self.getName("softblendLoc2"), t) # References -------------------------------------- - self.ik_ref = pri.addTransform(self.ik_ctl, self.getName("ik_ref"), tra.getTransform(self.ik_ctl)) - self.fk_ref = pri.addTransform(self.fk_ctl[3], self.getName("fk_ref"), tra.getTransform(self.ik_ctl)) + self.ik_ref = primitive.addTransform( + self.ik_ctl, + self.getName("ik_ref"), + transform.getTransform(self.ik_ctl)) + self.fk_ref = primitive.addTransform( + self.fk_ctl[3], + self.getName("fk_ref"), + transform.getTransform(self.ik_ctl)) # twist references -------------------------------------- - self.rollRef = pri.add2DChain(self.root, self.getName("rollChain"), self.guide.apos[:2], self.normal, False, self.WIP) + self.rollRef = primitive.add2DChain(self.root, + self.getName("rollChain"), + self.guide.apos[:2], + self.normal, + False, + self.WIP) + + self.tws0_loc = primitive.addTransform( + self.rollRef[0], + self.getName("tws0_loc"), + transform.getTransform(self.legBones[0])) + + self.tws0_rot = primitive.addTransform( + self.tws0_loc, + self.getName("tws0_rot"), + transform.getTransform(self.legBones[0])) - self.tws0_loc = pri.addTransform(self.rollRef[0], self.getName("tws0_loc"), tra.getTransform(self.legBones[0])) - self.tws0_rot = pri.addTransform(self.tws0_loc, self.getName("tws0_rot"), tra.getTransform(self.legBones[0])) self.tws0_rot.setAttr("sx", .001) - self.tws1_loc = pri.addTransform(self.mid1_jnt, self.getName("tws1_loc"), tra.getTransform(self.mid1_jnt)) - self.tws1_rot = pri.addTransform(self.tws1_loc, self.getName("tws1_rot"), tra.getTransform(self.mid1_jnt)) + self.tws1_loc = primitive.addTransform( + self.mid1_jnt, + self.getName("tws1_loc"), + transform.getTransform(self.mid1_jnt)) + + self.tws1_rot = primitive.addTransform( + self.tws1_loc, + self.getName("tws1_rot"), + transform.getTransform(self.mid1_jnt)) + self.tws1_rot.setAttr("sx", .001) - self.tws2_loc = pri.addTransform(self.mid2_jnt, self.getName("tws2_loc"), tra.getTransform(self.mid2_jnt)) - self.tws2_rot = pri.addTransform(self.tws2_loc, self.getName("tws2_rot"), tra.getTransform(self.mid2_jnt)) + self.tws2_loc = primitive.addTransform( + self.mid2_jnt, + self.getName("tws2_loc"), + transform.getTransform(self.mid2_jnt)) + + self.tws2_rot = primitive.addTransform( + self.tws2_loc, + self.getName("tws2_rot"), + transform.getTransform(self.mid2_jnt)) + self.tws2_rot.setAttr("sx", .001) - self.tws3_loc = pri.addTransform(self.legBones[3], self.getName("tws3_loc"), tra.getTransform(self.legBones[3])) - self.tws3_rot = pri.addTransform(self.tws3_loc, self.getName("tws3_rot"), tra.getTransform(self.legBones[3])) + self.tws3_loc = primitive.addTransform( + self.legBones[3], + self.getName("tws3_loc"), + transform.getTransform(self.legBones[3])) + + self.tws3_rot = primitive.addTransform( + self.tws3_loc, + self.getName("tws3_rot"), + transform.getTransform(self.legBones[3])) + self.tws3_rot.setAttr("sx", .001) # Divisions ---------------------------------------- - # We have at least one division at the start, the end and one for the knee and one ankle - self.divisions = self.settings["div0"] + self.settings["div1"] + self.settings["div2"] + 4 + # We have at least one division at the start, the end and one for + # the knee and one ankle + o_set = self.settings + self.divisions = o_set["div0"] + o_set["div1"] + o_set["div2"] + 4 self.div_cns = [] for i in range(self.divisions): - div_cns = pri.addTransform(self.root_ctl, self.getName("div%s_loc" % i)) + div_cns = primitive.addTransform(self.root_ctl, + self.getName("div%s_loc" % i)) self.div_cns.append(div_cns) self.jnt_pos.append([div_cns, i]) # End reference ------------------------------------ # To help the deformation on the foot - self.end_ref = pri.addTransform(self.tws3_rot, self.getName("end_ref"), tra.getTransform(self.legBones[3])) + self.end_ref = primitive.addTransform( + self.tws3_rot, + self.getName("end_ref"), + transform.getTransform(self.legBones[3])) self.jnt_pos.append([self.end_ref, 'end']) - def addAttributes(self): - self.blend_att = self.addAnimParam("blend", "Fk/Ik Blend", "double", self.settings["blend"], 0, 1) - self.fullIK_attr = self.addAnimParam("fullIK", "Full 3 bones IK", "double", self.settings["full3BonesIK"],0,1) - self.soft_attr = self.addAnimParam("softIKRange", "Soft IK Range", "double", 0.0001, 0.0001,100) - self.softSpeed_attr = self.addAnimParam("softIKSpeed", "Soft IK Speed", "double", 2.5,1.001,10) - self.stretch_attr = self.addAnimParam("stretch", "Stretch", "double", 0,0,1) - self.volume_att = self.addAnimParam("volume", "Volume", "double", 1, 0, 1) - self.roll_att = self.addAnimParam("roll", "Roll", "double", 0, -180, 180) - - self.roundnessKnee_att = self.addAnimParam("roundnessKnee", "Roundness Knee", "double", 0, 0, self.size) - self.roundnessAnkle_att = self.addAnimParam("roundnessAnkle", "Roundness Ankle", "double", 0, 0, self.size) - - self.boneALenghtMult_attr = self.addAnimParam("boneALenMult", "Bone A Mult", "double", 1) - self.boneBLenghtMult_attr = self.addAnimParam("boneBLenMult", "Bone B Mult", "double", 1) - self.boneCLenghtMult_attr = self.addAnimParam("boneCLenMult", "Bone C Mult", "double", 1) - self.boneALenght_attr = self.addAnimParam("boneALen", "Bone A Length", "double", self.length0, keyable=False) - self.boneBLenght_attr = self.addAnimParam("boneBLen", "Bone B Length", "double", self.length1, keyable=False) - self.boneCLenght_attr = self.addAnimParam("boneCLen", "Bone C Length", "double", self.length2, keyable=False) + self.blend_att = self.addAnimParam( + "blend", "Fk/Ik Blend", "double", self.settings["blend"], 0, 1) + self.fullIK_attr = self.addAnimParam( + "fullIK", + "Full 3 bones IK", + "double", + self.settings["full3BonesIK"], 0, 1) + self.soft_attr = self.addAnimParam( + "softIKRange", "Soft IK Range", "double", 0.0001, 0.0001, 100) + self.softSpeed_attr = self.addAnimParam( + "softIKSpeed", "Soft IK Speed", "double", 2.5, 1.001, 10) + self.stretch_attr = self.addAnimParam( + "stretch", "Stretch", "double", 0, 0, 1) + self.volume_att = self.addAnimParam( + "volume", "Volume", "double", 1, 0, 1) + self.roll_att = self.addAnimParam( + "roll", "Roll", "double", 0, -180, 180) + + self.roundnessKnee_att = self.addAnimParam( + "roundnessKnee", "Roundness Knee", "double", 0, 0, self.size) + self.roundnessAnkle_att = self.addAnimParam( + "roundnessAnkle", "Roundness Ankle", "double", 0, 0, self.size) + + self.boneALenghtMult_attr = self.addAnimParam( + "boneALenMult", "Bone A Mult", "double", 1) + self.boneBLenghtMult_attr = self.addAnimParam( + "boneBLenMult", "Bone B Mult", "double", 1) + self.boneCLenghtMult_attr = self.addAnimParam( + "boneCLenMult", "Bone C Mult", "double", 1) + self.boneALenght_attr = self.addAnimParam( + "boneALen", "Bone A Length", "double", self.length0, keyable=False) + self.boneBLenght_attr = self.addAnimParam( + "boneBLen", "Bone B Length", "double", self.length1, keyable=False) + self.boneCLenght_attr = self.addAnimParam( + "boneCLen", "Bone C Length", "double", self.length2, keyable=False) # Ref if self.settings["ikrefarray"]: ref_names = self.settings["ikrefarray"].split(",") if len(ref_names) > 1: - self.ikref_att = self.addAnimEnumParam("ikref", "Ik Ref", 0, self.settings["ikrefarray"].split(",")) + self.ikref_att = self.addAnimEnumParam( + "ikref", + "Ik Ref", + 0, + self.settings["ikrefarray"].split(",")) if self.settings["upvrefarray"]: ref_names = self.settings["upvrefarray"].split(",") ref_names = ["Auto"] + ref_names if len(ref_names) > 1: - self.upvref_att = self.addAnimEnumParam("upvref", "UpV Ref", 0, ref_names) + self.upvref_att = self.addAnimEnumParam("upvref", + "UpV Ref", + 0, + ref_names) # Setup ------------------------------------------ # Eval Fcurve - self.st_value = fcu.getFCurveValues(self.settings["st_profile"], self.divisions) - self.sq_value = fcu.getFCurveValues(self.settings["sq_profile"], self.divisions) - - self.st_att = [ self.addSetupParam("stretch_%s"%i, "Stretch %s"%i, "double", self.st_value[i], -1, 0) for i in range(self.divisions) ] - self.sq_att = [ self.addSetupParam("squash_%s"%i, "Squash %s"%i, "double", self.sq_value[i], 0, 1) for i in range(self.divisions) ] + self.st_value = fcurve.getFCurveValues(self.settings["st_profile"], + self.divisions) + self.sq_value = fcurve.getFCurveValues(self.settings["sq_profile"], + self.divisions) + + self.st_att = [self.addSetupParam("stretch_%s" % i, + "Stretch %s" % i, + "double", + self.st_value[i], + -1, + 0) + for i in range(self.divisions)] + + self.sq_att = [self.addSetupParam("squash_%s" % i, + "Squash %s" % i, + "double", + self.sq_value[i], + 0, + 1) + for i in range(self.divisions)] + + self.resample_att = self.addSetupParam( + "resample", "Resample", "bool", True) + self.absolute_att = self.addSetupParam( + "absolute", "Absolute", "bool", False) + + defValu = self.chain3bones[1].attr("jointOrientZ").get() / 2 + self.kneeFlipOffset_att = self.addSetupParam("kneeFlipOffset", + "Knee Flip Offset", + "double", + defValu, + -180, + 180) + defValu = self.chain3bones[2].attr("jointOrientZ").get() / 2 + self.ankleFlipOffset_att = self.addSetupParam("ankleFlipOffset", + "Ankle Flip Offset", + "double", + defValu, + -180, + 180) - self.resample_att = self.addSetupParam("resample", "Resample", "bool", True) - self.absolute_att = self.addSetupParam("absolute", "Absolute", "bool", False) - - defValu = self.chain3bones[1].attr("jointOrientZ").get() /2 - self.kneeFlipOffset_att = self.addSetupParam("kneeFlipOffset", "Knee Flip Offset", "double", defValu, -180, 180) - defValu = self.chain3bones[2].attr("jointOrientZ").get()/2 - self.ankleFlipOffset_att = self.addSetupParam("ankleFlipOffset", "Ankle Flip Offset", "double", defValu, -180, 180) + # ===================================================== + # OPERATORS + # ===================================================== + def addOperators(self): + """Create operators and set the relations for the component rig + Apply operators, constraints, expressions to the hierarchy. + In order to keep the code clean and easier to debug, + we shouldn't create any new object in this method. - def addOperators(self): + """ if self.settings["ikSolver"]: self.ikSolver = "ikRPsolver" @@ -290,226 +593,370 @@ def addOperators(self): pm.mel.eval("ikSpringSolver;") self.ikSolver = "ikSpringSolver" - # 1 bone chain Upv ref ===================================================================================== - self.ikHandleUpvRef = pri.addIkHandle(self.root, self.getName("ikHandleLegChainUpvRef"), self.legChainUpvRef, "ikSCsolver") + # 1 bone chain Upv ref =============================== + self.ikHandleUpvRef = primitive.addIkHandle( + self.root, + self.getName("ikHandleLegChainUpvRef"), + self.legChainUpvRef, + "ikSCsolver") pm.pointConstraint(self.ik_ctl, self.ikHandleUpvRef) - pm.parentConstraint( self.legChainUpvRef[0], self.upv_cns, mo=True) + pm.parentConstraint(self.legChainUpvRef[0], self.upv_cns, mo=True) - # mid joints ===================================================================================== - for xjnt, midJ in zip(self.legBones[1:3], [self.mid1_jnt, self.mid2_jnt]): - nod.createPairBlend(None, xjnt, .5, 1, midJ) - pm.connectAttr(xjnt+".translate", midJ+".translate", f=True) + # mid joints ================================================ + for xjnt, midJ in zip(self.legBones[1:3], + [self.mid1_jnt, self.mid2_jnt]): + node.createPairBlend(None, xjnt, .5, 1, midJ) + pm.connectAttr(xjnt + ".translate", midJ + ".translate", f=True) pm.parentConstraint(self.mid1_jnt, self.knee_lvl) pm.parentConstraint(self.mid2_jnt, self.ankle_lvl) - #joint length multiply - multJnt1_node = nod.createMulNode(self.boneALenght_attr, self.boneALenghtMult_attr) - multJnt2_node = nod.createMulNode(self.boneBLenght_attr, self.boneBLenghtMult_attr) - multJnt3_node = nod.createMulNode(self.boneCLenght_attr, self.boneCLenghtMult_attr) + # joint length multiply + multJnt1_node = node.createMulNode(self.boneALenght_attr, + self.boneALenghtMult_attr) + multJnt2_node = node.createMulNode(self.boneBLenght_attr, + self.boneBLenghtMult_attr) + multJnt3_node = node.createMulNode(self.boneCLenght_attr, + self.boneCLenghtMult_attr) - # # IK 3 bones ====================================================================================================== + # # IK 3 bones =============================================== - self.ikHandle = pri.addIkHandle(self.softblendLoc, self.getName("ik3BonesHandle"), self.chain3bones, self.ikSolver, self.upv_ctl) + self.ikHandle = primitive.addIkHandle(self.softblendLoc, + self.getName("ik3BonesHandle"), + self.chain3bones, + self.ikSolver, + self.upv_ctl) # TwistTest - if [round(elem, 4) for elem in tra.getTranslation(self.chain3bones[1])] != [round(elem, 4) for elem in self.guide.apos[1]]: - add_nodeTwist = nod.createAddNode(180.0, self.roll_att) - # pm.connectAttr(add_nodeTwist+".output", self.ikHandle.attr("twist")) + if [round(elem, 4) + for elem in transform.getTranslation(self.chain3bones[1])] \ + != [round(elem, 4) for elem in self.guide.apos[1]]: + add_nodeTwist = node.createAddNode(180.0, self.roll_att) else: - add_nodeTwist = nod.createAddNode(0, self.roll_att) - # pm.connectAttr(self.roll_att, self.ikHandle.attr("twist")) + add_nodeTwist = node.createAddNode(0, self.roll_att) if self.negate: mulVal = 1 else: mulVal = -1 - nod.createMulNode(add_nodeTwist+".output", mulVal, self.ikHandle.attr("twist")) - # pm.connectAttr(add_nodeTwist+".output", self.ikHandle.attr("twist")) + node.createMulNode( + add_nodeTwist + ".output", mulVal, self.ikHandle.attr("twist")) # stable spring solver doble rotation pm.pointConstraint(self.root_ctl, self.chain3bones[0]) # softIK 3 bones operators - aop.aimCns(self.aim_tra, self.ik_ref, axis="zx", wupType=4, wupVector=[1,0,0], wupObject=self.root_ctl, maintainOffset=False) + applyop.aimCns(self.aim_tra, + self.ik_ref, + axis="zx", + wupType=4, + wupVector=[1, 0, 0], + wupObject=self.root_ctl, + maintainOffset=False) + + plusTotalLength_node = node.createPlusMinusAverage1D( + [multJnt1_node.attr("outputX"), + multJnt2_node.attr("outputX"), + multJnt3_node.attr("outputX")]) + + subtract1_node = node.createPlusMinusAverage1D( + [plusTotalLength_node.attr("output1D"), self.soft_attr], 2) + + distance1_node = node.createDistNode(self.ik_ref, self.aim_tra) + div1_node = node.createDivNode(1.0, self.rig.global_ctl + ".sx") + mult1_node = node.createMulNode(distance1_node + ".distance", + div1_node + ".outputX") + subtract2_node = node.createPlusMinusAverage1D( + [mult1_node.attr("outputX"), subtract1_node.attr("output1D")], 2) + div2_node = node.createDivNode(subtract2_node + ".output1D", + self.soft_attr) + mult2_node = node.createMulNode(-1, div2_node + ".outputX") + power_node = node.createPowNode(self.softSpeed_attr, + mult2_node + ".outputX") + mult3_node = node.createMulNode(self.soft_attr, + power_node + ".outputX") + subtract3_node = node.createPlusMinusAverage1D( + [plusTotalLength_node.attr("output1D"), + mult3_node.attr("outputX")], + 2) + + cond1_node = node.createConditionNode( + self.soft_attr, + 0, + 2, + subtract3_node + ".output1D", + plusTotalLength_node + ".output1D") + + cond2_node = node.createConditionNode(mult1_node + ".outputX", + subtract1_node + ".output1D", + 2, cond1_node + ".outColorR", + mult1_node + ".outputX") + + pm.connectAttr(cond2_node + ".outColorR", self.wristSoftIK + ".tz") + + # soft blend + pc_node = pm.pointConstraint(self.wristSoftIK, + self.ik_ref, + self.softblendLoc) + node.createReverseNode(self.stretch_attr, + pc_node + ".target[0].targetWeight") + pm.connectAttr(self.stretch_attr, + pc_node + ".target[1].targetWeight", + f=True) + + # Stretch + distance2_node = node.createDistNode(self.softblendLoc, + self.wristSoftIK) + mult4_node = node.createMulNode(distance2_node + ".distance", + div1_node + ".outputX") + + # bones + for i, mulNode in enumerate([multJnt1_node, + multJnt2_node, + multJnt3_node]): + + div3_node = node.createDivNode(mulNode + ".outputX", + plusTotalLength_node + ".output1D") + + mult5_node = node.createMulNode(mult4_node + ".outputX", + div3_node + ".outputX") + + mult6_node = node.createMulNode(self.stretch_attr, + mult5_node + ".outputX") + + node.createPlusMinusAverage1D( + [mulNode.attr("outputX"), mult6_node.attr("outputX")], + 1, + self.chain3bones[i + 1] + ".tx") + + # IK 2 bones =============================================== + + self.ikHandle2 = primitive.addIkHandle(self.softblendLoc2, + self.getName("ik2BonesHandle"), + self.chain2bones, + self.ikSolver, + self.upv_ctl) + + node.createMulNode(self.roll_att, mulVal, self.ikHandle2.attr("twist")) - plusTotalLength_node = nod.createPlusMinusAverage1D([multJnt1_node.attr("outputX"), multJnt2_node.attr("outputX"), multJnt3_node.attr("outputX")]) - subtract1_node = nod.createPlusMinusAverage1D([plusTotalLength_node.attr("output1D"), self.soft_attr],2) + # stable spring solver doble rotation + pm.pointConstraint(self.root_ctl, self.chain2bones[0]) - distance1_node = nod.createDistNode(self.ik_ref, self.aim_tra) - div1_node = nod.createDivNode(1.0, self.rig.global_ctl+".sx") - mult1_node = nod.createMulNode(distance1_node+".distance", div1_node+".outputX") - subtract2_node = nod.createPlusMinusAverage1D([mult1_node.attr("outputX"), subtract1_node.attr("output1D")],2) - div2_node = nod.createDivNode(subtract2_node+".output1D", self.soft_attr) - mult2_node = nod.createMulNode(-1, div2_node+".outputX") - power_node = nod.createPowNode( self.softSpeed_attr, mult2_node+".outputX") - mult3_node = nod.createMulNode(self.soft_attr, power_node+".outputX") - subtract3_node = nod.createPlusMinusAverage1D([plusTotalLength_node.attr("output1D"), mult3_node.attr("outputX")],2) + parentc_node = pm.parentConstraint( + self.ik2b_ikCtl_ref, self.ik2b_bone_ref, self.ik2b_blend) - cond1_node = nod.createConditionNode(self.soft_attr, 0, 2,subtract3_node+".output1D", plusTotalLength_node+".output1D") - cond2_node = nod.createConditionNode(mult1_node+".outputX", subtract1_node+".output1D", 2,cond1_node+".outColorR", mult1_node+".outputX") + node.createReverseNode(self.fullIK_attr, + parentc_node + ".target[0].targetWeight") - pm.connectAttr(cond2_node+".outColorR", self.wristSoftIK+".tz") + pm.connectAttr(self.fullIK_attr, + parentc_node + ".target[1].targetWeight", f=True) - #soft blend - pc_node = pm.pointConstraint( self.wristSoftIK, self.ik_ref, self.softblendLoc) - nod.createReverseNode(self.stretch_attr, pc_node+".target[0].targetWeight") - pm.connectAttr(self.stretch_attr, pc_node+".target[1].targetWeight", f=True) + # softIK 2 bones operators + applyop.aimCns(self.aim_tra2, + self.ik2b_ik_ref, + axis="zx", + wupType=4, + wupVector=[1, 0, 0], + wupObject=self.root_ctl, + maintainOffset=False) - #Stretch - distance2_node = nod.createDistNode(self.softblendLoc, self.wristSoftIK) - mult4_node = nod.createMulNode(distance2_node+".distance", div1_node+".outputX") + plusTotalLength_node = node.createPlusMinusAverage1D( + [multJnt1_node.attr("outputX"), multJnt2_node.attr("outputX")]) - #bones - for i, mulNode in enumerate([multJnt1_node, multJnt2_node, multJnt3_node]): - div3_node = nod.createDivNode(mulNode+".outputX", plusTotalLength_node+".output1D") - mult5_node = nod.createMulNode(mult4_node+".outputX", div3_node+".outputX") - mult6_node = nod.createMulNode(self.stretch_attr, mult5_node+".outputX") - nod.createPlusMinusAverage1D([mulNode.attr("outputX"), mult6_node.attr("outputX")],1, self.chain3bones[i+1]+".tx") + subtract1_node = node.createPlusMinusAverage1D( + [plusTotalLength_node.attr("output1D"), self.soft_attr], 2) + distance1_node = node.createDistNode(self.ik2b_ik_ref, self.aim_tra2) + div1_node = node.createDivNode(1, self.rig.global_ctl + ".sx") + mult1_node = node.createMulNode(distance1_node + ".distance", + div1_node + ".outputX") - # IK 2 bones ====================================================================================================== + subtract2_node = node.createPlusMinusAverage1D( + [mult1_node.attr("outputX"), subtract1_node.attr("output1D")], 2) - self.ikHandle2 = pri.addIkHandle(self.softblendLoc2, self.getName("ik2BonesHandle"), self.chain2bones, self.ikSolver, self.upv_ctl) + div2_node = node.createDivNode(subtract2_node + ".output1D", + self.soft_attr) - nod.createMulNode(self.roll_att, mulVal,self.ikHandle2.attr("twist")) - # pm.connectAttr(self.roll_att, self.ikHandle2.attr("twist")) + mult2_node = node.createMulNode(-1, div2_node + ".outputX") - # stable spring solver doble rotation - pm.pointConstraint(self.root_ctl, self.chain2bones[0]) - - parentc_node = pm.parentConstraint( self.ik2b_ikCtl_ref, self.ik2b_bone_ref, self.ik2b_blend) - nod.createReverseNode(self.fullIK_attr, parentc_node+".target[0].targetWeight") - pm.connectAttr(self.fullIK_attr, parentc_node+".target[1].targetWeight", f=True) + power_node = node.createPowNode(self.softSpeed_attr, + mult2_node + ".outputX") - # softIK 2 bones operators - aop.aimCns(self.aim_tra2, self.ik2b_ik_ref, axis="zx", wupType=4, wupVector=[1,0,0], wupObject=self.root_ctl, maintainOffset=False) + mult3_node = node.createMulNode(self.soft_attr, + power_node + ".outputX") - plusTotalLength_node = nod.createPlusMinusAverage1D([multJnt1_node.attr("outputX"), multJnt2_node.attr("outputX")]) - subtract1_node = nod.createPlusMinusAverage1D([plusTotalLength_node.attr("output1D"), self.soft_attr], 2) - distance1_node = nod.createDistNode(self.ik2b_ik_ref, self.aim_tra2) - div1_node = nod.createDivNode(1, self.rig.global_ctl+".sx") + subtract3_node = node.createPlusMinusAverage1D( + [plusTotalLength_node.attr("output1D"), + mult3_node.attr("outputX")], + 2) - mult1_node = nod.createMulNode(distance1_node+".distance", div1_node+".outputX") - subtract2_node = nod.createPlusMinusAverage1D([mult1_node.attr("outputX"), subtract1_node.attr("output1D")], 2) - div2_node = nod.createDivNode(subtract2_node+".output1D", self.soft_attr) - mult2_node = nod.createMulNode(-1, div2_node+".outputX") - power_node = nod.createPowNode(self.softSpeed_attr, mult2_node+".outputX") - mult3_node = nod.createMulNode(self.soft_attr, power_node+".outputX" ) - subtract3_node = nod.createPlusMinusAverage1D([plusTotalLength_node.attr("output1D"),mult3_node.attr("outputX")], 2) + cond1_node = node.createConditionNode( + self.soft_attr, + 0, + 2, + subtract3_node + ".output1D", + plusTotalLength_node + ".output1D") - cond1_node = nod.createConditionNode(self.soft_attr, 0, 2,subtract3_node+".output1D", plusTotalLength_node+".output1D") - cond2_node = nod.createConditionNode(mult1_node+".outputX", subtract1_node+".output1D", 2,cond1_node+".outColorR", mult1_node+".outputX") + cond2_node = node.createConditionNode(mult1_node + ".outputX", + subtract1_node + ".output1D", + 2, + cond1_node + ".outColorR", + mult1_node + ".outputX") - pm.connectAttr(cond2_node+".outColorR", self.ankleSoftIK+".tz") + pm.connectAttr(cond2_node + ".outColorR", self.ankleSoftIK + ".tz") - #soft blend - pc_node = pm.pointConstraint( self.ankleSoftIK, self.ik2b_ik_ref, self.softblendLoc2) - nod.createReverseNode(self.stretch_attr, pc_node+".target[0].targetWeight") - pm.connectAttr(self.stretch_attr, pc_node+".target[1].targetWeight", f=True) + # soft blend + pc_node = pm.pointConstraint(self.ankleSoftIK, + self.ik2b_ik_ref, + self.softblendLoc2) + node.createReverseNode(self.stretch_attr, + pc_node + ".target[0].targetWeight") + pm.connectAttr(self.stretch_attr, + pc_node + ".target[1].targetWeight", + f=True) - #Stretch - distance2_node = nod.createDistNode(self.softblendLoc2, self.ankleSoftIK) - mult4_node = nod.createMulNode(distance2_node+".distance", div1_node+".outputX") + # Stretch + distance2_node = node.createDistNode(self.softblendLoc2, + self.ankleSoftIK) + mult4_node = node.createMulNode(distance2_node + ".distance", + div1_node + ".outputX") for i, mulNode in enumerate([multJnt1_node, multJnt2_node]): - div3_node = nod.createDivNode(mulNode+".outputX", plusTotalLength_node+".output1D") - mult5_node = nod.createMulNode(mult4_node+".outputX", div3_node+".outputX") - mult6_node = nod.createMulNode(self.stretch_attr, mult5_node+".outputX") - nod.createPlusMinusAverage1D([mulNode.attr("outputX"), mult6_node.attr("outputX")],1, self.chain2bones[i+1]+".tx") + div3_node = node.createDivNode(mulNode + ".outputX", + plusTotalLength_node + ".output1D") + + mult5_node = node.createMulNode(mult4_node + ".outputX", + div3_node + ".outputX") + mult6_node = node.createMulNode(self.stretch_attr, + mult5_node + ".outputX") + node.createPlusMinusAverage1D([mulNode.attr("outputX"), + mult6_node.attr("outputX")], + 1, + self.chain2bones[i + 1] + ".tx") - ### IK/FK connections + # IK/FK connections for i, x in enumerate(self.fk_ctl): - pm.parentConstraint( x, self.legBonesFK[i], mo=True) + pm.parentConstraint(x, self.legBonesFK[i], mo=True) - for i, x in enumerate([self.chain2bones[0],self.chain2bones[1]] ): - pm.parentConstraint( x, self.legBonesIK[i], mo=True) + for i, x in enumerate([self.chain2bones[0], self.chain2bones[1]]): + pm.parentConstraint(x, self.legBonesIK[i], mo=True) pm.pointConstraint(self.ik2b_ik_ref, self.legBonesIK[2]) - aop.aimCns(self.legBonesIK[2], self.roll_ctl, axis="xy", wupType=4, wupVector=[0,1,0], wupObject=self.legBonesIK[1], maintainOffset=False) - pm.connectAttr( self.chain3bones[-1].attr("tx"), self.legBonesIK[-1].attr("tx")) + applyop.aimCns(self.legBonesIK[2], + self.roll_ctl, + axis="xy", + wupType=4, + wupVector=[0, 1, 0], + wupObject=self.legBonesIK[1], + maintainOffset=False) + + pm.connectAttr(self.chain3bones[-1].attr("tx"), + self.legBonesIK[-1].attr("tx")) # foot twist roll pm.orientConstraint(self.ik_ref, self.legBonesIK[-1], mo=True) - nod.createMulNode(-1, self.chain3bones[-1].attr("tx"), self.ik2b_ik_ref.attr("tx")) + node.createMulNode( + -1, self.chain3bones[-1].attr("tx"), self.ik2b_ik_ref.attr("tx")) for i, x in enumerate(self.legBones): - nod.createPairBlend(self.legBonesFK[i], self.legBonesIK[i], self.blend_att, 1, x) - + node.createPairBlend( + self.legBonesFK[i], self.legBonesIK[i], self.blend_att, 1, x) # Twist references ---------------------------------------- - self.ikhArmRef, self.tmpCrv = aop.splineIK(self.getName("legRollRef"), self.rollRef, parent=self.root, cParent=self.legBones[0] ) + self.ikhArmRef, self.tmpCrv = applyop.splineIK( + self.getName("legRollRef"), + self.rollRef, + parent=self.root, + cParent=self.legBones[0]) initRound = .001 multVal = 1 - multTangent_node = nod.createMulNode(self.roundnessKnee_att, multVal) - add_node = nod.createAddNode(multTangent_node+".outputX", initRound) - pm.connectAttr(add_node+".output", self.tws1_rot.attr("sx")) + multTangent_node = node.createMulNode(self.roundnessKnee_att, multVal) + add_node = node.createAddNode(multTangent_node + ".outputX", initRound) + pm.connectAttr(add_node + ".output", self.tws1_rot.attr("sx")) for x in ["translate"]: pm.connectAttr(self.knee_ctl.attr(x), self.tws1_loc.attr(x)) for x in "xy": - pm.connectAttr(self.knee_ctl.attr("r"+x), self.tws1_loc.attr("r"+x)) + pm.connectAttr(self.knee_ctl.attr("r" + x), + self.tws1_loc.attr("r" + x)) - multTangent_node = nod.createMulNode(self.roundnessAnkle_att, multVal) - add_node = nod.createAddNode(multTangent_node+".outputX", initRound) - pm.connectAttr(add_node+".output", self.tws2_rot.attr("sx")) + multTangent_node = node.createMulNode(self.roundnessAnkle_att, multVal) + add_node = node.createAddNode(multTangent_node + ".outputX", initRound) + pm.connectAttr(add_node + ".output", self.tws2_rot.attr("sx")) for x in ["translate"]: pm.connectAttr(self.ankle_ctl.attr(x), self.tws2_loc.attr(x)) for x in "xy": - pm.connectAttr(self.ankle_ctl.attr("r"+x), self.tws2_loc.attr("r"+x)) - + pm.connectAttr(self.ankle_ctl.attr("r" + x), + self.tws2_loc.attr("r" + x)) # Volume ------------------------------------------- - distA_node = nod.createDistNode(self.tws0_loc, self.tws1_loc) - distB_node = nod.createDistNode(self.tws1_loc, self.tws2_loc) - distC_node = nod.createDistNode(self.tws2_loc, self.tws3_loc) - add_node = nod.createAddNode(distA_node+".distance", distB_node+".distance") - add_node2 = nod.createAddNode(distC_node+".distance", add_node+".output") - div_node = nod.createDivNode(add_node2+".output", self.root_ctl.attr("sx")) - - #comp scaling - dm_node = nod.createDecomposeMatrixNode(self.root.attr("worldMatrix")) + distA_node = node.createDistNode(self.tws0_loc, self.tws1_loc) + distB_node = node.createDistNode(self.tws1_loc, self.tws2_loc) + distC_node = node.createDistNode(self.tws2_loc, self.tws3_loc) + add_node = node.createAddNode(distA_node + ".distance", + distB_node + ".distance") + add_node2 = node.createAddNode(distC_node + ".distance", + add_node + ".output") + div_node = node.createDivNode(add_node2 + ".output", + self.root_ctl.attr("sx")) - div_node2 = nod.createDivNode(div_node+".outputX", dm_node+".outputScaleX") + # comp scaling + dm_node = node.createDecomposeMatrixNode(self.root.attr("worldMatrix")) + div_node2 = node.createDivNode(div_node + ".outputX", + dm_node + ".outputScaleX") - self.volDriver_att = div_node2+".outputX" + self.volDriver_att = div_node2 + ".outputX" # Flip Offset ---------------------------------------- pm.connectAttr(self.ankleFlipOffset_att, self.tws2_loc.attr("rz")) pm.connectAttr(self.kneeFlipOffset_att, self.tws1_loc.attr("rz")) # Divisions ---------------------------------------- - # at 0 or 1 the division will follow exactly the rotation of the controler.. and we wont have this nice tangent + roll + # at 0 or 1 the division will follow exactly the rotation of the + # controler.. and we wont have this nice tangent + roll for i, div_cns in enumerate(self.div_cns): subdiv = False - if i == len(self.div_cns)-1 or i == 0: + if i == len(self.div_cns) - 1 or i == 0: subdiv = 45 else: subdiv = 45 - if i < (self.settings["div0"]+1): - perc = i*.333 / (self.settings["div0"]+1.0) + if i < (self.settings["div0"] + 1): + perc = i * .333 / (self.settings["div0"] + 1.0) - elif i < (self.settings["div0"] + self.settings["div1"]+2): - perc = i*.333 / (self.settings["div0"]+1.0) + elif i < (self.settings["div0"] + self.settings["div1"] + 2): + perc = i * .333 / (self.settings["div0"] + 1.0) else: - perc = .5 + (i-self.settings["div0"]-3.0)*.5 / (self.settings["div1"]+1.0) - - if i < (self.settings["div0"]+2): - perc = i*.333 / (self.settings["div0"]+1.0) - - elif i < (self.settings["div0"] + self.settings["div1"]+3): - perc = .333 + (i-self.settings["div0"]-1)*.333 / (self.settings["div1"]+1.0) + perc = (.5 + + (i - self.settings["div0"] - 3.0) + * .5 + / (self.settings["div1"] + 1.0)) + + if i < (self.settings["div0"] + 2): + perc = i * .333 / (self.settings["div0"] + 1.0) + + elif i < (self.settings["div0"] + self.settings["div1"] + 3): + perc = (.333 + + (i - self.settings["div0"] - 1) + * .333 + / (self.settings["div1"] + 1.0)) else: - perc = .666 + (i-self.settings["div1"]-self.settings["div0"]-2.0)*.333 / (self.settings["div2"]+1.0) - - # we neet to offset the ankle and knee point to force the bone orientation to the nex bone span + perc = (.666 + + (i + - self.settings["div1"] + - self.settings["div0"] + - 2.0) + * .333 + / (self.settings["div2"] + 1.0)) + + # we neet to offset the ankle and knee point to force the bone + # orientation to the nex bone span if perc == .333: perc = .3338 elif perc == .666: @@ -518,40 +965,44 @@ def addOperators(self): perc = max(.001, min(.999, perc)) # Roll - node = aop.gear_rollsplinekine_op(div_cns, [self.tws0_rot, self.tws1_rot, self.tws2_rot, self.tws3_rot], perc, subdiv) + cts = [self.tws0_rot, self.tws1_rot, self.tws2_rot, self.tws3_rot] + o_node = applyop.gear_rollsplinekine_op(div_cns, cts, perc, subdiv) - pm.connectAttr(self.resample_att, node+".resample") - pm.connectAttr(self.absolute_att, node+".absolute") + pm.connectAttr(self.resample_att, o_node + ".resample") + pm.connectAttr(self.absolute_att, o_node + ".absolute") # Squash n Stretch - node = aop.gear_squashstretch2_op(div_cns, None, pm.getAttr(self.volDriver_att), "x") - pm.connectAttr(self.volume_att, node+".blend") - pm.connectAttr(self.volDriver_att, node+".driver") - pm.connectAttr(self.st_att[i], node+".stretch") - pm.connectAttr(self.sq_att[i], node+".squash") - + o_node = applyop.gear_squashstretch2_op( + div_cns, None, + pm.getAttr(self.volDriver_att), + "x") + pm.connectAttr(self.volume_att, o_node + ".blend") + pm.connectAttr(self.volDriver_att, o_node + ".driver") + pm.connectAttr(self.st_att[i], o_node + ".stretch") + pm.connectAttr(self.sq_att[i], o_node + ".squash") # Visibilities ------------------------------------- # fk - fkvis_node = nod.createReverseNode(self.blend_att) + fkvis_node = node.createReverseNode(self.blend_att) for ctrl in self.fk_ctl: for shp in ctrl.getShapes(): - pm.connectAttr(fkvis_node+".outputX", shp.attr("visibility")) + pm.connectAttr(fkvis_node + ".outputX", shp.attr("visibility")) # ik for ctrl in [self.ik_ctl, self.roll_ctl]: for shp in ctrl.getShapes(): pm.connectAttr(self.blend_att, shp.attr("visibility")) - # setup leg node scale compensate - pm.connectAttr(self.rig.global_ctl+".scale", self.setup+".scale") - + # setup leg o_node scale compensate + pm.connectAttr(self.rig.global_ctl + ".scale", self.setup + ".scale") return + # ===================================================== # CONNECTOR # ===================================================== - ## Set the relation beetween object from guide to rig.\n + def setRelation(self): + """Set the relation beetween object from guide to rig""" self.relatives["root"] = self.legBones[0] self.relatives["knee"] = self.legBones[1] self.relatives["ankle"] = self.legBones[2] @@ -566,15 +1017,16 @@ def setRelation(self): self.jointRelatives["root"] = 0 self.jointRelatives["knee"] = self.settings["div0"] + 2 - self.jointRelatives["ankle"] = len(self.div_cns)-1 + self.jointRelatives["ankle"] = len(self.div_cns) - 1 self.jointRelatives["foot"] = len(self.div_cns) - self.jointRelatives["eff"] =len(self.div_cns) + self.jointRelatives["eff"] = len(self.div_cns) - ## standard connection definition. + # standard connection definition. def connect_standard(self): self.parent.addChild(self.root) # Set the Ik Reference self.connectRef(self.settings["ikrefarray"], self.ik_cns) if self.settings["upvrefarray"]: - self.connectRef("Auto,"+self.settings["upvrefarray"], self.upv_cns, True) + self.connectRef( + "Auto," + self.settings["upvrefarray"], self.upv_cns, True) diff --git a/scripts/mgear/maya/shifter/component/leg_ms_2jnt_01/__init__.py b/scripts/mgear/maya/shifter/component/leg_ms_2jnt_01/__init__.py index 72797dd..0820824 100644 --- a/scripts/mgear/maya/shifter/component/leg_ms_2jnt_01/__init__.py +++ b/scripts/mgear/maya/shifter/component/leg_ms_2jnt_01/__init__.py @@ -1,357 +1,639 @@ -# MGEAR is under the terms of the MIT License +"""Component Leg MS 2 joints 01 module""" -# Copyright (c) 2016 Jeremie Passerin, Miquel Campos - -# Permission is hereby granted, free of charge, to any person obtaining a copy -# of this software and associated documentation files (the "Software"), to deal -# in the Software without restriction, including without limitation the rights -# to use, copy, modify, merge, publish, distribute, sublicense, and/or sell -# copies of the Software, and to permit persons to whom the Software is -# furnished to do so, subject to the following conditions: - -# The above copyright notice and this permission notice shall be included in all -# copies or substantial portions of the Software. - -# THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR -# IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, -# FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE -# AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER -# LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, -# OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE -# SOFTWARE. - -# Author: Jeremie Passerin geerem@hotmail.com www.jeremiepasserin.com -# Author: Miquel Campos hello@miquel-campos.com www.miquel-campos.com -# Date: 2016 / 10 / 10 - -# ms 2jnt feature ----------------------- -# //done//FK isolation -# //done//FK roll ctl -# //done//Independent IK-FK foot ctl -# //done//IK auto up vector(default off) -# //done//T pose centric FK ctl -# //done//knee thickness + seperate upper/lower limb roundness ctl -# //done//knee scl and foot scl(ik/fk) add to jt scl -# //done//addition limb jt layer ctl(optional) -# To Do List ------------------------------- - - -# upper sleeve lower sleeve ctl(optional) -# custom Upper limb 4 pt bezier node with input for rot interpolation - - -############################################# -# GLOBAL -############################################# -# Maya import pymel.core as pm -import pymel.core.datatypes as dt - +from pymel.core import datatypes -# mgear -from mgear.maya.shifter.component import MainComponent +from mgear.maya.shifter import component -import mgear.maya.primitive as pri -import mgear.maya.transform as tra -import mgear.maya.attribute as att -import mgear.maya.node as nod -import mgear.maya.vector as vec -import mgear.maya.applyop as aop -import mgear.maya.fcurve as fcu +from mgear.maya import node, fcurve, applyop, vector +from mgear.maya import attribute, transform, primitive ############################################# # COMPONENT ############################################# -class Component(MainComponent): - def addObjects(self): +class Component(component.Main): + """Shifter component Class""" - self.normal = self.getNormalFromPos(self.guide.apos) - self.binormal = self.getBiNormalFromPos(self.guide.apos) + # ===================================================== + # OBJECTS + # ===================================================== + def addObjects(self): + """Add all the objects needed to create the component.""" - self.length0 = vec.getDistance(self.guide.apos[0], self.guide.apos[1]) - self.length1 = vec.getDistance(self.guide.apos[1], self.guide.apos[2]) - self.length2 = vec.getDistance(self.guide.apos[2], self.guide.apos[3]) + g_apos = self.guide.apos - # FK Controlers ----------------------------------- - # *ms* set npo @ Tpose, to make the fk rotation work best with rot order"yzx" + self.normal = self.getNormalFromPos(g_apos) + self.binormal = self.getBiNormalFromPos(g_apos) - self.fk_cns = pri.addTransformFromPos(self.root, self.getName("fk_cns"), self.guide.apos[0]) + self.length0 = vector.getDistance(g_apos[0], + g_apos[1]) + self.length1 = vector.getDistance(g_apos[1], + g_apos[2]) + self.length2 = vector.getDistance(g_apos[2], + g_apos[3]) - tpv = self.guide.apos[0] + ((self.guide.apos[1] - self.guide.apos[0])*[0,1,0]) - t = tra.getTransformLookingAt(self.guide.apos[0], tpv, self.normal, "xz", self.negate) + # FK Controlers ----------------------------------- + # *ms* set npo @ Tpose, to make the fk rotation work best with + # rot order"yzx" + + self.fk_cns = primitive.addTransformFromPos( + self.root, self.getName("fk_cns"), g_apos[0]) + tpv = g_apos[0] + ((g_apos[1] - g_apos[0]) * [0, 1, 0]) + t = transform.getTransformLookingAt( + g_apos[0], tpv, self.normal, "xz", self.negate) # *ms* add FK isolation - self.fk0_npo = pri.addTransform(self.fk_cns, self.getName("fk0_npo"), t) - - t = tra.getTransformLookingAt(self.guide.apos[0], self.guide.apos[1], self.normal, "xz", self.negate) - self.fk0_ctl = self.addCtl(self.fk0_npo, "fk0_ctl", t, self.color_fk, "cube", w=self.length0*.7, h=self.size*.1, d=self.size*.1, po=dt.Vector(.35*self.length0*self.n_factor,0,0), tp=self.parentCtlTag) - att.setKeyableAttributes(self.fk0_ctl) + self.fk0_npo = primitive.addTransform( + self.fk_cns, self.getName("fk0_npo"), t) + + t = transform.getTransformLookingAt( + g_apos[0], g_apos[1], self.normal, "xz", self.negate) + + self.fk0_ctl = self.addCtl( + self.fk0_npo, + "fk0_ctl", + t, + self.color_fk, + "cube", + w=self.length0 * .7, + h=self.size * .1, + d=self.size * .1, + po=datatypes.Vector(.35 * self.length0 * self.n_factor, 0, 0), + tp=self.parentCtlTag) + + attribute.setKeyableAttributes(self.fk0_ctl) # *ms* add fk roll control Simage style - self.fk0_roll_ctl = self.addCtl(self.fk0_ctl, "fk0_roll_ctl", t, self.color_fk, "cube", w=self.length0*.3, h=self.size*.1, d=self.size*.1, po=dt.Vector(.85*self.length0*self.n_factor,0,0), tp=self.fk0_ctl) - att.setKeyableAttributes(self.fk0_roll_ctl) - self.fk0_mtx = pri.addTransform(self.root, self.getName("fk0_mtx"), t) - t = tra.setMatrixPosition(t, self.guide.apos[1]) - self.fk1_ref = pri.addTransform(self.fk0_roll_ctl, self.getName("fk1_ref"), t) - self.fk1_loc = pri.addTransform(self.root, self.getName("fk1_loc"), t) - t = tra.getTransformLookingAt(self.guide.apos[1], self.guide.apos[2], self.normal, "xz", self.negate) - - self.fk1_npo = pri.addTransform(self.fk1_loc, self.getName("fk1_npo"), t) - self.fk1_ctl = self.addCtl(self.fk1_npo, "fk1_ctl", t, self.color_fk, "cube", w=self.length1*.7, h=self.size*.1, d=self.size*.1, po=dt.Vector(.35*self.length1*self.n_factor,0,0), tp=self.fk0_roll_ctl) - att.setKeyableAttributes(self.fk1_ctl) - self.fk1_mtx = pri.addTransform(self.fk1_ctl, self.getName("fk1_mtx"), t) - self.fk1_roll_ctl = self.addCtl(self.fk1_ctl, "fk1_roll_ctl", t, self.color_fk, "cube", w=self.length1*.3, h=self.size*.1, d=self.size*.1, po=dt.Vector(.85*self.length1*self.n_factor,0,0), tp=self.fk1_ctl) - att.setKeyableAttributes(self.fk1_roll_ctl) - - - # t = tra.getTransformFromPos(self.guide.pos["ankle"]) + self.fk0_roll_ctl = self.addCtl( + self.fk0_ctl, + "fk0_roll_ctl", + t, + self.color_fk, + "cube", + w=self.length0 * .3, + h=self.size * .1, + d=self.size * .1, + po=datatypes.Vector(.85 * self.length0 * self.n_factor, 0, 0), + tp=self.fk0_ctl) + + attribute.setKeyableAttributes(self.fk0_roll_ctl) + self.fk0_mtx = primitive.addTransform( + self.root, self.getName("fk0_mtx"), t) + + t = transform.setMatrixPosition(t, g_apos[1]) + self.fk1_ref = primitive.addTransform( + self.fk0_roll_ctl, self.getName("fk1_ref"), t) + + self.fk1_loc = primitive.addTransform( + self.root, self.getName("fk1_loc"), t) + + t = transform.getTransformLookingAt( + g_apos[1], g_apos[2], self.normal, "xz", self.negate) + + self.fk1_npo = primitive.addTransform( + self.fk1_loc, self.getName("fk1_npo"), t) + + self.fk1_ctl = self.addCtl( + self.fk1_npo, + "fk1_ctl", + t, + self.color_fk, + "cube", + w=self.length1 * .7, + h=self.size * .1, + d=self.size * .1, + po=datatypes.Vector(.35 * self.length1 * self.n_factor, 0, 0), + tp=self.fk0_roll_ctl) + + attribute.setKeyableAttributes(self.fk1_ctl) + + self.fk1_mtx = primitive.addTransform( + self.fk1_ctl, self.getName("fk1_mtx"), t) + + self.fk1_roll_ctl = self.addCtl( + self.fk1_ctl, + "fk1_roll_ctl", + t, + self.color_fk, + "cube", + w=self.length1 * .3, + h=self.size * .1, + d=self.size * .1, + po=datatypes.Vector(.85 * self.length1 * self.n_factor, 0, 0), + tp=self.fk1_ctl) + + attribute.setKeyableAttributes(self.fk1_roll_ctl) + + # t = transform.getTransformFromPos(self.guide.pos["ankle"]) # *ms* buffer object to feed into ikfk solver for foot seperation - t= tra.getTransformLookingAt(self.guide.apos[2], self.guide.apos[3], self.normal, "z-x", negate=False) - - self.fk2_mtx = pri.addTransform(self.fk1_roll_ctl, self.getName("fk2_mtx"), t) + t = transform.getTransformLookingAt( + g_apos[2], g_apos[3], self.normal, "z-x", negate=False) + self.fk2_mtx = primitive.addTransform( + self.fk1_roll_ctl, self.getName("fk2_mtx"), t) # fk2_loc is need to take the effector position + bone1 rotation # fk2_npo should get offset rotation from fk2_mtx - t= tra.getTransformLookingAt(self.guide.apos[2], self.guide.apos[1], self.normal, "-xz", self.negate) - self.fk2_loc = pri.addTransform(self.root, self.getName("fk2_loc"), t) - t = tra.getTransformLookingAt(self.guide.apos[2], self.guide.apos[3], self.normal, "xz", self.negate) + t = transform.getTransformLookingAt( + g_apos[2], g_apos[1], self.normal, "-xz", self.negate) - self.fk2_npo = pri.addTransform(self.fk2_loc, self.getName("fk2_npo"), t) - self.fk2_ctl = self.addCtl(self.fk2_npo, "fk2_ctl", t, self.color_fk, "cube", w=self.length2, h=self.size*.1, d=self.size*.1, po=dt.Vector(.5*self.length2*self.n_factor,0,0), tp=self.fk1_roll_ctl) - att.setKeyableAttributes(self.fk2_ctl) + self.fk2_loc = primitive.addTransform( + self.root, self.getName("fk2_loc"), t) - self.fk_ctl = [self.fk0_roll_ctl, self.fk1_ctl, self.fk2_ctl] - self.fk_ctls = [self.fk0_ctl,self.fk0_roll_ctl, self.fk1_ctl, self.fk1_roll_ctl, self.fk2_ctl] - for x in self.fk_ctls: - att.setInvertMirror(x, ["tx", "ty", "tz"]) + t = transform.getTransformLookingAt( + g_apos[2], g_apos[3], self.normal, "xz", self.negate) + + self.fk2_npo = primitive.addTransform( + self.fk2_loc, self.getName("fk2_npo"), t) + + self.fk2_ctl = self.addCtl( + self.fk2_npo, + "fk2_ctl", + t, + self.color_fk, + "cube", + w=self.length2, + h=self.size * .1, + d=self.size * .1, + po=datatypes.Vector(.5 * self.length2 * self.n_factor, 0, 0), + tp=self.fk1_roll_ctl) - # att.setInvertMirror(self.fk0_ctl, ["tx", "ty", "tz"]) + attribute.setKeyableAttributes(self.fk2_ctl) + + self.fk_ctl = [self.fk0_roll_ctl, self.fk1_ctl, self.fk2_ctl] + self.fk_ctls = [self.fk0_ctl, self.fk0_roll_ctl, self.fk1_ctl, + self.fk1_roll_ctl, self.fk2_ctl] + for x in self.fk_ctls: + attribute.setInvertMirror(x, ["tx", "ty", "tz"]) - self.ctrn_loc = pri.addTransformFromPos(self.root, self.getName("ctrn_loc"), self.guide.apos[1]) + self.ctrn_loc = primitive.addTransformFromPos( + self.root, self.getName("ctrn_loc"), g_apos[1]) # eff npo --- take the effector output of gear ik solver - self.eff_npo = pri.addTransformFromPos(self.root, self.getName("eff_npo"), self.guide.apos[2]) + self.eff_npo = primitive.addTransformFromPos( + self.root, self.getName("eff_npo"), g_apos[2]) # eff loc --- take the fk ik blend result - self.eff_loc = pri.addTransformFromPos(self.eff_npo, self.getName("eff_loc"), self.guide.apos[2]) + self.eff_loc = primitive.addTransformFromPos( + self.eff_npo, self.getName("eff_loc"), g_apos[2]) # tws_ref - t = tra.getRotationFromAxis(dt.Vector(0,-1,0), self.normal, "xz", self.negate) - t = tra.setMatrixPosition(t, self.guide.pos["ankle"]) - self.tws_ref = pri.addTransform(self.eff_loc, self.getName("tws_ref"), t) + t = transform.getRotationFromAxis( + datatypes.Vector(0, -1, 0), self.normal, "xz", self.negate) + + t = transform.setMatrixPosition(t, self.guide.pos["ankle"]) + + self.tws_ref = primitive.addTransform( + self.eff_loc, self.getName("tws_ref"), t) # Mid Controler ------------------------------------ - self.mid_ctl = self.addCtl(self.ctrn_loc, "mid_ctl", tra.getTransform(self.ctrn_loc), self.color_ik, "sphere", w=self.size*.2, tp=self.parentCtlTag) - att.setInvertMirror(self.mid_ctl, ["tx", "ty", "tz"]) + self.mid_ctl = self.addCtl( + self.ctrn_loc, + "mid_ctl", + transform.getTransform(self.ctrn_loc), + self.color_ik, + "sphere", + w=self.size * .2, + tp=self.parentCtlTag) + + attribute.setInvertMirror(self.mid_ctl, ["tx", "ty", "tz"]) # *ms* add knee thickness # IK Controlers ----------------------------------- - self.ik_cns = pri.addTransformFromPos(self.root, self.getName("ik_cns"), self.guide.pos["ankle"]) - - self.ikcns_ctl = self.addCtl(self.ik_cns, "ikcns_ctl", tra.getTransformFromPos(self.guide.pos["ankle"]), self.color_ik, "null", w=self.size*.12, tp=self.mid_ctl) - att.setInvertMirror(self.ikcns_ctl, ["tx"]) - - m = tra.getTransformFromPos(self.guide.pos["ankle"]) - self.ik_ctl = self.addCtl(self.ikcns_ctl, "ik_ctl", m, self.color_ik, "cube", w=self.size*.12, h=self.size*.12, d=self.size*.12, tp=self.ikcns_ctl) - att.setKeyableAttributes(self.ik_ctl) - # att.setRotOrder(self.ik_ctl, "XZY") - att.setInvertMirror(self.ik_ctl, ["tx", "ry", "rz"]) + self.ik_cns = primitive.addTransformFromPos( + self.root, + self.getName("ik_cns"), + self.guide.pos["ankle"]) + + self.ikcns_ctl = self.addCtl( + self.ik_cns, + "ikcns_ctl", + transform.getTransformFromPos(self.guide.pos["ankle"]), + self.color_ik, + "null", + w=self.size * .12, + tp=self.mid_ctl) + + attribute.setInvertMirror(self.ikcns_ctl, ["tx"]) + + m = transform.getTransformFromPos(self.guide.pos["ankle"]) + self.ik_ctl = self.addCtl( + self.ikcns_ctl, + "ik_ctl", + m, + self.color_ik, + "cube", + w=self.size * .12, + h=self.size * .12, + d=self.size * .12, + tp=self.ikcns_ctl) + + attribute.setKeyableAttributes(self.ik_ctl) + attribute.setInvertMirror(self.ik_ctl, ["tx", "ry", "rz"]) # upv - v = self.guide.apos[2] - self.guide.apos[0] + v = g_apos[2] - g_apos[0] v = self.normal ^ v v.normalize() - v *= self.size*.5 - v += self.guide.apos[1] + v *= self.size * .5 + v += g_apos[1] # *ms* auto up vector ------------------------------ - self.upv_cns = pri.addTransformFromPos(self.root, self.getName("upv_cns"), self.guide.apos[0]) - self.upv_auv = pri.addTransformFromPos(self.root, self.getName("upv_auv"), self.guide.apos[0]) - self.upv_mtx = pri.addTransformFromPos(self.upv_cns, self.getName("upv_mtx"), self.guide.apos[0]) - - self.upv_npo = pri.addTransformFromPos(self.upv_mtx, self.getName("upv_npo"), v) - self.upv_ctl = self.addCtl(self.upv_npo, "upv_ctl", tra.getTransform(self.upv_npo), self.color_ik, "diamond", w=self.size*.12, tp=self.ik_ctl) - att.setKeyableAttributes(self.upv_ctl, self.t_params) - att.setInvertMirror(self.upv_ctl, ["tx"]) + self.upv_cns = primitive.addTransformFromPos( + self.root, self.getName("upv_cns"), g_apos[0]) + self.upv_auv = primitive.addTransformFromPos( + self.root, self.getName("upv_auv"), g_apos[0]) + self.upv_mtx = primitive.addTransformFromPos( + self.upv_cns, self.getName("upv_mtx"), g_apos[0]) + self.upv_npo = primitive.addTransformFromPos( + self.upv_mtx, self.getName("upv_npo"), v) + self.upv_ctl = self.addCtl(self.upv_npo, + "upv_ctl", + transform.getTransform(self.upv_npo), + self.color_ik, + "diamond", + w=self.size * .12, + tp=self.ik_ctl) + attribute.setKeyableAttributes(self.upv_ctl, self.t_params) + attribute.setInvertMirror(self.upv_ctl, ["tx"]) # References -------------------------------------- # Calculate again the transfor for the IK ref. This way align with FK - self.ik_ref = pri.addTransform(self.ik_ctl, self.getName("ik_ref"), tra.getTransform(self.ik_ctl)) - self.fk_ref = pri.addTransform(self.fk_ctl[2], self.getName("fk_ref"), tra.getTransform(self.ik_ctl)) + self.ik_ref = primitive.addTransform( + self.ik_ctl, + self.getName("ik_ref"), + transform.getTransform(self.ik_ctl)) + self.fk_ref = primitive.addTransform( + self.fk_ctl[2], + self.getName("fk_ref"), + transform.getTransform(self.ik_ctl)) # auto up vector foot solver - self.upv1_auv = pri.addTransform(self.ik_ref, self.getName("upv1_auv"), tra.getTransform(self.ik_ctl)) - self.upv2_auv = pri.addTransform(self.upv1_auv, self.getName("upv2_auv"), tra.getTransform(self.ik_ctl)) - self.upv2_auv.setAttr("tz",1) + self.upv1_auv = primitive.addTransform( + self.ik_ref, + self.getName("upv1_auv"), + transform.getTransform(self.ik_ctl)) + + self.upv2_auv = primitive.addTransform( + self.upv1_auv, + self.getName("upv2_auv"), + transform.getTransform(self.ik_ctl)) + self.upv2_auv.setAttr("tz", 1) # Chain -------------------------------------------- # take outputs of the ikfk2bone solver - self.bone0 = pri.addLocator(self.root, self.getName("0_bone"), tra.getTransform(self.fk_ctl[0])) + self.bone0 = primitive.addLocator( + self.root, + self.getName("0_bone"), + transform.getTransform(self.fk_ctl[0])) + self.bone0_shp = self.bone0.getShape() - self.bone0_shp.setAttr("localPositionX", self.n_factor*.5) + self.bone0_shp.setAttr("localPositionX", self.n_factor * .5) self.bone0_shp.setAttr("localScale", .5, 0, 0) self.bone0.setAttr("sx", self.length0) self.bone0.setAttr("visibility", False) - self.bone1 = pri.addLocator(self.root, self.getName("1_bone"), tra.getTransform(self.fk_ctl[1])) + self.bone1 = primitive.addLocator( + self.root, + self.getName("1_bone"), + transform.getTransform(self.fk_ctl[1])) + self.bone1_shp = self.bone1.getShape() - self.bone1_shp.setAttr("localPositionX", self.n_factor*.5) + self.bone1_shp.setAttr("localPositionX", self.n_factor * .5) self.bone1_shp.setAttr("localScale", .5, 0, 0) self.bone1.setAttr("sx", self.length1) self.bone1.setAttr("visibility", False) + # Roll join ref + + self.tws0_npo = primitive.addTransform( + self.root, + self.getName("tws0_npo"), + transform.getTransform(self.fk_ctl[0])) + + self.tws0_loc = primitive.addTransform( + self.tws0_npo, + self.getName("tws0_loc"), + transform.getTransform(self.fk_ctl[0])) + self.tws0_rot = primitive.addTransform( + self.tws0_loc, + self.getName("tws0_rot"), + transform.getTransform(self.fk_ctl[0])) + self.tws1_npo = primitive.addTransform( + self.ctrn_loc, + self.getName("tws1_npo"), + transform.getTransform(self.ctrn_loc)) - #Roll join ref + self.tws1_loc = primitive.addTransform( + self.tws1_npo, + self.getName("tws1_loc"), + transform.getTransform(self.ctrn_loc)) - self.tws0_npo = pri.addTransform(self.root, self.getName("tws0_npo"), tra.getTransform(self.fk_ctl[0])) - self.tws0_loc = pri.addTransform(self.tws0_npo, self.getName("tws0_loc"), tra.getTransform(self.fk_ctl[0])) - self.tws0_rot = pri.addTransform(self.tws0_loc, self.getName("tws0_rot"), tra.getTransform(self.fk_ctl[0])) + self.tws1_rot = primitive.addTransform( + self.tws1_loc, + self.getName("tws1_rot"), + transform.getTransform(self.ctrn_loc)) - self.tws1_npo = pri.addTransform(self.ctrn_loc, self.getName("tws1_npo"), tra.getTransform(self.ctrn_loc)) - self.tws1_loc = pri.addTransform(self.tws1_npo, self.getName("tws1_loc"), tra.getTransform(self.ctrn_loc)) - self.tws1_rot = pri.addTransform(self.tws1_loc, self.getName("tws1_rot"), tra.getTransform(self.ctrn_loc)) + self.tws2_loc = primitive.addTransform( + self.tws1_npo, + self.getName("tws2_loc"), + transform.getTransform(self.ctrn_loc)) - self.tws2_loc = pri.addTransform(self.tws1_npo, self.getName("tws2_loc"), tra.getTransform(self.ctrn_loc)) - self.tws2_rot = pri.addTransform(self.tws2_loc, self.getName("tws2_rot"), tra.getTransform(self.ctrn_loc)) + self.tws2_rot = primitive.addTransform( + self.tws2_loc, + self.getName("tws2_rot"), + transform.getTransform(self.ctrn_loc)) - # self.tws3_npo = pri.addTransform(self.root, self.getName("tws3_npo"), tra.getTransform(self.fk_ctl[2])) - # self.tws3_loc = pri.addTransform(self.tws3_npo, self.getName("tws3_loc"), tra.getTransform(self.fk_ctl[2])) - # self.tws3_rot = pri.addTransform(self.tws3_loc, self.getName("tws3_rot"), tra.getTransform(self.fk_ctl[2])) - t = t = tra.getTransformLookingAt(self.guide.apos[2], self.guide.apos[1], self.normal, "-xz", self.negate) - self.tws3_npo = pri.addTransform(self.root, self.getName("tws3_npo"), t) - self.tws3_loc = pri.addTransform(self.tws3_npo, self.getName("tws3_loc"), t) - self.tws3_rot = pri.addTransform(self.tws3_loc, self.getName("tws3_rot"), t) + t = transform.getTransformLookingAt( + g_apos[2], g_apos[1], self.normal, "-xz", self.negate) + self.tws3_npo = primitive.addTransform( + self.root, self.getName("tws3_npo"), t) + + self.tws3_loc = primitive.addTransform( + self.tws3_npo, self.getName("tws3_loc"), t) + + self.tws3_rot = primitive.addTransform( + self.tws3_loc, self.getName("tws3_rot"), t) # Divisions ---------------------------------------- - # We have at least one division at the start, the end and one for the knee. + 2 for knee angle control + # We have at least one division at the start, the end and one for + # the knee. + 2 for knee angle control # separate up and dn limb self.divisions = self.settings["div0"] + self.settings["div1"] + 3 + 2 - self.divisions0 = self.settings["div0"] +2 - self.divisions1 = self.settings["div1"] +2 + self.divisions0 = self.settings["div0"] + 2 + self.divisions1 = self.settings["div1"] + 2 self.div_cns = [] self.div_cnsUp = [] self.div_cnsDn = [] self.div_ctls = [] - self.div_org = pri.addTransform(self.root, self.getName("div_org"), tra.getTransform(self.root)) + self.div_org = primitive.addTransform( + self.root, + self.getName("div_org"), + transform.getTransform(self.root)) self.previousCtlTag = self.parentCtlTag for i in range(self.divisions0): - div_cns = pri.addTransform(self.div_org, self.getName("div%s_loc" % i)) + div_cns = primitive.addTransform( + self.div_org, self.getName("div%s_loc" % i)) + if self.negate: - div_ctl = self.addCtl(div_cns, self.getName("div%s_ctl" % i), tra.getTransform(div_cns), self.color_fk, "square",d=self.size*.05,w=self.size*.1,po=dt.Vector(0,self.size*-0.05,0),ro=dt.Vector(0,0,dt.radians(90)), tp=self.previousCtlTag) + div_ctl = self.addCtl( + div_cns, + self.getName("div%s_ctl" % i), + transform.getTransform(div_cns), + self.color_fk, + "square", + d=self.size * .05, + w=self.size * .1, + po=datatypes.Vector(0, self.size * -0.05, 0), + ro=datatypes.Vector(0, 0, datatypes.radians(90)), + tp=self.previousCtlTag) else: - div_ctl = self.addCtl(div_cns, self.getName("div%s_ctl" % i), tra.getTransform(div_cns), self.color_fk, "square",d=self.size*.05,w=self.size*.1,po=dt.Vector(0,self.size*0.05,0),ro=dt.Vector(0,0,dt.radians(90)), tp=self.previousCtlTag) + div_ctl = self.addCtl( + div_cns, + self.getName("div%s_ctl" % i), + transform.getTransform(div_cns), + self.color_fk, + "square", + d=self.size * .05, + w=self.size * .1, + po=datatypes.Vector(0, self.size * 0.05, 0), + ro=datatypes.Vector(0, 0, datatypes.radians(90)), + tp=self.previousCtlTag) + self.previousCtlTag = div_ctl self.div_cns.append(div_cns) self.div_cnsUp.append(div_cns) - self.jnt_pos.append([div_ctl,i]) + self.jnt_pos.append([div_ctl, i]) self.div_ctls.append(div_ctl) # mid division d = self.divisions0 - self.div_mid = pri.addTransform(self.div_org, self.getName("div%s_loc" % d), tra.getTransform(self.mid_ctl)) + self.div_mid = primitive.addTransform( + self.div_org, + self.getName("div%s_loc" % d), + transform.getTransform(self.mid_ctl)) + if self.negate: - self.div_mid_ctl = self.addCtl(self.div_mid, self.getName("div%s_ctl" % d), tra.getTransform(self.div_mid), self.color_fk, "square",d=self.size*.05, w=self.size*.1,po=dt.Vector(0,self.size*-0.05,0), ro=dt.Vector(0,0,dt.radians(90)), tp=self.previousCtlTag) + self.div_mid_ctl = self.addCtl( + self.div_mid, + self.getName("div%s_ctl" % d), + transform.getTransform(self.div_mid), + self.color_fk, + "square", + d=self.size * .05, + w=self.size * .1, + po=datatypes.Vector(0, self.size * -0.05, 0), + ro=datatypes.Vector(0, 0, datatypes.radians(90)), + tp=self.previousCtlTag) else: - self.div_mid_ctl = self.addCtl(self.div_mid, self.getName("div%s_ctl" % d), tra.getTransform(self.div_mid), self.color_fk, "square",d=self.size*.05, w=self.size*.1,po=dt.Vector(0,self.size*0.05,0), ro=dt.Vector(0,0,dt.radians(90)), tp=self.previousCtlTag) + self.div_mid_ctl = self.addCtl( + self.div_mid, + self.getName("div%s_ctl" % d), + transform.getTransform(self.div_mid), + self.color_fk, + "square", + d=self.size * .05, + w=self.size * .1, + po=datatypes.Vector(0, self.size * 0.05, 0), + ro=datatypes.Vector(0, 0, datatypes.radians(90)), + tp=self.previousCtlTag) + self.previousCtlTag = div_ctl self.div_cns.append(self.div_mid) - self.jnt_pos.append([self.div_mid_ctl,self.divisions0]) + self.jnt_pos.append([self.div_mid_ctl, self.divisions0]) self.div_ctls.append(self.div_mid_ctl) # down division for i in range(self.divisions1): - dd = i +self.divisions1+1 - div_cns = pri.addTransform(self.div_org, self.getName("div%s_loc" % dd)) + dd = i + self.divisions1 + 1 + div_cns = primitive.addTransform( + self.div_org, self.getName("div%s_loc" % dd)) + if self.negate: - div_ctl = self.addCtl(div_cns, self.getName("div%s_ctl" % dd), tra.getTransform(div_cns), self.color_fk, "square",d=self.size*.05, w=self.size*.1,po=dt.Vector(0,self.size*-0.05,0),ro=dt.Vector(0,0,dt.radians(90)), tp=self.previousCtlTag) + div_ctl = self.addCtl( + div_cns, + self.getName("div%s_ctl" % dd), + transform.getTransform(div_cns), + self.color_fk, + "square", + d=self.size * .05, + w=self.size * .1, + po=datatypes.Vector(0, self.size * -0.05, 0), + ro=datatypes.Vector(0, 0, datatypes.radians(90)), + tp=self.previousCtlTag) else: - div_ctl = self.addCtl(div_cns, self.getName("div%s_ctl" % dd), tra.getTransform(div_cns), self.color_fk, "square",d=self.size*.05, w=self.size*.1,po=dt.Vector(0,self.size*0.05,0),ro=dt.Vector(0,0,dt.radians(90)), tp=self.previousCtlTag) + div_ctl = self.addCtl( + div_cns, + self.getName("div%s_ctl" % dd), + transform.getTransform(div_cns), + self.color_fk, + "square", + d=self.size * .05, + w=self.size * .1, + po=datatypes.Vector(0, self.size * 0.05, 0), + ro=datatypes.Vector(0, 0, datatypes.radians(90)), + tp=self.previousCtlTag) + self.previousCtlTag = div_ctl self.div_cns.append(div_cns) self.div_cnsDn.append(div_cns) - self.jnt_pos.append([div_ctl,i+self.divisions0+1]) + self.jnt_pos.append([div_ctl, i + self.divisions0 + 1]) self.div_ctls.append(div_ctl) # End reference ------------------------------------ # To help the deformation on the ankle self.jnt_pos.append([self.eff_loc, 'end']) - #match IK FK references + # match IK FK references + + self.match_fk0 = primitive.addTransform( + self.root, + self.getName("fk0_mth"), + transform.getTransform(self.fk_ctl[0])) + + self.match_fk1 = primitive.addTransform( + self.root, + self.getName("fk1_mth"), + transform.getTransform(self.fk_ctl[1])) - self.match_fk0 = pri.addTransform(self.root, self.getName("fk0_mth"), tra.getTransform(self.fk_ctl[0])) - self.match_fk1 = pri.addTransform(self.root, self.getName("fk1_mth"), tra.getTransform(self.fk_ctl[1])) - self.match_fk2 = pri.addTransform(self.ik_ref, self.getName("fk2_mth"), tra.getTransform(self.fk_ctl[2])) + self.match_fk2 = primitive.addTransform( + self.ik_ref, + self.getName("fk2_mth"), + transform.getTransform(self.fk_ctl[2])) - self.match_ik = pri.addTransform(self.fk2_ctl, self.getName("ik_mth"), tra.getTransform(self.ik_ctl)) - self.match_ikUpv = pri.addTransform(self.fk0_roll_ctl, self.getName("upv_mth"), tra.getTransform(self.upv_ctl)) + self.match_ik = primitive.addTransform( + self.fk2_ctl, + self.getName("ik_mth"), + transform.getTransform(self.ik_ctl)) + + self.match_ikUpv = primitive.addTransform( + self.fk0_roll_ctl, + self.getName("upv_mth"), + transform.getTransform(self.upv_ctl)) def addAttributes(self): # Anim ------------------------------------------- - self.blend_att = self.addAnimParam("blend", "Fk/Ik Leg", "double", self.settings["blend"], 0, 1) - self.blend2_att = self.addAnimParam("blend_foot", "Fk/Ik Foot", "double", self.settings["blend"], 0, 1) - self.auv_att = self.addAnimParam("auv", "Auto Upvector", "double", 0, 0, 1) - self.roll_att = self.addAnimParam("roll", "Roll", "double", 0, -180, 180) - - self.scale_att = self.addAnimParam("ikscale", "Scale", "double", 1, .001, 99) - self.maxstretch_att = self.addAnimParam("maxstretch", "Max Stretch", "double", self.settings["maxstretch"], 1, 99) - self.slide_att = self.addAnimParam("slide", "Slide", "double", .5, 0, 1) - self.softness_att = self.addAnimParam("softness", "Softness", "double", 0, 0, 1) - self.reverse_att = self.addAnimParam("reverse", "Reverse", "double", 0, 0, 1) - self.roundness0_att = self.addAnimParam("roundness_up", "Roundness Up", "double", 0, 0, self.size) - self.roundness1_att = self.addAnimParam("roundness_dn", "Roundness Dn", "double", 0, 0, self.size) - self.volume_att = self.addAnimParam("volume", "Volume", "double", 1, 0, 1) - self.knee_thickness_att = self.addAnimParam("kneethickness", "Knee Thickness", "double", self.settings["knee"], 0, 5) - self.jntctl_vis_att = self.addAnimParam("jntct_vis", "Joint Ctl Vis", "bool", 0,1,1) + self.blend_att = self.addAnimParam( + "blend", "Fk/Ik Leg", "double", self.settings["blend"], 0, 1) + self.blend2_att = self.addAnimParam( + "blend_foot", "Fk/Ik Foot", "double", self.settings["blend"], 0, 1) + self.auv_att = self.addAnimParam( + "auv", "Auto Upvector", "double", 0, 0, 1) + self.roll_att = self.addAnimParam( + "roll", "Roll", "double", 0, -180, 180) + self.scale_att = self.addAnimParam( + "ikscale", "Scale", "double", 1, .001, 99) + self.maxstretch_att = self.addAnimParam("maxstretch", + "Max Stretch", + "double", + self.settings["maxstretch"], + 1, + 99) + self.slide_att = self.addAnimParam( + "slide", "Slide", "double", .5, 0, 1) + self.softness_att = self.addAnimParam( + "softness", "Softness", "double", 0, 0, 1) + self.reverse_att = self.addAnimParam( + "reverse", "Reverse", "double", 0, 0, 1) + self.roundness0_att = self.addAnimParam( + "roundness_up", "Roundness Up", "double", 0, 0, self.size) + self.roundness1_att = self.addAnimParam( + "roundness_dn", "Roundness Dn", "double", 0, 0, self.size) + self.volume_att = self.addAnimParam( + "volume", "Volume", "double", 1, 0, 1) + self.knee_thickness_att = self.addAnimParam("kneethickness", + "Knee Thickness", + "double", + self.settings["knee"], + 0, + 5) + self.jntctl_vis_att = self.addAnimParam( + "jntct_vis", "Joint Ctl Vis", "bool", 0, 1, 1) # Ref if self.settings["fkrefarray"]: ref_names = self.settings["fkrefarray"].split(",") if len(ref_names) > 1: - self.ref_att = self.addAnimEnumParam("fkref", "Fk Ref", 0, self.settings["fkrefarray"].split(",")) + self.ref_att = self.addAnimEnumParam( + "fkref", + "Fk Ref", + 0, + self.settings["fkrefarray"].split(",")) if self.settings["ikrefarray"]: ref_names = self.settings["ikrefarray"].split(",") if len(ref_names) > 1: - self.ikref_att = self.addAnimEnumParam("ikref", "Ik Ref", 0, self.settings["ikrefarray"].split(",")) + self.ikref_att = self.addAnimEnumParam( + "ikref", + "Ik Ref", + 0, + self.settings["ikrefarray"].split(",")) if self.settings["upvrefarray"]: ref_names = self.settings["upvrefarray"].split(",") if len(ref_names) > 1: - self.upvref_att = self.addAnimEnumParam("upvref", "UpV Ref", 0, self.settings["upvrefarray"].split(",")) + self.upvref_att = self.addAnimEnumParam( + "upvref", + "UpV Ref", + 0, + self.settings["upvrefarray"].split(",")) # Setup ------------------------------------------ # Eval Fcurve - self.st_value = fcu.getFCurveValues(self.settings["st_profile"], self.divisions) - self.sq_value = fcu.getFCurveValues(self.settings["sq_profile"], self.divisions) - - self.st_att = [ self.addSetupParam("stretch_%s"%i, "Stretch %s"%i, "double", self.st_value[i], -1, 0) for i in range(self.divisions) ] - self.sq_att = [ self.addSetupParam("squash_%s"%i, "Squash %s"%i, "double", self.sq_value[i], 0, 1) for i in range(self.divisions) ] - - self.resample_att = self.addSetupParam("resample", "Resample", "bool", True) - self.absolute_att = self.addSetupParam("absolute", "Absolute", "bool", False) + self.st_value = fcurve.getFCurveValues( + self.settings["st_profile"], self.divisions) + self.sq_value = fcurve.getFCurveValues( + self.settings["sq_profile"], self.divisions) + + self.st_att = [self.addSetupParam("stretch_%s" % i, + "Stretch %s" % i, + "double", + self.st_value[i], -1, 0) + for i in range(self.divisions)] + + self.sq_att = [self.addSetupParam("squash_%s" % i, + "Squash %s" % i, + "double", + self.sq_value[i], + 0, + 1) + for i in range(self.divisions)] + + self.resample_att = self.addSetupParam( + "resample", "Resample", "bool", True) + self.absolute_att = self.addSetupParam( + "absolute", "Absolute", "bool", False) + # ===================================================== + # OPERATORS + # ===================================================== def addOperators(self): + """Create operators and set the relations for the component rig + Apply operators, constraints, expressions to the hierarchy. + In order to keep the code clean and easier to debug, + we shouldn't create any new object in this method. + + """ # Visibilities ------------------------------------- # fk - fkvis_node = nod.createReverseNode(self.blend_att) + fkvis_node = node.createReverseNode(self.blend_att) for shp in self.fk0_ctl.getShapes(): - pm.connectAttr(fkvis_node+".outputX", shp.attr("visibility")) + pm.connectAttr(fkvis_node + ".outputX", shp.attr("visibility")) for shp in self.fk0_roll_ctl.getShapes(): - pm.connectAttr(fkvis_node+".outputX", shp.attr("visibility")) + pm.connectAttr(fkvis_node + ".outputX", shp.attr("visibility")) for shp in self.fk1_ctl.getShapes(): - pm.connectAttr(fkvis_node+".outputX", shp.attr("visibility")) + pm.connectAttr(fkvis_node + ".outputX", shp.attr("visibility")) for shp in self.fk1_roll_ctl.getShapes(): - pm.connectAttr(fkvis_node+".outputX", shp.attr("visibility")) + pm.connectAttr(fkvis_node + ".outputX", shp.attr("visibility")) - fkvis2_node = nod.createReverseNode(self.blend2_att) + fkvis2_node = node.createReverseNode(self.blend2_att) for shp in self.fk2_ctl.getShapes(): - pm.connectAttr(fkvis2_node+".outputX", shp.attr("visibility")) + pm.connectAttr(fkvis2_node + ".outputX", shp.attr("visibility")) # ik for shp in self.upv_ctl.getShapes(): @@ -365,175 +647,262 @@ def addOperators(self): for ctl in (self.div_ctls): for shp in ctl.getShapes(): pm.connectAttr(self.jntctl_vis_att, shp.attr("visibility")) - # Controls ROT order ----------------------------------- - - att.setRotOrder(self.ik_ctl, "XZY") + # Controls ROT order ----------------------------------- + attribute.setRotOrder(self.ik_ctl, "XZY") # IK Solver ----------------------------------------- out = [self.bone0, self.bone1, self.ctrn_loc, self.eff_npo] - #self.fk_ctl = [self.fk0_roll_ctl, self.fk1_ctl, self.fk2_mtx] - node = aop.gear_ikfk2bone_op(out, self.root, self.ik_ref, self.upv_ctl, self.fk0_mtx, self.fk1_mtx, self.fk2_mtx, self.length0, self.length1, self.negate) - - pm.connectAttr(self.blend_att, node+".blend") + o_node = applyop.gear_ikfk2bone_op(out, + self.root, + self.ik_ref, + self.upv_ctl, + self.fk0_mtx, + self.fk1_mtx, + self.fk2_mtx, + self.length0, + self.length1, + self.negate) + + pm.connectAttr(self.blend_att, o_node + ".blend") if self.negate: mulVal = -1 else: mulVal = 1 - nod.createMulNode(self.roll_att, mulVal, node+".roll") - # pm.connectAttr(self.roll_att, node+".roll") - pm.connectAttr(self.scale_att, node+".scaleA") - pm.connectAttr(self.scale_att, node+".scaleB") - pm.connectAttr(self.maxstretch_att, node+".maxstretch") - pm.connectAttr(self.slide_att, node+".slide") - pm.connectAttr(self.softness_att, node+".softness") - pm.connectAttr(self.reverse_att, node+".reverse") - # update issue on effector scale interpolation, disconnect for stability + node.createMulNode(self.roll_att, mulVal, o_node + ".roll") + pm.connectAttr(self.scale_att, o_node + ".scaleA") + pm.connectAttr(self.scale_att, o_node + ".scaleB") + pm.connectAttr(self.maxstretch_att, o_node + ".maxstretch") + pm.connectAttr(self.slide_att, o_node + ".slide") + pm.connectAttr(self.softness_att, o_node + ".softness") + pm.connectAttr(self.reverse_att, o_node + ".reverse") + # update issue on effector scale interpolation, disconnect + # for stability pm.disconnectAttr(self.eff_npo.scale) - # auto upvector ------------------------------------- - + # auto upvector ------------------------------------- # leg aim - node = aop.aimCns(self.upv_auv, self.ik_ctl, axis="-yz", wupType=1, wupVector=[0,1,0], wupObject=self.upv2_auv, maintainOffset=False) - + o_node = applyop.aimCns(self.upv_auv, + self.ik_ctl, + axis="-yz", + wupType=1, + wupVector=[0, 1, 0], + wupObject=self.upv2_auv, + maintainOffset=False) # foot aim - node = aop.aimCns(self.upv1_auv, self.root, axis="yz", wupType=4, wupVector=[0,1,0], wupObject=self.root, maintainOffset=False) - + o_node = applyop.aimCns(self.upv1_auv, + self.root, + axis="yz", + wupType=4, + wupVector=[0, 1, 0], + wupObject=self.root, + maintainOffset=False) # auto upvector connection - node = aop.gear_mulmatrix_op(self.upv_auv.attr("worldMatrix"), self.upv_mtx.attr("parentInverseMatrix")) + o_node = applyop.gear_mulmatrix_op( + self.upv_auv.attr("worldMatrix"), + self.upv_mtx.attr("parentInverseMatrix")) + dm_node = pm.createNode("decomposeMatrix") - pm.connectAttr(node+".output", dm_node+".inputMatrix") + pm.connectAttr(o_node + ".output", dm_node + ".inputMatrix") pb_node = pm.createNode("pairBlend") - pb_node.attr("rotInterpolation").set (1) - pm.connectAttr(dm_node+".outputTranslate", pb_node+".inTranslate2") - pm.connectAttr(dm_node+".outputRotate", pb_node+".inRotate2") - pm.connectAttr(pb_node+".outRotate", self.upv_mtx.attr("rotate")) - pm.connectAttr(pb_node+".outTranslate", self.upv_mtx.attr("translate")) - pm.connectAttr(self.auv_att, pb_node+".weight") + pb_node.attr("rotInterpolation").set(1) + pm.connectAttr(dm_node + ".outputTranslate", pb_node + ".inTranslate2") + pm.connectAttr(dm_node + ".outputRotate", pb_node + ".inRotate2") + pm.connectAttr(pb_node + ".outRotate", self.upv_mtx.attr("rotate")) + pm.connectAttr(pb_node + ".outTranslate", + self.upv_mtx.attr("translate")) + pm.connectAttr(self.auv_att, pb_node + ".weight") # fk0 mtx parent constraint - node = aop.gear_mulmatrix_op(self.fk0_roll_ctl.attr("worldMatrix"), self.fk0_mtx.attr("parentInverseMatrix")) + o_node = applyop.gear_mulmatrix_op( + self.fk0_roll_ctl.attr("worldMatrix"), + self.fk0_mtx.attr("parentInverseMatrix")) + dm_node = pm.createNode("decomposeMatrix") - pm.connectAttr(node+".output", dm_node+".inputMatrix") - pm.connectAttr(dm_node+".outputTranslate", self.fk0_mtx.attr("translate")) - pm.connectAttr(dm_node+".outputRotate", self.fk0_mtx.attr("rotate")) + pm.connectAttr(o_node + ".output", dm_node + ".inputMatrix") + pm.connectAttr(dm_node + ".outputTranslate", + self.fk0_mtx.attr("translate")) + + pm.connectAttr(dm_node + ".outputRotate", self.fk0_mtx.attr("rotate")) # fk1 loc to fk1 ref parent constraint - node = aop.gear_mulmatrix_op(self.fk1_ref.attr("worldMatrix"), self.fk1_loc.attr("parentInverseMatrix")) + o_node = applyop.gear_mulmatrix_op( + self.fk1_ref.attr("worldMatrix"), + self.fk1_loc.attr("parentInverseMatrix")) + dm_node = pm.createNode("decomposeMatrix") - pm.connectAttr(node+".output", dm_node+".inputMatrix") - pm.connectAttr(dm_node+".outputTranslate", self.fk1_loc.attr("translate")) - pm.connectAttr(dm_node+".outputRotate", self.fk1_loc.attr("rotate")) + pm.connectAttr(o_node + ".output", dm_node + ".inputMatrix") + pm.connectAttr(dm_node + ".outputTranslate", + self.fk1_loc.attr("translate")) + + pm.connectAttr(dm_node + ".outputRotate", self.fk1_loc.attr("rotate")) # fk1 mtx orient cns to fk1 roll - pm.connectAttr(self.fk1_roll_ctl.attr("rotate"), self.fk1_mtx.attr("rotate")) + pm.connectAttr(self.fk1_roll_ctl.attr("rotate"), + self.fk1_mtx.attr("rotate")) + # fk2_loc position constraint to effector------------------------ - node = aop.gear_mulmatrix_op(self.eff_npo.attr("worldMatrix"), self.fk2_loc.attr("parentInverseMatrix")) + o_node = applyop.gear_mulmatrix_op( + self.eff_npo.attr("worldMatrix"), + self.fk2_loc.attr("parentInverseMatrix")) + dm_node = pm.createNode("decomposeMatrix") - pm.connectAttr(node+".output", dm_node+".inputMatrix") - pm.connectAttr(dm_node+".outputTranslate", self.fk2_loc.attr("translate")) + pm.connectAttr(o_node + ".output", dm_node + ".inputMatrix") + pm.connectAttr(dm_node + ".outputTranslate", + self.fk2_loc.attr("translate")) # fk2_loc rotation constraint to bone1 ------------------------ - node = aop.gear_mulmatrix_op(self.bone1.attr("worldMatrix"), self.fk2_loc.attr("parentInverseMatrix")) + o_node = applyop.gear_mulmatrix_op( + self.bone1.attr("worldMatrix"), + self.fk2_loc.attr("parentInverseMatrix")) + dm_node = pm.createNode("decomposeMatrix") - pm.connectAttr(node+".output", dm_node+".inputMatrix") - pm.connectAttr(dm_node+".outputRotate", self.fk2_loc.attr("rotate")) + pm.connectAttr(o_node + ".output", dm_node + ".inputMatrix") + pm.connectAttr(dm_node + ".outputRotate", self.fk2_loc.attr("rotate")) + # foot ikfk blending from fk ref to ik ref (serious bugfix)---- + o_node = applyop.gear_mulmatrix_op( + self.fk_ref.attr("worldMatrix"), + self.eff_loc.attr("parentInverseMatrix")) - # foot ikfk blending from fk ref to ik ref (serious bugfix)-------------------------------- - node = aop.gear_mulmatrix_op(self.fk_ref.attr("worldMatrix"), self.eff_loc.attr("parentInverseMatrix")) dm_node = pm.createNode("decomposeMatrix") pb_node = pm.createNode("pairBlend") - pb_node.attr("rotInterpolation").set (1) - pm.connectAttr(node+".output", dm_node+".inputMatrix") - pm.connectAttr(dm_node+".outputRotate", pb_node+".inRotate1") - pm.connectAttr(self.blend2_att, pb_node+".weight") - pm.connectAttr(pb_node+".outRotate", self.eff_loc.attr("rotate")) - node = aop.gear_mulmatrix_op(self.ik_ref.attr("worldMatrix"), self.eff_loc.attr("parentInverseMatrix")) + pb_node.attr("rotInterpolation").set(1) + pm.connectAttr(o_node + ".output", dm_node + ".inputMatrix") + pm.connectAttr(dm_node + ".outputRotate", pb_node + ".inRotate1") + pm.connectAttr(self.blend2_att, pb_node + ".weight") + pm.connectAttr(pb_node + ".outRotate", self.eff_loc.attr("rotate")) + + o_node = applyop.gear_mulmatrix_op( + self.ik_ref.attr("worldMatrix"), + self.eff_loc.attr("parentInverseMatrix")) + dm_node1 = pm.createNode("decomposeMatrix") - pm.connectAttr(node+".output", dm_node1+".inputMatrix") - pm.connectAttr(dm_node1+".outputRotate", pb_node+".inRotate2") + pm.connectAttr(o_node + ".output", dm_node1 + ".inputMatrix") + pm.connectAttr(dm_node1 + ".outputRotate", pb_node + ".inRotate2") # use blendcolors to blend scale bc_node = pm.createNode("blendColors") - pm.connectAttr(self.blend_att, bc_node+".blender") - pm.connectAttr(dm_node+".outputScale", bc_node+".color2") - pm.connectAttr(dm_node1+".outputScale", bc_node+".color1") - pm.connectAttr(bc_node+".output", self.eff_loc.attr("scale")) + pm.connectAttr(self.blend_att, bc_node + ".blender") + pm.connectAttr(dm_node + ".outputScale", bc_node + ".color2") + pm.connectAttr(dm_node1 + ".outputScale", bc_node + ".color1") + pm.connectAttr(bc_node + ".output", self.eff_loc.attr("scale")) # Twist references --------------------------------- - pm.connectAttr(self.mid_ctl.attr("translate"), self.tws1_npo.attr("translate")) - pm.connectAttr(self.mid_ctl.attr("rotate"), self.tws1_npo.attr("rotate")) - pm.connectAttr(self.mid_ctl.attr("scale"), self.tws1_npo.attr("scale")) + pm.connectAttr(self.mid_ctl.attr("translate"), + self.tws1_npo.attr("translate")) + pm.connectAttr(self.mid_ctl.attr("rotate"), + self.tws1_npo.attr("rotate")) + pm.connectAttr(self.mid_ctl.attr("scale"), + self.tws1_npo.attr("scale")) + o_node = applyop.gear_mulmatrix_op( + self.eff_loc.attr("worldMatrix"), + self.tws3_npo.attr("parentInverseMatrix")) - node = aop.gear_mulmatrix_op(self.eff_loc.attr("worldMatrix"), self.tws3_npo.attr("parentInverseMatrix")) dm_node = pm.createNode("decomposeMatrix") - pm.connectAttr(node+".output", dm_node+".inputMatrix") - pm.connectAttr(dm_node+".outputTranslate", self.tws3_npo.attr("translate")) - node = aop.gear_mulmatrix_op(self.bone1.attr("worldMatrix"), self.tws3_npo.attr("parentInverseMatrix")) - dm_node = pm.createNode("decomposeMatrix") - pm.connectAttr(node+".output", dm_node+".inputMatrix") - pm.connectAttr(dm_node+".outputRotate", self.tws3_npo.attr("rotate")) + pm.connectAttr(o_node + ".output", dm_node + ".inputMatrix") + + pm.connectAttr(dm_node + ".outputTranslate", + self.tws3_npo.attr("translate")) + + o_node = applyop.gear_mulmatrix_op( + self.bone1.attr("worldMatrix"), + self.tws3_npo.attr("parentInverseMatrix")) - node = aop.gear_mulmatrix_op(self.tws_ref.attr("worldMatrix"), self.tws3_rot.attr("parentInverseMatrix")) dm_node = pm.createNode("decomposeMatrix") - pm.connectAttr(node+".output", dm_node+".inputMatrix") - pm.connectAttr(dm_node+".outputRotate", self.tws3_rot.attr("rotate")) + pm.connectAttr(o_node + ".output", dm_node + ".inputMatrix") + pm.connectAttr(dm_node + ".outputRotate", self.tws3_npo.attr("rotate")) + o_node = applyop.gear_mulmatrix_op( + self.tws_ref.attr("worldMatrix"), + self.tws3_rot.attr("parentInverseMatrix")) + + dm_node = pm.createNode("decomposeMatrix") + pm.connectAttr(o_node + ".output", dm_node + ".inputMatrix") + pm.connectAttr(dm_node + ".outputRotate", self.tws3_rot.attr("rotate")) # knee thickness connection if self.negate: - node = nod.createMulNode([self.knee_thickness_att,self.knee_thickness_att], [0.5,-0.5,0], [self.tws1_loc+".translateX",self.tws2_loc+".translateX"]) + o_node = node.createMulNode( + [self.knee_thickness_att, self.knee_thickness_att], + [0.5, -0.5, 0], + [self.tws1_loc + ".translateX", self.tws2_loc + ".translateX"]) else: - node = nod.createMulNode([self.knee_thickness_att,self.knee_thickness_att], [-0.5,0.5,0], [self.tws1_loc+".translateX",self.tws2_loc+".translateX"]) + o_node = node.createMulNode( + [self.knee_thickness_att, self.knee_thickness_att], + [-0.5, 0.5, 0], + [self.tws1_loc + ".translateX", self.tws2_loc + ".translateX"]) # connect both tws1 and tws2 (mid tws) self.tws0_rot.setAttr("sx", .001) self.tws3_rot.setAttr("sx", .001) - add_node = nod.createAddNode(self.roundness0_att, .001) - pm.connectAttr(add_node+".output", self.tws1_rot.attr("sx")) + add_node = node.createAddNode(self.roundness0_att, .001) + pm.connectAttr(add_node + ".output", self.tws1_rot.attr("sx")) - add_node = nod.createAddNode(self.roundness1_att, .001) - pm.connectAttr(add_node+".output", self.tws2_rot.attr("sx")) + add_node = node.createAddNode(self.roundness1_att, .001) + pm.connectAttr(add_node + ".output", self.tws2_rot.attr("sx")) - #Roll Shoulder--use aimconstraint withour uovwctor to solve the stable twist + # Roll Shoulder--use aimconstraint withour uovwctor to solve the + # stable twist if self.negate: - node = aop.aimCns(self.tws0_loc, self.mid_ctl, axis="-xy", wupType=4, wupVector=[0,1,0], wupObject=self.tws0_npo, maintainOffset=False) + o_node = applyop.aimCns(self.tws0_loc, + self.mid_ctl, + axis="-xy", + wupType=4, + wupVector=[0, 1, 0], + wupObject=self.tws0_npo, + maintainOffset=False) else: - node = aop.aimCns(self.tws0_loc, self.mid_ctl, axis="xy", wupType=4, wupVector=[0,1,0], wupObject=self.tws0_npo, maintainOffset=False) - + o_node = applyop.aimCns(self.tws0_loc, + self.mid_ctl, + axis="xy", + wupType=4, + wupVector=[0, 1, 0], + wupObject=self.tws0_npo, + maintainOffset=False) # Volume ------------------------------------------- - distA_node = nod.createDistNode(self.tws0_loc, self.tws1_npo) - distB_node = nod.createDistNode(self.tws1_npo, self.tws3_loc) - add_node = nod.createAddNode(distA_node+".distance", distB_node+".distance") - div_node = nod.createDivNode(add_node+".output", self.root.attr("sx")) + distA_node = node.createDistNode(self.tws0_loc, self.tws1_npo) + distB_node = node.createDistNode(self.tws1_npo, self.tws3_loc) + add_node = node.createAddNode(distA_node + ".distance", + distB_node + ".distance") + div_node = node.createDivNode(add_node + ".output", + self.root.attr("sx")) dm_node = pm.createNode("decomposeMatrix") - pm.connectAttr(self.root.attr("worldMatrix"), dm_node+".inputMatrix") + pm.connectAttr(self.root.attr("worldMatrix"), dm_node + ".inputMatrix") - div_node2 = nod.createDivNode(div_node+".outputX", dm_node+".outputScaleX") - self.volDriver_att = div_node2+".outputX" + div_node2 = node.createDivNode(div_node + ".outputX", + dm_node + ".outputScaleX") + self.volDriver_att = div_node2 + ".outputX" # Divisions ---------------------------------------- # div mid constraint to mid ctl - node = aop.gear_mulmatrix_op(self.mid_ctl.attr("worldMatrix"), self.div_mid.attr("parentInverseMatrix")) + o_node = applyop.gear_mulmatrix_op( + self.mid_ctl.attr("worldMatrix"), + self.div_mid.attr("parentInverseMatrix")) + dm_node = pm.createNode("decomposeMatrix") - pm.connectAttr(node+".output", dm_node+".inputMatrix") - pm.connectAttr(dm_node+".outputTranslate", self.div_mid.attr("translate")) - pm.connectAttr(dm_node+".outputRotate", self.div_mid.attr("rotate")) + pm.connectAttr(o_node + ".output", dm_node + ".inputMatrix") + + pm.connectAttr(dm_node + ".outputTranslate", + self.div_mid.attr("translate")) - # at 0 or 1 the division will follow exactly the rotation of the controler.. and we wont have this nice tangent + roll + pm.connectAttr(dm_node + ".outputRotate", + self.div_mid.attr("rotate")) + + # at 0 or 1 the division will follow exactly the rotation of the + # controler.. and we wont have this nice tangent + roll scl_1_perc = [] scl_2_perc = [] for i, div_cnsUp in enumerate(self.div_cnsUp): - if i < (self.settings["div0"]+1): - perc = i/ (self.settings["div0"]+1.0) + if i < (self.settings["div0"] + 1): + perc = i / (self.settings["div0"] + 1.0) elif i < (self.settings["div0"] + 2): perc = .95 @@ -541,14 +910,16 @@ def addOperators(self): # Roll if self.negate: - node = aop.gear_rollsplinekine_op(div_cnsUp, [self.tws1_rot, self.tws0_rot], 1-perc, 20) + o_node = applyop.gear_rollsplinekine_op( + div_cnsUp, [self.tws1_rot, self.tws0_rot], 1 - perc, 20) else: - node = aop.gear_rollsplinekine_op(div_cnsUp, [self.tws0_rot, self.tws1_rot], perc, 20) - pm.connectAttr(self.resample_att, node+".resample") - pm.connectAttr(self.absolute_att, node+".absolute") + o_node = applyop.gear_rollsplinekine_op( + div_cnsUp, [self.tws0_rot, self.tws1_rot], perc, 20) + pm.connectAttr(self.resample_att, o_node + ".resample") + pm.connectAttr(self.absolute_att, o_node + ".absolute") - scl_1_perc.append(perc/2) + scl_1_perc.append(perc / 2) scl_2_perc.append(perc) scl_1_perc.append(0.5) scl_2_perc.append(1) @@ -556,8 +927,8 @@ def addOperators(self): if i == (0): perc = .05 - elif i < (self.settings["div1"]+1): - perc = i/ (self.settings["div1"]+1.0) + elif i < (self.settings["div1"] + 1): + perc = i / (self.settings["div1"] + 1.0) elif i < (self.settings["div1"] + 2): perc = .95 @@ -565,58 +936,63 @@ def addOperators(self): # Roll if self.negate: - node = aop.gear_rollsplinekine_op(div_cnsDn, [self.tws3_rot, self.tws2_rot], 1-perc, 20) + o_node = applyop.gear_rollsplinekine_op( + div_cnsDn, [self.tws3_rot, self.tws2_rot], 1 - perc, 20) else: - node = aop.gear_rollsplinekine_op(div_cnsDn, [self.tws2_rot, self.tws3_rot], perc, 20) - pm.connectAttr(self.resample_att, node+".resample") - pm.connectAttr(self.absolute_att, node+".absolute") + o_node = applyop.gear_rollsplinekine_op( + div_cnsDn, [self.tws2_rot, self.tws3_rot], perc, 20) + pm.connectAttr(self.resample_att, o_node + ".resample") + pm.connectAttr(self.absolute_att, o_node + ".absolute") - scl_1_perc.append(perc/2+0.5) - scl_2_perc.append(1-perc) + scl_1_perc.append(perc / 2 + 0.5) + scl_2_perc.append(1 - perc) # Squash n Stretch for i, div_cns in enumerate(self.div_cns): - node = aop.gear_squashstretch2_op(div_cns, None, pm.getAttr(self.volDriver_att), "x") - pm.connectAttr(self.volume_att, node+".blend") - pm.connectAttr(self.volDriver_att, node+".driver") - pm.connectAttr(self.st_att[i], node+".stretch") - pm.connectAttr(self.sq_att[i], node+".squash") + o_node = applyop.gear_squashstretch2_op( + div_cns, None, pm.getAttr(self.volDriver_att), "x") + pm.connectAttr(self.volume_att, o_node + ".blend") + pm.connectAttr(self.volDriver_att, o_node + ".driver") + pm.connectAttr(self.st_att[i], o_node + ".stretch") + pm.connectAttr(self.sq_att[i], o_node + ".squash") # get the first mult_node after sq op - mult_node = pm.listHistory(node, future=True )[1] + mult_node = pm.listHistory(o_node, future=True)[1] # linear blend effector scale bc_node = pm.createNode("blendColors") bc_node.setAttr("color2R", 1) bc_node.setAttr("color2G", 1) bc_node.setAttr("blender", scl_1_perc[i]) - pm.connectAttr(self.eff_loc.attr("scale"), bc_node+".color1") + pm.connectAttr(self.eff_loc.attr("scale"), bc_node + ".color1") # linear blend mid scale bc_node2 = pm.createNode("blendColors") bc_node2.setAttr("color2R", 1) bc_node2.setAttr("color2G", 1) bc_node2.setAttr("blender", scl_2_perc[i]) - pm.connectAttr(self.mid_ctl.attr("scale"), bc_node2+".color1") + pm.connectAttr(self.mid_ctl.attr("scale"), bc_node2 + ".color1") # mid_ctl scale * effector scale mult_node2 = pm.createNode("multiplyDivide") - pm.connectAttr(bc_node2+".output", mult_node2+".input1") - pm.connectAttr(bc_node+".output", mult_node2+".input2") + pm.connectAttr(bc_node2 + ".output", mult_node2 + ".input1") + pm.connectAttr(bc_node + ".output", mult_node2 + ".input2") # plug to sq scale - pm.connectAttr(mult_node2+".output", mult_node+".input2") + pm.connectAttr(mult_node2 + ".output", mult_node + ".input2") # match IK/FK ref - pm.connectAttr(self.bone0.attr("rotate"), self.match_fk0.attr("rotate")) - pm.connectAttr(self.bone0.attr("translate"), self.match_fk0.attr("translate")) - pm.connectAttr(self.bone1.attr("rotate"), self.match_fk1.attr("rotate")) - pm.connectAttr(self.bone1.attr("translate"), self.match_fk1.attr("translate")) + pm.connectAttr(self.bone0.attr("rotate"), + self.match_fk0.attr("rotate")) + pm.connectAttr(self.bone0.attr("translate"), + self.match_fk0.attr("translate")) + pm.connectAttr(self.bone1.attr("rotate"), + self.match_fk1.attr("rotate")) + pm.connectAttr(self.bone1.attr("translate"), + self.match_fk1.attr("translate")) return # ===================================================== # CONNECTOR # ===================================================== - ## Set the relation beetween object from guide to rig.\n - # @param self - # TODO: replace bone0 and control objects by loc connections def setRelation(self): + """Set the relation beetween object from guide to rig""" self.relatives["root"] = self.div_cns[0] self.relatives["knee"] = self.div_cns[self.settings["div0"] + 2] self.relatives["ankle"] = self.div_cns[-1] @@ -631,9 +1007,10 @@ def setRelation(self): self.jointRelatives["knee"] = self.settings["div0"] + 2 self.jointRelatives["ankle"] = len(self.div_cns) self.jointRelatives["eff"] = len(self.div_cns) - ## standard connection definition. - # @param self - def connect_standard(self): + + def addConnection(self): + """Add more connection definition to the set""" self.connect_standardWithIkRef() # fk isolation connection - self.connect_standardWithRotRef(self.settings["fkrefarray"], self.fk_cns) + self.connect_standardWithRotRef(self.settings["fkrefarray"], + self.fk_cns) diff --git a/scripts/mgear/maya/shifter/component/meta_01/__init__.py b/scripts/mgear/maya/shifter/component/meta_01/__init__.py index f9cb414..f62b5a4 100644 --- a/scripts/mgear/maya/shifter/component/meta_01/__init__.py +++ b/scripts/mgear/maya/shifter/component/meta_01/__init__.py @@ -1,55 +1,24 @@ -# MGEAR is under the terms of the MIT License - -# Copyright (c) 2016 Jeremie Passerin, Miquel Campos - -# Permission is hereby granted, free of charge, to any person obtaining a copy -# of this software and associated documentation files (the "Software"), to deal -# in the Software without restriction, including without limitation the rights -# to use, copy, modify, merge, publish, distribute, sublicense, and/or sell -# copies of the Software, and to permit persons to whom the Software is -# furnished to do so, subject to the following conditions: - -# The above copyright notice and this permission notice shall be included in all -# copies or substantial portions of the Software. - -# THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR -# IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, -# FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE -# AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER -# LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, -# OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE -# SOFTWARE. - -# Author: Jeremie Passerin geerem@hotmail.com www.jeremiepasserin.com -# Author: Miquel Campos hello@miquel-campos.com www.miquel-campos.com -# Date: 2016 / 10 / 10 - -########################################################## -# GLOBAL -########################################################## -# Maya +"""Component Meta 01 module""" import pymel.core as pm -# mgear -from mgear.maya.shifter.component import MainComponent +from mgear.maya.shifter import component -import mgear.maya.primitive as pri -import mgear.maya.transform as tra -import mgear.maya.node as nod +from mgear.maya import transform, primitive, node -########################################################## +############################################# # COMPONENT -########################################################## -## The main component class. -class Component(MainComponent): +############################################# + + +class Component(component.Main): + """Shifter component Class""" # ===================================================== # OBJECTS # ===================================================== - ## Add all the objects needed to create the component. - # @param self def addObjects(self): + """Add all the objects needed to create the component.""" self.normal = self.guide.blades["blade"].z self.binormal = self.guide.blades["blade"].x @@ -60,65 +29,83 @@ def addObjects(self): parent = self.root self.jointList = [] - for i, t in enumerate(tra.getChainTransform2(self.guide.apos, self.normal, self.negate)): - lvl = pri.addTransform(parent, self.getName("%s_lvl"%i), t) - npo = pri.addTransform(lvl, self.getName("%s_npo"%i), t) - loc = pri.addTransform(npo, self.getName("%s_loc"%i), t) + for i, t in enumerate(transform.getChainTransform2(self.guide.apos, + self.normal, + self.negate)): + + lvl = primitive.addTransform(parent, self.getName("%s_lvl" % i), t) + npo = primitive.addTransform(lvl, self.getName("%s_npo" % i), t) + loc = primitive.addTransform(npo, self.getName("%s_loc" % i), t) self.jnt_pos.append([loc, i]) self.locList.append(loc) self.npoList.append(npo) - if i == len(self.guide.apos) -1: - ctl_npo = pri.addTransform(self.root, self.getName("ctl_npo"), t) - self.meta_ctl = self.addCtl(ctl_npo, "ctl", t, self.color_fk, "cube", w=self.size*.5, h=self.size*.5, d=self.size*.5, tp=self.parentCtlTag) - + if i == len(self.guide.apos) - 1: + ctl_npo = primitive.addTransform(self.root, + self.getName("ctl_npo"), + t) + + self.meta_ctl = self.addCtl(ctl_npo, + "ctl", + t, + self.color_fk, + "cube", + w=self.size * .5, + h=self.size * .5, + d=self.size * .5, + tp=self.parentCtlTag) # ===================================================== - # PROPERTY + # ATTRIBUTES # ===================================================== - ## Add parameters to the anim and setup properties to control the component. - # @param self def addAttributes(self): + """Create the anim and setupr rig attributes for the component""" return - # ===================================================== # OPERATORS # ===================================================== - ## Apply operators, constraints, expressions to the hierarchy.\n - # In order to keep the code clean and easier to debug, - # we shouldn't create any new object in this method. - # @param self def addOperators(self): - inc = 1.0 / (len(self.guide.apos)-1) + """Create operators and set the relations for the component rig + + Apply operators, constraints, expressions to the hierarchy. + In order to keep the code clean and easier to debug, + we shouldn't create any new object in this method. + + """ + inc = 1.0 / (len(self.guide.apos) - 1) val = 0.0 - for i, l in enumerate(self.locList): - blendNode = nod.createPairBlend( self.npoList[i], self.meta_ctl, blender=val) + for i, loc in enumerate(self.locList): + blendNode = node.createPairBlend( + self.npoList[i], self.meta_ctl, blender=val) if self.settings["intRotation"]: - pm.connectAttr(blendNode.attr("outRotate"), l.attr("rotate")) + pm.connectAttr(blendNode.attr("outRotate"), loc.attr("rotate")) if self.settings["intTranslation"]: - pm.connectAttr(blendNode.attr("outTranslate"), l.attr("translate")) + pm.connectAttr(blendNode.attr("outTranslate"), + loc.attr("translate")) if self.settings["intScale"]: - scaleA = [self.meta_ctl.attr("sx"),self.meta_ctl.attr("sy"), self.meta_ctl.attr("sz")] - scaleB = [self.npoList[i].attr("sx"),self.npoList[i].attr("sy"), self.npoList[i].attr("sz")] - scaleBlend = nod.createBlendNode(scaleA, scaleB, val) - pm.connectAttr(scaleBlend.attr("output"), l.attr("scale")) - val += inc - + scaleA = [self.meta_ctl.attr("sx"), + self.meta_ctl.attr("sy"), + self.meta_ctl.attr("sz")] + scaleB = [self.npoList[i].attr("sx"), + self.npoList[i].attr("sy"), + self.npoList[i].attr("sz")] + scaleBlend = node.createBlendNode(scaleA, scaleB, val) + pm.connectAttr(scaleBlend.attr("output"), loc.attr("scale")) + val += inc # ===================================================== # CONNECTOR # ===================================================== - ## Set the relation beetween object from guide to rig.\n - # @param self def setRelation(self): + """Set the relation beetween object from guide to rig""" self.relatives["root"] = self.locList[0] self.jointRelatives["root"] = 0 self.controlRelatives["root"] = self.meta_ctl - for i in range(len(self.locList)-1): - self.relatives["%s_loc"%i] = self.locList[i+1] - self.controlRelatives["%s_loc"%i] = self.meta_ctl - self.jointRelatives["%s_loc"%i] = i+1 + for i in range(len(self.locList) - 1): + self.relatives["%s_loc" % i] = self.locList[i + 1] + self.controlRelatives["%s_loc" % i] = self.meta_ctl + self.jointRelatives["%s_loc" % i] = i + 1 diff --git a/scripts/mgear/maya/shifter/component/mouth_01/__init__.py b/scripts/mgear/maya/shifter/component/mouth_01/__init__.py index 1fb8e4e..0078878 100644 --- a/scripts/mgear/maya/shifter/component/mouth_01/__init__.py +++ b/scripts/mgear/maya/shifter/component/mouth_01/__init__.py @@ -1,136 +1,179 @@ -# MGEAR is under the terms of the MIT License - -# Copyright (c) 2016 Jeremie Passerin, Miquel Campos - -# Permission is hereby granted, free of charge, to any person obtaining a copy -# of this software and associated documentation files (the "Software"), to deal -# in the Software without restriction, including without limitation the rights -# to use, copy, modify, merge, publish, distribute, sublicense, and/or sell -# copies of the Software, and to permit persons to whom the Software is -# furnished to do so, subject to the following conditions: - -# The above copyright notice and this permission notice shall be included in all -# copies or substantial portions of the Software. - -# THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR -# IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, -# FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE -# AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER -# LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, -# OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE -# SOFTWARE. - -# Author: Jeremie Passerin geerem@hotmail.com www.jeremiepasserin.com -# Author: Miquel Campos hello@miquel-campos.com www.miquel-campos.com -# Date: 2016 / 10 / 10 - -########################################################## -# GLOBAL -########################################################## -# Maya +"""Component Mouth 01 module""" + import pymel.core as pm -import pymel.core.datatypes as dt +from pymel.core import datatypes -# mgear -from mgear.maya.shifter.component import MainComponent +from mgear.maya.shifter import component -import mgear.maya.primitive as pri -import mgear.maya.transform as tra -import mgear.maya.attribute as att +from mgear.maya import attribute, transform, primitive -########################################################## +############################################# # COMPONENT -########################################################## -## The main component class. -class Component(MainComponent): +############################################# + + +class Component(component.Main): + """Shifter component Class""" # ===================================================== # OBJECTS # ===================================================== - - ## Add all the objects needed to create the component. - # @param self def addObjects(self): - - #jaw control - t = tra.getTransformFromPos(self.guide.pos["jaw"]) - self.ctl_npo = pri.addTransform(self.root, self.getName("ctl_npo"), t) - self.jaw_ctl = self.addCtl(self.ctl_npo, "jaw_ctl", t, self.color_fk, "circle", w=1*self.size, ro=dt.Vector([1.5708,0,0]), tp=self.parentCtlTag) - att.setKeyableAttributes(self.jaw_ctl, ["tx", "ty", "tz", "rz"]) - - #mouth center - t = tra.getTransformFromPos(self.guide.pos["rotcenter"]) - self.mouthCenter_npo = pri.addTransform(self.root, self.getName("mouthCenter_npo"), t) - self.mouthCenter = pri.addTransform(self.mouthCenter_npo, self.getName("mouthCenter"), t) - - #jaw "UPPER" - t = tra.getTransformFromPos(self.guide.pos["root"]) - self.jawUp_npo = pri.addTransform(self.mouthCenter, self.getName("jawUpper_npo"), t) - self.jawUp_pos = pri.addTransform(self.jawUp_npo, self.getName("jawUpper_pos"), t) - self.jawUp_rot = pri.addTransform(self.jawUp_pos, self.getName("jawUpper_rot"), t) - - #jaw "LOWER" - t = tra.getTransformFromPos(self.guide.pos["root"]) - self.jawLow_npo = pri.addTransform(self.mouthCenter, self.getName("jaw_npo"), t) - self.jawLow_pos = pri.addTransform(self.jawLow_npo, self.getName("jawLow_pos"), t) - self.jawLow_rot = pri.addTransform(self.jawLow_pos, self.getName("jawLow_rot"), t) - - #lips - t = tra.getTransformFromPos(self.guide.pos["lipup"]) - self.lipup_npo = pri.addTransform(self.jawUp_rot, self.getName("lipup_npo"), t) - self.lipup_ctl = self.addCtl(self.lipup_npo, "lipup_ctl", t, self.color_fk, "square", d=.15*self.size, w=1*self.size, ro=dt.Vector([1.5708,0,0]), tp=self.jaw_ctl) - - t = tra.getTransformFromPos(self.guide.pos["liplow"]) - self.liplow_npo = pri.addTransform(self.jawLow_rot, self.getName("liplow_npo"), t) - self.liplow_ctl = self.addCtl(self.liplow_npo, "liplow_ctl", t, self.color_fk, "square", d=.15*self.size, w=1*self.size, ro=dt.Vector([1.5708,0,0]), tp=self.jaw_ctl) - - #teeth - t = tra.getTransformFromPos(self.guide.pos["lipup"]) - self.teethup_npo = pri.addTransform(self.jawUp_rot, self.getName("teethup_npo"), t) - self.teethup_ctl = self.addCtl(self.teethup_npo, "teethup_ctl", t, self.color_ik, "square", d=.1*self.size, w=.7*self.size, ro=dt.Vector([1.5708,0,0]), tp=self.lipup_ctl) - - t = tra.getTransformFromPos(self.guide.pos["liplow"]) - self.teethlow_npo = pri.addTransform(self.jawLow_rot, self.getName("teethlow_npo"), t) - self.teethlow_ctl = self.addCtl(self.teethlow_npo, "teethlow_ctl", t, self.color_ik, "square", d=.1*self.size, w=.7*self.size, ro=dt.Vector([1.5708,0,0]), tp=self.liplow_ctl) - - - self.jnt_pos.append([self.jawLow_rot, "jaw", "parent_relative_jnt", False]) - self.jnt_pos.append([self.lipup_ctl, "lipup", "parent_relative_jnt", False]) - self.jnt_pos.append([self.liplow_ctl, "liplow", "jaw", False]) # relative 0 is the jaw jnt - self.jnt_pos.append([self.teethup_ctl, "teethup", "parent_relative_jnt", False]) - self.jnt_pos.append([self.teethlow_ctl, "teethlow", "jaw", False]) - - + """Add all the objects needed to create the component.""" + + # jaw control + t = transform.getTransformFromPos(self.guide.pos["jaw"]) + + self.ctl_npo = primitive.addTransform( + self.root, self.getName("ctl_npo"), t) + + self.jaw_ctl = self.addCtl( + self.ctl_npo, + "jaw_ctl", + t, + self.color_fk, + "circle", + w=1 * self.size, + ro=datatypes.Vector([1.5708, 0, 0]), + tp=self.parentCtlTag) + + attribute.setKeyableAttributes(self.jaw_ctl, ["tx", "ty", "tz", "rz"]) + + # mouth center + t = transform.getTransformFromPos(self.guide.pos["rotcenter"]) + self.mouthCenter_npo = primitive.addTransform( + self.root, self.getName("mouthCenter_npo"), t) + self.mouthCenter = primitive.addTransform( + self.mouthCenter_npo, self.getName("mouthCenter"), t) + + # jaw "UPPER" + t = transform.getTransformFromPos(self.guide.pos["root"]) + self.jawUp_npo = primitive.addTransform( + self.mouthCenter, self.getName("jawUpper_npo"), t) + self.jawUp_pos = primitive.addTransform( + self.jawUp_npo, self.getName("jawUpper_pos"), t) + self.jawUp_rot = primitive.addTransform( + self.jawUp_pos, self.getName("jawUpper_rot"), t) + + # jaw "LOWER" + t = transform.getTransformFromPos(self.guide.pos["root"]) + self.jawLow_npo = primitive.addTransform( + self.mouthCenter, self.getName("jaw_npo"), t) + self.jawLow_pos = primitive.addTransform( + self.jawLow_npo, self.getName("jawLow_pos"), t) + self.jawLow_rot = primitive.addTransform( + self.jawLow_pos, self.getName("jawLow_rot"), t) + + # lips + t = transform.getTransformFromPos(self.guide.pos["lipup"]) + + self.lipup_npo = primitive.addTransform( + self.jawUp_rot, self.getName("lipup_npo"), t) + + self.lipup_ctl = self.addCtl( + self.lipup_npo, + "lipup_ctl", + t, + self.color_fk, + "square", + d=.15 * self.size, + w=1 * self.size, + ro=datatypes.Vector([1.5708, 0, 0]), + tp=self.jaw_ctl) + + t = transform.getTransformFromPos(self.guide.pos["liplow"]) + + self.liplow_npo = primitive.addTransform( + self.jawLow_rot, self.getName("liplow_npo"), t) + + self.liplow_ctl = self.addCtl( + self.liplow_npo, + "liplow_ctl", + t, self.color_fk, + "square", + d=.15 * self.size, + w=1 * self.size, + ro=datatypes.Vector([1.5708, 0, 0]), + tp=self.jaw_ctl) + + # teeth + t = transform.getTransformFromPos(self.guide.pos["lipup"]) + self.teethup_npo = primitive.addTransform( + self.jawUp_rot, self.getName("teethup_npo"), t) + + self.teethup_ctl = self.addCtl(self.teethup_npo, + "teethup_ctl", + t, + self.color_ik, + "square", + d=.1 * self.size, + w=.7 * self.size, + ro=datatypes.Vector([1.5708, 0, 0]), + tp=self.lipup_ctl) + + t = transform.getTransformFromPos(self.guide.pos["liplow"]) + + self.teethlow_npo = primitive.addTransform( + self.jawLow_rot, self.getName("teethlow_npo"), t) + + self.teethlow_ctl = self.addCtl(self.teethlow_npo, + "teethlow_ctl", + t, + self.color_ik, + "square", + d=.1 * self.size, + w=.7 * self.size, + ro=datatypes.Vector([1.5708, 0, 0]), + tp=self.liplow_ctl) + + self.jnt_pos.append( + [self.jawLow_rot, "jaw", "parent_relative_jnt", False]) + self.jnt_pos.append( + [self.lipup_ctl, "lipup", "parent_relative_jnt", False]) + # relative 0 is the jaw jnt + self.jnt_pos.append( + [self.liplow_ctl, "liplow", "jaw", False]) + self.jnt_pos.append( + [self.teethup_ctl, "teethup", "parent_relative_jnt", False]) + self.jnt_pos.append( + [self.teethlow_ctl, "teethlow", "jaw", False]) # ===================================================== - # PROPERTY + # ATTRIBUTES # ===================================================== - ## Add parameters to the anim and setup properties to control the component. - # @param self def addAttributes(self): - - self.sideRotation_att = self.addAnimParam("siderot", "Sides Rotation", "double", 20, 0, 100) - self.vertRotation_att = self.addAnimParam("vertrot", "Vertical Rotation", "double", 40, 0, 100) - self.frontalTranslation_att = self.addAnimParam("fronttrans", "Frontal Translation", "double", 1, 0, 1) - self.verticalTranslation_att = self.addAnimParam("verttrans", "Vertical Translation", "double", 0.2, 0, 1) - self.followLips_att = self.addAnimParam("floowlips", "FollowLips", "double", 0.05, 0, 1) - self.lipsAlignSpeed_att = self.addAnimParam("lipsAlignSpeed", "Lips Align Speed", "double", 10, 0, 100) - - + """Create the anim and setupr rig attributes for the component""" + + self.sideRotation_att = self.addAnimParam( + "siderot", "Sides Rotation", "double", 20, 0, 100) + self.vertRotation_att = self.addAnimParam( + "vertrot", "Vertical Rotation", "double", 40, 0, 100) + self.frontalTranslation_att = self.addAnimParam( + "fronttrans", "Frontal Translation", "double", 1, 0, 1) + self.verticalTranslation_att = self.addAnimParam( + "verttrans", "Vertical Translation", "double", 0.2, 0, 1) + self.followLips_att = self.addAnimParam( + "floowlips", "FollowLips", "double", 0.05, 0, 1) + self.lipsAlignSpeed_att = self.addAnimParam( + "lipsAlignSpeed", "Lips Align Speed", "double", 10, 0, 100) # ===================================================== # OPERATORS # ===================================================== - ## Apply operators, constraints, expressions to the hierarchy.\n - # In order to keep the code clean and easier to debug, - # we shouldn't create any new object in this method. - # @param self def addOperators(self): + """Create operators and set the relations for the component rig + + Apply operators, constraints, expressions to the hierarchy. + In order to keep the code clean and easier to debug, + we shouldn't create any new object in this method. + + """ # mouth center rotation - pm.connectAttr(self.jaw_ctl+".rotateZ", self.mouthCenter+".rotateZ") + pm.connectAttr(self.jaw_ctl + ".rotateZ", + self.mouthCenter + ".rotateZ") - #Node Creation ######## + # Node Creation ######## # Mut Div nodes md_node_1 = pm.createNode("multiplyDivide") @@ -142,7 +185,7 @@ def addOperators(self): md_node_7 = pm.createNode("multiplyDivide") md_node_8 = pm.createNode("multiplyDivide") - # Clamp node + # Clamp o_node clamp_node = pm.createNode("clamp") # Condition nodes @@ -151,100 +194,100 @@ def addOperators(self): cond_node_3 = pm.createNode("condition") # Blend nodes - blend_node_1 = pm.createNode("blendColors") - blend_node_2 = pm.createNode("blendColors") + blend_node_1 = pm.createNode("blendColors") + blend_node_2 = pm.createNode("blendColors") #Node Conexions ######## # md_node_1 - pm.connectAttr(self.jaw_ctl+".translateY", md_node_1+".input1X") - pm.connectAttr(self.vertRotation_att, md_node_1+".input2X") + pm.connectAttr(self.jaw_ctl + ".translateY", md_node_1 + ".input1X") + pm.connectAttr(self.vertRotation_att, md_node_1 + ".input2X") # md_node_2 - pm.connectAttr(self.jaw_ctl+".translateX", md_node_2+".input1X") - pm.connectAttr(self.sideRotation_att, md_node_2+".input2X") + pm.connectAttr(self.jaw_ctl + ".translateX", md_node_2 + ".input1X") + pm.connectAttr(self.sideRotation_att, md_node_2 + ".input2X") # md_node_3 - pm.connectAttr(self.jaw_ctl+".translateY", md_node_3+".input1X") - pm.connectAttr(self.lipsAlignSpeed_att, md_node_3+".input2X") + pm.connectAttr(self.jaw_ctl + ".translateY", md_node_3 + ".input1X") + pm.connectAttr(self.lipsAlignSpeed_att, md_node_3 + ".input2X") # md_node_4 - pm.connectAttr(self.jaw_ctl+".translateY", md_node_4+".input1X") - pm.connectAttr(self.verticalTranslation_att, md_node_4+".input2X") + pm.connectAttr(self.jaw_ctl + ".translateY", md_node_4 + ".input1X") + pm.connectAttr(self.verticalTranslation_att, md_node_4 + ".input2X") # md_node_5 - pm.connectAttr(self.jaw_ctl+".translateZ", md_node_5+".input1X") - pm.connectAttr(self.frontalTranslation_att, md_node_5+".input2X") + pm.connectAttr(self.jaw_ctl + ".translateZ", md_node_5 + ".input1X") + pm.connectAttr(self.frontalTranslation_att, md_node_5 + ".input2X") # md_node_6 - pm.connectAttr( md_node_1+".outputX", md_node_6+".input1X") - pm.setAttr( md_node_6+".input2X", -1.0) + pm.connectAttr(md_node_1 + ".outputX", md_node_6 + ".input1X") + pm.setAttr(md_node_6 + ".input2X", -1.0) # md_node_7 - pm.connectAttr(md_node_5+".outputX", md_node_7+".input1X") - pm.connectAttr(clamp_node+".outputR", md_node_7+".input2X") + pm.connectAttr(md_node_5 + ".outputX", md_node_7 + ".input1X") + pm.connectAttr(clamp_node + ".outputR", md_node_7 + ".input2X") # md_node_8 - pm.connectAttr(cond_node_2+".outColorR", md_node_8+".input1X") - pm.connectAttr(clamp_node+".outputR", md_node_8+".input2X") + pm.connectAttr(cond_node_2 + ".outColorR", md_node_8 + ".input1X") + pm.connectAttr(clamp_node + ".outputR", md_node_8 + ".input2X") # clamp_node - pm.connectAttr(md_node_3+".outputX", clamp_node+".inputR") - pm.setAttr( clamp_node+".maxR", 1.0) + pm.connectAttr(md_node_3 + ".outputX", clamp_node + ".inputR") + pm.setAttr(clamp_node + ".maxR", 1.0) # cond_node_1 - pm.connectAttr(md_node_6+".outputX", cond_node_1+".colorIfTrueR") - pm.connectAttr(md_node_6+".outputX", cond_node_1+".firstTerm") - pm.setAttr( cond_node_1+".operation", 4) - pm.setAttr( cond_node_1+".colorIfFalseR", 0) + pm.connectAttr(md_node_6 + ".outputX", cond_node_1 + ".colorIfTrueR") + pm.connectAttr(md_node_6 + ".outputX", cond_node_1 + ".firstTerm") + pm.setAttr(cond_node_1 + ".operation", 4) + pm.setAttr(cond_node_1 + ".colorIfFalseR", 0) # cond_node_2 - pm.connectAttr(md_node_2+".outputX", cond_node_2+".colorIfFalseR") - pm.connectAttr(md_node_6+".outputX", cond_node_2+".firstTerm") - pm.setAttr( cond_node_2+".operation", 2) + pm.connectAttr(md_node_2 + ".outputX", cond_node_2 + ".colorIfFalseR") + pm.connectAttr(md_node_6 + ".outputX", cond_node_2 + ".firstTerm") + pm.setAttr(cond_node_2 + ".operation", 2) # cond_node_3 - pm.connectAttr(md_node_4+".outputX", cond_node_3+".colorIfTrueR") - pm.connectAttr(md_node_4+".outputX", cond_node_3+".firstTerm") - pm.setAttr( cond_node_3+".operation", 4) - pm.setAttr( cond_node_3+".colorIfFalseR", 0) + pm.connectAttr(md_node_4 + ".outputX", cond_node_3 + ".colorIfTrueR") + pm.connectAttr(md_node_4 + ".outputX", cond_node_3 + ".firstTerm") + pm.setAttr(cond_node_3 + ".operation", 4) + pm.setAttr(cond_node_3 + ".colorIfFalseR", 0) # blend_node_1 - pm.connectAttr(self.followLips_att, blend_node_1+".blender") - pm.connectAttr(md_node_6+".outputX", blend_node_1+".color1R") - pm.connectAttr(md_node_2+".outputX", blend_node_1+".color1G") - pm.connectAttr(cond_node_1+".outColorR", blend_node_1+".color2R") - pm.connectAttr(md_node_8+".outputX", blend_node_1+".color2G") + pm.connectAttr(self.followLips_att, blend_node_1 + ".blender") + pm.connectAttr(md_node_6 + ".outputX", blend_node_1 + ".color1R") + pm.connectAttr(md_node_2 + ".outputX", blend_node_1 + ".color1G") + pm.connectAttr(cond_node_1 + ".outColorR", blend_node_1 + ".color2R") + pm.connectAttr(md_node_8 + ".outputX", blend_node_1 + ".color2G") # blend_node_2 - pm.connectAttr(self.followLips_att, blend_node_2+".blender") - pm.connectAttr(cond_node_3+".outColorR", blend_node_2+".color1R") - pm.connectAttr(md_node_5+".outputX", blend_node_2+".color1G") - pm.connectAttr(md_node_7+".outputX", blend_node_2+".color2G") + pm.connectAttr(self.followLips_att, blend_node_2 + ".blender") + pm.connectAttr(cond_node_3 + ".outColorR", blend_node_2 + ".color1R") + pm.connectAttr(md_node_5 + ".outputX", blend_node_2 + ".color1G") + pm.connectAttr(md_node_7 + ".outputX", blend_node_2 + ".color2G") # inputs to transforms - pm.connectAttr(md_node_6+".outputX", self.jawLow_rot+".rotateX") - pm.connectAttr(md_node_2+".outputX", self.jawLow_rot+".rotateY") - - pm.connectAttr(blend_node_1+".outputR", self.jawUp_rot+".rotateX") - pm.connectAttr(blend_node_1+".outputG", self.jawUp_rot+".rotateY") - - pm.connectAttr(cond_node_3+".outColorR", self.jawLow_pos+".translateY") - pm.connectAttr(md_node_5+".outputX", self.jawLow_pos+".translateZ") - - pm.connectAttr(blend_node_2+".outputR", self.jawUp_pos+".translateY") - pm.connectAttr(blend_node_2+".outputG", self.jawUp_pos+".translateZ") + pm.connectAttr(md_node_6 + ".outputX", self.jawLow_rot + ".rotateX") + pm.connectAttr(md_node_2 + ".outputX", self.jawLow_rot + ".rotateY") + pm.connectAttr(blend_node_1 + ".outputR", self.jawUp_rot + ".rotateX") + pm.connectAttr(blend_node_1 + ".outputG", self.jawUp_rot + ".rotateY") + pm.connectAttr(cond_node_3 + ".outColorR", + self.jawLow_pos + ".translateY") + pm.connectAttr(md_node_5 + ".outputX", + self.jawLow_pos + ".translateZ") + pm.connectAttr(blend_node_2 + ".outputR", + self.jawUp_pos + ".translateY") + pm.connectAttr(blend_node_2 + ".outputG", + self.jawUp_pos + ".translateZ") # ===================================================== # CONNECTOR # ===================================================== - ## Set the relation beetween object from guide to rig.\n - # @param self def setRelation(self): + """Set the relation beetween object from guide to rig""" self.relatives["root"] = self.root self.relatives["jaw"] = self.jawLow_rot self.relatives["rotcenter"] = self.jawLow_rot diff --git a/scripts/mgear/maya/shifter/component/neck_ik_01/__init__.py b/scripts/mgear/maya/shifter/component/neck_ik_01/__init__.py index 343356b..08146ae 100644 --- a/scripts/mgear/maya/shifter/component/neck_ik_01/__init__.py +++ b/scripts/mgear/maya/shifter/component/neck_ik_01/__init__.py @@ -1,105 +1,138 @@ -# MGEAR is under the terms of the MIT License +"""Component Neck IK 01 module""" -# Copyright (c) 2016 Jeremie Passerin, Miquel Campos +import pymel.core as pm +from pymel.core import datatypes -# Permission is hereby granted, free of charge, to any person obtaining a copy -# of this software and associated documentation files (the "Software"), to deal -# in the Software without restriction, including without limitation the rights -# to use, copy, modify, merge, publish, distribute, sublicense, and/or sell -# copies of the Software, and to permit persons to whom the Software is -# furnished to do so, subject to the following conditions: +from mgear.maya.shifter import component -# The above copyright notice and this permission notice shall be included in all -# copies or substantial portions of the Software. +from mgear.maya import node, fcurve, applyop, vector, curve +from mgear.maya import attribute, transform, primitive -# THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR -# IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, -# FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE -# AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER -# LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, -# OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE -# SOFTWARE. +############################################# +# COMPONENT +############################################# -# Author: Jeremie Passerin geerem@hotmail.com www.jeremiepasserin.com -# Author: Miquel Campos hello@miquel-campos.com www.miquel-campos.com -# Date: 2016 / 10 / 10 -########################################################## -# GLOBAL -########################################################## -# Maya +class Component(component.Main): + """Shifter component Class""" -import pymel.core as pm + # ===================================================== + # OBJECTS + # ===================================================== + def addObjects(self): + """Add all the objects needed to create the component.""" -import pymel.core.datatypes as dt + self.normal = self.guide.blades["blade"].z * -1 + # Ik Controlers ------------------------------------ + t = transform.getTransformLookingAt(self.guide.pos["tan1"], + self.guide.pos["neck"], + self.normal, + "yx", + self.negate) -# mgear -from mgear.maya.shifter.component import MainComponent + t = transform.setMatrixPosition(t, self.guide.pos["neck"]) -import mgear.maya.primitive as pri -import mgear.maya.transform as tra -import mgear.maya.attribute as att -import mgear.maya.node as nod -import mgear.maya.vector as vec -import mgear.maya.applyop as aop -import mgear.maya.curve as cur -import mgear.maya.fcurve as fcu + self.ik_cns = primitive.addTransform( + self.root, self.getName("ik_cns"), t) -########################################################## -# COMPONENT -########################################################## -## The main component class. -class Component(MainComponent): + self.ik_ctl = self.addCtl(self.ik_cns, + "ik_ctl", + t, + self.color_ik, + "compas", + w=self.size * .5, + tp=self.parentCtlTag) + attribute.setKeyableAttributes(self.ik_ctl, self.tr_params) + attribute.setRotOrder(self.ik_ctl, "ZXY") + attribute.setInvertMirror(self.ik_ctl, ["tx", "ry", "rz"]) - ## Add all the objects needed to create the component. - # @param self - def addObjects(self): + # Tangents ----------------------------------------- + if self.settings["tangentControls"]: + t = transform.setMatrixPosition(t, self.guide.pos["tan1"]) - self.normal = self.guide.blades["blade"].z*-1 + self.tan1_loc = primitive.addTransform( + self.ik_ctl, self.getName("tan1_loc"), t) - # Ik Controlers ------------------------------------ - t = tra.getTransformLookingAt(self.guide.pos["tan1"], self.guide.pos["neck"], self.normal, "yx", self.negate) - t = tra.setMatrixPosition(t, self.guide.pos["neck"]) - self.ik_cns = pri.addTransform(self.root, self.getName("ik_cns"), t) + self.tan1_ctl = self.addCtl(self.tan1_loc, + "tan1_ctl", + t, + self.color_ik, + "sphere", + w=self.size * .2, + tp=self.ik_ctl) - self.ik_ctl = self.addCtl(self.ik_cns, "ik_ctl", t, self.color_ik, "compas", w=self.size*.5, tp=self.parentCtlTag) - att.setKeyableAttributes(self.ik_ctl, self.tr_params) - att.setRotOrder(self.ik_ctl, "ZXY") - att.setInvertMirror(self.ik_ctl, ["tx", "ry", "rz"]) + attribute.setKeyableAttributes(self.tan1_ctl, self.t_params) + attribute.setInvertMirror(self.tan1_ctl, ["tx"]) - # Tangents ----------------------------------------- - if self.settings["tangentControls"]: - t = tra.setMatrixPosition(t, self.guide.pos["tan1"]) - self.tan1_loc = pri.addTransform(self.ik_ctl, self.getName("tan1_loc"), t) - self.tan1_ctl = self.addCtl(self.tan1_loc, "tan1_ctl", t, self.color_ik, "sphere", w=self.size*.2, tp=self.ik_ctl) - att.setKeyableAttributes(self.tan1_ctl, self.t_params) - att.setInvertMirror(self.tan1_ctl, ["tx"]) - - t = tra.getTransformLookingAt(self.guide.pos["root"], self.guide.pos["tan0"], self.normal, "yx", self.negate) - t = tra.setMatrixPosition(t, self.guide.pos["tan0"]) - self.tan0_loc = pri.addTransform(self.root, self.getName("tan0_loc"), t) - self.tan0_ctl = self.addCtl(self.tan0_loc, "tan0_ctl", t, self.color_ik, "sphere", w=self.size*.2, tp=self.ik_ctl) - att.setKeyableAttributes(self.tan0_ctl, self.t_params) - att.setInvertMirror(self.tan0_ctl, ["tx"]) + t = transform.getTransformLookingAt(self.guide.pos["root"], + self.guide.pos["tan0"], + self.normal, + "yx", + self.negate) + + t = transform.setMatrixPosition(t, self.guide.pos["tan0"]) + + self.tan0_loc = primitive.addTransform( + self.root, self.getName("tan0_loc"), t) + + self.tan0_ctl = self.addCtl(self.tan0_loc, + "tan0_ctl", + t, + self.color_ik, + "sphere", + w=self.size * .2, + tp=self.ik_ctl) + + attribute.setKeyableAttributes(self.tan0_ctl, + self.t_params) + attribute.setInvertMirror(self.tan0_ctl, ["tx"]) # Curves ------------------------------------------- - self.mst_crv = cur.addCnsCurve(self.root, self.getName("mst_crv"), [self.root, self.tan0_ctl, self.tan1_ctl, self.ik_ctl], 3) - self.slv_crv = cur.addCurve(self.root, self.getName("slv_crv"), [dt.Vector()]*10, False, 3) + self.mst_crv = curve.addCnsCurve( + self.root, + self.getName("mst_crv"), + [self.root, self.tan0_ctl, self.tan1_ctl, self.ik_ctl], + 3) + + self.slv_crv = curve.addCurve(self.root, + self.getName("slv_crv"), + [datatypes.Vector()] * 10, + False, + 3) + self.mst_crv.setAttr("visibility", False) else: - t = tra.setMatrixPosition(t, self.guide.pos["tan1"]) - self.tan1_loc = pri.addTransform(self.ik_ctl, self.getName("tan1_loc"), t) + t = transform.setMatrixPosition(t, self.guide.pos["tan1"]) + self.tan1_loc = primitive.addTransform( + self.ik_ctl, self.getName("tan1_loc"), t) + + t = transform.getTransformLookingAt(self.guide.pos["root"], + self.guide.pos["tan0"], + self.normal, + "yx", + self.negate) - t = tra.getTransformLookingAt(self.guide.pos["root"], self.guide.pos["tan0"], self.normal, "yx", self.negate) - t = tra.setMatrixPosition(t, self.guide.pos["tan0"]) - self.tan0_loc = pri.addTransform(self.root, self.getName("tan0_loc"), t) + t = transform.setMatrixPosition(t, self.guide.pos["tan0"]) + + self.tan0_loc = primitive.addTransform( + self.root, self.getName("tan0_loc"), t) # Curves ------------------------------------------- - self.mst_crv = cur.addCnsCurve(self.root, self.getName("mst_crv"), [self.root, self.tan0_loc, self.tan1_loc, self.ik_ctl], 3) - self.slv_crv = cur.addCurve(self.root, self.getName("slv_crv"), [dt.Vector()]*10, False, 3) + self.mst_crv = curve.addCnsCurve( + self.root, + self.getName("mst_crv"), + [self.root, self.tan0_loc, self.tan1_loc, self.ik_ctl], + 3) + + self.slv_crv = curve.addCurve(self.root, + self.getName("slv_crv"), + [datatypes.Vector()] * 10, + False, + 3) + self.mst_crv.setAttr("visibility", False) self.slv_crv.setAttr("visibility", False) @@ -116,138 +149,242 @@ def addObjects(self): self.twister = [] self.ref_twist = [] - parent_twistRef = pri.addTransform(self.root, self.getName("reference"), tra.getTransform(self.root)) - t = tra.getTransformLookingAt(self.guide.pos["root"], self.guide.pos["neck"], self.normal, "yx", self.negate) - self.intMRef = pri.addTransform(self.root, self.getName("intMRef"), t) + parent_twistRef = primitive.addTransform( + self.root, + self.getName("reference"), + transform.getTransform(self.root)) + + t = transform.getTransformLookingAt(self.guide.pos["root"], + self.guide.pos["neck"], + self.normal, + "yx", + self.negate) + + self.intMRef = primitive.addTransform( + self.root, self.getName("intMRef"), t) + self.previousCtlTag = self.parentCtlTag for i in range(self.settings["division"]): # References - div_cns = pri.addTransform(parentdiv, self.getName("%s_cns"%i), t) - pm.setAttr(div_cns+".inheritsTransform", False) + div_cns = primitive.addTransform( + parentdiv, self.getName("%s_cns" % i), t) + + pm.setAttr(div_cns + ".inheritsTransform", False) self.div_cns.append(div_cns) parentdiv = div_cns - scl_npo = pri.addTransform(parentctl, self.getName("%s_scl_npo"%i), tra.getTransform(parentctl)) + scl_npo = primitive.addTransform(parentctl, + self.getName("%s_scl_npo" % i), + transform.getTransform(parentctl)) # Controlers (First and last one are fake) - if i in [ self.settings["division"] - 1]: # 0, - fk_ctl = pri.addTransform(scl_npo, self.getName("%s_loc"%i), tra.getTransform(parentctl)) + if i in [self.settings["division"] - 1]: # 0, + fk_ctl = primitive.addTransform( + scl_npo, + self.getName("%s_loc" % i), + transform.getTransform(parentctl)) + fk_npo = fk_ctl else: - fk_npo = pri.addTransform(scl_npo, self.getName("fk%s_npo"%i), tra.getTransform(parentctl)) - fk_ctl = self.addCtl(fk_npo, "fk%s_ctl"%i, tra.getTransform(parentctl), self.color_fk, "cube", w=self.size*.2, h=self.size*.05, d=self.size*.2, tp=self.previousCtlTag) - att.setKeyableAttributes(self.fk_ctl) - att.setRotOrder(fk_ctl, "ZXY") + fk_npo = primitive.addTransform( + scl_npo, + self.getName("fk%s_npo" % i), + transform.getTransform(parentctl)) + + fk_ctl = self.addCtl(fk_npo, + "fk%s_ctl" % i, + transform.getTransform(parentctl), + self.color_fk, + "cube", + w=self.size * .2, + h=self.size * .05, + d=self.size * .2, + tp=self.previousCtlTag) + + attribute.setKeyableAttributes(self.fk_ctl) + attribute.setRotOrder(fk_ctl, "ZXY") self.previousCtlTag = fk_ctl self.fk_ctl.append(fk_ctl) - self.scl_npo.append(scl_npo) self.fk_npo.append(fk_npo) parentctl = fk_ctl self.jnt_pos.append([fk_ctl, i]) - t = tra.getTransformLookingAt(self.guide.pos["root"], self.guide.pos["neck"], self.guide.blades["blade"].z*-1, "yx", self.negate) - twister = pri.addTransform(parent_twistRef, self.getName("%s_rot_ref"%i), t) - ref_twist = pri.addTransform(parent_twistRef, self.getName("%s_pos_ref"%i), t) - ref_twist.setTranslation(dt.Vector(0.0,0,1.0), space="preTransform") + t = transform.getTransformLookingAt( + self.guide.pos["root"], + self.guide.pos["neck"], + self.guide.blades["blade"].z * -1, + "yx", + self.negate) + + twister = primitive.addTransform( + parent_twistRef, self.getName("%s_rot_ref" % i), t) + + ref_twist = primitive.addTransform( + parent_twistRef, self.getName("%s_pos_ref" % i), t) + + ref_twist.setTranslation( + datatypes.Vector(0.0, 0, 1.0), space="preTransform") self.twister.append(twister) self.ref_twist.append(ref_twist) - for x in self.fk_ctl[:-1]: - att.setInvertMirror(x, ["tx", "rz", "ry"]) + for x in self.fk_ctl[:-1]: + attribute.setInvertMirror(x, ["tx", "rz", "ry"]) # Head --------------------------------------------- - t = tra.getTransformLookingAt(self.guide.pos["head"], self.guide.pos["eff"], self.normal, "yx", self.negate) - self.head_cns = pri.addTransform(self.root, self.getName("head_cns"), t) - - dist = vec.getDistance(self.guide.pos["head"], self.guide.pos["eff"]) - self.head_ctl = self.addCtl(self.head_cns, "head_ctl", t, self.color_fk, "cube", w=self.size*.5, h=dist, d=self.size*.5, po=dt.Vector(0,dist*.5,0), tp=self.previousCtlTag) - att.setRotOrder(self.head_ctl, "ZXY") - att.setInvertMirror(self.head_ctl, ["tx", "rz", "ry"]) + t = transform.getTransformLookingAt(self.guide.pos["head"], + self.guide.pos["eff"], + self.normal, + "yx", + self.negate) + + self.head_cns = primitive.addTransform( + self.root, self.getName("head_cns"), t) + + dist = vector.getDistance(self.guide.pos["head"], + self.guide.pos["eff"]) + + self.head_ctl = self.addCtl(self.head_cns, + "head_ctl", + t, + self.color_fk, + "cube", + w=self.size * .5, + h=dist, d=self.size * .5, + po=datatypes.Vector(0, dist * .5, 0), + tp=self.previousCtlTag) + + attribute.setRotOrder(self.head_ctl, "ZXY") + attribute.setInvertMirror(self.head_ctl, ["tx", "rz", "ry"]) self.jnt_pos.append([self.head_ctl, "head"]) # ===================================================== - # PROPERTY + # ATTRIBUTES # ===================================================== - ## Add parameters to the anim and setup properties to control the component. - # @param self def addAttributes(self): + """Create the anim and setupr rig attributes for the component""" # Anim ------------------------------------------- - self.maxstretch_att = self.addAnimParam("maxstretch", "Max Stretch", "double", self.settings["maxstretch"], 1) - self.maxsquash_att = self.addAnimParam("maxsquash", "MaxSquash", "double", self.settings["maxsquash"], 0, 1) - self.softness_att = self.addAnimParam("softness", "Softness", "double", self.settings["softness"], 0, 1) - - self.lock_ori_att = self.addAnimParam("lock_ori", "Lock Ori", "double", 1, 0, 1) + self.maxstretch_att = self.addAnimParam( + "maxstretch", + "Max Stretch", + "double", + self.settings["maxstretch"], + 1) + + self.maxsquash_att = self.addAnimParam("maxsquash", + "MaxSquash", + "double", + self.settings["maxsquash"], + 0, + 1) + + self.softness_att = self.addAnimParam("softness", + "Softness", + "double", + self.settings["softness"], + 0, + 1) + + self.lock_ori_att = self.addAnimParam( + "lock_ori", "Lock Ori", "double", 1, 0, 1) self.tan0_att = self.addAnimParam("tan0", "Tangent 0", "double", 1, 0) self.tan1_att = self.addAnimParam("tan1", "Tangent 1", "double", 1, 0) # Volume - self.volume_att = self.addAnimParam("volume", "Volume", "double", 1, 0, 1) + self.volume_att = self.addAnimParam( + "volume", "Volume", "double", 1, 0, 1) # Ref if self.settings["ikrefarray"]: ref_names = self.settings["ikrefarray"].split(",") if len(ref_names) > 1: - self.ikref_att = self.addAnimEnumParam("ikref", "Ik Ref", 0, self.settings["ikrefarray"].split(",")) + self.ikref_att = self.addAnimEnumParam( + "ikref", + "Ik Ref", + 0, + self.settings["ikrefarray"].split(",")) if self.settings["headrefarray"]: ref_names = self.settings["headrefarray"].split(",") if len(ref_names) > 1: ref_names.insert(0, "self") - self.headref_att = self.addAnimEnumParam("headref", "Head Ref", 0, ref_names) + self.headref_att = self.addAnimEnumParam( + "headref", "Head Ref", 0, ref_names) # Setup ------------------------------------------ # Eval Fcurve - self.st_value = fcu.getFCurveValues(self.settings["st_profile"], self.settings["division"]) - self.sq_value = fcu.getFCurveValues(self.settings["sq_profile"], self.settings["division"]) - - self.st_att = [ self.addSetupParam("stretch_%s"%i, "Stretch %s"%i, "double", self.st_value[i], -1, 0) for i in range(self.settings["division"]) ] - self.sq_att = [ self.addSetupParam("squash_%s"%i, "Squash %s"%i, "double", self.sq_value[i], 0, 1) for i in range(self.settings["division"]) ] + self.st_value = fcurve.getFCurveValues( + self.settings["st_profile"], self.settings["division"]) + self.sq_value = fcurve.getFCurveValues( + self.settings["sq_profile"], self.settings["division"]) + + self.st_att = [self.addSetupParam("stretch_%s" % i, + "Stretch %s" % i, + "double", + self.st_value[i], -1, 0) + for i in range(self.settings["division"])] + + self.sq_att = [self.addSetupParam("squash_%s" % i, + "Squash %s" % i, + "double", + self.sq_value[i], + 0, + 1) + for i in range(self.settings["division"])] # ===================================================== # OPERATORS # ===================================================== - ## Apply operators, constraints, expressions to the hierarchy.\n - # In order to keep the code clean and easier to debug, - # we shouldn't create any new object in this method. - # @param self def addOperators(self): + """Create operators and set the relations for the component rig + + Apply operators, constraints, expressions to the hierarchy. + In order to keep the code clean and easier to debug, + we shouldn't create any new object in this method. + """ # Tangent position --------------------------------- # common part - d = vec.getDistance(self.guide.pos["root"], self.guide.pos["neck"]) - dist_node = nod.createDistNode(self.root, self.ik_ctl) - rootWorld_node = nod.createDecomposeMatrixNode(self.root.attr("worldMatrix")) - div_node = nod.createDivNode(dist_node+".distance", rootWorld_node+".outputScaleX") - div_node = nod.createDivNode(div_node+".outputX", d) + d = vector.getDistance(self.guide.pos["root"], self.guide.pos["neck"]) + dist_node = node.createDistNode(self.root, self.ik_ctl) + rootWorld_node = node.createDecomposeMatrixNode( + self.root.attr("worldMatrix")) + div_node = node.createDivNode(dist_node + ".distance", + rootWorld_node + ".outputScaleX") + div_node = node.createDivNode(div_node + ".outputX", d) # tan0 - mul_node = nod.createMulNode(self.tan0_att, self.tan0_loc.getAttr("ty")) - res_node = nod.createMulNode(mul_node+".outputX", div_node+".outputX") - pm.connectAttr( res_node+".outputX", self.tan0_loc+".ty") + mul_node = node.createMulNode(self.tan0_att, + self.tan0_loc.getAttr("ty")) + res_node = node.createMulNode(mul_node + ".outputX", + div_node + ".outputX") + pm.connectAttr(res_node + ".outputX", self.tan0_loc + ".ty") # tan1 - mul_node = nod.createMulNode(self.tan1_att, self.tan1_loc.getAttr("ty")) - res_node = nod.createMulNode(mul_node+".outputX", div_node+".outputX") - pm.connectAttr( res_node+".outputX", self.tan1_loc.attr("ty")) + mul_node = node.createMulNode(self.tan1_att, + self.tan1_loc.getAttr("ty")) + res_node = node.createMulNode(mul_node + ".outputX", + div_node + ".outputX") + pm.connectAttr(res_node + ".outputX", self.tan1_loc.attr("ty")) # Curves ------------------------------------------- - op = aop.gear_curveslide2_op(self.slv_crv, self.mst_crv, 0, 1.5, .5, .5) - pm.connectAttr(self.maxstretch_att, op+".maxstretch") - pm.connectAttr(self.maxsquash_att, op+".maxsquash") - pm.connectAttr(self.softness_att, op+".softness") + op = applyop.gear_curveslide2_op( + self.slv_crv, self.mst_crv, 0, 1.5, .5, .5) + pm.connectAttr(self.maxstretch_att, op + ".maxstretch") + pm.connectAttr(self.maxsquash_att, op + ".maxsquash") + pm.connectAttr(self.softness_att, op + ".softness") # Volume driver ------------------------------------ - crv_node = nod.createCurveInfoNode(self.slv_crv) + crv_node = node.createCurveInfoNode(self.slv_crv) # Division ----------------------------------------- for i in range(self.settings["division"]): @@ -255,69 +392,92 @@ def addOperators(self): # References u = i / (self.settings["division"] - 1.0) - cns = aop.pathCns(self.div_cns[i], self.slv_crv, False, u, True) - cns.setAttr("frontAxis", 1)# front axis is 'Y' - cns.setAttr("upAxis", 2)# front axis is 'Z' + cns = applyop.pathCns( + self.div_cns[i], self.slv_crv, False, u, True) + cns.setAttr("frontAxis", 1) # front axis is 'Y' + cns.setAttr("upAxis", 2) # front axis is 'Z' # Roll - intMatrix = aop.gear_intmatrix_op(self.intMRef+".worldMatrix", self.ik_ctl+".worldMatrix", u) - dm_node = nod.createDecomposeMatrixNode(intMatrix+".output") - pm.connectAttr(dm_node+".outputRotate", self.twister[i].attr("rotate")) - - pm.parentConstraint(self.twister[i], self.ref_twist[i], maintainOffset=True) - - - pm.connectAttr(self.ref_twist[i]+".translate", cns+".worldUpVector") - + intMatrix = applyop.gear_intmatrix_op( + self.intMRef + ".worldMatrix", self.ik_ctl + ".worldMatrix", u) + dm_node = node.createDecomposeMatrixNode(intMatrix + ".output") + pm.connectAttr(dm_node + ".outputRotate", + self.twister[i].attr("rotate")) + pm.parentConstraint(self.twister[i], + self.ref_twist[i], + maintainOffset=True) + pm.connectAttr(self.ref_twist[i] + ".translate", + cns + ".worldUpVector") # Squash n Stretch - op = aop.gear_squashstretch2_op(self.fk_npo[i], self.root, pm.arclen(self.slv_crv), "y") - pm.connectAttr(self.volume_att, op+".blend") - pm.connectAttr(crv_node+".arcLength", op+".driver") - pm.connectAttr(self.st_att[i], op+".stretch") - pm.connectAttr(self.sq_att[i], op+".squash") + op = applyop.gear_squashstretch2_op(self.fk_npo[i], + self.root, + pm.arclen(self.slv_crv), + "y") + + pm.connectAttr(self.volume_att, op + ".blend") + pm.connectAttr(crv_node + ".arcLength", op + ".driver") + pm.connectAttr(self.st_att[i], op + ".stretch") + pm.connectAttr(self.sq_att[i], op + ".squash") op.setAttr("driver_min", .1) # scl compas if i != 0: - div_node = nod.createDivNode([1,1,1], [self.fk_npo[i-1]+".sx", self.fk_npo[i-1]+".sy", self.fk_npo[i-1]+".sz"]) - pm.connectAttr(div_node+".output", self.scl_npo[i]+".scale") + div_node = node.createDivNode( + [1, 1, 1], + [self.fk_npo[i - 1] + ".sx", + self.fk_npo[i - 1] + ".sy", + self.fk_npo[i - 1] + ".sz"]) + + pm.connectAttr(div_node + ".output", + self.scl_npo[i] + ".scale") # Controlers if i == 0: - mulmat_node = aop.gear_mulmatrix_op(self.div_cns[i].attr("worldMatrix"), - self.root.attr("worldInverseMatrix")) + mulmat_node = applyop.gear_mulmatrix_op( + self.div_cns[i].attr("worldMatrix"), + self.root.attr("worldInverseMatrix")) else: - mulmat_node = aop.gear_mulmatrix_op(self.div_cns[i].attr("worldMatrix"), - self.div_cns[i - 1].attr("worldInverseMatrix")) + mulmat_node = applyop.gear_mulmatrix_op( + self.div_cns[i].attr("worldMatrix"), + self.div_cns[i - 1].attr("worldInverseMatrix")) - dm_node = nod.createDecomposeMatrixNode(mulmat_node+".output") - pm.connectAttr(dm_node+".outputTranslate", self.fk_npo[i].attr("t")) - pm.connectAttr(dm_node+".outputRotate", self.fk_npo[i].attr("r")) + dm_node = node.createDecomposeMatrixNode(mulmat_node + ".output") + pm.connectAttr(dm_node + ".outputTranslate", + self.fk_npo[i].attr("t")) + pm.connectAttr(dm_node + ".outputRotate", + self.fk_npo[i].attr("r")) # Orientation Lock - if i == self.settings["division"] - 1 : - dm_node = nod.createDecomposeMatrixNode(self.ik_ctl+".worldMatrix") - blend_node = nod.createBlendNode([dm_node+".outputRotate%s"%s for s in "XYZ"], [cns+".rotate%s"%s for s in "XYZ"], self.lock_ori_att) + if i == self.settings["division"] - 1: + dm_node = node.createDecomposeMatrixNode( + self.ik_ctl + ".worldMatrix") + blend_node = node.createBlendNode( + [dm_node + ".outputRotate%s" % s for s in "XYZ"], + [cns + ".rotate%s" % s for s in "XYZ"], + self.lock_ori_att) self.div_cns[i].attr("rotate").disconnect() - pm.connectAttr(blend_node+".output", self.div_cns[i]+".rotate") + pm.connectAttr(blend_node + ".output", + self.div_cns[i] + ".rotate") # Head --------------------------------------------- self.fk_ctl[-1].addChild(self.head_cns) - #scale compensation - dm_node = nod.createDecomposeMatrixNode(self.scl_npo[0]+".parentInverseMatrix") - pm.connectAttr(dm_node+".outputScale", self.scl_npo[0]+".scale") + # scale compensation + dm_node = node.createDecomposeMatrixNode( + self.scl_npo[0] + ".parentInverseMatrix") + + pm.connectAttr(dm_node + ".outputScale", + self.scl_npo[0] + ".scale") # ===================================================== # CONNECTOR # ===================================================== - ## Set the relation beetween object from guide to rig.\n - # @param self def setRelation(self): + """Set the relation beetween object from guide to rig""" self.relatives["root"] = self.root self.relatives["tan1"] = self.root self.relatives["tan2"] = self.head_ctl @@ -334,17 +494,16 @@ def setRelation(self): self.jointRelatives["root"] = 0 self.jointRelatives["tan1"] = 0 - self.jointRelatives["tan2"] = len(self.jnt_pos)-1 - self.jointRelatives["neck"] = len(self.jnt_pos)-1 - self.jointRelatives["head"] = len(self.jnt_pos)-1 - self.jointRelatives["eff"] = len(self.jnt_pos)-1 + self.jointRelatives["tan2"] = len(self.jnt_pos) - 1 + self.jointRelatives["neck"] = len(self.jnt_pos) - 1 + self.jointRelatives["head"] = len(self.jnt_pos) - 1 + self.jointRelatives["eff"] = len(self.jnt_pos) - 1 - ## standard connection definition. - # @param self - def connect_standard(self): + def addConnection(self): + """Add more connection definition to the set""" self.connect_standardWithIkRef() - ## standard connection definition with ik and upv references. + # standard connection definition with ik and upv references. # @param self def connect_standardWithIkRef(self): @@ -352,7 +511,6 @@ def connect_standardWithIkRef(self): self.connectRef(self.settings["ikrefarray"], self.ik_cns) - if self.settings["headrefarray"]: ref_names = self.settings["headrefarray"].split(",") @@ -361,17 +519,22 @@ def connect_standardWithIkRef(self): ref.append(self.rig.findRelative(ref_name)) ref.append(self.head_cns) - cns_node = pm.parentConstraint(*ref, skipTranslate="none", maintainOffset=True) - cns_attr = pm.parentConstraint(cns_node, query=True, weightAliasList=True) + cns_node = pm.parentConstraint(*ref, + skipTranslate="none", + maintainOffset=True) + + cns_attr = pm.parentConstraint(cns_node, + query=True, + weightAliasList=True) self.head_cns.attr("tx").disconnect() self.head_cns.attr("ty").disconnect() self.head_cns.attr("tz").disconnect() for i, attr in enumerate(cns_attr): node_name = pm.createNode("condition") - pm.connectAttr(self.headref_att, node_name+".firstTerm") - pm.setAttr(node_name+".secondTerm", i+1) - pm.setAttr(node_name+".operation", 0) - pm.setAttr(node_name+".colorIfTrueR", 1) - pm.setAttr(node_name+".colorIfFalseR", 0) - pm.connectAttr(node_name+".outColorR", attr) + pm.connectAttr(self.headref_att, node_name + ".firstTerm") + pm.setAttr(node_name + ".secondTerm", i + 1) + pm.setAttr(node_name + ".operation", 0) + pm.setAttr(node_name + ".colorIfTrueR", 1) + pm.setAttr(node_name + ".colorIfFalseR", 0) + pm.connectAttr(node_name + ".outColorR", attr) diff --git a/scripts/mgear/maya/shifter/component/shoulder_01/__init__.py b/scripts/mgear/maya/shifter/component/shoulder_01/__init__.py index 8b760a1..5216db7 100644 --- a/scripts/mgear/maya/shifter/component/shoulder_01/__init__.py +++ b/scripts/mgear/maya/shifter/component/shoulder_01/__init__.py @@ -1,103 +1,104 @@ -# MGEAR is under the terms of the MIT License +"""Component Shoulder 01 module""" -# Copyright (c) 2016 Jeremie Passerin, Miquel Campos +from pymel.core import datatypes -# Permission is hereby granted, free of charge, to any person obtaining a copy -# of this software and associated documentation files (the "Software"), to deal -# in the Software without restriction, including without limitation the rights -# to use, copy, modify, merge, publish, distribute, sublicense, and/or sell -# copies of the Software, and to permit persons to whom the Software is -# furnished to do so, subject to the following conditions: +from mgear.maya.shifter import component -# The above copyright notice and this permission notice shall be included in all -# copies or substantial portions of the Software. +from mgear.maya import transform, primitive, vector -# THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR -# IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, -# FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE -# AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER -# LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, -# OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE -# SOFTWARE. - -# Author: Jeremie Passerin geerem@hotmail.com www.jeremiepasserin.com -# Author: Miquel Campos hello@miquel-campos.com www.miquel-campos.com -# Date: 2016 / 10 / 10 - -########################################################## -# GLOBAL -########################################################## -# Maya -import pymel.core.datatypes as dt - -# mgear -from mgear.maya.shifter.component import MainComponent - -import mgear.maya.primitive as pri -import mgear.maya.transform as tra +############################################# +# COMPONENT +############################################# -import mgear.maya.vector as vec -########################################################## -# COMPONENT -########################################################## -## The main component class. -class Component(MainComponent): +class Component(component.Main): + """Shifter component Class""" # ===================================================== # OBJECTS # ===================================================== - ## Add all the objects needed to create the component. - # @param self def addObjects(self): + """Add all the objects needed to create the component.""" - self.normal = self.guide.blades["blade"].z*-1 + self.normal = self.guide.blades["blade"].z * -1 self.binormal = self.guide.blades["blade"].x - self.length0 = vec.getDistance(self.guide.apos[0], self.guide.apos[1]) - - t = tra.getTransformLookingAt(self.guide.apos[0], self.guide.apos[1], self.normal, axis="xy", negate=self.negate) - self.ctl_npo = pri.addTransform(self.root, self.getName("ctl_npo"), t) - self.ctl = self.addCtl(self.ctl_npo, "ctl", t, self.color_fk, "cube", w=self.length0, h=self.size*.1, d=self.size*.1, po=dt.Vector(.5*self.length0*self.n_factor,0,0), tp=self.parentCtlTag) - t = tra.getTransformFromPos(self.guide.apos[1]) - self.orbit_ref1 = pri.addTransform(self.ctl, self.getName("orbit_ref1"), t) - self.orbit_ref2 = pri.addTransform(self.root, self.getName("orbit_ref2"), t) - - self.orbit_cns = pri.addTransform(self.ctl, self.getName("orbit_cns"), t) - - self.orbit_npo = pri.addTransform(self.orbit_cns, self.getName("orbit_npo"), t) - self.orbit_ctl = self.addCtl(self.orbit_npo, "orbit_ctl", t, self.color_fk, "sphere", w=self.length0/4, tp=self.ctl) + self.length0 = vector.getDistance(self.guide.apos[0], + self.guide.apos[1]) + + t = transform.getTransformLookingAt(self.guide.apos[0], + self.guide.apos[1], + self.normal, + axis="xy", + negate=self.negate) + + self.ctl_npo = primitive.addTransform( + self.root, self.getName("ctl_npo"), t) + + self.ctl = self.addCtl( + self.ctl_npo, + "ctl", + t, + self.color_fk, + "cube", + w=self.length0, + h=self.size * .1, + d=self.size * .1, + po=datatypes.Vector(.5 * self.length0 * self.n_factor, 0, 0), + tp=self.parentCtlTag) + + t = transform.getTransformFromPos(self.guide.apos[1]) + self.orbit_ref1 = primitive.addTransform( + self.ctl, self.getName("orbit_ref1"), t) + self.orbit_ref2 = primitive.addTransform( + self.root, self.getName("orbit_ref2"), t) + self.orbit_cns = primitive.addTransform( + self.ctl, self.getName("orbit_cns"), t) + + self.orbit_npo = primitive.addTransform( + self.orbit_cns, self.getName("orbit_npo"), t) + + self.orbit_ctl = self.addCtl(self.orbit_npo, + "orbit_ctl", + t, + self.color_fk, + "sphere", + w=self.length0 / 4, + tp=self.ctl) self.jnt_pos.append([self.ctl, "shoulder"]) + # ===================================================== - # PROPERTY + # ATTRIBUTES # ===================================================== - ## Add parameters to the anim and setup properties to control the component. - # @param self def addAttributes(self): + """Create the anim and setupr rig attributes for the component""" # Ref if self.settings["refArray"]: ref_names = self.settings["refArray"].split(",") if len(ref_names) >= 1: - self.ref_att = self.addAnimEnumParam("rotRef", "Ref", 0, self.settings["refArray"].split(",")) + self.ref_att = self.addAnimEnumParam( + "rotRef", "Ref", 0, self.settings["refArray"].split(",")) # ===================================================== # OPERATORS # ===================================================== - ## Apply operators, constraints, expressions to the hierarchy.\n - # In order to keep the code clean and easier to debug, - # we shouldn't create any new object in this method. - # @param self def addOperators(self): + """Create operators and set the relations for the component rig + + Apply operators, constraints, expressions to the hierarchy. + In order to keep the code clean and easier to debug, + we shouldn't create any new object in this method. + + """ return # ===================================================== # CONNECTOR # ===================================================== - ## Set the relation beetween object from guide to rig.\n - # @param self def setRelation(self): + """Set the relation beetween object from guide to rig""" self.relatives["root"] = self.ctl self.relatives["tip"] = self.orbit_ctl @@ -107,8 +108,8 @@ def setRelation(self): self.jointRelatives["root"] = 0 self.jointRelatives["tip"] = 0 - ## standard connection definition. - # @param self - def connect_standard(self): + def addConnection(self): + """Add more connection definition to the set""" self.parent.addChild(self.root) - self.connect_standardWithRotRef(self.settings["refArray"], self.orbit_cns ) + self.connect_standardWithRotRef(self.settings["refArray"], + self.orbit_cns) diff --git a/scripts/mgear/maya/shifter/component/shoulder_ms_01/__init__.py b/scripts/mgear/maya/shifter/component/shoulder_ms_01/__init__.py index 5496d8c..8a9977f 100644 --- a/scripts/mgear/maya/shifter/component/shoulder_ms_01/__init__.py +++ b/scripts/mgear/maya/shifter/component/shoulder_ms_01/__init__.py @@ -1,129 +1,127 @@ -# MGEAR is under the terms of the MIT License - -# Copyright (c) 2016 Jeremie Passerin, Miquel Campos - -# Permission is hereby granted, free of charge, to any person obtaining a copy -# of this software and associated documentation files (the "Software"), to deal -# in the Software without restriction, including without limitation the rights -# to use, copy, modify, merge, publish, distribute, sublicense, and/or sell -# copies of the Software, and to permit persons to whom the Software is -# furnished to do so, subject to the following conditions: - -# The above copyright notice and this permission notice shall be included in all -# copies or substantial portions of the Software. - -# THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR -# IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, -# FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE -# AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER -# LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, -# OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE -# SOFTWARE. - -# Author: Jeremie Passerin geerem@hotmail.com www.jeremiepasserin.com -# Author: Miquel Campos hello@miquel-campos.com www.miquel-campos.com -# Date: 2016 / 10 / 10 - -########################################################## -# GLOBAL -########################################################## -# Maya +"""Component Shoulder MS 01 module""" + import pymel.core as pm -import pymel.core.datatypes as dt +from pymel.core import datatypes + +from mgear.maya.shifter import component -# mgear -from mgear.maya.shifter.component import MainComponent -import mgear.maya.attribute as att -import mgear.maya.primitive as pri -import mgear.maya.transform as tra -import mgear.maya.applyop as aop -import mgear.maya.vector as vec +from mgear.maya import applyop, vector +from mgear.maya import attribute, transform, primitive -########################################################## +############################################# # COMPONENT -########################################################## -## The main component class. -class Component(MainComponent): +############################################# + + +class Component(component.Main): + """Shifter component Class""" # ===================================================== # OBJECTS # ===================================================== - ## Add all the objects needed to create the component. - # @param self def addObjects(self): + """Add all the objects needed to create the component.""" - self.normal = self.guide.blades["blade"].z*-1 + self.normal = self.guide.blades["blade"].z * -1 self.binormal = self.guide.blades["blade"].x - self.length0 = vec.getDistance(self.guide.apos[0], self.guide.apos[1]) + self.length0 = vector.getDistance(self.guide.apos[0], + self.guide.apos[1]) + + t = transform.getTransformLookingAt(self.guide.apos[0], + self.guide.apos[1], + self.normal, + axis="xy", + negate=self.negate) + + self.npo = primitive.addTransform(self.root, self.getName("npo"), t) + + self.ctl = self.addCtl( + self.npo, + "ctl", + t, + self.color_fk, + "cube", + w=self.length0, + h=self.size * .1, + d=self.size * .1, + po=datatypes.Vector(.5 * self.length0 * self.n_factor, 0, 0), + tp=self.parentCtlTag) - t = tra.getTransformLookingAt(self.guide.apos[0], self.guide.apos[1], self.normal, axis="xy", negate=self.negate) - self.npo = pri.addTransform(self.root, self.getName("npo"), t) - self.ctl = self.addCtl(self.npo, "ctl", t, self.color_fk, "cube", w=self.length0, h=self.size*.1, d=self.size*.1, po=dt.Vector(.5*self.length0*self.n_factor,0,0), tp=self.parentCtlTag) - self.mtx = pri.addTransform(self.npo, self.getName("mtx"), t) + self.mtx = primitive.addTransform(self.npo, self.getName("mtx"), t) - t1 = tra.setMatrixPosition(t,self.guide.apos[1]) - t2 = tra.getInterpolateTransformMatrix(t, t1, blend=0.98 ) - self.loc = pri.addTransform(self.mtx, self.getName("loc"), t2) + t1 = transform.setMatrixPosition(t, self.guide.apos[1]) + t2 = transform.getInterpolateTransformMatrix(t, t1, blend=0.98) + self.loc = primitive.addTransform(self.mtx, self.getName("loc"), t2) - self.end = pri.addTransform(self.ctl, self.getName("end"), t1) + self.end = primitive.addTransform(self.ctl, self.getName("end"), t1) self.jnt_pos.append([self.mtx, "root"]) self.jnt_pos.append([self.loc, 'end']) - att.setKeyableAttributes(self.ctl) - att.setInvertMirror(self.ctl, ["tx","ty", "tz"]) + attribute.setKeyableAttributes(self.ctl) + attribute.setInvertMirror(self.ctl, ["tx", "ty", "tz"]) # ===================================================== - # PROPERTY + # ATTRIBUTES # ===================================================== - ## Add parameters to the anim and setup properties to control the component. - # @param self def addAttributes(self): + """Create the anim and setupr rig attributes for the component""" return - # ===================================================== # OPERATORS # ===================================================== - ## Apply operators, constraints, expressions to the hierarchy.\n - # In order to keep the code clean and easier to debug, - # we shouldn't create any new object in this method. - # @param self def addOperators(self): + """Create operators and set the relations for the component rig + + Apply operators, constraints, expressions to the hierarchy. + In order to keep the code clean and easier to debug, + we shouldn't create any new object in this method. + + """ if self.negate: - node = aop.aimCns(self.mtx, self.end, axis="-xy", wupType=4, wupVector=[0,1,0], wupObject=self.mtx, maintainOffset=False) + o_node = applyop.aimCns(self.mtx, + self.end, + axis="-xy", + wupType=4, + wupVector=[0, 1, 0], + wupObject=self.mtx, + maintainOffset=False) else: - node = aop.aimCns(self.mtx, self.end, axis="xy", wupType=4, wupVector=[0,1,0], wupObject=self.mtx, maintainOffset=False) + o_node = applyop.aimCns(self.mtx, + self.end, + axis="xy", + wupType=4, + wupVector=[0, 1, 0], + wupObject=self.mtx, + maintainOffset=False) + # position constrint loc to ref - node = aop.gear_mulmatrix_op(self.end.attr("worldMatrix"), self.loc.attr("parentInverseMatrix")) + o_node = applyop.gear_mulmatrix_op( + self.end.attr("worldMatrix"), self.loc.attr("parentInverseMatrix")) dm_node = pm.createNode("decomposeMatrix") - pm.connectAttr(node+".output", dm_node+".inputMatrix") + pm.connectAttr(o_node + ".output", dm_node + ".inputMatrix") pb_node = pm.createNode("pairBlend") # move back a little bit to avoid overlapping with limb jts - pm.setAttr(pb_node+".weight", 0.98) - pm.connectAttr(dm_node+".outputTranslate", pb_node+".inTranslate2") - pm.connectAttr(pb_node+".outTranslate", self.loc.attr("translate")) - return - + pm.setAttr(pb_node + ".weight", 0.98) + pm.connectAttr(dm_node + ".outputTranslate", pb_node + ".inTranslate2") + pm.connectAttr(pb_node + ".outTranslate", self.loc.attr("translate")) # ===================================================== # CONNECTOR # ===================================================== - ## Set the relation beetween object from guide to rig.\n - # @param self def setRelation(self): + """Set the relation beetween object from guide to rig""" self.relatives["root"] = self.root self.relatives["tip"] = self.loc self.controlRelatives["root"] = self.ctl self.controlRelatives["tip"] = self.ctl - self.jointRelatives["root"] = 0 self.jointRelatives["tip"] = 1 - ## standard connection definition. - # @param self - def connect_standard(self): + def addConnection(self): + """Add more connection definition to the set""" self.parent.addChild(self.root) diff --git a/scripts/mgear/maya/shifter/component/spine_ik_01/__init__.py b/scripts/mgear/maya/shifter/component/spine_ik_01/__init__.py index 77b1706..6b3127b 100644 --- a/scripts/mgear/maya/shifter/component/spine_ik_01/__init__.py +++ b/scripts/mgear/maya/shifter/component/spine_ik_01/__init__.py @@ -1,126 +1,226 @@ -# MGEAR is under the terms of the MIT License +"""Component Spine IK 01 module""" -# Copyright (c) 2016 Jeremie Passerin, Miquel Campos - -# Permission is hereby granted, free of charge, to any person obtaining a copy -# of this software and associated documentation files (the "Software"), to deal -# in the Software without restriction, including without limitation the rights -# to use, copy, modify, merge, publish, distribute, sublicense, and/or sell -# copies of the Software, and to permit persons to whom the Software is -# furnished to do so, subject to the following conditions: - -# The above copyright notice and this permission notice shall be included in all -# copies or substantial portions of the Software. - -# THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR -# IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, -# FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE -# AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER -# LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, -# OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE -# SOFTWARE. - -# Author: Jeremie Passerin geerem@hotmail.com www.jeremiepasserin.com -# Author: Miquel Campos hello@miquel-campos.com www.miquel-campos.com -# Date: 2016 / 10 / 10 - -############################################# -# GLOBAL -############################################# -# Maya import pymel.core as pm -import pymel.core.datatypes as dt +from pymel.core import datatypes -# mgear -from mgear.maya.shifter.component import MainComponent +from mgear.maya.shifter import component -import mgear.maya.primitive as pri -import mgear.maya.transform as tra -import mgear.maya.attribute as att -import mgear.maya.node as nod -import mgear.maya.vector as vec -import mgear.maya.applyop as aop -import mgear.maya.curve as cur -import mgear.maya.fcurve as fcu +from mgear.maya import node, fcurve, applyop, vector, curve +from mgear.maya import attribute, transform, primitive ############################################# # COMPONENT ############################################# -class Component(MainComponent): + +class Component(component.Main): + """Shifter component Class""" + + # ===================================================== + # OBJECTS + # ===================================================== def addObjects(self): + """Add all the objects needed to create the component.""" - # Auto bend with position controls ------------------------------------ + # Auto bend with position controls -------------------- if self.settings["autoBend"]: - self.autoBendChain= pri.add2DChain(self.root, self.getName("autoBend%s_jnt"), [self.guide.apos[0],self.guide.apos[1]], self.guide.blades["blade"].z*-1, False, True) + self.autoBendChain = primitive.add2DChain( + self.root, + self.getName("autoBend%s_jnt"), + [self.guide.apos[0], self.guide.apos[1]], + self.guide.blades["blade"].z * -1, + False, + True) + for j in self.autoBendChain: j.drawStyle.set(2) # Ik Controlers ------------------------------------ - t = tra.getTransformLookingAt(self.guide.apos[0], self.guide.apos[1], self.guide.blades["blade"].z*-1, "yx", self.negate) - self.ik0_npo = pri.addTransform(self.root, self.getName("ik0_npo"), t) - self.ik0_ctl = self.addCtl(self.ik0_npo, "ik0_ctl", t, self.color_ik, "compas", w=self.size, tp=self.parentCtlTag) - att.setKeyableAttributes(self.ik0_ctl, self.tr_params) - att.setRotOrder(self.ik0_ctl, "ZXY") - att.setInvertMirror(self.ik0_ctl, ["tx", "ry", "rz"]) - - t = tra.setMatrixPosition(t, self.guide.apos[1]) + t = transform.getTransformLookingAt(self.guide.apos[0], + self.guide.apos[1], + self.guide.blades["blade"].z * -1, + "yx", + self.negate) + + self.ik0_npo = primitive.addTransform( + self.root, self.getName("ik0_npo"), t) + + self.ik0_ctl = self.addCtl(self.ik0_npo, + "ik0_ctl", + t, + self.color_ik, + "compas", + w=self.size, + tp=self.parentCtlTag) + + attribute.setKeyableAttributes(self.ik0_ctl, self.tr_params) + attribute.setRotOrder(self.ik0_ctl, "ZXY") + attribute.setInvertMirror(self.ik0_ctl, ["tx", "ry", "rz"]) + + t = transform.setMatrixPosition(t, self.guide.apos[1]) if self.settings["autoBend"]: - self.autoBend_npo = pri.addTransform(self.root, self.getName("spinePosition_npo"), t) - self.autoBend_ctl = self.addCtl(self.autoBend_npo, "spinePosition_ctl", t, self.color_ik, "square", w=self.size, d=.3*self.size, tp=self.parentCtlTag) - att.setKeyableAttributes(self.autoBend_ctl, ["tx", "ty", "tz", "ry"]) - att.setInvertMirror(self.autoBend_ctl, ["tx", "ry"]) - - self.ik1_npo = pri.addTransform(self.autoBendChain[0], self.getName("ik1_npo"), t) - self.ik1autoRot_lvl = pri.addTransform(self.ik1_npo, self.getName("ik1autoRot_lvl"), t) - self.ik1_ctl = self.addCtl(self.ik1autoRot_lvl, "ik1_ctl", t, self.color_ik, "compas", w=self.size, tp=self.autoBend_ctl) + self.autoBend_npo = primitive.addTransform( + self.root, self.getName("spinePosition_npo"), t) + + self.autoBend_ctl = self.addCtl(self.autoBend_npo, + "spinePosition_ctl", + t, + self.color_ik, + "square", + w=self.size, + d=.3 * self.size, + tp=self.parentCtlTag) + + attribute.setKeyableAttributes(self.autoBend_ctl, + ["tx", "ty", "tz", "ry"]) + + attribute.setInvertMirror(self.autoBend_ctl, ["tx", "ry"]) + + self.ik1_npo = primitive.addTransform( + self.autoBendChain[0], self.getName("ik1_npo"), t) + + self.ik1autoRot_lvl = primitive.addTransform( + self.ik1_npo, self.getName("ik1autoRot_lvl"), t) + + self.ik1_ctl = self.addCtl(self.ik1autoRot_lvl, + "ik1_ctl", + t, + self.color_ik, + "compas", + w=self.size, + tp=self.autoBend_ctl) else: - t = tra.setMatrixPosition(t, self.guide.apos[1]) - self.ik1_npo = pri.addTransform(self.root, self.getName("ik1_npo"), t) - self.ik1_ctl = self.addCtl(self.ik1_npo, "ik1_ctl", t, self.color_ik, "compas", w=self.size, tp=self.ik0_ctl) - - att.setKeyableAttributes(self.ik1_ctl, self.tr_params) - att.setRotOrder(self.ik1_ctl, "ZXY") - att.setInvertMirror(self.ik1_ctl, ["tx", "ry", "rz"]) + t = transform.setMatrixPosition(t, self.guide.apos[1]) + self.ik1_npo = primitive.addTransform( + self.root, self.getName("ik1_npo"), t) + self.ik1_ctl = self.addCtl(self.ik1_npo, + "ik1_ctl", + t, + self.color_ik, + "compas", + w=self.size, + tp=self.ik0_ctl) + + attribute.setKeyableAttributes(self.ik1_ctl, self.tr_params) + attribute.setRotOrder(self.ik1_ctl, "ZXY") + attribute.setInvertMirror(self.ik1_ctl, ["tx", "ry", "rz"]) # Tangent controllers ------------------------------- if self.settings["centralTangent"]: - t = tra.setMatrixPosition(t, vec.linearlyInterpolate(self.guide.apos[0], self.guide.apos[1], .33)) - self.tan0_npo = pri.addTransform(self.ik0_ctl, self.getName("tan0_npo"), t) - self.tan0_off = pri.addTransform(self.tan0_npo, self.getName("tan0_off"), t) - self.tan0_ctl = self.addCtl(self.tan0_off, "tan0_ctl", t, self.color_ik, "sphere", w=self.size*.1, tp=self.ik0_ctl) - att.setKeyableAttributes(self.tan0_ctl, self.t_params) - - t = tra.setMatrixPosition(t, vec.linearlyInterpolate(self.guide.apos[0], self.guide.apos[1], .66)) - self.tan1_npo = pri.addTransform(self.ik1_ctl, self.getName("tan1_npo"), t) - self.tan1_off = pri.addTransform(self.tan1_npo, self.getName("tan1_off"), t) - self.tan1_ctl = self.addCtl(self.tan1_off, "tan1_ctl", t, self.color_ik, "sphere", w=self.size*.1, tp=self.ik0_ctl) - att.setKeyableAttributes(self.tan1_ctl, self.t_params) + vec_pos = vector.linearlyInterpolate(self.guide.apos[0], + self.guide.apos[1], + .33) + t = transform.setMatrixPosition(t, vec_pos) + + self.tan0_npo = primitive.addTransform( + self.ik0_ctl, self.getName("tan0_npo"), t) + + self.tan0_off = primitive.addTransform( + self.tan0_npo, self.getName("tan0_off"), t) + + self.tan0_ctl = self.addCtl(self.tan0_off, + "tan0_ctl", + t, + self.color_ik, + "sphere", + w=self.size * .1, + tp=self.ik0_ctl) + + attribute.setKeyableAttributes(self.tan0_ctl, self.t_params) + vec_pos = vector.linearlyInterpolate(self.guide.apos[0], + self.guide.apos[1], + .66) + + t = transform.setMatrixPosition(t, vec_pos) + + self.tan1_npo = primitive.addTransform( + self.ik1_ctl, self.getName("tan1_npo"), t) + + self.tan1_off = primitive.addTransform( + self.tan1_npo, self.getName("tan1_off"), t) + + self.tan1_ctl = self.addCtl(self.tan1_off, + "tan1_ctl", + t, + self.color_ik, + "sphere", + w=self.size * .1, + tp=self.ik0_ctl) + + attribute.setKeyableAttributes(self.tan1_ctl, self.t_params) # Tangent mid control - t = tra.setMatrixPosition(t, vec.linearlyInterpolate(self.guide.apos[0], self.guide.apos[1], .5)) - self.tan_npo = pri.addTransform(self.tan0_npo, self.getName("tan_npo"), t) - self.tan_ctl = self.addCtl(self.tan_npo, "tan_ctl", t, self.color_fk, "sphere", w=self.size*.2, tp=self.ik1_ctl) - att.setKeyableAttributes(self.tan_ctl, self.t_params) - att.setInvertMirror(self.tan_ctl, ["tx"]) + vec_pos = vector.linearlyInterpolate(self.guide.apos[0], + self.guide.apos[1], + .5) + t = transform.setMatrixPosition(t, vec_pos) + + self.tan_npo = primitive.addTransform( + self.tan0_npo, self.getName("tan_npo"), t) + + self.tan_ctl = self.addCtl(self.tan_npo, + "tan_ctl", + t, + self.color_fk, + "sphere", + w=self.size * .2, + tp=self.ik1_ctl) + + attribute.setKeyableAttributes(self.tan_ctl, self.t_params) + attribute.setInvertMirror(self.tan_ctl, ["tx"]) else: - t = tra.setMatrixPosition(t, vec.linearlyInterpolate(self.guide.apos[0], self.guide.apos[1], .33)) - self.tan0_npo = pri.addTransform(self.ik0_ctl, self.getName("tan0_npo"), t) - self.tan0_ctl = self.addCtl(self.tan0_npo, "tan0_ctl", t, self.color_ik, "sphere", w=self.size*.2, tp=self.ik0_ctl) - att.setKeyableAttributes(self.tan0_ctl, self.t_params) + vec_pos = vector.linearlyInterpolate(self.guide.apos[0], + self.guide.apos[1], + .33) + + t = transform.setMatrixPosition(t, vec_pos) - t = tra.setMatrixPosition(t, vec.linearlyInterpolate(self.guide.apos[0], self.guide.apos[1], .66)) - self.tan1_npo = pri.addTransform(self.ik1_ctl, self.getName("tan1_npo"), t) - self.tan1_ctl = self.addCtl(self.tan1_npo, "tan1_ctl", t, self.color_ik, "sphere", w=self.size*.2, tp=self.ik1_ctl) - att.setKeyableAttributes(self.tan1_ctl, self.t_params) + self.tan0_npo = primitive.addTransform( + self.ik0_ctl, self.getName("tan0_npo"), t) - att.setInvertMirror(self.tan0_ctl, ["tx"]) - att.setInvertMirror(self.tan1_ctl, ["tx"]) + self.tan0_ctl = self.addCtl(self.tan0_npo, + "tan0_ctl", + t, + self.color_ik, + "sphere", + w=self.size * .2, + tp=self.ik0_ctl) + + attribute.setKeyableAttributes(self.tan0_ctl, self.t_params) + + vec_pos = vector.linearlyInterpolate(self.guide.apos[0], + self.guide.apos[1], + .66) + + t = transform.setMatrixPosition(t, vec_pos) + + self.tan1_npo = primitive.addTransform( + self.ik1_ctl, self.getName("tan1_npo"), t) + + self.tan1_ctl = self.addCtl(self.tan1_npo, + "tan1_ctl", + t, + self.color_ik, + "sphere", + w=self.size * .2, + tp=self.ik1_ctl) + + attribute.setKeyableAttributes(self.tan1_ctl, self.t_params) + + attribute.setInvertMirror(self.tan0_ctl, ["tx"]) + attribute.setInvertMirror(self.tan1_ctl, ["tx"]) # Curves ------------------------------------------- - self.mst_crv = cur.addCnsCurve(self.root, self.getName("mst_crv"), [self.ik0_ctl, self.tan0_ctl, self.tan1_ctl, self.ik1_ctl], 3) - self.slv_crv = cur.addCurve(self.root, self.getName("slv_crv"), [dt.Vector()]*10, False, 3) + self.mst_crv = curve.addCnsCurve( + self.root, + self.getName("mst_crv"), + [self.ik0_ctl, self.tan0_ctl, self.tan1_ctl, self.ik1_ctl], + 3) + self.slv_crv = curve.addCurve(self.root, self.getName("slv_crv"), + [datatypes.Vector()] * 10, + False, + 3) self.mst_crv.setAttr("visibility", False) self.slv_crv.setAttr("visibility", False) @@ -136,138 +236,271 @@ def addObjects(self): self.twister = [] self.ref_twist = [] - t = tra.getTransformLookingAt(self.guide.apos[0], self.guide.apos[1], self.guide.blades["blade"].z*-1, "yx", self.negate) - parent_twistRef = pri.addTransform(self.root, self.getName("reference"), tra.getTransform(self.root)) + t = transform.getTransformLookingAt( + self.guide.apos[0], + self.guide.apos[1], + self.guide.blades["blade"].z * -1, + "yx", + self.negate) + + parent_twistRef = primitive.addTransform( + self.root, + self.getName("reference"), + transform.getTransform(self.root)) self.jointList = [] self.preiviousCtlTag = self.parentCtlTag for i in range(self.settings["division"]): # References - div_cns = pri.addTransform(parentdiv, self.getName("%s_cns"%i)) - pm.setAttr(div_cns+".inheritsTransform", False) + div_cns = primitive.addTransform(parentdiv, + self.getName("%s_cns" % i)) + + pm.setAttr(div_cns + ".inheritsTransform", False) self.div_cns.append(div_cns) parentdiv = div_cns # Controlers (First and last one are fake) # if i in [0]: - # TODO: add option setting to add or not the first and last controller for the fk + # TODO: add option setting to add or not the first and last + # controller for the fk # if i in [0, self.settings["division"] - 1] and False: if i in [0, self.settings["division"] - 1]: - fk_ctl = pri.addTransform(parentctl, self.getName("%s_loc"%i), tra.getTransform(parentctl)) + fk_ctl = primitive.addTransform( + parentctl, + self.getName("%s_loc" % i), + transform.getTransform(parentctl)) + fk_npo = fk_ctl - if i in [ self.settings["division"] - 1]: + if i in [self.settings["division"] - 1]: self.fk_ctl.append(fk_ctl) else: - fk_npo = pri.addTransform(parentctl, self.getName("fk%s_npo"%(i-1)), tra.getTransform(parentctl)) - fk_ctl = self.addCtl(fk_npo, "fk%s_ctl"%(i-1), tra.getTransform(parentctl), self.color_fk, "cube", w=self.size, h=self.size*.05, d=self.size, tp=self.preiviousCtlTag) - att.setKeyableAttributes(self.fk_ctl) - att.setRotOrder(fk_ctl, "ZXY") + fk_npo = primitive.addTransform( + parentctl, + self.getName("fk%s_npo" % (i - 1)), + transform.getTransform(parentctl)) + + fk_ctl = self.addCtl(fk_npo, + "fk%s_ctl" % (i - 1), + transform.getTransform(parentctl), + self.color_fk, + "cube", + w=self.size, + h=self.size * .05, + d=self.size, + tp=self.preiviousCtlTag) + + attribute.setKeyableAttributes(self.fk_ctl) + attribute.setRotOrder(fk_ctl, "ZXY") self.fk_ctl.append(fk_ctl) self.preiviousCtlTag = fk_ctl # setAttr(fk_npo+".inheritsTransform", False) self.fk_npo.append(fk_npo) parentctl = fk_ctl - scl_ref = pri.addTransform(parentctl, self.getName("%s_scl_ref"%i), tra.getTransform(parentctl)) + scl_ref = primitive.addTransform(parentctl, + self.getName("%s_scl_ref" % i), + transform.getTransform(parentctl)) + self.scl_transforms.append(scl_ref) # Deformers (Shadow) self.jnt_pos.append([scl_ref, i]) - #Twist references (This objects will replace the spinlookup slerp solver behavior) - t = tra.getTransformLookingAt(self.guide.apos[0], self.guide.apos[1], self.guide.blades["blade"].z*-1, "yx", self.negate) - twister = pri.addTransform(parent_twistRef, self.getName("%s_rot_ref"%i), t) - ref_twist = pri.addTransform(parent_twistRef, self.getName("%s_pos_ref"%i), t) - ref_twist.setTranslation(dt.Vector(1.0,0,0), space="preTransform") + # Twist references (This objects will replace the spinlookup slerp + # solver behavior) + t = transform.getTransformLookingAt( + self.guide.apos[0], + self.guide.apos[1], + self.guide.blades["blade"].z * -1, + "yx", + self.negate) + + twister = primitive.addTransform( + parent_twistRef, self.getName("%s_rot_ref" % i), t) + ref_twist = primitive.addTransform( + parent_twistRef, self.getName("%s_pos_ref" % i), t) + ref_twist.setTranslation( + datatypes.Vector(1.0, 0, 0), space="preTransform") self.twister.append(twister) self.ref_twist.append(ref_twist) - #TODO: update this part with the optiona FK controls update - for x in self.fk_ctl[:-1]: - att.setInvertMirror(x, ["tx", "rz", "ry"]) + # TODO: update this part with the optiona FK controls update + for x in self.fk_ctl[:-1]: + attribute.setInvertMirror(x, ["tx", "rz", "ry"]) # Connections (Hooks) ------------------------------ - self.cnx0 = pri.addTransform(self.root, self.getName("0_cnx")) - self.cnx1 = pri.addTransform(self.root, self.getName("1_cnx")) + self.cnx0 = primitive.addTransform(self.root, self.getName("0_cnx")) + self.cnx1 = primitive.addTransform(self.root, self.getName("1_cnx")) + # ===================================================== + # ATTRIBUTES + # ===================================================== def addAttributes(self): + """Create the anim and setupr rig attributes for the component""" # Anim ------------------------------------------- - self.position_att = self.addAnimParam("position", "Position", "double", self.settings["position"], 0, 1) - self.maxstretch_att = self.addAnimParam("maxstretch", "Max Stretch", "double", self.settings["maxstretch"], 1) - self.maxsquash_att = self.addAnimParam("maxsquash", "Max Squash", "double", self.settings["maxsquash"], 0, 1) - self.softness_att = self.addAnimParam("softness", "Softness", "double", self.settings["softness"], 0, 1) - - self.lock_ori0_att = self.addAnimParam("lock_ori0", "Lock Ori 0", "double", self.settings["lock_ori"], 0, 1) - self.lock_ori1_att = self.addAnimParam("lock_ori1", "Lock Ori 1", "double", self.settings["lock_ori"], 0, 1) + self.position_att = self.addAnimParam("position", + "Position", + "double", + self.settings["position"], + 0, + 1) + self.maxstretch_att = self.addAnimParam("maxstretch", + "Max Stretch", + "double", + self.settings["maxstretch"], + 1) + self.maxsquash_att = self.addAnimParam("maxsquash", + "Max Squash", + "double", + self.settings["maxsquash"], + 0, + 1) + self.softness_att = self.addAnimParam("softness", + "Softness", + "double", + self.settings["softness"], + 0, + 1) + + self.lock_ori0_att = self.addAnimParam("lock_ori0", + "Lock Ori 0", + "double", + self.settings["lock_ori"], + 0, + 1) + self.lock_ori1_att = self.addAnimParam("lock_ori1", + "Lock Ori 1", + "double", + self.settings["lock_ori"], + 0, + 1) self.tan0_att = self.addAnimParam("tan0", "Tangent 0", "double", 1, 0) self.tan1_att = self.addAnimParam("tan1", "Tangent 1", "double", 1, 0) # Volume - self.volume_att = self.addAnimParam("volume", "Volume", "double", 1, 0, 1) + self.volume_att = self.addAnimParam( + "volume", "Volume", "double", 1, 0, 1) if self.settings["autoBend"]: - self.sideBend_att = self.addAnimParam("sideBend", "Side Bend", "double", .5, 0, 2) - self.frontBend_att = self.addAnimParam("frontBend", "Front Bend", "double", .5, 0, 2) + self.sideBend_att = self.addAnimParam( + "sideBend", "Side Bend", "double", .5, 0, 2) + self.frontBend_att = self.addAnimParam( + "frontBend", "Front Bend", "double", .5, 0, 2) # Setup ------------------------------------------ # Eval Fcurve - self.st_value = fcu.getFCurveValues(self.settings["st_profile"], self.settings["division"]) - self.sq_value = fcu.getFCurveValues(self.settings["sq_profile"], self.settings["division"]) - - self.st_att = [ self.addSetupParam("stretch_%s"%i, "Stretch %s"%i, "double", self.st_value[i], -1, 0) for i in range(self.settings["division"]) ] - self.sq_att = [ self.addSetupParam("squash_%s"%i, "Squash %s"%i, "double", self.sq_value[i], 0, 1) for i in range(self.settings["division"]) ] + self.st_value = fcurve.getFCurveValues( + self.settings["st_profile"], self.settings["division"]) + self.sq_value = fcurve.getFCurveValues( + self.settings["sq_profile"], self.settings["division"]) + + self.st_att = [self.addSetupParam("stretch_%s" % i, + "Stretch %s" % i, + "double", + self.st_value[i], + -1, + 0) + for i in range(self.settings["division"])] + + self.sq_att = [self.addSetupParam("squash_%s" % i, + "Squash %s" % i, + "double", + self.sq_value[i], + 0, + 1) + for i in range(self.settings["division"])] + # ===================================================== + # OPERATORS + # ===================================================== def addOperators(self): + """Create operators and set the relations for the component rig + + Apply operators, constraints, expressions to the hierarchy. + In order to keep the code clean and easier to debug, + we shouldn't create any new object in this method. + + """ # Auto bend ---------------------------- if self.settings["autoBend"]: - mul_node = nod.createMulNode([self.autoBendChain[0].ry, self.autoBendChain[0].rz ], [self.sideBend_att, self.frontBend_att]) + mul_node = node.createMulNode( + [self.autoBendChain[0].ry, self.autoBendChain[0].rz], + [self.sideBend_att, self.frontBend_att]) + mul_node.outputX >> self.ik1autoRot_lvl.rz mul_node.outputY >> self.ik1autoRot_lvl.rx - self.ikHandleAutoBend = pri.addIkHandle(self.autoBend_ctl, self.getName("ikHandleAutoBend"), self.autoBendChain, "ikSCsolver") - + self.ikHandleAutoBend = primitive.addIkHandle( + self.autoBend_ctl, + self.getName("ikHandleAutoBend"), + self.autoBendChain, "ikSCsolver") # Tangent position --------------------------------- # common part - d = vec.getDistance(self.guide.apos[0], self.guide.apos[1]) - dist_node = nod.createDistNode(self.ik0_ctl, self.ik1_ctl) - rootWorld_node = nod.createDecomposeMatrixNode(self.root.attr("worldMatrix")) - div_node = nod.createDivNode(dist_node+".distance", rootWorld_node+".outputScaleX") - div_node = nod.createDivNode(div_node+".outputX", d) + d = vector.getDistance(self.guide.apos[0], self.guide.apos[1]) + dist_node = node.createDistNode(self.ik0_ctl, self.ik1_ctl) + + rootWorld_node = node.createDecomposeMatrixNode( + self.root.attr("worldMatrix")) + + div_node = node.createDivNode(dist_node + ".distance", + rootWorld_node + ".outputScaleX") + + div_node = node.createDivNode(div_node + ".outputX", d) # tan0 - mul_node = nod.createMulNode(self.tan0_att, self.tan0_npo.getAttr("ty")) - res_node = nod.createMulNode(mul_node+".outputX", div_node+".outputX") - pm.connectAttr( res_node+".outputX", self.tan0_npo.attr("ty")) + mul_node = node.createMulNode(self.tan0_att, + self.tan0_npo.getAttr("ty")) + + res_node = node.createMulNode(mul_node + ".outputX", + div_node + ".outputX") + + pm.connectAttr(res_node + ".outputX", + self.tan0_npo.attr("ty")) # tan1 - mul_node = nod.createMulNode(self.tan1_att, self.tan1_npo.getAttr("ty")) - res_node = nod.createMulNode(mul_node+".outputX", div_node+".outputX") - pm.connectAttr( res_node+".outputX", self.tan1_npo.attr("ty")) + mul_node = node.createMulNode(self.tan1_att, + self.tan1_npo.getAttr("ty")) + + res_node = node.createMulNode(mul_node + ".outputX", + div_node + ".outputX") + + pm.connectAttr(res_node + ".outputX", self.tan1_npo.attr("ty")) # Tangent Mid -------------------------------------- if self.settings["centralTangent"]: - tanIntMat = aop.gear_intmatrix_op(self.tan0_npo.attr("worldMatrix"), self.tan1_npo.attr("worldMatrix"), .5) - aop.gear_mulmatrix_op(tanIntMat.attr("output"), self.tan_npo.attr("parentInverseMatrix[0]"), self.tan_npo) - pm.connectAttr(self.tan_ctl.attr("translate"), self.tan0_off.attr("translate")) - pm.connectAttr(self.tan_ctl.attr("translate"), self.tan1_off.attr("translate")) + tanIntMat = applyop.gear_intmatrix_op( + self.tan0_npo.attr("worldMatrix"), + self.tan1_npo.attr("worldMatrix"), + .5) + + applyop.gear_mulmatrix_op( + tanIntMat.attr("output"), + self.tan_npo.attr("parentInverseMatrix[0]"), + self.tan_npo) + pm.connectAttr(self.tan_ctl.attr("translate"), + self.tan0_off.attr("translate")) + + pm.connectAttr(self.tan_ctl.attr("translate"), + self.tan1_off.attr("translate")) # Curves ------------------------------------------- - op = aop.gear_curveslide2_op(self.slv_crv, self.mst_crv, 0, 1.5, .5, .5) + op = applyop.gear_curveslide2_op( + self.slv_crv, self.mst_crv, 0, 1.5, .5, .5) - pm.connectAttr(self.position_att, op+".position") - pm.connectAttr(self.maxstretch_att, op+".maxstretch") - pm.connectAttr(self.maxsquash_att, op+".maxsquash") - pm.connectAttr(self.softness_att, op+".softness") + pm.connectAttr(self.position_att, op + ".position") + pm.connectAttr(self.maxstretch_att, op + ".maxstretch") + pm.connectAttr(self.maxsquash_att, op + ".maxsquash") + pm.connectAttr(self.softness_att, op + ".softness") # Volume driver ------------------------------------ - crv_node = nod.createCurveInfoNode(self.slv_crv) + crv_node = node.createCurveInfoNode(self.slv_crv) # Division ----------------------------------------- for i in range(self.settings["division"]): @@ -275,61 +508,101 @@ def addOperators(self): # References u = i / (self.settings["division"] - 1.0) - cns = aop.pathCns(self.div_cns[i], self.slv_crv, False, u, True) - cns.setAttr("frontAxis", 1)# front axis is 'Y' - cns.setAttr("upAxis", 0)# front axis is 'X' + cns = applyop.pathCns( + self.div_cns[i], self.slv_crv, False, u, True) + cns.setAttr("frontAxis", 1) # front axis is 'Y' + cns.setAttr("upAxis", 0) # front axis is 'X' # Roll - intMatrix = aop.gear_intmatrix_op(self.ik0_ctl+".worldMatrix", self.ik1_ctl+".worldMatrix", u) - dm_node = nod.createDecomposeMatrixNode(intMatrix+".output") - pm.connectAttr(dm_node+".outputRotate", self.twister[i].attr("rotate")) - + intMatrix = applyop.gear_intmatrix_op( + self.ik0_ctl + ".worldMatrix", + self.ik1_ctl + ".worldMatrix", + u) - pm.parentConstraint(self.twister[i], self.ref_twist[i], maintainOffset=True) + dm_node = node.createDecomposeMatrixNode(intMatrix + ".output") + pm.connectAttr(dm_node + ".outputRotate", + self.twister[i].attr("rotate")) + pm.parentConstraint(self.twister[i], + self.ref_twist[i], + maintainOffset=True) - pm.connectAttr(self.ref_twist[i]+".translate", cns+".worldUpVector") - - #compensate scale reference - div_node = nod.createDivNode([1,1,1], [rootWorld_node+".outputScaleX", rootWorld_node+".outputScaleY", rootWorld_node+".outputScaleZ"]) + pm.connectAttr(self.ref_twist[i] + ".translate", + cns + ".worldUpVector") + # compensate scale reference + div_node = node.createDivNode([1, 1, 1], + [rootWorld_node + ".outputScaleX", + rootWorld_node + ".outputScaleY", + rootWorld_node + ".outputScaleZ"]) # Squash n Stretch - op = aop.gear_squashstretch2_op(self.scl_transforms[i], self.root, pm.arclen(self.slv_crv), "y", div_node+".output" ) - pm.connectAttr(self.volume_att, op+".blend") - pm.connectAttr(crv_node+".arcLength", op+".driver") - pm.connectAttr(self.st_att[i], op+".stretch") - pm.connectAttr(self.sq_att[i], op+".squash") + op = applyop.gear_squashstretch2_op( + self.scl_transforms[i], + self.root, + pm.arclen(self.slv_crv), + "y", + div_node + ".output") + + pm.connectAttr(self.volume_att, op + ".blend") + pm.connectAttr(crv_node + ".arcLength", op + ".driver") + pm.connectAttr(self.st_att[i], op + ".stretch") + pm.connectAttr(self.sq_att[i], op + ".squash") # Controlers if i == 0: - mulmat_node = aop.gear_mulmatrix_op(self.div_cns[i].attr("worldMatrix"), - self.root.attr("worldInverseMatrix")) - dm_node = nod.createDecomposeMatrixNode(mulmat_node+".output") - pm.connectAttr(dm_node+".outputTranslate", self.fk_npo[i].attr("t")) + mulmat_node = applyop.gear_mulmatrix_op( + self.div_cns[i].attr("worldMatrix"), + self.root.attr("worldInverseMatrix")) + + dm_node = node.createDecomposeMatrixNode( + mulmat_node + ".output") + + pm.connectAttr(dm_node + ".outputTranslate", + self.fk_npo[i].attr("t")) else: - mulmat_node = aop.gear_mulmatrix_op(self.div_cns[i].attr("worldMatrix"), - self.div_cns[i - 1].attr("worldInverseMatrix")) - dm_node = nod.createDecomposeMatrixNode(mulmat_node+".output") - mul_node = nod.createMulNode(div_node+".output", dm_node+".outputTranslate") - pm.connectAttr(mul_node+".output", self.fk_npo[i].attr("t")) + mulmat_node = applyop.gear_mulmatrix_op( + self.div_cns[i].attr("worldMatrix"), + self.div_cns[i - 1].attr("worldInverseMatrix")) + + dm_node = node.createDecomposeMatrixNode( + mulmat_node + ".output") - pm.connectAttr(dm_node+".outputRotate", self.fk_npo[i].attr("r")) + mul_node = node.createMulNode(div_node + ".output", + dm_node + ".outputTranslate") + pm.connectAttr(mul_node + ".output", + self.fk_npo[i].attr("t")) + pm.connectAttr(dm_node + ".outputRotate", self.fk_npo[i].attr("r")) # Orientation Lock - if i == 0 : - dm_node = nod.createDecomposeMatrixNode(self.ik0_ctl+".worldMatrix") - blend_node = nod.createBlendNode([dm_node+".outputRotate%s"%s for s in "XYZ"], [cns+".rotate%s"%s for s in "XYZ"], self.lock_ori0_att) + if i == 0: + dm_node = node.createDecomposeMatrixNode( + self.ik0_ctl + ".worldMatrix") + + blend_node = node.createBlendNode( + [dm_node + ".outputRotate%s" % s for s in "XYZ"], + [cns + ".rotate%s" % s for s in "XYZ"], + self.lock_ori0_att) + self.div_cns[i].attr("rotate").disconnect() - pm.connectAttr(blend_node+".output", self.div_cns[i]+".rotate") - elif i == self.settings["division"] - 1 : - dm_node = nod.createDecomposeMatrixNode(self.ik1_ctl+".worldMatrix") - blend_node = nod.createBlendNode([dm_node+".outputRotate%s"%s for s in "XYZ"], [cns+".rotate%s"%s for s in "XYZ"], self.lock_ori1_att) + pm.connectAttr(blend_node + ".output", + self.div_cns[i] + ".rotate") + + elif i == self.settings["division"] - 1: + dm_node = node.createDecomposeMatrixNode( + self.ik1_ctl + ".worldMatrix") + + blend_node = node.createBlendNode( + [dm_node + ".outputRotate%s" % s for s in "XYZ"], + [cns + ".rotate%s" % s for s in "XYZ"], + self.lock_ori1_att) + self.div_cns[i].attr("rotate").disconnect() - pm.connectAttr(blend_node+".output", self.div_cns[i]+".rotate") + pm.connectAttr(blend_node + ".output", + self.div_cns[i] + ".rotate") # Connections (Hooks) ------------------------------ @@ -341,9 +614,8 @@ def addOperators(self): # ===================================================== # CONNECTOR # ===================================================== - ## Set the relation beetween object from guide to rig.\n - # @param self def setRelation(self): + """Set the relation beetween object from guide to rig""" self.relatives["root"] = self.cnx0 self.relatives["eff"] = self.cnx1 diff --git a/scripts/mgear/maya/shifter/component/spine_ik_02/__init__.py b/scripts/mgear/maya/shifter/component/spine_ik_02/__init__.py index 5fb567a..f5836f0 100644 --- a/scripts/mgear/maya/shifter/component/spine_ik_02/__init__.py +++ b/scripts/mgear/maya/shifter/component/spine_ik_02/__init__.py @@ -1,132 +1,234 @@ -# MGEAR is under the terms of the MIT License +"""Component Spine IK 02 module""" -# Copyright (c) 2016 Jeremie Passerin, Miquel Campos - -# Permission is hereby granted, free of charge, to any person obtaining a copy -# of this software and associated documentation files (the "Software"), to deal -# in the Software without restriction, including without limitation the rights -# to use, copy, modify, merge, publish, distribute, sublicense, and/or sell -# copies of the Software, and to permit persons to whom the Software is -# furnished to do so, subject to the following conditions: - -# The above copyright notice and this permission notice shall be included in all -# copies or substantial portions of the Software. - -# THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR -# IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, -# FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE -# AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER -# LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, -# OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE -# SOFTWARE. - -# Author: Jeremie Passerin geerem@hotmail.com www.jeremiepasserin.com -# Author: Miquel Campos hello@miquel-campos.com www.miquel-campos.com -# Date: 2016 / 10 / 10 - -############################################# -# GLOBAL -############################################# -# Maya import pymel.core as pm -import pymel.core.datatypes as dt +from pymel.core import datatypes -# mgear -from mgear.maya.shifter.component import MainComponent +from mgear.maya.shifter import component -import mgear.maya.primitive as pri -import mgear.maya.transform as tra -import mgear.maya.attribute as att -import mgear.maya.node as nod -import mgear.maya.vector as vec -import mgear.maya.applyop as aop -import mgear.maya.curve as cur -import mgear.maya.fcurve as fcu +from mgear.maya import node, fcurve, applyop, vector, curve +from mgear.maya import attribute, transform, primitive ############################################# # COMPONENT ############################################# -class Component(MainComponent): + +class Component(component.Main): + """Shifter component Class""" + + # ===================================================== + # OBJECTS + # ===================================================== def addObjects(self): + """Add all the objects needed to create the component.""" - # Auto bend with position controls ------------------------------------ + # Auto bend with position controls ------------------- if self.settings["autoBend"]: - self.autoBendChain= pri.add2DChain(self.root, self.getName("autoBend%s_jnt"), [self.guide.apos[0],self.guide.apos[1]], self.guide.blades["blade"].z*-1, False, True) + self.autoBendChain = primitive.add2DChain( + self.root, + self.getName("autoBend%s_jnt"), + [self.guide.apos[0], self.guide.apos[1]], + self.guide.blades["blade"].z * -1, + False, + True) + for j in self.autoBendChain: j.drawStyle.set(2) # Ik Controlers ------------------------------------ - t = tra.getTransformLookingAt(self.guide.apos[0], self.guide.apos[1], self.guide.blades["blade"].z*-1, "yx", self.negate) - self.ik0_npo = pri.addTransform(self.root, self.getName("ik0_npo"), t) - self.ik0_ctl = self.addCtl(self.ik0_npo, "ik0_ctl", t, self.color_ik, "compas", w=self.size, tp=self.parentCtlTag) - att.setKeyableAttributes(self.ik0_ctl, self.tr_params) - att.setRotOrder(self.ik0_ctl, "ZXY") - att.setInvertMirror(self.ik0_ctl, ["tx", "ry", "rz"]) + t = transform.getTransformLookingAt( + self.guide.apos[0], + self.guide.apos[1], + self.guide.blades["blade"].z * -1, + "yx", + self.negate) + + self.ik0_npo = primitive.addTransform( + self.root, self.getName("ik0_npo"), t) + self.ik0_ctl = self.addCtl(self.ik0_npo, + "ik0_ctl", + t, + self.color_ik, + "compas", + w=self.size, + tp=self.parentCtlTag) + + attribute.setKeyableAttributes(self.ik0_ctl, self.tr_params) + attribute.setRotOrder(self.ik0_ctl, "ZXY") + attribute.setInvertMirror(self.ik0_ctl, ["tx", "ry", "rz"]) # hip base joint # TODO: add option in setting for on/off if True: - self.hip_lvl = pri.addTransform(self.ik0_ctl, self.getName("hip_lvl"), t) + self.hip_lvl = primitive.addTransform( + self.ik0_ctl, self.getName("hip_lvl"), t) self.jnt_pos.append([self.hip_lvl, "hip"]) - t = tra.setMatrixPosition(t, self.guide.apos[1]) + t = transform.setMatrixPosition(t, self.guide.apos[1]) if self.settings["autoBend"]: - self.autoBend_npo = pri.addTransform(self.root, self.getName("spinePosition_npo"), t) - self.autoBend_ctl = self.addCtl(self.autoBend_npo, "spinePosition_ctl", t, self.color_ik, "square", w=self.size, d=.3*self.size, tp=self.parentCtlTag) - att.setKeyableAttributes(self.autoBend_ctl, ["tx", "ty", "tz", "ry"]) - att.setInvertMirror(self.autoBend_ctl, ["tx", "ry"]) - - self.ik1_npo = pri.addTransform(self.autoBendChain[0], self.getName("ik1_npo"), t) - self.ik1autoRot_lvl = pri.addTransform(self.ik1_npo, self.getName("ik1autoRot_lvl"), t) - self.ik1_ctl = self.addCtl(self.ik1autoRot_lvl, "ik1_ctl", t, self.color_ik, "compas", w=self.size, tp=self.autoBend_ctl) + self.autoBend_npo = primitive.addTransform( + self.root, self.getName("spinePosition_npo"), t) + + self.autoBend_ctl = self.addCtl(self.autoBend_npo, + "spinePosition_ctl", + t, + self.color_ik, + "square", + w=self.size, + d=.3 * self.size, + tp=self.parentCtlTag) + + attribute.setKeyableAttributes(self.autoBend_ctl, + ["tx", "ty", "tz", "ry"]) + + attribute.setInvertMirror(self.autoBend_ctl, ["tx", "ry"]) + + self.ik1_npo = primitive.addTransform( + self.autoBendChain[0], self.getName("ik1_npo"), t) + + self.ik1autoRot_lvl = primitive.addTransform( + self.ik1_npo, self.getName("ik1autoRot_lvl"), t) + + self.ik1_ctl = self.addCtl(self.ik1autoRot_lvl, + "ik1_ctl", + t, + self.color_ik, + "compas", + w=self.size, + tp=self.autoBend_ctl) else: - t = tra.setMatrixPosition(t, self.guide.apos[1]) - self.ik1_npo = pri.addTransform(self.root, self.getName("ik1_npo"), t) - self.ik1_ctl = self.addCtl(self.ik1_npo, "ik1_ctl", t, self.color_ik, "compas", w=self.size, tp=self.ik0_ctl) - - att.setKeyableAttributes(self.ik1_ctl, self.tr_params) - att.setRotOrder(self.ik1_ctl, "ZXY") - att.setInvertMirror(self.ik1_ctl, ["tx", "ry", "rz"]) + t = transform.setMatrixPosition(t, self.guide.apos[1]) + self.ik1_npo = primitive.addTransform( + self.root, self.getName("ik1_npo"), t) + + self.ik1_ctl = self.addCtl(self.ik1_npo, + "ik1_ctl", + t, + self.color_ik, + "compas", + w=self.size, + tp=self.ik0_ctl) + + attribute.setKeyableAttributes(self.ik1_ctl, self.tr_params) + attribute.setRotOrder(self.ik1_ctl, "ZXY") + attribute.setInvertMirror(self.ik1_ctl, ["tx", "ry", "rz"]) # Tangent controllers ------------------------------- if self.settings["centralTangent"]: - t = tra.setMatrixPosition(t, vec.linearlyInterpolate(self.guide.apos[0], self.guide.apos[1], .33)) - self.tan0_npo = pri.addTransform(self.ik0_ctl, self.getName("tan0_npo"), t) - self.tan0_off = pri.addTransform(self.tan0_npo, self.getName("tan0_off"), t) - self.tan0_ctl = self.addCtl(self.tan0_off, "tan0_ctl", t, self.color_ik, "sphere", w=self.size*.1, tp=self.ik0_ctl) - att.setKeyableAttributes(self.tan0_ctl, self.t_params) - - t = tra.setMatrixPosition(t, vec.linearlyInterpolate(self.guide.apos[0], self.guide.apos[1], .66)) - self.tan1_npo = pri.addTransform(self.ik1_ctl, self.getName("tan1_npo"), t) - self.tan1_off = pri.addTransform(self.tan1_npo, self.getName("tan1_off"), t) - self.tan1_ctl = self.addCtl(self.tan1_off, "tan1_ctl", t, self.color_ik, "sphere", w=self.size*.1, tp=self.ik0_ctl) - att.setKeyableAttributes(self.tan1_ctl, self.t_params) + vec_pos = vector.linearlyInterpolate(self.guide.apos[0], + self.guide.apos[1], + .33) + t = transform.setMatrixPosition(t, vec_pos) + + self.tan0_npo = primitive.addTransform( + self.ik0_ctl, self.getName("tan0_npo"), t) + + self.tan0_off = primitive.addTransform( + self.tan0_npo, self.getName("tan0_off"), t) + + self.tan0_ctl = self.addCtl(self.tan0_off, + "tan0_ctl", + t, + self.color_ik, + "sphere", + w=self.size * .1, + tp=self.ik0_ctl) + + attribute.setKeyableAttributes(self.tan0_ctl, self.t_params) + vec_pos = vector.linearlyInterpolate(self.guide.apos[0], + self.guide.apos[1], + .66) + + t = transform.setMatrixPosition(t, vec_pos) + + self.tan1_npo = primitive.addTransform( + self.ik1_ctl, self.getName("tan1_npo"), t) + + self.tan1_off = primitive.addTransform( + self.tan1_npo, self.getName("tan1_off"), t) + + self.tan1_ctl = self.addCtl(self.tan1_off, + "tan1_ctl", + t, + self.color_ik, + "sphere", + w=self.size * .1, + tp=self.ik0_ctl) + + attribute.setKeyableAttributes(self.tan1_ctl, self.t_params) # Tangent mid control - t = tra.setMatrixPosition(t, vec.linearlyInterpolate(self.guide.apos[0], self.guide.apos[1], .5)) - self.tan_npo = pri.addTransform(self.tan0_npo, self.getName("tan_npo"), t) - self.tan_ctl = self.addCtl(self.tan_npo, "tan_ctl", t, self.color_fk, "sphere", w=self.size*.2, tp=self.ik1_ctl) - att.setKeyableAttributes(self.tan_ctl, self.t_params) - att.setInvertMirror(self.tan_ctl, ["tx"]) + vec_pos = vector.linearlyInterpolate(self.guide.apos[0], + self.guide.apos[1], + .5) + t = transform.setMatrixPosition(t, vec_pos) + + self.tan_npo = primitive.addTransform( + self.tan0_npo, self.getName("tan_npo"), t) + + self.tan_ctl = self.addCtl(self.tan_npo, + "tan_ctl", + t, + self.color_fk, + "sphere", + w=self.size * .2, + tp=self.ik1_ctl) + + attribute.setKeyableAttributes(self.tan_ctl, self.t_params) + attribute.setInvertMirror(self.tan_ctl, ["tx"]) else: - t = tra.setMatrixPosition(t, vec.linearlyInterpolate(self.guide.apos[0], self.guide.apos[1], .33)) - self.tan0_npo = pri.addTransform(self.ik0_ctl, self.getName("tan0_npo"), t) - self.tan0_ctl = self.addCtl(self.tan0_npo, "tan0_ctl", t, self.color_ik, "sphere", w=self.size*.2, tp=self.ik0_ctl) - att.setKeyableAttributes(self.tan0_ctl, self.t_params) + vec_pos = vector.linearlyInterpolate(self.guide.apos[0], + self.guide.apos[1], + .33) + + t = transform.setMatrixPosition(t, vec_pos) + + self.tan0_npo = primitive.addTransform( + self.ik0_ctl, self.getName("tan0_npo"), t) - t = tra.setMatrixPosition(t, vec.linearlyInterpolate(self.guide.apos[0], self.guide.apos[1], .66)) - self.tan1_npo = pri.addTransform(self.ik1_ctl, self.getName("tan1_npo"), t) - self.tan1_ctl = self.addCtl(self.tan1_npo, "tan1_ctl", t, self.color_ik, "sphere", w=self.size*.2, tp=self.ik1_ctl) - att.setKeyableAttributes(self.tan1_ctl, self.t_params) + self.tan0_ctl = self.addCtl(self.tan0_npo, + "tan0_ctl", + t, + self.color_ik, + "sphere", + w=self.size * .2, + tp=self.ik0_ctl) - att.setInvertMirror(self.tan0_ctl, ["tx"]) - att.setInvertMirror(self.tan1_ctl, ["tx"]) + attribute.setKeyableAttributes(self.tan0_ctl, self.t_params) + + vec_pos = vector.linearlyInterpolate(self.guide.apos[0], + self.guide.apos[1], + .66) + + t = transform.setMatrixPosition(t, vec_pos) + + self.tan1_npo = primitive.addTransform( + self.ik1_ctl, self.getName("tan1_npo"), t) + + self.tan1_ctl = self.addCtl(self.tan1_npo, + "tan1_ctl", + t, + self.color_ik, + "sphere", + w=self.size * .2, + tp=self.ik1_ctl) + + attribute.setKeyableAttributes(self.tan1_ctl, self.t_params) + + attribute.setInvertMirror(self.tan0_ctl, ["tx"]) + attribute.setInvertMirror(self.tan1_ctl, ["tx"]) # Curves ------------------------------------------- - self.mst_crv = cur.addCnsCurve(self.root, self.getName("mst_crv"), [self.ik0_ctl, self.tan0_ctl, self.tan1_ctl, self.ik1_ctl], 3) - self.slv_crv = cur.addCurve(self.root, self.getName("slv_crv"), [dt.Vector()]*10, False, 3) + self.mst_crv = curve.addCnsCurve( + self.root, + self.getName("mst_crv"), + [self.ik0_ctl, self.tan0_ctl, self.tan1_ctl, self.ik1_ctl], + 3) + self.slv_crv = curve.addCurve(self.root, self.getName("slv_crv"), + [datatypes.Vector()] * 10, + False, + 3) self.mst_crv.setAttr("visibility", False) self.slv_crv.setAttr("visibility", False) @@ -142,213 +244,378 @@ def addObjects(self): self.twister = [] self.ref_twist = [] - t = tra.getTransformLookingAt(self.guide.apos[0], self.guide.apos[1], self.guide.blades["blade"].z*-1, "yx", self.negate) - parent_twistRef = pri.addTransform(self.root, self.getName("reference"), tra.getTransform(self.root)) + t = transform.getTransformLookingAt( + self.guide.apos[0], + self.guide.apos[1], + self.guide.blades["blade"].z * -1, + "yx", + self.negate) + + parent_twistRef = primitive.addTransform( + self.root, + self.getName("reference"), + transform.getTransform(self.root)) self.jointList = [] self.preiviousCtlTag = self.parentCtlTag for i in range(self.settings["division"]): # References - div_cns = pri.addTransform(parentdiv, self.getName("%s_cns"%i)) - pm.setAttr(div_cns+".inheritsTransform", False) + div_cns = primitive.addTransform(parentdiv, + self.getName("%s_cns" % i)) + + pm.setAttr(div_cns + ".inheritsTransform", False) self.div_cns.append(div_cns) parentdiv = div_cns # Controlers (First and last one are fake) # if i in [0]: - # TODO: add option setting to add or not the first and last controller for the fk - if i in [0, self.settings["division"] - 1] and False: - # if i in [0, self.settings["division"] - 1]: - fk_ctl = pri.addTransform(parentctl, self.getName("%s_loc"%i), tra.getTransform(parentctl)) + # TODO: add option setting to add or not the first and last + # controller for the fk + # if i in [0, self.settings["division"] - 1] and False: + if i in [0, self.settings["division"] - 1]: + fk_ctl = primitive.addTransform( + parentctl, + self.getName("%s_loc" % i), + transform.getTransform(parentctl)) + fk_npo = fk_ctl - if i in [ self.settings["division"] - 1]: + if i in [self.settings["division"] - 1]: self.fk_ctl.append(fk_ctl) else: - # fk_npo = pri.addTransform(parentctl, self.getName("fk%s_npo"%(i-1)), tra.getTransform(parentctl)) - fk_npo = pri.addTransform(parentctl, self.getName("fk%s_npo"%(i)), tra.getTransform(parentctl)) - fk_ctl = self.addCtl(fk_npo, "fk%s_ctl"%(i), tra.getTransform(parentctl), self.color_fk, "cube", w=self.size, h=self.size*.05, d=self.size, tp=self.preiviousCtlTag) - # fk_ctl = self.addCtl(fk_npo, "fk%s_ctl"%(i-1), tra.getTransform(parentctl), self.color_fk, "cube", w=self.size, h=self.size*.05, d=self.size, tp=self.preiviousCtlTag) - att.setKeyableAttributes(self.fk_ctl) - att.setRotOrder(fk_ctl, "ZXY") + fk_npo = primitive.addTransform( + parentctl, + self.getName("fk%s_npo" % (i - 1)), + transform.getTransform(parentctl)) + + fk_ctl = self.addCtl(fk_npo, + "fk%s_ctl" % (i - 1), + transform.getTransform(parentctl), + self.color_fk, + "cube", + w=self.size, + h=self.size * .05, + d=self.size, + tp=self.preiviousCtlTag) + + attribute.setKeyableAttributes(self.fk_ctl) + attribute.setRotOrder(fk_ctl, "ZXY") self.fk_ctl.append(fk_ctl) self.preiviousCtlTag = fk_ctl # setAttr(fk_npo+".inheritsTransform", False) self.fk_npo.append(fk_npo) parentctl = fk_ctl - scl_ref = pri.addTransform(parentctl, self.getName("%s_scl_ref"%i), tra.getTransform(parentctl)) + scl_ref = primitive.addTransform(parentctl, + self.getName("%s_scl_ref" % i), + transform.getTransform(parentctl)) + self.scl_transforms.append(scl_ref) # Deformers (Shadow) self.jnt_pos.append([scl_ref, i]) - #Twist references (This objects will replace the spinlookup slerp solver behavior) - t = tra.getTransformLookingAt(self.guide.apos[0], self.guide.apos[1], self.guide.blades["blade"].z*-1, "yx", self.negate) - twister = pri.addTransform(parent_twistRef, self.getName("%s_rot_ref"%i), t) - ref_twist = pri.addTransform(parent_twistRef, self.getName("%s_pos_ref"%i), t) - ref_twist.setTranslation(dt.Vector(1.0,0,0), space="preTransform") + # Twist references (This objects will replace the spinlookup slerp + # solver behavior) + t = transform.getTransformLookingAt( + self.guide.apos[0], + self.guide.apos[1], + self.guide.blades["blade"].z * -1, + "yx", + self.negate) + + twister = primitive.addTransform( + parent_twistRef, self.getName("%s_rot_ref" % i), t) + ref_twist = primitive.addTransform( + parent_twistRef, self.getName("%s_pos_ref" % i), t) + ref_twist.setTranslation( + datatypes.Vector(1.0, 0, 0), space="preTransform") self.twister.append(twister) self.ref_twist.append(ref_twist) - #TODO: update this part with the optiona FK controls update - for x in self.fk_ctl[:-1]: - att.setInvertMirror(x, ["tx", "rz", "ry"]) + # TODO: update this part with the optiona FK controls update + for x in self.fk_ctl[:-1]: + attribute.setInvertMirror(x, ["tx", "rz", "ry"]) # Connections (Hooks) ------------------------------ - self.cnx0 = pri.addTransform(self.root, self.getName("0_cnx")) - self.cnx1 = pri.addTransform(self.root, self.getName("1_cnx")) + self.cnx0 = primitive.addTransform(self.root, self.getName("0_cnx")) + self.cnx1 = primitive.addTransform(self.root, self.getName("1_cnx")) + # ===================================================== + # ATTRIBUTES + # ===================================================== def addAttributes(self): + """Create the anim and setupr rig attributes for the component""" # Anim ------------------------------------------- - self.position_att = self.addAnimParam("position", "Position", "double", self.settings["position"], 0, 1) - self.maxstretch_att = self.addAnimParam("maxstretch", "Max Stretch", "double", self.settings["maxstretch"], 1) - self.maxsquash_att = self.addAnimParam("maxsquash", "Max Squash", "double", self.settings["maxsquash"], 0, 1) - self.softness_att = self.addAnimParam("softness", "Softness", "double", self.settings["softness"], 0, 1) - - self.lock_ori0_att = self.addAnimParam("lock_ori0", "Lock Ori 0", "double", self.settings["lock_ori"], 0, 1) - self.lock_ori1_att = self.addAnimParam("lock_ori1", "Lock Ori 1", "double", self.settings["lock_ori"], 0, 1) + self.position_att = self.addAnimParam("position", + "Position", + "double", + self.settings["position"], + 0, + 1) + self.maxstretch_att = self.addAnimParam("maxstretch", + "Max Stretch", + "double", + self.settings["maxstretch"], + 1) + self.maxsquash_att = self.addAnimParam("maxsquash", + "Max Squash", + "double", + self.settings["maxsquash"], + 0, + 1) + self.softness_att = self.addAnimParam("softness", + "Softness", + "double", + self.settings["softness"], + 0, + 1) + + self.lock_ori0_att = self.addAnimParam("lock_ori0", + "Lock Ori 0", + "double", + self.settings["lock_ori"], + 0, + 1) + self.lock_ori1_att = self.addAnimParam("lock_ori1", + "Lock Ori 1", + "double", + self.settings["lock_ori"], + 0, + 1) self.tan0_att = self.addAnimParam("tan0", "Tangent 0", "double", 1, 0) self.tan1_att = self.addAnimParam("tan1", "Tangent 1", "double", 1, 0) # Volume - self.volume_att = self.addAnimParam("volume", "Volume", "double", 1, 0, 1) + self.volume_att = self.addAnimParam( + "volume", "Volume", "double", 1, 0, 1) if self.settings["autoBend"]: - self.sideBend_att = self.addAnimParam("sideBend", "Side Bend", "double", .5, 0, 2) - self.frontBend_att = self.addAnimParam("frontBend", "Front Bend", "double", .5, 0, 2) + self.sideBend_att = self.addAnimParam( + "sideBend", "Side Bend", "double", .5, 0, 2) + self.frontBend_att = self.addAnimParam( + "frontBend", "Front Bend", "double", .5, 0, 2) # Setup ------------------------------------------ # Eval Fcurve - self.st_value = fcu.getFCurveValues(self.settings["st_profile"], self.settings["division"]) - self.sq_value = fcu.getFCurveValues(self.settings["sq_profile"], self.settings["division"]) - - self.st_att = [ self.addSetupParam("stretch_%s"%i, "Stretch %s"%i, "double", self.st_value[i], -1, 0) for i in range(self.settings["division"]) ] - self.sq_att = [ self.addSetupParam("squash_%s"%i, "Squash %s"%i, "double", self.sq_value[i], 0, 1) for i in range(self.settings["division"]) ] + self.st_value = fcurve.getFCurveValues( + self.settings["st_profile"], self.settings["division"]) + self.sq_value = fcurve.getFCurveValues( + self.settings["sq_profile"], self.settings["division"]) + + self.st_att = [self.addSetupParam("stretch_%s" % i, + "Stretch %s" % i, + "double", + self.st_value[i], + -1, + 0) + for i in range(self.settings["division"])] + + self.sq_att = [self.addSetupParam("squash_%s" % i, + "Squash %s" % i, + "double", + self.sq_value[i], + 0, + 1) + for i in range(self.settings["division"])] + # ===================================================== + # OPERATORS + # ===================================================== def addOperators(self): + """Create operators and set the relations for the component rig + + Apply operators, constraints, expressions to the hierarchy. + In order to keep the code clean and easier to debug, + we shouldn't create any new object in this method. + + """ # Auto bend ---------------------------- if self.settings["autoBend"]: - mul_node = nod.createMulNode([self.autoBendChain[0].ry, self.autoBendChain[0].rz ], [self.sideBend_att, self.frontBend_att]) + mul_node = node.createMulNode( + [self.autoBendChain[0].ry, self.autoBendChain[0].rz], + [self.sideBend_att, self.frontBend_att]) + mul_node.outputX >> self.ik1autoRot_lvl.rz mul_node.outputY >> self.ik1autoRot_lvl.rx - self.ikHandleAutoBend = pri.addIkHandle(self.autoBend_ctl, self.getName("ikHandleAutoBend"), self.autoBendChain, "ikSCsolver") - + self.ikHandleAutoBend = primitive.addIkHandle( + self.autoBend_ctl, + self.getName("ikHandleAutoBend"), + self.autoBendChain, "ikSCsolver") # Tangent position --------------------------------- # common part - d = vec.getDistance(self.guide.apos[0], self.guide.apos[1]) - dist_node = nod.createDistNode(self.ik0_ctl, self.ik1_ctl) - rootWorld_node = nod.createDecomposeMatrixNode(self.root.attr("worldMatrix")) - div_node = nod.createDivNode(dist_node+".distance", rootWorld_node+".outputScaleX") - div_node = nod.createDivNode(div_node+".outputX", d) + d = vector.getDistance(self.guide.apos[0], self.guide.apos[1]) + dist_node = node.createDistNode(self.ik0_ctl, self.ik1_ctl) + + rootWorld_node = node.createDecomposeMatrixNode( + self.root.attr("worldMatrix")) + + div_node = node.createDivNode(dist_node + ".distance", + rootWorld_node + ".outputScaleX") + + div_node = node.createDivNode(div_node + ".outputX", d) # tan0 - mul_node = nod.createMulNode(self.tan0_att, self.tan0_npo.getAttr("ty")) - res_node = nod.createMulNode(mul_node+".outputX", div_node+".outputX") - pm.connectAttr( res_node+".outputX", self.tan0_npo.attr("ty")) + mul_node = node.createMulNode(self.tan0_att, + self.tan0_npo.getAttr("ty")) + + res_node = node.createMulNode(mul_node + ".outputX", + div_node + ".outputX") + + pm.connectAttr(res_node + ".outputX", + self.tan0_npo.attr("ty")) # tan1 - mul_node = nod.createMulNode(self.tan1_att, self.tan1_npo.getAttr("ty")) - res_node = nod.createMulNode(mul_node+".outputX", div_node+".outputX") - pm.connectAttr( res_node+".outputX", self.tan1_npo.attr("ty")) + mul_node = node.createMulNode(self.tan1_att, + self.tan1_npo.getAttr("ty")) + + res_node = node.createMulNode(mul_node + ".outputX", + div_node + ".outputX") + + pm.connectAttr(res_node + ".outputX", self.tan1_npo.attr("ty")) # Tangent Mid -------------------------------------- if self.settings["centralTangent"]: - tanIntMat = aop.gear_intmatrix_op(self.tan0_npo.attr("worldMatrix"), self.tan1_npo.attr("worldMatrix"), .5) - aop.gear_mulmatrix_op(tanIntMat.attr("output"), self.tan_npo.attr("parentInverseMatrix[0]"), self.tan_npo) - pm.connectAttr(self.tan_ctl.attr("translate"), self.tan0_off.attr("translate")) - pm.connectAttr(self.tan_ctl.attr("translate"), self.tan1_off.attr("translate")) + tanIntMat = applyop.gear_intmatrix_op( + self.tan0_npo.attr("worldMatrix"), + self.tan1_npo.attr("worldMatrix"), + .5) + + applyop.gear_mulmatrix_op( + tanIntMat.attr("output"), + self.tan_npo.attr("parentInverseMatrix[0]"), + self.tan_npo) + pm.connectAttr(self.tan_ctl.attr("translate"), + self.tan0_off.attr("translate")) + + pm.connectAttr(self.tan_ctl.attr("translate"), + self.tan1_off.attr("translate")) # Curves ------------------------------------------- - op = aop.gear_curveslide2_op(self.slv_crv, self.mst_crv, 0, 1.5, .5, .5) + op = applyop.gear_curveslide2_op( + self.slv_crv, self.mst_crv, 0, 1.5, .5, .5) - pm.connectAttr(self.position_att, op+".position") - pm.connectAttr(self.maxstretch_att, op+".maxstretch") - pm.connectAttr(self.maxsquash_att, op+".maxsquash") - pm.connectAttr(self.softness_att, op+".softness") + pm.connectAttr(self.position_att, op + ".position") + pm.connectAttr(self.maxstretch_att, op + ".maxstretch") + pm.connectAttr(self.maxsquash_att, op + ".maxsquash") + pm.connectAttr(self.softness_att, op + ".softness") # Volume driver ------------------------------------ - crv_node = nod.createCurveInfoNode(self.slv_crv) + crv_node = node.createCurveInfoNode(self.slv_crv) # Division ----------------------------------------- for i in range(self.settings["division"]): # References u = i / (self.settings["division"] - 1.0) - if i == 0: # we add extra 10% to the first vertebra - u =( 1.0 / (self.settings["division"] - 1.0)) /10 + if i == 0: # we add extra 10% to the first vertebra + u = (1.0 / (self.settings["division"] - 1.0)) / 10 - cns = aop.pathCns(self.div_cns[i], self.slv_crv, False, u, True) - cns.setAttr("frontAxis", 1)# front axis is 'Y' - cns.setAttr("upAxis", 0)# front axis is 'X' + cns = applyop.pathCns( + self.div_cns[i], self.slv_crv, False, u, True) + cns.setAttr("frontAxis", 1) # front axis is 'Y' + cns.setAttr("upAxis", 0) # front axis is 'X' # Roll - intMatrix = aop.gear_intmatrix_op(self.ik0_ctl+".worldMatrix", self.ik1_ctl+".worldMatrix", u) - dm_node = nod.createDecomposeMatrixNode(intMatrix+".output") - pm.connectAttr(dm_node+".outputRotate", self.twister[i].attr("rotate")) - + intMatrix = applyop.gear_intmatrix_op( + self.ik0_ctl + ".worldMatrix", + self.ik1_ctl + ".worldMatrix", + u) - pm.parentConstraint(self.twister[i], self.ref_twist[i], maintainOffset=True) + dm_node = node.createDecomposeMatrixNode(intMatrix + ".output") + pm.connectAttr(dm_node + ".outputRotate", + self.twister[i].attr("rotate")) + pm.parentConstraint(self.twister[i], + self.ref_twist[i], + maintainOffset=True) - pm.connectAttr(self.ref_twist[i]+".translate", cns+".worldUpVector") - - #compensate scale reference - div_node = nod.createDivNode([1,1,1], [rootWorld_node+".outputScaleX", rootWorld_node+".outputScaleY", rootWorld_node+".outputScaleZ"]) + pm.connectAttr(self.ref_twist[i] + ".translate", + cns + ".worldUpVector") + # compensate scale reference + div_node = node.createDivNode([1, 1, 1], + [rootWorld_node + ".outputScaleX", + rootWorld_node + ".outputScaleY", + rootWorld_node + ".outputScaleZ"]) # Squash n Stretch - op = aop.gear_squashstretch2_op(self.scl_transforms[i], self.root, pm.arclen(self.slv_crv), "y", div_node+".output" ) - pm.connectAttr(self.volume_att, op+".blend") - pm.connectAttr(crv_node+".arcLength", op+".driver") - pm.connectAttr(self.st_att[i], op+".stretch") - pm.connectAttr(self.sq_att[i], op+".squash") + op = applyop.gear_squashstretch2_op( + self.scl_transforms[i], + self.root, + pm.arclen(self.slv_crv), + "y", + div_node + ".output") + + pm.connectAttr(self.volume_att, op + ".blend") + pm.connectAttr(crv_node + ".arcLength", op + ".driver") + pm.connectAttr(self.st_att[i], op + ".stretch") + pm.connectAttr(self.sq_att[i], op + ".squash") # Controlers if i == 0: - mulmat_node = aop.gear_mulmatrix_op(self.div_cns[i].attr("worldMatrix"), - self.root.attr("worldInverseMatrix")) - dm_node = nod.createDecomposeMatrixNode(mulmat_node+".output") - pm.connectAttr(dm_node+".outputTranslate", self.fk_npo[i].attr("t")) + mulmat_node = applyop.gear_mulmatrix_op( + self.div_cns[i].attr("worldMatrix"), + self.root.attr("worldInverseMatrix")) + + dm_node = node.createDecomposeMatrixNode( + mulmat_node + ".output") + + pm.connectAttr(dm_node + ".outputTranslate", + self.fk_npo[i].attr("t")) else: - mulmat_node = aop.gear_mulmatrix_op(self.div_cns[i].attr("worldMatrix"), - self.div_cns[i - 1].attr("worldInverseMatrix")) - dm_node = nod.createDecomposeMatrixNode(mulmat_node+".output") - mul_node = nod.createMulNode(div_node+".output", dm_node+".outputTranslate") - pm.connectAttr(mul_node+".output", self.fk_npo[i].attr("t")) + mulmat_node = applyop.gear_mulmatrix_op( + self.div_cns[i].attr("worldMatrix"), + self.div_cns[i - 1].attr("worldInverseMatrix")) + + dm_node = node.createDecomposeMatrixNode( + mulmat_node + ".output") - pm.connectAttr(dm_node+".outputRotate", self.fk_npo[i].attr("r")) + mul_node = node.createMulNode(div_node + ".output", + dm_node + ".outputTranslate") + pm.connectAttr(mul_node + ".output", + self.fk_npo[i].attr("t")) + pm.connectAttr(dm_node + ".outputRotate", self.fk_npo[i].attr("r")) # Orientation Lock - if i == 0 : - dm_node = nod.createDecomposeMatrixNode(self.ik0_ctl+".worldMatrix") - blend_node = nod.createBlendNode([dm_node+".outputRotate%s"%s for s in "XYZ"], [cns+".rotate%s"%s for s in "XYZ"], self.lock_ori0_att) - self.div_cns[i].attr("rotate").disconnect() - pm.connectAttr(blend_node+".output", self.div_cns[i]+".rotate") - elif i == self.settings["division"] - 1 : - dm_node = nod.createDecomposeMatrixNode(self.ik1_ctl+".worldMatrix") - blend_node = nod.createBlendNode([dm_node+".outputRotate%s"%s for s in "XYZ"], [cns+".rotate%s"%s for s in "XYZ"], self.lock_ori1_att) + if i == 0: + dm_node = node.createDecomposeMatrixNode( + self.ik0_ctl + ".worldMatrix") + + blend_node = node.createBlendNode( + [dm_node + ".outputRotate%s" % s for s in "XYZ"], + [cns + ".rotate%s" % s for s in "XYZ"], + self.lock_ori0_att) + self.div_cns[i].attr("rotate").disconnect() - pm.connectAttr(blend_node+".output", self.div_cns[i]+".rotate") + pm.connectAttr(blend_node + ".output", + self.div_cns[i] + ".rotate") - # hip lvl position - # pm.pointConstraint(self.scl_transforms[0], self.hip_lvl, mo) + elif i == self.settings["division"] - 1: + dm_node = node.createDecomposeMatrixNode( + self.ik1_ctl + ".worldMatrix") - # Connections (Hooks) ------------------------------ + blend_node = node.createBlendNode( + [dm_node + ".outputRotate%s" % s for s in "XYZ"], + [cns + ".rotate%s" % s for s in "XYZ"], + self.lock_ori1_att) + + self.div_cns[i].attr("rotate").disconnect() + pm.connectAttr(blend_node + ".output", + self.div_cns[i] + ".rotate") - # pm.parentConstraint(self.scl_transforms[0], self.cnx0) + # Connections (Hooks) ------------------------------ pm.parentConstraint(self.hip_lvl, self.cnx0) - # pm.scaleConstraint(self.scl_transforms[0], self.cnx0) pm.scaleConstraint(self.hip_lvl, self.cnx0) pm.parentConstraint(self.scl_transforms[-1], self.cnx1) pm.scaleConstraint(self.scl_transforms[-1], self.cnx1) @@ -356,9 +623,8 @@ def addOperators(self): # ===================================================== # CONNECTOR # ===================================================== - ## Set the relation beetween object from guide to rig.\n - # @param self def setRelation(self): + """Set the relation beetween object from guide to rig""" self.relatives["root"] = self.cnx0 self.relatives["eff"] = self.cnx1 diff --git a/scripts/mgear/maya/shifter/component/squash4Sides_01/__init__.py b/scripts/mgear/maya/shifter/component/squash4Sides_01/__init__.py index 5a11220..8985554 100644 --- a/scripts/mgear/maya/shifter/component/squash4Sides_01/__init__.py +++ b/scripts/mgear/maya/shifter/component/squash4Sides_01/__init__.py @@ -1,110 +1,76 @@ -# MGEAR is under the terms of the MIT License - -# Copyright (c) 2016 Jeremie Passerin, Miquel Campos - -# Permission is hereby granted, free of charge, to any person obtaining a copy -# of this software and associated documentation files (the "Software"), to deal -# in the Software without restriction, including without limitation the rights -# to use, copy, modify, merge, publish, distribute, sublicense, and/or sell -# copies of the Software, and to permit persons to whom the Software is -# furnished to do so, subject to the following conditions: - -# The above copyright notice and this permission notice shall be included in all -# copies or substantial portions of the Software. - -# THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR -# IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, -# FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE -# AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER -# LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, -# OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE -# SOFTWARE. - -# Author: Jeremie Passerin geerem@hotmail.com www.jeremiepasserin.com -# Author: Miquel Campos hello@miquel-campos.com www.miquel-campos.com -# Date: 2016 / 10 / 10 - -########################################################## -# GLOBAL -########################################################## -# Maya -import pymel.core as pm -import pymel.core.datatypes as dt +"""Component Arm 2 joints 01 module""" +import pymel.core as pm +from pymel.core import datatypes -# mgear -from mgear.maya.shifter.component import MainComponent +from mgear.maya.shifter import component -import mgear.maya.primitive as pri -import mgear.maya.transform as tra -import mgear.maya.applyop as aop -import mgear.maya.attribute as att -import mgear.maya.node as nod -import mgear.maya.vector as vec +from mgear.maya import node, fcurve, applyop, vector, curve +from mgear.maya import attribute, transform, primitive -########################################################## +############################################# # COMPONENT -########################################################## -## The main component class. -class Component(MainComponent): +############################################# + + +class Component(component.Main): + """Shifter component Class""" # ===================================================== # OBJECTS # ===================================================== - ## Add all the objects needed to create the component. - # @param self def addObjects(self): + """Add all the objects needed to create the component.""" - ctlSize = vec.getDistance(self.guide.apos[0], self.guide.apos[1])/3.0 + ctlSize = vector.getDistance(self.guide.apos[0], self.guide.apos[1])/3.0 - t_root = self.guide.tra["root"] - t_root = tra.setMatrixScale(t_root) + t_root = self.guide.transform["root"] + t_root = transform.setMatrixScale(t_root) - self.ik_cns = pri.addTransform(self.root, self.getName("ik_cns"), t_root) + self.ik_cns = primitive.addTransform(self.root, self.getName("ik_cns"), t_root) - t = tra.setMatrixPosition(t_root, self.guide.pos["top"]) + t = transform.setMatrixPosition(t_root, self.guide.pos["top"]) - self.top_npo = pri.addTransform(self.ik_cns, self.getName("top_npo"), t) - self.top_ctl = self.addCtl(self.top_npo, "top_ctl", t, self.color_ik, "arrow", w=ctlSize, ro=dt.Vector(1.5708,1.5708,0), tp=self.parentCtlTag) - att.setKeyableAttributes(self.top_ctl, ["ty"] ) + self.top_npo = primitive.addTransform(self.ik_cns, self.getName("top_npo"), t) + self.top_ctl = self.addCtl(self.top_npo, "top_ctl", t, self.color_ik, "arrow", w=ctlSize, ro=datatypes.Vector(1.5708,1.5708,0), tp=self.parentCtlTag) + attribute.setKeyableAttributes(self.top_ctl, ["ty"] ) - t = tra.setMatrixPosition(t_root, self.guide.pos["bottom"]) - self.bottom_npo = pri.addTransform(self.top_npo, self.getName("bottom_npo"), t) + t = transform.setMatrixPosition(t_root, self.guide.pos["bottom"]) + self.bottom_npo = primitive.addTransform(self.top_npo, self.getName("bottom_npo"), t) self.bottom_npo.rz.set(180) - self.bottom_ctl = self.addCtl(self.bottom_npo, "bottom_ctl", t, self.color_ik, "arrow", w=ctlSize, ro=dt.Vector(1.5708,1.5708,0), tp=self.parentCtlTag) + self.bottom_ctl = self.addCtl(self.bottom_npo, "bottom_ctl", t, self.color_ik, "arrow", w=ctlSize, ro=datatypes.Vector(1.5708,1.5708,0), tp=self.parentCtlTag) self.bottom_ctl.rz.set(0) - att.setKeyableAttributes(self.bottom_ctl, ["ty"] ) - self.bottom_pivot = pri.addTransform(self.bottom_npo, self.getName("bottom_pivot"), tra.getTransform(self.top_ctl)) + attribute.setKeyableAttributes(self.bottom_ctl, ["ty"] ) + self.bottom_pivot = primitive.addTransform(self.bottom_npo, self.getName("bottom_pivot"), transform.getTransform(self.top_ctl)) - t = tra.setMatrixPosition(t_root, self.guide.pos["ext"]) - self.ext_npo = pri.addTransform(self.bottom_pivot, self.getName("ext_npo"), t) + t = transform.setMatrixPosition(t_root, self.guide.pos["ext"]) + self.ext_npo = primitive.addTransform(self.bottom_pivot, self.getName("ext_npo"), t) self.ext_npo.rz.set(-90) - self.ext_ctl = self.addCtl(self.ext_npo, "ext_ctl", t, self.color_ik, "arrow", w=ctlSize, ro=dt.Vector(1.5708,1.5708,0), tp=self.parentCtlTag) + self.ext_ctl = self.addCtl(self.ext_npo, "ext_ctl", t, self.color_ik, "arrow", w=ctlSize, ro=datatypes.Vector(1.5708,1.5708,0), tp=self.parentCtlTag) self.ext_ctl.rz.set(0) - att.setKeyableAttributes(self.ext_ctl, ["ty"] ) + attribute.setKeyableAttributes(self.ext_ctl, ["ty"] ) - t = tra.setMatrixPosition(t_root, self.guide.pos["int"]) - self.int_npo = pri.addTransform(self.ext_npo, self.getName("int_npo"), t) + t = transform.setMatrixPosition(t_root, self.guide.pos["int"]) + self.int_npo = primitive.addTransform(self.ext_npo, self.getName("int_npo"), t) self.int_npo.rz.set(180) - self.int_ctl = self.addCtl(self.int_npo, "int_ctl", t, self.color_ik, "arrow", w=ctlSize, ro=dt.Vector(1.5708,1.5708,0), tp=self.parentCtlTag) + self.int_ctl = self.addCtl(self.int_npo, "int_ctl", t, self.color_ik, "arrow", w=ctlSize, ro=datatypes.Vector(1.5708,1.5708,0), tp=self.parentCtlTag) self.int_ctl.rz.set(0) - att.setKeyableAttributes(self.int_ctl, ["ty"] ) - self.int_pivot = pri.addTransform(self.int_npo, self.getName("int_pivot"), tra.getTransform(self.ext_ctl)) + attribute.setKeyableAttributes(self.int_ctl, ["ty"] ) + self.int_pivot = primitive.addTransform(self.int_npo, self.getName("int_pivot"), transform.getTransform(self.ext_ctl)) - self.anchor = pri.addTransform(self.int_pivot, self.getName("int_npo"), tra.getTransform(self.ik_cns)) + self.anchor = primitive.addTransform(self.int_pivot, self.getName("int_npo"), transform.getTransform(self.ik_cns)) if self.settings["joint"]: self.jnt_pos.append([self.anchor, 0, None, False]) + # ===================================================== + # ATTRIBUTES # ===================================================== - # PROPERTY - # ===================================================== - ## Add parameters to the anim and setup properties to control the component. - # @param self def addAttributes(self): + """Create the anim and setupr rig attributes for the component""" self.volume_att = self.addAnimParam("volume", "Volume", "double", 1, 0, 1) @@ -121,18 +87,28 @@ def addAttributes(self): # In order to keep the code clean and easier to debug, # we shouldn't create any new object in this method. # @param self + # ===================================================== + # OPERATORS + # ===================================================== def addOperators(self): + """Create operators and set the relations for the component rig + + Apply operators, constraints, expressions to the hierarchy. + In order to keep the code clean and easier to debug, + we shouldn't create any new object in this method. + + """ pairs = [ [self.top_ctl, self.bottom_npo, 1, 2], [self.bottom_ctl, self.bottom_pivot, 2, 1], [self.ext_ctl, self.int_npo, 3, 4], [self.int_ctl, self.int_pivot, 4, 3]] for pair in pairs: - d = vec.getDistance(self.guide.apos[pair[2]], self.guide.apos[pair[3]]) - sum_node = nod.createPlusMinusAverage1D([d, pair[0].ty]) - mul_node = nod.createMulNode(pair[0].ty, self.volume_att) - sum2_node = nod.createPlusMinusAverage1D([d, mul_node.outputX]) - mul2_node = nod.createDivNode([sum2_node.output1D, sum_node.output1D, sum2_node.output1D], [d, d, d]) + d = vector.getDistance(self.guide.apos[pair[2]], self.guide.apos[pair[3]]) + sum_node = node.createPlusMinusAverage1D([d, pair[0].ty]) + mul_node = node.createMulNode(pair[0].ty, self.volume_att) + sum2_node = node.createPlusMinusAverage1D([d, mul_node.outputX]) + mul2_node = node.createDivNode([sum2_node.output1D, sum_node.output1D, sum2_node.output1D], [d, d, d]) sum3D_node = pm.createNode("plusMinusAverage") sum3D_node.attr("operation").set(2) sum3D_node.input3D[0].input3Dx.set(2) @@ -143,15 +119,11 @@ def addOperators(self): mul2_node.outputY >> pair[1].sy sum3D_node.output3D.output3Dx >> pair[1].sz - - - # ===================================================== # CONNECTOR # ===================================================== - ## Set the relation beetween object from guide to rig.\n - # @param self def setRelation(self): + """Set the relation beetween object from guide to rig""" self.relatives["root"] = self.anchor self.relatives["top"] = self.anchor self.relatives["bottom"] = self.anchor @@ -164,7 +136,6 @@ def setRelation(self): self.controlRelatives["int"] = self.int_ctl self.controlRelatives["ext"] = self.ext_ctl - if self.settings["joint"]: self.jointRelatives["root"] = 0 self.jointRelatives["top"] = 0 @@ -172,7 +143,6 @@ def setRelation(self): self.jointRelatives["int"] = 0 self.jointRelatives["ext"] = 0 - ## standard connection definition. - # @param self - def connect_standard(self): + def addConnection(self): + """Add more connection definition to the set""" self.connect_standardWithSimpleIkRef() diff --git a/scripts/mgear/maya/shifter/gui.py b/scripts/mgear/maya/shifter/gui.py index 3dcdb63..bbbad0b 100644 --- a/scripts/mgear/maya/shifter/gui.py +++ b/scripts/mgear/maya/shifter/gui.py @@ -149,8 +149,8 @@ def drawComp(self, compType, *args): guide.drawNewComponent(parent, compType) + # @utils.one_undo @classmethod - @utils.one_undo def buildFromSelection(self, *args): logWin = pm.window(title="mGear Build Log", iconName='mGear Log') From ab436b869a36ee76afebee3f7b4c109a7da1bbce Mon Sep 17 00:00:00 2001 From: miquelcampos Date: Wed, 22 Nov 2017 18:59:10 +0900 Subject: [PATCH 079/134] PEP8 #100 Shifter: Shoulder fix --- scripts/mgear/maya/shifter/component/neck_ik_01/__init__.py | 2 -- scripts/mgear/maya/shifter/component/shoulder_01/__init__.py | 3 +-- .../mgear/maya/shifter/component/shoulder_ms_01/__init__.py | 3 +-- 3 files changed, 2 insertions(+), 6 deletions(-) diff --git a/scripts/mgear/maya/shifter/component/neck_ik_01/__init__.py b/scripts/mgear/maya/shifter/component/neck_ik_01/__init__.py index 08146ae..72432cb 100644 --- a/scripts/mgear/maya/shifter/component/neck_ik_01/__init__.py +++ b/scripts/mgear/maya/shifter/component/neck_ik_01/__init__.py @@ -503,8 +503,6 @@ def addConnection(self): """Add more connection definition to the set""" self.connect_standardWithIkRef() - # standard connection definition with ik and upv references. - # @param self def connect_standardWithIkRef(self): self.parent.addChild(self.root) diff --git a/scripts/mgear/maya/shifter/component/shoulder_01/__init__.py b/scripts/mgear/maya/shifter/component/shoulder_01/__init__.py index 5216db7..c7ca19d 100644 --- a/scripts/mgear/maya/shifter/component/shoulder_01/__init__.py +++ b/scripts/mgear/maya/shifter/component/shoulder_01/__init__.py @@ -108,8 +108,7 @@ def setRelation(self): self.jointRelatives["root"] = 0 self.jointRelatives["tip"] = 0 - def addConnection(self): - """Add more connection definition to the set""" + def connect_standard(self): self.parent.addChild(self.root) self.connect_standardWithRotRef(self.settings["refArray"], self.orbit_cns) diff --git a/scripts/mgear/maya/shifter/component/shoulder_ms_01/__init__.py b/scripts/mgear/maya/shifter/component/shoulder_ms_01/__init__.py index 8a9977f..57447e6 100644 --- a/scripts/mgear/maya/shifter/component/shoulder_ms_01/__init__.py +++ b/scripts/mgear/maya/shifter/component/shoulder_ms_01/__init__.py @@ -122,6 +122,5 @@ def setRelation(self): self.jointRelatives["root"] = 0 self.jointRelatives["tip"] = 1 - def addConnection(self): - """Add more connection definition to the set""" + def connect_standard(self): self.parent.addChild(self.root) From 90c2ed9a9873e8787b6d2ed1ecdda3afd9b43935 Mon Sep 17 00:00:00 2001 From: miquelcampos Date: Wed, 22 Nov 2017 19:13:58 +0900 Subject: [PATCH 080/134] PEP8 #100 Shifter: spine and neck fix WIP --- .../shifter/component/neck_ik_01/__init__.py | 443 +++++------------- .../shifter/component/spine_ik_02/__init__.py | 315 ++++--------- 2 files changed, 209 insertions(+), 549 deletions(-) diff --git a/scripts/mgear/maya/shifter/component/neck_ik_01/__init__.py b/scripts/mgear/maya/shifter/component/neck_ik_01/__init__.py index 72432cb..1979930 100644 --- a/scripts/mgear/maya/shifter/component/neck_ik_01/__init__.py +++ b/scripts/mgear/maya/shifter/component/neck_ik_01/__init__.py @@ -1,4 +1,4 @@ -"""Component Neck IK 01 module""" +"""Component Arm 2 joints 01 module""" import pymel.core as pm from pymel.core import datatypes @@ -22,28 +22,14 @@ class Component(component.Main): def addObjects(self): """Add all the objects needed to create the component.""" - self.normal = self.guide.blades["blade"].z * -1 + self.normal = self.guide.blades["blade"].z*-1 # Ik Controlers ------------------------------------ - t = transform.getTransformLookingAt(self.guide.pos["tan1"], - self.guide.pos["neck"], - self.normal, - "yx", - self.negate) - + t = transform.getTransformLookingAt(self.guide.pos["tan1"], self.guide.pos["neck"], self.normal, "yx", self.negate) t = transform.setMatrixPosition(t, self.guide.pos["neck"]) + self.ik_cns = primitive.addTransform(self.root, self.getName("ik_cns"), t) - self.ik_cns = primitive.addTransform( - self.root, self.getName("ik_cns"), t) - - self.ik_ctl = self.addCtl(self.ik_cns, - "ik_ctl", - t, - self.color_ik, - "compas", - w=self.size * .5, - tp=self.parentCtlTag) - + self.ik_ctl = self.addCtl(self.ik_cns, "ik_ctl", t, self.color_ik, "compas", w=self.size*.5, tp=self.parentCtlTag) attribute.setKeyableAttributes(self.ik_ctl, self.tr_params) attribute.setRotOrder(self.ik_ctl, "ZXY") attribute.setInvertMirror(self.ik_ctl, ["tx", "ry", "rz"]) @@ -51,88 +37,34 @@ def addObjects(self): # Tangents ----------------------------------------- if self.settings["tangentControls"]: t = transform.setMatrixPosition(t, self.guide.pos["tan1"]) - - self.tan1_loc = primitive.addTransform( - self.ik_ctl, self.getName("tan1_loc"), t) - - self.tan1_ctl = self.addCtl(self.tan1_loc, - "tan1_ctl", - t, - self.color_ik, - "sphere", - w=self.size * .2, - tp=self.ik_ctl) - + self.tan1_loc = primitive.addTransform(self.ik_ctl, self.getName("tan1_loc"), t) + self.tan1_ctl = self.addCtl(self.tan1_loc, "tan1_ctl", t, self.color_ik, "sphere", w=self.size*.2, tp=self.ik_ctl) attribute.setKeyableAttributes(self.tan1_ctl, self.t_params) attribute.setInvertMirror(self.tan1_ctl, ["tx"]) - t = transform.getTransformLookingAt(self.guide.pos["root"], - self.guide.pos["tan0"], - self.normal, - "yx", - self.negate) - + t = transform.getTransformLookingAt(self.guide.pos["root"], self.guide.pos["tan0"], self.normal, "yx", self.negate) t = transform.setMatrixPosition(t, self.guide.pos["tan0"]) - - self.tan0_loc = primitive.addTransform( - self.root, self.getName("tan0_loc"), t) - - self.tan0_ctl = self.addCtl(self.tan0_loc, - "tan0_ctl", - t, - self.color_ik, - "sphere", - w=self.size * .2, - tp=self.ik_ctl) - - attribute.setKeyableAttributes(self.tan0_ctl, - self.t_params) + self.tan0_loc = primitive.addTransform(self.root, self.getName("tan0_loc"), t) + self.tan0_ctl = self.addCtl(self.tan0_loc, "tan0_ctl", t, self.color_ik, "sphere", w=self.size*.2, tp=self.ik_ctl) + attribute.setKeyableAttributes(self.tan0_ctl, self.t_params) attribute.setInvertMirror(self.tan0_ctl, ["tx"]) # Curves ------------------------------------------- - self.mst_crv = curve.addCnsCurve( - self.root, - self.getName("mst_crv"), - [self.root, self.tan0_ctl, self.tan1_ctl, self.ik_ctl], - 3) - - self.slv_crv = curve.addCurve(self.root, - self.getName("slv_crv"), - [datatypes.Vector()] * 10, - False, - 3) - + self.mst_crv = curve.addCnsCurve(self.root, self.getName("mst_crv"), [self.root, self.tan0_ctl, self.tan1_ctl, self.ik_ctl], 3) + self.slv_crv = curve.addCurve(self.root, self.getName("slv_crv"), [datatypes.Vector()]*10, False, 3) self.mst_crv.setAttr("visibility", False) else: t = transform.setMatrixPosition(t, self.guide.pos["tan1"]) - self.tan1_loc = primitive.addTransform( - self.ik_ctl, self.getName("tan1_loc"), t) - - t = transform.getTransformLookingAt(self.guide.pos["root"], - self.guide.pos["tan0"], - self.normal, - "yx", - self.negate) + self.tan1_loc = primitive.addTransform(self.ik_ctl, self.getName("tan1_loc"), t) + t = transform.getTransformLookingAt(self.guide.pos["root"], self.guide.pos["tan0"], self.normal, "yx", self.negate) t = transform.setMatrixPosition(t, self.guide.pos["tan0"]) - - self.tan0_loc = primitive.addTransform( - self.root, self.getName("tan0_loc"), t) + self.tan0_loc = primitive.addTransform(self.root, self.getName("tan0_loc"), t) # Curves ------------------------------------------- - self.mst_crv = curve.addCnsCurve( - self.root, - self.getName("mst_crv"), - [self.root, self.tan0_loc, self.tan1_loc, self.ik_ctl], - 3) - - self.slv_crv = curve.addCurve(self.root, - self.getName("slv_crv"), - [datatypes.Vector()] * 10, - False, - 3) - + self.mst_crv = curve.addCnsCurve(self.root, self.getName("mst_crv"), [self.root, self.tan0_loc, self.tan1_loc, self.ik_ctl], 3) + self.slv_crv = curve.addCurve(self.root, self.getName("slv_crv"), [datatypes.Vector()]*10, False, 3) self.mst_crv.setAttr("visibility", False) self.slv_crv.setAttr("visibility", False) @@ -149,60 +81,28 @@ def addObjects(self): self.twister = [] self.ref_twist = [] - parent_twistRef = primitive.addTransform( - self.root, - self.getName("reference"), - transform.getTransform(self.root)) - - t = transform.getTransformLookingAt(self.guide.pos["root"], - self.guide.pos["neck"], - self.normal, - "yx", - self.negate) - - self.intMRef = primitive.addTransform( - self.root, self.getName("intMRef"), t) - + parent_twistRef = primitive.addTransform(self.root, self.getName("reference"), transform.getTransform(self.root)) + t = transform.getTransformLookingAt(self.guide.pos["root"], self.guide.pos["neck"], self.normal, "yx", self.negate) + self.intMRef = primitive.addTransform(self.root, self.getName("intMRef"), t) self.previousCtlTag = self.parentCtlTag for i in range(self.settings["division"]): # References - div_cns = primitive.addTransform( - parentdiv, self.getName("%s_cns" % i), t) - - pm.setAttr(div_cns + ".inheritsTransform", False) + div_cns = primitive.addTransform(parentdiv, self.getName("%s_cns"%i), t) + pm.setAttr(div_cns+".inheritsTransform", False) self.div_cns.append(div_cns) parentdiv = div_cns - scl_npo = primitive.addTransform(parentctl, - self.getName("%s_scl_npo" % i), - transform.getTransform(parentctl)) + scl_npo = primitive.addTransform(parentctl, self.getName("%s_scl_npo"%i), transform.getTransform(parentctl)) # Controlers (First and last one are fake) - if i in [self.settings["division"] - 1]: # 0, - fk_ctl = primitive.addTransform( - scl_npo, - self.getName("%s_loc" % i), - transform.getTransform(parentctl)) - + if i in [ self.settings["division"] - 1]: # 0, + fk_ctl = primitive.addTransform(scl_npo, self.getName("%s_loc"%i), transform.getTransform(parentctl)) fk_npo = fk_ctl else: - fk_npo = primitive.addTransform( - scl_npo, - self.getName("fk%s_npo" % i), - transform.getTransform(parentctl)) - - fk_ctl = self.addCtl(fk_npo, - "fk%s_ctl" % i, - transform.getTransform(parentctl), - self.color_fk, - "cube", - w=self.size * .2, - h=self.size * .05, - d=self.size * .2, - tp=self.previousCtlTag) - + fk_npo = primitive.addTransform(scl_npo, self.getName("fk%s_npo"%i), transform.getTransform(parentctl)) + fk_ctl = self.addCtl(fk_npo, "fk%s_ctl"%i, transform.getTransform(parentctl), self.color_fk, "cube", w=self.size*.2, h=self.size*.05, d=self.size*.2, tp=self.previousCtlTag) attribute.setKeyableAttributes(self.fk_ctl) attribute.setRotOrder(fk_ctl, "ZXY") @@ -210,137 +110,80 @@ def addObjects(self): self.fk_ctl.append(fk_ctl) + self.scl_npo.append(scl_npo) self.fk_npo.append(fk_npo) parentctl = fk_ctl self.jnt_pos.append([fk_ctl, i]) - t = transform.getTransformLookingAt( - self.guide.pos["root"], - self.guide.pos["neck"], - self.guide.blades["blade"].z * -1, - "yx", - self.negate) - - twister = primitive.addTransform( - parent_twistRef, self.getName("%s_rot_ref" % i), t) - - ref_twist = primitive.addTransform( - parent_twistRef, self.getName("%s_pos_ref" % i), t) - - ref_twist.setTranslation( - datatypes.Vector(0.0, 0, 1.0), space="preTransform") + t = transform.getTransformLookingAt(self.guide.pos["root"], self.guide.pos["neck"], self.guide.blades["blade"].z*-1, "yx", self.negate) + twister = primitive.addTransform(parent_twistRef, self.getName("%s_rot_ref"%i), t) + ref_twist = primitive.addTransform(parent_twistRef, self.getName("%s_pos_ref"%i), t) + ref_twist.setTranslation(datatypes.Vector(0.0,0,1.0), space="preTransform") self.twister.append(twister) self.ref_twist.append(ref_twist) - for x in self.fk_ctl[:-1]: + for x in self.fk_ctl[:-1]: attribute.setInvertMirror(x, ["tx", "rz", "ry"]) # Head --------------------------------------------- - t = transform.getTransformLookingAt(self.guide.pos["head"], - self.guide.pos["eff"], - self.normal, - "yx", - self.negate) - - self.head_cns = primitive.addTransform( - self.root, self.getName("head_cns"), t) - - dist = vector.getDistance(self.guide.pos["head"], - self.guide.pos["eff"]) - - self.head_ctl = self.addCtl(self.head_cns, - "head_ctl", - t, - self.color_fk, - "cube", - w=self.size * .5, - h=dist, d=self.size * .5, - po=datatypes.Vector(0, dist * .5, 0), - tp=self.previousCtlTag) + t = transform.getTransformLookingAt(self.guide.pos["head"], self.guide.pos["eff"], self.normal, "yx", self.negate) + self.head_cns = primitive.addTransform(self.root, self.getName("head_cns"), t) + dist = vector.getDistance(self.guide.pos["head"], self.guide.pos["eff"]) + self.head_ctl = self.addCtl(self.head_cns, "head_ctl", t, self.color_fk, "cube", w=self.size*.5, h=dist, d=self.size*.5, po=datatypes.Vector(0,dist*.5,0), tp=self.previousCtlTag) attribute.setRotOrder(self.head_ctl, "ZXY") attribute.setInvertMirror(self.head_ctl, ["tx", "rz", "ry"]) self.jnt_pos.append([self.head_ctl, "head"]) - # ===================================================== + # ===================================================== # ATTRIBUTES # ===================================================== def addAttributes(self): """Create the anim and setupr rig attributes for the component""" # Anim ------------------------------------------- - self.maxstretch_att = self.addAnimParam( - "maxstretch", - "Max Stretch", - "double", - self.settings["maxstretch"], - 1) - - self.maxsquash_att = self.addAnimParam("maxsquash", - "MaxSquash", - "double", - self.settings["maxsquash"], - 0, - 1) - - self.softness_att = self.addAnimParam("softness", - "Softness", - "double", - self.settings["softness"], - 0, - 1) - - self.lock_ori_att = self.addAnimParam( - "lock_ori", "Lock Ori", "double", 1, 0, 1) + self.maxstretch_att = self.addAnimParam("maxstretch", "Max Stretch", "double", self.settings["maxstretch"], 1) + self.maxsquash_att = self.addAnimParam("maxsquash", "MaxSquash", "double", self.settings["maxsquash"], 0, 1) + self.softness_att = self.addAnimParam("softness", "Softness", "double", self.settings["softness"], 0, 1) + + self.lock_ori_att = self.addAnimParam("lock_ori", "Lock Ori", "double", 1, 0, 1) self.tan0_att = self.addAnimParam("tan0", "Tangent 0", "double", 1, 0) self.tan1_att = self.addAnimParam("tan1", "Tangent 1", "double", 1, 0) # Volume - self.volume_att = self.addAnimParam( - "volume", "Volume", "double", 1, 0, 1) + self.volume_att = self.addAnimParam("volume", "Volume", "double", 1, 0, 1) # Ref if self.settings["ikrefarray"]: ref_names = self.settings["ikrefarray"].split(",") if len(ref_names) > 1: - self.ikref_att = self.addAnimEnumParam( - "ikref", - "Ik Ref", - 0, - self.settings["ikrefarray"].split(",")) + self.ikref_att = self.addAnimEnumParam("ikref", "Ik Ref", 0, self.settings["ikrefarray"].split(",")) if self.settings["headrefarray"]: ref_names = self.settings["headrefarray"].split(",") if len(ref_names) > 1: ref_names.insert(0, "self") - self.headref_att = self.addAnimEnumParam( - "headref", "Head Ref", 0, ref_names) + self.headref_att = self.addAnimEnumParam("headref", "Head Ref", 0, ref_names) # Setup ------------------------------------------ # Eval Fcurve - self.st_value = fcurve.getFCurveValues( - self.settings["st_profile"], self.settings["division"]) - self.sq_value = fcurve.getFCurveValues( - self.settings["sq_profile"], self.settings["division"]) - - self.st_att = [self.addSetupParam("stretch_%s" % i, - "Stretch %s" % i, - "double", - self.st_value[i], -1, 0) - for i in range(self.settings["division"])] - - self.sq_att = [self.addSetupParam("squash_%s" % i, - "Squash %s" % i, - "double", - self.sq_value[i], - 0, - 1) - for i in range(self.settings["division"])] + self.st_value = fcurve.getFCurveValues(self.settings["st_profile"], self.settings["division"]) + self.sq_value = fcurve.getFCurveValues(self.settings["sq_profile"], self.settings["division"]) + + self.st_att = [ self.addSetupParam("stretch_%s"%i, "Stretch %s"%i, "double", self.st_value[i], -1, 0) for i in range(self.settings["division"]) ] + self.sq_att = [ self.addSetupParam("squash_%s"%i, "Squash %s"%i, "double", self.sq_value[i], 0, 1) for i in range(self.settings["division"]) ] + # ===================================================== + # OPERATORS + # ===================================================== + ## Apply operators, constraints, expressions to the hierarchy.\n + # In order to keep the code clean and easier to debug, + # we shouldn't create any new object in this method. + # @param self # ===================================================== # OPERATORS # ===================================================== @@ -352,36 +195,30 @@ def addOperators(self): we shouldn't create any new object in this method. """ + # Tangent position --------------------------------- # common part d = vector.getDistance(self.guide.pos["root"], self.guide.pos["neck"]) dist_node = node.createDistNode(self.root, self.ik_ctl) - rootWorld_node = node.createDecomposeMatrixNode( - self.root.attr("worldMatrix")) - div_node = node.createDivNode(dist_node + ".distance", - rootWorld_node + ".outputScaleX") - div_node = node.createDivNode(div_node + ".outputX", d) + rootWorld_node = node.createDecomposeMatrixNode(self.root.attr("worldMatrix")) + div_node = node.createDivNode(dist_node+".distance", rootWorld_node+".outputScaleX") + div_node = node.createDivNode(div_node+".outputX", d) # tan0 - mul_node = node.createMulNode(self.tan0_att, - self.tan0_loc.getAttr("ty")) - res_node = node.createMulNode(mul_node + ".outputX", - div_node + ".outputX") - pm.connectAttr(res_node + ".outputX", self.tan0_loc + ".ty") + mul_node = node.createMulNode(self.tan0_att, self.tan0_loc.getAttr("ty")) + res_node = node.createMulNode(mul_node+".outputX", div_node+".outputX") + pm.connectAttr( res_node+".outputX", self.tan0_loc+".ty") # tan1 - mul_node = node.createMulNode(self.tan1_att, - self.tan1_loc.getAttr("ty")) - res_node = node.createMulNode(mul_node + ".outputX", - div_node + ".outputX") - pm.connectAttr(res_node + ".outputX", self.tan1_loc.attr("ty")) + mul_node = node.createMulNode(self.tan1_att, self.tan1_loc.getAttr("ty")) + res_node = node.createMulNode(mul_node+".outputX", div_node+".outputX") + pm.connectAttr( res_node+".outputX", self.tan1_loc.attr("ty")) # Curves ------------------------------------------- - op = applyop.gear_curveslide2_op( - self.slv_crv, self.mst_crv, 0, 1.5, .5, .5) - pm.connectAttr(self.maxstretch_att, op + ".maxstretch") - pm.connectAttr(self.maxsquash_att, op + ".maxsquash") - pm.connectAttr(self.softness_att, op + ".softness") + op = applyop.gear_curveslide2_op(self.slv_crv, self.mst_crv, 0, 1.5, .5, .5) + pm.connectAttr(self.maxstretch_att, op+".maxstretch") + pm.connectAttr(self.maxsquash_att, op+".maxsquash") + pm.connectAttr(self.softness_att, op+".softness") # Volume driver ------------------------------------ crv_node = node.createCurveInfoNode(self.slv_crv) @@ -392,87 +229,68 @@ def addOperators(self): # References u = i / (self.settings["division"] - 1.0) - cns = applyop.pathCns( - self.div_cns[i], self.slv_crv, False, u, True) - cns.setAttr("frontAxis", 1) # front axis is 'Y' - cns.setAttr("upAxis", 2) # front axis is 'Z' + cns = applyop.pathCns(self.div_cns[i], self.slv_crv, False, u, True) + cns.setAttr("frontAxis", 1)# front axis is 'Y' + cns.setAttr("upAxis", 2)# front axis is 'Z' # Roll - intMatrix = applyop.gear_intmatrix_op( - self.intMRef + ".worldMatrix", self.ik_ctl + ".worldMatrix", u) - dm_node = node.createDecomposeMatrixNode(intMatrix + ".output") - pm.connectAttr(dm_node + ".outputRotate", - self.twister[i].attr("rotate")) + intMatrix = applyop.gear_intmatrix_op(self.intMRef+".worldMatrix", self.ik_ctl+".worldMatrix", u) + dm_node = node.createDecomposeMatrixNode(intMatrix+".output") + pm.connectAttr(dm_node+".outputRotate", self.twister[i].attr("rotate")) + + pm.parentConstraint(self.twister[i], self.ref_twist[i], maintainOffset=True) + + + pm.connectAttr(self.ref_twist[i]+".translate", cns+".worldUpVector") + - pm.parentConstraint(self.twister[i], - self.ref_twist[i], - maintainOffset=True) - pm.connectAttr(self.ref_twist[i] + ".translate", - cns + ".worldUpVector") # Squash n Stretch - op = applyop.gear_squashstretch2_op(self.fk_npo[i], - self.root, - pm.arclen(self.slv_crv), - "y") - - pm.connectAttr(self.volume_att, op + ".blend") - pm.connectAttr(crv_node + ".arcLength", op + ".driver") - pm.connectAttr(self.st_att[i], op + ".stretch") - pm.connectAttr(self.sq_att[i], op + ".squash") + op = applyop.gear_squashstretch2_op(self.fk_npo[i], self.root, pm.arclen(self.slv_crv), "y") + pm.connectAttr(self.volume_att, op+".blend") + pm.connectAttr(crv_node+".arcLength", op+".driver") + pm.connectAttr(self.st_att[i], op+".stretch") + pm.connectAttr(self.sq_att[i], op+".squash") op.setAttr("driver_min", .1) # scl compas if i != 0: - div_node = node.createDivNode( - [1, 1, 1], - [self.fk_npo[i - 1] + ".sx", - self.fk_npo[i - 1] + ".sy", - self.fk_npo[i - 1] + ".sz"]) - - pm.connectAttr(div_node + ".output", - self.scl_npo[i] + ".scale") + div_node = node.createDivNode([1,1,1], [self.fk_npo[i-1]+".sx", self.fk_npo[i-1]+".sy", self.fk_npo[i-1]+".sz"]) + pm.connectAttr(div_node+".output", self.scl_npo[i]+".scale") # Controlers if i == 0: - mulmat_node = applyop.gear_mulmatrix_op( - self.div_cns[i].attr("worldMatrix"), - self.root.attr("worldInverseMatrix")) + mulmat_node = applyop.gear_mulmatrix_op(self.div_cns[i].attr("worldMatrix"), + self.root.attr("worldInverseMatrix")) else: - mulmat_node = applyop.gear_mulmatrix_op( - self.div_cns[i].attr("worldMatrix"), - self.div_cns[i - 1].attr("worldInverseMatrix")) + mulmat_node = applyop.gear_mulmatrix_op(self.div_cns[i].attr("worldMatrix"), + self.div_cns[i - 1].attr("worldInverseMatrix")) - dm_node = node.createDecomposeMatrixNode(mulmat_node + ".output") - pm.connectAttr(dm_node + ".outputTranslate", - self.fk_npo[i].attr("t")) - pm.connectAttr(dm_node + ".outputRotate", - self.fk_npo[i].attr("r")) + dm_node = node.createDecomposeMatrixNode(mulmat_node+".output") + pm.connectAttr(dm_node+".outputTranslate", self.fk_npo[i].attr("t")) + pm.connectAttr(dm_node+".outputRotate", self.fk_npo[i].attr("r")) # Orientation Lock - if i == self.settings["division"] - 1: - dm_node = node.createDecomposeMatrixNode( - self.ik_ctl + ".worldMatrix") - blend_node = node.createBlendNode( - [dm_node + ".outputRotate%s" % s for s in "XYZ"], - [cns + ".rotate%s" % s for s in "XYZ"], - self.lock_ori_att) + if i == self.settings["division"] - 1 : + dm_node = node.createDecomposeMatrixNode(self.ik_ctl+".worldMatrix") + blend_node = node.createBlendNode([dm_node+".outputRotate%s"%s for s in "XYZ"], [cns+".rotate%s"%s for s in "XYZ"], self.lock_ori_att) self.div_cns[i].attr("rotate").disconnect() + pm.connectAttr(blend_node+".output", self.div_cns[i]+".rotate") - pm.connectAttr(blend_node + ".output", - self.div_cns[i] + ".rotate") # Head --------------------------------------------- self.fk_ctl[-1].addChild(self.head_cns) - # scale compensation - dm_node = node.createDecomposeMatrixNode( - self.scl_npo[0] + ".parentInverseMatrix") - - pm.connectAttr(dm_node + ".outputScale", - self.scl_npo[0] + ".scale") + #scale compensation + dm_node = node.createDecomposeMatrixNode(self.scl_npo[0]+".parentInverseMatrix") + pm.connectAttr(dm_node+".outputScale", self.scl_npo[0]+".scale") + # ===================================================== + # CONNECTOR + # ===================================================== + ## Set the relation beetween object from guide to rig.\n + # @param self # ===================================================== # CONNECTOR # ===================================================== @@ -494,21 +312,25 @@ def setRelation(self): self.jointRelatives["root"] = 0 self.jointRelatives["tan1"] = 0 - self.jointRelatives["tan2"] = len(self.jnt_pos) - 1 - self.jointRelatives["neck"] = len(self.jnt_pos) - 1 - self.jointRelatives["head"] = len(self.jnt_pos) - 1 - self.jointRelatives["eff"] = len(self.jnt_pos) - 1 - - def addConnection(self): - """Add more connection definition to the set""" + self.jointRelatives["tan2"] = len(self.jnt_pos)-1 + self.jointRelatives["neck"] = len(self.jnt_pos)-1 + self.jointRelatives["head"] = len(self.jnt_pos)-1 + self.jointRelatives["eff"] = len(self.jnt_pos)-1 + + ## standard connection definition. + # @param self + def connect_standard(self): self.connect_standardWithIkRef() + ## standard connection definition with ik and upv references. + # @param self def connect_standardWithIkRef(self): self.parent.addChild(self.root) self.connectRef(self.settings["ikrefarray"], self.ik_cns) + if self.settings["headrefarray"]: ref_names = self.settings["headrefarray"].split(",") @@ -517,22 +339,17 @@ def connect_standardWithIkRef(self): ref.append(self.rig.findRelative(ref_name)) ref.append(self.head_cns) - cns_node = pm.parentConstraint(*ref, - skipTranslate="none", - maintainOffset=True) - - cns_attr = pm.parentConstraint(cns_node, - query=True, - weightAliasList=True) + cns_node = pm.parentConstraint(*ref, skipTranslate="none", maintainOffset=True) + cns_attr = pm.parentConstraint(cns_node, query=True, weightAliasList=True) self.head_cns.attr("tx").disconnect() self.head_cns.attr("ty").disconnect() self.head_cns.attr("tz").disconnect() for i, attr in enumerate(cns_attr): node_name = pm.createNode("condition") - pm.connectAttr(self.headref_att, node_name + ".firstTerm") - pm.setAttr(node_name + ".secondTerm", i + 1) - pm.setAttr(node_name + ".operation", 0) - pm.setAttr(node_name + ".colorIfTrueR", 1) - pm.setAttr(node_name + ".colorIfFalseR", 0) - pm.connectAttr(node_name + ".outColorR", attr) + pm.connectAttr(self.headref_att, node_name+".firstTerm") + pm.setAttr(node_name+".secondTerm", i+1) + pm.setAttr(node_name+".operation", 0) + pm.setAttr(node_name+".colorIfTrueR", 1) + pm.setAttr(node_name+".colorIfFalseR", 0) + pm.connectAttr(node_name+".outColorR", attr) diff --git a/scripts/mgear/maya/shifter/component/spine_ik_02/__init__.py b/scripts/mgear/maya/shifter/component/spine_ik_02/__init__.py index f5836f0..4ee0784 100644 --- a/scripts/mgear/maya/shifter/component/spine_ik_02/__init__.py +++ b/scripts/mgear/maya/shifter/component/spine_ik_02/__init__.py @@ -244,60 +244,33 @@ def addObjects(self): self.twister = [] self.ref_twist = [] - t = transform.getTransformLookingAt( - self.guide.apos[0], - self.guide.apos[1], - self.guide.blades["blade"].z * -1, - "yx", - self.negate) - - parent_twistRef = primitive.addTransform( - self.root, - self.getName("reference"), - transform.getTransform(self.root)) + t = transform.getTransformLookingAt(self.guide.apos[0], self.guide.apos[1], self.guide.blades["blade"].z * -1, "yx", self.negate) + parent_twistRef = primitive.addTransform(self.root, self.getName("reference"), transform.getTransform(self.root)) self.jointList = [] self.preiviousCtlTag = self.parentCtlTag for i in range(self.settings["division"]): # References - div_cns = primitive.addTransform(parentdiv, - self.getName("%s_cns" % i)) - + div_cns = primitive.addTransform(parentdiv, self.getName("%s_cns" % i)) pm.setAttr(div_cns + ".inheritsTransform", False) self.div_cns.append(div_cns) parentdiv = div_cns # Controlers (First and last one are fake) # if i in [0]: - # TODO: add option setting to add or not the first and last - # controller for the fk - # if i in [0, self.settings["division"] - 1] and False: - if i in [0, self.settings["division"] - 1]: - fk_ctl = primitive.addTransform( - parentctl, - self.getName("%s_loc" % i), - transform.getTransform(parentctl)) - + # TODO: add option setting to add or not the first and last controller for the fk + if i in [0, self.settings["division"] - 1] and False: + # if i in [0, self.settings["division"] - 1]: + fk_ctl = primitive.addTransform(parentctl, self.getName("%s_loc" % i), transform.getTransform(parentctl)) fk_npo = fk_ctl if i in [self.settings["division"] - 1]: self.fk_ctl.append(fk_ctl) else: - fk_npo = primitive.addTransform( - parentctl, - self.getName("fk%s_npo" % (i - 1)), - transform.getTransform(parentctl)) - - fk_ctl = self.addCtl(fk_npo, - "fk%s_ctl" % (i - 1), - transform.getTransform(parentctl), - self.color_fk, - "cube", - w=self.size, - h=self.size * .05, - d=self.size, - tp=self.preiviousCtlTag) - + # fk_npo = primitive.addTransform(parentctl, self.getName("fk%s_npo"%(i-1)), transform.getTransform(parentctl)) + fk_npo = primitive.addTransform(parentctl, self.getName("fk%s_npo" % (i)), transform.getTransform(parentctl)) + fk_ctl = self.addCtl(fk_npo, "fk%s_ctl" % (i), transform.getTransform(parentctl), self.color_fk, "cube", w=self.size, h=self.size * .05, d=self.size, tp=self.preiviousCtlTag) + # fk_ctl = self.addCtl(fk_npo, "fk%s_ctl"%(i-1), transform.getTransform(parentctl), self.color_fk, "cube", w=self.size, h=self.size*.05, d=self.size, tp=self.preiviousCtlTag) attribute.setKeyableAttributes(self.fk_ctl) attribute.setRotOrder(fk_ctl, "ZXY") self.fk_ctl.append(fk_ctl) @@ -306,30 +279,17 @@ def addObjects(self): # setAttr(fk_npo+".inheritsTransform", False) self.fk_npo.append(fk_npo) parentctl = fk_ctl - scl_ref = primitive.addTransform(parentctl, - self.getName("%s_scl_ref" % i), - transform.getTransform(parentctl)) - + scl_ref = primitive.addTransform(parentctl, self.getName("%s_scl_ref" % i), transform.getTransform(parentctl)) self.scl_transforms.append(scl_ref) # Deformers (Shadow) self.jnt_pos.append([scl_ref, i]) - # Twist references (This objects will replace the spinlookup slerp - # solver behavior) - t = transform.getTransformLookingAt( - self.guide.apos[0], - self.guide.apos[1], - self.guide.blades["blade"].z * -1, - "yx", - self.negate) - - twister = primitive.addTransform( - parent_twistRef, self.getName("%s_rot_ref" % i), t) - ref_twist = primitive.addTransform( - parent_twistRef, self.getName("%s_pos_ref" % i), t) - ref_twist.setTranslation( - datatypes.Vector(1.0, 0, 0), space="preTransform") + # Twist references (This objects will replace the spinlookup slerp solver behavior) + t = transform.getTransformLookingAt(self.guide.apos[0], self.guide.apos[1], self.guide.blades["blade"].z * -1, "yx", self.negate) + twister = primitive.addTransform(parent_twistRef, self.getName("%s_rot_ref" % i), t) + ref_twist = primitive.addTransform(parent_twistRef, self.getName("%s_pos_ref" % i), t) + ref_twist.setTranslation(datatypes.Vector(1.0, 0, 0), space="preTransform") self.twister.append(twister) self.ref_twist.append(ref_twist) @@ -342,85 +302,34 @@ def addObjects(self): self.cnx0 = primitive.addTransform(self.root, self.getName("0_cnx")) self.cnx1 = primitive.addTransform(self.root, self.getName("1_cnx")) - # ===================================================== - # ATTRIBUTES - # ===================================================== def addAttributes(self): - """Create the anim and setupr rig attributes for the component""" # Anim ------------------------------------------- - self.position_att = self.addAnimParam("position", - "Position", - "double", - self.settings["position"], - 0, - 1) - self.maxstretch_att = self.addAnimParam("maxstretch", - "Max Stretch", - "double", - self.settings["maxstretch"], - 1) - self.maxsquash_att = self.addAnimParam("maxsquash", - "Max Squash", - "double", - self.settings["maxsquash"], - 0, - 1) - self.softness_att = self.addAnimParam("softness", - "Softness", - "double", - self.settings["softness"], - 0, - 1) - - self.lock_ori0_att = self.addAnimParam("lock_ori0", - "Lock Ori 0", - "double", - self.settings["lock_ori"], - 0, - 1) - self.lock_ori1_att = self.addAnimParam("lock_ori1", - "Lock Ori 1", - "double", - self.settings["lock_ori"], - 0, - 1) + self.position_att = self.addAnimParam("position", "Position", "double", self.settings["position"], 0, 1) + self.maxstretch_att = self.addAnimParam("maxstretch", "Max Stretch", "double", self.settings["maxstretch"], 1) + self.maxsquash_att = self.addAnimParam("maxsquash", "Max Squash", "double", self.settings["maxsquash"], 0, 1) + self.softness_att = self.addAnimParam("softness", "Softness", "double", self.settings["softness"], 0, 1) + + self.lock_ori0_att = self.addAnimParam("lock_ori0", "Lock Ori 0", "double", self.settings["lock_ori"], 0, 1) + self.lock_ori1_att = self.addAnimParam("lock_ori1", "Lock Ori 1", "double", self.settings["lock_ori"], 0, 1) self.tan0_att = self.addAnimParam("tan0", "Tangent 0", "double", 1, 0) self.tan1_att = self.addAnimParam("tan1", "Tangent 1", "double", 1, 0) # Volume - self.volume_att = self.addAnimParam( - "volume", "Volume", "double", 1, 0, 1) + self.volume_att = self.addAnimParam("volume", "Volume", "double", 1, 0, 1) if self.settings["autoBend"]: - self.sideBend_att = self.addAnimParam( - "sideBend", "Side Bend", "double", .5, 0, 2) - self.frontBend_att = self.addAnimParam( - "frontBend", "Front Bend", "double", .5, 0, 2) + self.sideBend_att = self.addAnimParam("sideBend", "Side Bend", "double", .5, 0, 2) + self.frontBend_att = self.addAnimParam("frontBend", "Front Bend", "double", .5, 0, 2) # Setup ------------------------------------------ # Eval Fcurve - self.st_value = fcurve.getFCurveValues( - self.settings["st_profile"], self.settings["division"]) - self.sq_value = fcurve.getFCurveValues( - self.settings["sq_profile"], self.settings["division"]) - - self.st_att = [self.addSetupParam("stretch_%s" % i, - "Stretch %s" % i, - "double", - self.st_value[i], - -1, - 0) - for i in range(self.settings["division"])] - - self.sq_att = [self.addSetupParam("squash_%s" % i, - "Squash %s" % i, - "double", - self.sq_value[i], - 0, - 1) - for i in range(self.settings["division"])] + self.st_value = fcurve.getFCurveValues(self.settings["st_profile"], self.settings["division"]) + self.sq_value = fcurve.getFCurveValues(self.settings["sq_profile"], self.settings["division"]) + + self.st_att = [self.addSetupParam("stretch_%s" % i, "Stretch %s" % i, "double", self.st_value[i], -1, 0) for i in range(self.settings["division"])] + self.sq_att = [self.addSetupParam("squash_%s" % i, "Squash %s" % i, "double", self.sq_value[i], 0, 1) for i in range(self.settings["division"])] # ===================================================== # OPERATORS @@ -436,71 +345,39 @@ def addOperators(self): # Auto bend ---------------------------- if self.settings["autoBend"]: - mul_node = node.createMulNode( - [self.autoBendChain[0].ry, self.autoBendChain[0].rz], - [self.sideBend_att, self.frontBend_att]) - + mul_node = node.createMulNode([self.autoBendChain[0].ry, self.autoBendChain[0].rz], [self.sideBend_att, self.frontBend_att]) mul_node.outputX >> self.ik1autoRot_lvl.rz mul_node.outputY >> self.ik1autoRot_lvl.rx - self.ikHandleAutoBend = primitive.addIkHandle( - self.autoBend_ctl, - self.getName("ikHandleAutoBend"), - self.autoBendChain, "ikSCsolver") + self.ikHandleAutoBend = primitive.addIkHandle(self.autoBend_ctl, self.getName("ikHandleAutoBend"), self.autoBendChain, "ikSCsolver") # Tangent position --------------------------------- # common part d = vector.getDistance(self.guide.apos[0], self.guide.apos[1]) dist_node = node.createDistNode(self.ik0_ctl, self.ik1_ctl) - - rootWorld_node = node.createDecomposeMatrixNode( - self.root.attr("worldMatrix")) - - div_node = node.createDivNode(dist_node + ".distance", - rootWorld_node + ".outputScaleX") - + rootWorld_node = node.createDecomposeMatrixNode(self.root.attr("worldMatrix")) + div_node = node.createDivNode(dist_node + ".distance", rootWorld_node + ".outputScaleX") div_node = node.createDivNode(div_node + ".outputX", d) # tan0 - mul_node = node.createMulNode(self.tan0_att, - self.tan0_npo.getAttr("ty")) - - res_node = node.createMulNode(mul_node + ".outputX", - div_node + ".outputX") - - pm.connectAttr(res_node + ".outputX", - self.tan0_npo.attr("ty")) + mul_node = node.createMulNode(self.tan0_att, self.tan0_npo.getAttr("ty")) + res_node = node.createMulNode(mul_node + ".outputX", div_node + ".outputX") + pm.connectAttr(res_node + ".outputX", self.tan0_npo.attr("ty")) # tan1 - mul_node = node.createMulNode(self.tan1_att, - self.tan1_npo.getAttr("ty")) - - res_node = node.createMulNode(mul_node + ".outputX", - div_node + ".outputX") - + mul_node = node.createMulNode(self.tan1_att, self.tan1_npo.getAttr("ty")) + res_node = node.createMulNode(mul_node + ".outputX", div_node + ".outputX") pm.connectAttr(res_node + ".outputX", self.tan1_npo.attr("ty")) # Tangent Mid -------------------------------------- if self.settings["centralTangent"]: - tanIntMat = applyop.gear_intmatrix_op( - self.tan0_npo.attr("worldMatrix"), - self.tan1_npo.attr("worldMatrix"), - .5) - - applyop.gear_mulmatrix_op( - tanIntMat.attr("output"), - self.tan_npo.attr("parentInverseMatrix[0]"), - self.tan_npo) - - pm.connectAttr(self.tan_ctl.attr("translate"), - self.tan0_off.attr("translate")) - - pm.connectAttr(self.tan_ctl.attr("translate"), - self.tan1_off.attr("translate")) + tanIntMat = applyop.gear_intmatrix_op(self.tan0_npo.attr("worldMatrix"), self.tan1_npo.attr("worldMatrix"), .5) + applyop.gear_mulmatrix_op(tanIntMat.attr("output"), self.tan_npo.attr("parentInverseMatrix[0]"), self.tan_npo) + pm.connectAttr(self.tan_ctl.attr("translate"), self.tan0_off.attr("translate")) + pm.connectAttr(self.tan_ctl.attr("translate"), self.tan1_off.attr("translate")) # Curves ------------------------------------------- - op = applyop.gear_curveslide2_op( - self.slv_crv, self.mst_crv, 0, 1.5, .5, .5) + op = applyop.gear_curveslide2_op(self.slv_crv, self.mst_crv, 0, 1.5, .5, .5) pm.connectAttr(self.position_att, op + ".position") pm.connectAttr(self.maxstretch_att, op + ".maxstretch") @@ -518,42 +395,24 @@ def addOperators(self): if i == 0: # we add extra 10% to the first vertebra u = (1.0 / (self.settings["division"] - 1.0)) / 10 - cns = applyop.pathCns( - self.div_cns[i], self.slv_crv, False, u, True) + cns = applyop.pathCns(self.div_cns[i], self.slv_crv, False, u, True) cns.setAttr("frontAxis", 1) # front axis is 'Y' cns.setAttr("upAxis", 0) # front axis is 'X' # Roll - intMatrix = applyop.gear_intmatrix_op( - self.ik0_ctl + ".worldMatrix", - self.ik1_ctl + ".worldMatrix", - u) - + intMatrix = applyop.gear_intmatrix_op(self.ik0_ctl + ".worldMatrix", self.ik1_ctl + ".worldMatrix", u) dm_node = node.createDecomposeMatrixNode(intMatrix + ".output") - pm.connectAttr(dm_node + ".outputRotate", - self.twister[i].attr("rotate")) + pm.connectAttr(dm_node + ".outputRotate", self.twister[i].attr("rotate")) - pm.parentConstraint(self.twister[i], - self.ref_twist[i], - maintainOffset=True) + pm.parentConstraint(self.twister[i], self.ref_twist[i], maintainOffset=True) - pm.connectAttr(self.ref_twist[i] + ".translate", - cns + ".worldUpVector") + pm.connectAttr(self.ref_twist[i] + ".translate", cns + ".worldUpVector") # compensate scale reference - div_node = node.createDivNode([1, 1, 1], - [rootWorld_node + ".outputScaleX", - rootWorld_node + ".outputScaleY", - rootWorld_node + ".outputScaleZ"]) + div_node = node.createDivNode([1, 1, 1], [rootWorld_node + ".outputScaleX", rootWorld_node + ".outputScaleY", rootWorld_node + ".outputScaleZ"]) # Squash n Stretch - op = applyop.gear_squashstretch2_op( - self.scl_transforms[i], - self.root, - pm.arclen(self.slv_crv), - "y", - div_node + ".output") - + op = applyop.gear_squashstretch2_op(self.scl_transforms[i], self.root, pm.arclen(self.slv_crv), "y", div_node + ".output") pm.connectAttr(self.volume_att, op + ".blend") pm.connectAttr(crv_node + ".arcLength", op + ".driver") pm.connectAttr(self.st_att[i], op + ".stretch") @@ -561,65 +420,49 @@ def addOperators(self): # Controlers if i == 0: - mulmat_node = applyop.gear_mulmatrix_op( - self.div_cns[i].attr("worldMatrix"), - self.root.attr("worldInverseMatrix")) - - dm_node = node.createDecomposeMatrixNode( - mulmat_node + ".output") - - pm.connectAttr(dm_node + ".outputTranslate", - self.fk_npo[i].attr("t")) + mulmat_node = applyop.gear_mulmatrix_op(self.div_cns[i].attr("worldMatrix"), + self.root.attr("worldInverseMatrix")) + dm_node = node.createDecomposeMatrixNode(mulmat_node + ".output") + pm.connectAttr(dm_node + ".outputTranslate", self.fk_npo[i].attr("t")) else: - mulmat_node = applyop.gear_mulmatrix_op( - self.div_cns[i].attr("worldMatrix"), - self.div_cns[i - 1].attr("worldInverseMatrix")) - - dm_node = node.createDecomposeMatrixNode( - mulmat_node + ".output") - - mul_node = node.createMulNode(div_node + ".output", - dm_node + ".outputTranslate") - - pm.connectAttr(mul_node + ".output", - self.fk_npo[i].attr("t")) + mulmat_node = applyop.gear_mulmatrix_op(self.div_cns[i].attr("worldMatrix"), + self.div_cns[i - 1].attr("worldInverseMatrix")) + dm_node = node.createDecomposeMatrixNode(mulmat_node + ".output") + mul_node = node.createMulNode(div_node + ".output", dm_node + ".outputTranslate") + pm.connectAttr(mul_node + ".output", self.fk_npo[i].attr("t")) pm.connectAttr(dm_node + ".outputRotate", self.fk_npo[i].attr("r")) # Orientation Lock if i == 0: - dm_node = node.createDecomposeMatrixNode( - self.ik0_ctl + ".worldMatrix") - - blend_node = node.createBlendNode( - [dm_node + ".outputRotate%s" % s for s in "XYZ"], - [cns + ".rotate%s" % s for s in "XYZ"], - self.lock_ori0_att) - + dm_node = node.createDecomposeMatrixNode(self.ik0_ctl + ".worldMatrix") + blend_node = node.createBlendNode([dm_node + ".outputRotate%s" % s for s in "XYZ"], [cns + ".rotate%s" % s for s in "XYZ"], self.lock_ori0_att) self.div_cns[i].attr("rotate").disconnect() - pm.connectAttr(blend_node + ".output", - self.div_cns[i] + ".rotate") - + pm.connectAttr(blend_node + ".output", self.div_cns[i] + ".rotate") elif i == self.settings["division"] - 1: - dm_node = node.createDecomposeMatrixNode( - self.ik1_ctl + ".worldMatrix") - - blend_node = node.createBlendNode( - [dm_node + ".outputRotate%s" % s for s in "XYZ"], - [cns + ".rotate%s" % s for s in "XYZ"], - self.lock_ori1_att) - + dm_node = node.createDecomposeMatrixNode(self.ik1_ctl + ".worldMatrix") + blend_node = node.createBlendNode([dm_node + ".outputRotate%s" % s for s in "XYZ"], [cns + ".rotate%s" % s for s in "XYZ"], self.lock_ori1_att) self.div_cns[i].attr("rotate").disconnect() - pm.connectAttr(blend_node + ".output", - self.div_cns[i] + ".rotate") + pm.connectAttr(blend_node + ".output", self.div_cns[i] + ".rotate") + + # hip lvl position + # pm.pointConstraint(self.scl_transforms[0], self.hip_lvl, mo) # Connections (Hooks) ------------------------------ + + # pm.parentConstraint(self.scl_transforms[0], self.cnx0) pm.parentConstraint(self.hip_lvl, self.cnx0) + # pm.scaleConstraint(self.scl_transforms[0], self.cnx0) pm.scaleConstraint(self.hip_lvl, self.cnx0) pm.parentConstraint(self.scl_transforms[-1], self.cnx1) pm.scaleConstraint(self.scl_transforms[-1], self.cnx1) + # ===================================================== + # CONNECTOR + # ===================================================== + # Set the relation beetween object from guide to rig.\n + # @param self # ===================================================== # CONNECTOR # ===================================================== From 50ef33d3ff8d29c668f1ac5865c3c4e4e6fbdd62 Mon Sep 17 00:00:00 2001 From: miquelcampos Date: Wed, 22 Nov 2017 19:20:49 +0900 Subject: [PATCH 081/134] PEP8 #100 Shifter: Fix refactor error on connections --- .../shifter/component/leg_2jnt_01/__init__.py | 3 +- .../leg_2jnt_freeTangents_01/__init__.py | 3 +- .../component/leg_ms_2jnt_01/__init__.py | 3 +- .../shifter/component/neck_ik_01/__init__.py | 438 +++++++++++++----- .../component/squash4Sides_01/__init__.py | 3 +- 5 files changed, 314 insertions(+), 136 deletions(-) diff --git a/scripts/mgear/maya/shifter/component/leg_2jnt_01/__init__.py b/scripts/mgear/maya/shifter/component/leg_2jnt_01/__init__.py index f72f90f..c4a7e1e 100644 --- a/scripts/mgear/maya/shifter/component/leg_2jnt_01/__init__.py +++ b/scripts/mgear/maya/shifter/component/leg_2jnt_01/__init__.py @@ -638,8 +638,7 @@ def setRelation(self): self.jointRelatives["ankle"] = len(self.div_cns) self.jointRelatives["eff"] = len(self.div_cns) - def addConnection(self): - """Add more connection definition to the set""" + def connect_standard(self): self.parent.addChild(self.root) # Set the Ik Reference diff --git a/scripts/mgear/maya/shifter/component/leg_2jnt_freeTangents_01/__init__.py b/scripts/mgear/maya/shifter/component/leg_2jnt_freeTangents_01/__init__.py index 2017b7e..be909af 100644 --- a/scripts/mgear/maya/shifter/component/leg_2jnt_freeTangents_01/__init__.py +++ b/scripts/mgear/maya/shifter/component/leg_2jnt_freeTangents_01/__init__.py @@ -1013,8 +1013,7 @@ def setRelation(self): self.jointRelatives["ankle"] = len(self.div_cns) self.jointRelatives["eff"] = len(self.div_cns) - def addConnection(self): - """Add more connection definition to the set""" + def connect_standard(self): self.parent.addChild(self.root) # Set the Ik Reference diff --git a/scripts/mgear/maya/shifter/component/leg_ms_2jnt_01/__init__.py b/scripts/mgear/maya/shifter/component/leg_ms_2jnt_01/__init__.py index 0820824..dd4b4e7 100644 --- a/scripts/mgear/maya/shifter/component/leg_ms_2jnt_01/__init__.py +++ b/scripts/mgear/maya/shifter/component/leg_ms_2jnt_01/__init__.py @@ -1008,8 +1008,7 @@ def setRelation(self): self.jointRelatives["ankle"] = len(self.div_cns) self.jointRelatives["eff"] = len(self.div_cns) - def addConnection(self): - """Add more connection definition to the set""" + def connect_standard(self): self.connect_standardWithIkRef() # fk isolation connection self.connect_standardWithRotRef(self.settings["fkrefarray"], diff --git a/scripts/mgear/maya/shifter/component/neck_ik_01/__init__.py b/scripts/mgear/maya/shifter/component/neck_ik_01/__init__.py index 1979930..7a4f2b0 100644 --- a/scripts/mgear/maya/shifter/component/neck_ik_01/__init__.py +++ b/scripts/mgear/maya/shifter/component/neck_ik_01/__init__.py @@ -1,4 +1,4 @@ -"""Component Arm 2 joints 01 module""" +"""Component Neck IK 01 module""" import pymel.core as pm from pymel.core import datatypes @@ -22,14 +22,28 @@ class Component(component.Main): def addObjects(self): """Add all the objects needed to create the component.""" - self.normal = self.guide.blades["blade"].z*-1 + self.normal = self.guide.blades["blade"].z * -1 # Ik Controlers ------------------------------------ - t = transform.getTransformLookingAt(self.guide.pos["tan1"], self.guide.pos["neck"], self.normal, "yx", self.negate) + t = transform.getTransformLookingAt(self.guide.pos["tan1"], + self.guide.pos["neck"], + self.normal, + "yx", + self.negate) + t = transform.setMatrixPosition(t, self.guide.pos["neck"]) - self.ik_cns = primitive.addTransform(self.root, self.getName("ik_cns"), t) - self.ik_ctl = self.addCtl(self.ik_cns, "ik_ctl", t, self.color_ik, "compas", w=self.size*.5, tp=self.parentCtlTag) + self.ik_cns = primitive.addTransform( + self.root, self.getName("ik_cns"), t) + + self.ik_ctl = self.addCtl(self.ik_cns, + "ik_ctl", + t, + self.color_ik, + "compas", + w=self.size * .5, + tp=self.parentCtlTag) + attribute.setKeyableAttributes(self.ik_ctl, self.tr_params) attribute.setRotOrder(self.ik_ctl, "ZXY") attribute.setInvertMirror(self.ik_ctl, ["tx", "ry", "rz"]) @@ -37,34 +51,88 @@ def addObjects(self): # Tangents ----------------------------------------- if self.settings["tangentControls"]: t = transform.setMatrixPosition(t, self.guide.pos["tan1"]) - self.tan1_loc = primitive.addTransform(self.ik_ctl, self.getName("tan1_loc"), t) - self.tan1_ctl = self.addCtl(self.tan1_loc, "tan1_ctl", t, self.color_ik, "sphere", w=self.size*.2, tp=self.ik_ctl) + + self.tan1_loc = primitive.addTransform( + self.ik_ctl, self.getName("tan1_loc"), t) + + self.tan1_ctl = self.addCtl(self.tan1_loc, + "tan1_ctl", + t, + self.color_ik, + "sphere", + w=self.size * .2, + tp=self.ik_ctl) + attribute.setKeyableAttributes(self.tan1_ctl, self.t_params) attribute.setInvertMirror(self.tan1_ctl, ["tx"]) - t = transform.getTransformLookingAt(self.guide.pos["root"], self.guide.pos["tan0"], self.normal, "yx", self.negate) + t = transform.getTransformLookingAt(self.guide.pos["root"], + self.guide.pos["tan0"], + self.normal, + "yx", + self.negate) + t = transform.setMatrixPosition(t, self.guide.pos["tan0"]) - self.tan0_loc = primitive.addTransform(self.root, self.getName("tan0_loc"), t) - self.tan0_ctl = self.addCtl(self.tan0_loc, "tan0_ctl", t, self.color_ik, "sphere", w=self.size*.2, tp=self.ik_ctl) - attribute.setKeyableAttributes(self.tan0_ctl, self.t_params) + + self.tan0_loc = primitive.addTransform( + self.root, self.getName("tan0_loc"), t) + + self.tan0_ctl = self.addCtl(self.tan0_loc, + "tan0_ctl", + t, + self.color_ik, + "sphere", + w=self.size * .2, + tp=self.ik_ctl) + + attribute.setKeyableAttributes(self.tan0_ctl, + self.t_params) attribute.setInvertMirror(self.tan0_ctl, ["tx"]) # Curves ------------------------------------------- - self.mst_crv = curve.addCnsCurve(self.root, self.getName("mst_crv"), [self.root, self.tan0_ctl, self.tan1_ctl, self.ik_ctl], 3) - self.slv_crv = curve.addCurve(self.root, self.getName("slv_crv"), [datatypes.Vector()]*10, False, 3) + self.mst_crv = curve.addCnsCurve( + self.root, + self.getName("mst_crv"), + [self.root, self.tan0_ctl, self.tan1_ctl, self.ik_ctl], + 3) + + self.slv_crv = curve.addCurve(self.root, + self.getName("slv_crv"), + [datatypes.Vector()] * 10, + False, + 3) + self.mst_crv.setAttr("visibility", False) else: t = transform.setMatrixPosition(t, self.guide.pos["tan1"]) - self.tan1_loc = primitive.addTransform(self.ik_ctl, self.getName("tan1_loc"), t) + self.tan1_loc = primitive.addTransform( + self.ik_ctl, self.getName("tan1_loc"), t) + + t = transform.getTransformLookingAt(self.guide.pos["root"], + self.guide.pos["tan0"], + self.normal, + "yx", + self.negate) - t = transform.getTransformLookingAt(self.guide.pos["root"], self.guide.pos["tan0"], self.normal, "yx", self.negate) t = transform.setMatrixPosition(t, self.guide.pos["tan0"]) - self.tan0_loc = primitive.addTransform(self.root, self.getName("tan0_loc"), t) + + self.tan0_loc = primitive.addTransform( + self.root, self.getName("tan0_loc"), t) # Curves ------------------------------------------- - self.mst_crv = curve.addCnsCurve(self.root, self.getName("mst_crv"), [self.root, self.tan0_loc, self.tan1_loc, self.ik_ctl], 3) - self.slv_crv = curve.addCurve(self.root, self.getName("slv_crv"), [datatypes.Vector()]*10, False, 3) + self.mst_crv = curve.addCnsCurve( + self.root, + self.getName("mst_crv"), + [self.root, self.tan0_loc, self.tan1_loc, self.ik_ctl], + 3) + + self.slv_crv = curve.addCurve(self.root, + self.getName("slv_crv"), + [datatypes.Vector()] * 10, + False, + 3) + self.mst_crv.setAttr("visibility", False) self.slv_crv.setAttr("visibility", False) @@ -81,28 +149,60 @@ def addObjects(self): self.twister = [] self.ref_twist = [] - parent_twistRef = primitive.addTransform(self.root, self.getName("reference"), transform.getTransform(self.root)) - t = transform.getTransformLookingAt(self.guide.pos["root"], self.guide.pos["neck"], self.normal, "yx", self.negate) - self.intMRef = primitive.addTransform(self.root, self.getName("intMRef"), t) + parent_twistRef = primitive.addTransform( + self.root, + self.getName("reference"), + transform.getTransform(self.root)) + + t = transform.getTransformLookingAt(self.guide.pos["root"], + self.guide.pos["neck"], + self.normal, + "yx", + self.negate) + + self.intMRef = primitive.addTransform( + self.root, self.getName("intMRef"), t) + self.previousCtlTag = self.parentCtlTag for i in range(self.settings["division"]): # References - div_cns = primitive.addTransform(parentdiv, self.getName("%s_cns"%i), t) - pm.setAttr(div_cns+".inheritsTransform", False) + div_cns = primitive.addTransform( + parentdiv, self.getName("%s_cns" % i), t) + + pm.setAttr(div_cns + ".inheritsTransform", False) self.div_cns.append(div_cns) parentdiv = div_cns - scl_npo = primitive.addTransform(parentctl, self.getName("%s_scl_npo"%i), transform.getTransform(parentctl)) + scl_npo = primitive.addTransform(parentctl, + self.getName("%s_scl_npo" % i), + transform.getTransform(parentctl)) # Controlers (First and last one are fake) - if i in [ self.settings["division"] - 1]: # 0, - fk_ctl = primitive.addTransform(scl_npo, self.getName("%s_loc"%i), transform.getTransform(parentctl)) + if i in [self.settings["division"] - 1]: # 0, + fk_ctl = primitive.addTransform( + scl_npo, + self.getName("%s_loc" % i), + transform.getTransform(parentctl)) + fk_npo = fk_ctl else: - fk_npo = primitive.addTransform(scl_npo, self.getName("fk%s_npo"%i), transform.getTransform(parentctl)) - fk_ctl = self.addCtl(fk_npo, "fk%s_ctl"%i, transform.getTransform(parentctl), self.color_fk, "cube", w=self.size*.2, h=self.size*.05, d=self.size*.2, tp=self.previousCtlTag) + fk_npo = primitive.addTransform( + scl_npo, + self.getName("fk%s_npo" % i), + transform.getTransform(parentctl)) + + fk_ctl = self.addCtl(fk_npo, + "fk%s_ctl" % i, + transform.getTransform(parentctl), + self.color_fk, + "cube", + w=self.size * .2, + h=self.size * .05, + d=self.size * .2, + tp=self.previousCtlTag) + attribute.setKeyableAttributes(self.fk_ctl) attribute.setRotOrder(fk_ctl, "ZXY") @@ -110,80 +210,137 @@ def addObjects(self): self.fk_ctl.append(fk_ctl) - self.scl_npo.append(scl_npo) self.fk_npo.append(fk_npo) parentctl = fk_ctl self.jnt_pos.append([fk_ctl, i]) - t = transform.getTransformLookingAt(self.guide.pos["root"], self.guide.pos["neck"], self.guide.blades["blade"].z*-1, "yx", self.negate) - twister = primitive.addTransform(parent_twistRef, self.getName("%s_rot_ref"%i), t) - ref_twist = primitive.addTransform(parent_twistRef, self.getName("%s_pos_ref"%i), t) - ref_twist.setTranslation(datatypes.Vector(0.0,0,1.0), space="preTransform") + t = transform.getTransformLookingAt( + self.guide.pos["root"], + self.guide.pos["neck"], + self.guide.blades["blade"].z * -1, + "yx", + self.negate) + + twister = primitive.addTransform( + parent_twistRef, self.getName("%s_rot_ref" % i), t) + + ref_twist = primitive.addTransform( + parent_twistRef, self.getName("%s_pos_ref" % i), t) + + ref_twist.setTranslation( + datatypes.Vector(0.0, 0, 1.0), space="preTransform") self.twister.append(twister) self.ref_twist.append(ref_twist) - for x in self.fk_ctl[:-1]: + for x in self.fk_ctl[:-1]: attribute.setInvertMirror(x, ["tx", "rz", "ry"]) # Head --------------------------------------------- - t = transform.getTransformLookingAt(self.guide.pos["head"], self.guide.pos["eff"], self.normal, "yx", self.negate) - self.head_cns = primitive.addTransform(self.root, self.getName("head_cns"), t) + t = transform.getTransformLookingAt(self.guide.pos["head"], + self.guide.pos["eff"], + self.normal, + "yx", + self.negate) + + self.head_cns = primitive.addTransform( + self.root, self.getName("head_cns"), t) + + dist = vector.getDistance(self.guide.pos["head"], + self.guide.pos["eff"]) + + self.head_ctl = self.addCtl(self.head_cns, + "head_ctl", + t, + self.color_fk, + "cube", + w=self.size * .5, + h=dist, d=self.size * .5, + po=datatypes.Vector(0, dist * .5, 0), + tp=self.previousCtlTag) - dist = vector.getDistance(self.guide.pos["head"], self.guide.pos["eff"]) - self.head_ctl = self.addCtl(self.head_cns, "head_ctl", t, self.color_fk, "cube", w=self.size*.5, h=dist, d=self.size*.5, po=datatypes.Vector(0,dist*.5,0), tp=self.previousCtlTag) attribute.setRotOrder(self.head_ctl, "ZXY") attribute.setInvertMirror(self.head_ctl, ["tx", "rz", "ry"]) self.jnt_pos.append([self.head_ctl, "head"]) - # ===================================================== + # ===================================================== # ATTRIBUTES # ===================================================== def addAttributes(self): """Create the anim and setupr rig attributes for the component""" # Anim ------------------------------------------- - self.maxstretch_att = self.addAnimParam("maxstretch", "Max Stretch", "double", self.settings["maxstretch"], 1) - self.maxsquash_att = self.addAnimParam("maxsquash", "MaxSquash", "double", self.settings["maxsquash"], 0, 1) - self.softness_att = self.addAnimParam("softness", "Softness", "double", self.settings["softness"], 0, 1) - - self.lock_ori_att = self.addAnimParam("lock_ori", "Lock Ori", "double", 1, 0, 1) + self.maxstretch_att = self.addAnimParam( + "maxstretch", + "Max Stretch", + "double", + self.settings["maxstretch"], + 1) + + self.maxsquash_att = self.addAnimParam("maxsquash", + "MaxSquash", + "double", + self.settings["maxsquash"], + 0, + 1) + + self.softness_att = self.addAnimParam("softness", + "Softness", + "double", + self.settings["softness"], + 0, + 1) + + self.lock_ori_att = self.addAnimParam( + "lock_ori", "Lock Ori", "double", 1, 0, 1) self.tan0_att = self.addAnimParam("tan0", "Tangent 0", "double", 1, 0) self.tan1_att = self.addAnimParam("tan1", "Tangent 1", "double", 1, 0) # Volume - self.volume_att = self.addAnimParam("volume", "Volume", "double", 1, 0, 1) + self.volume_att = self.addAnimParam( + "volume", "Volume", "double", 1, 0, 1) # Ref if self.settings["ikrefarray"]: ref_names = self.settings["ikrefarray"].split(",") if len(ref_names) > 1: - self.ikref_att = self.addAnimEnumParam("ikref", "Ik Ref", 0, self.settings["ikrefarray"].split(",")) + self.ikref_att = self.addAnimEnumParam( + "ikref", + "Ik Ref", + 0, + self.settings["ikrefarray"].split(",")) if self.settings["headrefarray"]: ref_names = self.settings["headrefarray"].split(",") if len(ref_names) > 1: ref_names.insert(0, "self") - self.headref_att = self.addAnimEnumParam("headref", "Head Ref", 0, ref_names) + self.headref_att = self.addAnimEnumParam( + "headref", "Head Ref", 0, ref_names) # Setup ------------------------------------------ # Eval Fcurve - self.st_value = fcurve.getFCurveValues(self.settings["st_profile"], self.settings["division"]) - self.sq_value = fcurve.getFCurveValues(self.settings["sq_profile"], self.settings["division"]) - - self.st_att = [ self.addSetupParam("stretch_%s"%i, "Stretch %s"%i, "double", self.st_value[i], -1, 0) for i in range(self.settings["division"]) ] - self.sq_att = [ self.addSetupParam("squash_%s"%i, "Squash %s"%i, "double", self.sq_value[i], 0, 1) for i in range(self.settings["division"]) ] + self.st_value = fcurve.getFCurveValues( + self.settings["st_profile"], self.settings["division"]) + self.sq_value = fcurve.getFCurveValues( + self.settings["sq_profile"], self.settings["division"]) + + self.st_att = [self.addSetupParam("stretch_%s" % i, + "Stretch %s" % i, + "double", + self.st_value[i], -1, 0) + for i in range(self.settings["division"])] + + self.sq_att = [self.addSetupParam("squash_%s" % i, + "Squash %s" % i, + "double", + self.sq_value[i], + 0, + 1) + for i in range(self.settings["division"])] - # ===================================================== - # OPERATORS - # ===================================================== - ## Apply operators, constraints, expressions to the hierarchy.\n - # In order to keep the code clean and easier to debug, - # we shouldn't create any new object in this method. - # @param self # ===================================================== # OPERATORS # ===================================================== @@ -195,30 +352,36 @@ def addOperators(self): we shouldn't create any new object in this method. """ - # Tangent position --------------------------------- # common part d = vector.getDistance(self.guide.pos["root"], self.guide.pos["neck"]) dist_node = node.createDistNode(self.root, self.ik_ctl) - rootWorld_node = node.createDecomposeMatrixNode(self.root.attr("worldMatrix")) - div_node = node.createDivNode(dist_node+".distance", rootWorld_node+".outputScaleX") - div_node = node.createDivNode(div_node+".outputX", d) + rootWorld_node = node.createDecomposeMatrixNode( + self.root.attr("worldMatrix")) + div_node = node.createDivNode(dist_node + ".distance", + rootWorld_node + ".outputScaleX") + div_node = node.createDivNode(div_node + ".outputX", d) # tan0 - mul_node = node.createMulNode(self.tan0_att, self.tan0_loc.getAttr("ty")) - res_node = node.createMulNode(mul_node+".outputX", div_node+".outputX") - pm.connectAttr( res_node+".outputX", self.tan0_loc+".ty") + mul_node = node.createMulNode(self.tan0_att, + self.tan0_loc.getAttr("ty")) + res_node = node.createMulNode(mul_node + ".outputX", + div_node + ".outputX") + pm.connectAttr(res_node + ".outputX", self.tan0_loc + ".ty") # tan1 - mul_node = node.createMulNode(self.tan1_att, self.tan1_loc.getAttr("ty")) - res_node = node.createMulNode(mul_node+".outputX", div_node+".outputX") - pm.connectAttr( res_node+".outputX", self.tan1_loc.attr("ty")) + mul_node = node.createMulNode(self.tan1_att, + self.tan1_loc.getAttr("ty")) + res_node = node.createMulNode(mul_node + ".outputX", + div_node + ".outputX") + pm.connectAttr(res_node + ".outputX", self.tan1_loc.attr("ty")) # Curves ------------------------------------------- - op = applyop.gear_curveslide2_op(self.slv_crv, self.mst_crv, 0, 1.5, .5, .5) - pm.connectAttr(self.maxstretch_att, op+".maxstretch") - pm.connectAttr(self.maxsquash_att, op+".maxsquash") - pm.connectAttr(self.softness_att, op+".softness") + op = applyop.gear_curveslide2_op( + self.slv_crv, self.mst_crv, 0, 1.5, .5, .5) + pm.connectAttr(self.maxstretch_att, op + ".maxstretch") + pm.connectAttr(self.maxsquash_att, op + ".maxsquash") + pm.connectAttr(self.softness_att, op + ".softness") # Volume driver ------------------------------------ crv_node = node.createCurveInfoNode(self.slv_crv) @@ -229,68 +392,87 @@ def addOperators(self): # References u = i / (self.settings["division"] - 1.0) - cns = applyop.pathCns(self.div_cns[i], self.slv_crv, False, u, True) - cns.setAttr("frontAxis", 1)# front axis is 'Y' - cns.setAttr("upAxis", 2)# front axis is 'Z' + cns = applyop.pathCns( + self.div_cns[i], self.slv_crv, False, u, True) + cns.setAttr("frontAxis", 1) # front axis is 'Y' + cns.setAttr("upAxis", 2) # front axis is 'Z' # Roll - intMatrix = applyop.gear_intmatrix_op(self.intMRef+".worldMatrix", self.ik_ctl+".worldMatrix", u) - dm_node = node.createDecomposeMatrixNode(intMatrix+".output") - pm.connectAttr(dm_node+".outputRotate", self.twister[i].attr("rotate")) - - pm.parentConstraint(self.twister[i], self.ref_twist[i], maintainOffset=True) - - - pm.connectAttr(self.ref_twist[i]+".translate", cns+".worldUpVector") - + intMatrix = applyop.gear_intmatrix_op( + self.intMRef + ".worldMatrix", self.ik_ctl + ".worldMatrix", u) + dm_node = node.createDecomposeMatrixNode(intMatrix + ".output") + pm.connectAttr(dm_node + ".outputRotate", + self.twister[i].attr("rotate")) + pm.parentConstraint(self.twister[i], + self.ref_twist[i], + maintainOffset=True) + pm.connectAttr(self.ref_twist[i] + ".translate", + cns + ".worldUpVector") # Squash n Stretch - op = applyop.gear_squashstretch2_op(self.fk_npo[i], self.root, pm.arclen(self.slv_crv), "y") - pm.connectAttr(self.volume_att, op+".blend") - pm.connectAttr(crv_node+".arcLength", op+".driver") - pm.connectAttr(self.st_att[i], op+".stretch") - pm.connectAttr(self.sq_att[i], op+".squash") + op = applyop.gear_squashstretch2_op(self.fk_npo[i], + self.root, + pm.arclen(self.slv_crv), + "y") + + pm.connectAttr(self.volume_att, op + ".blend") + pm.connectAttr(crv_node + ".arcLength", op + ".driver") + pm.connectAttr(self.st_att[i], op + ".stretch") + pm.connectAttr(self.sq_att[i], op + ".squash") op.setAttr("driver_min", .1) # scl compas if i != 0: - div_node = node.createDivNode([1,1,1], [self.fk_npo[i-1]+".sx", self.fk_npo[i-1]+".sy", self.fk_npo[i-1]+".sz"]) - pm.connectAttr(div_node+".output", self.scl_npo[i]+".scale") + div_node = node.createDivNode( + [1, 1, 1], + [self.fk_npo[i - 1] + ".sx", + self.fk_npo[i - 1] + ".sy", + self.fk_npo[i - 1] + ".sz"]) + + pm.connectAttr(div_node + ".output", + self.scl_npo[i] + ".scale") # Controlers if i == 0: - mulmat_node = applyop.gear_mulmatrix_op(self.div_cns[i].attr("worldMatrix"), - self.root.attr("worldInverseMatrix")) + mulmat_node = applyop.gear_mulmatrix_op( + self.div_cns[i].attr("worldMatrix"), + self.root.attr("worldInverseMatrix")) else: - mulmat_node = applyop.gear_mulmatrix_op(self.div_cns[i].attr("worldMatrix"), - self.div_cns[i - 1].attr("worldInverseMatrix")) + mulmat_node = applyop.gear_mulmatrix_op( + self.div_cns[i].attr("worldMatrix"), + self.div_cns[i - 1].attr("worldInverseMatrix")) - dm_node = node.createDecomposeMatrixNode(mulmat_node+".output") - pm.connectAttr(dm_node+".outputTranslate", self.fk_npo[i].attr("t")) - pm.connectAttr(dm_node+".outputRotate", self.fk_npo[i].attr("r")) + dm_node = node.createDecomposeMatrixNode(mulmat_node + ".output") + pm.connectAttr(dm_node + ".outputTranslate", + self.fk_npo[i].attr("t")) + pm.connectAttr(dm_node + ".outputRotate", + self.fk_npo[i].attr("r")) # Orientation Lock - if i == self.settings["division"] - 1 : - dm_node = node.createDecomposeMatrixNode(self.ik_ctl+".worldMatrix") - blend_node = node.createBlendNode([dm_node+".outputRotate%s"%s for s in "XYZ"], [cns+".rotate%s"%s for s in "XYZ"], self.lock_ori_att) + if i == self.settings["division"] - 1: + dm_node = node.createDecomposeMatrixNode( + self.ik_ctl + ".worldMatrix") + blend_node = node.createBlendNode( + [dm_node + ".outputRotate%s" % s for s in "XYZ"], + [cns + ".rotate%s" % s for s in "XYZ"], + self.lock_ori_att) self.div_cns[i].attr("rotate").disconnect() - pm.connectAttr(blend_node+".output", self.div_cns[i]+".rotate") + pm.connectAttr(blend_node + ".output", + self.div_cns[i] + ".rotate") # Head --------------------------------------------- self.fk_ctl[-1].addChild(self.head_cns) - #scale compensation - dm_node = node.createDecomposeMatrixNode(self.scl_npo[0]+".parentInverseMatrix") - pm.connectAttr(dm_node+".outputScale", self.scl_npo[0]+".scale") + # scale compensation + dm_node = node.createDecomposeMatrixNode( + self.scl_npo[0] + ".parentInverseMatrix") + + pm.connectAttr(dm_node + ".outputScale", + self.scl_npo[0] + ".scale") - # ===================================================== - # CONNECTOR - # ===================================================== - ## Set the relation beetween object from guide to rig.\n - # @param self # ===================================================== # CONNECTOR # ===================================================== @@ -312,25 +494,20 @@ def setRelation(self): self.jointRelatives["root"] = 0 self.jointRelatives["tan1"] = 0 - self.jointRelatives["tan2"] = len(self.jnt_pos)-1 - self.jointRelatives["neck"] = len(self.jnt_pos)-1 - self.jointRelatives["head"] = len(self.jnt_pos)-1 - self.jointRelatives["eff"] = len(self.jnt_pos)-1 + self.jointRelatives["tan2"] = len(self.jnt_pos) - 1 + self.jointRelatives["neck"] = len(self.jnt_pos) - 1 + self.jointRelatives["head"] = len(self.jnt_pos) - 1 + self.jointRelatives["eff"] = len(self.jnt_pos) - 1 - ## standard connection definition. - # @param self def connect_standard(self): self.connect_standardWithIkRef() - ## standard connection definition with ik and upv references. - # @param self def connect_standardWithIkRef(self): self.parent.addChild(self.root) self.connectRef(self.settings["ikrefarray"], self.ik_cns) - if self.settings["headrefarray"]: ref_names = self.settings["headrefarray"].split(",") @@ -339,17 +516,22 @@ def connect_standardWithIkRef(self): ref.append(self.rig.findRelative(ref_name)) ref.append(self.head_cns) - cns_node = pm.parentConstraint(*ref, skipTranslate="none", maintainOffset=True) - cns_attr = pm.parentConstraint(cns_node, query=True, weightAliasList=True) + cns_node = pm.parentConstraint(*ref, + skipTranslate="none", + maintainOffset=True) + + cns_attr = pm.parentConstraint(cns_node, + query=True, + weightAliasList=True) self.head_cns.attr("tx").disconnect() self.head_cns.attr("ty").disconnect() self.head_cns.attr("tz").disconnect() for i, attr in enumerate(cns_attr): node_name = pm.createNode("condition") - pm.connectAttr(self.headref_att, node_name+".firstTerm") - pm.setAttr(node_name+".secondTerm", i+1) - pm.setAttr(node_name+".operation", 0) - pm.setAttr(node_name+".colorIfTrueR", 1) - pm.setAttr(node_name+".colorIfFalseR", 0) - pm.connectAttr(node_name+".outColorR", attr) + pm.connectAttr(self.headref_att, node_name + ".firstTerm") + pm.setAttr(node_name + ".secondTerm", i + 1) + pm.setAttr(node_name + ".operation", 0) + pm.setAttr(node_name + ".colorIfTrueR", 1) + pm.setAttr(node_name + ".colorIfFalseR", 0) + pm.connectAttr(node_name + ".outColorR", attr) diff --git a/scripts/mgear/maya/shifter/component/squash4Sides_01/__init__.py b/scripts/mgear/maya/shifter/component/squash4Sides_01/__init__.py index 8985554..2315218 100644 --- a/scripts/mgear/maya/shifter/component/squash4Sides_01/__init__.py +++ b/scripts/mgear/maya/shifter/component/squash4Sides_01/__init__.py @@ -143,6 +143,5 @@ def setRelation(self): self.jointRelatives["int"] = 0 self.jointRelatives["ext"] = 0 - def addConnection(self): - """Add more connection definition to the set""" + def connect_standard(self): self.connect_standardWithSimpleIkRef() From daf2398df2c1547e2e5cc68e61e3921ddc1d614c Mon Sep 17 00:00:00 2001 From: miquelcampos Date: Fri, 24 Nov 2017 11:16:19 +0900 Subject: [PATCH 082/134] PEP8 #100: Shifter: Components Main module finish --- .../shifter/component/spine_ik_02/__init__.py | 301 +++++++++++++----- 1 file changed, 226 insertions(+), 75 deletions(-) diff --git a/scripts/mgear/maya/shifter/component/spine_ik_02/__init__.py b/scripts/mgear/maya/shifter/component/spine_ik_02/__init__.py index 4ee0784..47c74f7 100644 --- a/scripts/mgear/maya/shifter/component/spine_ik_02/__init__.py +++ b/scripts/mgear/maya/shifter/component/spine_ik_02/__init__.py @@ -244,33 +244,59 @@ def addObjects(self): self.twister = [] self.ref_twist = [] - t = transform.getTransformLookingAt(self.guide.apos[0], self.guide.apos[1], self.guide.blades["blade"].z * -1, "yx", self.negate) - parent_twistRef = primitive.addTransform(self.root, self.getName("reference"), transform.getTransform(self.root)) + t = transform.getTransformLookingAt( + self.guide.apos[0], + self.guide.apos[1], + self.guide.blades["blade"].z * -1, + "yx", + self.negate) + + parent_twistRef = primitive.addTransform( + self.root, + self.getName("reference"), + transform.getTransform(self.root)) self.jointList = [] self.preiviousCtlTag = self.parentCtlTag for i in range(self.settings["division"]): # References - div_cns = primitive.addTransform(parentdiv, self.getName("%s_cns" % i)) + div_cns = primitive.addTransform(parentdiv, + self.getName("%s_cns" % i)) pm.setAttr(div_cns + ".inheritsTransform", False) self.div_cns.append(div_cns) parentdiv = div_cns # Controlers (First and last one are fake) # if i in [0]: - # TODO: add option setting to add or not the first and last controller for the fk + # TODO: add option setting to add or not the first and + # last controller for the fk if i in [0, self.settings["division"] - 1] and False: # if i in [0, self.settings["division"] - 1]: - fk_ctl = primitive.addTransform(parentctl, self.getName("%s_loc" % i), transform.getTransform(parentctl)) + fk_ctl = primitive.addTransform( + parentctl, + self.getName("%s_loc" % i), + transform.getTransform(parentctl)) + fk_npo = fk_ctl if i in [self.settings["division"] - 1]: self.fk_ctl.append(fk_ctl) else: - # fk_npo = primitive.addTransform(parentctl, self.getName("fk%s_npo"%(i-1)), transform.getTransform(parentctl)) - fk_npo = primitive.addTransform(parentctl, self.getName("fk%s_npo" % (i)), transform.getTransform(parentctl)) - fk_ctl = self.addCtl(fk_npo, "fk%s_ctl" % (i), transform.getTransform(parentctl), self.color_fk, "cube", w=self.size, h=self.size * .05, d=self.size, tp=self.preiviousCtlTag) - # fk_ctl = self.addCtl(fk_npo, "fk%s_ctl"%(i-1), transform.getTransform(parentctl), self.color_fk, "cube", w=self.size, h=self.size*.05, d=self.size, tp=self.preiviousCtlTag) + fk_npo = primitive.addTransform( + parentctl, + self.getName("fk%s_npo" % (i)), + transform.getTransform(parentctl)) + + fk_ctl = self.addCtl(fk_npo, + "fk%s_ctl" % (i), + transform.getTransform(parentctl), + self.color_fk, + "cube", + w=self.size, + h=self.size * .05, + d=self.size, + tp=self.preiviousCtlTag) + attribute.setKeyableAttributes(self.fk_ctl) attribute.setRotOrder(fk_ctl, "ZXY") self.fk_ctl.append(fk_ctl) @@ -279,17 +305,32 @@ def addObjects(self): # setAttr(fk_npo+".inheritsTransform", False) self.fk_npo.append(fk_npo) parentctl = fk_ctl - scl_ref = primitive.addTransform(parentctl, self.getName("%s_scl_ref" % i), transform.getTransform(parentctl)) + scl_ref = primitive.addTransform(parentctl, + self.getName("%s_scl_ref" % i), + transform.getTransform(parentctl)) + self.scl_transforms.append(scl_ref) # Deformers (Shadow) self.jnt_pos.append([scl_ref, i]) - # Twist references (This objects will replace the spinlookup slerp solver behavior) - t = transform.getTransformLookingAt(self.guide.apos[0], self.guide.apos[1], self.guide.blades["blade"].z * -1, "yx", self.negate) - twister = primitive.addTransform(parent_twistRef, self.getName("%s_rot_ref" % i), t) - ref_twist = primitive.addTransform(parent_twistRef, self.getName("%s_pos_ref" % i), t) - ref_twist.setTranslation(datatypes.Vector(1.0, 0, 0), space="preTransform") + # Twist references (This objects will replace the spinlookup + # slerp solver behavior) + t = transform.getTransformLookingAt( + self.guide.apos[0], + self.guide.apos[1], + self.guide.blades["blade"].z * -1, + "yx", + self.negate) + + twister = primitive.addTransform( + parent_twistRef, self.getName("%s_rot_ref" % i), t) + + ref_twist = primitive.addTransform( + parent_twistRef, self.getName("%s_pos_ref" % i), t) + + ref_twist.setTranslation( + datatypes.Vector(1.0, 0, 0), space="preTransform") self.twister.append(twister) self.ref_twist.append(ref_twist) @@ -305,31 +346,76 @@ def addObjects(self): def addAttributes(self): # Anim ------------------------------------------- - self.position_att = self.addAnimParam("position", "Position", "double", self.settings["position"], 0, 1) - self.maxstretch_att = self.addAnimParam("maxstretch", "Max Stretch", "double", self.settings["maxstretch"], 1) - self.maxsquash_att = self.addAnimParam("maxsquash", "Max Squash", "double", self.settings["maxsquash"], 0, 1) - self.softness_att = self.addAnimParam("softness", "Softness", "double", self.settings["softness"], 0, 1) - - self.lock_ori0_att = self.addAnimParam("lock_ori0", "Lock Ori 0", "double", self.settings["lock_ori"], 0, 1) - self.lock_ori1_att = self.addAnimParam("lock_ori1", "Lock Ori 1", "double", self.settings["lock_ori"], 0, 1) + self.position_att = self.addAnimParam( + "position", "Position", "double", self.settings["position"], 0, 1) + + self.maxstretch_att = self.addAnimParam("maxstretch", + "Max Stretch", + "double", + self.settings["maxstretch"], + 1) + + self.maxsquash_att = self.addAnimParam("maxsquash", + "Max Squash", + "double", + self.settings["maxsquash"], + 0, + 1) + + self.softness_att = self.addAnimParam( + "softness", "Softness", "double", self.settings["softness"], 0, 1) + + self.lock_ori0_att = self.addAnimParam("lock_ori0", + "Lock Ori 0", + "double", + self.settings["lock_ori"], + 0, + 1) + + self.lock_ori1_att = self.addAnimParam("lock_ori1", + "Lock Ori 1", + "double", + self.settings["lock_ori"], + 0, + 1) self.tan0_att = self.addAnimParam("tan0", "Tangent 0", "double", 1, 0) self.tan1_att = self.addAnimParam("tan1", "Tangent 1", "double", 1, 0) # Volume - self.volume_att = self.addAnimParam("volume", "Volume", "double", 1, 0, 1) + self.volume_att = self.addAnimParam( + "volume", "Volume", "double", 1, 0, 1) if self.settings["autoBend"]: - self.sideBend_att = self.addAnimParam("sideBend", "Side Bend", "double", .5, 0, 2) - self.frontBend_att = self.addAnimParam("frontBend", "Front Bend", "double", .5, 0, 2) + self.sideBend_att = self.addAnimParam( + "sideBend", "Side Bend", "double", .5, 0, 2) + + self.frontBend_att = self.addAnimParam( + "frontBend", "Front Bend", "double", .5, 0, 2) # Setup ------------------------------------------ # Eval Fcurve - self.st_value = fcurve.getFCurveValues(self.settings["st_profile"], self.settings["division"]) - self.sq_value = fcurve.getFCurveValues(self.settings["sq_profile"], self.settings["division"]) - - self.st_att = [self.addSetupParam("stretch_%s" % i, "Stretch %s" % i, "double", self.st_value[i], -1, 0) for i in range(self.settings["division"])] - self.sq_att = [self.addSetupParam("squash_%s" % i, "Squash %s" % i, "double", self.sq_value[i], 0, 1) for i in range(self.settings["division"])] + self.st_value = fcurve.getFCurveValues( + self.settings["st_profile"], self.settings["division"]) + + self.sq_value = fcurve.getFCurveValues( + self.settings["sq_profile"], self.settings["division"]) + + self.st_att = [self.addSetupParam("stretch_%s" % i, + "Stretch %s" % i, + "double", + self.st_value[i], + -1, + 0) + for i in range(self.settings["division"])] + + self.sq_att = [self.addSetupParam("squash_%s" % i, + "Squash %s" % i, + "double", + self.sq_value[i], + 0, + 1) + for i in range(self.settings["division"])] # ===================================================== # OPERATORS @@ -345,39 +431,70 @@ def addOperators(self): # Auto bend ---------------------------- if self.settings["autoBend"]: - mul_node = node.createMulNode([self.autoBendChain[0].ry, self.autoBendChain[0].rz], [self.sideBend_att, self.frontBend_att]) + mul_node = node.createMulNode( + [self.autoBendChain[0].ry, self.autoBendChain[0].rz], + [self.sideBend_att, self.frontBend_att]) + mul_node.outputX >> self.ik1autoRot_lvl.rz mul_node.outputY >> self.ik1autoRot_lvl.rx - self.ikHandleAutoBend = primitive.addIkHandle(self.autoBend_ctl, self.getName("ikHandleAutoBend"), self.autoBendChain, "ikSCsolver") + self.ikHandleAutoBend = primitive.addIkHandle( + self.autoBend_ctl, + self.getName("ikHandleAutoBend"), + self.autoBendChain, + "ikSCsolver") # Tangent position --------------------------------- # common part d = vector.getDistance(self.guide.apos[0], self.guide.apos[1]) dist_node = node.createDistNode(self.ik0_ctl, self.ik1_ctl) - rootWorld_node = node.createDecomposeMatrixNode(self.root.attr("worldMatrix")) - div_node = node.createDivNode(dist_node + ".distance", rootWorld_node + ".outputScaleX") + rootWorld_node = node.createDecomposeMatrixNode( + self.root.attr("worldMatrix")) + + div_node = node.createDivNode(dist_node + ".distance", + rootWorld_node + ".outputScaleX") + div_node = node.createDivNode(div_node + ".outputX", d) # tan0 - mul_node = node.createMulNode(self.tan0_att, self.tan0_npo.getAttr("ty")) - res_node = node.createMulNode(mul_node + ".outputX", div_node + ".outputX") + mul_node = node.createMulNode(self.tan0_att, + self.tan0_npo.getAttr("ty")) + + res_node = node.createMulNode(mul_node + ".outputX", + div_node + ".outputX") + pm.connectAttr(res_node + ".outputX", self.tan0_npo.attr("ty")) # tan1 - mul_node = node.createMulNode(self.tan1_att, self.tan1_npo.getAttr("ty")) - res_node = node.createMulNode(mul_node + ".outputX", div_node + ".outputX") + mul_node = node.createMulNode(self.tan1_att, + self.tan1_npo.getAttr("ty")) + + res_node = node.createMulNode(mul_node + ".outputX", + div_node + ".outputX") + pm.connectAttr(res_node + ".outputX", self.tan1_npo.attr("ty")) # Tangent Mid -------------------------------------- if self.settings["centralTangent"]: - tanIntMat = applyop.gear_intmatrix_op(self.tan0_npo.attr("worldMatrix"), self.tan1_npo.attr("worldMatrix"), .5) - applyop.gear_mulmatrix_op(tanIntMat.attr("output"), self.tan_npo.attr("parentInverseMatrix[0]"), self.tan_npo) - pm.connectAttr(self.tan_ctl.attr("translate"), self.tan0_off.attr("translate")) - pm.connectAttr(self.tan_ctl.attr("translate"), self.tan1_off.attr("translate")) + tanIntMat = applyop.gear_intmatrix_op( + self.tan0_npo.attr("worldMatrix"), + self.tan1_npo.attr("worldMatrix"), + .5) + + applyop.gear_mulmatrix_op( + tanIntMat.attr("output"), + self.tan_npo.attr("parentInverseMatrix[0]"), + self.tan_npo) + + pm.connectAttr(self.tan_ctl.attr("translate"), + self.tan0_off.attr("translate")) + + pm.connectAttr(self.tan_ctl.attr("translate"), + self.tan1_off.attr("translate")) # Curves ------------------------------------------- - op = applyop.gear_curveslide2_op(self.slv_crv, self.mst_crv, 0, 1.5, .5, .5) + op = applyop.gear_curveslide2_op( + self.slv_crv, self.mst_crv, 0, 1.5, .5, .5) pm.connectAttr(self.position_att, op + ".position") pm.connectAttr(self.maxstretch_att, op + ".maxstretch") @@ -395,24 +512,42 @@ def addOperators(self): if i == 0: # we add extra 10% to the first vertebra u = (1.0 / (self.settings["division"] - 1.0)) / 10 - cns = applyop.pathCns(self.div_cns[i], self.slv_crv, False, u, True) + cns = applyop.pathCns( + self.div_cns[i], self.slv_crv, False, u, True) + cns.setAttr("frontAxis", 1) # front axis is 'Y' cns.setAttr("upAxis", 0) # front axis is 'X' # Roll - intMatrix = applyop.gear_intmatrix_op(self.ik0_ctl + ".worldMatrix", self.ik1_ctl + ".worldMatrix", u) + intMatrix = applyop.gear_intmatrix_op( + self.ik0_ctl + ".worldMatrix", + self.ik1_ctl + ".worldMatrix", + u) + dm_node = node.createDecomposeMatrixNode(intMatrix + ".output") - pm.connectAttr(dm_node + ".outputRotate", self.twister[i].attr("rotate")) + pm.connectAttr(dm_node + ".outputRotate", + self.twister[i].attr("rotate")) - pm.parentConstraint(self.twister[i], self.ref_twist[i], maintainOffset=True) + pm.parentConstraint(self.twister[i], + self.ref_twist[i], + maintainOffset=True) - pm.connectAttr(self.ref_twist[i] + ".translate", cns + ".worldUpVector") + pm.connectAttr(self.ref_twist[i] + ".translate", + cns + ".worldUpVector") # compensate scale reference - div_node = node.createDivNode([1, 1, 1], [rootWorld_node + ".outputScaleX", rootWorld_node + ".outputScaleY", rootWorld_node + ".outputScaleZ"]) + div_node = node.createDivNode([1, 1, 1], + [rootWorld_node + ".outputScaleX", + rootWorld_node + ".outputScaleY", + rootWorld_node + ".outputScaleZ"]) # Squash n Stretch - op = applyop.gear_squashstretch2_op(self.scl_transforms[i], self.root, pm.arclen(self.slv_crv), "y", div_node + ".output") + op = applyop.gear_squashstretch2_op(self.scl_transforms[i], + self.root, + pm.arclen(self.slv_crv), + "y", + div_node + ".output") + pm.connectAttr(self.volume_att, op + ".blend") pm.connectAttr(crv_node + ".arcLength", op + ".driver") pm.connectAttr(self.st_att[i], op + ".stretch") @@ -420,49 +555,65 @@ def addOperators(self): # Controlers if i == 0: - mulmat_node = applyop.gear_mulmatrix_op(self.div_cns[i].attr("worldMatrix"), - self.root.attr("worldInverseMatrix")) - dm_node = node.createDecomposeMatrixNode(mulmat_node + ".output") - pm.connectAttr(dm_node + ".outputTranslate", self.fk_npo[i].attr("t")) + mulmat_node = applyop.gear_mulmatrix_op( + self.div_cns[i].attr("worldMatrix"), + self.root.attr("worldInverseMatrix")) + + dm_node = node.createDecomposeMatrixNode( + mulmat_node + ".output") + + pm.connectAttr(dm_node + ".outputTranslate", + self.fk_npo[i].attr("t")) else: - mulmat_node = applyop.gear_mulmatrix_op(self.div_cns[i].attr("worldMatrix"), - self.div_cns[i - 1].attr("worldInverseMatrix")) - dm_node = node.createDecomposeMatrixNode(mulmat_node + ".output") - mul_node = node.createMulNode(div_node + ".output", dm_node + ".outputTranslate") + mulmat_node = applyop.gear_mulmatrix_op( + self.div_cns[i].attr("worldMatrix"), + self.div_cns[i - 1].attr("worldInverseMatrix")) + + dm_node = node.createDecomposeMatrixNode( + mulmat_node + ".output") + + mul_node = node.createMulNode(div_node + ".output", + dm_node + ".outputTranslate") + pm.connectAttr(mul_node + ".output", self.fk_npo[i].attr("t")) pm.connectAttr(dm_node + ".outputRotate", self.fk_npo[i].attr("r")) # Orientation Lock if i == 0: - dm_node = node.createDecomposeMatrixNode(self.ik0_ctl + ".worldMatrix") - blend_node = node.createBlendNode([dm_node + ".outputRotate%s" % s for s in "XYZ"], [cns + ".rotate%s" % s for s in "XYZ"], self.lock_ori0_att) + dm_node = node.createDecomposeMatrixNode( + self.ik0_ctl + ".worldMatrix") + + blend_node = node.createBlendNode( + [dm_node + ".outputRotate%s" % s for s in "XYZ"], + [cns + ".rotate%s" % s for s in "XYZ"], + self.lock_ori0_att) + self.div_cns[i].attr("rotate").disconnect() - pm.connectAttr(blend_node + ".output", self.div_cns[i] + ".rotate") + + pm.connectAttr(blend_node + ".output", + self.div_cns[i] + ".rotate") + elif i == self.settings["division"] - 1: - dm_node = node.createDecomposeMatrixNode(self.ik1_ctl + ".worldMatrix") - blend_node = node.createBlendNode([dm_node + ".outputRotate%s" % s for s in "XYZ"], [cns + ".rotate%s" % s for s in "XYZ"], self.lock_ori1_att) - self.div_cns[i].attr("rotate").disconnect() - pm.connectAttr(blend_node + ".output", self.div_cns[i] + ".rotate") + dm_node = node.createDecomposeMatrixNode( + self.ik1_ctl + ".worldMatrix") - # hip lvl position - # pm.pointConstraint(self.scl_transforms[0], self.hip_lvl, mo) + blend_node = node.createBlendNode( + [dm_node + ".outputRotate%s" % s for s in "XYZ"], + [cns + ".rotate%s" % s for s in "XYZ"], + self.lock_ori1_att) - # Connections (Hooks) ------------------------------ + self.div_cns[i].attr("rotate").disconnect() + pm.connectAttr(blend_node + ".output", + self.div_cns[i] + ".rotate") - # pm.parentConstraint(self.scl_transforms[0], self.cnx0) + # Connections (Hooks) ------------------------------ pm.parentConstraint(self.hip_lvl, self.cnx0) - # pm.scaleConstraint(self.scl_transforms[0], self.cnx0) pm.scaleConstraint(self.hip_lvl, self.cnx0) pm.parentConstraint(self.scl_transforms[-1], self.cnx1) pm.scaleConstraint(self.scl_transforms[-1], self.cnx1) - # ===================================================== - # CONNECTOR - # ===================================================== - # Set the relation beetween object from guide to rig.\n - # @param self # ===================================================== # CONNECTOR # ===================================================== From 3676ee7a8849e07b941ee143904b520b877f4b81 Mon Sep 17 00:00:00 2001 From: miquelcampos Date: Fri, 24 Nov 2017 11:24:25 +0900 Subject: [PATCH 083/134] PEP8 #100: Shifter: Components Main module finish --- .../shifter/component/mouth_01/__init__.py | 2 +- .../component/squash4Sides_01/__init__.py | 127 ++++++++++++------ 2 files changed, 90 insertions(+), 39 deletions(-) diff --git a/scripts/mgear/maya/shifter/component/mouth_01/__init__.py b/scripts/mgear/maya/shifter/component/mouth_01/__init__.py index 0078878..bc54507 100644 --- a/scripts/mgear/maya/shifter/component/mouth_01/__init__.py +++ b/scripts/mgear/maya/shifter/component/mouth_01/__init__.py @@ -197,7 +197,7 @@ def addOperators(self): blend_node_1 = pm.createNode("blendColors") blend_node_2 = pm.createNode("blendColors") - #Node Conexions ######## + # Node Conexions ######## # md_node_1 pm.connectAttr(self.jaw_ctl + ".translateY", md_node_1 + ".input1X") diff --git a/scripts/mgear/maya/shifter/component/squash4Sides_01/__init__.py b/scripts/mgear/maya/shifter/component/squash4Sides_01/__init__.py index 2315218..ad69bde 100644 --- a/scripts/mgear/maya/shifter/component/squash4Sides_01/__init__.py +++ b/scripts/mgear/maya/shifter/component/squash4Sides_01/__init__.py @@ -1,13 +1,11 @@ -"""Component Arm 2 joints 01 module""" +"""Component Squash 4 Sides 01 module""" import pymel.core as pm from pymel.core import datatypes from mgear.maya.shifter import component -from mgear.maya import node, fcurve, applyop, vector, curve -from mgear.maya import attribute, transform, primitive - +from mgear.maya import attribute, transform, primitive, node, vector ############################################# # COMPONENT @@ -23,70 +21,118 @@ class Component(component.Main): def addObjects(self): """Add all the objects needed to create the component.""" - ctlSize = vector.getDistance(self.guide.apos[0], self.guide.apos[1])/3.0 + ctlSize = vector.getDistance( + self.guide.apos[0], self.guide.apos[1]) / 3.0 t_root = self.guide.transform["root"] t_root = transform.setMatrixScale(t_root) - self.ik_cns = primitive.addTransform(self.root, self.getName("ik_cns"), t_root) + self.ik_cns = primitive.addTransform( + self.root, self.getName("ik_cns"), t_root) t = transform.setMatrixPosition(t_root, self.guide.pos["top"]) - self.top_npo = primitive.addTransform(self.ik_cns, self.getName("top_npo"), t) - self.top_ctl = self.addCtl(self.top_npo, "top_ctl", t, self.color_ik, "arrow", w=ctlSize, ro=datatypes.Vector(1.5708,1.5708,0), tp=self.parentCtlTag) - attribute.setKeyableAttributes(self.top_ctl, ["ty"] ) + self.top_npo = primitive.addTransform( + self.ik_cns, self.getName("top_npo"), t) + + self.top_ctl = self.addCtl(self.top_npo, + "top_ctl", + t, + self.color_ik, + "arrow", + w=ctlSize, + ro=datatypes.Vector(1.5708, 1.5708, 0), + tp=self.parentCtlTag) + + attribute.setKeyableAttributes(self.top_ctl, ["ty"]) t = transform.setMatrixPosition(t_root, self.guide.pos["bottom"]) - self.bottom_npo = primitive.addTransform(self.top_npo, self.getName("bottom_npo"), t) + self.bottom_npo = primitive.addTransform( + self.top_npo, self.getName("bottom_npo"), t) + self.bottom_npo.rz.set(180) - self.bottom_ctl = self.addCtl(self.bottom_npo, "bottom_ctl", t, self.color_ik, "arrow", w=ctlSize, ro=datatypes.Vector(1.5708,1.5708,0), tp=self.parentCtlTag) + self.bottom_ctl = self.addCtl(self.bottom_npo, + "bottom_ctl", + t, + self.color_ik, + "arrow", + w=ctlSize, + ro=datatypes.Vector(1.5708, 1.5708, 0), + tp=self.parentCtlTag) + self.bottom_ctl.rz.set(0) - attribute.setKeyableAttributes(self.bottom_ctl, ["ty"] ) - self.bottom_pivot = primitive.addTransform(self.bottom_npo, self.getName("bottom_pivot"), transform.getTransform(self.top_ctl)) + attribute.setKeyableAttributes(self.bottom_ctl, ["ty"]) + self.bottom_pivot = primitive.addTransform( + self.bottom_npo, + self.getName("bottom_pivot"), + transform.getTransform(self.top_ctl)) t = transform.setMatrixPosition(t_root, self.guide.pos["ext"]) - self.ext_npo = primitive.addTransform(self.bottom_pivot, self.getName("ext_npo"), t) + self.ext_npo = primitive.addTransform( + self.bottom_pivot, self.getName("ext_npo"), t) + self.ext_npo.rz.set(-90) - self.ext_ctl = self.addCtl(self.ext_npo, "ext_ctl", t, self.color_ik, "arrow", w=ctlSize, ro=datatypes.Vector(1.5708,1.5708,0), tp=self.parentCtlTag) + self.ext_ctl = self.addCtl(self.ext_npo, + "ext_ctl", + t, + self.color_ik, + "arrow", + w=ctlSize, + ro=datatypes.Vector(1.5708, 1.5708, 0), + tp=self.parentCtlTag) + self.ext_ctl.rz.set(0) - attribute.setKeyableAttributes(self.ext_ctl, ["ty"] ) + attribute.setKeyableAttributes(self.ext_ctl, ["ty"]) t = transform.setMatrixPosition(t_root, self.guide.pos["int"]) - self.int_npo = primitive.addTransform(self.ext_npo, self.getName("int_npo"), t) + self.int_npo = primitive.addTransform( + self.ext_npo, self.getName("int_npo"), t) + self.int_npo.rz.set(180) - self.int_ctl = self.addCtl(self.int_npo, "int_ctl", t, self.color_ik, "arrow", w=ctlSize, ro=datatypes.Vector(1.5708,1.5708,0), tp=self.parentCtlTag) + self.int_ctl = self.addCtl(self.int_npo, + "int_ctl", + t, + self.color_ik, + "arrow", + w=ctlSize, + ro=datatypes.Vector(1.5708, 1.5708, 0), + tp=self.parentCtlTag) + self.int_ctl.rz.set(0) - attribute.setKeyableAttributes(self.int_ctl, ["ty"] ) - self.int_pivot = primitive.addTransform(self.int_npo, self.getName("int_pivot"), transform.getTransform(self.ext_ctl)) + attribute.setKeyableAttributes(self.int_ctl, ["ty"]) - self.anchor = primitive.addTransform(self.int_pivot, self.getName("int_npo"), transform.getTransform(self.ik_cns)) + self.int_pivot = primitive.addTransform( + self.int_npo, + self.getName("int_pivot"), + transform.getTransform(self.ext_ctl)) + self.anchor = primitive.addTransform( + self.int_pivot, + self.getName("int_npo"), + transform.getTransform(self.ik_cns)) if self.settings["joint"]: self.jnt_pos.append([self.anchor, 0, None, False]) - - # ===================================================== + # ===================================================== # ATTRIBUTES # ===================================================== def addAttributes(self): """Create the anim and setupr rig attributes for the component""" - self.volume_att = self.addAnimParam("volume", "Volume", "double", 1, 0, 1) + self.volume_att = self.addAnimParam( + "volume", "Volume", "double", 1, 0, 1) # Ref if self.settings["ikrefarray"]: ref_names = self.settings["ikrefarray"].split(",") if len(ref_names) > 1: - self.ikref_att = self.addAnimEnumParam("ikref", "Ik Ref", 0, self.settings["ikrefarray"].split(",")) + self.ikref_att = self.addAnimEnumParam( + "ikref", + "Ik Ref", + 0, + self.settings["ikrefarray"].split(",")) - # ===================================================== - # OPERATORS - # ===================================================== - ## Apply operators, constraints, expressions to the hierarchy.\n - # In order to keep the code clean and easier to debug, - # we shouldn't create any new object in this method. - # @param self # ===================================================== # OPERATORS # ===================================================== @@ -98,17 +144,22 @@ def addOperators(self): we shouldn't create any new object in this method. """ - pairs = [ [self.top_ctl, self.bottom_npo, 1, 2], - [self.bottom_ctl, self.bottom_pivot, 2, 1], - [self.ext_ctl, self.int_npo, 3, 4], - [self.int_ctl, self.int_pivot, 4, 3]] + pairs = [[self.top_ctl, self.bottom_npo, 1, 2], + [self.bottom_ctl, self.bottom_pivot, 2, 1], + [self.ext_ctl, self.int_npo, 3, 4], + [self.int_ctl, self.int_pivot, 4, 3]] for pair in pairs: - d = vector.getDistance(self.guide.apos[pair[2]], self.guide.apos[pair[3]]) + d = vector.getDistance(self.guide.apos[pair[2]], + self.guide.apos[pair[3]]) + sum_node = node.createPlusMinusAverage1D([d, pair[0].ty]) mul_node = node.createMulNode(pair[0].ty, self.volume_att) sum2_node = node.createPlusMinusAverage1D([d, mul_node.outputX]) - mul2_node = node.createDivNode([sum2_node.output1D, sum_node.output1D, sum2_node.output1D], [d, d, d]) + mul2_node = node.createDivNode( + [sum2_node.output1D, sum_node.output1D, sum2_node.output1D], + [d, d, d]) + sum3D_node = pm.createNode("plusMinusAverage") sum3D_node.attr("operation").set(2) sum3D_node.input3D[0].input3Dx.set(2) From d602085ea37ceb913124798cad6dac099aec9059 Mon Sep 17 00:00:00 2001 From: miquelcampos Date: Fri, 24 Nov 2017 11:27:15 +0900 Subject: [PATCH 084/134] PEP8 #100: Shifter: Components Main fix refactor mistake --- .../mgear/maya/shifter/component/squash4Sides_01/__init__.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/scripts/mgear/maya/shifter/component/squash4Sides_01/__init__.py b/scripts/mgear/maya/shifter/component/squash4Sides_01/__init__.py index ad69bde..3e2c6a8 100644 --- a/scripts/mgear/maya/shifter/component/squash4Sides_01/__init__.py +++ b/scripts/mgear/maya/shifter/component/squash4Sides_01/__init__.py @@ -24,7 +24,7 @@ def addObjects(self): ctlSize = vector.getDistance( self.guide.apos[0], self.guide.apos[1]) / 3.0 - t_root = self.guide.transform["root"] + t_root = self.guide.tra["root"] t_root = transform.setMatrixScale(t_root) self.ik_cns = primitive.addTransform( From f0d7549c6a9fb58ed8c6a180cca381bf8ef8edae Mon Sep 17 00:00:00 2001 From: miquelcampos Date: Fri, 24 Nov 2017 12:30:19 +0900 Subject: [PATCH 085/134] PEP8 #100: Shifter: Components Guides finish --- .../shifter/component/leg_2jnt_01/guide.py | 219 +++++++++------- .../leg_2jnt_freeTangents_01/guide.py | 221 +++++++++------- .../shifter/component/leg_3jnt_01/guide.py | 239 ++++++++++-------- .../shifter/component/leg_ms_2jnt_01/guide.py | 214 +++++++++------- .../maya/shifter/component/meta_01/guide.py | 123 ++++----- .../maya/shifter/component/mouth_01/guide.py | 100 +++----- .../shifter/component/neck_ik_01/guide.py | 229 ++++++++++------- .../shifter/component/shoulder_01/guide.py | 114 ++++----- .../shifter/component/shoulder_ms_01/guide.py | 90 ++----- .../shifter/component/spine_ik_01/guide.py | 193 +++++++------- .../shifter/component/spine_ik_02/guide.py | 195 +++++++------- .../component/squash4Sides_01/guide.py | 118 ++++----- .../maya/shifter/component/squash_01/guide.py | 3 - 13 files changed, 1058 insertions(+), 1000 deletions(-) diff --git a/scripts/mgear/maya/shifter/component/leg_2jnt_01/guide.py b/scripts/mgear/maya/shifter/component/leg_2jnt_01/guide.py index 72b8e05..175e60b 100644 --- a/scripts/mgear/maya/shifter/component/leg_2jnt_01/guide.py +++ b/scripts/mgear/maya/shifter/component/leg_2jnt_01/guide.py @@ -1,60 +1,33 @@ -# MGEAR is under the terms of the MIT License - -# Copyright (c) 2016 Jeremie Passerin, Miquel Campos - -# Permission is hereby granted, free of charge, to any person obtaining a copy -# of this software and associated documentation files (the "Software"), to deal -# in the Software without restriction, including without limitation the rights -# to use, copy, modify, merge, publish, distribute, sublicense, and/or sell -# copies of the Software, and to permit persons to whom the Software is -# furnished to do so, subject to the following conditions: - -# The above copyright notice and this permission notice shall be included in all -# copies or substantial portions of the Software. - -# THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR -# IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, -# FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE -# AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER -# LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, -# OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE -# SOFTWARE. - -# Author: Jeremie Passerin geerem@hotmail.com www.jeremiepasserin.com -# Author: Miquel Campos hello@miquel-campos.com www.miquel-campos.com -# Date: 2016 / 10 / 10 - -############################################# -# GLOBAL -############################################# +"""Guide Leg 2jnt 01 module""" from functools import partial -# mgear -from mgear.maya.shifter.component.guide import ComponentGuide -import mgear.maya.transform as tra +from mgear.maya.shifter.component import guide +from mgear.maya import transform, pyqt +from mgear.vendor.Qt import QtWidgets, QtCore -#Pyside -from mgear.maya.shifter.component.guide import componentMainSettings -import mgear.maya.pyqt as gqt from maya.app.general.mayaMixin import MayaQWidgetDockableMixin from maya.app.general.mayaMixin import MayaQDockWidget + import settingsUI as sui -QtGui, QtCore, QtWidgets, wrapInstance = gqt.qt_import() # guide info AUTHOR = "Jeremie Passerin, Miquel Campos" URL = "www.jeremiepasserin.com, www.miquel-campos.com" EMAIL = "geerem@hotmail.com, hello@miquel-campos.com" -VERSION = [1,3,0] +VERSION = [1, 3, 0] TYPE = "leg_2jnt_01" NAME = "leg" -DESCRIPTION = "2 bones leg with stretch, roundess, ik/fk..., This component add to div near the knee. with knee pin" +DESCRIPTION = "2 bones leg with stretch, roundess, ik/fk..., This component "\ + "add to div near the knee. with knee pin" ########################################################## # CLASS ########################################################## -class Guide(ComponentGuide): + + +class Guide(guide.ComponentGuide): + """Component Guide Class""" compType = TYPE compName = NAME @@ -65,39 +38,33 @@ class Guide(ComponentGuide): email = EMAIL version = VERSION - # ===================================================== - ## - # @param self def postInit(self): + """Initialize the position for the guide""" self.save_transform = ["root", "knee", "ankle", "eff"] - # ===================================================== - ## Add more object to the object definition list. - # @param self def addObjects(self): + """Add the Guide Root, blade and locators""" self.root = self.addRoot() - vTemp = tra.getOffsetPosition( self.root, [0,-3,0.1]) + vTemp = transform.getOffsetPosition(self.root, [0, -3, 0.1]) self.knee = self.addLoc("knee", self.root, vTemp) - vTemp = tra.getOffsetPosition( self.root, [0,-6,0]) + vTemp = transform.getOffsetPosition(self.root, [0, -6, 0]) self.ankle = self.addLoc("ankle", self.knee, vTemp) - vTemp = tra.getOffsetPosition( self.root, [0,-6, .5]) + vTemp = transform.getOffsetPosition(self.root, [0, -6, .5]) self.eff = self.addLoc("eff", self.ankle, vTemp) centers = [self.root, self.knee, self.ankle, self.eff] self.dispcrv = self.addDispCurve("crv", centers) - # ===================================================== - ## Add more parameter to the parameter definition list. - # @param self def addParameters(self): + """Add the configurations settings""" # Default Values - self.pBlend = self.addParam("blend", "double", 1, 0, 1) - self.pIkRefArray = self.addParam("ikrefarray", "string", "") + self.pBlend = self.addParam("blend", "double", 1, 0, 1) + self.pIkRefArray = self.addParam("ikrefarray", "string", "") self.pUpvRefArray = self.addParam("upvrefarray", "string", "") self.pUpvRefArray = self.addParam("pinrefarray", "string", "") - self.pMaxStretch = self.addParam("maxstretch", "double", 1.5 , 1, None) + self.pMaxStretch = self.addParam("maxstretch", "double", 1.5, 1, None) self.pMirrorMid = self.addParam("mirrorMid", "bool", False) # Divisions @@ -105,34 +72,41 @@ def addParameters(self): self.pDiv1 = self.addParam("div1", "long", 2, 1, None) # FCurves - self.pSt_profile = self.addFCurveParam("st_profile", [[0,0],[.5,-1],[1,0]]) - self.pSq_profile = self.addFCurveParam("sq_profile", [[0,0],[.5,1],[1,0]]) + self.pSt_profile = self.addFCurveParam( + "st_profile", [[0, 0], [.5, -1], [1, 0]]) + + self.pSq_profile = self.addFCurveParam( + "sq_profile", [[0, 0], [.5, 1], [1, 0]]) - self.pUseIndex = self.addParam("useIndex", "bool", False) - self.pParentJointIndex = self.addParam("parentJointIndex", "long", -1, None, None) + self.pUseIndex = self.addParam("useIndex", "bool", False) + + self.pParentJointIndex = self.addParam( + "parentJointIndex", "long", -1, None, None) ########################################################## # Setting Page ########################################################## + class settingsTab(QtWidgets.QDialog, sui.Ui_Form): + """The Component settings UI""" def __init__(self, parent=None): super(settingsTab, self).__init__(parent) self.setupUi(self) -class componentSettings(MayaQWidgetDockableMixin, componentMainSettings): +class componentSettings(MayaQWidgetDockableMixin, guide.componentMainSettings): + """Create the component setting window""" - def __init__(self, parent = None): + def __init__(self, parent=None): self.toolName = TYPE # Delete old instances of the componet settings window. - gqt.deleteInstances(self, MayaQDockWidget) + pyqt.deleteInstances(self, MayaQDockWidget) - super(self.__class__, self).__init__(parent = parent) + super(self.__class__, self).__init__(parent=parent) self.settingsTab = settingsTab() - self.setup_componentSettingWindow() self.create_componentControls() self.populate_componentControls() @@ -140,7 +114,7 @@ def __init__(self, parent = None): self.create_componentConnections() def setup_componentSettingWindow(self): - self.mayaMainWindow = gqt.maya_main_window() + self.mayaMainWindow = pyqt.maya_main_window() self.setObjectName(self.toolName) self.setWindowFlags(QtCore.Qt.Window) @@ -150,19 +124,26 @@ def setup_componentSettingWindow(self): def create_componentControls(self): return - def populate_componentControls(self): - """ - Populate the controls values from the custom attributes of the component. + """Populate the controls values. + + Populate the controls values from the custom attributes of the + component. """ - #populate tab + # populate tab self.tabs.insertTab(1, self.settingsTab, "Component Settings") - #populate component settings - self.settingsTab.ikfk_slider.setValue(int(self.root.attr("blend").get()*100)) - self.settingsTab.ikfk_spinBox.setValue(int(self.root.attr("blend").get()*100)) - self.settingsTab.maxStretch_spinBox.setValue(self.root.attr("maxstretch").get()) + # populate component settings + self.settingsTab.ikfk_slider.setValue( + int(self.root.attr("blend").get() * 100)) + + self.settingsTab.ikfk_spinBox.setValue( + int(self.root.attr("blend").get() * 100)) + + self.settingsTab.maxStretch_spinBox.setValue( + self.root.attr("maxstretch").get()) + self.populateCheck(self.settingsTab.mirrorMid_checkBox, "mirrorMid") self.settingsTab.div0_spinBox.setValue(self.root.attr("div0").get()) self.settingsTab.div1_spinBox.setValue(self.root.attr("div1").get()) @@ -176,7 +157,6 @@ def populate_componentControls(self): for item in pinRefArrayItems: self.settingsTab.pinRefArray_listWidget.addItem(item) - def create_componentLayout(self): self.settings_layout = QtWidgets.QVBoxLayout() @@ -187,27 +167,82 @@ def create_componentLayout(self): def create_componentConnections(self): - self.settingsTab.ikfk_slider.valueChanged.connect(partial(self.updateSlider, self.settingsTab.ikfk_slider, "blend")) - self.settingsTab.ikfk_spinBox.valueChanged.connect(partial(self.updateSlider, self.settingsTab.ikfk_spinBox, "blend")) - self.settingsTab.maxStretch_spinBox.valueChanged.connect(partial(self.updateSpinBox, self.settingsTab.maxStretch_spinBox, "maxstretch")) - self.settingsTab.div0_spinBox.valueChanged.connect(partial(self.updateSpinBox, self.settingsTab.div0_spinBox, "div0")) - self.settingsTab.div1_spinBox.valueChanged.connect(partial(self.updateSpinBox, self.settingsTab.div1_spinBox, "div1")) - self.settingsTab.squashStretchProfile_pushButton.clicked.connect(self.setProfile) - self.settingsTab.mirrorMid_checkBox.stateChanged.connect(partial(self.updateCheck, self.settingsTab.mirrorMid_checkBox, "mirrorMid")) - - self.settingsTab.ikRefArrayAdd_pushButton.clicked.connect(partial(self.addItem2listWidget, self.settingsTab.ikRefArray_listWidget, "ikrefarray")) - self.settingsTab.ikRefArrayRemove_pushButton.clicked.connect(partial(self.removeSelectedFromListWidget, self.settingsTab.ikRefArray_listWidget, "ikrefarray")) - self.settingsTab.ikRefArray_copyRef_pushButton.clicked.connect(partial(self.copyFromListWidget, self.settingsTab.upvRefArray_listWidget, self.settingsTab.ikRefArray_listWidget, "ikrefarray")) + self.settingsTab.ikfk_slider.valueChanged.connect( + partial(self.updateSlider, self.settingsTab.ikfk_slider, "blend")) + + self.settingsTab.ikfk_spinBox.valueChanged.connect( + partial(self.updateSlider, self.settingsTab.ikfk_spinBox, "blend")) + + self.settingsTab.maxStretch_spinBox.valueChanged.connect( + partial(self.updateSpinBox, + self.settingsTab.maxStretch_spinBox, + "maxstretch")) + + self.settingsTab.div0_spinBox.valueChanged.connect( + partial(self.updateSpinBox, self.settingsTab.div0_spinBox, "div0")) + + self.settingsTab.div1_spinBox.valueChanged.connect( + partial(self.updateSpinBox, self.settingsTab.div1_spinBox, "div1")) + self.settingsTab.squashStretchProfile_pushButton.clicked.connect( + self.setProfile) + + self.settingsTab.mirrorMid_checkBox.stateChanged.connect( + partial(self.updateCheck, + self.settingsTab.mirrorMid_checkBox, + "mirrorMid")) + + self.settingsTab.ikRefArrayAdd_pushButton.clicked.connect( + partial(self.addItem2listWidget, + self.settingsTab.ikRefArray_listWidget, + "ikrefarray")) + + self.settingsTab.ikRefArrayRemove_pushButton.clicked.connect( + partial(self.removeSelectedFromListWidget, + self.settingsTab.ikRefArray_listWidget, + "ikrefarray")) + + self.settingsTab.ikRefArray_copyRef_pushButton.clicked.connect( + partial(self.copyFromListWidget, + self.settingsTab.upvRefArray_listWidget, + self.settingsTab.ikRefArray_listWidget, + "ikrefarray")) + self.settingsTab.ikRefArray_listWidget.installEventFilter(self) - self.settingsTab.upvRefArrayAdd_pushButton.clicked.connect(partial(self.addItem2listWidget, self.settingsTab.upvRefArray_listWidget, "upvrefarray")) - self.settingsTab.upvRefArrayRemove_pushButton.clicked.connect(partial(self.removeSelectedFromListWidget, self.settingsTab.upvRefArray_listWidget, "upvrefarray")) - self.settingsTab.upvRefArray_copyRef_pushButton.clicked.connect(partial(self.copyFromListWidget, self.settingsTab.ikRefArray_listWidget, self.settingsTab.upvRefArray_listWidget, "upvrefarray")) + self.settingsTab.upvRefArrayAdd_pushButton.clicked.connect( + partial(self.addItem2listWidget, + self.settingsTab.upvRefArray_listWidget, + "upvrefarray")) + + self.settingsTab.upvRefArrayRemove_pushButton.clicked.connect( + partial(self.removeSelectedFromListWidget, + self.settingsTab.upvRefArray_listWidget, + "upvrefarray")) + + self.settingsTab.upvRefArray_copyRef_pushButton.clicked.connect( + partial(self.copyFromListWidget, + self.settingsTab.ikRefArray_listWidget, + self.settingsTab.upvRefArray_listWidget, + "upvrefarray")) + self.settingsTab.upvRefArray_listWidget.installEventFilter(self) - self.settingsTab.pinRefArrayAdd_pushButton.clicked.connect(partial(self.addItem2listWidget, self.settingsTab.pinRefArray_listWidget, "pinrefarray")) - self.settingsTab.pinRefArrayRemove_pushButton.clicked.connect(partial(self.removeSelectedFromListWidget, self.settingsTab.pinRefArray_listWidget, "pinrefarray")) - self.settingsTab.pinRefArray_copyRef_pushButton.clicked.connect(partial(self.copyFromListWidget, self.settingsTab.ikRefArray_listWidget, self.settingsTab.pinRefArray_listWidget, "pinrefarray")) + self.settingsTab.pinRefArrayAdd_pushButton.clicked.connect( + partial(self.addItem2listWidget, + self.settingsTab.pinRefArray_listWidget, + "pinrefarray")) + + self.settingsTab.pinRefArrayRemove_pushButton.clicked.connect( + partial(self.removeSelectedFromListWidget, + self.settingsTab.pinRefArray_listWidget, + "pinrefarray")) + + self.settingsTab.pinRefArray_copyRef_pushButton.clicked.connect( + partial(self.copyFromListWidget, + self.settingsTab.ikRefArray_listWidget, + self.settingsTab.pinRefArray_listWidget, + "pinrefarray")) + self.settingsTab.pinRefArray_listWidget.installEventFilter(self) def eventFilter(self, sender, event): @@ -222,7 +257,5 @@ def eventFilter(self, sender, event): else: return QtWidgets.QDialog.eventFilter(self, sender, event) - - def dockCloseEventTriggered(self): - gqt.deleteInstances(self, MayaQDockWidget) + pyqt.deleteInstances(self, MayaQDockWidget) diff --git a/scripts/mgear/maya/shifter/component/leg_2jnt_freeTangents_01/guide.py b/scripts/mgear/maya/shifter/component/leg_2jnt_freeTangents_01/guide.py index 041bdd8..d5f8b6b 100644 --- a/scripts/mgear/maya/shifter/component/leg_2jnt_freeTangents_01/guide.py +++ b/scripts/mgear/maya/shifter/component/leg_2jnt_freeTangents_01/guide.py @@ -1,60 +1,34 @@ -# MGEAR is under the terms of the MIT License - -# Copyright (c) 2016 Jeremie Passerin, Miquel Campos - -# Permission is hereby granted, free of charge, to any person obtaining a copy -# of this software and associated documentation files (the "Software"), to deal -# in the Software without restriction, including without limitation the rights -# to use, copy, modify, merge, publish, distribute, sublicense, and/or sell -# copies of the Software, and to permit persons to whom the Software is -# furnished to do so, subject to the following conditions: - -# The above copyright notice and this permission notice shall be included in all -# copies or substantial portions of the Software. - -# THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR -# IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, -# FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE -# AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER -# LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, -# OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE -# SOFTWARE. - -# Author: Jeremie Passerin geerem@hotmail.com www.jeremiepasserin.com -# Author: Miquel Campos hello@miquel-campos.com www.miquel-campos.com -# Date: 2016 / 10 / 10 - -############################################# -# GLOBAL -############################################# +"""Guide Leg 2jnt freeTangent 01 module""" from functools import partial -# mgear -from mgear.maya.shifter.component.guide import ComponentGuide -import mgear.maya.transform as tra +from mgear.maya.shifter.component import guide +from mgear.maya import transform, pyqt +from mgear.vendor.Qt import QtWidgets, QtCore -#Pyside -from mgear.maya.shifter.component.guide import componentMainSettings -import mgear.maya.pyqt as gqt from maya.app.general.mayaMixin import MayaQWidgetDockableMixin from maya.app.general.mayaMixin import MayaQDockWidget + import settingsUI as sui -QtGui, QtCore, QtWidgets, wrapInstance = gqt.qt_import() + # guide info AUTHOR = "Jeremie Passerin, Miquel Campos" URL = "www.jeremiepasserin.com, www.miquel-campos.com" EMAIL = "geerem@hotmail.com, hello@miquel-campos.com" -VERSION = [1,2,0] +VERSION = [1, 2, 0] TYPE = "leg_2jnt_freeTangents_01" NAME = "leg" -DESCRIPTION = "Auto UPV. 2 bones leg with stretch, roundess, ik/fk...with classic maya roll. With Knee pin and only one central tangent" +DESCRIPTION = "Auto UPV. 2 bones leg with stretch, roundess, ik/fk...with "\ + "classic maya roll. With Knee pin and only one central tangent" ########################################################## # CLASS ########################################################## -class Guide(ComponentGuide): + + +class Guide(guide.ComponentGuide): + """Component Guide Class""" compType = TYPE compName = NAME @@ -65,39 +39,33 @@ class Guide(ComponentGuide): email = EMAIL version = VERSION - # ===================================================== - ## - # @param self def postInit(self): + """Initialize the position for the guide""" self.save_transform = ["root", "knee", "ankle", "eff"] - # ===================================================== - ## Add more object to the object definition list. - # @param self def addObjects(self): + """Add the Guide Root, blade and locators""" self.root = self.addRoot() - vTemp = tra.getOffsetPosition( self.root, [0,-3,0.1]) + vTemp = transform.getOffsetPosition(self.root, [0, -3, 0.1]) self.knee = self.addLoc("knee", self.root, vTemp) - vTemp = tra.getOffsetPosition( self.root, [0,-6,0]) + vTemp = transform.getOffsetPosition(self.root, [0, -6, 0]) self.ankle = self.addLoc("ankle", self.knee, vTemp) - vTemp = tra.getOffsetPosition( self.root, [0,-6, .5]) + vTemp = transform.getOffsetPosition(self.root, [0, -6, .5]) self.eff = self.addLoc("eff", self.ankle, vTemp) centers = [self.root, self.knee, self.ankle, self.eff] self.dispcrv = self.addDispCurve("crv", centers) - # ===================================================== - ## Add more parameter to the parameter definition list. - # @param self def addParameters(self): + """Add the configurations settings""" # Default Values - self.pBlend = self.addParam("blend", "double", 1, 0, 1) - self.pIkRefArray = self.addParam("ikrefarray", "string", "") + self.pBlend = self.addParam("blend", "double", 1, 0, 1) + self.pIkRefArray = self.addParam("ikrefarray", "string", "") self.pUpvRefArray = self.addParam("upvrefarray", "string", "") self.pUpvRefArray = self.addParam("pinrefarray", "string", "") - self.pMaxStretch = self.addParam("maxstretch", "double", 1.5 , 1, None) + self.pMaxStretch = self.addParam("maxstretch", "double", 1.5, 1, None) self.pMirrorMid = self.addParam("mirrorMid", "bool", False) # Divisions @@ -105,34 +73,41 @@ def addParameters(self): self.pDiv1 = self.addParam("div1", "long", 2, 1, None) # FCurves - self.pSt_profile = self.addFCurveParam("st_profile", [[0,0],[.5,-1],[1,0]]) - self.pSq_profile = self.addFCurveParam("sq_profile", [[0,0],[.5,1],[1,0]]) + self.pSt_profile = self.addFCurveParam( + "st_profile", [[0, 0], [.5, -1], [1, 0]]) - self.pUseIndex = self.addParam("useIndex", "bool", False) - self.pParentJointIndex = self.addParam("parentJointIndex", "long", -1, None, None) + self.pSq_profile = self.addFCurveParam( + "sq_profile", [[0, 0], [.5, 1], [1, 0]]) + + self.pUseIndex = self.addParam("useIndex", "bool", False) + + self.pParentJointIndex = self.addParam( + "parentJointIndex", "long", -1, None, None) ########################################################## # Setting Page ########################################################## + class settingsTab(QtWidgets.QDialog, sui.Ui_Form): + """The Component settings UI""" def __init__(self, parent=None): super(settingsTab, self).__init__(parent) self.setupUi(self) -class componentSettings(MayaQWidgetDockableMixin, componentMainSettings): +class componentSettings(MayaQWidgetDockableMixin, guide.componentMainSettings): + """Create the component setting window""" - def __init__(self, parent = None): + def __init__(self, parent=None): self.toolName = TYPE # Delete old instances of the componet settings window. - gqt.deleteInstances(self, MayaQDockWidget) + pyqt.deleteInstances(self, MayaQDockWidget) - super(self.__class__, self).__init__(parent = parent) + super(self.__class__, self).__init__(parent=parent) self.settingsTab = settingsTab() - self.setup_componentSettingWindow() self.create_componentControls() self.populate_componentControls() @@ -140,7 +115,7 @@ def __init__(self, parent = None): self.create_componentConnections() def setup_componentSettingWindow(self): - self.mayaMainWindow = gqt.maya_main_window() + self.mayaMainWindow = pyqt.maya_main_window() self.setObjectName(self.toolName) self.setWindowFlags(QtCore.Qt.Window) @@ -150,19 +125,26 @@ def setup_componentSettingWindow(self): def create_componentControls(self): return - def populate_componentControls(self): - """ - Populate the controls values from the custom attributes of the component. + """Populate the controls values. + + Populate the controls values from the custom attributes of the + component. """ - #populate tab + # populate tab self.tabs.insertTab(1, self.settingsTab, "Component Settings") - #populate component settings - self.settingsTab.ikfk_slider.setValue(int(self.root.attr("blend").get()*100)) - self.settingsTab.ikfk_spinBox.setValue(int(self.root.attr("blend").get()*100)) - self.settingsTab.maxStretch_spinBox.setValue(self.root.attr("maxstretch").get()) + # populate component settings + self.settingsTab.ikfk_slider.setValue( + int(self.root.attr("blend").get() * 100)) + + self.settingsTab.ikfk_spinBox.setValue( + int(self.root.attr("blend").get() * 100)) + + self.settingsTab.maxStretch_spinBox.setValue( + self.root.attr("maxstretch").get()) + self.populateCheck(self.settingsTab.mirrorMid_checkBox, "mirrorMid") self.settingsTab.div0_spinBox.setValue(self.root.attr("div0").get()) self.settingsTab.div1_spinBox.setValue(self.root.attr("div1").get()) @@ -176,7 +158,6 @@ def populate_componentControls(self): for item in pinRefArrayItems: self.settingsTab.pinRefArray_listWidget.addItem(item) - def create_componentLayout(self): self.settings_layout = QtWidgets.QVBoxLayout() @@ -187,27 +168,83 @@ def create_componentLayout(self): def create_componentConnections(self): - self.settingsTab.ikfk_slider.valueChanged.connect(partial(self.updateSlider, self.settingsTab.ikfk_slider, "blend")) - self.settingsTab.ikfk_spinBox.valueChanged.connect(partial(self.updateSlider, self.settingsTab.ikfk_spinBox, "blend")) - self.settingsTab.maxStretch_spinBox.valueChanged.connect(partial(self.updateSpinBox, self.settingsTab.maxStretch_spinBox, "maxstretch")) - self.settingsTab.div0_spinBox.valueChanged.connect(partial(self.updateSpinBox, self.settingsTab.div0_spinBox, "div0")) - self.settingsTab.div1_spinBox.valueChanged.connect(partial(self.updateSpinBox, self.settingsTab.div1_spinBox, "div1")) - self.settingsTab.squashStretchProfile_pushButton.clicked.connect(self.setProfile) - self.settingsTab.mirrorMid_checkBox.stateChanged.connect(partial(self.updateCheck, self.settingsTab.mirrorMid_checkBox, "mirrorMid")) - - self.settingsTab.ikRefArrayAdd_pushButton.clicked.connect(partial(self.addItem2listWidget, self.settingsTab.ikRefArray_listWidget, "ikrefarray")) - self.settingsTab.ikRefArrayRemove_pushButton.clicked.connect(partial(self.removeSelectedFromListWidget, self.settingsTab.ikRefArray_listWidget, "ikrefarray")) - self.settingsTab.ikRefArray_copyRef_pushButton.clicked.connect(partial(self.copyFromListWidget, self.settingsTab.upvRefArray_listWidget, self.settingsTab.ikRefArray_listWidget, "ikrefarray")) + self.settingsTab.ikfk_slider.valueChanged.connect( + partial(self.updateSlider, self.settingsTab.ikfk_slider, "blend")) + + self.settingsTab.ikfk_spinBox.valueChanged.connect( + partial(self.updateSlider, self.settingsTab.ikfk_spinBox, "blend")) + + self.settingsTab.maxStretch_spinBox.valueChanged.connect( + partial(self.updateSpinBox, + self.settingsTab.maxStretch_spinBox, + "maxstretch")) + + self.settingsTab.div0_spinBox.valueChanged.connect( + partial(self.updateSpinBox, self.settingsTab.div0_spinBox, "div0")) + + self.settingsTab.div1_spinBox.valueChanged.connect( + partial(self.updateSpinBox, self.settingsTab.div1_spinBox, "div1")) + + self.settingsTab.squashStretchProfile_pushButton.clicked.connect( + self.setProfile) + + self.settingsTab.mirrorMid_checkBox.stateChanged.connect( + partial(self.updateCheck, + self.settingsTab.mirrorMid_checkBox, + "mirrorMid")) + + self.settingsTab.ikRefArrayAdd_pushButton.clicked.connect( + partial(self.addItem2listWidget, + self.settingsTab.ikRefArray_listWidget, + "ikrefarray")) + + self.settingsTab.ikRefArrayRemove_pushButton.clicked.connect( + partial(self.removeSelectedFromListWidget, + self.settingsTab.ikRefArray_listWidget, + "ikrefarray")) + + self.settingsTab.ikRefArray_copyRef_pushButton.clicked.connect( + partial(self.copyFromListWidget, + self.settingsTab.upvRefArray_listWidget, + self.settingsTab.ikRefArray_listWidget, + "ikrefarray")) + self.settingsTab.ikRefArray_listWidget.installEventFilter(self) - self.settingsTab.upvRefArrayAdd_pushButton.clicked.connect(partial(self.addItem2listWidget, self.settingsTab.upvRefArray_listWidget, "upvrefarray")) - self.settingsTab.upvRefArrayRemove_pushButton.clicked.connect(partial(self.removeSelectedFromListWidget, self.settingsTab.upvRefArray_listWidget, "upvrefarray")) - self.settingsTab.upvRefArray_copyRef_pushButton.clicked.connect(partial(self.copyFromListWidget, self.settingsTab.ikRefArray_listWidget, self.settingsTab.upvRefArray_listWidget, "upvrefarray")) + self.settingsTab.upvRefArrayAdd_pushButton.clicked.connect( + partial(self.addItem2listWidget, + self.settingsTab.upvRefArray_listWidget, + "upvrefarray")) + + self.settingsTab.upvRefArrayRemove_pushButton.clicked.connect( + partial(self.removeSelectedFromListWidget, + self.settingsTab.upvRefArray_listWidget, + "upvrefarray")) + + self.settingsTab.upvRefArray_copyRef_pushButton.clicked.connect( + partial(self.copyFromListWidget, + self.settingsTab.ikRefArray_listWidget, + self.settingsTab.upvRefArray_listWidget, + "upvrefarray")) + self.settingsTab.upvRefArray_listWidget.installEventFilter(self) - self.settingsTab.pinRefArrayAdd_pushButton.clicked.connect(partial(self.addItem2listWidget, self.settingsTab.pinRefArray_listWidget, "pinrefarray")) - self.settingsTab.pinRefArrayRemove_pushButton.clicked.connect(partial(self.removeSelectedFromListWidget, self.settingsTab.pinRefArray_listWidget, "pinrefarray")) - self.settingsTab.pinRefArray_copyRef_pushButton.clicked.connect(partial(self.copyFromListWidget, self.settingsTab.ikRefArray_listWidget, self.settingsTab.pinRefArray_listWidget, "pinrefarray")) + self.settingsTab.pinRefArrayAdd_pushButton.clicked.connect( + partial(self.addItem2listWidget, + self.settingsTab.pinRefArray_listWidget, + "pinrefarray")) + + self.settingsTab.pinRefArrayRemove_pushButton.clicked.connect( + partial(self.removeSelectedFromListWidget, + self.settingsTab.pinRefArray_listWidget, + "pinrefarray")) + + self.settingsTab.pinRefArray_copyRef_pushButton.clicked.connect( + partial(self.copyFromListWidget, + self.settingsTab.ikRefArray_listWidget, + self.settingsTab.pinRefArray_listWidget, + "pinrefarray")) + self.settingsTab.pinRefArray_listWidget.installEventFilter(self) def eventFilter(self, sender, event): @@ -222,7 +259,5 @@ def eventFilter(self, sender, event): else: return QtWidgets.QDialog.eventFilter(self, sender, event) - - def dockCloseEventTriggered(self): - gqt.deleteInstances(self, MayaQDockWidget) + pyqt.deleteInstances(self, MayaQDockWidget) diff --git a/scripts/mgear/maya/shifter/component/leg_3jnt_01/guide.py b/scripts/mgear/maya/shifter/component/leg_3jnt_01/guide.py index 07ef032..2b73c43 100644 --- a/scripts/mgear/maya/shifter/component/leg_3jnt_01/guide.py +++ b/scripts/mgear/maya/shifter/component/leg_3jnt_01/guide.py @@ -1,52 +1,21 @@ -# MGEAR is under the terms of the MIT License - -# Copyright (c) 2016 Jeremie Passerin, Miquel Campos - -# Permission is hereby granted, free of charge, to any person obtaining a copy -# of this software and associated documentation files (the "Software"), to deal -# in the Software without restriction, including without limitation the rights -# to use, copy, modify, merge, publish, distribute, sublicense, and/or sell -# copies of the Software, and to permit persons to whom the Software is -# furnished to do so, subject to the following conditions: - -# The above copyright notice and this permission notice shall be included in all -# copies or substantial portions of the Software. - -# THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR -# IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, -# FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE -# AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER -# LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, -# OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE -# SOFTWARE. - -# Author: Jeremie Passerin geerem@hotmail.com www.jeremiepasserin.com -# Author: Miquel Campos hello@miquel-campos.com www.miquel-campos.com -# Date: 2016 / 10 / 10 - -############################################# -# GLOBAL -############################################# +"""Guide leg 3jnt 01 module""" + from functools import partial -# mgear -from mgear.maya.shifter.component.guide import ComponentGuide -import mgear.maya.transform as tra -import mgear.maya.attribute as att +from mgear.maya.shifter.component import guide +from mgear.maya import transform, pyqt, attribute +from mgear.vendor.Qt import QtWidgets, QtCore -#Pyside -from mgear.maya.shifter.component.guide import componentMainSettings -import mgear.maya.pyqt as gqt from maya.app.general.mayaMixin import MayaQWidgetDockableMixin from maya.app.general.mayaMixin import MayaQDockWidget + import settingsUI as sui -QtGui, QtCore, QtWidgets, wrapInstance = gqt.qt_import() # guide info AUTHOR = "Miquel Campos" URL = "www.miquel-campos.com" EMAIL = "hello@miquel-campos.com" -VERSION = [1,1,0] +VERSION = [1, 1, 0] TYPE = "leg_3jnt_01" NAME = "leg" DESCRIPTION = "3 bones leg for quadrupeds and other animals" @@ -54,7 +23,10 @@ ########################################################## # CLASS ########################################################## -class Guide(ComponentGuide): + + +class Guide(guide.ComponentGuide): + """Component Guide Class""" compType = TYPE compName = NAME @@ -65,47 +37,43 @@ class Guide(ComponentGuide): email = EMAIL version = VERSION - # ===================================================== - ## - # @param self def postInit(self): + """Initialize the position for the guide""" self.save_transform = ["root", "knee", "ankle", "foot", "eff"] - # ===================================================== - ## Add more object to the object definition list. - # @param self + def addObjects(self): + """Add the Guide Root, blade and locators""" lockAttrs = ["tx", "ry", "rz"] self.root = self.addRoot() - vTemp = tra.getOffsetPosition( self.root, [0,-3,0.1]) + vTemp = transform.getOffsetPosition(self.root, [0, -3, 0.1]) self.knee = self.addLoc("knee", self.root, vTemp) - att.lockAttribute(self.knee, lockAttrs) - vTemp = tra.getOffsetPosition( self.root, [0,-6,0]) + attribute.lockAttribute(self.knee, lockAttrs) + vTemp = transform.getOffsetPosition(self.root, [0, -6, 0]) self.ankle = self.addLoc("ankle", self.knee, vTemp) - att.lockAttribute(self.ankle, lockAttrs) - vTemp = tra.getOffsetPosition( self.root, [0,-9,.2]) + attribute.lockAttribute(self.ankle, lockAttrs) + vTemp = transform.getOffsetPosition(self.root, [0, -9, .2]) self.foot = self.addLoc("foot", self.ankle, vTemp) - att.lockAttribute(self.foot, lockAttrs) - vTemp = tra.getOffsetPosition( self.root, [0,-9, 1]) + attribute.lockAttribute(self.foot, lockAttrs) + vTemp = transform.getOffsetPosition(self.root, [0, -9, 1]) self.eff = self.addLoc("eff", self.foot, vTemp) centers = [self.root, self.knee, self.ankle, self.foot, self.eff] self.dispcrv = self.addDispCurve("crv1", centers) - - # ===================================================== - ## Add more parameter to the parameter definition list. - # @param self def addParameters(self): + """Add the configurations settings""" # Default Values - self.pBlend = self.addParam("blend", "double", 1, 0, 1) + self.pBlend = self.addParam("blend", "double", 1, 0, 1) self.pFull3BoneIK = self.addParam("full3BonesIK", "double", 1, 0, 1) - self.pIkRefArray = self.addParam("ikrefarray", "string", "") + self.pIkRefArray = self.addParam("ikrefarray", "string", "") self.pUpvRefArray = self.addParam("upvrefarray", "string", "") - self.pMaxStretch = self.addParam("maxstretch", "double", 1.5 , 1, None) - self.pIKSolver = self.addEnumParam("ikSolver", ["IK Spring", "IK Rotation Plane"], 0) - self.pIKOrient = self.addParam("ikOri", "bool", True) + self.pMaxStretch = self.addParam("maxstretch", "double", 1.5, 1, None) + + self.pIKSolver = self.addEnumParam( + "ikSolver", ["IK Spring", "IK Rotation Plane"], 0) + self.pIKOrient = self.addParam("ikOri", "bool", True) # Divisions self.pDiv0 = self.addParam("div0", "long", 2, 1, None) @@ -113,35 +81,41 @@ def addParameters(self): self.pDiv1 = self.addParam("div2", "long", 2, 1, None) # FCurves - self.pSt_profile = self.addFCurveParam("st_profile", [[0,0],[.5,-1],[1,0]]) - self.pSq_profile = self.addFCurveParam("sq_profile", [[0,0],[.5,1],[1,0]]) + self.pSt_profile = self.addFCurveParam( + "st_profile", [[0, 0], [.5, -1], [1, 0]]) + self.pSq_profile = self.addFCurveParam( + "sq_profile", [[0, 0], [.5, 1], [1, 0]]) - self.pUseIndex = self.addParam("useIndex", "bool", False) - self.pParentJointIndex = self.addParam("parentJointIndex", "long", -1, None, None) + self.pUseIndex = self.addParam("useIndex", "bool", False) + + self.pParentJointIndex = self.addParam( + "parentJointIndex", "long", -1, None, None) ########################################################## # Setting Page ########################################################## + class settingsTab(QtWidgets.QDialog, sui.Ui_Form): + """The Component settings UI""" def __init__(self, parent=None): super(settingsTab, self).__init__(parent) self.setupUi(self) -class componentSettings(MayaQWidgetDockableMixin, componentMainSettings): +class componentSettings(MayaQWidgetDockableMixin, guide.componentMainSettings): + """Create the component setting window""" - def __init__(self, parent = None): + def __init__(self, parent=None): self.toolName = TYPE # Delete old instances of the componet settings window. - gqt.deleteInstances(self, MayaQDockWidget) + pyqt.deleteInstances(self, MayaQDockWidget) - super(self.__class__, self).__init__(parent = parent) + super(self.__class__, self).__init__(parent=parent) self.settingsTab = settingsTab() - self.setup_componentSettingWindow() self.create_componentControls() self.populate_componentControls() @@ -149,7 +123,7 @@ def __init__(self, parent = None): self.create_componentConnections() def setup_componentSettingWindow(self): - self.mayaMainWindow = gqt.maya_main_window() + self.mayaMainWindow = pyqt.maya_main_window() self.setObjectName(self.toolName) self.setWindowFlags(QtCore.Qt.Window) @@ -159,22 +133,29 @@ def setup_componentSettingWindow(self): def create_componentControls(self): return - def populate_componentControls(self): - """ - Populate the controls values from the custom attributes of the component. + """Populate the controls values. + + Populate the controls values from the custom attributes of the + component. """ - #populate tab + # populate tab self.tabs.insertTab(1, self.settingsTab, "Component Settings") - #populate component settings - self.settingsTab.ikfk_slider.setValue(int(self.root.attr("blend").get()*100)) - self.settingsTab.ikfk_spinBox.setValue(int(self.root.attr("blend").get()*100)) - self.settingsTab.full3BonesIK_slider.setValue(int(self.root.attr("full3BonesIK").get()*100)) - self.settingsTab.full3BonesIK_spinBox.setValue(int(self.root.attr("full3BonesIK").get()*100)) - self.settingsTab.maxStretch_spinBox.setValue(self.root.attr("maxstretch").get()) - self.settingsTab.ikSolver_comboBox.setCurrentIndex(self.root.attr("ikSolver").get()) + # populate component settings + self.settingsTab.ikfk_slider.setValue( + int(self.root.attr("blend").get() * 100)) + self.settingsTab.ikfk_spinBox.setValue( + int(self.root.attr("blend").get() * 100)) + self.settingsTab.full3BonesIK_slider.setValue( + int(self.root.attr("full3BonesIK").get() * 100)) + self.settingsTab.full3BonesIK_spinBox.setValue( + int(self.root.attr("full3BonesIK").get() * 100)) + self.settingsTab.maxStretch_spinBox.setValue( + self.root.attr("maxstretch").get()) + self.settingsTab.ikSolver_comboBox.setCurrentIndex( + self.root.attr("ikSolver").get()) self.populateCheck(self.settingsTab.neutralRotation_checkBox, "ikOri") self.settingsTab.div0_spinBox.setValue(self.root.attr("div0").get()) self.settingsTab.div1_spinBox.setValue(self.root.attr("div1").get()) @@ -186,7 +167,6 @@ def populate_componentControls(self): for item in upvRefArrayItems: self.settingsTab.upvRefArray_listWidget.addItem(item) - def create_componentLayout(self): self.settings_layout = QtWidgets.QVBoxLayout() @@ -197,28 +177,81 @@ def create_componentLayout(self): def create_componentConnections(self): - self.settingsTab.ikfk_slider.valueChanged.connect(partial(self.updateSlider, self.settingsTab.ikfk_slider, "blend")) - self.settingsTab.ikfk_spinBox.valueChanged.connect(partial(self.updateSlider, self.settingsTab.ikfk_spinBox, "blend")) - self.settingsTab.full3BonesIK_slider.valueChanged.connect(partial(self.updateSlider, self.settingsTab.full3BonesIK_slider, "full3BonesIK")) - self.settingsTab.full3BonesIK_spinBox.valueChanged.connect(partial(self.updateSlider, self.settingsTab.full3BonesIK_spinBox, "full3BonesIK")) - self.settingsTab.maxStretch_spinBox.valueChanged.connect(partial(self.updateSpinBox, self.settingsTab.maxStretch_spinBox, "maxstretch")) - self.settingsTab.ikSolver_comboBox.currentIndexChanged.connect(partial(self.updateComboBox, self.settingsTab.ikSolver_comboBox, "ikSolver")) - self.settingsTab.neutralRotation_checkBox.stateChanged.connect(partial(self.updateCheck, self.settingsTab.neutralRotation_checkBox, "ikOri")) - self.settingsTab.div0_spinBox.valueChanged.connect(partial(self.updateSpinBox, self.settingsTab.div0_spinBox, "div0")) - self.settingsTab.div1_spinBox.valueChanged.connect(partial(self.updateSpinBox, self.settingsTab.div1_spinBox, "div1")) - self.settingsTab.div2_spinBox.valueChanged.connect(partial(self.updateSpinBox, self.settingsTab.div2_spinBox, "div2")) - self.settingsTab.squashStretchProfile_pushButton.clicked.connect(self.setProfile) + self.settingsTab.ikfk_slider.valueChanged.connect( + partial(self.updateSlider, self.settingsTab.ikfk_slider, "blend")) + self.settingsTab.ikfk_spinBox.valueChanged.connect( + partial(self.updateSlider, self.settingsTab.ikfk_spinBox, "blend")) + + self.settingsTab.full3BonesIK_slider.valueChanged.connect( + partial(self.updateSlider, + self.settingsTab.full3BonesIK_slider, + "full3BonesIK")) + + self.settingsTab.full3BonesIK_spinBox.valueChanged.connect( + partial(self.updateSlider, + self.settingsTab.full3BonesIK_spinBox, + "full3BonesIK")) + + self.settingsTab.maxStretch_spinBox.valueChanged.connect( + partial(self.updateSpinBox, + self.settingsTab.maxStretch_spinBox, + "maxstretch")) + + self.settingsTab.ikSolver_comboBox.currentIndexChanged.connect( + partial(self.updateComboBox, + self.settingsTab.ikSolver_comboBox, + "ikSolver")) + + self.settingsTab.neutralRotation_checkBox.stateChanged.connect( + partial(self.updateCheck, + self.settingsTab.neutralRotation_checkBox, + "ikOri")) + + self.settingsTab.div0_spinBox.valueChanged.connect( + partial(self.updateSpinBox, self.settingsTab.div0_spinBox, "div0")) + + self.settingsTab.div1_spinBox.valueChanged.connect( + partial(self.updateSpinBox, self.settingsTab.div1_spinBox, "div1")) + self.settingsTab.div2_spinBox.valueChanged.connect( + partial(self.updateSpinBox, self.settingsTab.div2_spinBox, "div2")) + + self.settingsTab.squashStretchProfile_pushButton.clicked.connect( + self.setProfile) + + self.settingsTab.ikRefArrayAdd_pushButton.clicked.connect( + partial(self.addItem2listWidget, + self.settingsTab.ikRefArray_listWidget, + "ikrefarray")) + + self.settingsTab.ikRefArrayRemove_pushButton.clicked.connect( + partial(self.removeSelectedFromListWidget, + self.settingsTab.ikRefArray_listWidget, + "ikrefarray")) + + self.settingsTab.ikRefArray_copyRef_pushButton.clicked.connect( + partial(self.copyFromListWidget, + self.settingsTab.upvRefArray_listWidget, + self.settingsTab.ikRefArray_listWidget, + "ikrefarray")) + self.settingsTab.ikRefArray_listWidget.installEventFilter(self) + self.settingsTab.upvRefArrayAdd_pushButton.clicked.connect( + partial(self.addItem2listWidget, + self.settingsTab.upvRefArray_listWidget, + "upvrefarray")) - self.settingsTab.ikRefArrayAdd_pushButton.clicked.connect(partial(self.addItem2listWidget, self.settingsTab.ikRefArray_listWidget, "ikrefarray")) - self.settingsTab.ikRefArrayRemove_pushButton.clicked.connect(partial(self.removeSelectedFromListWidget, self.settingsTab.ikRefArray_listWidget, "ikrefarray")) - self.settingsTab.ikRefArray_copyRef_pushButton.clicked.connect(partial(self.copyFromListWidget, self.settingsTab.upvRefArray_listWidget, self.settingsTab.ikRefArray_listWidget, "ikrefarray")) - self.settingsTab.ikRefArray_listWidget.installEventFilter(self) + self.settingsTab.upvRefArrayRemove_pushButton.clicked.connect( + partial(self.removeSelectedFromListWidget, + self.settingsTab.upvRefArray_listWidget, + "upvrefarray")) + + self.settingsTab.upvRefArray_copyRef_pushButton.clicked.connect( + partial(self.copyFromListWidget, + self.settingsTab.ikRefArray_listWidget, + self.settingsTab.upvRefArray_listWidget, + "upvrefarray")) - self.settingsTab.upvRefArrayAdd_pushButton.clicked.connect(partial(self.addItem2listWidget, self.settingsTab.upvRefArray_listWidget, "upvrefarray")) - self.settingsTab.upvRefArrayRemove_pushButton.clicked.connect(partial(self.removeSelectedFromListWidget, self.settingsTab.upvRefArray_listWidget, "upvrefarray")) - self.settingsTab.upvRefArray_copyRef_pushButton.clicked.connect(partial(self.copyFromListWidget, self.settingsTab.ikRefArray_listWidget, self.settingsTab.upvRefArray_listWidget, "upvrefarray")) self.settingsTab.upvRefArray_listWidget.installEventFilter(self) def eventFilter(self, sender, event): @@ -231,7 +264,5 @@ def eventFilter(self, sender, event): else: return QtWidgets.QDialog.eventFilter(self, sender, event) - - def dockCloseEventTriggered(self): - gqt.deleteInstances(self, MayaQDockWidget) + pyqt.deleteInstances(self, MayaQDockWidget) diff --git a/scripts/mgear/maya/shifter/component/leg_ms_2jnt_01/guide.py b/scripts/mgear/maya/shifter/component/leg_ms_2jnt_01/guide.py index 7fb2c18..7013727 100644 --- a/scripts/mgear/maya/shifter/component/leg_ms_2jnt_01/guide.py +++ b/scripts/mgear/maya/shifter/component/leg_ms_2jnt_01/guide.py @@ -1,59 +1,33 @@ -# MGEAR is under the terms of the MIT License +"""Guide Leg MS 2jnt 01 module""" -# Copyright (c) 2016 Jeremie Passerin, Miquel Campos - -# Permission is hereby granted, free of charge, to any person obtaining a copy -# of this software and associated documentation files (the "Software"), to deal -# in the Software without restriction, including without limitation the rights -# to use, copy, modify, merge, publish, distribute, sublicense, and/or sell -# copies of the Software, and to permit persons to whom the Software is -# furnished to do so, subject to the following conditions: - -# The above copyright notice and this permission notice shall be included in all -# copies or substantial portions of the Software. - -# THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR -# IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, -# FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE -# AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER -# LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, -# OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE -# SOFTWARE. - -# Author: Jeremie Passerin geerem@hotmail.com www.jeremiepasserin.com -# Author: Miquel Campos hello@miquel-campos.com www.miquel-campos.com -# Date: 2016 / 10 / 10 - -########################################################## -# GLOBAL -########################################################## from functools import partial -# mgear -from mgear.maya.shifter.component.guide import ComponentGuide -import mgear.maya.transform as tra +from mgear.maya.shifter.component import guide +from mgear.maya import transform, pyqt +from mgear.vendor.Qt import QtWidgets, QtCore -#Pyside -from mgear.maya.shifter.component.guide import componentMainSettings -import mgear.maya.pyqt as gqt from maya.app.general.mayaMixin import MayaQWidgetDockableMixin from maya.app.general.mayaMixin import MayaQDockWidget + import settingsUI as sui -QtGui, QtCore, QtWidgets, wrapInstance = gqt.qt_import() # guide info AUTHOR = "Jeremie Passerin, Miquel Campos, Miles Cheng" URL = "www.jeremiepasserin.com, www.miquletd.com" EMAIL = "geerem@hotmail.com, hello@miquel-campos.com , miles@simage.com.hk" -VERSION = [1,0,0] +VERSION = [1, 0, 0] TYPE = "leg_ms_2jnt_01" NAME = "leg" -DESCRIPTION = "2 bones leg with Maya nodes for roll bones + Simage specification" +DESCRIPTION = "2 bones leg with Maya nodes for roll bones + Simage " \ + "specification" ########################################################## # CLASS ########################################################## -class Guide(ComponentGuide): + + +class Guide(guide.ComponentGuide): + """Component Guide Class""" compType = TYPE compName = NAME @@ -64,52 +38,50 @@ class Guide(ComponentGuide): email = EMAIL version = VERSION - # ===================================================== - ## - # @param self def postInit(self): + """Initialize the position for the guide""" self.save_transform = ["root", "knee", "ankle", "eff"] - # ===================================================== - ## Add more object to the object definition list. - # @param self def addObjects(self): + """Add the Guide Root, blade and locators""" self.root = self.addRoot() - vTemp = tra.getOffsetPosition( self.root, [0,-3,0.1]) + vTemp = transform.getOffsetPosition(self.root, [0, -3, 0.1]) self.knee = self.addLoc("knee", self.root, vTemp) - vTemp = tra.getOffsetPosition( self.root, [0,-6,0]) + vTemp = transform.getOffsetPosition(self.root, [0, -6, 0]) self.ankle = self.addLoc("ankle", self.knee, vTemp) - vTemp = tra.getOffsetPosition( self.root, [0,-6,0.5]) + vTemp = transform.getOffsetPosition(self.root, [0, -6, 0.5]) self.eff = self.addLoc("eff", self.ankle, vTemp) centers = [self.root, self.knee, self.ankle, self.eff] self.dispcrv = self.addDispCurve("crv", centers) - # ===================================================== - ## Add more parameter to the parameter definition list. - # @param self def addParameters(self): + """Add the configurations settings""" # Default Values - self.pBlend = self.addParam("blend", "double", 1, 0, 1) - self.pFkRefArray = self.addParam("fkrefarray", "string", "") - self.pIkRefArray = self.addParam("ikrefarray", "string", "") + self.pBlend = self.addParam("blend", "double", 1, 0, 1) + self.pFkRefArray = self.addParam("fkrefarray", "string", "") + self.pIkRefArray = self.addParam("ikrefarray", "string", "") self.pUpvRefArray = self.addParam("upvrefarray", "string", "") - self.pMaxStretch = self.addParam("maxstretch", "double", 2 , 1, None) - self.pKneeThickness = self.addParam("knee","double",0,0,None) + self.pMaxStretch = self.addParam("maxstretch", "double", 2, 1, None) + self.pKneeThickness = self.addParam("knee", "double", 0, 0, None) # Divisions self.pDiv0 = self.addParam("div0", "long", 3, 1, None) self.pDiv1 = self.addParam("div1", "long", 3, 1, None) # FCurves - self.pSt_profile = self.addFCurveParam("st_profile", [[0,0],[.5,-.5],[1,0]]) - self.pSq_profile = self.addFCurveParam("sq_profile", [[0,0],[.5,.5],[1,0]]) + self.pSt_profile = self.addFCurveParam( + "st_profile", [[0, 0], [.5, -.5], [1, 0]]) + + self.pSq_profile = self.addFCurveParam( + "sq_profile", [[0, 0], [.5, .5], [1, 0]]) - self.pUseIndex = self.addParam("useIndex", "bool", False) - self.pParentJointIndex = self.addParam("parentJointIndex", "long", -1, None, None) + self.pUseIndex = self.addParam("useIndex", "bool", False) + self.pParentJointIndex = self.addParam( + "parentJointIndex", "long", -1, None, None) ########################################################## @@ -117,23 +89,24 @@ def addParameters(self): ########################################################## class settingsTab(QtWidgets.QDialog, sui.Ui_Form): + """The Component settings UI""" def __init__(self, parent=None): super(settingsTab, self).__init__(parent) self.setupUi(self) -class componentSettings(MayaQWidgetDockableMixin, componentMainSettings): +class componentSettings(MayaQWidgetDockableMixin, guide.componentMainSettings): + """Create the component setting window""" - def __init__(self, parent = None): + def __init__(self, parent=None): self.toolName = TYPE # Delete old instances of the componet settings window. - gqt.deleteInstances(self, MayaQDockWidget) + pyqt.deleteInstances(self, MayaQDockWidget) - super(self.__class__, self).__init__(parent = parent) + super(self.__class__, self).__init__(parent=parent) self.settingsTab = settingsTab() - self.setup_componentSettingWindow() self.create_componentControls() self.populate_componentControls() @@ -141,7 +114,7 @@ def __init__(self, parent = None): self.create_componentConnections() def setup_componentSettingWindow(self): - self.mayaMainWindow = gqt.maya_main_window() + self.mayaMainWindow = pyqt.maya_main_window() self.setObjectName(self.toolName) self.setWindowFlags(QtCore.Qt.Window) @@ -151,19 +124,26 @@ def setup_componentSettingWindow(self): def create_componentControls(self): return - def populate_componentControls(self): - """ - Populate the controls values from the custom attributes of the component. + """Populate the controls values. + + Populate the controls values from the custom attributes of the + component. """ - #populate tab + # populate tab self.tabs.insertTab(1, self.settingsTab, "Component Settings") - #populate component settings - self.settingsTab.ikfk_slider.setValue(int(self.root.attr("blend").get()*100)) - self.settingsTab.ikfk_spinBox.setValue(int(self.root.attr("blend").get()*100)) - self.settingsTab.maxStretch_spinBox.setValue(self.root.attr("maxstretch").get()) + # populate component settings + self.settingsTab.ikfk_slider.setValue( + int(self.root.attr("blend").get() * 100)) + + self.settingsTab.ikfk_spinBox.setValue( + int(self.root.attr("blend").get() * 100)) + + self.settingsTab.maxStretch_spinBox.setValue( + self.root.attr("maxstretch").get()) + self.settingsTab.knee_spinBox.setValue(self.root.attr("knee").get()) self.settingsTab.div0_spinBox.setValue(self.root.attr("div0").get()) self.settingsTab.div1_spinBox.setValue(self.root.attr("div1").get()) @@ -178,7 +158,6 @@ def populate_componentControls(self): for item in upvRefArrayItems: self.settingsTab.upvRefArray_listWidget.addItem(item) - def create_componentLayout(self): self.settings_layout = QtWidgets.QVBoxLayout() @@ -189,29 +168,81 @@ def create_componentLayout(self): def create_componentConnections(self): - self.settingsTab.ikfk_slider.valueChanged.connect(partial(self.updateSlider, self.settingsTab.ikfk_slider, "blend")) - self.settingsTab.ikfk_spinBox.valueChanged.connect(partial(self.updateSlider, self.settingsTab.ikfk_spinBox, "blend")) - self.settingsTab.maxStretch_spinBox.valueChanged.connect(partial(self.updateSpinBox, self.settingsTab.maxStretch_spinBox, "maxstretch")) - self.settingsTab.knee_spinBox.valueChanged.connect(partial(self.updateSpinBox, self.settingsTab.knee_spinBox, "knee")) + self.settingsTab.ikfk_slider.valueChanged.connect( + partial(self.updateSlider, self.settingsTab.ikfk_slider, "blend")) + + self.settingsTab.ikfk_spinBox.valueChanged.connect( + partial(self.updateSlider, self.settingsTab.ikfk_spinBox, "blend")) + + self.settingsTab.maxStretch_spinBox.valueChanged.connect( + partial(self.updateSpinBox, + self.settingsTab.maxStretch_spinBox, + "maxstretch")) + + self.settingsTab.knee_spinBox.valueChanged.connect( + partial(self.updateSpinBox, self.settingsTab.knee_spinBox, "knee")) + + self.settingsTab.div0_spinBox.valueChanged.connect( + partial(self.updateSpinBox, self.settingsTab.div0_spinBox, "div0")) + + self.settingsTab.div1_spinBox.valueChanged.connect( + partial(self.updateSpinBox, self.settingsTab.div1_spinBox, "div1")) + + self.settingsTab.squashStretchProfile_pushButton.clicked.connect( + self.setProfile) - self.settingsTab.div0_spinBox.valueChanged.connect(partial(self.updateSpinBox, self.settingsTab.div0_spinBox, "div0")) - self.settingsTab.div1_spinBox.valueChanged.connect(partial(self.updateSpinBox, self.settingsTab.div1_spinBox, "div1")) - self.settingsTab.squashStretchProfile_pushButton.clicked.connect(self.setProfile) + self.settingsTab.fkRefArrayAdd_pushButton.clicked.connect( + partial(self.addItem2listWidget, + self.settingsTab.fkRefArray_listWidget, + "fkrefarray")) + self.settingsTab.fkRefArrayRemove_pushButton.clicked.connect( + partial(self.removeSelectedFromListWidget, + self.settingsTab.fkRefArray_listWidget, + "fkrefarray")) + + self.settingsTab.fkRefArray_copyRef_pushButton.clicked.connect( + partial(self.copyFromListWidget, + self.settingsTab.ikRefArray_listWidget, + self.settingsTab.fkRefArray_listWidget, + "fkrefarray")) - self.settingsTab.fkRefArrayAdd_pushButton.clicked.connect(partial(self.addItem2listWidget, self.settingsTab.fkRefArray_listWidget, "fkrefarray")) - self.settingsTab.fkRefArrayRemove_pushButton.clicked.connect(partial(self.removeSelectedFromListWidget, self.settingsTab.fkRefArray_listWidget, "fkrefarray")) - self.settingsTab.fkRefArray_copyRef_pushButton.clicked.connect(partial(self.copyFromListWidget, self.settingsTab.ikRefArray_listWidget, self.settingsTab.fkRefArray_listWidget, "fkrefarray")) self.settingsTab.fkRefArray_listWidget.installEventFilter(self) - self.settingsTab.ikRefArrayAdd_pushButton.clicked.connect(partial(self.addItem2listWidget, self.settingsTab.ikRefArray_listWidget, "ikrefarray")) - self.settingsTab.ikRefArrayRemove_pushButton.clicked.connect(partial(self.removeSelectedFromListWidget, self.settingsTab.ikRefArray_listWidget, "ikrefarray")) - self.settingsTab.ikRefArray_copyRef_pushButton.clicked.connect(partial(self.copyFromListWidget, self.settingsTab.upvRefArray_listWidget, self.settingsTab.ikRefArray_listWidget, "ikrefarray")) + self.settingsTab.ikRefArrayAdd_pushButton.clicked.connect( + partial(self.addItem2listWidget, + self.settingsTab.ikRefArray_listWidget, + "ikrefarray")) + + self.settingsTab.ikRefArrayRemove_pushButton.clicked.connect( + partial(self.removeSelectedFromListWidget, + self.settingsTab.ikRefArray_listWidget, + "ikrefarray")) + + self.settingsTab.ikRefArray_copyRef_pushButton.clicked.connect( + partial(self.copyFromListWidget, + self.settingsTab.upvRefArray_listWidget, + self.settingsTab.ikRefArray_listWidget, + "ikrefarray")) + self.settingsTab.ikRefArray_listWidget.installEventFilter(self) - self.settingsTab.upvRefArrayAdd_pushButton.clicked.connect(partial(self.addItem2listWidget, self.settingsTab.upvRefArray_listWidget, "upvrefarray")) - self.settingsTab.upvRefArrayRemove_pushButton.clicked.connect(partial(self.removeSelectedFromListWidget, self.settingsTab.upvRefArray_listWidget, "upvrefarray")) - self.settingsTab.upvRefArray_copyRef_pushButton.clicked.connect(partial(self.copyFromListWidget, self.settingsTab.ikRefArray_listWidget, self.settingsTab.upvRefArray_listWidget, "upvrefarray")) + self.settingsTab.upvRefArrayAdd_pushButton.clicked.connect( + partial(self.addItem2listWidget, + self.settingsTab.upvRefArray_listWidget, + "upvrefarray")) + + self.settingsTab.upvRefArrayRemove_pushButton.clicked.connect( + partial(self.removeSelectedFromListWidget, + self.settingsTab.upvRefArray_listWidget, + "upvrefarray")) + + self.settingsTab.upvRefArray_copyRef_pushButton.clicked.connect( + partial(self.copyFromListWidget, + self.settingsTab.ikRefArray_listWidget, + self.settingsTab.upvRefArray_listWidget, + "upvrefarray")) + self.settingsTab.upvRefArray_listWidget.installEventFilter(self) def eventFilter(self, sender, event): @@ -226,6 +257,5 @@ def eventFilter(self, sender, event): else: return QtWidgets.QDialog.eventFilter(self, sender, event) - def dockCloseEventTriggered(self): - gqt.deleteInstances(self, MayaQDockWidget) + pyqt.deleteInstances(self, MayaQDockWidget) diff --git a/scripts/mgear/maya/shifter/component/meta_01/guide.py b/scripts/mgear/maya/shifter/component/meta_01/guide.py index c9d0eee..3a4e046 100644 --- a/scripts/mgear/maya/shifter/component/meta_01/guide.py +++ b/scripts/mgear/maya/shifter/component/meta_01/guide.py @@ -1,50 +1,21 @@ -# MGEAR is under the terms of the MIT License +"""Guide Meta 01 module""" -# Copyright (c) 2016 Jeremie Passerin, Miquel Campos - -# Permission is hereby granted, free of charge, to any person obtaining a copy -# of this software and associated documentation files (the "Software"), to deal -# in the Software without restriction, including without limitation the rights -# to use, copy, modify, merge, publish, distribute, sublicense, and/or sell -# copies of the Software, and to permit persons to whom the Software is -# furnished to do so, subject to the following conditions: - -# The above copyright notice and this permission notice shall be included in all -# copies or substantial portions of the Software. - -# THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR -# IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, -# FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE -# AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER -# LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, -# OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE -# SOFTWARE. - -# Author: Jeremie Passerin geerem@hotmail.com www.jeremiepasserin.com -# Author: Miquel Campos hello@miquel-campos.com www.miquel-campos.com -# Date: 2016 / 10 / 10 - -########################################################## -# GLOBAL -########################################################## from functools import partial -# mgear -from mgear.maya.shifter.component.guide import ComponentGuide +from mgear.maya.shifter.component import guide +from mgear.maya import pyqt +from mgear.vendor.Qt import QtWidgets, QtCore -#Pyside -from mgear.maya.shifter.component.guide import componentMainSettings -import mgear.maya.pyqt as gqt from maya.app.general.mayaMixin import MayaQWidgetDockableMixin from maya.app.general.mayaMixin import MayaQDockWidget + import settingsUI as sui -QtGui, QtCore, QtWidgets, wrapInstance = gqt.qt_import() # guide info AUTHOR = "Jeremie Passerin, Miquel Campos" URL = "www.jeremiepasserin.com, www.miquel-campos.com" EMAIL = "geerem@hotmail.com, hello@miquel-campos.com" -VERSION = [1,0,0] +VERSION = [1, 0, 0] TYPE = "meta_01" NAME = "meta" DESCRIPTION = "metacarpal finger spread." @@ -52,7 +23,10 @@ ########################################################## # CLASS ########################################################## -class Guide(ComponentGuide): + + +class Guide(guide.ComponentGuide): + """Component Guide Class""" compType = TYPE compName = NAME @@ -63,19 +37,14 @@ class Guide(ComponentGuide): email = EMAIL version = VERSION - - # ===================================================== - ## - # @param self def postInit(self): + """Initialize the position for the guide""" self.save_transform = ["root", "#_loc"] self.save_blade = ["blade"] self.addMinMax("#_loc", 1, -1) - # ===================================================== - ## Add more object to the object definition list. - # @param self def addObjects(self): + """Add the Guide Root, blade and locators""" self.root = self.addRoot() self.locs = self.addLocMulti("#_loc", self.root) @@ -85,38 +54,39 @@ def addObjects(self): centers.extend(self.locs) self.dispcrv = self.addDispCurve("crv", centers) - # ===================================================== - ## Add more parameter to the parameter definition list. - # @param self def addParameters(self): - self.pScale = self.addParam("intScale", "bool", True) - self.pRotate = self.addParam("intRotation", "bool", True) - self.pTranslation = self.addParam("intTranslation", "bool", True) - self.pUseIndex = self.addParam("useIndex", "bool", False) - self.pParentJointIndex = self.addParam("parentJointIndex", "long", -1, None, None) + """Add the configurations settings""" + self.pScale = self.addParam("intScale", "bool", True) + self.pRotate = self.addParam("intRotation", "bool", True) + self.pTranslation = self.addParam("intTranslation", "bool", True) + self.pUseIndex = self.addParam("useIndex", "bool", False) + self.pParentJointIndex = self.addParam( + "parentJointIndex", "long", -1, None, None) ########################################################## # Setting Page ########################################################## + class settingsTab(QtWidgets.QDialog, sui.Ui_Form): + """The Component settings UI""" def __init__(self, parent=None): super(settingsTab, self).__init__(parent) self.setupUi(self) -class componentSettings(MayaQWidgetDockableMixin, componentMainSettings): +class componentSettings(MayaQWidgetDockableMixin, guide.componentMainSettings): + """Create the component setting window""" - def __init__(self, parent = None): + def __init__(self, parent=None): self.toolName = TYPE # Delete old instances of the componet settings window. - gqt.deleteInstances(self, MayaQDockWidget) + pyqt.deleteInstances(self, MayaQDockWidget) - super(self.__class__, self).__init__(parent = parent) + super(self.__class__, self).__init__(parent=parent) self.settingsTab = settingsTab() - self.setup_componentSettingWindow() self.create_componentControls() self.populate_componentControls() @@ -124,7 +94,7 @@ def __init__(self, parent = None): self.create_componentConnections() def setup_componentSettingWindow(self): - self.mayaMainWindow = gqt.maya_main_window() + self.mayaMainWindow = pyqt.maya_main_window() self.setObjectName(self.toolName) self.setWindowFlags(QtCore.Qt.Window) @@ -134,21 +104,24 @@ def setup_componentSettingWindow(self): def create_componentControls(self): return - def populate_componentControls(self): - """ - Populate the controls values from the custom attributes of the component. + """Populate the controls values. + + Populate the controls values from the custom attributes of the + component. """ - #populate tab + # populate tab self.tabs.insertTab(1, self.settingsTab, "Component Settings") - #populate component settings - - self.populateCheck(self.settingsTab.intScale_checkBox, "intScale") - self.populateCheck(self.settingsTab.intRotation_checkBox, "intRotation") - self.populateCheck(self.settingsTab.intTranslation_checkBox, "intTranslation") + # populate component settings + self.populateCheck(self.settingsTab.intScale_checkBox, + "intScale") + self.populateCheck(self.settingsTab.intRotation_checkBox, + "intRotation") + self.populateCheck(self.settingsTab.intTranslation_checkBox, + "intTranslation") def create_componentLayout(self): @@ -160,9 +133,19 @@ def create_componentLayout(self): def create_componentConnections(self): - self.settingsTab.intScale_checkBox.stateChanged.connect(partial(self.updateCheck, self.settingsTab.intScale_checkBox, "intScale")) - self.settingsTab.intRotation_checkBox.stateChanged.connect(partial(self.updateCheck, self.settingsTab.intRotation_checkBox, "intRotation")) - self.settingsTab.intTranslation_checkBox.stateChanged.connect(partial(self.updateCheck, self.settingsTab.intTranslation_checkBox, "intTranslation")) + self.settingsTab.intScale_checkBox.stateChanged.connect( + partial(self.updateCheck, + self.settingsTab.intScale_checkBox, + "intScale")) + + self.settingsTab.intRotation_checkBox.stateChanged.connect( + partial(self.updateCheck, + self.settingsTab.intRotation_checkBox, + "intRotation")) + self.settingsTab.intTranslation_checkBox.stateChanged.connect( + partial(self.updateCheck, + self.settingsTab.intTranslation_checkBox, + "intTranslation")) def dockCloseEventTriggered(self): - gqt.deleteInstances(self, MayaQDockWidget) + pyqt.deleteInstances(self, MayaQDockWidget) diff --git a/scripts/mgear/maya/shifter/component/mouth_01/guide.py b/scripts/mgear/maya/shifter/component/mouth_01/guide.py index 4584275..d410d24 100644 --- a/scripts/mgear/maya/shifter/component/mouth_01/guide.py +++ b/scripts/mgear/maya/shifter/component/mouth_01/guide.py @@ -1,49 +1,17 @@ -# MGEAR is under the terms of the MIT License +"""Guide Mouth 01 module""" -# Copyright (c) 2016 Jeremie Passerin, Miquel Campos +from mgear.maya.shifter.component import guide +from mgear.maya import transform, pyqt +from mgear.vendor.Qt import QtWidgets, QtCore -# Permission is hereby granted, free of charge, to any person obtaining a copy -# of this software and associated documentation files (the "Software"), to deal -# in the Software without restriction, including without limitation the rights -# to use, copy, modify, merge, publish, distribute, sublicense, and/or sell -# copies of the Software, and to permit persons to whom the Software is -# furnished to do so, subject to the following conditions: - -# The above copyright notice and this permission notice shall be included in all -# copies or substantial portions of the Software. - -# THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR -# IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, -# FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE -# AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER -# LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, -# OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE -# SOFTWARE. - -# Author: Jeremie Passerin geerem@hotmail.com www.jeremiepasserin.com -# Author: Miquel Campos hello@miquel-campos.com www.miquel-campos.com -# Date: 2016 / 10 / 10 - -########################################################## -# GLOBAL -########################################################## - -# mgear -from mgear.maya.shifter.component.guide import ComponentGuide -import mgear.maya.transform as tra - -#Pyside -from mgear.maya.shifter.component.guide import componentMainSettings -import mgear.maya.pyqt as gqt from maya.app.general.mayaMixin import MayaQWidgetDockableMixin from maya.app.general.mayaMixin import MayaQDockWidget -QtGui, QtCore, QtWidgets, wrapInstance = gqt.qt_import() # guide info AUTHOR = "Jeremie Passerin, Miquel Campos" URL = "www.jeremiepasserin.com, www.miquletd.com" EMAIL = "geerem@hotmail.com, hello@miquel-campos.com" -VERSION = [1,0,0] +VERSION = [1, 0, 0] TYPE = "mouth_01" NAME = "mouth" DESCRIPTION = "mouth lips and jaw" @@ -51,7 +19,10 @@ ########################################################## # CLASS ########################################################## -class Guide(ComponentGuide): + + +class Guide(guide.ComponentGuide): + """Component Guide Class""" compType = TYPE compName = NAME @@ -62,29 +33,22 @@ class Guide(ComponentGuide): email = EMAIL version = VERSION - - # ===================================================== - ## - # @param self def postInit(self): + """Initialize the position for the guide""" self.save_transform = ["root", "rotcenter", "lipup", "liplow", "jaw"] - - - # ===================================================== - ## Add more object to the object definition list. - # @param self def addObjects(self): + """Add the Guide Root, blade and locators""" - #eye guide + # eye guide self.root = self.addRoot() - vTemp = tra.getOffsetPosition( self.root, [0,0,1]) + vTemp = transform.getOffsetPosition(self.root, [0, 0, 1]) self.rotcenter = self.addLoc("rotcenter", self.root, vTemp) - vTemp = tra.getOffsetPosition( self.root, [0,.3,1.3]) + vTemp = transform.getOffsetPosition(self.root, [0, .3, 1.3]) self.lipup = self.addLoc("lipup", self.rotcenter, vTemp) - vTemp = tra.getOffsetPosition( self.root, [0,-.3,1.3]) + vTemp = transform.getOffsetPosition(self.root, [0, -.3, 1.3]) self.liplow = self.addLoc("liplow", self.rotcenter, vTemp) - vTemp = tra.getOffsetPosition( self.root, [0,-2,2]) + vTemp = transform.getOffsetPosition(self.root, [0, -2, 2]) self.jaw = self.addLoc("jaw", self.root, vTemp) centers = [self.root, self.rotcenter] @@ -99,16 +63,12 @@ def addObjects(self): centers = [self.root, self.jaw] self.dispcrv = self.addDispCurve("crv", centers) - - - # ===================================================== - ## Add more parameter to the parameter definition list. - # @param self def addParameters(self): + """Add the configurations settings""" - self.pUseIndex = self.addParam("useIndex", "bool", False) - self.pParentJointIndex = self.addParam("parentJointIndex", "long", -1, None, None) - + self.pUseIndex = self.addParam("useIndex", "bool", False) + self.pParentJointIndex = self.addParam( + "parentJointIndex", "long", -1, None, None) return @@ -118,14 +78,15 @@ def addParameters(self): ########################################################## -class componentSettings(MayaQWidgetDockableMixin, componentMainSettings): +class componentSettings(MayaQWidgetDockableMixin, guide.componentMainSettings): + """Create the component setting window""" - def __init__(self, parent = None): + def __init__(self, parent=None): self.toolName = TYPE # Delete old instances of the componet settings window. - gqt.deleteInstances(self, MayaQDockWidget) + pyqt.deleteInstances(self, MayaQDockWidget) - super(self.__class__, self).__init__(parent = parent) + super(self.__class__, self).__init__(parent=parent) self.setup_componentSettingWindow() self.create_componentControls() @@ -134,7 +95,7 @@ def __init__(self, parent = None): self.create_componentConnections() def setup_componentSettingWindow(self): - self.mayaMainWindow = gqt.maya_main_window() + self.mayaMainWindow = pyqt.maya_main_window() self.setObjectName(self.toolName) self.setWindowFlags(QtCore.Qt.Window) @@ -144,10 +105,11 @@ def setup_componentSettingWindow(self): def create_componentControls(self): return - def populate_componentControls(self): - """ - Populate the controls values from the custom attributes of the component. + """Populate the controls values. + + Populate the controls values from the custom attributes of the + component. """ return @@ -164,4 +126,4 @@ def create_componentConnections(self): return def dockCloseEventTriggered(self): - gqt.deleteInstances(self, MayaQDockWidget) + pyqt.deleteInstances(self, MayaQDockWidget) diff --git a/scripts/mgear/maya/shifter/component/neck_ik_01/guide.py b/scripts/mgear/maya/shifter/component/neck_ik_01/guide.py index 940ae55..3679fc4 100644 --- a/scripts/mgear/maya/shifter/component/neck_ik_01/guide.py +++ b/scripts/mgear/maya/shifter/component/neck_ik_01/guide.py @@ -1,52 +1,21 @@ -# MGEAR is under the terms of the MIT License - -# Copyright (c) 2016 Jeremie Passerin, Miquel Campos - -# Permission is hereby granted, free of charge, to any person obtaining a copy -# of this software and associated documentation files (the "Software"), to deal -# in the Software without restriction, including without limitation the rights -# to use, copy, modify, merge, publish, distribute, sublicense, and/or sell -# copies of the Software, and to permit persons to whom the Software is -# furnished to do so, subject to the following conditions: - -# The above copyright notice and this permission notice shall be included in all -# copies or substantial portions of the Software. - -# THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR -# IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, -# FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE -# AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER -# LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, -# OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE -# SOFTWARE. - -# Author: Jeremie Passerin geerem@hotmail.com www.jeremiepasserin.com -# Author: Miquel Campos hello@miquel-campos.com www.miquel-campos.com -# Date: 2016 / 10 / 10 - -############################################# -# GLOBAL -############################################# +"""Guide Squash 01 module""" + from functools import partial -# mgear -from mgear.maya.shifter.component.guide import ComponentGuide -import mgear.maya.transform as tra -import mgear.maya.vector as vec +from mgear.maya.shifter.component import guide +from mgear.maya import transform, pyqt, vector +from mgear.vendor.Qt import QtWidgets, QtCore -#Pyside -from mgear.maya.shifter.component.guide import componentMainSettings -import mgear.maya.pyqt as gqt from maya.app.general.mayaMixin import MayaQWidgetDockableMixin from maya.app.general.mayaMixin import MayaQDockWidget + import settingsUI as sui -QtGui, QtCore, QtWidgets, wrapInstance = gqt.qt_import() # guide info AUTHOR = "Jeremie Passerin, Miquel Campos" URL = "www.jeremiepasserin.com, www.miquletd.com" EMAIL = "geerem@hotmail.com, hello@miquel-campos.com" -VERSION = [2,0,0] +VERSION = [2, 0, 0] TYPE = "neck_ik_01" NAME = "neck" DESCRIPTION = "Neck ik and FK with optional tangent controls" @@ -54,7 +23,10 @@ ########################################################## # CLASS ########################################################## -class Guide(ComponentGuide): + + +class Guide(guide.ComponentGuide): + """Component Guide Class""" compType = TYPE compName = NAME @@ -65,29 +37,33 @@ class Guide(ComponentGuide): email = EMAIL version = VERSION - # ===================================================== - ## - # @param self def postInit(self): + """Initialize the position for the guide""" self.save_transform = ["root", "tan0", "tan1", "neck", "head", "eff"] self.save_blade = ["blade"] - # ===================================================== - ## Add more object to the object definition list. - # @param self def addObjects(self): + """Add the Guide Root, blade and locators""" self.root = self.addRoot() - vTemp = tra.getOffsetPosition( self.root, [0,1,0]) + vTemp = transform.getOffsetPosition(self.root, [0, 1, 0]) self.neck = self.addLoc("neck", self.root, vTemp) - vTemp = tra.getOffsetPosition( self.root, [0,1.1,0]) + vTemp = transform.getOffsetPosition(self.root, [0, 1.1, 0]) self.head = self.addLoc("head", self.neck, vTemp) - vTemp = tra.getOffsetPosition( self.root, [0,2,0]) + vTemp = transform.getOffsetPosition(self.root, [0, 2, 0]) self.eff = self.addLoc("eff", self.head, vTemp) - v0 = vec.linearlyInterpolate(self.root.getTranslation(space="world"), self.neck.getTranslation(space="world"), .333) + v0 = vector.linearlyInterpolate( + self.root.getTranslation(space="world"), + self.neck.getTranslation(space="world"), + .333) + self.tan0 = self.addLoc("tan0", self.root, v0) - v1 = vec.linearlyInterpolate(self.root.getTranslation(space="world"), self.neck.getTranslation(space="world"), .666) + v1 = vector.linearlyInterpolate( + self.root.getTranslation(space="world"), + self.neck.getTranslation(space="world"), + .666) + self.tan1 = self.addLoc("tan1", self.neck, v1) self.blade = self.addBlade("blade", self.root, self.tan0) @@ -98,14 +74,12 @@ def addObjects(self): centers = [self.neck, self.head, self.eff] self.dispcrv = self.addDispCurve("head_crv", centers, 1) - # ===================================================== - ## Add more parameter to the parameter definition list. - # @param self def addParameters(self): + """Add the configurations settings""" # Ik - self.pHeadRefArray = self.addParam("headrefarray", "string", "") - self.pIkRefArray = self.addParam("ikrefarray", "string", "") + self.pHeadRefArray = self.addParam("headrefarray", "string", "") + self.pIkRefArray = self.addParam("ikrefarray", "string", "") # Default values self.pMaxStretch = self.addParam("maxstretch", "double", 1.5, 1) @@ -116,13 +90,17 @@ def addParameters(self): self.pDivision = self.addParam("division", "long", 5, 3) self.pTangentControls = self.addParam("tangentControls", "bool", False) - # FCurves - self.pSt_profile = self.addFCurveParam("st_profile", [[0,0],[.5,-1],[1,0]]) - self.pSq_profile = self.addFCurveParam("sq_profile", [[0,0],[.5,1],[1,0]]) + self.pSt_profile = self.addFCurveParam( + "st_profile", [[0, 0], [.5, -1], [1, 0]]) - self.pUseIndex = self.addParam("useIndex", "bool", False) - self.pParentJointIndex = self.addParam("parentJointIndex", "long", -1, None, None) + self.pSq_profile = self.addFCurveParam( + "sq_profile", [[0, 0], [.5, 1], [1, 0]]) + + self.pUseIndex = self.addParam("useIndex", "bool", False) + + self.pParentJointIndex = self.addParam( + "parentJointIndex", "long", -1, None, None) ########################################################## @@ -130,23 +108,24 @@ def addParameters(self): ########################################################## class settingsTab(QtWidgets.QDialog, sui.Ui_Form): + """The Component settings UI""" def __init__(self, parent=None): super(settingsTab, self).__init__(parent) self.setupUi(self) -class componentSettings(MayaQWidgetDockableMixin, componentMainSettings): +class componentSettings(MayaQWidgetDockableMixin, guide.componentMainSettings): + """Create the component setting window""" - def __init__(self, parent = None): + def __init__(self, parent=None): self.toolName = TYPE # Delete old instances of the componet settings window. - gqt.deleteInstances(self, MayaQDockWidget) + pyqt.deleteInstances(self, MayaQDockWidget) - super(self.__class__, self).__init__(parent = parent) + super(self.__class__, self).__init__(parent=parent) self.settingsTab = settingsTab() - self.setup_componentSettingWindow() self.create_componentControls() self.populate_componentControls() @@ -154,7 +133,7 @@ def __init__(self, parent = None): self.create_componentConnections() def setup_componentSettingWindow(self): - self.mayaMainWindow = gqt.maya_main_window() + self.mayaMainWindow = pyqt.maya_main_window() self.setObjectName(self.toolName) self.setWindowFlags(QtCore.Qt.Window) @@ -164,22 +143,34 @@ def setup_componentSettingWindow(self): def create_componentControls(self): return - def populate_componentControls(self): - """ - Populate the controls values from the custom attributes of the component. + """Populate the controls values. + + Populate the controls values from the custom attributes of the + component. """ - #populate tab + # populate tab self.tabs.insertTab(1, self.settingsTab, "Component Settings") - #populate component settings - self.settingsTab.softness_slider.setValue(int(self.root.attr("softness").get()*100)) - self.settingsTab.softness_spinBox.setValue(int(self.root.attr("softness").get()*100)) - self.settingsTab.maxStretch_spinBox.setValue(self.root.attr("maxstretch").get()) - self.settingsTab.maxSquash_spinBox.setValue(self.root.attr("maxsquash").get()) - self.settingsTab.division_spinBox.setValue(self.root.attr("division").get()) - self.populateCheck(self.settingsTab.tangentControls_checkBox, "tangentControls") + # populate component settings + self.settingsTab.softness_slider.setValue( + int(self.root.attr("softness").get() * 100)) + + self.settingsTab.softness_spinBox.setValue( + int(self.root.attr("softness").get() * 100)) + + self.settingsTab.maxStretch_spinBox.setValue( + self.root.attr("maxstretch").get()) + + self.settingsTab.maxSquash_spinBox.setValue( + self.root.attr("maxsquash").get()) + + self.settingsTab.division_spinBox.setValue( + self.root.attr("division").get()) + + self.populateCheck(self.settingsTab.tangentControls_checkBox, + "tangentControls") ikRefArrayItems = self.root.attr("ikrefarray").get().split(",") for item in ikRefArrayItems: @@ -188,7 +179,6 @@ def populate_componentControls(self): for item in headRefArrayItems: self.settingsTab.headRefArray_listWidget.addItem(item) - def create_componentLayout(self): self.settings_layout = QtWidgets.QVBoxLayout() @@ -199,22 +189,73 @@ def create_componentLayout(self): def create_componentConnections(self): - self.settingsTab.softness_slider.valueChanged.connect(partial(self.updateSlider, self.settingsTab.softness_slider, "softness")) - self.settingsTab.softness_spinBox.valueChanged.connect(partial(self.updateSlider, self.settingsTab.softness_spinBox, "softness")) - self.settingsTab.maxStretch_spinBox.valueChanged.connect(partial(self.updateSpinBox, self.settingsTab.maxStretch_spinBox, "maxstretch")) - self.settingsTab.maxSquash_spinBox.valueChanged.connect(partial(self.updateSpinBox, self.settingsTab.maxSquash_spinBox, "maxsquash")) - self.settingsTab.division_spinBox.valueChanged.connect(partial(self.updateSpinBox, self.settingsTab.division_spinBox, "division")) - self.settingsTab.tangentControls_checkBox.stateChanged.connect(partial(self.updateCheck, self.settingsTab.tangentControls_checkBox, "tangentControls")) - self.settingsTab.squashStretchProfile_pushButton.clicked.connect(self.setProfile) - - self.settingsTab.ikRefArrayAdd_pushButton.clicked.connect(partial(self.addItem2listWidget, self.settingsTab.ikRefArray_listWidget, "ikrefarray")) - self.settingsTab.ikRefArrayRemove_pushButton.clicked.connect(partial(self.removeSelectedFromListWidget, self.settingsTab.ikRefArray_listWidget, "ikrefarray")) - self.settingsTab.ikRefArray_copyRef_pushButton.clicked.connect(partial(self.copyFromListWidget, self.settingsTab.headRefArray_listWidget, self.settingsTab.ikRefArray_listWidget, "ikrefarray")) + self.settingsTab.softness_slider.valueChanged.connect( + partial(self.updateSlider, + self.settingsTab.softness_slider, + "softness")) + + self.settingsTab.softness_spinBox.valueChanged.connect( + partial(self.updateSlider, + self.settingsTab.softness_spinBox, + "softness")) + + self.settingsTab.maxStretch_spinBox.valueChanged.connect( + partial(self.updateSpinBox, + self.settingsTab.maxStretch_spinBox, + "maxstretch")) + + self.settingsTab.maxSquash_spinBox.valueChanged.connect( + partial(self.updateSpinBox, + self.settingsTab.maxSquash_spinBox, + "maxsquash")) + + self.settingsTab.division_spinBox.valueChanged.connect( + partial(self.updateSpinBox, + self.settingsTab.division_spinBox, + "division")) + + self.settingsTab.tangentControls_checkBox.stateChanged.connect( + partial(self.updateCheck, + self.settingsTab.tangentControls_checkBox, + "tangentControls")) + + self.settingsTab.squashStretchProfile_pushButton.clicked.connect( + self.setProfile) + + self.settingsTab.ikRefArrayAdd_pushButton.clicked.connect( + partial(self.addItem2listWidget, + self.settingsTab.ikRefArray_listWidget, + "ikrefarray")) + + self.settingsTab.ikRefArrayRemove_pushButton.clicked.connect( + partial(self.removeSelectedFromListWidget, + self.settingsTab.ikRefArray_listWidget, + "ikrefarray")) + + self.settingsTab.ikRefArray_copyRef_pushButton.clicked.connect( + partial(self.copyFromListWidget, + self.settingsTab.headRefArray_listWidget, + self.settingsTab.ikRefArray_listWidget, + "ikrefarray")) + self.settingsTab.ikRefArray_listWidget.installEventFilter(self) - self.settingsTab.headRefArrayAdd_pushButton.clicked.connect(partial(self.addItem2listWidget, self.settingsTab.headRefArray_listWidget, "headrefarray")) - self.settingsTab.headRefArrayRemove_pushButton.clicked.connect(partial(self.removeSelectedFromListWidget, self.settingsTab.headRefArray_listWidget, "headrefarray")) - self.settingsTab.headRefArray_copyRef_pushButton.clicked.connect(partial(self.copyFromListWidget, self.settingsTab.ikRefArray_listWidget, self.settingsTab.headRefArray_listWidget, "headrefarray")) + self.settingsTab.headRefArrayAdd_pushButton.clicked.connect( + partial(self.addItem2listWidget, + self.settingsTab.headRefArray_listWidget, + "headrefarray")) + + self.settingsTab.headRefArrayRemove_pushButton.clicked.connect( + partial(self.removeSelectedFromListWidget, + self.settingsTab.headRefArray_listWidget, + "headrefarray")) + + self.settingsTab.headRefArray_copyRef_pushButton.clicked.connect( + partial(self.copyFromListWidget, + self.settingsTab.ikRefArray_listWidget, + self.settingsTab.headRefArray_listWidget, + "headrefarray")) + self.settingsTab.headRefArray_listWidget.installEventFilter(self) def eventFilter(self, sender, event): @@ -227,7 +268,5 @@ def eventFilter(self, sender, event): else: return QtWidgets.QDialog.eventFilter(self, sender, event) - - def dockCloseEventTriggered(self): - gqt.deleteInstances(self, MayaQDockWidget) + pyqt.deleteInstances(self, MayaQDockWidget) diff --git a/scripts/mgear/maya/shifter/component/shoulder_01/guide.py b/scripts/mgear/maya/shifter/component/shoulder_01/guide.py index 9266172..56adaab 100644 --- a/scripts/mgear/maya/shifter/component/shoulder_01/guide.py +++ b/scripts/mgear/maya/shifter/component/shoulder_01/guide.py @@ -1,60 +1,33 @@ -# MGEAR is under the terms of the MIT License +"""Guide Squash 01 module""" -# Copyright (c) 2016 Jeremie Passerin, Miquel Campos - -# Permission is hereby granted, free of charge, to any person obtaining a copy -# of this software and associated documentation files (the "Software"), to deal -# in the Software without restriction, including without limitation the rights -# to use, copy, modify, merge, publish, distribute, sublicense, and/or sell -# copies of the Software, and to permit persons to whom the Software is -# furnished to do so, subject to the following conditions: - -# The above copyright notice and this permission notice shall be included in all -# copies or substantial portions of the Software. - -# THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR -# IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, -# FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE -# AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER -# LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, -# OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE -# SOFTWARE. - -# Author: Jeremie Passerin geerem@hotmail.com www.jeremiepasserin.com -# Author: Miquel Campos hello@miquel-campos.com www.miquel-campos.com -# Date: 2016 / 10 / 10 - -########################################################## -# GLOBAL -########################################################## from functools import partial -# mgear -from mgear.maya.shifter.component.guide import ComponentGuide -import mgear.maya.transform as tra - +from mgear.maya.shifter.component import guide +from mgear.maya import transform, pyqt +from mgear.vendor.Qt import QtWidgets, QtCore -#Pyside -from mgear.maya.shifter.component.guide import componentMainSettings -import mgear.maya.pyqt as gqt from maya.app.general.mayaMixin import MayaQWidgetDockableMixin from maya.app.general.mayaMixin import MayaQDockWidget + import settingsUI as sui -QtGui, QtCore, QtWidgets, wrapInstance = gqt.qt_import() # guide info AUTHOR = "Jeremie Passerin, Miquel Campos" URL = "www.jeremiepasserin.com, www.miquletd.com" EMAIL = "geerem@hotmail.com, hello@miquel-campos.com" -VERSION = [1,0,0] +VERSION = [1, 0, 0] TYPE = "shoulder_01" NAME = "shoulder" -DESCRIPTION = "Simple shoulder with space switch for\n the arm, and Orbit layer for the arm " +DESCRIPTION = "Simple shoulder with space switch for\n the arm, and Orbit " \ + "layer for the arm " ########################################################## # CLASS ########################################################## -class Guide(ComponentGuide): + + +class Guide(guide.ComponentGuide): + """Component Guide Class""" compType = TYPE compName = NAME @@ -65,37 +38,30 @@ class Guide(ComponentGuide): email = EMAIL version = VERSION - - # ===================================================== - ## - # @param self def postInit(self): + """Initialize the position for the guide""" self.save_transform = ["root", "tip"] self.save_blade = ["blade"] - # ===================================================== - ## Add more object to the object definition list. - # @param self def addObjects(self): + """Add the Guide Root, blade and locators""" self.root = self.addRoot() - vTemp = tra.getOffsetPosition( self.root, [2,0,0]) + vTemp = transform.getOffsetPosition(self.root, [2, 0, 0]) self.loc = self.addLoc("tip", self.root, vTemp) self.blade = self.addBlade("blade", self.root, self.loc) centers = [self.root, self.loc] self.dispcrv = self.addDispCurve("crv", centers) - - - # ===================================================== - ## Add more parameter to the parameter definition list. - # @param self def addParameters(self): + """Add the configurations settings""" - self.pRefArray = self.addParam("refArray", "string", "") + self.pRefArray = self.addParam("refArray", "string", "") self.pUseIndex = self.addParam("useIndex", "bool", False) - self.pParentJointIndex = self.addParam("parentJointIndex", "long", -1, None, None) + + self.pParentJointIndex = self.addParam( + "parentJointIndex", "long", -1, None, None) ########################################################## @@ -103,23 +69,24 @@ def addParameters(self): ########################################################## class settingsTab(QtWidgets.QDialog, sui.Ui_Form): + """The Component settings UI""" def __init__(self, parent=None): super(settingsTab, self).__init__(parent) self.setupUi(self) -class componentSettings(MayaQWidgetDockableMixin, componentMainSettings): +class componentSettings(MayaQWidgetDockableMixin, guide.componentMainSettings): + """Create the component setting window""" - def __init__(self, parent = None): + def __init__(self, parent=None): self.toolName = TYPE # Delete old instances of the componet settings window. - gqt.deleteInstances(self, MayaQDockWidget) + pyqt.deleteInstances(self, MayaQDockWidget) - super(self.__class__, self).__init__(parent = parent) + super(self.__class__, self).__init__(parent=parent) self.settingsTab = settingsTab() - self.setup_componentSettingWindow() self.create_componentControls() self.populate_componentControls() @@ -127,7 +94,7 @@ def __init__(self, parent = None): self.create_componentConnections() def setup_componentSettingWindow(self): - self.mayaMainWindow = gqt.maya_main_window() + self.mayaMainWindow = pyqt.maya_main_window() self.setObjectName(self.toolName) self.setWindowFlags(QtCore.Qt.Window) @@ -137,21 +104,21 @@ def setup_componentSettingWindow(self): def create_componentControls(self): return - def populate_componentControls(self): - """ - Populate the controls values from the custom attributes of the component. + """Populate the controls values. + + Populate the controls values from the custom attributes of the + component. """ - #populate tab + # populate tab self.tabs.insertTab(1, self.settingsTab, "Component Settings") - #populate component settings + # populate component settings refArrayItems = self.root.attr("refArray").get().split(",") for item in refArrayItems: self.settingsTab.refArray_listWidget.addItem(item) - def create_componentLayout(self): self.settings_layout = QtWidgets.QVBoxLayout() @@ -162,8 +129,16 @@ def create_componentLayout(self): def create_componentConnections(self): - self.settingsTab.refArrayAdd_pushButton.clicked.connect(partial(self.addItem2listWidget, self.settingsTab.refArray_listWidget, "refArray")) - self.settingsTab.refArrayRemove_pushButton.clicked.connect(partial(self.removeSelectedFromListWidget, self.settingsTab.refArray_listWidget, "refArray")) + self.settingsTab.refArrayAdd_pushButton.clicked.connect( + partial(self.addItem2listWidget, + self.settingsTab.refArray_listWidget, + "refArray")) + + self.settingsTab.refArrayRemove_pushButton.clicked.connect( + partial(self.removeSelectedFromListWidget, + self.settingsTab.refArray_listWidget, + "refArray")) + self.settingsTab.refArray_listWidget.installEventFilter(self) def eventFilter(self, sender, event): @@ -174,6 +149,5 @@ def eventFilter(self, sender, event): else: return QtWidgets.QDialog.eventFilter(self, sender, event) - def dockCloseEventTriggered(self): - gqt.deleteInstances(self, MayaQDockWidget) + pyqt.deleteInstances(self, MayaQDockWidget) diff --git a/scripts/mgear/maya/shifter/component/shoulder_ms_01/guide.py b/scripts/mgear/maya/shifter/component/shoulder_ms_01/guide.py index cded9ed..4f9cbf8 100644 --- a/scripts/mgear/maya/shifter/component/shoulder_ms_01/guide.py +++ b/scripts/mgear/maya/shifter/component/shoulder_ms_01/guide.py @@ -1,49 +1,17 @@ -# MGEAR is under the terms of the MIT License +"""Guide Shoulder MS 01 module""" -# Copyright (c) 2016 Jeremie Passerin, Miquel Campos +from mgear.maya.shifter.component import guide +from mgear.maya import transform, pyqt +from mgear.vendor.Qt import QtWidgets, QtCore -# Permission is hereby granted, free of charge, to any person obtaining a copy -# of this software and associated documentation files (the "Software"), to deal -# in the Software without restriction, including without limitation the rights -# to use, copy, modify, merge, publish, distribute, sublicense, and/or sell -# copies of the Software, and to permit persons to whom the Software is -# furnished to do so, subject to the following conditions: - -# The above copyright notice and this permission notice shall be included in all -# copies or substantial portions of the Software. - -# THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR -# IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, -# FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE -# AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER -# LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, -# OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE -# SOFTWARE. - -# Author: Jeremie Passerin geerem@hotmail.com www.jeremiepasserin.com -# Author: Miquel Campos hello@miquel-campos.com www.miquel-campos.com -# Date: 2016 / 10 / 10 - -########################################################## -# GLOBAL -########################################################## -# mgear -from mgear.maya.shifter.component.guide import ComponentGuide -import mgear.maya.transform as tra - - -#Pyside -from mgear.maya.shifter.component.guide import componentMainSettings -import mgear.maya.pyqt as gqt from maya.app.general.mayaMixin import MayaQWidgetDockableMixin from maya.app.general.mayaMixin import MayaQDockWidget -QtGui, QtCore, QtWidgets, wrapInstance = gqt.qt_import() # guide info AUTHOR = "Jeremie Passerin, Miquel Campos,Miles Cheng" URL = "www.jeremiepasserin.com, www.miquletd.com" EMAIL = "geerem@hotmail.com, hello@miquel-campos.com,milesckt@gmail.com" -VERSION = [1,0,0] +VERSION = [1, 0, 0] TYPE = "shoulder_ms_01" NAME = "shoulder" DESCRIPTION = "shoulder / limb connector use in conjuction with ms_arm/leg " @@ -51,7 +19,10 @@ ########################################################## # CLASS ########################################################## -class Guide(ComponentGuide): + + +class Guide(guide.ComponentGuide): + """Component Guide Class""" compType = TYPE compName = NAME @@ -62,52 +33,44 @@ class Guide(ComponentGuide): email = EMAIL version = VERSION - - # ===================================================== - ## - # @param self def postInit(self): + """Initialize the position for the guide""" self.save_transform = ["root", "tip"] self.save_blade = ["blade"] - # ===================================================== - ## Add more object to the object definition list. - # @param self def addObjects(self): + """Add the Guide Root, blade and locators""" self.root = self.addRoot() - vTemp = tra.getOffsetPosition( self.root, [2,0,0]) + vTemp = transform.getOffsetPosition(self.root, [2, 0, 0]) self.loc = self.addLoc("tip", self.root, vTemp) self.blade = self.addBlade("blade", self.root, self.loc) centers = [self.root, self.loc] self.dispcrv = self.addDispCurve("crv", centers) - - - # ===================================================== - ## Add more parameter to the parameter definition list. - # @param self def addParameters(self): + """Add the configurations settings""" - # self.pRefArray = self.addParam("refArray", "string", "") self.pUseIndex = self.addParam("useIndex", "bool", False) - self.pParentJointIndex = self.addParam("parentJointIndex", "long", -1, None, None) + + self.pParentJointIndex = self.addParam( + "parentJointIndex", "long", -1, None, None) ########################################################## # Setting Page ########################################################## -class componentSettings(MayaQWidgetDockableMixin, componentMainSettings): +class componentSettings(MayaQWidgetDockableMixin, guide.componentMainSettings): + """Create the component setting window""" - def __init__(self, parent = None): + def __init__(self, parent=None): self.toolName = TYPE # Delete old instances of the componet settings window. - gqt.deleteInstances(self, MayaQDockWidget) - - super(self.__class__, self).__init__(parent = parent) + pyqt.deleteInstances(self, MayaQDockWidget) + super(self.__class__, self).__init__(parent=parent) self.setup_componentSettingWindow() self.create_componentControls() @@ -116,7 +79,7 @@ def __init__(self, parent = None): self.create_componentConnections() def setup_componentSettingWindow(self): - self.mayaMainWindow = gqt.maya_main_window() + self.mayaMainWindow = pyqt.maya_main_window() self.setObjectName(self.toolName) self.setWindowFlags(QtCore.Qt.Window) @@ -126,10 +89,11 @@ def setup_componentSettingWindow(self): def create_componentControls(self): return - def populate_componentControls(self): - """ - Populate the controls values from the custom attributes of the component. + """Populate the controls values. + + Populate the controls values from the custom attributes of the + component. """ return @@ -146,4 +110,4 @@ def create_componentConnections(self): return def dockCloseEventTriggered(self): - gqt.deleteInstances(self, MayaQDockWidget) + pyqt.deleteInstances(self, MayaQDockWidget) diff --git a/scripts/mgear/maya/shifter/component/spine_ik_01/guide.py b/scripts/mgear/maya/shifter/component/spine_ik_01/guide.py index 22ce3c1..363f0d5 100644 --- a/scripts/mgear/maya/shifter/component/spine_ik_01/guide.py +++ b/scripts/mgear/maya/shifter/component/spine_ik_01/guide.py @@ -1,51 +1,21 @@ -# MGEAR is under the terms of the MIT License - -# Copyright (c) 2016 Jeremie Passerin, Miquel Campos - -# Permission is hereby granted, free of charge, to any person obtaining a copy -# of this software and associated documentation files (the "Software"), to deal -# in the Software without restriction, including without limitation the rights -# to use, copy, modify, merge, publish, distribute, sublicense, and/or sell -# copies of the Software, and to permit persons to whom the Software is -# furnished to do so, subject to the following conditions: - -# The above copyright notice and this permission notice shall be included in all -# copies or substantial portions of the Software. - -# THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR -# IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, -# FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE -# AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER -# LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, -# OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE -# SOFTWARE. - -# Author: Jeremie Passerin geerem@hotmail.com www.jeremiepasserin.com -# Author: Miquel Campos hello@miquel-campos.com www.miquel-campos.com -# Date: 2016 / 10 / 10 - -############################################# -# GLOBAL -############################################# +"""Guide Spine IK 01 module""" + from functools import partial -# mgear -from mgear.maya.shifter.component.guide import ComponentGuide -import mgear.maya.transform as tra +from mgear.maya.shifter.component import guide +from mgear.maya import transform, pyqt +from mgear.vendor.Qt import QtWidgets, QtCore -#Pyside -from mgear.maya.shifter.component.guide import componentMainSettings -import mgear.maya.pyqt as gqt from maya.app.general.mayaMixin import MayaQWidgetDockableMixin from maya.app.general.mayaMixin import MayaQDockWidget + import settingsUI as sui -QtGui, QtCore, QtWidgets, wrapInstance = gqt.qt_import() # guide info AUTHOR = "Jeremie Passerin, Miquel Campos" URL = "www.jeremiepasserin.com, www.miquel-campos.com" EMAIL = "geerem@hotmail.com, hello@miquel-campos.com" -VERSION = [2,0,0] +VERSION = [2, 0, 0] TYPE = "spine_ik_01" NAME = "spine" DESCRIPTION = """An ik spine with an over top layer of fk controllers @@ -56,7 +26,10 @@ ########################################################## # CLASS ########################################################## -class Guide(ComponentGuide): + + +class Guide(guide.ComponentGuide): + """Component Guide Class""" compType = TYPE compName = NAME @@ -67,30 +40,24 @@ class Guide(ComponentGuide): email = EMAIL version = VERSION - # ===================================================== - ## - # @param self def postInit(self): + """Initialize the position for the guide""" self.save_transform = ["root", "eff"] self.save_blade = ["blade"] - # ===================================================== - ## Add more object to the object definition list. - # @param self def addObjects(self): + """Add the Guide Root, blade and locators""" self.root = self.addRoot() - vTemp = tra.getOffsetPosition( self.root, [0,4,0]) + vTemp = transform.getOffsetPosition(self.root, [0, 4, 0]) self.eff = self.addLoc("eff", self.root, vTemp) self.blade = self.addBlade("blade", self.root, self.eff) centers = [self.root, self.eff] self.dispcrv = self.addDispCurve("crv", centers) - # ===================================================== - ## Add more parameter to the parameter definition list. - # @param self def addParameters(self): + """Add the configurations settings""" # Default values self.pPosition = self.addParam("position", "double", 0, 0, 1) @@ -105,35 +72,41 @@ def addParameters(self): self.pCentralTangent = self.addParam("centralTangent", "bool", False) # FCurves - self.pSt_profile = self.addFCurveParam("st_profile", [[0,0],[.5,-1],[1,0]]) - self.pSq_profile = self.addFCurveParam("sq_profile", [[0,0],[.5,1],[1,0]]) + self.pSt_profile = self.addFCurveParam( + "st_profile", [[0, 0], [.5, -1], [1, 0]]) - self.pUseIndex = self.addParam("useIndex", "bool", False) - self.pParentJointIndex = self.addParam("parentJointIndex", "long", -1, None, None) + self.pSq_profile = self.addFCurveParam( + "sq_profile", [[0, 0], [.5, 1], [1, 0]]) + self.pUseIndex = self.addParam("useIndex", "bool", False) + + self.pParentJointIndex = self.addParam( + "parentJointIndex", "long", -1, None, None) ########################################################## # Setting Page ########################################################## + class settingsTab(QtWidgets.QDialog, sui.Ui_Form): + """The Component settings UI""" def __init__(self, parent=None): super(settingsTab, self).__init__(parent) self.setupUi(self) -class componentSettings(MayaQWidgetDockableMixin, componentMainSettings): +class componentSettings(MayaQWidgetDockableMixin, guide.componentMainSettings): + """Create the component setting window""" - def __init__(self, parent = None): + def __init__(self, parent=None): self.toolName = TYPE # Delete old instances of the componet settings window. - gqt.deleteInstances(self, MayaQDockWidget) + pyqt.deleteInstances(self, MayaQDockWidget) - super(self.__class__, self).__init__(parent = parent) + super(self.__class__, self).__init__(parent=parent) self.settingsTab = settingsTab() - self.setup_componentSettingWindow() self.create_componentControls() self.populate_componentControls() @@ -141,7 +114,7 @@ def __init__(self, parent = None): self.create_componentConnections() def setup_componentSettingWindow(self): - self.mayaMainWindow = gqt.maya_main_window() + self.mayaMainWindow = pyqt.maya_main_window() self.setObjectName(self.toolName) self.setWindowFlags(QtCore.Qt.Window) @@ -151,28 +124,40 @@ def setup_componentSettingWindow(self): def create_componentControls(self): return - def populate_componentControls(self): - """ - Populate the controls values from the custom attributes of the component. + """Populate the controls values. + + Populate the controls values from the custom attributes of the + component. """ - #populate tab + # populate tab self.tabs.insertTab(1, self.settingsTab, "Component Settings") - #populate component settings - self.settingsTab.softness_slider.setValue(int(self.root.attr("softness").get()*100)) - self.settingsTab.position_spinBox.setValue(int(self.root.attr("position").get()*100)) - self.settingsTab.position_slider.setValue(int(self.root.attr("position").get()*100)) - self.settingsTab.lockOri_spinBox.setValue(int(self.root.attr("lock_ori").get()*100)) - self.settingsTab.lockOri_slider.setValue(int(self.root.attr("lock_ori").get()*100)) - self.settingsTab.softness_spinBox.setValue(int(self.root.attr("softness").get()*100)) - self.settingsTab.maxStretch_spinBox.setValue(self.root.attr("maxstretch").get()) - self.settingsTab.maxSquash_spinBox.setValue(self.root.attr("maxsquash").get()) - self.settingsTab.division_spinBox.setValue(self.root.attr("division").get()) + # populate component settings + self.settingsTab.softness_slider.setValue( + int(self.root.attr("softness").get() * 100)) + self.settingsTab.position_spinBox.setValue( + int(self.root.attr("position").get() * 100)) + self.settingsTab.position_slider.setValue( + int(self.root.attr("position").get() * 100)) + self.settingsTab.lockOri_spinBox.setValue( + int(self.root.attr("lock_ori").get() * 100)) + self.settingsTab.lockOri_slider.setValue( + int(self.root.attr("lock_ori").get() * 100)) + self.settingsTab.softness_spinBox.setValue( + int(self.root.attr("softness").get() * 100)) + self.settingsTab.maxStretch_spinBox.setValue( + self.root.attr("maxstretch").get()) + self.settingsTab.maxSquash_spinBox.setValue( + self.root.attr("maxsquash").get()) + self.settingsTab.division_spinBox.setValue( + self.root.attr("division").get()) + self.populateCheck(self.settingsTab.autoBend_checkBox, "autoBend") - self.populateCheck(self.settingsTab.centralTangent_checkBox, "centralTangent") + self.populateCheck(self.settingsTab.centralTangent_checkBox, + "centralTangent") def create_componentLayout(self): @@ -184,20 +169,52 @@ def create_componentLayout(self): def create_componentConnections(self): - self.settingsTab.softness_slider.valueChanged.connect(partial(self.updateSlider, self.settingsTab.softness_slider, "softness")) - self.settingsTab.softness_spinBox.valueChanged.connect(partial(self.updateSlider, self.settingsTab.softness_spinBox, "softness")) - self.settingsTab.position_slider.valueChanged.connect(partial(self.updateSlider, self.settingsTab.position_slider, "position")) - self.settingsTab.position_spinBox.valueChanged.connect(partial(self.updateSlider, self.settingsTab.position_spinBox, "position")) - self.settingsTab.lockOri_slider.valueChanged.connect(partial(self.updateSlider, self.settingsTab.lockOri_slider, "lock_ori")) - self.settingsTab.lockOri_spinBox.valueChanged.connect(partial(self.updateSlider, self.settingsTab.lockOri_spinBox, "lock_ori")) - self.settingsTab.maxStretch_spinBox.valueChanged.connect(partial(self.updateSpinBox, self.settingsTab.maxStretch_spinBox, "maxstretch")) - self.settingsTab.maxSquash_spinBox.valueChanged.connect(partial(self.updateSpinBox, self.settingsTab.maxSquash_spinBox, "maxsquash")) - self.settingsTab.division_spinBox.valueChanged.connect(partial(self.updateSpinBox, self.settingsTab.division_spinBox, "division")) - self.settingsTab.autoBend_checkBox.stateChanged.connect(partial(self.updateCheck, self.settingsTab.autoBend_checkBox, "autoBend")) - self.settingsTab.centralTangent_checkBox.stateChanged.connect(partial(self.updateCheck, self.settingsTab.centralTangent_checkBox, "centralTangent")) - self.settingsTab.squashStretchProfile_pushButton.clicked.connect(self.setProfile) - - + self.settingsTab.softness_slider.valueChanged.connect( + partial(self.updateSlider, + self.settingsTab.softness_slider, + "softness")) + self.settingsTab.softness_spinBox.valueChanged.connect( + partial(self.updateSlider, + self.settingsTab.softness_spinBox, + "softness")) + self.settingsTab.position_slider.valueChanged.connect( + partial(self.updateSlider, + self.settingsTab.position_slider, + "position")) + self.settingsTab.position_spinBox.valueChanged.connect( + partial(self.updateSlider, + self.settingsTab.position_spinBox, + "position")) + self.settingsTab.lockOri_slider.valueChanged.connect( + partial(self.updateSlider, + self.settingsTab.lockOri_slider, + "lock_ori")) + self.settingsTab.lockOri_spinBox.valueChanged.connect( + partial(self.updateSlider, + self.settingsTab.lockOri_spinBox, + "lock_ori")) + self.settingsTab.maxStretch_spinBox.valueChanged.connect( + partial(self.updateSpinBox, + self.settingsTab.maxStretch_spinBox, + "maxstretch")) + self.settingsTab.maxSquash_spinBox.valueChanged.connect( + partial(self.updateSpinBox, + self.settingsTab.maxSquash_spinBox, + "maxsquash")) + self.settingsTab.division_spinBox.valueChanged.connect( + partial(self.updateSpinBox, + self.settingsTab.division_spinBox, + "division")) + self.settingsTab.autoBend_checkBox.stateChanged.connect( + partial(self.updateCheck, + self.settingsTab.autoBend_checkBox, + "autoBend")) + self.settingsTab.centralTangent_checkBox.stateChanged.connect( + partial(self.updateCheck, + self.settingsTab.centralTangent_checkBox, + "centralTangent")) + self.settingsTab.squashStretchProfile_pushButton.clicked.connect( + self.setProfile) def dockCloseEventTriggered(self): - gqt.deleteInstances(self, MayaQDockWidget) + pyqt.deleteInstances(self, MayaQDockWidget) diff --git a/scripts/mgear/maya/shifter/component/spine_ik_02/guide.py b/scripts/mgear/maya/shifter/component/spine_ik_02/guide.py index ad360dc..ef98b3e 100644 --- a/scripts/mgear/maya/shifter/component/spine_ik_02/guide.py +++ b/scripts/mgear/maya/shifter/component/spine_ik_02/guide.py @@ -1,54 +1,25 @@ -# MGEAR is under the terms of the MIT License - -# Copyright (c) 2016 Jeremie Passerin, Miquel Campos - -# Permission is hereby granted, free of charge, to any person obtaining a copy -# of this software and associated documentation files (the "Software"), to deal -# in the Software without restriction, including without limitation the rights -# to use, copy, modify, merge, publish, distribute, sublicense, and/or sell -# copies of the Software, and to permit persons to whom the Software is -# furnished to do so, subject to the following conditions: - -# The above copyright notice and this permission notice shall be included in all -# copies or substantial portions of the Software. - -# THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR -# IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, -# FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE -# AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER -# LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, -# OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE -# SOFTWARE. - -# Author: Jeremie Passerin geerem@hotmail.com www.jeremiepasserin.com -# Author: Miquel Campos hello@miquel-campos.com www.miquel-campos.com -# Date: 2016 / 10 / 10 - -############################################# -# GLOBAL -############################################# +"""Guide Spine IK 02 module""" + from functools import partial -# mgear -from mgear.maya.shifter.component.guide import ComponentGuide -import mgear.maya.transform as tra +from mgear.maya.shifter.component import guide +from mgear.maya import transform, pyqt +from mgear.vendor.Qt import QtWidgets, QtCore -#Pyside -from mgear.maya.shifter.component.guide import componentMainSettings -import mgear.maya.pyqt as gqt from maya.app.general.mayaMixin import MayaQWidgetDockableMixin from maya.app.general.mayaMixin import MayaQDockWidget + import settingsUI as sui -QtGui, QtCore, QtWidgets, wrapInstance = gqt.qt_import() # guide info AUTHOR = "Jeremie Passerin, Miquel Campos" URL = "www.jeremiepasserin.com, www.miquel-campos.com" EMAIL = "geerem@hotmail.com, hello@miquel-campos.com" -VERSION = [2,0,0] +VERSION = [2, 0, 0] TYPE = "spine_ik_02" NAME = "spine" -DESCRIPTION = """This version have an extra hip joint. An ik spine with an over top layer of fk controllers +DESCRIPTION = """This version have an extra hip joint. An ik spine with an +over top layer of fk controllers that follow the ik position. Optional auto bend ik control and central tangent control. """ @@ -56,7 +27,10 @@ ########################################################## # CLASS ########################################################## -class Guide(ComponentGuide): + + +class Guide(guide.ComponentGuide): + """Component Guide Class""" compType = TYPE compName = NAME @@ -67,30 +41,24 @@ class Guide(ComponentGuide): email = EMAIL version = VERSION - # ===================================================== - ## - # @param self def postInit(self): + """Initialize the position for the guide""" self.save_transform = ["root", "eff"] self.save_blade = ["blade"] - # ===================================================== - ## Add more object to the object definition list. - # @param self def addObjects(self): + """Add the Guide Root, blade and locators""" self.root = self.addRoot() - vTemp = tra.getOffsetPosition( self.root, [0,4,0]) + vTemp = transform.getOffsetPosition(self.root, [0, 4, 0]) self.eff = self.addLoc("eff", self.root, vTemp) self.blade = self.addBlade("blade", self.root, self.eff) centers = [self.root, self.eff] self.dispcrv = self.addDispCurve("crv", centers) - # ===================================================== - ## Add more parameter to the parameter definition list. - # @param self def addParameters(self): + """Add the configurations settings""" # Default values self.pPosition = self.addParam("position", "double", 0, 0, 1) @@ -105,11 +73,16 @@ def addParameters(self): self.pCentralTangent = self.addParam("centralTangent", "bool", False) # FCurves - self.pSt_profile = self.addFCurveParam("st_profile", [[0,0],[.5,-1],[1,0]]) - self.pSq_profile = self.addFCurveParam("sq_profile", [[0,0],[.5,1],[1,0]]) + self.pSt_profile = self.addFCurveParam( + "st_profile", [[0, 0], [.5, -1], [1, 0]]) - self.pUseIndex = self.addParam("useIndex", "bool", False) - self.pParentJointIndex = self.addParam("parentJointIndex", "long", -1, None, None) + self.pSq_profile = self.addFCurveParam( + "sq_profile", [[0, 0], [.5, 1], [1, 0]]) + + self.pUseIndex = self.addParam("useIndex", "bool", False) + + self.pParentJointIndex = self.addParam( + "parentJointIndex", "long", -1, None, None) ########################################################## @@ -117,23 +90,24 @@ def addParameters(self): ########################################################## class settingsTab(QtWidgets.QDialog, sui.Ui_Form): + """The Component settings UI""" def __init__(self, parent=None): super(settingsTab, self).__init__(parent) self.setupUi(self) -class componentSettings(MayaQWidgetDockableMixin, componentMainSettings): +class componentSettings(MayaQWidgetDockableMixin, guide.componentMainSettings): + """Create the component setting window""" - def __init__(self, parent = None): + def __init__(self, parent=None): self.toolName = TYPE # Delete old instances of the componet settings window. - gqt.deleteInstances(self, MayaQDockWidget) + pyqt.deleteInstances(self, MayaQDockWidget) - super(self.__class__, self).__init__(parent = parent) + super(self.__class__, self).__init__(parent=parent) self.settingsTab = settingsTab() - self.setup_componentSettingWindow() self.create_componentControls() self.populate_componentControls() @@ -141,7 +115,7 @@ def __init__(self, parent = None): self.create_componentConnections() def setup_componentSettingWindow(self): - self.mayaMainWindow = gqt.maya_main_window() + self.mayaMainWindow = pyqt.maya_main_window() self.setObjectName(self.toolName) self.setWindowFlags(QtCore.Qt.Window) @@ -151,28 +125,39 @@ def setup_componentSettingWindow(self): def create_componentControls(self): return - def populate_componentControls(self): - """ - Populate the controls values from the custom attributes of the component. + """Populate the controls values. + + Populate the controls values from the custom attributes of the + component. """ - #populate tab + # populate tab self.tabs.insertTab(1, self.settingsTab, "Component Settings") - #populate component settings - self.settingsTab.softness_slider.setValue(int(self.root.attr("softness").get()*100)) - self.settingsTab.position_spinBox.setValue(int(self.root.attr("position").get()*100)) - self.settingsTab.position_slider.setValue(int(self.root.attr("position").get()*100)) - self.settingsTab.lockOri_spinBox.setValue(int(self.root.attr("lock_ori").get()*100)) - self.settingsTab.lockOri_slider.setValue(int(self.root.attr("lock_ori").get()*100)) - self.settingsTab.softness_spinBox.setValue(int(self.root.attr("softness").get()*100)) - self.settingsTab.maxStretch_spinBox.setValue(self.root.attr("maxstretch").get()) - self.settingsTab.maxSquash_spinBox.setValue(self.root.attr("maxsquash").get()) - self.settingsTab.division_spinBox.setValue(self.root.attr("division").get()) + # populate component settings + self.settingsTab.softness_slider.setValue( + int(self.root.attr("softness").get() * 100)) + self.settingsTab.position_spinBox.setValue( + int(self.root.attr("position").get() * 100)) + self.settingsTab.position_slider.setValue( + int(self.root.attr("position").get() * 100)) + self.settingsTab.lockOri_spinBox.setValue( + int(self.root.attr("lock_ori").get() * 100)) + self.settingsTab.lockOri_slider.setValue( + int(self.root.attr("lock_ori").get() * 100)) + self.settingsTab.softness_spinBox.setValue( + int(self.root.attr("softness").get() * 100)) + self.settingsTab.maxStretch_spinBox.setValue( + self.root.attr("maxstretch").get()) + self.settingsTab.maxSquash_spinBox.setValue( + self.root.attr("maxsquash").get()) + self.settingsTab.division_spinBox.setValue( + self.root.attr("division").get()) self.populateCheck(self.settingsTab.autoBend_checkBox, "autoBend") - self.populateCheck(self.settingsTab.centralTangent_checkBox, "centralTangent") + self.populateCheck(self.settingsTab.centralTangent_checkBox, + "centralTangent") def create_componentLayout(self): @@ -184,20 +169,52 @@ def create_componentLayout(self): def create_componentConnections(self): - self.settingsTab.softness_slider.valueChanged.connect(partial(self.updateSlider, self.settingsTab.softness_slider, "softness")) - self.settingsTab.softness_spinBox.valueChanged.connect(partial(self.updateSlider, self.settingsTab.softness_spinBox, "softness")) - self.settingsTab.position_slider.valueChanged.connect(partial(self.updateSlider, self.settingsTab.position_slider, "position")) - self.settingsTab.position_spinBox.valueChanged.connect(partial(self.updateSlider, self.settingsTab.position_spinBox, "position")) - self.settingsTab.lockOri_slider.valueChanged.connect(partial(self.updateSlider, self.settingsTab.lockOri_slider, "lock_ori")) - self.settingsTab.lockOri_spinBox.valueChanged.connect(partial(self.updateSlider, self.settingsTab.lockOri_spinBox, "lock_ori")) - self.settingsTab.maxStretch_spinBox.valueChanged.connect(partial(self.updateSpinBox, self.settingsTab.maxStretch_spinBox, "maxstretch")) - self.settingsTab.maxSquash_spinBox.valueChanged.connect(partial(self.updateSpinBox, self.settingsTab.maxSquash_spinBox, "maxsquash")) - self.settingsTab.division_spinBox.valueChanged.connect(partial(self.updateSpinBox, self.settingsTab.division_spinBox, "division")) - self.settingsTab.autoBend_checkBox.stateChanged.connect(partial(self.updateCheck, self.settingsTab.autoBend_checkBox, "autoBend")) - self.settingsTab.centralTangent_checkBox.stateChanged.connect(partial(self.updateCheck, self.settingsTab.centralTangent_checkBox, "centralTangent")) - self.settingsTab.squashStretchProfile_pushButton.clicked.connect(self.setProfile) - - + self.settingsTab.softness_slider.valueChanged.connect( + partial(self.updateSlider, + self.settingsTab.softness_slider, + "softness")) + self.settingsTab.softness_spinBox.valueChanged.connect( + partial(self.updateSlider, + self.settingsTab.softness_spinBox, + "softness")) + self.settingsTab.position_slider.valueChanged.connect( + partial(self.updateSlider, + self.settingsTab.position_slider, + "position")) + self.settingsTab.position_spinBox.valueChanged.connect( + partial(self.updateSlider, + self.settingsTab.position_spinBox, + "position")) + self.settingsTab.lockOri_slider.valueChanged.connect( + partial(self.updateSlider, + self.settingsTab.lockOri_slider, + "lock_ori")) + self.settingsTab.lockOri_spinBox.valueChanged.connect( + partial(self.updateSlider, + self.settingsTab.lockOri_spinBox, + "lock_ori")) + self.settingsTab.maxStretch_spinBox.valueChanged.connect( + partial(self.updateSpinBox, + self.settingsTab.maxStretch_spinBox, + "maxstretch")) + self.settingsTab.maxSquash_spinBox.valueChanged.connect( + partial(self.updateSpinBox, + self.settingsTab.maxSquash_spinBox, + "maxsquash")) + self.settingsTab.division_spinBox.valueChanged.connect( + partial(self.updateSpinBox, + self.settingsTab.division_spinBox, + "division")) + self.settingsTab.autoBend_checkBox.stateChanged.connect( + partial(self.updateCheck, + self.settingsTab.autoBend_checkBox, + "autoBend")) + self.settingsTab.centralTangent_checkBox.stateChanged.connect( + partial(self.updateCheck, + self.settingsTab.centralTangent_checkBox, + "centralTangent")) + self.settingsTab.squashStretchProfile_pushButton.clicked.connect( + self.setProfile) def dockCloseEventTriggered(self): - gqt.deleteInstances(self, MayaQDockWidget) + pyqt.deleteInstances(self, MayaQDockWidget) diff --git a/scripts/mgear/maya/shifter/component/squash4Sides_01/guide.py b/scripts/mgear/maya/shifter/component/squash4Sides_01/guide.py index 63977d6..57458c4 100644 --- a/scripts/mgear/maya/shifter/component/squash4Sides_01/guide.py +++ b/scripts/mgear/maya/shifter/component/squash4Sides_01/guide.py @@ -1,61 +1,33 @@ -# MGEAR is under the terms of the MIT License +"""Guide Squash 4 Sides 01 module""" -# Copyright (c) 2016 Jeremie Passerin, Miquel Campos - -# Permission is hereby granted, free of charge, to any person obtaining a copy -# of this software and associated documentation files (the "Software"), to deal -# in the Software without restriction, including without limitation the rights -# to use, copy, modify, merge, publish, distribute, sublicense, and/or sell -# copies of the Software, and to permit persons to whom the Software is -# furnished to do so, subject to the following conditions: - -# The above copyright notice and this permission notice shall be included in all -# copies or substantial portions of the Software. - -# THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR -# IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, -# FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE -# AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER -# LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, -# OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE -# SOFTWARE. - -# Author: Jeremie Passerin geerem@hotmail.com www.jeremiepasserin.com -# Author: Miquel Campos hello@miquel-campos.com www.miquel-campos.com -# Date: 2016 / 10 / 10 - -########################################################## -# GLOBAL -########################################################## from functools import partial +from mgear.maya.shifter.component import guide +from mgear.maya import transform, pyqt +from mgear.vendor.Qt import QtWidgets, QtCore -# mgear -from mgear.maya.shifter.component.guide import ComponentGuide -import mgear.maya.transform as tra -import settingsUI as sui - - -#Pyside -from mgear.maya.shifter.component.guide import componentMainSettings -import mgear.maya.pyqt as gqt from maya.app.general.mayaMixin import MayaQWidgetDockableMixin from maya.app.general.mayaMixin import MayaQDockWidget -QtGui, QtCore, QtWidgets, wrapInstance = gqt.qt_import() + +import settingsUI as sui # guide info AUTHOR = "Miquel Campos" URL = "www.miquel-campos.com" EMAIL = "hello@miquel-campos.com" -VERSION = [1,0,0] +VERSION = [1, 0, 0] TYPE = "squash4Sides_01" NAME = "squash4Sides" -DESCRIPTION = "Squash4Sides component. NOTE: this component use the full rotation of the root." +DESCRIPTION = "Squash4Sides component. NOTE: this component use the full " \ + "rotation of the root." ########################################################## # CLASS ########################################################## -class Guide(ComponentGuide): + + +class Guide(guide.ComponentGuide): + """Component Guide Class""" compType = TYPE compName = NAME @@ -66,73 +38,69 @@ class Guide(ComponentGuide): email = EMAIL version = VERSION - - # ===================================================== - ## - # @param self def postInit(self): + """Initialize the position for the guide""" self.save_transform = ["root", "top", "bottom", "ext", "int"] - # ===================================================== - ## Add more object to the object definition list. - # @param self def addObjects(self): + """Add the Guide Root, blade and locators""" self.root = self.addRoot() - vTemp = tra.getOffsetPosition( self.root, [0,1,0]) + vTemp = transform.getOffsetPosition(self.root, [0, 1, 0]) self.top_loc = self.addLoc("top", self.root, vTemp) centers = [self.root, self.top_loc] self.dispcrv = self.addDispCurve("crv", centers) - vTemp = tra.getOffsetPosition( self.root, [0,-1,0]) + vTemp = transform.getOffsetPosition(self.root, [0, -1, 0]) self.bottom_loc = self.addLoc("bottom", self.root, vTemp) centers = [self.root, self.bottom_loc] self.dispcrv = self.addDispCurve("crv", centers) - vTemp = tra.getOffsetPosition( self.root, [1,0,0]) + vTemp = transform.getOffsetPosition(self.root, [1, 0, 0]) self.ext_loc = self.addLoc("ext", self.root, vTemp) centers = [self.root, self.ext_loc] self.dispcrv = self.addDispCurve("crv", centers) - vTemp = tra.getOffsetPosition( self.root, [-1,0,0]) + vTemp = transform.getOffsetPosition(self.root, [-1, 0, 0]) self.int_loc = self.addLoc("int", self.root, vTemp) centers = [self.root, self.int_loc] self.dispcrv = self.addDispCurve("crv", centers) - - - # ===================================================== - ## Add more parameter to the parameter definition list. - # @param self def addParameters(self): + """Add the configurations settings""" - self.pRefArray = self.addParam("ikrefarray", "string", "") + self.pRefArray = self.addParam("ikrefarray", "string", "") self.pUseIndex = self.addParam("useIndex", "bool", False) - self.pParentJointIndex = self.addParam("parentJointIndex", "long", -1, None, None) + + self.pParentJointIndex = self.addParam( + "parentJointIndex", "long", -1, None, None) + self.pJoint = self.addParam("joint", "bool", True) ########################################################## # Setting Page ########################################################## + class settingsTab(QtWidgets.QDialog, sui.Ui_Form): + """The Component settings UI""" def __init__(self, parent=None): super(settingsTab, self).__init__(parent) self.setupUi(self) -class componentSettings(MayaQWidgetDockableMixin, componentMainSettings): +class componentSettings(MayaQWidgetDockableMixin, guide.componentMainSettings): + """Create the component setting window""" - def __init__(self, parent = None): + def __init__(self, parent=None): self.toolName = TYPE # Delete old instances of the componet settings window. - gqt.deleteInstances(self, MayaQDockWidget) + pyqt.deleteInstances(self, MayaQDockWidget) - super(self.__class__, self).__init__(parent = parent) + super(self.__class__, self).__init__(parent=parent) self.settingsTab = settingsTab() - self.setup_componentSettingWindow() self.create_componentControls() self.populate_componentControls() @@ -140,7 +108,7 @@ def __init__(self, parent = None): self.create_componentConnections() def setup_componentSettingWindow(self): - self.mayaMainWindow = gqt.maya_main_window() + self.mayaMainWindow = pyqt.maya_main_window() self.setObjectName(self.toolName) self.setWindowFlags(QtCore.Qt.Window) @@ -151,11 +119,13 @@ def create_componentControls(self): return def populate_componentControls(self): - """ - Populate the controls values from the custom attributes of the component. + """Populate the controls values. + + Populate the controls values from the custom attributes of the + component. """ - #populate tab + # populate tab self.tabs.insertTab(1, self.settingsTab, "Component Settings") refArrayItems = self.root.attr("ikrefarray").get().split(",") @@ -172,8 +142,14 @@ def create_componentLayout(self): def create_componentConnections(self): - self.settingsTab.refArrayAdd_pushButton.clicked.connect(partial(self.addItem2listWidget, self.settingsTab.refArray_listWidget, "ikrefarray")) - self.settingsTab.refArrayRemove_pushButton.clicked.connect(partial(self.removeSelectedFromListWidget, self.settingsTab.refArray_listWidget, "ikrefarray")) + self.settingsTab.refArrayAdd_pushButton.clicked.connect( + partial(self.addItem2listWidget, + self.settingsTab.refArray_listWidget, + "ikrefarray")) + self.settingsTab.refArrayRemove_pushButton.clicked.connect( + partial(self.removeSelectedFromListWidget, + self.settingsTab.refArray_listWidget, + "ikrefarray")) self.settingsTab.refArray_listWidget.installEventFilter(self) def eventFilter(self, sender, event): @@ -185,4 +161,4 @@ def eventFilter(self, sender, event): return QtWidgets.QDialog.eventFilter(self, sender, event) def dockCloseEventTriggered(self): - gqt.deleteInstances(self, MayaQDockWidget) + pyqt.deleteInstances(self, MayaQDockWidget) diff --git a/scripts/mgear/maya/shifter/component/squash_01/guide.py b/scripts/mgear/maya/shifter/component/squash_01/guide.py index 17fac49..f26f712 100644 --- a/scripts/mgear/maya/shifter/component/squash_01/guide.py +++ b/scripts/mgear/maya/shifter/component/squash_01/guide.py @@ -54,9 +54,6 @@ def addObjects(self): centers = [self.root, self.loc] self.dispcrv = self.addDispCurve("crv", centers) - # ===================================================== - # Add more parameter to the parameter definition list. - # @param self def addParameters(self): """Add the configurations settings""" From b37611f73a5d8c6fb1c936c3f72f1a66a37d31f2 Mon Sep 17 00:00:00 2001 From: miquelcampos Date: Fri, 24 Nov 2017 13:08:06 +0900 Subject: [PATCH 086/134] PEP8 #100: mGear: Base modules refactor --- scripts/mgear/__init__.py | 108 +++++++++++++---------------------- scripts/mgear/__init__.py.in | 108 +++++++++++++---------------------- scripts/mgear/string.py | 62 +++++++------------- scripts/mgear/widgets.py | 80 ++++++++++++-------------- 4 files changed, 134 insertions(+), 224 deletions(-) diff --git a/scripts/mgear/__init__.py b/scripts/mgear/__init__.py index 0ee8c41..cee48ba 100644 --- a/scripts/mgear/__init__.py +++ b/scripts/mgear/__init__.py @@ -1,37 +1,5 @@ -# MGEAR is under the terms of the MIT License +"""mGear init module""" -# Copyright (c) 2016 Jeremie Passerin, Miquel Campos - -# Permission is hereby granted, free of charge, to any person obtaining a copy -# of this software and associated documentation files (the "Software"), to deal -# in the Software without restriction, including without limitation the rights -# to use, copy, modify, merge, publish, distribute, sublicense, and/or sell -# copies of the Software, and to permit persons to whom the Software is -# furnished to do so, subject to the following conditions: - -# The above copyright notice and this permission notice shall be included in all -# copies or substantial portions of the Software. - -# THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR -# IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, -# FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE -# AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER -# LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, -# OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE -# SOFTWARE. - -# Author: Jeremie Passerin geerem@hotmail.com www.jeremiepasserin.com -# Author: Miquel Campos hello@miquel-campos.com www.miquel-campos.com -# Date: 2016 / 10 / 10 - -""" -mGear init module. -""" - -########################################################## -# GLOBAL -########################################################## -# built-in import os import sys import exceptions @@ -50,31 +18,28 @@ # gear version VERSION = [2, 2, 5] - ########################################################## # METHODS ########################################################## + def logInfos(): - """ - Log version of Gear - """ + """Log version of Gear""" print "GEAR version : " + getVersion() def getVersion(): - """ - Get mGear version + """Get mGear version Returns: mgear version + """ return ".".join([str(i) for i in VERSION]) def reloadModule(name="mgear", *args): - """ - Reload a module and its sub-modules from a given module name. + """Reload a module and its sub-modules from a given module name. Args: name (str): Module Name. Default value is "mgear". @@ -91,12 +56,12 @@ def reloadModule(name="mgear", *args): def __reloadRecursive(path, parentName): - """ - search subfolders recursive + """search subfolders recursive Args: path (str): Path to search subfolder recursive parentName (str): parent name + """ for root, dirs, files in os.walk(path, True, None): @@ -106,37 +71,38 @@ def __reloadRecursive(path, parentName): if sfile == "__init__.py": name = parentName else: - name = parentName+"."+sfile[:-3] + name = parentName + "." + sfile[:-3] - log("reload : %s"%name) + log("reload : %s" % name) try: module = __import__(name, globals(), locals(), ["*"], -1) reload(module) - except ImportError, e: + except ImportError as e: for arg in e.args: log(arg, sev_error) - except Exception, e: + except Exception as e: for arg in e.args: log(arg, sev_error) # Now reload sub modules for dirName in dirs: - __reloadRecursive(path+"/"+dirName, parentName+"."+dirName) + __reloadRecursive(path + "/" + dirName, parentName + "." + dirName) break ########################################################## # LOGGER ########################################################## + def setDebug(b): - """ - Set the debug mode to given value. + """Set the debug mode to given value. Args: b (bool): boolean Returns: bool: The previous value of the debug mode + """ global logDebug original_value = logDebug @@ -145,11 +111,11 @@ def setDebug(b): def toggleDebug(): - """ - Toggle the debug mode value. + """Toggle the debug mode value. Returns; bool: The new debug mode value. + """ global logDebug logDebug = not logDebug @@ -157,8 +123,7 @@ def toggleDebug(): def log(message, severity=sev_comment, infos=False): - """ - Log a message using severity and additional info from the file itself. + """Log a message using severity and additional info from the file itself. Severity has been taken from Softimage one: * 1. Fatal @@ -171,23 +136,27 @@ def log(message, severity=sev_comment, infos=False): Args: messages(str): The message severity (int): Severity level. - infos (bool): Add extra infos from the module, class, method and line number. + infos (bool): Add extra infos from the module, class, method and + line number. + """ message = str(message) if infos or logDebug: - message = getInfos(1) +"\n"+ message + message = getInfos(1) + "\n" + message sys.stdout.write(message + "\n") # ======================================================== -## Exception +# Exception + + class FakeException(exceptions.Exception): pass + def getInfos(level): - """ - Get information from where the method has been fired. + """Get information from where the method has been fired. Such as module name, method, line number... Args: @@ -195,17 +164,18 @@ def getInfos(level): Returns: str: The info + """ try: raise FakeException("this is fake") - except Exception, e: - #get the current execution frame + except Exception: + # get the current execution frame f = sys.exc_info()[2].tb_frame - #go back as many call-frames as was specified + # go back as many call-frames as was specified while level >= 0: f = f.f_back - level = level-1 + level = level - 1 infos = "" @@ -215,22 +185,22 @@ def getInfos(level): infos += moduleName + " | " # Class Name - #if there is a self variable in the caller's local namespace then - #we'll make the assumption that the caller is a class method + # if there is a self variable in the caller's local namespace then + # we'll make the assumption that the caller is a class method obj = f.f_locals.get("self", None) if obj: - infos += obj.__class__.__name__+"::" + infos += obj.__class__.__name__ + "::" # Function Name functionName = f.f_code.co_name if functionName != "": - infos += functionName+"()" + infos += functionName + "()" # Line Number lineNumber = str(f.f_lineno) - infos += " line "+lineNumber+"" + infos += " line " + lineNumber + "" if infos: - infos = "["+infos+"]" + infos = "[" + infos + "]" return infos diff --git a/scripts/mgear/__init__.py.in b/scripts/mgear/__init__.py.in index 1935366..b2ee490 100644 --- a/scripts/mgear/__init__.py.in +++ b/scripts/mgear/__init__.py.in @@ -1,37 +1,5 @@ -# MGEAR is under the terms of the MIT License +"""mGear init module""" -# Copyright (c) 2016 Jeremie Passerin, Miquel Campos - -# Permission is hereby granted, free of charge, to any person obtaining a copy -# of this software and associated documentation files (the "Software"), to deal -# in the Software without restriction, including without limitation the rights -# to use, copy, modify, merge, publish, distribute, sublicense, and/or sell -# copies of the Software, and to permit persons to whom the Software is -# furnished to do so, subject to the following conditions: - -# The above copyright notice and this permission notice shall be included in all -# copies or substantial portions of the Software. - -# THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR -# IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, -# FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE -# AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER -# LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, -# OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE -# SOFTWARE. - -# Author: Jeremie Passerin geerem@hotmail.com www.jeremiepasserin.com -# Author: Miquel Campos hello@miquel-campos.com www.miquel-campos.com -# Date: 2016 / 10 / 10 - -""" -mGear init module. -""" - -########################################################## -# GLOBAL -########################################################## -# built-in import os import sys import exceptions @@ -50,31 +18,28 @@ sev_comment = 32 # gear version VERSION = @MGEAR_VERSION@ - ########################################################## # METHODS ########################################################## + def logInfos(): - """ - Log version of Gear - """ + """Log version of Gear""" print "GEAR version : " + getVersion() def getVersion(): - """ - Get mGear version + """Get mGear version Returns: mgear version + """ return ".".join([str(i) for i in VERSION]) def reloadModule(name="mgear", *args): - """ - Reload a module and its sub-modules from a given module name. + """Reload a module and its sub-modules from a given module name. Args: name (str): Module Name. Default value is "mgear". @@ -91,12 +56,12 @@ def reloadModule(name="mgear", *args): def __reloadRecursive(path, parentName): - """ - search subfolders recursive + """search subfolders recursive Args: path (str): Path to search subfolder recursive parentName (str): parent name + """ for root, dirs, files in os.walk(path, True, None): @@ -106,37 +71,38 @@ def __reloadRecursive(path, parentName): if sfile == "__init__.py": name = parentName else: - name = parentName+"."+sfile[:-3] + name = parentName + "." + sfile[:-3] - log("reload : %s"%name) + log("reload : %s" % name) try: module = __import__(name, globals(), locals(), ["*"], -1) reload(module) - except ImportError, e: + except ImportError as e: for arg in e.args: log(arg, sev_error) - except Exception, e: + except Exception as e: for arg in e.args: log(arg, sev_error) # Now reload sub modules for dirName in dirs: - __reloadRecursive(path+"/"+dirName, parentName+"."+dirName) + __reloadRecursive(path + "/" + dirName, parentName + "." + dirName) break ########################################################## # LOGGER ########################################################## + def setDebug(b): - """ - Set the debug mode to given value. + """Set the debug mode to given value. Args: b (bool): boolean Returns: bool: The previous value of the debug mode + """ global logDebug original_value = logDebug @@ -145,11 +111,11 @@ def setDebug(b): def toggleDebug(): - """ - Toggle the debug mode value. + """Toggle the debug mode value. Returns; bool: The new debug mode value. + """ global logDebug logDebug = not logDebug @@ -157,8 +123,7 @@ def toggleDebug(): def log(message, severity=sev_comment, infos=False): - """ - Log a message using severity and additional info from the file itself. + """Log a message using severity and additional info from the file itself. Severity has been taken from Softimage one: * 1. Fatal @@ -171,23 +136,27 @@ def log(message, severity=sev_comment, infos=False): Args: messages(str): The message severity (int): Severity level. - infos (bool): Add extra infos from the module, class, method and line number. + infos (bool): Add extra infos from the module, class, method and + line number. + """ message = str(message) if infos or logDebug: - message = getInfos(1) +"\n"+ message + message = getInfos(1) + "\n" + message sys.stdout.write(message + "\n") # ======================================================== -## Exception +# Exception + + class FakeException(exceptions.Exception): pass + def getInfos(level): - """ - Get information from where the method has been fired. + """Get information from where the method has been fired. Such as module name, method, line number... Args: @@ -195,17 +164,18 @@ def getInfos(level): Returns: str: The info + """ try: raise FakeException("this is fake") - except Exception, e: - #get the current execution frame + except Exception: + # get the current execution frame f = sys.exc_info()[2].tb_frame - #go back as many call-frames as was specified + # go back as many call-frames as was specified while level >= 0: f = f.f_back - level = level-1 + level = level - 1 infos = "" @@ -215,22 +185,22 @@ def getInfos(level): infos += moduleName + " | " # Class Name - #if there is a self variable in the caller's local namespace then - #we'll make the assumption that the caller is a class method + # if there is a self variable in the caller's local namespace then + # we'll make the assumption that the caller is a class method obj = f.f_locals.get("self", None) if obj: - infos += obj.__class__.__name__+"::" + infos += obj.__class__.__name__ + "::" # Function Name functionName = f.f_code.co_name if functionName != "": - infos += functionName+"()" + infos += functionName + "()" # Line Number lineNumber = str(f.f_lineno) - infos += " line "+lineNumber+"" + infos += " line " + lineNumber + "" if infos: - infos = "["+infos+"]" + infos = "[" + infos + "]" return infos diff --git a/scripts/mgear/string.py b/scripts/mgear/string.py index 82eda79..60a55be 100644 --- a/scripts/mgear/string.py +++ b/scripts/mgear/string.py @@ -1,32 +1,4 @@ -# MGEAR is under the terms of the MIT License - -# Copyright (c) 2016 Jeremie Passerin, Miquel Campos - -# Permission is hereby granted, free of charge, to any person obtaining a copy -# of this software and associated documentation files (the "Software"), to deal -# in the Software without restriction, including without limitation the rights -# to use, copy, modify, merge, publish, distribute, sublicense, and/or sell -# copies of the Software, and to permit persons to whom the Software is -# furnished to do so, subject to the following conditions: - -# The above copyright notice and this permission notice shall be included in all -# copies or substantial portions of the Software. - -# THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR -# IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, -# FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE -# AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER -# LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, -# OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE -# SOFTWARE. - -# Author: Jeremie Passerin geerem@hotmail.com www.jeremiepasserin.com -# Author: Miquel Campos hello@miquel-campos.com www.miquel-campos.com -# Date: 2016 / 10 / 10 - -""" -string management methods -""" +"""string management methods""" ########################################################## # GLOBAL @@ -36,60 +8,68 @@ ########################################################## # FUNCTIONS ########################################################## + + def normalize(string): - """ - Replace all invalid characters with "_" + """Replace all invalid characters with "_" :param string string: A string to normalize. :return string: Normalized string + """ string = str(string) if re.match("^[0-9]", string): - string = "_"+string + string = "_" + string return re.sub("[^A-Za-z0-9_-]", "_", str(string)) + def removeInvalidCharacter(string): - """ - Remove all invalid character. + """Remove all invalid character. :param string string: A string to normalize. :return string: Normalized string. + """ return re.sub("[^A-Za-z0-9]", "", str(string)) + def replaceSharpWithPadding(string, index): - """ - Replace a list of # symbol with properly padded index. (ie. count_### > count_001 ) + """Replace a list of # symbol with properly padded index. + + ie. count_### > count_001 :param string string: A string to set. Should include '#' :param integer index: Index to replace. :return string: Normalized string. + """ if string.count("#") == 0: string += "#" digit = str(index) while len(digit) < string.count("#"): - digit = "0"+digit + digit = "0" + digit return re.sub("#+", digit, string) def convertRLName(name): - """ - Convert a string with underscore "_\L", "_L0\_", "L\_", "_L" to "R". And vice and versa. + """Convert a string with underscore + + i.e: "_\L", "_L0\_", "L\_", "_L" to "R". And vice and versa. :param string name: string to convert :return: Tuple of Integer + """ if name == "L": return "R" elif name == "R": return "L" - - rePattern = re.compile("_[RL][0-9]+_|^[RL][0-9]+_|_[RL][0-9]+$|_[RL]_|^[RL]_|_[RL]$") + re_str = "_[RL][0-9]+_|^[RL][0-9]+_|_[RL][0-9]+$|_[RL]_|^[RL]_|_[RL]$" + rePattern = re.compile(re_str) reMatch = re.search(rePattern, name) if reMatch: diff --git a/scripts/mgear/widgets.py b/scripts/mgear/widgets.py index abe5402..7810a91 100644 --- a/scripts/mgear/widgets.py +++ b/scripts/mgear/widgets.py @@ -1,43 +1,15 @@ -# MGEAR is under the terms of the MIT License - -# Copyright (c) 2016 Jeremie Passerin, Miquel Campos - -# Permission is hereby granted, free of charge, to any person obtaining a copy -# of this software and associated documentation files (the "Software"), to deal -# in the Software without restriction, including without limitation the rights -# to use, copy, modify, merge, publish, distribute, sublicense, and/or sell -# copies of the Software, and to permit persons to whom the Software is -# furnished to do so, subject to the following conditions: - -# The above copyright notice and this permission notice shall be included in all -# copies or substantial portions of the Software. - -# THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR -# IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, -# FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE -# AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER -# LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, -# OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE -# SOFTWARE. - -# Author: Jeremie Passerin geerem@hotmail.com www.jeremiepasserin.com -# Author: Miquel Campos hello@miquel-campos.com www.miquel-campos.com -# Date: 2016 / 10 / 10 - -""" -mGear Qt custom widgets -""" +"""mGear Qt custom widgets""" from mgear.vendor.Qt import QtCore, QtWidgets ################################################# -## CUSTOM WIDGETS +# CUSTOM WIDGETS ################################################# class TableWidgetDragRows(QtWidgets.QTableWidget): - """qTableWidget with drag and drop functionality - """ + """qTableWidget with drag and drop functionality""" + def __init__(self, *args, **kwargs): super(TableWidgetDragRows, self).__init__(*args, **kwargs) @@ -56,8 +28,11 @@ def dropEvent(self, event): drop_row = self.drop_on(event) rows = sorted(set(item.row() for item in self.selectedItems())) - rows_to_move = [[QtWidgets.QTableWidgetItem(self.item(row_index, column_index)) for column_index in range(self.columnCount())] - for row_index in rows] + rows_to_move = [[QtWidgets.QTableWidgetItem( + self.item(row_index, column_index)) + for column_index in range(self.columnCount())] + for row_index in rows] + for row_index in reversed(rows): self.removeRow(row_index) if row_index < drop_row: @@ -71,14 +46,16 @@ def dropEvent(self, event): event.accept() for row_index in range(len(rows_to_move)): for column_index in range(self.columnCount()): - self.item(drop_row + row_index, column_index).setSelected(True) + self.item(drop_row + row_index, + column_index).setSelected(True) def drop_on(self, event): index = self.indexAt(event.pos()) if not index.isValid(): return self.rowCount() - return index.row() + 1 if self.is_below(event.pos(), index) else index.row() + return index.row() + 1 if self.is_below(event.pos(), + index) else index.row() def is_below(self, pos, index): rect = self.visualRect(index) @@ -87,7 +64,10 @@ def is_below(self, pos, index): return False elif rect.bottom() - pos.y() < margin: return True - return rect.contains(pos, True) and not (int(self.model().flags(index)) & QtCore.Qt.ItemIsDropEnabled) and pos.y() >= rect.center().y() + return rect.contains(pos, True) \ + and not (int(self.model().flags(index)) + & QtCore.Qt.ItemIsDropEnabled) \ + and pos.y() >= rect.center().y() def getSelectedRowsFast(self): selRows = [] @@ -102,7 +82,9 @@ def droppingOnItself(self, event, index): if self.dragDropMode() == QtWidgets.QAbstractItemView.InternalMove: dropAction = QtCore.Qt.MoveAction - if event.source() == self and event.possibleActions() & QtCore.Qt.MoveAction and dropAction == QtCore.Qt.MoveAction: + if (event.source() == self + and event.possibleActions() & QtCore.Qt.MoveAction + and dropAction == QtCore.Qt.MoveAction): selectedIndexes = self.selectedIndexes() child = index while child.isValid() and child != self.rootIndex(): @@ -122,17 +104,20 @@ def dropOn(self, event): if self.viewport().rect().contains(event.pos()): index = self.indexAt(event.pos()) - if not index.isValid() or not self.visualRect(index).contains(event.pos()): + if (not index.isValid() + or not self.visualRect(index).contains(event.pos())): index = self.rootIndex() if self.model().supportedDropActions() & event.dropAction(): if index != self.rootIndex(): - dropIndicatorPosition = self.position(event.pos(), self.visualRect(index), index) - - if dropIndicatorPosition == QtWidgets.QAbstractItemView.AboveItem: + dropIndicatorPosition = self.position(event.pos(), + self.visualRect(index), + index) + qabw = QtWidgets.QAbstractItemView + if dropIndicatorPosition == qabw.AboveItem: row = index.row() col = index.column() - elif dropIndicatorPosition == QtWidgets.QAbstractItemView.BelowItem: + elif dropIndicatorPosition == qabw.BelowItem: row = index.row() + 1 col = index.column() else: @@ -154,7 +139,12 @@ def position(self, pos, rect, index): elif rect.contains(pos, True): r = QtWidgets.QAbstractItemView.OnItem - if r == QtWidgets.QAbstractItemView.OnItem and not (self.model().flags(index) & QtCore.Qt.ItemIsDropEnabled): - r = QtWidgets.QAbstractItemView.AboveItem if pos.y() < rect.center().y() else QtWidgets.QAbstractItemView.BelowItem + if (r == QtWidgets.QAbstractItemView.OnItem + and not (self.model().flags(index) + & QtCore.Qt.ItemIsDropEnabled)): + if pos.y() < rect.center().y(): + r = QtWidgets.QAbstractItemView.AboveItem + else: + r = QtWidgets.QAbstractItemView.BelowItem return r From 15721b3a631e07e584ac648bacb71c20cca3cdbf Mon Sep 17 00:00:00 2001 From: Marcus Ottosson Date: Fri, 24 Nov 2017 06:27:36 +0000 Subject: [PATCH 087/134] Pepify mGear_menu.py --- scripts/mGear_menu.py | 355 +++++++++++++++++++++++++----------------- 1 file changed, 208 insertions(+), 147 deletions(-) diff --git a/scripts/mGear_menu.py b/scripts/mGear_menu.py index c0d249b..2b45dad 100644 --- a/scripts/mGear_menu.py +++ b/scripts/mGear_menu.py @@ -1,180 +1,241 @@ import os import sys import subprocess - from functools import partial -import pymel.core as pm - -#mGear Tools -import mGear_guidesTemplates -import mGear_mocapTools +import pymel.core as pm -#mGear modules import mgear -import mgear.maya.synoptic as syn -import mgear.maya.skin as skin -# simple rig -import mgear.maya.simpleRig as srig - -#import rigbits -import mgear.maya.rigbits as rigbits -import mgear.maya.rigbits.postSpring as postSpring -import mgear.maya.rigbits.rope as rope -import mgear.maya.rigbits.proxySlicer as proxySlicer -import mgear.maya.rigbits.utils as utils -import mgear.maya.rigbits.channelWrangler as channelWrangler +from mgear.maya import synoptic, skin, simpleRig, rigbits +from mgear.maya.rigbits import ( + postSpring, + rope, + proxySlicer, + utils, + channelWrangler +) + +from mGear_guidesTemplates import ( + guideUI, + buildFromSelection, + bipedGuide, + quadrupedGuide, + updateGuide +) +from mGear_mocapTools import ( + importSkeletonBiped, + characterizeBiped, + bakeMocap, +) def openFile(file, *args): - - if sys.platform.startswith('darwin'): - subprocess.call(('open', file)) - elif os.name == 'nt': + if sys.platform.startswith("darwin"): + subprocess.call(("open", file)) + elif os.name == "nt": os.startfile(file) - elif os.name == 'posix': - subprocess.call(('xdg-open', file)) - - -def CreateMenu(): - - if pm.menu('mGear', exists=1): - pm.deleteUI('mGear') - mGearM = pm.menu('mGear', p='MayaWindow', tearOff=1, allowOptionBoxes=1, label='mGear') - - ## Rigging systems - ## Shifter rigging builder - shifterM = pm.menuItem(parent='mGear', subMenu=True, tearOff=True, label='Shifter') - pm.menuItem(label="Guides UI", command=partial(mGear_guidesTemplates.guideUI)) - pm.menuItem( divider=True ) - pm.menuItem(label="Build From Selection", command=partial(mGear_guidesTemplates.buildFromSelection)) - pm.menuItem( divider=True ) - pm.menuItem(label="Import Biped Guide", command=partial(mGear_guidesTemplates.bipedGuide)) - pm.menuItem(label="Import Quadruped Guide", command=partial(mGear_guidesTemplates.quadrupedGuide)) - pm.menuItem( divider=True ) - pm.menuItem(label="Update Guide", command=partial(mGear_guidesTemplates.updateGuide)) - + elif os.name == "posix": + subprocess.call(("xdg-open", file)) + else: + raise OSError("Unsupported platform '%s'" % os.name) + + +def createMenu(): + if pm.menu("mGear", exists=True): + pm.deleteUI("mGear") + + mGearM = pm.menu("mGear", + parent="MayaWindow", + tearOff=True, + allowOptionBoxes=True, + label="mGear") + + # Rigging systems + # Shifter rigging builder + pm.menuItem(parent="mGear", subMenu=True, tearOff=True, label="Shifter") + pm.menuItem(label="Guides UI", command=guideUI) + pm.menuItem(divider=True) + pm.menuItem(label="Build From Selection", + command=buildFromSelection) + pm.menuItem(divider=True) + pm.menuItem(label="Import Biped Guide", + command=bipedGuide) + pm.menuItem(label="Import Quadruped Guide", + command=quadrupedGuide) + pm.menuItem(divider=True) + pm.menuItem(label="Update Guide", + command=updateGuide) pm.setParent(mGearM, menu=True) - pm.menuItem( divider=True ) - - #simple rig - - pm.menuItem(parent='mGear', subMenu=True, tearOff=True, label='Simple Rig') - pm.menuItem(label="Simple Rig Generate", command=partial(srig.simpleRig, "rig", False)) - pm.menuItem( divider=True ) - pm.menuItem(label="Create Root", command=partial(srig.createRoot)) - pm.menuItem( divider=True ) - pm.menuItem(label="Set User Pivot", command=partial(srig.setUserRigPivot)) - pm.menuItem(label="Add To User Pivot", command=partial(srig.addToUserPivot)) - pm.menuItem(label="Select Objects In User Pivot", command=partial(srig.selectObjectInUserRootPivot)) + pm.menuItem(divider=True) + + # Simple rig + pm.menuItem(parent="mGear", subMenu=True, tearOff=True, label="Simple Rig") + pm.menuItem(label="Simple Rig Generate", + command=partial(simpleRig.simpleRig, "rig", False)) + pm.menuItem(divider=True) + pm.menuItem(label="Create Root", command=simpleRig.createRoot) + pm.menuItem(divider=True) + pm.menuItem(label="Set User Pivot", command=simpleRig.setUserRigPivot) + pm.menuItem(label="Add To User Pivot", command=simpleRig.addToUserPivot) + pm.menuItem(label="Select Objects In User Pivot", + command=simpleRig.selectObjectInUserRootPivot) pm.setParent(mGearM, menu=True) - pm.menuItem( divider=True ) - - ## Rigging Tools - riggingM = pm.menuItem(parent='mGear', subMenu=True, tearOff=True, label='Rigging') - pm.menuItem(label="Add NPO", command=partial(rigbits.addNPO, None)) - pm.menuItem(subMenu=True, tearOff=True, label='Gimmick Joints') - pm.menuItem(label="Add Joint", command=partial(rigbits.addJnt, False, False)) - pm.menuItem( divider=True ) - pm.menuItem(label="Add Blended Joint", command=partial(rigbits.addBlendedJoint, False, False)) - pm.menuItem(label="Add Support Joint", command=partial(rigbits.addSupportJoint, False, False)) + pm.menuItem(divider=True) + + # Rigging Tools + riggingM = pm.menuItem(parent="mGear", + subMenu=True, + tearOff=True, + label="Rigging") + pm.menuItem(label="Add NPO", command=rigbits.addNPO) + pm.menuItem(subMenu=True, tearOff=True, label="Gimmick Joints") + pm.menuItem(label="Add Joint", + command=rigbits.addJnt) + pm.menuItem(divider=True) + pm.menuItem(label="Add Blended Joint", + command=rigbits.addBlendedJoint) + pm.menuItem(label="Add Support Joint", + command=rigbits.addSupportJoint) pm.setParent(riggingM, menu=True) - pm.menuItem( divider=True ) - pm.menuItem(label="Replace Shape", command=partial(rigbits.replaceShape, None, None)) - pm.menuItem( divider=True ) - pm.menuItem(label="Match All Transform", command=partial(rigbits.matchWorldXform)) - pm.menuItem(label="Match Pos with BBox", command=partial(rigbits.matchPosfromBBox)) - pm.menuItem(label="Align Ref Axis", command=partial(rigbits.alignToPointsLoop, None, None, None)) + pm.menuItem(divider=True) + pm.menuItem(label="Replace Shape", + command=rigbits.replaceShape) + pm.menuItem(divider=True) + pm.menuItem(label="Match All Transform", command=rigbits.matchWorldXform) + pm.menuItem(label="Match Pos with BBox", command=rigbits.matchPosfromBBox) + pm.menuItem(label="Align Ref Axis", command=rigbits.alignToPointsLoop) pm.setParent(riggingM, menu=True) - pm.menuItem( divider=True ) - pm.menuItem(subMenu=True, tearOff=True, label='CTL as Parent') + pm.menuItem(divider=True) + pm.menuItem(subMenu=True, tearOff=True, label="CTL as Parent") pm.menuItem(label="Square", command=partial(rigbits.createCTL, "square")) pm.menuItem(label="Circle", command=partial(rigbits.createCTL, "circle")) pm.menuItem(label="Cube", command=partial(rigbits.createCTL, "cube")) pm.menuItem(label="Diamond", command=partial(rigbits.createCTL, "diamond")) pm.menuItem(label="Sphere", command=partial(rigbits.createCTL, "sphere")) pm.menuItem(label="Cross", command=partial(rigbits.createCTL, "cross")) - pm.menuItem(label="Cross Arrow", command=partial(rigbits.createCTL, "crossarrow")) - pm.menuItem(label="Pyramid", command=partial(rigbits.createCTL, "pyramid")) - pm.menuItem(label="Cube With Peak", command=partial(rigbits.createCTL, "cubewithpeak")) + pm.menuItem(label="Cross Arrow", + command=partial(rigbits.createCTL, "crossarrow")) + pm.menuItem(label="Pyramid", + command=partial(rigbits.createCTL, "pyramid")) + pm.menuItem(label="Cube With Peak", + command=partial(rigbits.createCTL, "cubewithpeak")) pm.setParent(riggingM, menu=True) - pm.menuItem(subMenu=True, tearOff=True, label='CTL as Child') - pm.menuItem(label="Square", command=partial(rigbits.createCTL, "square", True)) - pm.menuItem(label="Circle", command=partial(rigbits.createCTL, "circle", True)) - pm.menuItem(label="Cube", command=partial(rigbits.createCTL, "cube", True)) - pm.menuItem(label="Diamond", command=partial(rigbits.createCTL, "diamond", True)) - pm.menuItem(label="Sphere", command=partial(rigbits.createCTL, "sphere", True)) - pm.menuItem(label="Cross", command=partial(rigbits.createCTL, "cross", True)) - pm.menuItem(label="Cross Arrow", command=partial(rigbits.createCTL, "crossarrow", True)) - pm.menuItem(label="Pyramid", command=partial(rigbits.createCTL, "pyramid", True)) - pm.menuItem(label="Cube With Peak", command=partial(rigbits.createCTL, "cubewithpeak", True)) + pm.menuItem(subMenu=True, tearOff=True, label="CTL as Child") + pm.menuItem(label="Square", + command=partial(rigbits.createCTL, "square", True)) + pm.menuItem(label="Circle", + command=partial(rigbits.createCTL, "circle", True)) + pm.menuItem(label="Cube", + command=partial(rigbits.createCTL, "cube", True)) + pm.menuItem(label="Diamond", + command=partial(rigbits.createCTL, "diamond", True)) + pm.menuItem(label="Sphere", + command=partial(rigbits.createCTL, "sphere", True)) + pm.menuItem(label="Cross", + command=partial(rigbits.createCTL, "cross", True)) + pm.menuItem(label="Cross Arrow", + command=partial(rigbits.createCTL, "crossarrow", True)) + pm.menuItem(label="Pyramid", + command=partial(rigbits.createCTL, "pyramid", True)) + pm.menuItem(label="Cube With Peak", + command=partial(rigbits.createCTL, "cubewithpeak", True)) pm.setParent(riggingM, menu=True) - pm.menuItem( divider=True ) - pm.menuItem(label="Duplicate symmetrical", command=partial(rigbits.duplicateSym)) - pm.menuItem( divider=True ) - pm.menuItem(label="Space Jumper", command=partial(rigbits.spaceJump)) - pm.menuItem(label="Interpolated Transform", command=partial(rigbits.createInterpolateTransform)) - - pm.menuItem(subMenu=True, tearOff=True, label='Connect local SRT') - pm.menuItem(label="connect SRT", command=partial(rigbits.connectLocalTransform, None, 1, 1, 1)) - pm.menuItem(label="connect T", command=partial(rigbits.connectLocalTransform, None, 0, 0, 1)) - pm.menuItem(label="connect R", command=partial(rigbits.connectLocalTransform, None, 0, 1, 0)) - pm.menuItem(label="connect S", command=partial(rigbits.connectLocalTransform, None, 1, 0, 0)) + pm.menuItem(divider=True) + pm.menuItem(label="Duplicate symmetrical", + command=rigbits.duplicateSym) + pm.menuItem(divider=True) + pm.menuItem(label="Space Jumper", + command=rigbits.spaceJump) + pm.menuItem(label="Interpolated Transform", + command=rigbits.createInterpolateTransform) + + pm.menuItem(subMenu=True, tearOff=True, label="Connect local SRT") + pm.menuItem(label="connect SRT", + command=partial(rigbits.connectLocalTransform, None, 1, 1, 1)) + pm.menuItem(label="connect T", + command=partial(rigbits.connectLocalTransform, None, 0, 0, 1)) + pm.menuItem(label="connect R", + command=partial(rigbits.connectLocalTransform, None, 0, 1, 0)) + pm.menuItem(label="connect S", + command=partial(rigbits.connectLocalTransform, None, 1, 0, 0)) pm.setParent(riggingM, menu=True) - pm.menuItem( divider=True ) - pm.menuItem(label="Spring", command=partial(postSpring.spring_UI)) - pm.menuItem(label="Rope", command=partial(rope.rope_UI)) - pm.menuItem( divider=True ) - pm.menuItem(label="Channel Wrangler", command=partial(channelWrangler.openChannelWrangler)) - - ## skinning tools - skinM = pm.menuItem(parent='mGear', subMenu=True, tearOff=True, label='Skinning') + pm.menuItem(divider=True) + pm.menuItem(label="Spring", command=postSpring.spring_UI) + pm.menuItem(label="Rope", command=rope.rope_UI) + pm.menuItem(divider=True) + pm.menuItem(label="Channel Wrangler", + command=channelWrangler.openChannelWrangler) + + # skinning tools + pm.menuItem(parent="mGear", subMenu=True, tearOff=True, label="Skinning") pm.menuItem(label="Copy Skin", command=partial(skin.skinCopy, None, None)) - pm.menuItem(label="Select Skin Deformers", command=partial(skin.selectDeformers)) - pm.menuItem( divider=True ) - pm.menuItem(label="Import Skin", command=partial(skin.importSkin, None, False)) - pm.menuItem(label="Import Skin Pack", command=partial(skin.importSkinPack, None)) - pm.menuItem( divider=True ) - pm.menuItem(label="Export Skin", command=partial(skin.exportSkin, None, None)) - pm.menuItem(label="Export Skin Pack", command=partial(skin.exportSkinPack, None, None)) - pm.menuItem( divider=True ) - pm.menuItem(label="Get Names in gSkin File", command=partial(skin.getObjsFromSkinFile, None, False)) - - ## Modeling tools - modelM = pm.menuItem(parent='mGear', subMenu=True, tearOff=True, label='Modeling') - pm.menuItem(label="Proxy Slicer", command=partial(proxySlicer.slice)) - pm.menuItem(label="Proxy Slicer Parenting", command=partial(proxySlicer.slice, True)) - - ## Animation Tools - animationM = pm.menuItem(parent='mGear', subMenu=True, tearOff=True, label='Animation') - pm.menuItem(label="Synoptic", command=partial(syn.open)) - pm.menuItem( divider=True ) - pm.menuItem(label="Import Mocap Skeleton Biped", command=partial(mGear_mocapTools.importSkeletonBiped)) - pm.menuItem(label="Characterize Biped", command=partial(mGear_mocapTools.characterizeBiped)) - pm.menuItem(label="Bake Mocap Biped", command=partial(mGear_mocapTools.bakeMocap)) - - ## util Tools + pm.menuItem(label="Select Skin Deformers", command=skin.selectDeformers) + pm.menuItem(divider=True) + pm.menuItem(label="Import Skin", command=skin.importSkin) + pm.menuItem(label="Import Skin Pack", command=skin.importSkinPack) + pm.menuItem(divider=True) + pm.menuItem(label="Export Skin", command=skin.exportSkin) + pm.menuItem(label="Export Skin Pack", command=skin.exportSkinPack) + pm.menuItem(divider=True) + pm.menuItem(label="Get Names in gSkin File", + command=skin.getObjsFromSkinFile) + + # Modeling tools + pm.menuItem(parent="mGear", subMenu=True, tearOff=True, label="Modeling") + pm.menuItem(label="Proxy Slicer", + command=partial(proxySlicer.slice)) + pm.menuItem(label="Proxy Slicer Parenting", + command=partial(proxySlicer.slice, True)) + + # Animation Tools + pm.menuItem(parent="mGear", subMenu=True, tearOff=True, label="Animation") + pm.menuItem(label="Synoptic", command=synoptic.open) + pm.menuItem(divider=True) + pm.menuItem(label="Import Mocap Skeleton Biped", + command=importSkeletonBiped) + pm.menuItem(label="Characterize Biped", + command=characterizeBiped) + pm.menuItem(label="Bake Mocap Biped", command=bakeMocap) + + # util Tools pm.setParent(mGearM, menu=True) - pm.menuItem( divider=True ) - utilM = pm.menuItem(parent='mGear', subMenu=True, tearOff=True, label='Utilities') + pm.menuItem(divider=True) + pm.menuItem(parent="mGear", subMenu=True, tearOff=True, label="Utilities") pm.menuItem(label="Reload", command=partial(mgear.reloadModule, "mgear")) - pm.menuItem( divider=True ) - pm.menuItem(label="Compile PyQt ui", command=partial(utils.ui2py, None)) - pm.menuItem( divider=True ) - pm.menuItem(label="Create mGear Hotkeys", command=partial(utils.createHotkeys, None)) + pm.menuItem(divider=True) + pm.menuItem(label="Compile PyQt ui", command=utils.ui2py) + pm.menuItem(divider=True) + pm.menuItem(label="Create mGear Hotkeys", + command=utils.createHotkeys) - ## Help + # Help pm.setParent(mGearM, menu=True) - pm.menuItem( divider=True ) - helpM = pm.menuItem(parent='mGear', subMenu=True, tearOff=True, label='Help') - pm.menuItem(label="Documentation", command=partial(openFile, "https://miquelcampos.github.io/mgear/")) - pm.menuItem(label="Release Log", command=partial(openFile, "https://miquelcampos.github.io/mgear/releaseLog.html")) - pm.menuItem( divider=True ) - pm.menuItem(label="User Group", command=partial(openFile, "https://groups.google.com/forum/#!forum/mgearusergroup")) - pm.menuItem( divider=True ) - pm.menuItem(label="GitHub", command=partial(openFile, "https://github.com/miquelcampos/mgear")) - pm.menuItem( divider=True ) + pm.menuItem(divider=True) + pm.menuItem(parent="mGear", subMenu=True, tearOff=True, label="Help") + pm.menuItem(label="Documentation", + command=partial( + openFile, + "https://miquelcampos.github.io/mgear/")) + pm.menuItem(label="Release Log", + command=partial( + openFile, + "https://miquelcampos.github.io/mgear/releaseLog.html")) + pm.menuItem(divider=True) + pm.menuItem(label="User Group", + command=partial( + openFile, + "https://groups.google.com/forum/#!forum/mgearusergroup")) + pm.menuItem(divider=True) + pm.menuItem(label="GitHub", + command=partial( + openFile, + "https://github.com/miquelcampos/mgear")) + pm.menuItem(divider=True) pm.menuItem(label="About", command=mgear.maya.aboutMgear) + + +# Backwards compatibiltiy +CreateMenu = createMenu From 23b61f215c96ccc346edfb9643865930f81c7db4 Mon Sep 17 00:00:00 2001 From: Marcus Ottosson Date: Fri, 24 Nov 2017 06:27:49 +0000 Subject: [PATCH 088/134] Add note about docstrings to CONTRIBUTING.md --- CONTRIBUTING.md | 41 +++++++++++++++++++++++++++++++++++++++++ 1 file changed, 41 insertions(+) diff --git a/CONTRIBUTING.md b/CONTRIBUTING.md index c919295..e3a75cc 100644 --- a/CONTRIBUTING.md +++ b/CONTRIBUTING.md @@ -1,7 +1,48 @@ ## Contributing to mGear +### Docstrings +All docstrings are written in Google Napoleon format. + +```python +def function(a, b=True): + """Summary here, no line breaks + + Arguments: + a (str): A first argument, mandatory + b (bool, optional): A second argument + + Example: + >>> print("A doctest") + 'A doctest' + + """ +``` + +
+ +### Quotation Marks + +Default to double-ticks, fallback to single-tick. + +```python +# Right +side = "Right" + +# Wrong +side = 'Left' + +# Right +def function(): + """It's a single tick""" + +# Wrong +def function(): + '''It's a single tick""" +``` + +
### Code Style From f01cb64c318640f4e2fd72dfebb7a12df9fe187d Mon Sep 17 00:00:00 2001 From: Marcus Ottosson Date: Fri, 24 Nov 2017 06:51:42 +0000 Subject: [PATCH 089/134] Remove unused import --- scripts/mGear_guidesTemplates.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/scripts/mGear_guidesTemplates.py b/scripts/mGear_guidesTemplates.py index 5e5fbb3..50eccbe 100644 --- a/scripts/mGear_guidesTemplates.py +++ b/scripts/mGear_guidesTemplates.py @@ -1,7 +1,7 @@ import os import pymel.core as pm -from mgear.maya import shifter, utils +from mgear.maya import shifter from mgear.maya.shifter import gui, component From 0c0e904485ab1bf6fa34fcf0ec9b174a5e68d617 Mon Sep 17 00:00:00 2001 From: Marcus Ottosson Date: Fri, 24 Nov 2017 06:51:54 +0000 Subject: [PATCH 090/134] Pepify mGear_mocapTools.py --- scripts/mGear_mocapTools.py | 365 ++++++++++++++++++++++++------------ 1 file changed, 243 insertions(+), 122 deletions(-) diff --git a/scripts/mGear_mocapTools.py b/scripts/mGear_mocapTools.py index 2dc7a6e..10962c7 100644 --- a/scripts/mGear_mocapTools.py +++ b/scripts/mGear_mocapTools.py @@ -1,101 +1,209 @@ -# MGEAR is under the terms of the MIT License +import os -# Copyright (c) 2016 Jeremie Passerin, Miquel Campos +import pymel.core as pm -# Permission is hereby granted, free of charge, to any person obtaining a copy -# of this software and associated documentation files (the "Software"), to deal -# in the Software without restriction, including without limitation the rights -# to use, copy, modify, merge, publish, distribute, sublicense, and/or sell -# copies of the Software, and to permit persons to whom the Software is -# furnished to do so, subject to the following conditions: +import mgear.maya.transform as tra +import mgear.maya.shifter.component as comp +import mgear.maya.attribute as att -# The above copyright notice and this permission notice shall be included in all -# copies or substantial portions of the Software. +skelFK = [ + u"mGear_Mocap_interface_" + joint + for joint in ( + u"Hips", + u"LeftUpLeg", + u"LeftLeg", + u"LeftFoot", + u"LeftToeBase", + u"RightUpLeg", + u"RightLeg", + u"RightFoot", + u"RightToeBase", + u"Spine", + u"Spine1", + u"Spine2", + u"LeftShoulder", + u"LeftArm", + u"LeftForeArm", + u"LeftHand", + u"LeftHandThumb1", + u"LeftHandThumb2", + u"LeftHandThumb3", + u"LeftHandIndex1", + u"LeftHandIndex2", + u"LeftHandIndex3", + u"LeftHandMiddle1", + u"LeftHandMiddle2", + u"LeftHandMiddle3", + u"LeftHandRing1", + u"LeftHandRing2", + u"LeftHandRing3", + u"LeftHandPinky1", + u"LeftHandPinky2", + u"LeftHandPinky3", + u"RightShoulder", + u"RightArm", + u"RightForeArm", + u"RightHand", + u"RightHandThumb1", + u"RightHandThumb2", + u"RightHandThumb3", + u"RightHandIndex1", + u"RightHandIndex2", + u"RightHandIndex3", + u"RightHandMiddle1", + u"RightHandMiddle2", + u"RightHandMiddle3", + u"RightHandRing1", + u"RightHandRing2", + u"RightHandRing3", + u"RightHandPinky1", + u"RightHandPinky2", + u"RightHandPinky3", + u"Neck", + u"Neck1", + u"Head" + ) +] -# THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR -# IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, -# FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE -# AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER -# LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, -# OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE -# SOFTWARE. +gearFK = [ + u"body_C0_ctl", + u"leg_L0_fk0_ctl", + u"leg_L0_fk1_ctl", + u"leg_L0_fk2_ctl", + u"foot_L0_fk0_ctl", + u"leg_R0_fk0_ctl", + u"leg_R0_fk1_ctl", + u"leg_R0_fk2_ctl", + u"foot_R0_fk0_ctl", + u"spine_C0_fk0_ctl", + u"spine_C0_fk1_ctl", + u"spine_C0_fk2_ctl", + u"shoulder_L0_ctl", + u"arm_L0_fk0_ctl", + u"arm_L0_fk1_ctl", + u"arm_L0_fk2_ctl", + u"thumb_L0_fk0_ctl", + u"thumb_L0_fk1_ctl", + u"thumb_L0_fk2_ctl", + u"finger_L0_fk0_ctl", + u"finger_L0_fk1_ctl", + u"finger_L0_fk2_ctl", + u"finger_L1_fk0_ctl", + u"finger_L1_fk1_ctl", + u"finger_L1_fk2_ctl", + u"finger_L2_fk0_ctl", + u"finger_L2_fk1_ctl", + u"finger_L2_fk2_ctl", + u"finger_L3_fk0_ctl", + u"finger_L3_fk1_ctl", + u"finger_L3_fk2_ctl", + u"shoulder_R0_ctl", + u"arm_R0_fk0_ctl", + u"arm_R0_fk1_ctl", + u"arm_R0_fk2_ctl", + u"thumb_R0_fk0_ctl", + u"thumb_R0_fk1_ctl", + u"thumb_R0_fk2_ctl", + u"finger_R0_fk0_ctl", + u"finger_R0_fk1_ctl", + u"finger_R0_fk2_ctl", + u"finger_R1_fk0_ctl", + u"finger_R1_fk1_ctl", + u"finger_R1_fk2_ctl", + u"finger_R2_fk0_ctl", + u"finger_R2_fk1_ctl", + u"finger_R2_fk2_ctl", + u"finger_R3_fk0_ctl", + u"finger_R3_fk1_ctl", + u"finger_R3_fk2_ctl", + u"neck_C0_fk0_ctl", + u"neck_C0_fk1_ctl", + u"neck_C0_head_ctl" +] -# Author: Jeremie Passerin geerem@hotmail.com www.jeremiepasserin.com -# Author: Miquel Campos hello@miquel-campos.com www.miquel-campos.com -# Date: 2016 / 10 / 10 +alignFK = [ + u"arm_L0_fk2_ctl", + u"arm_L0_ikcns_ctl", + u"arm_L0_fk1_ctl", + u"arm_R0_fk2_ctl", + u"arm_R0_ikcns_ctl", + u"arm_R0_fk1_ctl"] -import os +alignIK = [ + u"arm_L0_ikcns_ctl", + u"arm_L0_ik_ctl", + u"arm_L0_upv_ctl", + u"arm_R0_ikcns_ctl", + u"arm_R0_ik_ctl", + u"arm_R0_upv_ctl" +] -# Maya -import pymel.core as pm +skelIK = [ + u"mGear_Mocap_interface_LeftFoot", + u"mGear_Mocap_interface_RightFoot", + u"mGear_Mocap_interface_LeftUpLeg", + u"mGear_Mocap_interface_RightUpLeg", + u"mGear_Mocap_interface_LeftHand", -#mGear -import mgear.maya.transform as tra -import mgear.maya.shifter.component as comp -import mgear.maya.attribute as att + u"mGear_Mocap_interface_LeftForeArm", + u"mGear_Mocap_interface_RightHand", + u"mGear_Mocap_interface_RightForeArm", + u"mGear_Mocap_interface_LeftLeg", + u"mGear_Mocap_interface_RightLeg", -skelFK = [ u'mGear_Mocap_interface_Hips', u'mGear_Mocap_interface_LeftUpLeg', u'mGear_Mocap_interface_LeftLeg', u'mGear_Mocap_interface_LeftFoot', - u'mGear_Mocap_interface_LeftToeBase', u'mGear_Mocap_interface_RightUpLeg', u'mGear_Mocap_interface_RightLeg', u'mGear_Mocap_interface_RightFoot', - u'mGear_Mocap_interface_RightToeBase', u'mGear_Mocap_interface_Spine', u'mGear_Mocap_interface_Spine1', u'mGear_Mocap_interface_Spine2', - u'mGear_Mocap_interface_LeftShoulder', u'mGear_Mocap_interface_LeftArm', u'mGear_Mocap_interface_LeftForeArm', u'mGear_Mocap_interface_LeftHand', - u'mGear_Mocap_interface_LeftHandThumb1', u'mGear_Mocap_interface_LeftHandThumb2', u'mGear_Mocap_interface_LeftHandThumb3', u'mGear_Mocap_interface_LeftHandIndex1', - u'mGear_Mocap_interface_LeftHandIndex2', u'mGear_Mocap_interface_LeftHandIndex3', u'mGear_Mocap_interface_LeftHandMiddle1', u'mGear_Mocap_interface_LeftHandMiddle2', - u'mGear_Mocap_interface_LeftHandMiddle3', u'mGear_Mocap_interface_LeftHandRing1', u'mGear_Mocap_interface_LeftHandRing2', u'mGear_Mocap_interface_LeftHandRing3', - u'mGear_Mocap_interface_LeftHandPinky1', u'mGear_Mocap_interface_LeftHandPinky2', u'mGear_Mocap_interface_LeftHandPinky3', u'mGear_Mocap_interface_RightShoulder', - u'mGear_Mocap_interface_RightArm', u'mGear_Mocap_interface_RightForeArm', u'mGear_Mocap_interface_RightHand', u'mGear_Mocap_interface_RightHandThumb1', - u'mGear_Mocap_interface_RightHandThumb2', u'mGear_Mocap_interface_RightHandThumb3', u'mGear_Mocap_interface_RightHandIndex1', u'mGear_Mocap_interface_RightHandIndex2', - u'mGear_Mocap_interface_RightHandIndex3', u'mGear_Mocap_interface_RightHandMiddle1', u'mGear_Mocap_interface_RightHandMiddle2', u'mGear_Mocap_interface_RightHandMiddle3', - u'mGear_Mocap_interface_RightHandRing1', u'mGear_Mocap_interface_RightHandRing2', u'mGear_Mocap_interface_RightHandRing3', u'mGear_Mocap_interface_RightHandPinky1', - u'mGear_Mocap_interface_RightHandPinky2', u'mGear_Mocap_interface_RightHandPinky3', u'mGear_Mocap_interface_Neck', u'mGear_Mocap_interface_Neck1', u'mGear_Mocap_interface_Head'] - -gearFK = [ u'body_C0_ctl', u'leg_L0_fk0_ctl', u'leg_L0_fk1_ctl', u'leg_L0_fk2_ctl', u'foot_L0_fk0_ctl', u'leg_R0_fk0_ctl', u'leg_R0_fk1_ctl', u'leg_R0_fk2_ctl', - u'foot_R0_fk0_ctl', u'spine_C0_fk0_ctl', u'spine_C0_fk1_ctl', u'spine_C0_fk2_ctl', u'shoulder_L0_ctl', u'arm_L0_fk0_ctl', u'arm_L0_fk1_ctl', - u'arm_L0_fk2_ctl', u'thumb_L0_fk0_ctl', u'thumb_L0_fk1_ctl', u'thumb_L0_fk2_ctl', u'finger_L0_fk0_ctl', u'finger_L0_fk1_ctl', u'finger_L0_fk2_ctl', - u'finger_L1_fk0_ctl', u'finger_L1_fk1_ctl', u'finger_L1_fk2_ctl', u'finger_L2_fk0_ctl', u'finger_L2_fk1_ctl', u'finger_L2_fk2_ctl', - u'finger_L3_fk0_ctl', u'finger_L3_fk1_ctl', u'finger_L3_fk2_ctl', u'shoulder_R0_ctl', u'arm_R0_fk0_ctl', u'arm_R0_fk1_ctl', u'arm_R0_fk2_ctl', - u'thumb_R0_fk0_ctl', u'thumb_R0_fk1_ctl', u'thumb_R0_fk2_ctl', u'finger_R0_fk0_ctl', u'finger_R0_fk1_ctl', u'finger_R0_fk2_ctl', u'finger_R1_fk0_ctl', - u'finger_R1_fk1_ctl', u'finger_R1_fk2_ctl', u'finger_R2_fk0_ctl', u'finger_R2_fk1_ctl', u'finger_R2_fk2_ctl', u'finger_R3_fk0_ctl', u'finger_R3_fk1_ctl', - u'finger_R3_fk2_ctl', u'neck_C0_fk0_ctl', u'neck_C0_fk1_ctl', u'neck_C0_head_ctl'] - -alignFK = [u'arm_L0_fk2_ctl',u'arm_L0_ikcns_ctl', u'arm_L0_fk1_ctl', u'arm_R0_fk2_ctl',u'arm_R0_ikcns_ctl', u'arm_R0_fk1_ctl'] -alignIK = [u'arm_L0_ikcns_ctl',u'arm_L0_ik_ctl', u'arm_L0_upv_ctl', u'arm_R0_ikcns_ctl',u'arm_R0_ik_ctl', u'arm_R0_upv_ctl'] - -skelIK = [ u'mGear_Mocap_interface_LeftFoot', u'mGear_Mocap_interface_RightFoot', u'mGear_Mocap_interface_LeftUpLeg', u'mGear_Mocap_interface_RightUpLeg', u'mGear_Mocap_interface_LeftHand', - u'mGear_Mocap_interface_LeftForeArm', u'mGear_Mocap_interface_RightHand', u'mGear_Mocap_interface_RightForeArm', u'mGear_Mocap_interface_LeftLeg', u'mGear_Mocap_interface_RightLeg', - u'mGear_Mocap_interface_LeftForeArm', u'mGear_Mocap_interface_RightForeArm'] -gearIK = [ u'leg_L0_ik_ctl', u'leg_R0_ik_ctl', u'leg_L0_upv_ctl', u'leg_R0_upv_ctl', u'arm_L0_ik_ctl', u'arm_L0_upv_ctl', u'arm_R0_ik_ctl', u'arm_R0_upv_ctl', u'leg_L0_mid_ctl', u'leg_R0_mid_ctl', - u'arm_L0_mid_ctl', u'arm_R0_mid_ctl'] + u"mGear_Mocap_interface_LeftForeArm", + u"mGear_Mocap_interface_RightForeArm" +] -def importSkeletonBiped(*args): +gearIK = [ + u"leg_L0_ik_ctl", + u"leg_R0_ik_ctl", + u"leg_L0_upv_ctl", + u"leg_R0_upv_ctl", + u"arm_L0_ik_ctl", + u"arm_L0_upv_ctl", + u"arm_R0_ik_ctl", + u"arm_R0_upv_ctl", + u"leg_L0_mid_ctl", + u"leg_R0_mid_ctl", + u"arm_L0_mid_ctl", + u"arm_R0_mid_ctl" +] + +def importSkeletonBiped(*args): path = os.path.dirname(comp.__file__) pm.importFile(os.path.join(path, "_templates", "MOCAP_interface_01.ma")) -def characterizeBiped(*args): +def characterizeBiped(*args): try: - gCtl = pm.PyNode('global_C0_ctl') - mocapAttach = att.addAttribute(gCtl, "mocapAttach", "float", 1.0, minValue=0.0, maxValue=1.0) - - except: + gCtl = pm.PyNode("global_C0_ctl") + mocapAttach = att.addAttribute( + gCtl, + "mocapAttach", + "float", + 1.0, + minValue=0.0, + maxValue=1.0 + ) + except Exception: pm.displayWarning("global_C0_ctl: Is not in the scene") return - - # Align skeleton for a, b in zip(skelFK, gearFK): try: oA = pm.PyNode(a) - except: + except Exception: pm.displayWarning(a + ": Is not in the scene") try: oB = pm.PyNode(b) - except: + except Exception: pm.displayWarning(b + ": Is not in the scene") tra.matchWorldTransform(oB, oA) - #constrain FK controls + # Constrain FK controls for a, b in zip(skelFK, gearFK): oA = pm.PyNode(a) oB = pm.PyNode(b) @@ -103,39 +211,42 @@ def characterizeBiped(*args): pb_node = pm.createNode("pairBlend") - pm.connectAttr(cns+".constraintRotateX", pb_node+".inRotateX2") - pm.connectAttr(cns+".constraintRotateY", pb_node+".inRotateY2") - pm.connectAttr(cns+".constraintRotateZ", pb_node+".inRotateZ2") - pm.connectAttr( pb_node+".outRotateX", oB+".rotateX", f=True) - pm.connectAttr( pb_node+".outRotateY", oB+".rotateY", f=True) - pm.connectAttr( pb_node+".outRotateZ", oB+".rotateZ", f=True) - pm.setKeyframe( oB, at="rotateX") - pm.setKeyframe( oB, at="rotateY") - pm.setKeyframe( oB, at="rotateZ") - - pm.connectAttr(cns+".constraintTranslateX", pb_node+".inTranslateX2") - pm.connectAttr(cns+".constraintTranslateY", pb_node+".inTranslateY2") - pm.connectAttr(cns+".constraintTranslateZ", pb_node+".inTranslateZ2") - pm.connectAttr( pb_node+".outTranslateX", oB+".translateX", f=True) - pm.connectAttr( pb_node+".outTranslateY", oB+".translateY", f=True) - pm.connectAttr( pb_node+".outTranslateZ", oB+".translateZ", f=True) - pm.setKeyframe( oB, at="translateX") - pm.setKeyframe( oB, at="translateY") - pm.setKeyframe( oB, at="translateZ") + pm.connectAttr(cns + ".constraintRotateX", pb_node + ".inRotateX2") + pm.connectAttr(cns + ".constraintRotateY", pb_node + ".inRotateY2") + pm.connectAttr(cns + ".constraintRotateZ", pb_node + ".inRotateZ2") + pm.connectAttr(pb_node + ".outRotateX", oB + ".rotateX", f=True) + pm.connectAttr(pb_node + ".outRotateY", oB + ".rotateY", f=True) + pm.connectAttr(pb_node + ".outRotateZ", oB + ".rotateZ", f=True) + pm.setKeyframe(oB, at="rotateX") + pm.setKeyframe(oB, at="rotateY") + pm.setKeyframe(oB, at="rotateZ") + + pm.connectAttr(cns + ".constraintTranslateX", + pb_node + ".inTranslateX2") + pm.connectAttr(cns + ".constraintTranslateY", + pb_node + ".inTranslateY2") + pm.connectAttr(cns + ".constraintTranslateZ", + pb_node + ".inTranslateZ2") + pm.connectAttr(pb_node + ".outTranslateX", oB + ".translateX", f=True) + pm.connectAttr(pb_node + ".outTranslateY", oB + ".translateY", f=True) + pm.connectAttr(pb_node + ".outTranslateZ", oB + ".translateZ", f=True) + pm.setKeyframe(oB, at="translateX") + pm.setKeyframe(oB, at="translateY") + pm.setKeyframe(oB, at="translateZ") pm.connectAttr(mocapAttach, pb_node.attr("weight")) - #align IK controls with FK controls + # Align IK controls with FK controls for a, b in zip(alignIK, alignFK): oA = pm.PyNode(a) oB = pm.PyNode(b) tra.matchWorldTransform(oB, oA) - if a in [u'arm_L0_upv_ctl', u'arm_R0_upv_ctl']: + if a in [u"arm_L0_upv_ctl", u"arm_R0_upv_ctl"]: oA.attr("tz").set(-3) - if a == u'arm_L0_ikcns_ctl': - oA.attr("rx").set((oA.attr("rx").get()+90)) - if a == u'arm_R0_ikcns_ctl': - oA.attr("rx").set((oA.attr("rx").get()-90)) + if a == u"arm_L0_ikcns_ctl": + oA.attr("rx").set((oA.attr("rx").get() + 90)) + if a == u"arm_R0_ikcns_ctl": + oA.attr("rx").set((oA.attr("rx").get() - 90)) # constrain IK controls for a, b in zip(skelIK, gearIK): @@ -144,48 +255,58 @@ def characterizeBiped(*args): print b pb_node = pm.createNode("pairBlend") try: - if b in [u'leg_L0_upv_ctl', u'leg_R0_upv_ctl']: + if b in (u"leg_L0_upv_ctl", u"leg_R0_upv_ctl"): att.lockAttribute(pm.PyNode(b), lock=False, keyable=True) - if b in [ u'leg_L0_mid_ctl', u'leg_R0_mid_ctl', u'arm_L0_mid_ctl', u'arm_R0_mid_ctl']: + if b in (u"leg_L0_mid_ctl", + u"leg_R0_mid_ctl", + u"arm_L0_mid_ctl", + u"arm_R0_mid_ctl"): cns = pm.pointConstraint(oA, oB, mo=True) else: cns = pm.parentConstraint(oA, oB, mo=True) - pm.connectAttr(cns+".constraintRotateX", pb_node+".inRotateX2") - pm.connectAttr(cns+".constraintRotateY", pb_node+".inRotateY2") - pm.connectAttr(cns+".constraintRotateZ", pb_node+".inRotateZ2") - pm.connectAttr( pb_node+".outRotateX", oB+".rotateX", f=True) - pm.connectAttr( pb_node+".outRotateY", oB+".rotateY", f=True) - pm.connectAttr( pb_node+".outRotateZ", oB+".rotateZ", f=True) - pm.setKeyframe( oB, at="rotateX") - pm.setKeyframe( oB, at="rotateY") - pm.setKeyframe( oB, at="rotateZ") - except: + pm.connectAttr(cns + ".constraintRotateX", pb_node + ".inRotateX2") + pm.connectAttr(cns + ".constraintRotateY", pb_node + ".inRotateY2") + pm.connectAttr(cns + ".constraintRotateZ", pb_node + ".inRotateZ2") + pm.connectAttr(pb_node + ".outRotateX", oB + ".rotateX", f=True) + pm.connectAttr(pb_node + ".outRotateY", oB + ".rotateY", f=True) + pm.connectAttr(pb_node + ".outRotateZ", oB + ".rotateZ", f=True) + pm.setKeyframe(oB, at="rotateX") + pm.setKeyframe(oB, at="rotateY") + pm.setKeyframe(oB, at="rotateZ") + except Exception: cns = pm.pointConstraint(oA, oB, mo=True) - pm.connectAttr(cns+".constraintTranslateX", pb_node+".inTranslateX2") - pm.connectAttr(cns+".constraintTranslateY", pb_node+".inTranslateY2") - pm.connectAttr(cns+".constraintTranslateZ", pb_node+".inTranslateZ2") - pm.connectAttr( pb_node+".outTranslateX", oB+".translateX", f=True) - pm.connectAttr( pb_node+".outTranslateY", oB+".translateY", f=True) - pm.connectAttr( pb_node+".outTranslateZ", oB+".translateZ", f=True) - pm.setKeyframe( oB, at="translateX") - pm.setKeyframe( oB, at="translateY") - pm.setKeyframe( oB, at="translateZ") + pm.connectAttr(cns + ".constraintTranslateX", + pb_node + ".inTranslateX2") + pm.connectAttr(cns + ".constraintTranslateY", + pb_node + ".inTranslateY2") + pm.connectAttr(cns + ".constraintTranslateZ", + pb_node + ".inTranslateZ2") + pm.connectAttr(pb_node + ".outTranslateX", oB + ".translateX", f=True) + pm.connectAttr(pb_node + ".outTranslateY", oB + ".translateY", f=True) + pm.connectAttr(pb_node + ".outTranslateZ", oB + ".translateZ", f=True) + pm.setKeyframe(oB, at="translateX") + pm.setKeyframe(oB, at="translateY") + pm.setKeyframe(oB, at="translateZ") pm.connectAttr(mocapAttach, pb_node.attr("weight")) + def bakeMocap(*args): - start = pm.playbackOptions(q=True, min=True) - end = pm.playbackOptions(q=True, max=True) + start = pm.playbackOptions(query=True, min=True) + end = pm.playbackOptions(query=True, max=True) - if pm.selected() and pm.selected()[0].name()[-3:] =="ctl": + if pm.selected() and pm.selected()[0].name()[-3:] == "ctl": controls = gearFK + gearIK - if len(pm.selected()[0].name().split(":"))==2: + + if len(pm.selected()[0].name().split(":")) == 2: for i, x in enumerate(controls): controls[i] = pm.selected()[0].name().split(":")[0] + ":" + x - # we are using a custom bake system, because bakeResults is super slow with pairblend nodes - for x in range(int(start), int(end+1)): + # Using a custom bake system because bakeResults is + # slow with pairblend nodes. + for x in range(int(start), int(end + 1)): pm.currentTime(x) pm.setKeyframe(controls) else: - pm.displayWarning("Please select on control of the rig to determine wich character will be baked") + pm.displayWarning("Please select on control of the rig to " + "determine wich character will be baked") From 34ecc8eb798ed7987a19852a91d804c030e6436a Mon Sep 17 00:00:00 2001 From: Marcus Ottosson Date: Fri, 24 Nov 2017 06:52:14 +0000 Subject: [PATCH 091/134] Add to CONTRIBUTING.md --- CONTRIBUTING.md | 58 +++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 58 insertions(+) diff --git a/CONTRIBUTING.md b/CONTRIBUTING.md index e3a75cc..d8817f2 100644 --- a/CONTRIBUTING.md +++ b/CONTRIBUTING.md @@ -1,6 +1,62 @@ ## Contributing to mGear +### Tuple versus List + +Use List when mutability is required or intended, tuple otherwise. + +```python +for item in ("good", "use", "of", "tuple"): + pass +``` + +Tuples will tell you and the user when used them in an unintended way. + +```python +# You +immutable = (1, 2, 3) + +# User +immutable.append(4) +# ERROR +``` + +Whereas a list would not, and cause a difficult-to-debug error. The fabled "Works on my machine (tm)". + +### Mutable arguments + +Never use a mutable object in an argument signature. + +```python +def function(wrong=[]): + wrong.append(1) + print(wrong) + + +function() +# [1] +function() +# [1, 1] +function() +# [1, 1, 1] +``` + +The same goes for `{}`. Instead, pass `None` and convert internally. + +```python +def function(wrong=None): + wrong = wrong or [] + wrong.append(1) + print(wrong) + +function() +# [1] +function() +# [1] +function() +# [1] +``` + ### Docstrings All docstrings are written in Google Napoleon format. @@ -9,6 +65,8 @@ All docstrings are written in Google Napoleon format. def function(a, b=True): """Summary here, no line breaks + Long description here. + Arguments: a (str): A first argument, mandatory b (bool, optional): A second argument From 901c4cca251a98f682a6f59566c66c6bc6cb2e61 Mon Sep 17 00:00:00 2001 From: Marcus Ottosson Date: Fri, 24 Nov 2017 07:02:06 +0000 Subject: [PATCH 092/134] Pepify remaining freestanding modules --- scripts/mGear_postSpring.py | 32 ++++---------------------- scripts/mGear_proxySlicer.py | 32 ++++---------------------- scripts/mGear_pyqt.py | 43 ++++++++--------------------------- scripts/mGear_riggingTools.py | 32 ++++---------------------- scripts/mGear_rope.py | 32 ++++---------------------- scripts/mGear_utils.py | 32 ++++---------------------- scripts/userSetup.py | 34 ++++----------------------- 7 files changed, 38 insertions(+), 199 deletions(-) diff --git a/scripts/mGear_postSpring.py b/scripts/mGear_postSpring.py index 1087f5b..8533100 100644 --- a/scripts/mGear_postSpring.py +++ b/scripts/mGear_postSpring.py @@ -1,28 +1,6 @@ -# MGEAR is under the terms of the MIT License - -# Copyright (c) 2016 Jeremie Passerin, Miquel Campos - -# Permission is hereby granted, free of charge, to any person obtaining a copy -# of this software and associated documentation files (the "Software"), to deal -# in the Software without restriction, including without limitation the rights -# to use, copy, modify, merge, publish, distribute, sublicense, and/or sell -# copies of the Software, and to permit persons to whom the Software is -# furnished to do so, subject to the following conditions: - -# The above copyright notice and this permission notice shall be included in all -# copies or substantial portions of the Software. - -# THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR -# IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, -# FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE -# AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER -# LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, -# OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE -# SOFTWARE. - -# Author: Jeremie Passerin geerem@hotmail.com www.jeremiepasserin.com -# Author: Miquel Campos hello@miquel-campos.com www.miquel-campos.com -# Date: 2016 / 10 / 10 - +from maya import cmds from mgear.maya.rigbits.postSpring import * -print("[mgear] DEPRECATED: You should import mgear.maya.rigbits.postSpring instead of mGear_postSpring.") +cmds.warning( + "[mgear] DEPRECATED: You should import mgear.maya.rigbits.postSpring " + "instead of mGear_postSpring." +) diff --git a/scripts/mGear_proxySlicer.py b/scripts/mGear_proxySlicer.py index 663b21d..2f2b7df 100644 --- a/scripts/mGear_proxySlicer.py +++ b/scripts/mGear_proxySlicer.py @@ -1,28 +1,6 @@ -# MGEAR is under the terms of the MIT License - -# Copyright (c) 2016 Jeremie Passerin, Miquel Campos - -# Permission is hereby granted, free of charge, to any person obtaining a copy -# of this software and associated documentation files (the "Software"), to deal -# in the Software without restriction, including without limitation the rights -# to use, copy, modify, merge, publish, distribute, sublicense, and/or sell -# copies of the Software, and to permit persons to whom the Software is -# furnished to do so, subject to the following conditions: - -# The above copyright notice and this permission notice shall be included in all -# copies or substantial portions of the Software. - -# THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR -# IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, -# FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE -# AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER -# LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, -# OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE -# SOFTWARE. - -# Author: Jeremie Passerin geerem@hotmail.com www.jeremiepasserin.com -# Author: Miquel Campos hello@miquel-campos.com www.miquel-campos.com -# Date: 2016 / 10 / 10 - +from maya import cmds from mgear.maya.rigbits.proxySlicer import * -print("[mgear] DEPRECATED: You should import mgear.maya.rigbits.proxySlicer instead of mGear_proxySlicer.") +cmds.warning( + "[mgear] DEPRECATED: You should import mgear.maya.rigbits.proxySlicer " + "instead of mGear_proxySlicer." +) diff --git a/scripts/mGear_pyqt.py b/scripts/mGear_pyqt.py index f0dfe54..e8fa3a2 100644 --- a/scripts/mGear_pyqt.py +++ b/scripts/mGear_pyqt.py @@ -1,35 +1,6 @@ -# MGEAR is under the terms of the MIT License - -# Copyright (c) 2016 Jeremie Passerin, Miquel Campos - -# Permission is hereby granted, free of charge, to any person obtaining a copy -# of this software and associated documentation files (the "Software"), to deal -# in the Software without restriction, including without limitation the rights -# to use, copy, modify, merge, publish, distribute, sublicense, and/or sell -# copies of the Software, and to permit persons to whom the Software is -# furnished to do so, subject to the following conditions: - -# The above copyright notice and this permission notice shall be included in all -# copies or substantial portions of the Software. - -# THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR -# IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, -# FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE -# AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER -# LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, -# OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE -# SOFTWARE. - -# Author: Jeremie Passerin geerem@hotmail.com www.jeremiepasserin.com -# Author: Miquel Campos hello@miquel-campos.com www.miquel-campos.com -# Date: 2016 / 10 / 10 - -""" -mGear Qt python binding abstraction. -""" - import os + def _qt_import(binding, shi=False, cui=False): QtGui = None QtCore = None @@ -53,7 +24,6 @@ def _qt_import(binding, shi=False, cui=False): from PyQt4 import QtGui from PyQt4 import QtCore import PyQt4.QtGui as QtWidgets - from PyQt4.QtCore import QObject, pyqtSignal from sip import wrapinstance as wrapInstance from PyQt4.uic import compileUi print("Warning: 'shiboken' is not supported in 'PyQt4' Qt binding") @@ -69,7 +39,7 @@ def _qt_import(binding, shi=False, cui=False): rv.append(compileUi) return rv -## Master qt import function ## + def qt_import(shi=False, cui=False): """ import pyside/pyQt @@ -88,10 +58,15 @@ def qt_import(shi=False, cui=False): for binding in lookup: try: return _qt_import(binding, shi, cui) - except: + except Exception: pass raise _qt_import("ThisBindingSurelyDoesNotExist", False, False) -QtGui, QtCore, QtWidgets, wrapInstance, shiboken, compileUi = qt_import(shi=True, cui=True) +(QtGui, + QtCore, + QtWidgets, + wrapInstance, + shiboken, + compileUi) = qt_import(shi=True, cui=True) diff --git a/scripts/mGear_riggingTools.py b/scripts/mGear_riggingTools.py index 31f898c..b74318f 100644 --- a/scripts/mGear_riggingTools.py +++ b/scripts/mGear_riggingTools.py @@ -1,28 +1,6 @@ -# MGEAR is under the terms of the MIT License - -# Copyright (c) 2016 Jeremie Passerin, Miquel Campos - -# Permission is hereby granted, free of charge, to any person obtaining a copy -# of this software and associated documentation files (the "Software"), to deal -# in the Software without restriction, including without limitation the rights -# to use, copy, modify, merge, publish, distribute, sublicense, and/or sell -# copies of the Software, and to permit persons to whom the Software is -# furnished to do so, subject to the following conditions: - -# The above copyright notice and this permission notice shall be included in all -# copies or substantial portions of the Software. - -# THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR -# IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, -# FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE -# AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER -# LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, -# OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE -# SOFTWARE. - -# Author: Jeremie Passerin geerem@hotmail.com www.jeremiepasserin.com -# Author: Miquel Campos hello@miquel-campos.com www.miquel-campos.com -# Date: 2016 / 10 / 10 - +from maya import cmds from mgear.maya.rigbits import * -print("[mgear] DEPRECATED: You should import mgear.maya.rigbits instead of mGear_riggingTools.") +cmds.warning( + "[mgear] DEPRECATED: You should import mgear.maya.rigbits " + "instead of mGear_riggingTools." +) diff --git a/scripts/mGear_rope.py b/scripts/mGear_rope.py index 6802a42..3f3ece1 100644 --- a/scripts/mGear_rope.py +++ b/scripts/mGear_rope.py @@ -1,28 +1,6 @@ -# MGEAR is under the terms of the MIT License - -# Copyright (c) 2016 Jeremie Passerin, Miquel Campos - -# Permission is hereby granted, free of charge, to any person obtaining a copy -# of this software and associated documentation files (the "Software"), to deal -# in the Software without restriction, including without limitation the rights -# to use, copy, modify, merge, publish, distribute, sublicense, and/or sell -# copies of the Software, and to permit persons to whom the Software is -# furnished to do so, subject to the following conditions: - -# The above copyright notice and this permission notice shall be included in all -# copies or substantial portions of the Software. - -# THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR -# IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, -# FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE -# AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER -# LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, -# OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE -# SOFTWARE. - -# Author: Jeremie Passerin geerem@hotmail.com www.jeremiepasserin.com -# Author: Miquel Campos hello@miquel-campos.com www.miquel-campos.com -# Date: 2016 / 10 / 10 - +from maya import cmds from mgear.maya.rigbits.rope import * -print("[mgear] DEPRECATED: You should import mgear.maya.rigbits.rope instead of mGear_rope.") +cmds.warning( + "[mgear] DEPRECATED: You should import mgear.maya.rigbits.rope " + "instead of mGear_rope." +) diff --git a/scripts/mGear_utils.py b/scripts/mGear_utils.py index 5c7246d..ad9337b 100644 --- a/scripts/mGear_utils.py +++ b/scripts/mGear_utils.py @@ -1,28 +1,6 @@ -# MGEAR is under the terms of the MIT License - -# Copyright (c) 2016 Jeremie Passerin, Miquel Campos - -# Permission is hereby granted, free of charge, to any person obtaining a copy -# of this software and associated documentation files (the "Software"), to deal -# in the Software without restriction, including without limitation the rights -# to use, copy, modify, merge, publish, distribute, sublicense, and/or sell -# copies of the Software, and to permit persons to whom the Software is -# furnished to do so, subject to the following conditions: - -# The above copyright notice and this permission notice shall be included in all -# copies or substantial portions of the Software. - -# THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR -# IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, -# FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE -# AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER -# LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, -# OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE -# SOFTWARE. - -# Author: Jeremie Passerin geerem@hotmail.com www.jeremiepasserin.com -# Author: Miquel Campos hello@miquel-campos.com www.miquel-campos.com -# Date: 2016 / 10 / 10 - +from maya import cmds from mgear.maya.rigbits.utils import * -print("[mgear] DEPRECATED: You should import mgear.maya.rigbits.utils instead of mGear_utils.") +cmds.warning( + "[mgear] DEPRECATED: You should import mgear.maya.rigbits.utils " + "instead of mGear_utils." +) diff --git a/scripts/userSetup.py b/scripts/userSetup.py index e2492c4..fe4f972 100644 --- a/scripts/userSetup.py +++ b/scripts/userSetup.py @@ -1,36 +1,10 @@ -# MGEAR is under the terms of the MIT License +from maya import utils -# Copyright (c) 2016 Jeremie Passerin, Miquel Campos - -# Permission is hereby granted, free of charge, to any person obtaining a copy -# of this software and associated documentation files (the "Software"), to deal -# in the Software without restriction, including without limitation the rights -# to use, copy, modify, merge, publish, distribute, sublicense, and/or sell -# copies of the Software, and to permit persons to whom the Software is -# furnished to do so, subject to the following conditions: - -# The above copyright notice and this permission notice shall be included in all -# copies or substantial portions of the Software. - -# THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR -# IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, -# FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE -# AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER -# LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, -# OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE -# SOFTWARE. - -# Author: Jeremie Passerin geerem@hotmail.com www.jeremiepasserin.com -# Author: Miquel Campos hello@miquel-campos.com www.miquel-campos.com -# Date: 2016 / 10 / 10 - -import maya.utils as utils def mGearLoader(): - """ - Creates mGear menu - """ + """Create mGear menu""" import mGear_menu mGear_menu.CreateMenu() -utils.executeDeferred('mGearLoader()') + +utils.executeDeferred(mGearLoader) From 7e78747543bc69b81e7659fa532de13b3618d2e8 Mon Sep 17 00:00:00 2001 From: Marcus Ottosson Date: Fri, 24 Nov 2017 07:02:13 +0000 Subject: [PATCH 093/134] Update CONTRIBUTING.md --- CONTRIBUTING.md | 40 ++++++++++++++++++++++++++++++++++++++++ 1 file changed, 40 insertions(+) diff --git a/CONTRIBUTING.md b/CONTRIBUTING.md index d8817f2..e91220d 100644 --- a/CONTRIBUTING.md +++ b/CONTRIBUTING.md @@ -1,5 +1,41 @@ ## Contributing to mGear +### Relative imports + +Where possible, relatively reference the root mgear package. + +**Wrong** + +```python +from mgear.maya import rigbits +``` + +**Right** + +```python +from .maya import rigbits +``` + +This enables mgear to be bundled together with another library, e.g. `from .vendor.mgear import maya` and also avoids mgear being picked up from another location on a user's machine and PYTHONPATH. It also shortens the import line, which is always nice. + +
+ +### Avoid `import as` + +Where possible, avoid the use of `import ... as ...`. + +```python +from mgear.maya import rigbits as rb +``` + +This makes it more difficult to understand where a particular call is coming from, when read by someone who didn't initially make that import. + +```python +swg.run_important_function() +# What does this do? :O +``` + +
### Tuple versus List @@ -23,6 +59,8 @@ immutable.append(4) Whereas a list would not, and cause a difficult-to-debug error. The fabled "Works on my machine (tm)". +
+ ### Mutable arguments Never use a mutable object in an argument signature. @@ -57,6 +95,8 @@ function() # [1] ``` +
+ ### Docstrings All docstrings are written in Google Napoleon format. From 55efd3a10f754b8a838a97041a63d2b52ef1c866 Mon Sep 17 00:00:00 2001 From: Marcus Ottosson Date: Fri, 24 Nov 2017 07:25:03 +0000 Subject: [PATCH 094/134] Minor tweaks to shifter --- scripts/mgear/maya/shifter/__init__.py | 17 ++-- scripts/mgear/maya/shifter/guide.py | 135 +++++++++++-------------- 2 files changed, 67 insertions(+), 85 deletions(-) diff --git a/scripts/mgear/maya/shifter/__init__.py b/scripts/mgear/maya/shifter/__init__.py index 8b08bd9..804ba83 100644 --- a/scripts/mgear/maya/shifter/__init__.py +++ b/scripts/mgear/maya/shifter/__init__.py @@ -1,4 +1,4 @@ -"""Shifter's Rig Main class.""" +"""Shifters Rig Main class.""" import os.path import datetime import getpass @@ -62,10 +62,6 @@ def importComponent(comp_type): return module -########################################################## -# RIG -########################################################## - class Rig(object): """The main rig class. @@ -94,8 +90,7 @@ def buildFromSelection(self): """Build the rig from selected guides.""" startTime = datetime.datetime.now() - mgear.log( - "= GEAR RIG SYSTEM ==============================================") + mgear.log("= GEAR RIG SYSTEM " + "=" * 46) # Check guide is valid self.guide.setFromSelection() @@ -107,9 +102,11 @@ def buildFromSelection(self): endTime = datetime.datetime.now() finalTime = endTime - startTime - mgear.log( - "= GEAR BUILD RIG DONE ================ [ " + str(finalTime) + - " ] ======") + mgear.log("= GEAR BUILD RIG DONE {} [ {} ] {}".format( + "=" * 16, + finalTime, + "=" * 7 + )) def build(self): """Build the rig.""" diff --git a/scripts/mgear/maya/shifter/guide.py b/scripts/mgear/maya/shifter/guide.py index 5cce922..a977795 100644 --- a/scripts/mgear/maya/shifter/guide.py +++ b/scripts/mgear/maya/shifter/guide.py @@ -1,23 +1,14 @@ - -""" -Shifter's Main class and Rig class. -""" - -########################################################## -# GLOBAL -########################################################## # Built-in import os -import shutil import sys +import imp import json -import subprocess -from functools import partial -import datetime +import shutil import getpass +import datetime import traceback -import imp - +import subprocess +from functools import partial # pymel import pymel.core as pm @@ -25,17 +16,16 @@ # mgear import mgear -from mgear.maya import attribute, dag, vector, pyqt, skin -import mgear.string -import mgear.string as string +from .. import attribute, dag, vector, pyqt, skin +from ... import string +from ...vendor.Qt import QtCore, QtWidgets -import guideUI as guui -import customStepUI as csui +from . import guideUI as guui +from . import customStepUI as csui # pyside from maya.app.general.mayaMixin import MayaQDockWidget from maya.app.general.mayaMixin import MayaQWidgetDockableMixin -from mgear.vendor.Qt import QtCore, QtWidgets GUIDE_UI_WINDOW_NAME = "guide_UI_window" GUIDE_DOCK_NAME = "Guide_Components" @@ -44,27 +34,24 @@ MGEAR_SHIFTER_CUSTOMSTEP_KEY = "MGEAR_SHIFTER_CUSTOMSTEP_PATH" -########################################################## -# GUIDE -########################################################## - class Main(object): - """The main guide class. + """The main guide class + Provide the methods to add parameters, set parameter values, create property... Attributes: paramNames (list): List of parameter name cause it's actually important to keep them sorted. - paramDefs (dic): Dictionary of parameter definition. - values (dic): Dictionary of options values. + paramDefs (dict): Dictionary of parameter definition. + values (dict): Dictionary of options values. valid (bool): We will check a few things and make sure the guide we are - loading is up to date. - If parameters or object are missing a warning message will be - display and the guide should be updated. + loading is up to date. If parameters or object are missing a + warning message will be display and the guide should be updated. """ + def __init__(self): self.paramNames = [] @@ -73,16 +60,16 @@ def __init__(self): self.valid = True def addPropertyParamenters(self, parent): - """Add attributes ( Attribute = Parameters terminology from Softimage) - from the parameter definition list. + """Add attributes from the parameter definition list - Args: + Arguments: parent (dagNode): The object to add the attributes. Returns: dagNode: parent with the attributes. """ + for scriptName in self.paramNames: paramDef = self.paramDefs[scriptName] paramDef.create(parent) @@ -92,7 +79,7 @@ def addPropertyParamenters(self, parent): def setParamDefValue(self, scriptName, value): """Set the value of parameter with matching scriptname. - Args: + Arguments: scriptName (str): Scriptname of the parameter to edit. value (variant): New value. @@ -100,6 +87,7 @@ def setParamDefValue(self, scriptName, value): bool: False if the parameter wasn't found. """ + if scriptName not in self.paramDefs.keys(): mgear.log("Can't find parameter definition for : " + scriptName, mgear.sev_warning) @@ -113,7 +101,7 @@ def setParamDefValue(self, scriptName, value): def setParamDefValuesFromProperty(self, node): """Set the parameter definition values from the attributes of an object - Args: + Arguments: node (dagNode): The object with the attributes. """ @@ -137,7 +125,7 @@ def setParamDefValuesFromProperty(self, node): def addColorParam(self, scriptName, value=False): """Add color paramenter to the paramenter definition Dictionary. - Args: + Arguments: scriptName (str): The name of the color parameter. value (Variant): The default color value. @@ -157,7 +145,7 @@ def addParam(self, scriptName, valueType, value, niceName=None, shortName=None): """Add paramenter to the paramenter definition Dictionary. - Args: + Arguments: scriptName (str): Parameter scriptname. valueType (str): The Attribute Type. Exp: 'string', 'bool', 'long', etc.. @@ -187,7 +175,7 @@ def addParam(self, scriptName, valueType, value, def addFCurveParam(self, scriptName, keys, interpolation=0): """Add FCurve paramenter to the paramenter definition Dictionary. - Args: + Arguments: scriptName (str): Attribute fullName. keys (list): The keyframes to define the function curve. interpolation (int): the curve interpolation. @@ -206,7 +194,7 @@ def addFCurveParam(self, scriptName, keys, interpolation=0): def addEnumParam(self, scriptName, enum, value=False): """Add FCurve paramenter to the paramenter definition Dictionary. - Args: + Arguments: scriptName (str): Attribute fullName enum (list of str): The list of elements in the enumerate control. value (int): The default value. @@ -239,13 +227,13 @@ class Rig(Main): Attributes: paramNames (list): List of parameter name cause it's actually important to keep them sorted. - paramDefs (dic): Dictionary of parameter definition. - values (dic): Dictionary of options values. + paramDefs (dict): Dictionary of parameter definition. + values (dict): Dictionary of options values. valid (bool): We will check a few things and make sure the guide we are loading is up to date. If parameters or object are missing a warning message will be display and the guide should be updated. - controllers (dic): Dictionary of controllers. - components (dic): Dictionary of component. Keys are the component + controllers (dict): Dictionary of controllers. + components (dict): Dictionary of component. Keys are the component fullname (ie. 'arm_L0') componentsIndex (list): List of component name sorted by order creation (hierarchy order) @@ -355,7 +343,7 @@ def setFromSelection(self): def setFromHierarchy(self, root, branch=True): """Set the guide from given hierarchy. - Args: + Arguments: root (dagNode): The root of the hierarchy to parse. branch (bool): True to parse children components. @@ -443,7 +431,7 @@ def addOptionsValues(self): def findComponentRecursive(self, node, branch=True): """Finds components by recursive search. - Args: + Arguments: node (dagNode): Object frome where start the search. branch (bool): If True search recursive all the children. """ @@ -466,11 +454,11 @@ def findComponentRecursive(self, node, branch=True): self.findComponentRecursive(child) def getComponentGuide(self, comp_type): - """Get the componet guide python object. + """Get the componet guide python object ie. Finds the guide.py of the component. - Args: + Arguments: comp_type (str): The component type. Returns: @@ -498,10 +486,7 @@ def getComponentGuide(self, comp_type): # DRAW def initialHierarchy(self): - """ - Create the initial rig guide hierarchy (model, options...) - - """ + """Create the initial rig guide hierarchy (model, options...)""" self.model = pm.group(n="guide", em=True, w=True) # Options @@ -517,7 +502,7 @@ def initialHierarchy(self): def drawNewComponent(self, parent, comp_type): """Add a new component to the guide. - Args: + Arguments: parent (dagNode): Parent of this new component guide. compType (str): Type of component to add. @@ -607,8 +592,7 @@ def update(self, sel): pm.delete(deleteLater) def duplicate(self, root, symmetrize=False): - """ - Duplicate the guide hierarchy. + """Duplicate the guide hierarchy Note: Indeed this method is not duplicating. @@ -620,7 +604,7 @@ def duplicate(self, root, symmetrize=False): Shifter's guide. - Args: + Arguments: root (dagNode): The guide root to duplicate. symmetrize (bool): If True, duplicate symmetrical in X axis. The guide have to be "Left" or "Right". @@ -651,7 +635,7 @@ def duplicate(self, root, symmetrize=False): if symmetrize: parent = dag.findChild( self.model, - mgear.string.convertRLName( + string.convertRLName( comp_guide.root.getParent().name())) if not parent: parent = comp_guide.root.getParent() @@ -684,7 +668,7 @@ def duplicate(self, root, symmetrize=False): def updateProperties(self, root, newName, newSide, newIndex): """Update the Properties of the component. - Args: + Arguments: root (dagNode): Root of the component. newName (str): New name of the component newSide (str): New side of the component @@ -700,11 +684,7 @@ def updateProperties(self, root, newName, newSide, newIndex): comp_guide.rename(root, newName, newSide, newIndex) -############################################################################### -# HELPER SLOTS -############################################################################### - -class helperSlots(object): +class HelperSlots(object): def updateHostUI(self, lEdit, targetAttr): oType = pm.nodetypes.Transform @@ -918,22 +898,19 @@ def runManualStep(self, widgetList): self.runStep(item.text().split("|")[-1][1:], customStepDic={}) -################## -# Guide Settings -################## -class guideSettingsTab(QtWidgets.QDialog, guui.Ui_Form): +class GuideSettingsTab(QtWidgets.QDialog, guui.Ui_Form): def __init__(self, parent=None): super(guideSettingsTab, self).__init__(parent) self.setupUi(self) -class customStepTab(QtWidgets.QDialog, csui.Ui_Form): +class CustomStepTab(QtWidgets.QDialog, csui.Ui_Form): def __init__(self, parent=None): super(customStepTab, self).__init__(parent) self.setupUi(self) -class guideSettings(MayaQWidgetDockableMixin, QtWidgets.QDialog, helperSlots): +class GuideSettings(MayaQWidgetDockableMixin, QtWidgets.QDialog, HelperSlots): # valueChanged = QtCore.Signal(int) def __init__(self, parent=None): @@ -1219,7 +1196,7 @@ def skinLoad(self, *args): def addCustomStep(self, pre=True, *args): """Add a new custom step - Args: + Arguments: pre (bool, optional): If true adds the steps to the pre step list *args: Maya's Dummy @@ -1270,7 +1247,7 @@ def addCustomStep(self, pre=True, *args): def newCustomStep(self, pre=True, *args): """Creates a new custom step - Args: + Arguments: pre (bool, optional): If true adds the steps to the pre step list *args: Maya's Dummy @@ -1321,8 +1298,8 @@ def run(self, stepDict): shifter rig on post step i.e: stepDict["otherCustomStepName"].ctlMesh gets the ctlMesh from a previous custom step called "otherCustomStepName" - Args: - stepDict (dic): Dictionary containing the objects from + Arguments: + stepDict (dict): Dictionary containing the objects from the previous steps Returns: @@ -1352,7 +1329,7 @@ def run(self, stepDict): def duplicateCustomStep(self, pre=True, *args): """Duplicate the selected step - Args: + Arguments: pre (bool, optional): If true adds the steps to the pre step list *args: Maya's Dummy @@ -1411,14 +1388,16 @@ def duplicateCustomStep(self, pre=True, *args): def exportCustomStep(self, pre=True, *args): """Export custom steps to a json file - Args: + Arguments: pre (bool, optional): If true takes the steps from the pre step list *args: Maya's Dummy Returns: None: None + """ + if pre: stepWidget = self.customStepTab.preCustomStep_listWidget else: @@ -1471,13 +1450,15 @@ def exportCustomStep(self, pre=True, *args): def importCustomStep(self, pre=True, *args): """Import custom steps from a json file - Args: + Arguments: pre (bool, optional): If true import to pre steps list *args: Maya's Dummy Returns: None: None + """ + if pre: stepAttr = "preCustomStep" stepWidget = self.customStepTab.preCustomStep_listWidget @@ -1558,3 +1539,7 @@ def importCustomStep(self, pre=True, *args): # Backwards compatibility aliases MainGuide = Main RigGuide = Rig +helperSlots = HelperSlots +guideSettingsTab = GuideSettingsTab +customStepTab = CustomStepTab +guideSettings = GuideSettings From b8e86f2e130966722b20b5f97fa23f88d616b6cd Mon Sep 17 00:00:00 2001 From: Marcus Ottosson Date: Fri, 24 Nov 2017 07:25:10 +0000 Subject: [PATCH 095/134] Update CONTRINBUTING.md --- CONTRIBUTING.md | 71 ++++++++++++++++++++++++++++++++++++++++++++++++- 1 file changed, 70 insertions(+), 1 deletion(-) diff --git a/CONTRIBUTING.md b/CONTRIBUTING.md index e91220d..8c5de0f 100644 --- a/CONTRIBUTING.md +++ b/CONTRIBUTING.md @@ -1,5 +1,72 @@ ## Contributing to mGear +### Argument shorthands + +In Maya, some arguments have a short equivalent. Don't use it. + +**Wrong** + +```python +pm.workspace(q=True, rd=True) +``` + +**Right** + +```python +pm.workspace(query=True, rootDirectory=True) +``` + +The reason is readability. The second reason is that these shorthands are provided not to make *your* code shorter, but to reduce the filesize of Maya's own internal scene format, the `.ma` files. It's not Pythonic, it's an optimisation. + +
+ +### Members & `__init__` + +Always declare all members of a class in the `__init__` method. + +**Wrong** + +```python +class MyClass(object): + def __init__(self): + super(MyClass, self).__init__() + + self.height = 5 + + def resize(self, width, height): + self.height = height + self.width = width +``` + +**Right** + +```python +class MyClass(object): + def __init__(self): + super(MyClass, self).__init__() + + self.height = 5 + self.width = 5 + + def resize(self, width, height): + self.height = height + self.width = width +``` + +The reason is discoverability. When members are attached to `self` in any subsequent method, it becomes difficult to tell whether it is being created, or modified. More importantly, it becomes impossible to tell which member is used externally. + +```python +from mymodule import MyClass + +myclass = MyClass() +myclass.width = 5 +print(myclass.other_member) +``` + +And at that point, impossible to maintain backwards compatibility should any of the methods creating new members be removed or refactored. + +
+ ### Relative imports Where possible, relatively reference the root mgear package. @@ -147,9 +214,11 @@ def function(): We are refactoring all the code to [PEP8](https://www.python.org/dev/peps/pep-0008/) If you want to contribute please follow the PEP8 standard +
+ #### Ignore PEP8 Errors -"W503": [Break bfore aor after binary operator](https://www.python.org/dev/peps/pep-0008/#should-a-line-break-before-or-after-a-binary-operator) +"W503": [Break bfore or after binary operator](https://www.python.org/dev/peps/pep-0008/#should-a-line-break-before-or-after-a-binary-operator) #### Line break for long arguments From 6362ce1cb3b9e6e66c8b1e0231a410d60410a78e Mon Sep 17 00:00:00 2001 From: Marcus Ottosson Date: Fri, 24 Nov 2017 07:40:19 +0000 Subject: [PATCH 096/134] Add some slack to line count on Code Climate The default limits was 250 lines per module, and 25 lines per method. --- .codeclimate.yml | 8 ++++++++ 1 file changed, 8 insertions(+) diff --git a/.codeclimate.yml b/.codeclimate.yml index a9e0cda..dd2ab95 100644 --- a/.codeclimate.yml +++ b/.codeclimate.yml @@ -10,3 +10,11 @@ exclude_paths: - "*/**/widget.py" - "scripts/mgear/maya/shifter/component/**" - "**UI.py" + +checks: + file-lines: + config: + threshold: 1000 + method-lines: + config: + threshold: 100 From 299bc5082bf9a1629f7c8d7c9aed40bf3648ad0f Mon Sep 17 00:00:00 2001 From: miquelcampos Date: Fri, 24 Nov 2017 17:47:32 +0900 Subject: [PATCH 097/134] PEP8 #100: mGear: mgear.maya modules refactor WIP --- scripts/mgear/maya/__init__.py | 55 +- scripts/mgear/maya/applyop.py | 523 +++++++------ scripts/mgear/maya/attribute.py | 499 +++++++----- scripts/mgear/maya/curve.py | 115 ++- scripts/mgear/maya/dag.py | 123 ++- scripts/mgear/maya/fcurve.py | 53 +- scripts/mgear/maya/icon.py | 1046 ++++++++++++++++---------- scripts/mgear/maya/log.py | 44 +- scripts/mgear/maya/meshNavigation.py | 137 ++-- 9 files changed, 1444 insertions(+), 1151 deletions(-) diff --git a/scripts/mgear/maya/__init__.py b/scripts/mgear/maya/__init__.py index c0be313..288497c 100644 --- a/scripts/mgear/maya/__init__.py +++ b/scripts/mgear/maya/__init__.py @@ -1,42 +1,18 @@ -# MGEAR is under the terms of the MIT License - -# Copyright (c) 2016 Jeremie Passerin, Miquel Campos - -# Permission is hereby granted, free of charge, to any person obtaining a copy -# of this software and associated documentation files (the "Software"), to deal -# in the Software without restriction, including without limitation the rights -# to use, copy, modify, merge, publish, distribute, sublicense, and/or sell -# copies of the Software, and to permit persons to whom the Software is -# furnished to do so, subject to the following conditions: - -# The above copyright notice and this permission notice shall be included in all -# copies or substantial portions of the Software. - -# THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR -# IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, -# FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE -# AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER -# LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, -# OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE -# SOFTWARE. - -# Author: Jeremie Passerin geerem@hotmail.com www.jeremiepasserin.com -# Author: Miquel Campos hello@miquel-campos.com www.miquel-campos.com -# Date: 2016 / 10 / 10 - import pymel.core as pm import mgear + def getMayaVer(): - """ - Get Maya version + """Get Maya version :return: Maya version """ version = pm.versions.current() return version + def aboutMgear(*args): + """About mgear""" version = mgear.getVersion() note = """ @@ -46,15 +22,15 @@ def aboutMgear(*args): Copyright (c) 2016 Jeremie Passerin, Miquel Campos - Permission is hereby granted, free of charge, to any person obtaining a copy - of this software and associated documentation files (the "Software"), to deal - in the Software without restriction, including without limitation the rights - to use, copy, modify, merge, publish, distribute, sublicense, and/or sell - copies of the Software, and to permit persons to whom the Software is - furnished to do so, subject to the following conditions: + Permission is hereby granted, free of charge, to any person obtaining a + copy of this software and associated documentation files (the "Software"), + to deal in the Software without restriction, including without limitation + the rights to use, copy, modify, merge, publish, distribute, sublicense, + and/or sell copies of the Software, and to permit persons to whom the + Software is furnished to do so, subject to the following conditions: - The above copyright notice and this permission notice shall be included in all - copies or substantial portions of the Software. + The above copyright notice and this permission notice shall be included in + all copies or substantial portions of the Software. THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, @@ -64,9 +40,8 @@ def aboutMgear(*args): ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. - Author: Jeremie Passerin geerem@hotmail.com www.jeremiepasserin.com - Author: Miquel Campos hello@miquel-campos.com www.miquel-campos.com + Authors: Jeremie Passerin, Miquel Campos """.format(version) - pm.confirmDialog( title='About mGear', message=note, button=["OK"], - defaultButton='OK', cancelButton='OK', dismissString='OK' ) + pm.confirmDialog(title='About mGear', message=note, button=["OK"], + defaultButton='OK', cancelButton='OK', dismissString='OK') diff --git a/scripts/mgear/maya/applyop.py b/scripts/mgear/maya/applyop.py index a506b6e..1f492d0 100644 --- a/scripts/mgear/maya/applyop.py +++ b/scripts/mgear/maya/applyop.py @@ -1,29 +1,3 @@ -# MGEAR is under the terms of the MIT License - -# Copyright (c) 2016 Jeremie Passerin, Miquel Campos - -# Permission is hereby granted, free of charge, to any person obtaining a copy -# of this software and associated documentation files (the "Software"), to deal -# in the Software without restriction, including without limitation the rights -# to use, copy, modify, merge, publish, distribute, sublicense, and/or sell -# copies of the Software, and to permit persons to whom the Software is -# furnished to do so, subject to the following conditions: - -# The above copyright notice and this permission notice shall be included in all -# copies or substantial portions of the Software. - -# THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR -# IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, -# FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE -# AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER -# LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, -# OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE -# SOFTWARE. - -# Author: Jeremie Passerin geerem@hotmail.com www.jeremiepasserin.com -# Author: Miquel Campos hello@miquel-campos.com www.miquel-campos.com -# Date: 2016 / 10 / 10 - """ **Apply operator module** @@ -39,8 +13,7 @@ # GLOBAL ############################################# import pymel.core as pm -import pymel.core.datatypes as dt - +from pymel.core import datatypes ############################################# # BUILT IN NODES @@ -49,31 +22,35 @@ def curvecns_op(crv, inputs=[]): - - for i, item in enumerate(inputs): node = pm.createNode("decomposeMatrix") - pm.connectAttr(item+".worldMatrix[0]", node+".inputMatrix") - pm.connectAttr(node+".outputTranslate", crv+".controlPoints[%s]"%i) + pm.connectAttr(item + ".worldMatrix[0]", node + ".inputMatrix") + pm.connectAttr(node + ".outputTranslate", + crv + ".controlPoints[%s]" % i) return node + def splineIK(name, chn, parent=None, cParent=None, curve=None): - """ - Apply a splineIK solver to a chain. + """Apply a splineIK solver to a chain. - Args: + Arguments: name (str): Name of the operator node. - chn (list of joints): List of joints. At less 2 joints should be in the list. + chn (list of joints): List of joints. At less 2 joints should be in + the list. parent (dagNode): Parent for the ikHandle. cParent (dagNode): Parent for the curve. - curve (dagNode): Specifies the curve to be used by the ikSplineHandle. This param is optional. + curve (dagNode): Specifies the curve to be used by the ikSplineHandle. + This param is optional. Returns: list: ikHandle node and splinecrv in a list Example: - >>> aop.splineIK(self.getName("rollRef"), self.rollRef, parent=self.root, cParent=self.bone0 ) + >>> aop.splineIK(self.getName("rollRef"), + self.rollRef, + parent=self.root, + cParent=self.bone0 ) """ data = {} @@ -85,10 +62,9 @@ def splineIK(name, chn, parent=None, cParent=None, curve=None): if curve is not None: data["curve"] = curve - node, effector, splineCrv = pm.ikHandle(**data) - #converting to pyNode - node = pm.PyNode("|"+node) + # converting to pyNode + node = pm.PyNode("|" + node) effector = pm.PyNode(effector) splineCrv = pm.PyNode(splineCrv) @@ -105,13 +81,16 @@ def splineIK(name, chn, parent=None, cParent=None, curve=None): def oriCns(driver, driven, maintainOffset=False): - """ - Apply orientation constraint changing XYZ default connexions by rotate compound connexions + """Apply orientation constraint + + Apply orientation constraint changing XYZ default connexions by + rotate compound connexions Note: - We have found an evaluation difference in the values if the connexion is compound or by axis + We have found an evaluation difference in the values if the connexion + is compound or by axis - Args: + Arguments: driver (dagNode or dagNode list): Driver object. driven (dagNode): Driven object. maintainOffset (bool): Keep the offset. @@ -131,8 +110,9 @@ def oriCns(driver, driven, maintainOffset=False): """ oriCns = pm.orientConstraint(driver, driven, maintainOffset=maintainOffset) for axis in "XYZ": - pm.disconnectAttr(oriCns+".constraintRotate"+axis, driven+".rotate"+axis) - pm.connectAttr(oriCns+".constraintRotate", driven+".rotate", f=True) + pm.disconnectAttr(oriCns + ".constraintRotate" + axis, + driven + ".rotate" + axis) + pm.connectAttr(oriCns + ".constraintRotate", driven + ".rotate", f=True) return oriCns @@ -141,11 +121,13 @@ def pathCns(obj, curve, cnsType=False, u=0, tangent=False): """ Apply a path constraint or curve constraint. - Args: + Arguments: obj (dagNode): Constrained object. curve (Nurbscurve): Constraining Curve. - cnsType (int): 0 for Path Constraint, 1 for Curve Constraint (Parametric). - u (float): Position of the object on the curve (from 0 to 100 for path constraint, from 0 to 1 for Curve cns). + cnsType (int): 0 for Path Constraint, 1 for Curve + Constraint (Parametric). + u (float): Position of the object on the curve (from 0 to 100 for path + constraint, from 0 to 1 for Curve cns). tangent (bool): Keep tangent orientation option. Returns: @@ -164,15 +146,23 @@ def pathCns(obj, curve, cnsType=False, u=0, tangent=False): return node -#TODO: review function to make wupObject optional -def aimCns(obj, master, axis="xy", wupType="objectrotation", wupVector=[0,1,0], wupObject=None, maintainOffset=False): - """ - Apply a direction constraint +# TODO: review function to make wupObject optional - Args: + +def aimCns(obj, + master, + axis="xy", + wupType="objectrotation", + wupVector=[0, 1, 0], + wupObject=None, + maintainOffset=False): + """Apply a direction constraint + + Arguments: obj (dagNode): Constrained object. master (dagNode): Constraining Object. - axis (str): Define pointing axis and upvector axis (combination of xyz and -x-y-z). + axis (str): Define pointing axis and upvector + axis (combination of xyz and -x-y-z). wupType (str): scene, object, objectrotation, vector, or none. wupVector (list of 3 float): world up vector. Exp: [0.0,1.0,0.0]. wupObject (pyNode): world up object. @@ -180,39 +170,75 @@ def aimCns(obj, master, axis="xy", wupType="objectrotation", wupVector=[0,1,0], Returns: pyNode: Newly created constraint. + """ - node = pm.aimConstraint(master, obj, worldUpType=wupType, worldUpVector=wupVector, worldUpObject=wupObject, maintainOffset=maintainOffset) - - if axis == "xy": a = [1,0,0,0,1,0] - elif axis == "xz": a = [1,0,0,0,0,1] - elif axis == "yx": a = [0,1,0,1,0,0] - elif axis == "yz": a = [0,1,0,0,0,1] - elif axis == "zx": a = [0,0,1,1,0,0] - elif axis == "zy": a = [0,0,1,0,1,0] - - elif axis == "-xy": a = [-1,0,0,0,1,0] - elif axis == "-xz": a = [-1,0,0,0,0,1] - elif axis == "-yx": a = [0,-1,0,1,0,0] - elif axis == "-yz": a = [0,-1,0,0,0,1] - elif axis == "-zx": a = [0,0,-1,1,0,0] - elif axis == "-zy": a = [0,0,-1,0,1,0] - - elif axis == "x-y": a = [1,0,0,0,-1,0] - elif axis == "x-z": a = [1,0,0,0,0,-1] - elif axis == "y-x": a = [0,1,0,-1,0,0] - elif axis == "y-z": a = [0,1,0,0,0,-1] - elif axis == "z-x": a = [0,0,1,-1,0,0] - elif axis == "z-y": a = [0,0,1,0,-1,0] - - elif axis == "-x-y": a = [-1,0,0,0,-1,0] - elif axis == "-x-z": a = [-1,0,0,0,0,-1] - elif axis == "-y-x": a = [0,-1,0,-1,0,0] - elif axis == "-y-z": a = [0,-1,0,0,0,-1] - elif axis == "-z-x": a = [0,0,-1,-1,0,0] - elif axis == "-z-y": a = [0,0,-1,0,-1,0] - - for i, name in enumerate(["aimVectorX", "aimVectorY", "aimVectorZ", "upVectorX", "upVectorY", "upVectorZ"]): - pm.setAttr(node+"."+name, a[i]) + node = pm.aimConstraint(master, + obj, + worldUpType=wupType, + worldUpVector=wupVector, + worldUpObject=wupObject, + maintainOffset=maintainOffset) + + if axis == "xy": + a = [1, 0, 0, 0, 1, 0] + elif axis == "xz": + a = [1, 0, 0, 0, 0, 1] + elif axis == "yx": + a = [0, 1, 0, 1, 0, 0] + elif axis == "yz": + a = [0, 1, 0, 0, 0, 1] + elif axis == "zx": + a = [0, 0, 1, 1, 0, 0] + elif axis == "zy": + a = [0, 0, 1, 0, 1, 0] + + elif axis == "-xy": + a = [-1, 0, 0, 0, 1, 0] + elif axis == "-xz": + a = [-1, 0, 0, 0, 0, 1] + elif axis == "-yx": + a = [0, -1, 0, 1, 0, 0] + elif axis == "-yz": + a = [0, -1, 0, 0, 0, 1] + elif axis == "-zx": + a = [0, 0, -1, 1, 0, 0] + elif axis == "-zy": + a = [0, 0, -1, 0, 1, 0] + + elif axis == "x-y": + a = [1, 0, 0, 0, -1, 0] + elif axis == "x-z": + a = [1, 0, 0, 0, 0, -1] + elif axis == "y-x": + a = [0, 1, 0, -1, 0, 0] + elif axis == "y-z": + a = [0, 1, 0, 0, 0, -1] + elif axis == "z-x": + a = [0, 0, 1, -1, 0, 0] + elif axis == "z-y": + a = [0, 0, 1, 0, -1, 0] + + elif axis == "-x-y": + a = [-1, 0, 0, 0, -1, 0] + elif axis == "-x-z": + a = [-1, 0, 0, 0, 0, -1] + elif axis == "-y-x": + a = [0, -1, 0, -1, 0, 0] + elif axis == "-y-z": + a = [0, -1, 0, 0, 0, -1] + elif axis == "-z-x": + a = [0, 0, -1, -1, 0, 0] + elif axis == "-z-y": + a = [0, 0, -1, 0, -1, 0] + + for i, name in enumerate(["aimVectorX", + "aimVectorY", + "aimVectorZ", + "upVectorX", + "upVectorY", + "upVectorZ"]): + + pm.setAttr(node + "." + name, a[i]) return node @@ -220,11 +246,11 @@ def aimCns(obj, master, axis="xy", wupType="objectrotation", wupVector=[0,1,0], # CUSTOM NODES ############################################# + def gear_spring_op(in_obj, goal=False): - """ - Apply mGear spring node. + """Apply mGear spring node. - Args: + Arguments: in_obj (dagNode): Constrained object. goal (dagNode): By default is False. @@ -236,69 +262,74 @@ def gear_spring_op(in_obj, goal=False): node = pm.createNode("mgear_springNode") - pm.connectAttr("time1.outTime", node+".time") + pm.connectAttr("time1.outTime", node + ".time") dm_node = pm.createNode("decomposeMatrix") - pm.connectAttr(goal+".parentMatrix", dm_node+".inputMatrix") - pm.connectAttr(dm_node+".outputTranslate", node+".goal") + pm.connectAttr(goal + ".parentMatrix", dm_node + ".inputMatrix") + pm.connectAttr(dm_node + ".outputTranslate", node + ".goal") cm_node = pm.createNode("composeMatrix") - pm.connectAttr(node+".output", cm_node+".inputTranslate") + pm.connectAttr(node + ".output", cm_node + ".inputTranslate") mm_node = pm.createNode("mgear_mulMatrix") - - pm.connectAttr(cm_node+".outputMatrix", mm_node+".matrixA") - pm.connectAttr(in_obj+".parentInverseMatrix", mm_node+".matrixB") + pm.connectAttr(cm_node + ".outputMatrix", mm_node + ".matrixA") + pm.connectAttr(in_obj + ".parentInverseMatrix", mm_node + ".matrixB") dm_node2 = pm.createNode("decomposeMatrix") - pm.connectAttr(mm_node+".output", dm_node2+".inputMatrix") - pm.connectAttr(dm_node2+".outputTranslate", in_obj+".translate") + pm.connectAttr(mm_node + ".output", dm_node2 + ".inputMatrix") + pm.connectAttr(dm_node2 + ".outputTranslate", in_obj + ".translate") - pm.setAttr(node+".stiffness", 0.5) - pm.setAttr(node+".damping", 0.5) + pm.setAttr(node + ".stiffness", 0.5) + pm.setAttr(node + ".damping", 0.5) return node def gear_mulmatrix_op(mA, mB, target=False, transform='srt'): - """ - Create mGear multiply Matrix node. + """Create mGear multiply Matrix node. Note: - This node have same functionality as the default Maya matrix multiplication. + This node have same functionality as the default Maya matrix + multiplication. - Args: + Arguments: mA (matrix): input matrix A. mB (matrix): input matrix B. target (dagNode): object target to apply the transformation - transform (str): if target is True. out transform to SRT valid value s r t + transform (str): if target is True. out transform to SRT valid + value s r t Returns: pyNode: Newly created mGear_multMatrix node + """ node = pm.createNode("mgear_mulMatrix") for m, mi in zip([mA, mB], ['matrixA', 'matrixB']): - if isinstance(m, dt.Matrix): + if isinstance(m, datatypes.Matrix): pm.setAttr(node.attr(mi), m) else: pm.connectAttr(m, node.attr(mi)) if target: dm_node = pm.createNode("decomposeMatrix") - pm.connectAttr(node+".output", dm_node+".inputMatrix") + pm.connectAttr(node + ".output", dm_node + ".inputMatrix") if 't' in transform: - pm.connectAttr(dm_node+".outputTranslate", target.attr("translate"), f=True) + pm.connectAttr(dm_node + ".outputTranslate", + target.attr("translate"), f=True) if 'r' in transform: - pm.connectAttr(dm_node+".outputRotate", target.attr("rotate"), f=True) + pm.connectAttr(dm_node + ".outputRotate", + target.attr("rotate"), f=True) if 's' in transform: - pm.connectAttr(dm_node+".outputScale", target.attr("scale"), f=True) + pm.connectAttr(dm_node + ".outputScale", + target.attr("scale"), f=True) return node + def gear_intmatrix_op(mA, mB, blend=0): """ create mGear interpolate Matrix node. - Args: + Arguments: mA (matrix): Input matrix A. mB (matrix): Input matrix A. blend (float or connection): Blending value. @@ -308,23 +339,27 @@ def gear_intmatrix_op(mA, mB, blend=0): """ node = pm.createNode("mgear_intMatrix") - pm.connectAttr(mA, node+".matrixA") - pm.connectAttr(mB, node+".matrixB") + pm.connectAttr(mA, node + ".matrixA") + pm.connectAttr(mB, node + ".matrixB") - if isinstance(blend, str) or isinstance(blend, unicode) or isinstance(blend, pm.Attribute): - pm.connectAttr(blend, node+".blend") + if (isinstance(blend, str) + or isinstance(blend, unicode) + or isinstance(blend, pm.Attribute)): + pm.connectAttr(blend, node + ".blend") else: - pm.setAttr(node+".blend", blend) + pm.setAttr(node + ".blend", blend) return node + def gear_curvecns_op(crv, inputs=[]): """ create mGear curvecns node. - Args: + Arguments: crv (nurbsCurve): Nurbs curve. - inputs (List of dagNodes): Input object to drive the curve. Should be same number as crv points. + inputs (List of dagNodes): Input object to drive the curve. Should be + same number as crv points. Also the order should be the same as the points Returns: @@ -334,15 +369,20 @@ def gear_curvecns_op(crv, inputs=[]): node = pm.deformer(type="mgear_curveCns")[0] for i, item in enumerate(inputs): - pm.connectAttr(item+".worldMatrix", node+".inputs[%s]"%i) + pm.connectAttr(item + ".worldMatrix", node + ".inputs[%s]" % i) return node -def gear_curveslide2_op(outcrv, incrv, position=0, maxstretch=1, maxsquash=1, softness=0): - """ - Apply a sn_curveslide2_op operator - Args: +def gear_curveslide2_op(outcrv, + incrv, + position=0, + maxstretch=1, + maxsquash=1, + softness=0): + """Apply a sn_curveslide2_op operator + + Arguments: outcrv (NurbsCurve): Out Curve. incrv (NurbsCurve): In Curve. position (float): Default position value (from 0 to 1). @@ -356,24 +396,26 @@ def gear_curveslide2_op(outcrv, incrv, position=0, maxstretch=1, maxsquash=1, so pm.select(outcrv) node = pm.deformer(type="mgear_slideCurve2")[0] - pm.connectAttr(incrv+".local", node+".master_crv") - pm.connectAttr(incrv+".worldMatrix", node+".master_mat") + pm.connectAttr(incrv + ".local", node + ".master_crv") + pm.connectAttr(incrv + ".worldMatrix", node + ".master_mat") - pm.setAttr(node+".master_length", pm.arclen(incrv)) - pm.setAttr(node+".slave_length", pm.arclen(incrv)) - pm.setAttr(node+".position", 0) - pm.setAttr(node+".maxstretch", 1) - pm.setAttr(node+".maxsquash", 1) - pm.setAttr(node+".softness", 0) + pm.setAttr(node + ".master_length", pm.arclen(incrv)) + pm.setAttr(node + ".slave_length", pm.arclen(incrv)) + pm.setAttr(node + ".position", 0) + pm.setAttr(node + ".maxstretch", 1) + pm.setAttr(node + ".maxsquash", 1) + pm.setAttr(node + ".softness", 0) return node + def gear_spinePointAtOp(cns, startobj, endobj, blend=.5, axis="-Z"): """ Apply a SpinePointAt operator - Args: - cns (Constraint): The constraint to apply the operator on (must be a curve, path or direction constraint). + Arguments: + cns (Constraint): The constraint to apply the operator on (must be a + curve, path or direction constraint). startobj (dagNode): Start Reference. endobj (dagNode): End Reference. blend (float): Blend influence value from 0 to 1. @@ -385,16 +427,16 @@ def gear_spinePointAtOp(cns, startobj, endobj, blend=.5, axis="-Z"): node = pm.createNode("mgear_spinePointAt") # Inputs - pm.setAttr(node+".blend", blend) - pm.setAttr(node+".axe", ["X", "Y", "Z", "-X", "-Y", "-Z"].index(axis)) + pm.setAttr(node + ".blend", blend) + pm.setAttr(node + ".axe", ["X", "Y", "Z", "-X", "-Y", "-Z"].index(axis)) - pm.connectAttr(startobj+".rotate", node+".rotA") - pm.connectAttr(endobj+".rotate", node+".rotB") + pm.connectAttr(startobj + ".rotate", node + ".rotA") + pm.connectAttr(endobj + ".rotate", node + ".rotB") # Outputs - pm.setAttr(cns+".worldUpType", 3) + pm.setAttr(cns + ".worldUpType", 3) - pm.connectAttr(node+".pointAt", cns+".worldUpVector") + pm.connectAttr(node + ".pointAt", cns + ".worldUpVector") return node @@ -403,8 +445,9 @@ def gear_spinePointAtOpWM(cns, startobj, endobj, blend=.5, axis="-Z"): """ Apply a SpinePointAt operator using world matrix - Args: - cns Constraint: The constraint to apply the operator on (must be a curve, path or direction constraint). + Arguments: + cns Constraint: The constraint to apply the operator on (must be a + curve, path or direction constraint). startobj (dagNode): Start Reference. endobj (dagNode): End Reference. blend (float): Blend influence value from 0 to 1. @@ -416,39 +459,51 @@ def gear_spinePointAtOpWM(cns, startobj, endobj, blend=.5, axis="-Z"): node = pm.createNode("mgear_spinePointAt") # Inputs - pm.setAttr(node+".blend", blend) - pm.setAttr(node+".axe", ["X", "Y", "Z", "-X", "-Y", "-Z"].index(axis)) + pm.setAttr(node + ".blend", blend) + pm.setAttr(node + ".axe", ["X", "Y", "Z", "-X", "-Y", "-Z"].index(axis)) dem_node1 = pm.createNode("decomposeMatrix") dem_node2 = pm.createNode("decomposeMatrix") - pm.connectAttr(startobj+".worldMatrix", dem_node1+".inputMatrix") - pm.connectAttr(endobj+".worldMatrix", dem_node2+".inputMatrix") - + pm.connectAttr(startobj + ".worldMatrix", dem_node1 + ".inputMatrix") + pm.connectAttr(endobj + ".worldMatrix", dem_node2 + ".inputMatrix") - - pm.connectAttr(dem_node1+".outputRotate", node+".rotA") - pm.connectAttr(dem_node2+".outputRotate", node+".rotB") + pm.connectAttr(dem_node1 + ".outputRotate", node + ".rotA") + pm.connectAttr(dem_node2 + ".outputRotate", node + ".rotB") # Outputs - pm.setAttr(cns+".worldUpType", 3) + pm.setAttr(cns + ".worldUpType", 3) - pm.connectAttr(node+".pointAt", cns+".worldUpVector") + pm.connectAttr(node + ".pointAt", cns + ".worldUpVector") return node -def gear_ikfk2bone_op(out=[], root=None, eff=None, upv=None, fk0=None, fk1=None, fk2=None, lengthA=5, lengthB=3, negate=False, blend=0): - """ - Apply a sn_ikfk2bone_op operator - Args: - out (list of dagNodes): The constrained outputs order must be respected (BoneA, BoneB, Center, CenterN, Eff), - set it to None if you don't want one of the output. +def gear_ikfk2bone_op(out=[], + root=None, + eff=None, + upv=None, + fk0=None, + fk1=None, + fk2=None, + lengthA=5, + lengthB=3, + negate=False, + blend=0): + """Apply a sn_ikfk2bone_op operator + + Arguments: + out (list of dagNodes): The constrained outputs order must be respected + (BoneA, BoneB, Center, CenterN, Eff), set it to None if you don't + want one of the output. root (dagNode): Object that will act as the root of the chain. eff (dagNode): Object that will act as the eff controler of the chain. upv (dagNode): Object that will act as the up vector of the chain. - fk0 (dagNode): Object that will act as the first fk controler of the chain. - fk1 (dagNode): Object that will act as the second fk controler of the chain. - fk2 (dagNode): Object that will act as the fk effector controler of the chain. + fk0 (dagNode): Object that will act as the first fk controler of the + chain. + fk1 (dagNode): Object that will act as the second fk controler of the + chain. + fk2 (dagNode): Object that will act as the fk effector controler of the + chain. lengthA (float): Length of first bone. lengthB (float): Length of second bone. negate (bool): Use with negative Scale. @@ -456,72 +511,73 @@ def gear_ikfk2bone_op(out=[], root=None, eff=None, upv=None, fk0=None, fk1=None, Returns: pyNode: The newly created operator. + """ node = pm.createNode("mgear_ikfk2Bone") # Inputs - pm.setAttr(node+".lengthA", lengthA) - pm.setAttr(node+".lengthB", lengthB) - pm.setAttr(node+".negate", negate) - pm.setAttr(node+".blend", blend) - - pm.connectAttr(root+".worldMatrix", node+".root") - pm.connectAttr(eff+".worldMatrix", node+".ikref") - pm.connectAttr(upv+".worldMatrix", node+".upv") - pm.connectAttr(fk0+".worldMatrix", node+".fk0") - pm.connectAttr(fk1+".worldMatrix", node+".fk1") - pm.connectAttr(fk2+".worldMatrix", node+".fk2") - + pm.setAttr(node + ".lengthA", lengthA) + pm.setAttr(node + ".lengthB", lengthB) + pm.setAttr(node + ".negate", negate) + pm.setAttr(node + ".blend", blend) + + pm.connectAttr(root + ".worldMatrix", node + ".root") + pm.connectAttr(eff + ".worldMatrix", node + ".ikref") + pm.connectAttr(upv + ".worldMatrix", node + ".upv") + pm.connectAttr(fk0 + ".worldMatrix", node + ".fk0") + pm.connectAttr(fk1 + ".worldMatrix", node + ".fk1") + pm.connectAttr(fk2 + ".worldMatrix", node + ".fk2") # Outputs if out[0] is not None: - pm.connectAttr(out[0]+".parentMatrix", node+".inAparent") + pm.connectAttr(out[0] + ".parentMatrix", node + ".inAparent") dm_node = pm.createNode("decomposeMatrix") - pm.connectAttr(node+".outA", dm_node+".inputMatrix") - pm.connectAttr(dm_node+".outputTranslate", out[0]+".translate") - pm.connectAttr(dm_node+".outputRotate", out[0]+".rotate") - pm.connectAttr(dm_node+".outputScale", out[0]+".scale") + pm.connectAttr(node + ".outA", dm_node + ".inputMatrix") + pm.connectAttr(dm_node + ".outputTranslate", out[0] + ".translate") + pm.connectAttr(dm_node + ".outputRotate", out[0] + ".rotate") + pm.connectAttr(dm_node + ".outputScale", out[0] + ".scale") if out[1] is not None: - pm.connectAttr(out[1]+".parentMatrix", node+".inBparent") + pm.connectAttr(out[1] + ".parentMatrix", node + ".inBparent") dm_node = pm.createNode("decomposeMatrix") - pm.connectAttr(node+".outB", dm_node+".inputMatrix") - pm.connectAttr(dm_node+".outputTranslate", out[1]+".translate") - pm.connectAttr(dm_node+".outputRotate", out[1]+".rotate") - pm.connectAttr(dm_node+".outputScale", out[1]+".scale") + pm.connectAttr(node + ".outB", dm_node + ".inputMatrix") + pm.connectAttr(dm_node + ".outputTranslate", out[1] + ".translate") + pm.connectAttr(dm_node + ".outputRotate", out[1] + ".rotate") + pm.connectAttr(dm_node + ".outputScale", out[1] + ".scale") if out[2] is not None: - pm.connectAttr(out[2]+".parentMatrix", node+".inCenterparent") + pm.connectAttr(out[2] + ".parentMatrix", node + ".inCenterparent") dm_node = pm.createNode("decomposeMatrix") - pm.connectAttr(node+".outCenter", dm_node+".inputMatrix") - pm.connectAttr(dm_node+".outputTranslate", out[2]+".translate") - pm.connectAttr(dm_node+".outputRotate", out[2]+".rotate") - #connectAttr(dm_node+".outputScale", out[2]+".scale") # the scaling is not working with FK blended to 1. \ - #The output is from the solver I need to review the c++ solver + pm.connectAttr(node + ".outCenter", dm_node + ".inputMatrix") + pm.connectAttr(dm_node + ".outputTranslate", out[2] + ".translate") + pm.connectAttr(dm_node + ".outputRotate", out[2] + ".rotate") + # connectAttr(dm_node+".outputScale", out[2]+".scale") # the scaling + # is not working with FK blended to 1. + # The output is from the solver I need to review the c++ solver if out[3] is not None: - pm.connectAttr(out[3]+".parentMatrix", node+".inEffparent") + pm.connectAttr(out[3] + ".parentMatrix", node + ".inEffparent") dm_node = pm.createNode("decomposeMatrix") - pm.connectAttr(node+".outEff", dm_node+".inputMatrix") - pm.connectAttr(dm_node+".outputTranslate", out[3]+".translate") - pm.connectAttr(dm_node+".outputRotate", out[3]+".rotate") - pm.connectAttr(dm_node+".outputScale", out[3]+".scale") + pm.connectAttr(node + ".outEff", dm_node + ".inputMatrix") + pm.connectAttr(dm_node + ".outputTranslate", out[3] + ".translate") + pm.connectAttr(dm_node + ".outputRotate", out[3] + ".rotate") + pm.connectAttr(dm_node + ".outputScale", out[3] + ".scale") return node def gear_rollsplinekine_op(out, controlers=[], u=.5, subdiv=10): - """ - Apply a sn_rollsplinekine_op operator + """Apply a sn_rollsplinekine_op operator - Args: + Arguments: out (dagNode): onstrained Object. - controlers (list of dagNodes): Objects that will act as controler of the bezier curve. - Objects must have a parent that will be used as an input for the operator. + controlers (list of dagNodes): Objects that will act as controler of + the bezier curve. Objects must have a parent that will be used as + an input for the operator. u (float): Position of the object on the bezier curve (from 0 to 1). subdiv (int): spline subdivision precision. @@ -531,71 +587,78 @@ def gear_rollsplinekine_op(out, controlers=[], u=.5, subdiv=10): node = pm.createNode("mgear_rollSplineKine") # Inputs - pm.setAttr(node+".u", u) - pm.setAttr(node+".subdiv", subdiv) + pm.setAttr(node + ".u", u) + pm.setAttr(node + ".subdiv", subdiv) dm_node = pm.createNode("decomposeMatrix") - pm.connectAttr(node+".output", dm_node+".inputMatrix") - pm.connectAttr(dm_node+".outputTranslate", out+".translate") - pm.connectAttr(dm_node+".outputRotate", out+".rotate") + pm.connectAttr(node + ".output", dm_node + ".inputMatrix") + pm.connectAttr(dm_node + ".outputTranslate", out + ".translate") + pm.connectAttr(dm_node + ".outputRotate", out + ".rotate") # connectAttr(dm_node+".outputScale", out+".scale") - pm.connectAttr(out+".parentMatrix", node+".outputParent") + pm.connectAttr(out + ".parentMatrix", node + ".outputParent") for i, obj in enumerate(controlers): - pm.connectAttr(obj+".parentMatrix", node+".ctlParent[%s]"%i) + pm.connectAttr(obj + ".parentMatrix", node + ".ctlParent[%s]" % i) - pm.connectAttr(obj+".worldMatrix", node+".inputs[%s]"%i) - pm.connectAttr(obj+".rx", node+".inputsRoll[%s]"%i) + pm.connectAttr(obj + ".worldMatrix", node + ".inputs[%s]" % i) + pm.connectAttr(obj + ".rx", node + ".inputsRoll[%s]" % i) return node -def gear_squashstretch2_op(out, sclref=None, length=5, axis="x", scaleComp=None): - """ - Apply a sn_squashstretch2_op operator - Args: +def gear_squashstretch2_op(out, + sclref=None, + length=5, + axis="x", + scaleComp=None): + """Apply a sn_squashstretch2_op operator + + Arguments: out (dagNode): Constrained object. sclref (dagNode): Global scaling reference object. length (float): Rest Length of the S&S. axis (str): 'x' for scale all except x axis... - scaleComp (list of float): extra scale compensation to avoid double scale in some situations. + scaleComp (list of float): extra scale compensation to avoid double + scale in some situations. Returns: pyNode: The newly created operator. """ node = pm.createNode("mgear_squashStretch2") - pm.setAttr(node+".global_scaleX", 1) - pm.setAttr(node+".global_scaleY", 1) - pm.setAttr(node+".global_scaleZ", 1) - pm.setAttr(node+".driver_ctr", length) - pm.setAttr(node+".driver_max", length * 2) - pm.setAttr(node+".driver_min", length / 2) - pm.setAttr(node+".axis", "xyz".index(axis)) + pm.setAttr(node + ".global_scaleX", 1) + pm.setAttr(node + ".global_scaleY", 1) + pm.setAttr(node + ".global_scaleZ", 1) + pm.setAttr(node + ".driver_ctr", length) + pm.setAttr(node + ".driver_max", length * 2) + pm.setAttr(node + ".driver_min", length / 2) + pm.setAttr(node + ".axis", "xyz".index(axis)) - # we use a mult div node to force the evaluation in a composed attribute in osx + # we use a mult div node to force the evaluation in a composed attribute in + # osx # Also helper connection for scale compensation (scaleComp) mult_node = pm.createNode("multiplyDivide") - pm.connectAttr(node+".output", mult_node+".input1") + pm.connectAttr(node + ".output", mult_node + ".input1") for axis in "XYZ": - pm.connectAttr(mult_node+".output%s"%axis, out+".scale%s"%axis) + pm.connectAttr(mult_node + ".output%s" % axis, out + ".scale%s" % axis) if scaleComp: - pm.connectAttr(scaleComp, mult_node+".input2") + pm.connectAttr(scaleComp, mult_node + ".input2") if sclref is not None: dm_node = pm.createNode("decomposeMatrix") - pm.connectAttr(sclref+".worldMatrix", dm_node+".inputMatrix") - pm.connectAttr(dm_node+".outputScale", node+".global_scale") + pm.connectAttr(sclref + ".worldMatrix", dm_node + ".inputMatrix") + pm.connectAttr(dm_node + ".outputScale", node + ".global_scale") return node + def gear_inverseRotorder_op(out_obj, in_obj): """ Apply a sn_inverseRotorder_op operator - Args: + Arguments: out_obj (dagNode): Output object. in_obj (dagNode): Input object. @@ -604,7 +667,7 @@ def gear_inverseRotorder_op(out_obj, in_obj): """ node = pm.createNode("mgear_inverseRotOrder") - pm.connectAttr(in_obj+".ro", node+".ro") - pm.connectAttr(node+".output", out_obj+".ro") + pm.connectAttr(in_obj + ".ro", node + ".ro") + pm.connectAttr(node + ".output", out_obj + ".ro") return node diff --git a/scripts/mgear/maya/attribute.py b/scripts/mgear/maya/attribute.py index 8714ade..2788efa 100644 --- a/scripts/mgear/maya/attribute.py +++ b/scripts/mgear/maya/attribute.py @@ -1,55 +1,38 @@ -# MGEAR is under the terms of the MIT License - -# Copyright (c) 2016 Jeremie Passerin, Miquel Campos - -# Permission is hereby granted, free of charge, to any person obtaining a copy -# of this software and associated documentation files (the "Software"), to deal -# in the Software without restriction, including without limitation the rights -# to use, copy, modify, merge, publish, distribute, sublicense, and/or sell -# copies of the Software, and to permit persons to whom the Software is -# furnished to do so, subject to the following conditions: - -# The above copyright notice and this permission notice shall be included in all -# copies or substantial portions of the Software. - -# THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR -# IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, -# FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE -# AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER -# LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, -# OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE -# SOFTWARE. - -# Author: Jeremie Passerin geerem@hotmail.com www.jeremiepasserin.com -# Author: Miquel Campos hello@miquel-campos.com www.miquel-campos.com -# Date: 2016 / 10 / 10 - -""" -Attribute creation functions. -""" +"""Attribute creation functions""" ############################################# # GLOBAL -#############################################\ +############################################# import collections import mgear import pymel.core as pm -import pymel.core.datatypes as dt +import pymel.core.datatypes as datatypes ############################################# # NODE ############################################# -def addAttribute(node, longName, attributeType, value=None, niceName=None, shortName=None, minValue=None, - maxValue=None, keyable=True, readable=True, storable=True, writable=True, channelBox=False): - """ - Add attribute to a node - - Args: +def addAttribute(node, + longName, + attributeType, + value=None, + niceName=None, + shortName=None, + minValue=None, + maxValue=None, + keyable=True, + readable=True, + storable=True, + writable=True, + channelBox=False): + """Add attribute to a node + + Arguments: node (dagNode): The object to add the new attribute. longName (str): The attribute name. - attributeType (str): The Attribute Type. Exp: 'string', 'bool', 'long', etc.. + attributeType (str): The Attribute Type. Exp: 'string', 'bool', + 'long', etc.. value (float or int): The default value. niceName (str): The attribute nice name. (optional) shortName (str): The attribute short name. (optional) @@ -59,7 +42,8 @@ def addAttribute(node, longName, attributeType, value=None, niceName=None, short readable (bool): Set if the attribute is readable or not. (optional) storable (bool): Set if the attribute is storable or not. (optional) writable (bool): Set if the attribute is writable or not. (optional) - channelBox (bool): Set if the attribute is in the channelBox or not, when the attribute is not keyable. (optional) + channelBox (bool): Set if the attribute is in the channelBox or not, + when the attribute is not keyable. (optional) Returns: str: The long name of the new attribute @@ -102,16 +86,23 @@ def addAttribute(node, longName, attributeType, value=None, niceName=None, short return node.attr(longName) -def addColorAttribute(node, longName, value=False, keyable=True, readable=True, storable=True, - writable=True, niceName=None, shortName=None): - +def addColorAttribute(node, + longName, + value=False, + keyable=True, + readable=True, + storable=True, + writable=True, + niceName=None, + shortName=None): """ Add a color attribute to a node - Args: + Arguments: node (dagNode): The object to add the new attribute. longName (str): The attribute name. - value (list of flotat): The default value in a list for RGB. exp [1.0, 0.99, 0.13]. + value (list of flotat): The default value in a list for RGB. + exp [1.0, 0.99, 0.13]. keyable (bool): Set if the attribute is keyable or not. (optional) readable (bool): Set if the attribute is readable or not. (optional) storable (bool): Set if the attribute is storable or not. (optional) @@ -121,6 +112,7 @@ def addColorAttribute(node, longName, value=False, keyable=True, readable=True, Returns: str: The long name of the new attribute + """ if node.hasAttr(longName): mgear.log("Attribute already exists", mgear.error) @@ -140,7 +132,7 @@ def addColorAttribute(node, longName, value=False, keyable=True, readable=True, data["storable"] = storable data["writable"] = writable - #child nested attr + # child nested attr dataChild = {} dataChild["attributeType"] = 'float' dataChild["parent"] = longName @@ -151,19 +143,27 @@ def addColorAttribute(node, longName, value=False, keyable=True, readable=True, node.addAttr(longName + "_b", **dataChild) if value: - node.setAttr(longName+ "_r", value[0]) - node.setAttr(longName+ "_g", value[1]) - node.setAttr(longName+ "_b", value[2]) + node.setAttr(longName + "_r", value[0]) + node.setAttr(longName + "_g", value[1]) + node.setAttr(longName + "_b", value[2]) return node.attr(longName) -def addEnumAttribute(node, longName, value, enum, niceName=None, shortName=None, keyable=True, readable=True, - storable=True, writable=True): +def addEnumAttribute(node, + longName, + value, + enum, + niceName=None, + shortName=None, + keyable=True, + readable=True, + storable=True, + writable=True): """ Add an enumerate attribute to a node - Args: + Arguments: node (dagNode): The object to add the new attribute. longName (str): The attribute name. value (int): The default value. @@ -180,7 +180,8 @@ def addEnumAttribute(node, longName, value, enum, niceName=None, shortName=None, """ if node.hasAttr(longName): - mgear.log("Attribute '"+longName+"' already exists", mgear.sev_warning) + mgear.log("Attribute '" + longName + "' already exists", + mgear.sev_warning) return data = {} @@ -203,22 +204,27 @@ def addEnumAttribute(node, longName, value, enum, niceName=None, shortName=None, return node.attr(longName) -def addProxyAttribute(sourceAttrs, targets, duplicatedPolicy=None): + +def addProxyAttribute(sourceAttrs, targets, duplicatedPolicy=None): """Add proxy paramenter to a list of target dagNode Duplicated channel policy, stablish the rule in case the channel already exist on the target. Duplicate policy options - ================ ================================================================= - index This policy will add an index to avoid clashing channel names - fullName This policy will add the name of the source object to the channel + ================ ======================================================= + index This policy will add an index to avoid clashing channel + names + fullName This policy will add the name of the source object to + the channel merge This policy will merge the channels - ================ ================================================================= + ================ ======================================================= - Args: - sourceAttrs (attr or list of attr): The parameters to be connected as proxy - targets (dagNode or list of dagNode): The list of dagNode to add the proxy paramenter + Arguments: + sourceAttrs (attr or list of attr): The parameters to be connected as + proxy + targets (dagNode or list of dagNode): The list of dagNode to add the + proxy paramenter duplicatedPolicy (string, optional): Set the duplicated channel policy """ if not isinstance(targets, list): @@ -231,16 +237,19 @@ def addProxyAttribute(sourceAttrs, targets, duplicatedPolicy=None): if target.hasAttr(sourceAttr.longName()): if duplicatedPolicy == "index": i = 0 - while target.hasAttr(sourceAttr.longName()+str(i)): - i+=1 - attrName = sourceAttr.longName()+str(i) + while target.hasAttr(sourceAttr.longName() + str(i)): + i += 1 + attrName = sourceAttr.longName() + str(i) elif duplicatedPolicy == "fullName": - attrName = "{}_{}".format(sourceAttr.nodeName(), sourceAttr.longName()) + attrName = "{}_{}".format(sourceAttr.nodeName(), + sourceAttr.longName()) if not target.hasAttr(attrName): target.addAttr(attrName, pxy=sourceAttr) else: - pm.displayWarning("The proxy channel %s already exist on: %s."%(sourceAttr.longName(), target.name())) + pm.displayWarning( + "The proxy channel %s already exist on: %s." + % (sourceAttr.longName(), target.name())) def moveChannel(attr, sourceNode, targetNode, duplicatedPolicy=None): @@ -252,13 +261,15 @@ def moveChannel(attr, sourceNode, targetNode, duplicatedPolicy=None): Duplicate policy options - ================ ================================================================= - index This policy will add an index to avoid clashing channel names - fullName This policy will add the name of the source object to the channel + ================ ======================================================= + index This policy will add an index to avoid clashing channel + names + fullName This policy will add the name of the source object to + the channel merge This policy will merge the channels - ================ ================================================================= + ================ ======================================================= - Args: + Arguments: attr (str): Name of the channel to move sourceNode (PyNoe or str): The source node with the channel targetNode (PyNoe or str): The target node for the channel @@ -272,25 +283,29 @@ def moveChannel(attr, sourceNode, targetNode, duplicatedPolicy=None): try: at = sourceNode.attr(attr) if pm.addAttr(at, q=True, usedAsProxy=True): - pm.displayWarning("{} is a proxy channel and move operation is not yet supported.".format(attr)) + pm.displayWarning("{} is a proxy channel and move operation is " + "not yet supported.".format(attr)) return - except: - pm.displayWarning("Looks like the {} is not in the source: {}".format(attr, sourceNode.name())) + except Exception: + pm.displayWarning("Looks like the {} is not in the" + " source: {}".format(attr, sourceNode.name())) return - atType = at.type() + atType = at.type() if atType in ["double", "enum"]: newAtt = None attrName = attr - nName = pm.attributeQuery(at.shortName(), node=at.node(), niceName=True ) + nName = pm.attributeQuery( + at.shortName(), node=at.node(), niceName=True) # define duplicated attribute policy - if sourceNode.name() != targetNode.name(): #this policy doesn't apply for rearrange channels - if pm.attributeQuery( attr, node=targetNode, exists=True ): + if sourceNode.name() != targetNode.name(): + # this policy doesn't apply for rearrange channels + if pm.attributeQuery(attr, node=targetNode, exists=True): if duplicatedPolicy == "index": i = 0 - while targetNode.hasAttr(attr+str(i)): - i+=1 - attrName = attr+str(i) + while targetNode.hasAttr(attr + str(i)): + i += 1 + attrName = attr + str(i) elif duplicatedPolicy == "fullName": attrName = "{}_{}".format(sourceNode.name(), attr) @@ -298,26 +313,28 @@ def moveChannel(attr, sourceNode, targetNode, duplicatedPolicy=None): newAtt = pm.PyNode(".".join([targetNode.name(), attr])) else: - pm.displayWarning( "Duplicated channel policy, is not defined. \ - Move channel operation will fail if the channel \ - already exist on the target.") + pm.displayWarning("Duplicated channel policy, is not " + "defined. Move channel operation will " + "fail if the channel already exist on " + "the target.") return False outcnx = at.listConnections(p=True) if not newAtt: - #get the attr data + # get the attr data value = at.get() if atType == "double": kwargs = {} min = at.getMin() if min: - kwargs["min"]= min + kwargs["min"] = min max = at.getMax() if max: - kwargs["max"]= max + kwargs["max"] = max elif atType == "enum": en = at.getEnums() - oEn = collections.OrderedDict(sorted(en.items(), key=lambda t: t[1])) + oEn = collections.OrderedDict(sorted(en.items(), + key=lambda t: t[1])) enStr = ":".join([n for n in oEn]) # delete old attr @@ -325,9 +342,21 @@ def moveChannel(attr, sourceNode, targetNode, duplicatedPolicy=None): # rebuild the attr if atType == "double": - pm.addAttr(targetNode, ln=attrName, niceName=nName, at="double", dv=value, k=True, **kwargs) + pm.addAttr(targetNode, + ln=attrName, + niceName=nName, + at="double", + dv=value, + k=True, + **kwargs) elif atType == "enum": - pm.addAttr(targetNode, ln=attrName, niceName=nName, at="enum", en=enStr, dv=value, k=True) + pm.addAttr(targetNode, + ln=attrName, + niceName=nName, + at="enum", + en=enStr, + dv=value, + k=True) newAtt = pm.PyNode(".".join([targetNode.name(), attrName])) else: @@ -337,44 +366,60 @@ def moveChannel(attr, sourceNode, targetNode, duplicatedPolicy=None): try: pm.connectAttr(newAtt, cnx, f=True) except RuntimeError: - pm.displayError("There is a problem connecting the channel %s maybe is already move? Please check your configuration"% newAtt.name()) - + pm.displayError("There is a problem connecting the " + "channel %s maybe is already move? Please " + "check your configuration" % newAtt.name()) else: - pm.displayWarning("MoveChannel function can't handle an attribute of type: %s. Only supported 'double' adn 'enum' types."%atType) + pm.displayWarning("MoveChannel function can't handle an attribute " + "of type: %s. Only supported 'double' adn 'enum' " + "types." % atType) -def lockAttribute(node, attributes=["tx", "ty", "tz", "rx", "ry", "rz", "sx", "sy", "sz", "v"]): - """ - Lock attributes of a node. By defaul will lock the rotation, scale and translation. +def lockAttribute(node, + attributes=["tx", "ty", "tz", + "rx", "ry", "rz", + "sx", "sy", "sz", + "v"]): + """Lock attributes of a node. + + By defaul will lock the rotation, scale and translation. - Args: + Arguments: node(dagNode): The node with the attributes to lock. attributes (list of str): The list of the attributes to lock. Example: >>> att.lockAttribute(self.root_ctl, ["sx", "sy", "sz", "v"]) + """ _lockUnlockAttribute(node, attributes, lock=True, keyable=False) -def unlockAttribute(node, attributes=["tx", "ty", "tz", "rx", "ry", "rz", "sx", "sy", "sz", "v"]): - """ - Unlock attributes of a node. By defaul will unlock the rotation, scale and translation. - Args: +def unlockAttribute(node, + attributes=["tx", "ty", "tz", + "rx", "ry", "rz", + "sx", "sy", "sz", + "v"]): + """Unlock attributes of a node. + + By defaul will unlock the rotation, scale and translation. + + Arguments: node(dagNode): The node with the attributes to unlock. attributes (list of str): The list of the attributes to unlock. Example: >>> att.unlockAttribute(self.root_ctl, ["sx", "sy", "sz", "v"]) + """ _lockUnlockAttribute(node, attributes, lock=False, keyable=True) + def _lockUnlockAttribute(node, attributes, lock, keyable): - """ - Lock or unlock attributes of a node. + """Lock or unlock attributes of a node. - Args: + Arguments: node(dagNode): The node with the attributes to lock/unlock. attributes (list of str): The list of the attributes to lock/unlock. @@ -386,18 +431,27 @@ def _lockUnlockAttribute(node, attributes, lock, keyable): node.setAttr(attr_name, lock=lock, keyable=keyable) -def setKeyableAttributes(nodes, params=["tx", "ty", "tz", "ro", "rx", "ry", "rz", "sx", "sy", "sz"]): - """ - Set keyable attributes of a node. By defaul will set keyable the rotation, scale and translation. +def setKeyableAttributes(nodes, + params=["tx", "ty", "tz", + "ro", "rx", "ry", "rz", + "sx", "sy", "sz"]): + """Set keyable attributes of a node. + + By defaul will set keyable the rotation, scale and translation. - Args: + Arguments: node(dagNode): The node with the attributes to set keyable. - attributes (list of str): The list of the attributes to set keyable. Attrs not in the list will be locked - if None, ["tx", "ty", "tz", "rorder", "rx", "ry", "rz", "sx", "sy", "sz"] is used + attributes (list of str): The list of the attributes to set keyable. + Attrs not in the list will be locked + if None, ["tx", "ty", "tz", "rorder", "rx", "ry", "rz", "sx", "sy", + "sz"] is used """ - localParams = ["tx", "ty", "tz", "ro", "rx", "ry", "rz", "sx", "sy", "sz", "v"] + localParams = ["tx", "ty", "tz", + "ro", "rx", "ry", "rz", + "sx", "sy", "sz", + "v"] if not isinstance(nodes, list): nodes = [nodes] @@ -412,13 +466,18 @@ def setKeyableAttributes(nodes, params=["tx", "ty", "tz", "ro", "rx", "ry", "rz" node.setAttr(attr_name, lock=True, keyable=False) -def setNotKeyableAttributes(nodes, attributes=["tx", "ty", "tz", "ro", "rx", "ry", "rz", "sx", "sy", "sz", "v"]): - """ - Set not keyable attributes of a node. By defaul will set not keyable the rotation, scale and translation. +def setNotKeyableAttributes(nodes, + attributes=["tx", "ty", "tz", + "ro", "rx", "ry", "rz", + "sx", "sy", "sz", + "v"]): + """Set not keyable attributes of a node. + + By defaul will set not keyable the rotation, scale and translation. - Args: + Arguments: node(dagNode): The node with the attributes to set keyable. - attributes (list of str): The list of the attributes to set not keyable. + attributes (list of str): The list of the attributes to set not keyable """ if not isinstance(nodes, list): @@ -429,71 +488,70 @@ def setNotKeyableAttributes(nodes, attributes=["tx", "ty", "tz", "ro", "rx", "ry node.setAttr(attr_name, lock=False, keyable=False, cb=True) - def setRotOrder(node, s="XYZ"): - """ - Set the rotorder of the object. + """Set the rotorder of the object. - Args: + Arguments: node (dagNode): The object to set the rot order on. - s (str): Value of the rotorder. Possible values : ("XYZ", "XZY", "YXZ", "YZX", "ZXY", "ZYX") + s (str): Value of the rotorder. + Possible values : ("XYZ", "XZY", "YXZ", "YZX", "ZXY", "ZYX") """ a = ["XYZ", "YZX", "ZXY", "XZY", "YXZ", "ZYX"] if s not in a: - mgear.log("Invalid Rotorder : "+s, mgear.siError) + mgear.log("Invalid Rotorder : " + s, mgear.siError) return False - # Unless Softimage there is no event on the rotorder parameter to automatically adapt the angle values + # Unless Softimage there is no event on the rotorder parameter to + # automatically adapt the angle values # So let's do it manually using the EulerRotation class - er = dt.EulerRotation([pm.getAttr(node+".rx"),pm.getAttr(node+".ry"),pm.getAttr(node+".rz")], unit="degrees") + er = datatypes.EulerRotation([pm.getAttr(node + ".rx"), + pm.getAttr(node + ".ry"), + pm.getAttr(node + ".rz")], + unit="degrees") er.reorderIt(s) node.setAttr("ro", a.index(s)) node.setAttr("rotate", er.x, er.y, er.z) -# ======================================================== -## Set invert mirror pose values -# @param node X3DObject - The object to set invert mirror Values -# @param params List of String - The parameter to invert in a mirror pose\n -# @return def setInvertMirror(node, invList=None): - """ - Set invert mirror pose values + """Set invert mirror pose values - Args: + Arguments: node (dagNode): The object to set invert mirror Values """ - aDic = {"tx":"invTx", "ty":"invTy", "tz":"invTz", "rx":"invRx", "ry":"invRy", "rz":"invRz", "sx":"invSx", "sy":"invSy", "sz":"invSz"} + aDic = {"tx": "invTx", + "ty": "invTy", + "tz": "invTz", + "rx": "invRx", + "ry": "invRy", + "rz": "invRz", + "sx": "invSx", + "sy": "invSy", + "sz": "invSz"} for axis in invList: if axis not in aDic: - mgear.log("Invalid Invert Axis : "+axis, mgear.siError) + mgear.log("Invalid Invert Axis : " + axis, mgear.siError) return False node.setAttr(aDic[axis], True) -######################################################## -# FCurve attribute (just a animCurveUU node connected to an attribute) -####################################################### -# ===================================================== -## FCurve(animCurveUU) attribute -# @param node X3DObject - The object to add the new fcurve attribute -# @param name String - The attribute name -# @return Fcurve and attribute name -def addFCurve( node, name="fcurve", keys=[]): - """ - FCurve attribute (just a animCurveUU node connected to an attribute) + +def addFCurve(node, name="fcurve", keys=[]): + """FCurve attribute + + Just a animCurveUU node connected to an attribute Warning: This Method is deprecated. - Args: + Arguments: node (dagNode): The object to add the new fcurve attribute name (str): The attribute name key (list): list of keyframes and values @@ -502,17 +560,20 @@ def addFCurve( node, name="fcurve", keys=[]): Fcurve and attribute name """ - attr_name = addAttribute(node, name, "double", 0) attrDummy_name = addAttribute(node, name + "_dummy", "double", 0) - for key in keys: - # we use setDrivenKeyframe, because is the only workaround that I found to create an animCurveUU with keyframes - # fCurve = pm.PyNode(pm.createNode("animCurveUU")) - pm.setDrivenKeyframe(attr_name, cd= attrDummy_name, dv=key[0], v=key[1], itt=key[2], ott=key[2]) - - #clean dummy attr + # we use setDrivenKeyframe, because is the only workaround that I found + # to create an animCurveUU with keyframes + pm.setDrivenKeyframe(attr_name, + cd=attrDummy_name, + dv=key[0], + v=key[1], + itt=key[2], + ott=key[2]) + + # clean dummy attr pm.deleteAttr(attrDummy_name) fCurve = pm.PyNode(attr_name).listConnections(type="animCurveUU")[0] @@ -522,20 +583,24 @@ def addFCurve( node, name="fcurve", keys=[]): ########################################################## # PARAMETER DEFINITION ########################################################## -# ======================================================== + + class ParamDef(object): - """ - ParamDef (read as Parameter Definition) encapsulate the attribute creation arguments in a handy object. + """ParamDef (read as Parameter Definition) + + Encapsulate the attribute creation arguments in a handy object. Also include a creation method. Example: - This can be use later to create attr or export the description to xml or json file + This can be use later to create attr or export the description to xml + or json file - Args: + Arguments: scriptName (str): Attribute fullName paranDef (dic): The stored param definition """ + def __init__(self, scriptName): self.scriptName = scriptName @@ -543,24 +608,34 @@ def __init__(self, scriptName): self.valueType = None def create(self, node): - """ - Add a parameter to property using the parameter definition. + """Add a parameter to property using the parameter definition. - Args: + Arguments: node (dagNode): The node to add the attribute """ - attr_name = addAttribute(node, self.scriptName, self.valueType, self.value, self.niceName, self.shortName, self.minimum, self.maximum, self.keyable, self.readable, self.storable, self.writable) + attr_name = addAttribute(node, + self.scriptName, + self.valueType, + self.value, + self.niceName, + self.shortName, + self.minimum, + self.maximum, + self.keyable, + self.readable, + self.storable, + self.writable) return node, attr_name class ParamDef2(ParamDef): - """ - ParamDef2 inherit from ParamDef + """ParamDef2 inherit from ParamDef - Args: + Arguments: scriptName (str): Parameter scriptname. - valueType (str): The Attribute Type. Exp: 'string', 'bool', 'long', etc.. + valueType (str): The Attribute Type. Exp: 'string', 'bool', + 'long', etc.. value (float or int): Default parameter value. niceName (str): Parameter niceName. shortName (str): Parameter shortName. @@ -575,7 +650,18 @@ class ParamDef2(ParamDef): ParamDef: The stored parameter definition. """ - def __init__(self, scriptName, valueType, value, niceName=None, shortName=None, minimum=None, maximum=None, keyable=True, readable=True, storable=True, writable=True): + def __init__(self, + scriptName, + valueType, + value, + niceName=None, + shortName=None, + minimum=None, + maximum=None, + keyable=True, + readable=True, + storable=True, + writable=True): self.scriptName = scriptName self.niceName = niceName @@ -591,17 +677,20 @@ def __init__(self, scriptName, valueType, value, niceName=None, shortName=None, class FCurveParamDef(ParamDef): - """ - Create an Fcurve parameter definition. + """Create an Fcurve parameter definition. - Args: + Arguments: scriptName (str): Attribute fullName. keys (list): The keyframes to define the function curve. interpolation (int): the curve interpolation. extrapolation (int): the curve extrapolation. """ - def __init__(self, scriptName, keys=None, interpolation=0, extrapolation=0): + def __init__(self, + scriptName, + keys=None, + interpolation=0, + extrapolation=0): self.scriptName = scriptName self.keys = keys @@ -611,32 +700,35 @@ def __init__(self, scriptName, keys=None, interpolation=0, extrapolation=0): self.valueType = None def create(self, node): - """ - Add a parameter to property using the parameter definition. + """Add a parameter to property using the parameter definition. - Args: + Arguments: node (dagNode): The node to add the attribute - """ + """ attr_name = addAttribute(node, self.scriptName, "double", 0) - attrDummy_name = addAttribute(node, self.scriptName + "_dummy", "double", 0) + + attrDummy_name = addAttribute( + node, self.scriptName + "_dummy", "double", 0) for key in self.keys: - pm.setDrivenKeyframe(attr_name, cd= attrDummy_name, dv=key[0], v=key[1]) + pm.setDrivenKeyframe( + attr_name, cd=attrDummy_name, dv=key[0], v=key[1]) - #clean dummy attr + # clean dummy attr pm.deleteAttr(attrDummy_name) return node, attr_name class colorParamDef(ParamDef): - """ - Create a Color parameter definition. + """Create a Color parameter definition. - Args: + Arguments: scriptName (str): Attribute fullName - value (list of float): The default value in a list for RGB. exp [1.0, 0.99, 0.13]. + value (list of float): The default value in a list for RGB. + exp [1.0, 0.99, 0.13]. + """ def __init__(self, scriptName, value=False): @@ -644,11 +736,11 @@ def __init__(self, scriptName, value=False): self.value = value def create(self, node): - """ - Add a parameter to property using the parameter definition. + """Add a parameter to property using the parameter definition. - Args: + Arguments: node (dagNode): The node to add the attribute + """ attr_name = addColorAttribute(node, self.scriptName, value=self.value) @@ -656,16 +748,15 @@ def create(self, node): class enumParamDef(ParamDef): - """ - Create an enumarator parameter definition. + """Create an enumarator parameter definition. - Args: + Arguments: scriptName (str): Attribute fullName enum (list of str): The list of elements in the enumerate control. value (int): The default value. """ - def __init__(self, scriptName, enum, value=False ): + def __init__(self, scriptName, enum, value=False): self.scriptName = scriptName self.value = value @@ -673,14 +764,14 @@ def __init__(self, scriptName, enum, value=False ): self.valueType = None def create(self, node): - """ - Add a parameter to property using the parameter definition. + """Add a parameter to property using the parameter definition. - Args: + Arguments: node (dagNode): The node to add the attribute """ - attr_name = addEnumAttribute(node, self.scriptName, enum=self.enum, value=self.value) + attr_name = addEnumAttribute( + node, self.scriptName, enum=self.enum, value=self.value) return node, attr_name @@ -693,31 +784,38 @@ def create(self, node): def getSelectedChannels(userDefine=False): """Get the selected channels on the channel box - Args: - userDefine (bool, optional): If True, will return only the user defined channels. Other channels will be skipped. + Arguments: + userDefine (bool, optional): If True, will return only the user + defined channels. Other channels will be skipped. Returns: list: The list of selected channels names + """ - channelBox = pm.mel.eval('global string $gChannelBoxName; $temp=$gChannelBoxName;') #fetch maya's main channelbox + # fetch maya's main channelbox + mel_str = 'global string $gChannelBoxName; $temp=$gChannelBoxName;' + channelBox = pm.mel.eval(mel_str) attrs = pm.channelBox(channelBox, q=True, sma=True) if userDefine: oSel = pm.selected()[0] uda = oSel.listAttr(ud=True) if attrs: - attrs = [x for x in attrs if oSel.attr(x) in uda] + attrs = [x for x in attrs if oSel.attr(x) in uda] else: return None return attrs + def getSelectedObjectChannels(oSel=None, userDefine=False, animatable=False): """Get the selected object channels. - Args: + Arguments: oSel (None, optional): The pynode with channels to get - userDefine (bool, optional): If True, will return only the user defined channels. Other channels will be skipped. - animatable (bool, optional): If True, only animatable parameters will be return + userDefine (bool, optional): If True, will return only the user + defined channels. Other channels will be skipped. + animatable (bool, optional): If True, only animatable parameters + will be return Returns: list: The list of the selected object channels names @@ -725,6 +823,7 @@ def getSelectedObjectChannels(oSel=None, userDefine=False, animatable=False): if not oSel: oSel = pm.selected()[0] - channels = [x.name().rsplit(".", 1)[1] for x in oSel.listAttr(ud=userDefine, k=animatable)] + channels = [x.name().rsplit(".", 1)[1] + for x in oSel.listAttr(ud=userDefine, k=animatable)] return channels diff --git a/scripts/mgear/maya/curve.py b/scripts/mgear/maya/curve.py index 5cd81a7..bda7e3f 100644 --- a/scripts/mgear/maya/curve.py +++ b/scripts/mgear/maya/curve.py @@ -1,52 +1,24 @@ -# MGEAR is under the terms of the MIT License - -# Copyright (c) 2016 Jeremie Passerin, Miquel Campos - -# Permission is hereby granted, free of charge, to any person obtaining a copy -# of this software and associated documentation files (the "Software"), to deal -# in the Software without restriction, including without limitation the rights -# to use, copy, modify, merge, publish, distribute, sublicense, and/or sell -# copies of the Software, and to permit persons to whom the Software is -# furnished to do so, subject to the following conditions: - -# The above copyright notice and this permission notice shall be included in all -# copies or substantial portions of the Software. - -# THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR -# IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, -# FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE -# AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER -# LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, -# OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE -# SOFTWARE. - -# Author: Jeremie Passerin geerem@hotmail.com www.jeremiepasserin.com -# Author: Miquel Campos hello@miquel-campos.com www.miquel-campos.com -# Date: 2016 / 10 / 10 - -""" -NurbsCurve creation functions -""" +"""NurbsCurve creation functions""" ############################################# # GLOBAL ############################################# import pymel.core as pm -import pymel.core.datatypes as dt +from pymel.core import datatypes import maya.OpenMaya as om -import mgear.maya.applyop as aop +from mgear.maya import applyop ############################################# # CURVE ############################################# + def addCnsCurve(parent, name, centers, degree=1): - """ - Create a curve attached to given centers. One point per center + """Create a curve attached to given centers. One point per center - Args: + Arguments: parent (dagNode): Parent object. name (str): Name centers (list of dagNode): Object that will drive the curve. @@ -62,23 +34,28 @@ def addCnsCurve(parent, name, centers, degree=1): elif len(centers) == 3: centers.append(centers[-1]) - points = [dt.Vector() for center in centers ] + points = [datatypes.Vector() for center in centers] node = addCurve(parent, name, points, False, degree) - aop.gear_curvecns_op(node, centers) + applyop.gear_curvecns_op(node, centers) return node -def addCurve(parent, name, points, close=False, degree=3, m=dt.Matrix()): - """ - Create a NurbsCurve with a single subcurve. +def addCurve(parent, + name, + points, + close=False, + degree=3, + m=datatypes.Matrix()): + """Create a NurbsCurve with a single subcurve. - Args: + Arguments: parent (dagNode): Parent object. name (str): Name - positions (list of float): points of the curve in a one dimension array [point0X, point0Y, point0Z, 1, point1X, point1Y, point1Z, 1, ...]. + positions (list of float): points of the curve in a one dimension array + [point0X, point0Y, point0Z, 1, point1X, point1Y, point1Z, 1, ...]. close (bool): True to close the curve. degree (bool): 1 for linear curve, 3 for Cubic. m (matrix): Global transform. @@ -88,7 +65,7 @@ def addCurve(parent, name, points, close=False, degree=3, m=dt.Matrix()): """ if close: points.extend(points[:degree]) - knots = range(len(points)+degree-1) + knots = range(len(points) + degree - 1) node = pm.curve(n=name, d=degree, p=points, per=close, k=knots) else: node = pm.curve(n=name, d=degree, p=points) @@ -101,10 +78,15 @@ def addCurve(parent, name, points, close=False, degree=3, m=dt.Matrix()): return node -def createCurveFromOrderedEdges(edgeLoop, startVertex, name, parent=None, degree=3): + +def createCurveFromOrderedEdges(edgeLoop, + startVertex, + name, + parent=None, + degree=3): """Create a curve for a edgeloop ordering the list from starting vertex - Args: + Arguments: edgeLoop (list ): List of edges startVertex (vertex): Starting vertex name (str): Name of the new curve. @@ -129,7 +111,7 @@ def createCurveFromOrderedEdges(edgeLoop, startVertex, name, parent=None, degree pass if len(orderedEdges) == len(edgeLoop): break - count +=1 + count += 1 if count > 100: break @@ -146,11 +128,15 @@ def createCurveFromOrderedEdges(edgeLoop, startVertex, name, parent=None, degree crv = addCurve(parent, name, orderedVertexPos, degree=degree) return crv -def createCuveFromEdges(edgeList, name, parent=None, degree=3, sortingAxis="x"): - """ - Create curve from a edge list. - Args: +def createCuveFromEdges(edgeList, + name, + parent=None, + degree=3, + sortingAxis="x"): + """Create curve from a edge list. + + Arguments: edgeList (list): List of edges. name (str): Name of the new curve. parent (dagNode): Parent of the new curve. @@ -170,7 +156,6 @@ def createCuveFromEdges(edgeList, name, parent=None, degree=3, sortingAxis="x"): vList = pm.polyListComponentConversion(edgeList, fe=True, tv=True) - centers = [] centersOrdered = [] xOrder = [] @@ -191,10 +176,9 @@ def createCuveFromEdges(edgeList, name, parent=None, degree=3, sortingAxis="x"): def createCurveFromCurve(srcCrv, name, nbPoints, parent=None): - """ - Create a curve from a curve + """Create a curve from a curve - Args: + Arguments: srcCrv (curve): The source curve. name (str): The new curve name. nbPoints (int): Number of control points for the new curve. @@ -208,7 +192,7 @@ def createCurveFromCurve(srcCrv, name, nbPoints, parent=None): length = srcCrv.length() parL = srcCrv.findParamFromLength(length) param = [] - increment = parL / (nbPoints-1) + increment = parL / (nbPoints - 1) p = 0.0 for x in range(nbPoints): # we need to check that the param value never exceed the parL @@ -222,17 +206,17 @@ def createCurveFromCurve(srcCrv, name, nbPoints, parent=None): def getCurveParamAtPosition(crv, position): - """ - Get curve parameter from a position + """Get curve parameter from a position - Args: - position (list of float): Represents the position in worldSpace exp: [1.4, 3.55, 42.6] + Arguments: + position (list of float): Represents the position in worldSpace + exp: [1.4, 3.55, 42.6] crv (curve): The source curve to get the parameter. Returns: list: paramenter and curve length """ - point = om.MPoint(position[0],position[1],position[2]) + point = om.MPoint(position[0], position[1], position[2]) dag = om.MDagPath() obj = om.MObject() @@ -244,11 +228,11 @@ def getCurveParamAtPosition(crv, position): length = curveFn.length() crv.findParamFromLength(length) - paramUtill=om.MScriptUtil() - paramPtr=paramUtill.asDoublePtr() + paramUtill = om.MScriptUtil() + paramPtr = paramUtill.asDoublePtr() - point = curveFn.closestPoint(point,paramPtr,0.001,om.MSpace.kObject) - curveFn.getParamAtPoint(point , paramPtr,0.001,om.MSpace.kObject) + point = curveFn.closestPoint(point, paramPtr, 0.001, om.MSpace.kObject) + curveFn.getParamAtPoint(point, paramPtr, 0.001, om.MSpace.kObject) param = paramUtill.getDouble(paramPtr) @@ -259,7 +243,7 @@ def findLenghtFromParam(crv, param): """ Find lengtht from a curve parameter - Args: + Arguments: param (float): The parameter to get the legth crv (curve): The source curve. @@ -275,7 +259,8 @@ def findLenghtFromParam(crv, param): """ node = pm.createNode("arcLengthDimension") - pm.connectAttr(crv.getShape().attr("worldSpace[0]"), node.attr("nurbsGeometry")) + pm.connectAttr(crv.getShape().attr("worldSpace[0]"), + node.attr("nurbsGeometry")) node.attr("uParamValue").set(param) uLength = node.attr("arcLength").get() pm.delete(node.getParent()) diff --git a/scripts/mgear/maya/dag.py b/scripts/mgear/maya/dag.py index da6e507..a38dcf4 100644 --- a/scripts/mgear/maya/dag.py +++ b/scripts/mgear/maya/dag.py @@ -1,46 +1,20 @@ -# MGEAR is under the terms of the MIT License - -# Copyright (c) 2016 Jeremie Passerin, Miquel Campos - -# Permission is hereby granted, free of charge, to any person obtaining a copy -# of this software and associated documentation files (the "Software"), to deal -# in the Software without restriction, including without limitation the rights -# to use, copy, modify, merge, publish, distribute, sublicense, and/or sell -# copies of the Software, and to permit persons to whom the Software is -# furnished to do so, subject to the following conditions: - -# The above copyright notice and this permission notice shall be included in all -# copies or substantial portions of the Software. - -# THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR -# IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, -# FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE -# AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER -# LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, -# OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE -# SOFTWARE. - -# Author: Jeremie Passerin geerem@hotmail.com www.jeremiepasserin.com -# Author: Miquel Campos hello@miquel-campos.com www.miquel-campos.com -# Date: 2016 / 10 / 10 - -""" -Navigate the DAG hierarchy. -""" -############################################# -# GLOBAL -############################################# +"""Nvigate the DAG hierarchy""" + + import maya.cmds as cmds import pymel.core as pm ############################################# # DAG ############################################# + + def getTopParent(node): - """ - Returns the first parent of the hierarchy. (usually the 'Model' in Softimage) + """Returns the first parent of the hierarchy. + + usually the 'Model' in Softimage terminology - Args: + Arguments: node (dagNode): The input node to search. Returns: @@ -49,12 +23,11 @@ def getTopParent(node): """ return node.getParent(generations=-1) -# =========================================== + def getShapes(node): - """ - Returns the shape of the dagNode + """Returns the shape of the dagNode - Args: + Arguments: node (dagNode): The input node to search the shape Returns: @@ -63,28 +36,29 @@ def getShapes(node): """ return node.listRelatives(shapes=True) -# =========================================== + def findChild(node, name): - """ - Returns the first child of input node, with a matching name. + """Returns the first child of input node, with a matching name. - Args: + Arguments: node (dagNode): The input node to search name (str): The name to search Returns: dagNode: The first child - >>> parent = dag.findChild(self.model, mgear.string.convertRLName(comp_guide.root.name())) + >>> parent = dag.findChild(self.model, + mgear.string.convertRLName( + comp_guide.root.name())) """ return __findChildren2(node, name, True) + def findChildren(node, name): - """ - Returns all the children of input node, with a matching name. + """Returns all the children of input node, with a matching name. - Args: + Arguments: node (dagNode): The input node to search name (str): The name to search @@ -94,11 +68,12 @@ def findChildren(node, name): """ return __findChildren2(node, name, False) + def findChildrenPartial(node, name): """ Returns the children of input node, with a partial matching name. - Args: + Arguments: node (dagNode): The input node to search name (str): The name to search @@ -108,12 +83,19 @@ def findChildrenPartial(node, name): """ return __findChildren2(node, name, False, True) + def __findChildren(node, name, firstOnly=False, partialName=False): if partialName: - children = [item for item in node.listRelatives(ad=True, type="transform") if item.name().split("|")[-1].split("_")[-1] == name] + children = [item for item + in node.listRelatives(allDescendents=True, + type="transform") + if item.name().split("|")[-1].split("_")[-1] == name] else: - children = [item for item in node.listRelatives(ad=True, type="transform") if item.name().split("|")[-1] == name] + children = [item for item + in node.listRelatives(allDescendents=True, + type="transform") + if item.name().split("|")[-1] == name] if not children: return False if firstOnly: @@ -121,10 +103,11 @@ def __findChildren(node, name, firstOnly=False, partialName=False): return children + def __findChildren2(node, name, firstOnly=False, partialName=False): """This function is using Maya cmds instead of PyMel - Args: + Arguments: node (TYPE): Description name (TYPE): Description firstOnly (bool, optional): Description @@ -135,9 +118,15 @@ def __findChildren2(node, name, firstOnly=False, partialName=False): """ oName = node.name() if partialName: - children = [item for item in cmds.listRelatives(oName, ad=True, type="transform") if item.split("|")[-1].split("_")[-1] == name] + children = [item for item + in cmds.listRelatives(oName, allDescendents=True, + type="transform") + if item.split("|")[-1].split("_")[-1] == name] else: - children = [item for item in cmds.listRelatives(oName, ad=True, type="transform") if item.split("|")[-1] == name] + children = [item for item + in cmds.listRelatives(oName, allDescendents=True, + type="transform") + if item.split("|")[-1] == name] if not children: return False if firstOnly: @@ -145,14 +134,14 @@ def __findChildren2(node, name, firstOnly=False, partialName=False): return [pm.PyNode(x) for x in children] + def findComponentChildren(node, name, sideIndex): - """ - Returns the component children of input component root. + """Returns the component children of input component root. Note: This method is specific to work with shifter guides naming conventions - Args: + Arguments: node (dagNode): The input node to search name (str): The name to search sideIndex (str): the side @@ -160,12 +149,14 @@ def findComponentChildren(node, name, sideIndex): Returns: dagNode list: The children dagNodes - >>> objList = dag.findComponentChildren(self.parent, oldName, oldSideIndex) + >>> objList = dag.findComponentChildren(self.parent, + oldName, + oldSideIndex) """ - children = [] - for item in node.listRelatives(ad=True, type="transform"): + for item in node.listRelatives(allDescendents=True, + type="transform"): checkName = item.name().split("|")[-1].split("_") if checkName[0] == name and checkName[1] == sideIndex: children.append(item) @@ -174,14 +165,14 @@ def findComponentChildren(node, name, sideIndex): def findComponentChildren2(node, name, sideIndex): - """ - Returns the component children of input component root. + """Returns the component children of input component root. + This function is using Maya cmds instead of PyMel Note: This method is specific to work with shifter guides naming conventions - Args: + Arguments: node (dagNode): The input node to search name (str): The name to search sideIndex (str): the side @@ -189,12 +180,14 @@ def findComponentChildren2(node, name, sideIndex): Returns: dagNode list: The children dagNodes - >>> objList = dag.findComponentChildren(self.parent, oldName, oldSideIndex) + >>> objList = dag.findComponentChildren(self.parent, + oldName, + oldSideIndex) """ - children = [] - for item in cmds.listRelatives(node.name(), ad=True, type="transform"): + for item in cmds.listRelatives(node.name(), allDescendents=True, + type="transform"): checkName = item.split("|")[-1].split("_") if checkName[0] == name and checkName[1] == sideIndex: children.append(item) diff --git a/scripts/mgear/maya/fcurve.py b/scripts/mgear/maya/fcurve.py index 60c3b01..acd8c06 100644 --- a/scripts/mgear/maya/fcurve.py +++ b/scripts/mgear/maya/fcurve.py @@ -1,62 +1,27 @@ -# MGEAR is under the terms of the MIT License - -# Copyright (c) 2016 Jeremie Passerin, Miquel Campos - -# Permission is hereby granted, free of charge, to any person obtaining a copy -# of this software and associated documentation files (the "Software"), to deal -# in the Software without restriction, including without limitation the rights -# to use, copy, modify, merge, publish, distribute, sublicense, and/or sell -# copies of the Software, and to permit persons to whom the Software is -# furnished to do so, subject to the following conditions: - -# The above copyright notice and this permission notice shall be included in all -# copies or substantial portions of the Software. - -# THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR -# IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, -# FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE -# AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER -# LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, -# OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE -# SOFTWARE. - -# Author: Jeremie Passerin geerem@hotmail.com www.jeremiepasserin.com -# Author: Miquel Campos hello@miquel-campos.com www.miquel-campos.com -# Date: 2016 / 10 / 10 - -""" -Functions to work with animation curves -""" - -############################################# -# GLOBAL -############################################# import pymel.core as pm -############################################# -# FCURVE -############################################# def getFCurveValues(fcv_node, division, factor=1): - """ - Get X values evenly spaced on the FCurve. + """Get X values evenly spaced on the FCurve. - Args: + Arguments: fcv_node (pyNode or str): The FCurve to evaluate. - division (int): The number of division you want to evaluate on the FCurve. + division (int): The number of division you want to evaluate on + the FCurve. factor (float): Multiplication factor. Default = 1. (optional) Returns: list of float: The values in a list float. - >>> self.st_value = fcu.getFCurveValues(self.settings["st_profile"], self.divisions) + >>> self.st_value = fcu.getFCurveValues(self.settings["st_profile"], + self.divisions) """ - incr = 1 / (division-1.0) + incr = 1 / (division - 1.0) values = [] for i in range(division): - pm.setAttr(fcv_node+".input", i*incr) - values.append(pm.getAttr(fcv_node+".output") * factor) + pm.setAttr(fcv_node + ".input", i * incr) + values.append(pm.getAttr(fcv_node + ".output") * factor) return values diff --git a/scripts/mgear/maya/icon.py b/scripts/mgear/maya/icon.py index b8d9061..1e022d8 100644 --- a/scripts/mgear/maya/icon.py +++ b/scripts/mgear/maya/icon.py @@ -1,88 +1,177 @@ -# MGEAR is under the terms of the MIT License - -# Copyright (c) 2016 Jeremie Passerin, Miquel Campos - -# Permission is hereby granted, free of charge, to any person obtaining a copy -# of this software and associated documentation files (the "Software"), to deal -# in the Software without restriction, including without limitation the rights -# to use, copy, modify, merge, publish, distribute, sublicense, and/or sell -# copies of the Software, and to permit persons to whom the Software is -# furnished to do so, subject to the following conditions: - -# The above copyright notice and this permission notice shall be included in all -# copies or substantial portions of the Software. - -# THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR -# IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, -# FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE -# AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER -# LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, -# OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE -# SOFTWARE. - -# Author: Jeremie Passerin geerem@hotmail.com www.jeremiepasserin.com -# Author: Miquel Campos hello@miquel-campos.com www.miquel-campos.com -# Date: 2016 / 10 / 10 - -""" -Predefined nurbsCurve shapes to be use as a rigging control Icons -""" +"""Predefined nurbsCurve shapes to be use as a rigging control Icons""" ############################################# # GLOBAL ############################################# import pymel.core as pm -import pymel.util as pmu -import pymel.core.datatypes as dt - import maya.OpenMaya as om +import pymel.util as pmu +from pymel.core import datatypes import mgear -import mgear.maya.curve as cur -import mgear.maya.attribute as att +from . import curve, attribute ############################################# # ICON ############################################# -def create(parent=None, name="icon", m=dt.Matrix(), color=[0,0,0], icon="cube", **kwargs): - """ + +def create(parent=None, + name="icon", + m=datatypes.Matrix(), + color=[0, 0, 0], + icon="cube", + **kwargs): + """Icon master function + **Create icon master function.** This function centralize all the icons creation - Args: + Arguments: parent (dagNode): The parent for the new icon name (str): Name of the Icon. m (matrix): Transformation matrix of the icon color (int or list of float): The color in index base or RGB. - icon (str): Icon type. Options: "cube", "pyramid", "square", "flower", "circle", "cylinder", "compas", "diamond", - "cubewithpeak", "sphere", "arrow", "crossarrow", "cross", "null" + icon (str): Icon type. Options: "cube", "pyramid", "square", + "flower", "circle", "cylinder", "compas", "diamond", + "cubewithpeak", "sphere", "arrow", "crossarrow", + "cross", "null" kwargs: The keyword arguments can vary depending of the icon type. Please refear to the specific icon method for more info. Returns: dagNode: The newly created icon. + """ - if "w" not in kwargs.keys(): kwargs["w"] = 1 - if "h" not in kwargs.keys(): kwargs["h"] = 1 - if "d" not in kwargs.keys(): kwargs["d"] = 1 - if "po" not in kwargs.keys(): kwargs["po"] = None - if "ro" not in kwargs.keys(): kwargs["ro"] = None - - if icon == "cube": ctl = cube(parent, name, kwargs["w"], kwargs["h"], kwargs["d"], color, m, kwargs["po"], kwargs["ro"]) - elif icon == "pyramid": ctl = pyramid(parent, name, kwargs["w"], kwargs["h"], kwargs["d"], color, m, kwargs["po"], kwargs["ro"]) - elif icon == "square": ctl = square(parent, name, kwargs["w"], kwargs["d"], color, m, kwargs["po"], kwargs["ro"]) - elif icon == "flower": ctl = flower(parent, name, kwargs["w"], color, m, kwargs["po"], kwargs["ro"]) - elif icon == "circle": ctl = circle(parent, name, kwargs["w"], color, m, kwargs["po"], kwargs["ro"]) - elif icon == "cylinder": ctl = cylinder(parent, name, kwargs["w"], kwargs["h"], color, m, kwargs["po"], kwargs["ro"]) - elif icon == "compas": ctl = compas(parent, name, kwargs["w"], color, m, kwargs["po"], kwargs["ro"]) - elif icon == "diamond": ctl = diamond(parent, name, kwargs["w"], color, m, kwargs["po"], kwargs["ro"]) - elif icon == "cubewithpeak": ctl = cubewithpeak(parent, name, kwargs["w"], color, m, kwargs["po"], kwargs["ro"]) - elif icon == "sphere": ctl = sphere(parent, name, kwargs["w"], color, m, kwargs["po"], kwargs["ro"]) - elif icon == "arrow": ctl = arrow(parent, name, kwargs["w"], color, m, kwargs["po"], kwargs["ro"]) - elif icon == "crossarrow": ctl = crossarrow(parent, name, kwargs["w"], color, m, kwargs["po"], kwargs["ro"]) - elif icon == "cross": ctl = cross(parent, name, kwargs["w"], color, m, kwargs["po"], kwargs["ro"]) - elif icon == "null": ctl = null(parent, name, kwargs["w"], color, m, kwargs["po"], kwargs["ro"]) + if "w" not in kwargs.keys(): + kwargs["w"] = 1 + if "h" not in kwargs.keys(): + kwargs["h"] = 1 + if "d" not in kwargs.keys(): + kwargs["d"] = 1 + if "po" not in kwargs.keys(): + kwargs["po"] = None + if "ro" not in kwargs.keys(): + kwargs["ro"] = None + + if icon == "cube": + ctl = cube(parent, + name, + kwargs["w"], + kwargs["h"], + kwargs["d"], + color, + m, + kwargs["po"], + kwargs["ro"]) + elif icon == "pyramid": + ctl = pyramid(parent, + name, + kwargs["w"], + kwargs["h"], + kwargs["d"], + color, + m, + kwargs["po"], + kwargs["ro"]) + elif icon == "square": + ctl = square(parent, + name, + kwargs["w"], + kwargs["d"], + color, + m, + kwargs["po"], + kwargs["ro"]) + elif icon == "flower": + ctl = flower(parent, + name, + kwargs["w"], + color, + m, + kwargs["po"], + kwargs["ro"]) + elif icon == "circle": + ctl = circle(parent, + name, + kwargs["w"], + color, + m, + kwargs["po"], + kwargs["ro"]) + elif icon == "cylinder": + ctl = cylinder(parent, + name, + kwargs["w"], + kwargs["h"], + color, + m, + kwargs["po"], + kwargs["ro"]) + elif icon == "compas": + ctl = compas(parent, + name, + kwargs["w"], + color, + m, + kwargs["po"], + kwargs["ro"]) + elif icon == "diamond": + ctl = diamond(parent, + name, + kwargs["w"], + color, + m, + kwargs["po"], + kwargs["ro"]) + elif icon == "cubewithpeak": + ctl = cubewithpeak(parent, + name, + kwargs["w"], + color, + m, + kwargs["po"], + kwargs["ro"]) + elif icon == "sphere": + ctl = sphere(parent, + name, + kwargs["w"], + color, + m, + kwargs["po"], + kwargs["ro"]) + elif icon == "arrow": + ctl = arrow(parent, + name, + kwargs["w"], + color, + m, + kwargs["po"], + kwargs["ro"]) + elif icon == "crossarrow": + ctl = crossarrow(parent, + name, + kwargs["w"], + color, + m, + kwargs["po"], + kwargs["ro"]) + elif icon == "cross": + ctl = cross(parent, + name, + kwargs["w"], + color, + m, + kwargs["po"], + kwargs["ro"]) + elif icon == "null": + ctl = null(parent, + name, + kwargs["w"], + color, + m, + kwargs["po"], + kwargs["ro"]) else: mgear.log("invalid type of ico", mgear.sev_error) @@ -91,11 +180,18 @@ def create(parent=None, name="icon", m=dt.Matrix(), color=[0,0,0], icon="cube", return ctl -def cube(parent=None, name="cube", width=1, height=1, depth=1, color=[0,0,0], m=dt.Matrix(), pos_offset=None, rot_offset=None): - """ - Create a curve with a CUBE shape. +def cube(parent=None, + name="cube", + width=1, + height=1, + depth=1, + color=[0, 0, 0], + m=datatypes.Matrix(), + pos_offset=None, + rot_offset=None): + """Create a curve with a CUBE shape. - Args: + Arguments: parent (dagNode): The parent object of the newly created curve. name (str): Name of the curve. width (float): Width of the shape. @@ -103,8 +199,10 @@ def cube(parent=None, name="cube", width=1, height=1, depth=1, color=[0,0,0], m= depth (float): Depth of the shape. color (int or list of float): The color in index base or RGB. m (matrix): The global transformation of the curve. - pos_offset (vector): The xyz position offset of the curve from its center. - rot_offset (vector): The xyz rotation offset of the curve from its center. xyz in radians + pos_offset (vector): The xyz position offset of the curve + from its center. + rot_offset (vector): The xyz rotation offset of the curve + from its center. xyz in radians Returns: dagNode: The newly created icon. @@ -114,29 +212,41 @@ def cube(parent=None, name="cube", width=1, height=1, depth=1, color=[0,0,0], m= lenZ = depth * 0.5 # p is positive, N is negative - ppp = dt.Vector(lenX,lenY,lenZ) - ppN = dt.Vector(lenX,lenY,lenZ*-1) - pNp = dt.Vector(lenX,lenY*-1,lenZ) - Npp = dt.Vector(lenX*-1,lenY,lenZ) - pNN = dt.Vector(lenX,lenY*-1,lenZ*-1) - NNp = dt.Vector(lenX*-1,lenY*-1,lenZ) - NpN = dt.Vector(lenX*-1,lenY,lenZ*-1) - NNN = dt.Vector(lenX*-1,lenY*-1,lenZ*-1) + ppp = datatypes.Vector(lenX, lenY, lenZ) + ppN = datatypes.Vector(lenX, lenY, lenZ * -1) + pNp = datatypes.Vector(lenX, lenY * -1, lenZ) + Npp = datatypes.Vector(lenX * -1, lenY, lenZ) + pNN = datatypes.Vector(lenX, lenY * -1, lenZ * -1) + NNp = datatypes.Vector(lenX * -1, lenY * -1, lenZ) + NpN = datatypes.Vector(lenX * -1, lenY, lenZ * -1) + NNN = datatypes.Vector(lenX * -1, lenY * -1, lenZ * -1) + + v_array = [ppp, ppN, NpN, NNN, NNp, Npp, NpN, Npp, ppp, pNp, NNp, pNp, pNN, + ppN, pNN, NNN] - points = getPointArrayWithOffset([ppp, ppN, NpN, NNN, NNp, Npp, NpN, Npp, ppp, pNp, NNp, pNp, pNN, ppN, pNN, NNN], pos_offset, rot_offset) + points = getPointArrayWithOffset(v_array, + pos_offset, + rot_offset) - node = cur.addCurve(parent, name, points, False, 1, m) + node = curve.addCurve(parent, name, points, False, 1, m) setcolor(node, color) return node -def pyramid(parent=None, name="pyramid", width=1, height=1, depth=1, color=[0,0,0], m=dt.Matrix(), pos_offset=None, rot_offset=None): - """ - Create a curve with a PYRAMIDE shape. +def pyramid(parent=None, + name="pyramid", + width=1, + height=1, + depth=1, + color=[0, 0, 0], + m=datatypes.Matrix(), + pos_offset=None, + rot_offset=None): + """Create a curve with a PYRAMIDE shape. - Args: + Arguments: parent (dagNode): The parent object of the newly created curve. name (str): Name of the curve. width (float): Width of the shape. @@ -144,208 +254,249 @@ def pyramid(parent=None, name="pyramid", width=1, height=1, depth=1, color=[0,0, depth (float): Depth of the shape. color (int or list of float): The color in index base or RGB. m (matrix): The global transformation of the curve. - pos_offset (vector): The xyz position offset of the curve from its center. - rot_offset (vector): The xyz rotation offset of the curve from its center. xyz in radians + pos_offset (vector): The xyz position offset of the curve + from its center. + rot_offset (vector): The xyz rotation offset of the curve + from its center. xyz in radians Returns: dagNode: The newly created icon. + """ lenX = width * 0.5 lenY = height lenZ = depth * 0.5 # p is positive, N is negative - top = dt.Vector(0,lenY,0) - pp = dt.Vector(lenX, 0, lenZ) - pN = dt.Vector(lenX,0,lenZ*-1) - Np = dt.Vector(lenX*-1,0,lenZ) - NN = dt.Vector(lenX*-1,0,lenZ*-1) + top = datatypes.Vector(0, lenY, 0) + pp = datatypes.Vector(lenX, 0, lenZ) + pN = datatypes.Vector(lenX, 0, lenZ * -1) + Np = datatypes.Vector(lenX * -1, 0, lenZ) + NN = datatypes.Vector(lenX * -1, 0, lenZ * -1) - points = getPointArrayWithOffset([pp, top, pN, pp, Np, top, NN, Np, NN, pN], pos_offset, rot_offset) + v_array = [pp, top, pN, pp, Np, top, NN, Np, NN, pN] - node = cur.addCurve(parent, name, points, False, 1, m) + points = getPointArrayWithOffset(v_array, pos_offset, rot_offset) + + node = curve.addCurve(parent, name, points, False, 1, m) setcolor(node, color) return node -def square(parent=None, name="square", width=1, depth=1, color=[0,0,0], m=dt.Matrix(), pos_offset=None, rot_offset=None): - """ - Create a curve with a SQUARE shape. +def square(parent=None, + name="square", + width=1, + depth=1, + color=[0, 0, 0], + m=datatypes.Matrix(), + pos_offset=None, + rot_offset=None): + """Create a curve with a SQUARE shape. - Args: + Arguments: parent (dagNode): The parent object of the newly created curve. name (str): Name of the curve. width (float): Width of the shape. depth (float): Depth of the shape. color (int or list of float): The color in index base or RGB. m (matrix): The global transformation of the curve. - pos_offset (vector): The xyz position offset of the curve from its center. - rot_offset (vector): The xyz rotation offset of the curve from its center. xyz in radians + pos_offset (vector): The xyz position offset of the curve from + its center. + rot_offset (vector): The xyz rotation offset of the curve from + its center. xyz in radians Returns: dagNode: The newly created icon. + """ lenX = width * 0.5 lenZ = depth * 0.5 - v0 = dt.Vector(lenX , 0, lenZ) - v1 = dt.Vector(lenX , 0, lenZ*-1) - v2 = dt.Vector(lenX*-1, 0, lenZ*-1) - v3 = dt.Vector(lenX*-1, 0, lenZ) + v0 = datatypes.Vector(lenX, 0, lenZ) + v1 = datatypes.Vector(lenX, 0, lenZ * -1) + v2 = datatypes.Vector(lenX * -1, 0, lenZ * -1) + v3 = datatypes.Vector(lenX * -1, 0, lenZ) points = getPointArrayWithOffset([v0, v1, v2, v3], pos_offset, rot_offset) - node = cur.addCurve(parent, name, points, True, 1, m) + node = curve.addCurve(parent, name, points, True, 1, m) setcolor(node, color) return node -def flower(parent=None, name="flower", width=1, color=[0,0,0], m=dt.Matrix(), pos_offset=None, rot_offset=None): - """ - Create a curve with a FLOWER shape. +def flower(parent=None, + name="flower", + width=1, + color=[0, 0, 0], + m=datatypes.Matrix(), + pos_offset=None, + rot_offset=None): + """Create a curve with a FLOWER shape. - Args: + Arguments: parent (dagNode): The parent object of the newly created curve. name (str): Name of the curve. width (float): Width of the shape. color (int or list of float): The color in index base or RGB. m (matrix): The global transformation of the curve. - pos_offset (vector): The xyz position offset of the curve from its center. - rot_offset (vector): The xyz rotation offset of the curve from its center. xyz in radians + pos_offset (vector): The xyz position offset of the curve from + its center. + rot_offset (vector): The xyz rotation offset of the curve from + its center. xyz in radians Returns: dagNode: The newly created icon. - """ + """ dlen = width - v0 = dt.Vector(0, -dlen, 0) - v1 = dt.Vector(-dlen * .4, dlen * .4, 0) - v2 = dt.Vector(dlen, 0, 0) - v3 = dt.Vector(-dlen * .4, -dlen * .4, 0) - v4 = dt.Vector(0, dlen, 0) - v5 = dt.Vector(dlen * .4, -dlen * .4, 0) - v6 = dt.Vector(-dlen, 0, 0) - v7 = dt.Vector(dlen * .4, dlen * .4, 0) + v0 = datatypes.Vector(0, -dlen, 0) + v1 = datatypes.Vector(-dlen * .4, dlen * .4, 0) + v2 = datatypes.Vector(dlen, 0, 0) + v3 = datatypes.Vector(-dlen * .4, -dlen * .4, 0) + v4 = datatypes.Vector(0, dlen, 0) + v5 = datatypes.Vector(dlen * .4, -dlen * .4, 0) + v6 = datatypes.Vector(-dlen, 0, 0) + v7 = datatypes.Vector(dlen * .4, dlen * .4, 0) - points = getPointArrayWithOffset([v0, v1, v2, v3, v4, v5, v6, v7], pos_offset, rot_offset) + points = getPointArrayWithOffset( + [v0, v1, v2, v3, v4, v5, v6, v7], pos_offset, rot_offset) - node = cur.addCurve(parent, name, points, True, 3, m) + node = curve.addCurve(parent, name, points, True, 3, m) setcolor(node, color) return node -def circle(parent=None, name="circle", width=1, color=[0,0,0], m=dt.Matrix(), pos_offset=None, rot_offset=None): - """ - Create a curve with a CIRCLE shape. +def circle(parent=None, + name="circle", + width=1, + color=[0, 0, 0], + m=datatypes.Matrix(), + pos_offset=None, + rot_offset=None): + """Create a curve with a CIRCLE shape. - Args: + Arguments: parent (dagNode): The parent object of the newly created curve. name (str): Name of the curve. width (float): Width of the shape. color (int or list of float): The color in index base or RGB. m (matrix): The global transformation of the curve. - pos_offset (vector): The xyz position offset of the curve from its center. - rot_offset (vector): The xyz rotation offset of the curve from its center. xyz in radians + pos_offset (vector): The xyz position offset of the curve from + its center. + rot_offset (vector): The xyz rotation offset of the curve from + its center. xyz in radians Returns: dagNode: The newly created icon. + """ dlen = width * 0.5 - v0 = dt.Vector(0, 0, -dlen * 1.108) - v1 = dt.Vector(dlen * .78 , 0, -dlen * .78) - v2 = dt.Vector(dlen * 1.108, 0, 0) - v3 = dt.Vector(dlen * .78 , 0, dlen * .78) - v4 = dt.Vector(0, 0, dlen * 1.108) - v5 = dt.Vector(-dlen * .78 , 0, dlen * .78) - v6 = dt.Vector(-dlen * 1.108, 0, 0) - v7 = dt.Vector(-dlen * .78 , 0, -dlen * .78) + v0 = datatypes.Vector(0, 0, -dlen * 1.108) + v1 = datatypes.Vector(dlen * .78, 0, -dlen * .78) + v2 = datatypes.Vector(dlen * 1.108, 0, 0) + v3 = datatypes.Vector(dlen * .78, 0, dlen * .78) + v4 = datatypes.Vector(0, 0, dlen * 1.108) + v5 = datatypes.Vector(-dlen * .78, 0, dlen * .78) + v6 = datatypes.Vector(-dlen * 1.108, 0, 0) + v7 = datatypes.Vector(-dlen * .78, 0, -dlen * .78) - points = getPointArrayWithOffset([v0, v1, v2, v3, v4, v5, v6, v7], pos_offset, rot_offset) + points = getPointArrayWithOffset( + [v0, v1, v2, v3, v4, v5, v6, v7], pos_offset, rot_offset) - node = cur.addCurve(parent, name, points, True, 3, m) + node = curve.addCurve(parent, name, points, True, 3, m) setcolor(node, color) return node -def cylinder(parent=None, name="cylinder", width=1, heigth=1, color=[0,0,0], m=dt.Matrix(), pos_offset=None, rot_offset=None): - """ - Create a curve with a CYLINDER shape. +def cylinder(parent=None, + name="cylinder", + width=1, + heigth=1, + color=[0, 0, 0], + m=datatypes.Matrix(), + pos_offset=None, + rot_offset=None): + """Create a curve with a CYLINDER shape. - Args: + Arguments: parent (dagNode): The parent object of the newly created curve. name (str): Name of the curve. width (float): Width of the shape. height (float): Height of the shape. color (int or list of float): The color in index base or RGB. m (matrix): The global transformation of the curve. - pos_offset (vector): The xyz position offset of the curve from its center. - rot_offset (vector): The xyz rotation offset of the curve from its center. xyz in radians + pos_offset (vector): The xyz position offset of the curve from + its center. + rot_offset (vector): The xyz rotation offset of the curve from + its center. xyz in radians Returns: dagNode: The newly created icon. - """ + """ dlen = width * .5 dhei = heigth * .5 # upper circle - v0 = dt.Vector(0, dhei, -dlen * 1.108) - v1 = dt.Vector(dlen * .78 , dhei, -dlen * .78) - v2 = dt.Vector(dlen * 1.108, dhei, 0) - v3 = dt.Vector(dlen * .78 , dhei, dlen * .78) - v4 = dt.Vector(0, dhei, dlen * 1.108) - v5 = dt.Vector(-dlen * .78 , dhei, dlen * .78) - v6 = dt.Vector(-dlen * 1.108, dhei, 0) - v7 = dt.Vector(-dlen * .78 , dhei, -dlen * .78) + v0 = datatypes.Vector(0, dhei, -dlen * 1.108) + v1 = datatypes.Vector(dlen * .78, dhei, -dlen * .78) + v2 = datatypes.Vector(dlen * 1.108, dhei, 0) + v3 = datatypes.Vector(dlen * .78, dhei, dlen * .78) + v4 = datatypes.Vector(0, dhei, dlen * 1.108) + v5 = datatypes.Vector(-dlen * .78, dhei, dlen * .78) + v6 = datatypes.Vector(-dlen * 1.108, dhei, 0) + v7 = datatypes.Vector(-dlen * .78, dhei, -dlen * .78) # lower circle - v8 = dt.Vector(0, -dhei, -dlen * 1.108) - v9 = dt.Vector(dlen * .78 , -dhei, -dlen * .78) - v10 = dt.Vector(dlen * 1.108, -dhei, 0) - v11 = dt.Vector(dlen * .78 , -dhei, dlen * .78) - v12 = dt.Vector(0, -dhei, dlen * 1.108) - v13 = dt.Vector(-dlen * .78 , -dhei, dlen * .78) - v14 = dt.Vector(-dlen * 1.108, -dhei, 0) - v15 = dt.Vector(-dlen * .78 , -dhei, -dlen * .78) + v8 = datatypes.Vector(0, -dhei, -dlen * 1.108) + v9 = datatypes.Vector(dlen * .78, -dhei, -dlen * .78) + v10 = datatypes.Vector(dlen * 1.108, -dhei, 0) + v11 = datatypes.Vector(dlen * .78, -dhei, dlen * .78) + v12 = datatypes.Vector(0, -dhei, dlen * 1.108) + v13 = datatypes.Vector(-dlen * .78, -dhei, dlen * .78) + v14 = datatypes.Vector(-dlen * 1.108, -dhei, 0) + v15 = datatypes.Vector(-dlen * .78, -dhei, -dlen * .78) # curves - v16 = dt.Vector(0, dhei, -dlen) - v17 = dt.Vector(0, -dhei, -dlen) - v18 = dt.Vector(0, -dhei, dlen) - v19 = dt.Vector(0, dhei, dlen) + v16 = datatypes.Vector(0, dhei, -dlen) + v17 = datatypes.Vector(0, -dhei, -dlen) + v18 = datatypes.Vector(0, -dhei, dlen) + v19 = datatypes.Vector(0, dhei, dlen) - v20 = dt.Vector(dlen, dhei, 0) - v21 = dt.Vector(dlen, -dhei, 0) - v22 = dt.Vector(-dlen, -dhei, 0) - v23 = dt.Vector(-dlen, dhei, 0) + v20 = datatypes.Vector(dlen, dhei, 0) + v21 = datatypes.Vector(dlen, -dhei, 0) + v22 = datatypes.Vector(-dlen, -dhei, 0) + v23 = datatypes.Vector(-dlen, dhei, 0) - points = getPointArrayWithOffset([v0, v1, v2, v3, v4, v5, v6, v7], pos_offset, rot_offset) - node = cur.addCurve(parent, name, points, True, 3, m) + points = getPointArrayWithOffset( + [v0, v1, v2, v3, v4, v5, v6, v7], pos_offset, rot_offset) + node = curve.addCurve(parent, name, points, True, 3, m) - points = getPointArrayWithOffset([v8, v9, v10, v11, v12, v13, v14, v15], pos_offset, rot_offset) - crv_0 = cur.addCurve(parent, node+"_0crv", points, True, 3, m) + points = getPointArrayWithOffset( + [v8, v9, v10, v11, v12, v13, v14, v15], pos_offset, rot_offset) + crv_0 = curve.addCurve(parent, node + "_0crv", points, True, 3, m) points = getPointArrayWithOffset([v16, v17], pos_offset, rot_offset) - crv_1 = cur.addCurve(parent, node+"_1crv", points, True, 1, m) + crv_1 = curve.addCurve(parent, node + "_1crv", points, True, 1, m) points = getPointArrayWithOffset([v18, v19], pos_offset, rot_offset) - crv_2 = cur.addCurve(parent, node+"_2crv", points, True, 1, m) + crv_2 = curve.addCurve(parent, node + "_2crv", points, True, 1, m) points = getPointArrayWithOffset([v20, v21], pos_offset, rot_offset) - crv_3 = cur.addCurve(parent, node+"_3crv", points, True, 1, m) + crv_3 = curve.addCurve(parent, node + "_3crv", points, True, 1, m) points = getPointArrayWithOffset([v22, v23], pos_offset, rot_offset) - crv_4 = cur.addCurve(parent, node+"_4crv", points, True, 1, m) + crv_4 = curve.addCurve(parent, node + "_4crv", points, True, 1, m) for crv in [crv_0, crv_1, crv_2, crv_3, crv_4]: for shp in crv.listRelatives(shapes=True): @@ -357,51 +508,63 @@ def cylinder(parent=None, name="cylinder", width=1, heigth=1, color=[0,0,0], m=d return node -def compas(parent=None, name="compas", width=1, color=[0,0,0], m=dt.Matrix(), pos_offset=None, rot_offset=None): - """ - Create a curve with a COMPAS shape. +def compas(parent=None, + name="compas", + width=1, + color=[0, 0, 0], + m=datatypes.Matrix(), + pos_offset=None, + rot_offset=None): + """Create a curve with a COMPAS shape. - Args: + Arguments: parent (dagNode): The parent object of the newly created curve. name (str): Name of the curve. width (float): Width of the shape. color (int or list of float): The color in index base or RGB. m (matrix): The global transformation of the curve. - pos_offset (vector): The xyz position offset of the curve from its center. - rot_offset (vector): The xyz rotation offset of the curve from its center. xyz in radians + pos_offset (vector): The xyz position offset of the curve from + its center. + rot_offset (vector): The xyz rotation offset of the curve from + its center. xyz in radians Returns: dagNode: The newly created icon. - """ + """ dlen = width * 0.5 division = 24 point_pos = [] - v = dt.Vector(0, 0, dlen) + v = datatypes.Vector(0, 0, dlen) for i in range(division): - if i == division/2: - w = dt.Vector(v.x, v.y, v.z-dlen*.4) + if i == division / 2: + w = datatypes.Vector(v.x, v.y, v.z - dlen * .4) else: - w = dt.Vector(v.x, v.y, v.z) + w = datatypes.Vector(v.x, v.y, v.z) point_pos.append(w) - v = v.rotateBy((0,(2*pmu.math.pi)/(division+0.0),0)) + v = v.rotateBy((0, (2 * pmu.math.pi) / (division + 0.0), 0)) points = getPointArrayWithOffset(point_pos, pos_offset, rot_offset) - node = cur.addCurve(parent, name, points, True, 3, m) + node = curve.addCurve(parent, name, points, True, 3, m) setcolor(node, color) return node -def diamond(parent=None, name="diamond", width=1, color=[0,0,0], m=dt.Matrix(), pos_offset=None, rot_offset=None): - """ - Create a curve with a DIAMOND shape. +def diamond(parent=None, + name="diamond", + width=1, + color=[0, 0, 0], + m=datatypes.Matrix(), + pos_offset=None, + rot_offset=None): + """Create a curve with a DIAMOND shape. - Args: + Arguments: parent (dagNode): The parent object of the newly created curve. name (str): Name of the curve. width (float): Width of the shape. @@ -409,109 +572,133 @@ def diamond(parent=None, name="diamond", width=1, color=[0,0,0], m=dt.Matrix(), depth (float): Depth of the shape. color (int or list of float): The color in index base or RGB. m (matrix): The global transformation of the curve. - pos_offset (vector): The xyz position offset of the curve from its center. - rot_offset (vector): The xyz rotation offset of the curve from its center. xyz in radians + pos_offset (vector): The xyz position offset of the curve from + its center. + rot_offset (vector): The xyz rotation offset of the curve from + its center. xyz in radians Returns: dagNode: The newly created icon. - """ + """ dlen = width * 0.5 - top = dt.Vector(0,dlen,0) - pp = dt.Vector(dlen,0,dlen) - pN = dt.Vector(dlen,0,dlen*-1) - Np = dt.Vector(dlen*-1,0,dlen) - NN = dt.Vector(dlen*-1,0,dlen*-1) - bottom = (0,-dlen,0) + top = datatypes.Vector(0, dlen, 0) + pp = datatypes.Vector(dlen, 0, dlen) + pN = datatypes.Vector(dlen, 0, dlen * -1) + Np = datatypes.Vector(dlen * -1, 0, dlen) + NN = datatypes.Vector(dlen * -1, 0, dlen * -1) + bottom = (0, -dlen, 0) + + v_array = [pp, top, pN, pp, Np, top, NN, Np, NN, pN, bottom, NN, bottom, + Np, bottom, pp] - points = getPointArrayWithOffset([pp,top,pN,pp,Np,top,NN,Np,NN,pN,bottom,NN,bottom,Np,bottom,pp], pos_offset, rot_offset) + points = getPointArrayWithOffset(v_array, pos_offset, rot_offset) - node = cur.addCurve(parent, name, points, False, 1, m) + node = curve.addCurve(parent, name, points, False, 1, m) setcolor(node, color) return node -def cubewithpeak(parent=None, name="cubewithpeak", width=1, color=[0,0,0], m=dt.Matrix(), pos_offset=None, rot_offset=None): - """ - Create a curve with a CUBE WITH PEAK shape. +def cubewithpeak(parent=None, + name="cubewithpeak", + width=1, + color=[0, 0, 0], + m=datatypes.Matrix(), + pos_offset=None, + rot_offset=None): + """Create a curve with a CUBE WITH PEAK shape. - Args: + Arguments: parent (dagNode): The parent object of the newly created curve. name (str): Name of the curve. width (float): Width of the shape. color (int or list of float): The color in index base or RGB. m (matrix): The global transformation of the curve. - pos_offset (vector): The xyz position offset of the curve from its center. - rot_offset (vector): The xyz rotation offset of the curve from its center. xyz in radians + pos_offset (vector): The xyz position offset of the curve from + its center. + rot_offset (vector): The xyz rotation offset of the curve from + its center. xyz in radians Returns: dagNode: The newly created icon. - """ + """ dlen = width * 0.5 - peak = dt.Vector(0,width,0) - ppp = dt.Vector(dlen,dlen,dlen) - ppN = dt.Vector(dlen,dlen,dlen*-1) - pNp = dt.Vector(dlen,0,dlen) - Npp = dt.Vector(dlen*-1,dlen,dlen) - pNN = dt.Vector(dlen,0,dlen*-1) - NNp = dt.Vector(dlen*-1,0,dlen) - NpN = dt.Vector(dlen*-1,dlen,dlen*-1) - NNN = dt.Vector(dlen*-1,0,dlen*-1) + peak = datatypes.Vector(0, width, 0) + ppp = datatypes.Vector(dlen, dlen, dlen) + ppN = datatypes.Vector(dlen, dlen, dlen * -1) + pNp = datatypes.Vector(dlen, 0, dlen) + Npp = datatypes.Vector(dlen * -1, dlen, dlen) + pNN = datatypes.Vector(dlen, 0, dlen * -1) + NNp = datatypes.Vector(dlen * -1, 0, dlen) + NpN = datatypes.Vector(dlen * -1, dlen, dlen * -1) + NNN = datatypes.Vector(dlen * -1, 0, dlen * -1) + + v_array = [peak, ppp, ppN, peak, NpN, ppN, NpN, peak, Npp, NpN, NNN, NNp, + Npp, NpN, Npp, ppp, pNp, NNp, pNp, pNN, ppN, pNN, NNN] - points = getPointArrayWithOffset([peak,ppp,ppN,peak,NpN,ppN,NpN,peak,Npp,NpN,NNN,NNp,Npp,NpN,Npp,ppp,pNp,NNp,pNp,pNN,ppN,pNN,NNN], pos_offset, rot_offset) + points = getPointArrayWithOffset(v_array, pos_offset, rot_offset) - node = cur.addCurve(parent, name, points, False, 1, m) + node = curve.addCurve(parent, name, points, False, 1, m) setcolor(node, color) return node -def sphere(parent=None, name="sphere", width=1, color=[0,0,0], m=dt.Matrix(), pos_offset=None, rot_offset=None): - """ - Create a curve with a SPHERE shape. +def sphere(parent=None, + name="sphere", + width=1, + color=[0, 0, 0], + m=datatypes.Matrix(), + pos_offset=None, + rot_offset=None): + """Create a curve with a SPHERE shape. - Args: + Arguments: parent (dagNode): The parent object of the newly created curve. name (str): Name of the curve. width (float): Width of the shape. color (int or list of float): The color in index base or RGB. m (matrix): The global transformation of the curve. - pos_offset (vector): The xyz position offset of the curve from its center. - rot_offset (vector): The xyz rotation offset of the curve from its center. xyz in radians + pos_offset (vector): The xyz position offset of the curve from + its center. + rot_offset (vector): The xyz rotation offset of the curve from + its center. xyz in radians Returns: dagNode: The newly created icon. - """ + """ dlen = width - v0 = dt.Vector(0.75*dlen, 0, 0) - v1 = dt.Vector(0, -.75*dlen, 0) - v2 = dt.Vector(-.75*dlen, 0, 0) - v3 = dt.Vector(0, 0.75*dlen, 0) - v4 = dt.Vector(0.75*dlen, 0, 0) - v5 = dt.Vector(0, 0, -.75*dlen) - v6 = dt.Vector(-.75*dlen, 0, 0) - v7 = dt.Vector(0, 0, 0.75*dlen) - v8 = dt.Vector(0, 0, 0.75*dlen) - v9 = dt.Vector(0, -.75*dlen, 0) - v10 = dt.Vector(0, 0, -.75*dlen) - v11 = dt.Vector(0, 0.75*dlen, 0) + v0 = datatypes.Vector(0.75 * dlen, 0, 0) + v1 = datatypes.Vector(0, -.75 * dlen, 0) + v2 = datatypes.Vector(-.75 * dlen, 0, 0) + v3 = datatypes.Vector(0, 0.75 * dlen, 0) + v4 = datatypes.Vector(0.75 * dlen, 0, 0) + v5 = datatypes.Vector(0, 0, -.75 * dlen) + v6 = datatypes.Vector(-.75 * dlen, 0, 0) + v7 = datatypes.Vector(0, 0, 0.75 * dlen) + v8 = datatypes.Vector(0, 0, 0.75 * dlen) + v9 = datatypes.Vector(0, -.75 * dlen, 0) + v10 = datatypes.Vector(0, 0, -.75 * dlen) + v11 = datatypes.Vector(0, 0.75 * dlen, 0) points = getPointArrayWithOffset([v0, v1, v2, v3], pos_offset, rot_offset) - node = cur.addCurve(parent, name, points, True, 3, m) + node = curve.addCurve(parent, name, points, True, 3, m) points = getPointArrayWithOffset([v4, v5, v6, v7], pos_offset, rot_offset) - crv_0 = cur.addCurve(parent, node+"_0crv", points, True, 3, m) + crv_0 = curve.addCurve(parent, node + "_0crv", points, True, 3, m) - points = getPointArrayWithOffset([v8, v9, v10, v11], pos_offset, rot_offset) - crv_1 = cur.addCurve(parent, node+"_1crv", points, True, 3, m) + points = getPointArrayWithOffset( + [v8, v9, v10, v11], pos_offset, rot_offset) + + crv_1 = curve.addCurve(parent, node + "_1crv", points, True, 3, m) for crv in [crv_0, crv_1]: for shp in crv.listRelatives(shapes=True): @@ -523,175 +710,209 @@ def sphere(parent=None, name="sphere", width=1, color=[0,0,0], m=dt.Matrix(), po return node -def arrow(parent=None, name="arrow", width=1, color=[0,0,0], m=dt.Matrix(), pos_offset=None, rot_offset=None): - """ - Create a curve with a ARROW shape. +def arrow(parent=None, + name="arrow", + width=1, + color=[0, 0, 0], + m=datatypes.Matrix(), + pos_offset=None, + rot_offset=None): + """Create a curve with a ARROW shape. - Args: + Arguments: parent (dagNode): The parent object of the newly created curve. name (str): Name of the curve. width (float): Width of the shape. color (int or list of float): The color in index base or RGB. m (matrix): The global transformation of the curve. - pos_offset (vector): The xyz position offset of the curve from its center. - rot_offset (vector): The xyz rotation offset of the curve from its center. xyz in radians + pos_offset (vector): The xyz position offset of the curve from + its center. + rot_offset (vector): The xyz rotation offset of the curve from + its center. xyz in radians Returns: dagNode: The newly created icon. - """ + """ dlen = width * 0.5 - v0 = dt.Vector(0, 0.3*dlen, -dlen) - v1 = dt.Vector(0, 0.3*dlen, 0.3*dlen) - v2 = dt.Vector(0, 0.6*dlen, 0.3*dlen) - v3 = dt.Vector(0, 0, dlen) - v4 = dt.Vector(0, -0.6*dlen, 0.3*dlen) - v5 = dt.Vector(0, -0.3*dlen, 0.3*dlen) - v6 = dt.Vector(0, -0.3*dlen, -dlen) + v0 = datatypes.Vector(0, 0.3 * dlen, -dlen) + v1 = datatypes.Vector(0, 0.3 * dlen, 0.3 * dlen) + v2 = datatypes.Vector(0, 0.6 * dlen, 0.3 * dlen) + v3 = datatypes.Vector(0, 0, dlen) + v4 = datatypes.Vector(0, -0.6 * dlen, 0.3 * dlen) + v5 = datatypes.Vector(0, -0.3 * dlen, 0.3 * dlen) + v6 = datatypes.Vector(0, -0.3 * dlen, -dlen) - points = getPointArrayWithOffset([v0, v1, v2, v3, v4, v5, v6], pos_offset, rot_offset) + points = getPointArrayWithOffset( + [v0, v1, v2, v3, v4, v5, v6], pos_offset, rot_offset) - node = cur.addCurve(parent, name, points, True, 1, m) + node = curve.addCurve(parent, name, points, True, 1, m) setcolor(node, color) return node -def crossarrow(parent=None, name="crossArrow", width=1, color=[0,0,0], m=dt.Matrix(), pos_offset=None, rot_offset=None): - """ - Create a curve with a CROSS ARROW shape. +def crossarrow(parent=None, + name="crossArrow", + width=1, + color=[0, 0, 0], + m=datatypes.Matrix(), + pos_offset=None, + rot_offset=None): + """Create a curve with a CROSS ARROW shape. - Args: + Arguments: parent (dagNode): The parent object of the newly created curve. name (str): Name of the curve. width (float): Width of the shape. color (int or list of float): The color in index base or RGB. m (matrix): The global transformation of the curve. - pos_offset (vector): The xyz position offset of the curve from its center. - rot_offset (vector): The xyz rotation offset of the curve from its center. xyz in radians + pos_offset (vector): The xyz position offset of the curve from + its center. + rot_offset (vector): The xyz rotation offset of the curve from + its center. xyz in radians Returns: dagNode: The newly created icon. - """ + """ dlen = width * 0.5 - v0 = dt.Vector(0.2*dlen, 0, 0.2*dlen) - v1 = dt.Vector(0.2*dlen, 0, 0.6*dlen) - v2 = dt.Vector(0.4*dlen, 0, 0.6*dlen) - v3 = dt.Vector(0, 0, dlen) - v4 = dt.Vector(-0.4*dlen, 0, 0.6*dlen) - v5 = dt.Vector(-0.2*dlen, 0, 0.6*dlen) - v6 = dt.Vector(-0.2*dlen, 0, 0.2*dlen) - v7 = dt.Vector(-0.6*dlen, 0, 0.2*dlen) - v8 = dt.Vector(-0.6*dlen, 0, 0.4*dlen) - v9 = dt.Vector(-dlen, 0, 0) - v10 = dt.Vector(-0.6*dlen, 0, -0.4*dlen) - v11 = dt.Vector(-0.6*dlen, 0, -0.2*dlen) - v12 = dt.Vector(-0.2*dlen, 0, -0.2*dlen) - v13 = dt.Vector(-0.2*dlen, 0, -0.6*dlen) - v14 = dt.Vector(-0.4*dlen, 0, -0.6*dlen) - v15 = dt.Vector(0, 0, -dlen) - v16 = dt.Vector(0.4*dlen, 0, -0.6*dlen) - v17 = dt.Vector(0.2*dlen, 0, -0.6*dlen) - v18 = dt.Vector(0.2*dlen, 0, -0.2*dlen) - v19 = dt.Vector(0.6*dlen, 0, -0.2*dlen) - v20 = dt.Vector(0.6*dlen, 0, -0.4*dlen) - v21 = dt.Vector(dlen, 0, 0) - v22 = dt.Vector(0.6*dlen, 0, 0.4*dlen) - v23 = dt.Vector(0.6*dlen, 0, 0.2*dlen) - - points = getPointArrayWithOffset([v0, v1, v2, v3, v4, v5, v6, v7, v8, v9, v10, v11, v12, v13, v14, v15, v16, v17, v18, v19, v20, v21, v22, v23], pos_offset, rot_offset) - - node = cur.addCurve(parent, name, points, True, 1, m) + v0 = datatypes.Vector(0.2 * dlen, 0, 0.2 * dlen) + v1 = datatypes.Vector(0.2 * dlen, 0, 0.6 * dlen) + v2 = datatypes.Vector(0.4 * dlen, 0, 0.6 * dlen) + v3 = datatypes.Vector(0, 0, dlen) + v4 = datatypes.Vector(-0.4 * dlen, 0, 0.6 * dlen) + v5 = datatypes.Vector(-0.2 * dlen, 0, 0.6 * dlen) + v6 = datatypes.Vector(-0.2 * dlen, 0, 0.2 * dlen) + v7 = datatypes.Vector(-0.6 * dlen, 0, 0.2 * dlen) + v8 = datatypes.Vector(-0.6 * dlen, 0, 0.4 * dlen) + v9 = datatypes.Vector(-dlen, 0, 0) + v10 = datatypes.Vector(-0.6 * dlen, 0, -0.4 * dlen) + v11 = datatypes.Vector(-0.6 * dlen, 0, -0.2 * dlen) + v12 = datatypes.Vector(-0.2 * dlen, 0, -0.2 * dlen) + v13 = datatypes.Vector(-0.2 * dlen, 0, -0.6 * dlen) + v14 = datatypes.Vector(-0.4 * dlen, 0, -0.6 * dlen) + v15 = datatypes.Vector(0, 0, -dlen) + v16 = datatypes.Vector(0.4 * dlen, 0, -0.6 * dlen) + v17 = datatypes.Vector(0.2 * dlen, 0, -0.6 * dlen) + v18 = datatypes.Vector(0.2 * dlen, 0, -0.2 * dlen) + v19 = datatypes.Vector(0.6 * dlen, 0, -0.2 * dlen) + v20 = datatypes.Vector(0.6 * dlen, 0, -0.4 * dlen) + v21 = datatypes.Vector(dlen, 0, 0) + v22 = datatypes.Vector(0.6 * dlen, 0, 0.4 * dlen) + v23 = datatypes.Vector(0.6 * dlen, 0, 0.2 * dlen) + + v_array = [v0, v1, v2, v3, v4, v5, v6, v7, v8, v9, v10, v11, v12, v13, v14, + v15, v16, v17, v18, v19, v20, v21, v22, v23] + points = getPointArrayWithOffset(v_array, pos_offset, rot_offset) + + node = curve.addCurve(parent, name, points, True, 1, m) setcolor(node, color) return node -def cross(parent=None, name="cross", width=1, color=[0,0,0], m=dt.Matrix(), pos_offset=None, rot_offset=None): - """ - Create a curve with a CROSS shape. +def cross(parent=None, + name="cross", + width=1, + color=[0, 0, 0], + m=datatypes.Matrix(), + pos_offset=None, + rot_offset=None): + """Create a curve with a CROSS shape. - Args: + Arguments: parent (dagNode): The parent object of the newly created curve. name (str): Name of the curve. width (float): Width of the shape. color (int or list of float): The color in index base or RGB. m (matrix): The global transformation of the curve. - pos_offset (vector): The xyz position offset of the curve from its center. - rot_offset (vector): The xyz rotation offset of the curve from its center. xyz in radians + pos_offset (vector): The xyz position offset of the curve from + its center. + rot_offset (vector): The xyz rotation offset of the curve from + its center. xyz in radians Returns: dagNode: The newly created icon. - """ + """ width = width * 0.35 offset1 = width * .5 offset2 = width * 1.5 - v0 = dt.Vector(width,offset2,0) - v1 = dt.Vector(offset2,width,0) - v2 = dt.Vector(offset1,0,0) + v0 = datatypes.Vector(width, offset2, 0) + v1 = datatypes.Vector(offset2, width, 0) + v2 = datatypes.Vector(offset1, 0, 0) - v3 = dt.Vector(offset2,-width,0) - v4 = dt.Vector(width,-offset2,0) - v5 = dt.Vector(0,-offset1,0) + v3 = datatypes.Vector(offset2, -width, 0) + v4 = datatypes.Vector(width, -offset2, 0) + v5 = datatypes.Vector(0, -offset1, 0) - v6 = dt.Vector(-width,-offset2,0) - v7 = dt.Vector(-offset2,-width,0) - v8 = dt.Vector(-offset1,0,0) + v6 = datatypes.Vector(-width, -offset2, 0) + v7 = datatypes.Vector(-offset2, -width, 0) + v8 = datatypes.Vector(-offset1, 0, 0) - v9 = dt.Vector(-offset2,width,0) - v10 = dt.Vector(-width,offset2,0) - v11 = dt.Vector(0,offset1,0) + v9 = datatypes.Vector(-offset2, width, 0) + v10 = datatypes.Vector(-width, offset2, 0) + v11 = datatypes.Vector(0, offset1, 0) - points = getPointArrayWithOffset([v0, v1, v2, v3, v4, v5, v6, v7, v8, v9, v10, v11], pos_offset, rot_offset) + points = getPointArrayWithOffset( + [v0, v1, v2, v3, v4, v5, v6, v7, v8, v9, v10, v11], + pos_offset, + rot_offset) - node = cur.addCurve(parent, name, points, True, 1, m) + node = curve.addCurve(parent, name, points, True, 1, m) setcolor(node, color) return node -def null(parent=None, name="null", width=1, color=[0,0,0], m=dt.Matrix(), pos_offset=None, rot_offset=None): - """ - Create a curve with a NULL shape. +def null(parent=None, + name="null", + width=1, + color=[0, 0, 0], + m=datatypes.Matrix(), + pos_offset=None, + rot_offset=None): + """Create a curve with a NULL shape. - Args: + Arguments: parent (dagNode): The parent object of the newly created curve. name (str): Name of the curve. width (float): Width of the shape. color (int or list of float): The color in index base or RGB. m (matrix): The global transformation of the curve. - pos_offset (vector): The xyz position offset of the curve from its center. - rot_offset (vector): The xyz rotation offset of the curve from its center. xyz in radians + pos_offset (vector): The xyz position offset of the curve from + its center. + rot_offset (vector): The xyz rotation offset of the curve from + its center. xyz in radians Returns: dagNode: The newly created icon. - """ + """ dlen = width * .5 - v0 = dt.Vector(dlen, 0, 0) - v1 = dt.Vector(-dlen, 0, 0) - v2 = dt.Vector(0,dlen, 0) - v3 = dt.Vector(0, -dlen, 0) - v4 = dt.Vector(0, 0, dlen) - v5 = dt.Vector(0, 0, -dlen) + v0 = datatypes.Vector(dlen, 0, 0) + v1 = datatypes.Vector(-dlen, 0, 0) + v2 = datatypes.Vector(0, dlen, 0) + v3 = datatypes.Vector(0, -dlen, 0) + v4 = datatypes.Vector(0, 0, dlen) + v5 = datatypes.Vector(0, 0, -dlen) points = getPointArrayWithOffset([v0, v1], pos_offset, rot_offset) - node = cur.addCurve(parent, name, points, False, 1, m) + node = curve.addCurve(parent, name, points, False, 1, m) points = getPointArrayWithOffset([v2, v3], pos_offset, rot_offset) - crv_0 = cur.addCurve(parent, name, points, False, 1, m) + crv_0 = curve.addCurve(parent, name, points, False, 1, m) points = getPointArrayWithOffset([v4, v5], pos_offset, rot_offset) - crv_1 = cur.addCurve(parent, name, points, False, 1, m) + crv_1 = curve.addCurve(parent, name, points, False, 1, m) for crv in [crv_0, crv_1]: for shp in crv.listRelatives(shapes=True): @@ -703,41 +924,47 @@ def null(parent=None, name="null", width=1, color=[0,0,0], m=dt.Matrix(), pos_of return node -def axis(parent=None, name="axis", width=1, color=[0,0,0], m=dt.Matrix(), pos_offset=None, rot_offset=None): - """ - Create a curve with a AXIS shape. +def axis(parent=None, + name="axis", + width=1, + color=[0, 0, 0], + m=datatypes.Matrix(), + pos_offset=None, + rot_offset=None): + """Create a curve with a AXIS shape. - Args: + Arguments: parent (dagNode): The parent object of the newly created curve. name (str): Name of the curve. width (float): Width of the shape. color (int or list of float): The color in index base or RGB. m (matrix): The global transformation of the curve. - pos_offset (vector): The xyz position offset of the curve from its center. - rot_offset (vector): The xyz rotation offset of the curve from its center. xyz in radians + pos_offset (vector): The xyz position offset of the curve from + its center. + rot_offset (vector): The xyz rotation offset of the curve from + its center. xyz in radians Returns: dagNode: The newly created icon. - """ + """ dlen = width * .5 - v0 = dt.Vector(0, 0, 0) - v1 = dt.Vector(dlen, 0, 0) - v2 = dt.Vector(0,dlen, 0) - v3 = dt.Vector(0, 0, dlen) - + v0 = datatypes.Vector(0, 0, 0) + v1 = datatypes.Vector(dlen, 0, 0) + v2 = datatypes.Vector(0, dlen, 0) + v3 = datatypes.Vector(0, 0, dlen) points = getPointArrayWithOffset([v0, v1], pos_offset, rot_offset) - node = cur.addCurve(parent, name, points, False, 1, m) + node = curve.addCurve(parent, name, points, False, 1, m) setcolor(node, 4) points = getPointArrayWithOffset([v0, v2], pos_offset, rot_offset) - crv_0 = cur.addCurve(parent, name, points, False, 1, m) + crv_0 = curve.addCurve(parent, name, points, False, 1, m) setcolor(crv_0, 14) points = getPointArrayWithOffset([v0, v3], pos_offset, rot_offset) - crv_1 = cur.addCurve(parent, name, points, False, 1, m) + crv_1 = curve.addCurve(parent, name, points, False, 1, m) setcolor(crv_1, 6) for crv in [crv_0, crv_1]: @@ -752,35 +979,50 @@ def axis(parent=None, name="axis", width=1, color=[0,0,0], m=dt.Matrix(), pos_of # Guide Icons ########################################################## -def guideRootIcon(parent=None, name="root", width=.5, color=[0,0,0], m=dt.Matrix(), pos_offset=None, rot_offset=None): - """ - Create a curve with a ROOT GUIDE shape. +def guideRootIcon(parent=None, + name="root", + width=.5, + color=[0, 0, 0], + m=datatypes.Matrix(), + pos_offset=None, + rot_offset=None): + """Create a curve with a ROOT GUIDE shape. Note: This icon is specially design for **Shifter** root guides - Args: + Arguments: parent (dagNode): The parent object of the newly created curve. name (str): Name of the curve. width (float): Width of the shape. color (int or list of float): The color in index base or RGB. m (matrix): The global transformation of the curve. - pos_offset (vector): The xyz position offset of the curve from its center. - rot_offset (vector): The xyz rotation offset of the curve from its center. xyz in radians + pos_offset (vector): The xyz position offset of the curve from + its center. + rot_offset (vector): The xyz rotation offset of the curve from + its center. xyz in radians Returns: dagNode: The newly created icon. - """ + """ rootIco = null(parent, name, width, color, m, pos_offset, rot_offset) - cubeWidth = width/2.0 - cubeIco = cube(parent, name, cubeWidth, cubeWidth, cubeWidth, color, m, pos_offset, rot_offset) + cubeWidth = width / 2.0 + cubeIco = cube(parent, + name, + cubeWidth, + cubeWidth, + cubeWidth, + color, + m, + pos_offset, + rot_offset) for shp in cubeIco.listRelatives(shapes=True): rootIco.addChild(shp, add=True, shape=True) pm.delete(cubeIco) - att.setNotKeyableAttributes(rootIco) + attribute.setNotKeyableAttributes(rootIco) rootIco.addAttr("isGearGuide", at="bool", dv=True) # Set the control shapes isHistoricallyInteresting for oShape in rootIco.getShapes(): @@ -789,34 +1031,43 @@ def guideRootIcon(parent=None, name="root", width=.5, color=[0,0,0], m=dt.Matri return rootIco -def guideLocatorIcon(parent=None, name="locator", width=.5, color=[0,0,0], m=dt.Matrix(), pos_offset=None, rot_offset=None): - """ - Create a curve with a LOCATOR GUIDE shape. +def guideLocatorIcon(parent=None, + name="locator", + width=.5, + color=[0, 0, 0], + m=datatypes.Matrix(), + pos_offset=None, + rot_offset=None): + """Create a curve with a LOCATOR GUIDE shape. Note: This icon is specially design for **Shifter** locator guides - Args: + Arguments: parent (dagNode): The parent object of the newly created curve. name (str): Name of the curve. width (float): Width of the shape. color (int or list of float): The color in index base or RGB. m (matrix): The global transformation of the curve. - pos_offset (vector): The xyz position offset of the curve from its center. - rot_offset (vector): The xyz rotation offset of the curve from its center. xyz in radians + pos_offset (vector): The xyz position offset of the curve from + its center. + rot_offset (vector): The xyz rotation offset of the curve from + its center. xyz in radians Returns: dagNode: The newly created icon. """ rootIco = null(parent, name, width, color, m, pos_offset, rot_offset) - spheWidth = width/2.0 - sphereIco = sphere(parent, name, spheWidth, color, m, pos_offset, rot_offset) + spheWidth = width / 2.0 + + sphereIco = sphere( + parent, name, spheWidth, color, m, pos_offset, rot_offset) for shp in sphereIco.listRelatives(shapes=True): rootIco.addChild(shp, add=True, shape=True) pm.delete(sphereIco) - att.setNotKeyableAttributes(rootIco) + attribute.setNotKeyableAttributes(rootIco) rootIco.addAttr("isGearGuide", at="bool", dv=True) # Set the control shapes isHistoricallyInteresting for oShape in rootIco.getShapes(): @@ -825,38 +1076,45 @@ def guideLocatorIcon(parent=None, name="locator", width=.5, color=[0,0,0], m=dt. return rootIco -def guideBladeIcon(parent=None, name="blade",lenX=1.0, color=[0,0,0], m=dt.Matrix(), pos_offset=None, rot_offset=None): - """ - Create a curve with a BLADE GUIDE shape. +def guideBladeIcon(parent=None, + name="blade", + lenX=1.0, + color=[0, 0, 0], + m=datatypes.Matrix(), + pos_offset=None, + rot_offset=None): + """Create a curve with a BLADE GUIDE shape. Note: This icon is specially design for **Shifter** blade guides - Args: + Arguments: parent (dagNode): The parent object of the newly created curve. name (str): Name of the curve. lenX (float): Width of the shape. color (int or list of float): The color in index base or RGB. m (matrix): The global transformation of the curve. - pos_offset (vector): The xyz position offset of the curve from its center. - rot_offset (vector): The xyz rotation offset of the curve from its center. xyz in radians + pos_offset (vector): The xyz position offset of the curve from + its center. + rot_offset (vector): The xyz rotation offset of the curve from + its center. xyz in radians Returns: dagNode: The newly created icon. - """ - - v0 = dt.Vector(0 , 0, 0) - v1 = dt.Vector(lenX , 0, 0) - v2 = dt.Vector(0, lenX/3, 0) + """ + v0 = datatypes.Vector(0, 0, 0) + v1 = datatypes.Vector(lenX, 0, 0) + v2 = datatypes.Vector(0, lenX / 3, 0) - points = getPointArrayWithOffset([v0, v1, v2 ], pos_offset, rot_offset) + points = getPointArrayWithOffset( + [v0, v1, v2], pos_offset, rot_offset) - bladeIco = cur.addCurve(parent, name, points, True, 1, m) + bladeIco = curve.addCurve(parent, name, points, True, 1, m) setcolor(bladeIco, color) - att.setNotKeyableAttributes(bladeIco) + attribute.setNotKeyableAttributes(bladeIco) # Set the control shapes isHistoricallyInteresting for oShape in bladeIco.getShapes(): oShape.isHistoricallyInteresting.set(False) @@ -868,26 +1126,33 @@ def guideBladeIcon(parent=None, name="blade",lenX=1.0, color=[0,0,0], m=dt.Matri ########################################################## # ======================================================== + def getPointArrayWithOffset(point_pos, pos_offset=None, rot_offset=None): - """ - Convert a list of vector to a List of float and add the position and rotation offset. + """Get Point array with offset - Args: + Convert a list of vector to a List of float and add the position and + rotation offset. + + Arguments: point_pos (list of vector): Point positions. - pos_offset (vector): The position offset of the curve from its center. - rot_offset (vector): The rotation offset of the curve from its center. In radians. + pos_offset (vector): The position offset of the curve from its + center. + rot_offset (vector): The rotation offset of the curve from its + center. In radians. Returns: list of vector: the new point positions """ - points = [] for v in point_pos: if rot_offset: - mv = om.MVector(v.x,v.y,v.z) - mv = mv.rotateBy(om.MEulerRotation(rot_offset.x, rot_offset.y, rot_offset.z, om.MEulerRotation.kXYZ)) - v = dt.Vector(mv.x,mv.y,mv.z) + mv = om.MVector(v.x, v.y, v.z) + mv = mv.rotateBy(om.MEulerRotation(rot_offset.x, + rot_offset.y, + rot_offset.z, + om.MEulerRotation.kXYZ)) + v = datatypes.Vector(mv.x, mv.y, mv.z) if pos_offset: v = v + pos_offset @@ -897,17 +1162,16 @@ def getPointArrayWithOffset(point_pos, pos_offset=None, rot_offset=None): def setcolor(node, color): - """ - Set the color in the Icons. + """Set the color in the Icons. - Args: + Arguments: node(dagNode): The object color (int or list of float): The color in index base or RGB. """ - - #TODO: configure this funcion to work with RGB or Index color base on Maya version. + # TODO: configure this funcion to work with RGB or Index color base + # on Maya version. # version = mgear.maya.getMayaver() if isinstance(color, int): @@ -919,4 +1183,4 @@ def setcolor(node, color): for shp in node.listRelatives(shapes=True): shp.overrideEnabled.set(1) shp.overrideRGBColors.set(1) - shp.overrideColorRGB.set(color[0],color[1],color[2]) + shp.overrideColorRGB.set(color[0], color[1], color[2]) diff --git a/scripts/mgear/maya/log.py b/scripts/mgear/maya/log.py index 85520a3..0c55b2f 100644 --- a/scripts/mgear/maya/log.py +++ b/scripts/mgear/maya/log.py @@ -1,45 +1,17 @@ -# MGEAR is under the terms of the MIT License +"""Logging Maya data""" -# Copyright (c) 2016 Jeremie Passerin, Miquel Campos - -# Permission is hereby granted, free of charge, to any person obtaining a copy -# of this software and associated documentation files (the "Software"), to deal -# in the Software without restriction, including without limitation the rights -# to use, copy, modify, merge, publish, distribute, sublicense, and/or sell -# copies of the Software, and to permit persons to whom the Software is -# furnished to do so, subject to the following conditions: - -# The above copyright notice and this permission notice shall be included in all -# copies or substantial portions of the Software. - -# THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR -# IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, -# FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE -# AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER -# LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, -# OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE -# SOFTWARE. - -# Author: Jeremie Passerin geerem@hotmail.com www.jeremiepasserin.com -# Author: Miquel Campos hello@miquel-campos.com www.miquel-campos.com -# Date: 2016 / 10 / 10 - -""" -Logging Maya data. -""" def matrix4(m, msg="matrix4"): - """ - Print matrix 4x4 data. + """Print matrix 4x4 data. - Args: + Arguments: m (matrix): 4x4 Matrix msg (str): Message in front of the data print. """ s = msg + " : \n"\ - +"| %s , %s , %s , %s |\n"%(m[0][0], m[0][1], m[0][2], m[0][3])\ - +"| %s , %s , %s , %s |\n"%(m[1][0], m[1][1], m[1][2], m[1][3])\ - +"| %s , %s , %s , %s |\n"%(m[2][0], m[2][1], m[2][2], m[2][3])\ - +"| %s , %s , %s , %s |"%(m[3][0], m[3][1], m[3][2], m[3][3]) + + "| %s , %s , %s , %s |\n" % (m[0][0], m[0][1], m[0][2], m[0][3])\ + + "| %s , %s , %s , %s |\n" % (m[1][0], m[1][1], m[1][2], m[1][3])\ + + "| %s , %s , %s , %s |\n" % (m[2][0], m[2][1], m[2][2], m[2][3])\ + + "| %s , %s , %s , %s |" % (m[3][0], m[3][1], m[3][2], m[3][3]) - print (s) + print(s) diff --git a/scripts/mgear/maya/meshNavigation.py b/scripts/mgear/maya/meshNavigation.py index 6155dff..4420e19 100644 --- a/scripts/mgear/maya/meshNavigation.py +++ b/scripts/mgear/maya/meshNavigation.py @@ -1,39 +1,11 @@ -# MGEAR is under the terms of the MIT License - -# Copyright (c) 2016 Jeremie Passerin, Miquel Campos - -# Permission is hereby granted, free of charge, to any person obtaining a copy -# of this software and associated documentation files (the "Software"), to deal -# in the Software without restriction, including without limitation the rights -# to use, copy, modify, merge, publish, distribute, sublicense, and/or sell -# copies of the Software, and to permit persons to whom the Software is -# furnished to do so, subject to the following conditions: - -# The above copyright notice and this permission notice shall be included in all -# copies or substantial portions of the Software. - -# THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR -# IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, -# FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE -# AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER -# LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, -# OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE -# SOFTWARE. - -# Author: Jeremie Passerin geerem@hotmail.com www.jeremiepasserin.com -# Author: Miquel Campos hello@miquel-campos.com www.miquel-campos.com -# Date: 2016 / 10 / 10 - -""" -Functions to help navigate the mesh topology. -""" +"""Functions to help navigate the mesh topology""" ############################################# # GLOBAL ############################################# import pymel.core as pm -import pymel.core.datatypes as dt -import maya.OpenMaya as OpenMaya +import pymel.core.datatypes as datatypes +from maya import OpenMaya ############################################# @@ -41,14 +13,17 @@ ############################################# def getExtremeVertexFromLoop(edgeList=None, sideRange=False): - """ - Get extreme vertex X and Y, min and max positions from edge loop + """Get extreme vertex X and Y - Args: + min and max positions from edge loop + + Arguments: edgeList (list): Edge list - sideRange (bool): If True will calculate the extreme position of Z instead of X + sideRange (bool): If True will calculate the extreme position + of Z instead of X Returns: list: upPos, lowPos, inPos, outPos, edgeList, vertexList + """ if not edgeList: edgeList = [x for x in pm.selected(fl=1)] @@ -58,10 +33,10 @@ def getExtremeVertexFromLoop(edgeList=None, sideRange=False): for v in cv: if v not in vertexList: vertexList.append(v) - maxX= None + maxX = None maxY = None - minX= None + minX = None minY = None upPos = None @@ -88,21 +63,21 @@ def getExtremeVertexFromLoop(edgeList=None, sideRange=False): minY = pos[1] lowPos = x if sideRange: - return upPos,lowPos,outPos,inPos, edgeList, vertexList + return upPos, lowPos, outPos, inPos, edgeList, vertexList else: - return upPos,lowPos,inPos,outPos, edgeList, vertexList + return upPos, lowPos, inPos, outPos, edgeList, vertexList -def getConcentricVertexLoop(loop, nbLoops ): - """ - Get concentric vertex loops +def getConcentricVertexLoop(loop, nbLoops): + """Get concentric vertex loops - Args: + Arguments: loop (list): Vertex loop list nbLoops (int): Number of loops to search Returns: list: the loop list + """ loopList = [] allLoops = [] @@ -127,21 +102,22 @@ def getConcentricVertexLoop(loop, nbLoops ): return loopList + def getVertexRowsFromLoops(loopList): - """ - Get vertex rows from edge loops + """Get vertex rows from edge loops - Args: + Arguments: loopList (list): Edge loop list Returns: list: vertex rows + """ rows = [] for x in loopList[0]: rows.append([x]) - loopListLength = len(loopList)-1 + loopListLength = len(loopList) - 1 for i in range(loopListLength): for e, r in enumerate(rows): @@ -153,25 +129,24 @@ def getVertexRowsFromLoops(loopList): if cvs2: for cv in cvs2: - if cv in loopList[i+1]: + if cv in loopList[i + 1]: rows[e].append(cv) continue for cv in cvs: - if cv in loopList[i+1]: + if cv in loopList[i + 1]: rows[e].append(cv) continue return rows ################################################# -## EDGE LOOPS and ROWS +# EDGE LOOPS and ROWS ################################################# def edgeRangeInLoopFromMid(edgeList, midPos, endA, endB): - """ - Return a range of edges in the same loop from a mid position + """Return a range of edges in the same loop from a mid position - Args: + Arguments: edgeList (list): selection edge loop midPos (vertex): mid vertex endA (vertex): endA vertex @@ -179,6 +154,7 @@ def edgeRangeInLoopFromMid(edgeList, midPos, endA, endB): Returns: list: loop range + """ extremeEdges = [] @@ -201,8 +177,10 @@ def edgeRangeInLoopFromMid(edgeList, midPos, endA, endB): midEdges.append(e) cv = e.connectedVertices() for v in cv: - if v.index() in [endA.index(), endB.index()] and e not in extremeEdges: - #extra check to ensure that the 2 edges selected are not attach to the same vertex + if (v.index() in [endA.index(), endB.index()] + and e not in extremeEdges): + # extra check to ensure that the 2 edges + # selected are not attach to the same vertex if v.index() not in indexcheck: extremeEdges.append(e) indexcheck.append(v.index()) @@ -217,28 +195,26 @@ def edgeRangeInLoopFromMid(edgeList, midPos, endA, endB): cv = e.connectedVertices() for v in cv: if v not in scanPoint and v not in scannedPoints: - if v.index() not in [endA.index(), endB.index() ]: + if v.index() not in [endA.index(), endB.index()]: scanPoint.append(v) if stop: break - count +=1 + count += 1 if count > 50: break loopRange = set(midEdges + extremeEdges) return loopRange - ################################################# -## Bounding box info +# Bounding box info ################################################# def bboxCenter(obj, radius=False): - """ - Get bounding box center of mesh object + """Get bounding box center of mesh object - Args: + Arguments: obj (dagNode): mesh object radius (bool): If True return a list the center + the radius @@ -246,26 +222,27 @@ def bboxCenter(obj, radius=False): list of float: the bounding box center in world space >>> center = mnav.bboxCenter(source, radius=False) + """ bbx = obj.getBoundingBox(invisible=True, space='world') center = [(bbx[0][x] + bbx[1][x]) / 2.0 for x in range(3)] if radius: - r = abs((bbx[0][0] - bbx[1][0])/2) + r = abs((bbx[0][0] - bbx[1][0]) / 2) return center, r return center def bBoxData(obj=None, yZero=False, *args): - """ - Get bounding box data of a mesh object + """Get bounding box data of a mesh object - Args: + Arguments: obj (dagNode): Mesh object - yZero (bool): If True, sets the Y axis value to 0 in world space. + yZero (bool): If True, sets the Y axis value to 0 in world space args: Returns: list: center, radio, bounding box full data + """ volCenter = False @@ -274,33 +251,33 @@ def bBoxData(obj=None, yZero=False, *args): shapes = pm.listRelatives(obj, ad=True, s=True) if shapes: bb = pm.polyEvaluate(shapes, b=True) - volCenter = [ (axis[0] + axis[1]) /2 for axis in bb ] + volCenter = [(axis[0] + axis[1]) / 2 for axis in bb] if yZero: volCenter[1] = bb[1][0] - radio = max([bb[0][1] - bb[0][0],bb[2][1] - bb[2][0]])/1.7 + radio = max([bb[0][1] - bb[0][0], bb[2][1] - bb[2][0]]) / 1.7 return volCenter, radio, bb ################################################# -## CLOSEST LOCATIONS +# CLOSEST LOCATIONS ################################################# def getClosestPolygonFromTransform(geo, loc): - """ - Get closest polygon from transform + """Get closest polygon from transform - Args: + Arguments: geo (dagNode): Mesh object loc (matrix): location transform Returns: Closest Polygon + """ if isinstance(loc, pm.nodetypes.Transform): pos = loc.getTranslation(space='world') else: - pos = dt.Vector(loc[0], loc[1], loc[2]) + pos = datatypes.Vector(loc[0], loc[1], loc[2]) nodeDagPath = OpenMaya.MObject() try: @@ -308,8 +285,9 @@ def getClosestPolygonFromTransform(geo, loc): selectionList.add(geo.name()) nodeDagPath = OpenMaya.MDagPath() selectionList.getDagPath(0, nodeDagPath) - except: - raise RuntimeError('OpenMaya.MDagPath() failed on %s' % geo.name()) + except Exception as e: + raise RuntimeError("OpenMaya.MDagPath() failed " + "on {}. \n {}".format(geo.name(), e)) mfnMesh = OpenMaya.MFnMesh(nodeDagPath) @@ -328,10 +306,9 @@ def getClosestPolygonFromTransform(geo, loc): def getClosestVertexFromTransform(geo, loc): - """ - Get closest vertex from transform + """Get closest vertex from transform - Args: + Arguments: geo (dagNode): Mesh object loc (matrix): location transform @@ -339,8 +316,8 @@ def getClosestVertexFromTransform(geo, loc): Closest Vertex >>> v = mn.getClosestVertexFromTransform(geometry, joint) - """ + """ polygon, pos = getClosestPolygonFromTransform(geo, loc) faceVerts = [geo.vtx[i] for i in polygon.getVertices()] From f0ffc1c055127c7dbb8f885547bae6188989b5e6 Mon Sep 17 00:00:00 2001 From: miquelcampos Date: Fri, 24 Nov 2017 18:30:40 +0900 Subject: [PATCH 098/134] PEP8 #100: mGear: Refactor mgear.maya.node --- scripts/mgear/maya/node.py | 630 ++++++++++++++++++++----------------- 1 file changed, 347 insertions(+), 283 deletions(-) diff --git a/scripts/mgear/maya/node.py b/scripts/mgear/maya/node.py index 3db83de..b8f6d0b 100644 --- a/scripts/mgear/maya/node.py +++ b/scripts/mgear/maya/node.py @@ -1,38 +1,8 @@ -# MGEAR is under the terms of the MIT License +"""Functions to create and connect nodes.""" -# Copyright (c) 2016 Jeremie Passerin, Miquel Campos -# Permission is hereby granted, free of charge, to any person obtaining a copy -# of this software and associated documentation files (the "Software"), to deal -# in the Software without restriction, including without limitation the rights -# to use, copy, modify, merge, publish, distribute, sublicense, and/or sell -# copies of the Software, and to permit persons to whom the Software is -# furnished to do so, subject to the following conditions: - -# The above copyright notice and this permission notice shall be included in all -# copies or substantial portions of the Software. - -# THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR -# IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, -# FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE -# AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER -# LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, -# OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE -# SOFTWARE. - -# Author: Jeremie Passerin geerem@hotmail.com www.jeremiepasserin.com -# Author: Miquel Campos hello@miquel-campos.com www.miquel-campos.com -# Date: 2016 / 10 / 10 - -""" -Functions to create and connect nodes. -""" - -############################################# -# GLOBAL -############################################# import pymel.core as pm -import pymel.core.datatypes as dt +import pymel.core.datatypes as datatypes ############################################# @@ -40,63 +10,70 @@ ############################################# def createMultMatrixNode(mA, mB, target=False, transform='srt'): - """ - Create Maya multiply Matrix node. + """Create Maya multiply Matrix node. Note: - This node have same functionality as the default Maya matrix multiplication. + This node have same functionality as the default Maya matrix + multiplication. - Args: + Arguments: mA (matrix): input matrix A. mB (matrix): input matrix B. target (dagNode): object target to apply the transformation - transform (str): if target is True. out transform to SRT valid value s r t + transform (str): if target is True. out transform to SRT valid + value s r t Returns: pyNode: Newly created mGear_multMatrix node + """ node = pm.createNode("multMatrix") for m, mi in zip([mA, mB], ['matrixIn[0]', 'matrixIn[1]']): - if isinstance(m, dt.Matrix): + if isinstance(m, datatypes.Matrix): pm.setAttr(node.attr(mi), m) else: pm.connectAttr(m, node.attr(mi)) if target: dm_node = pm.createNode("decomposeMatrix") - pm.connectAttr(node+".matrixSum", dm_node+".inputMatrix") + pm.connectAttr(node + ".matrixSum", + dm_node + ".inputMatrix") if 't' in transform: - pm.connectAttr(dm_node+".outputTranslate", target.attr("translate"), f=True) + pm.connectAttr(dm_node + ".outputTranslate", + target.attr("translate"), f=True) if 'r' in transform: - pm.connectAttr(dm_node+".outputRotate", target.attr("rotate"), f=True) + pm.connectAttr(dm_node + ".outputRotate", + target.attr("rotate"), f=True) if 's' in transform: - pm.connectAttr(dm_node+".outputScale", target.attr("scale"), f=True) + pm.connectAttr(dm_node + ".outputScale", + target.attr("scale"), f=True) return node + def createDecomposeMatrixNode(m): """ Create and connect a decomposeMatrix node. - Args: + Arguments: m(str or attr): The matrix attribute name. Returns: pyNode: the newly created node. >>> dm_node = nod.createDecomposeMatrixNode(mulmat_node+".output") + """ node = pm.createNode("decomposeMatrix") - pm.connectAttr(m, node+".inputMatrix") + pm.connectAttr(m, node + ".inputMatrix") return node def createDistNode(objA, objB, output=None): - """ - Create and connect a distance node. + """Create and connect a distance node. - Args: + Arguments: objA (dagNode): The dagNode A. objB (dagNode): The dagNode B. output (attr): Output attribute. @@ -105,28 +82,31 @@ def createDistNode(objA, objB, output=None): pyNode: the newly created node. >>> distA_node = nod.createDistNode(self.tws0_loc, self.tws1_loc) - """ + """ node = pm.createNode("distanceBetween") dm_nodeA = pm.createNode("decomposeMatrix") dm_nodeB = pm.createNode("decomposeMatrix") - pm.connectAttr(objA+".worldMatrix", dm_nodeA+".inputMatrix") - pm.connectAttr(objB+".worldMatrix", dm_nodeB+".inputMatrix") + pm.connectAttr(objA + ".worldMatrix", dm_nodeA + ".inputMatrix") + pm.connectAttr(objB + ".worldMatrix", dm_nodeB + ".inputMatrix") - pm.connectAttr(dm_nodeA+".outputTranslate", node+".point1") - pm.connectAttr(dm_nodeB+".outputTranslate", node+".point2") + pm.connectAttr(dm_nodeA + ".outputTranslate", node + ".point1") + pm.connectAttr(dm_nodeB + ".outputTranslate", node + ".point2") if output: - pm.connectAttr(node+".distance", output) + pm.connectAttr(node + ".distance", output) return node -def createConditionNode(firstTerm=False, secondTerm=False, operator=0, ifTrue=False, ifFalse=False): - """ - Create and connect a condition node. +def createConditionNode(firstTerm=False, + secondTerm=False, + operator=0, + ifTrue=False, + ifFalse=False): + """Create and connect a condition node. ======== ====== operator index @@ -139,49 +119,60 @@ def createConditionNode(firstTerm=False, secondTerm=False, operator=0, ifTrue=Fa <= 5 ======== ====== - Args: - firstTerm (attr): The attribute string name for the first conditions. - secondTerm (attr): The attribute string for the second conditions. + Arguments: + firstTerm (attr): The attribute string name for the first + conditions. + secondTerm (attr): The attribute string for the second + conditions. operator (int): The operator to make the condition. - ifTrue (bool or attr): If an attribute is provided will connect ifTrue output. - ifFalse (bool or attr): If an attribute is provided will connect ifFalse output. + ifTrue (bool or attr): If an attribute is provided will connect + ifTrue output. + ifFalse (bool or attr): If an attribute is provided will connect + ifFalse output. Returns: pyNode: the newly created node. - >>> cond1_node = nod.createConditionNode(self.soft_attr, 0, 2,subtract3_node+".output1D", plusTotalLength_node+".output1D") - """ + >>> cond1_node = nod.createConditionNode(self.soft_attr, + 0, + 2, + subtract3_node+".output1D", + plusTotalLength_node+".output1D") + """ node = pm.createNode("condition") - pm.setAttr(node+".operation", operator) + pm.setAttr(node + ".operation", operator) if firstTerm: - pm.connectAttr(firstTerm, node+".firstTerm") + pm.connectAttr(firstTerm, node + ".firstTerm") if secondTerm: - pm.connectAttr(secondTerm, node+".secondTerm") + pm.connectAttr(secondTerm, node + ".secondTerm") if ifTrue: - pm.connectAttr(ifTrue, node+".colorIfTrueR") + pm.connectAttr(ifTrue, node + ".colorIfTrueR") if ifFalse: - pm.connectAttr(ifFalse, node+".colorIfFalseR") + pm.connectAttr(ifFalse, node + ".colorIfFalseR") return node def createBlendNode(inputA, inputB, blender=.5): - """ - Create and connect a createBlendNode node. + """Create and connect a createBlendNode node. - Args: + Arguments: inputA (attr or list of 3 attr): The attribute input A inputB (attr or list of 3 attr): The attribute input B - blender (float or attr): Float in 0 to 1 range or attribute string name. + blender (float or attr): Float in 0 to 1 range or attribute + string name. Returns: pyNode: the newly created node. - >>> blend_node = nod.createBlendNode([dm_node+".outputRotate%s"%s for s in "XYZ"], [cns+".rotate%s"%s for s in "XYZ"], self.lock_ori_att) - """ + >>> blend_node = nod.createBlendNode( + [dm_node+".outputRotate%s"%s for s in "XYZ"], + [cns+".rotate%s"%s for s in "XYZ"], + self.lock_ori_att) + """ node = pm.createNode("blendColors") if not isinstance(inputA, list): @@ -191,35 +182,49 @@ def createBlendNode(inputA, inputB, blender=.5): inputB = [inputB] for item, s in zip(inputA, "RGB"): - if isinstance(item, str) or isinstance(item, unicode) or isinstance(item, pm.Attribute): - pm.connectAttr(item, node+".color1"+s) + if (isinstance(item, str) + or isinstance(item, unicode) + or isinstance(item, pm.Attribute)): + pm.connectAttr(item, node + ".color1" + s) else: - pm.setAttr(node+".color1"+s, item) + pm.setAttr(node + ".color1" + s, item) for item, s in zip(inputB, "RGB"): - if isinstance(item, str) or isinstance(item, unicode) or isinstance(item, pm.Attribute): - pm.connectAttr(item, node+".color2"+s) + if (isinstance(item, str) + or isinstance(item, unicode) + or isinstance(item, pm.Attribute)): + pm.connectAttr(item, node + ".color2" + s) else: - pm.setAttr(node+".color2"+s, item) + pm.setAttr(node + ".color2" + s, item) - if isinstance(blender, str) or isinstance(blender, unicode) or isinstance(blender, pm.Attribute): - pm.connectAttr(blender, node+".blender") + if (isinstance(blender, str) + or isinstance(blender, unicode) + or isinstance(blender, pm.Attribute)): + pm.connectAttr(blender, node + ".blender") else: - pm.setAttr(node+".blender", blender) + pm.setAttr(node + ".blender", blender) return node -def createPairBlend(inputA=None, inputB=None, blender=.5, rotInterpolation=0, output=None, trans=True, rot=True): - """ - Create and connect a PairBlend node. +def createPairBlend(inputA=None, + inputB=None, + blender=.5, + rotInterpolation=0, + output=None, + trans=True, + rot=True): + """Create and connect a PairBlend node. - Args: + Arguments: inputA (dagNode): The transfomr input 1 inputB (dagNode): The transfomr input 2 - blender (float or attr): Float in 0 to 1 range or attribute string name. - rotInterpolation (int): Rotation interpolation option. 0=Euler. 1=Quaternion. - output (dagNode): The output node with the blend transfomr applied. + blender (float or attr): Float in 0 to 1 range or attribute + string name. + rotInterpolation (int): Rotation interpolation option. 0=Euler. + 1=Quaternion. + output (dagNode): The output node with the blend transfomr + applied. trans (bool): If true connects translation. rot (bool): If true connects rotation. @@ -229,144 +234,166 @@ def createPairBlend(inputA=None, inputB=None, blender=.5, rotInterpolation=0, ou Example: .. code-block:: python - blend_node = nod.createPairBlend(self.legBonesFK[i], self.legBonesIK[i], self.blend_att, 1) + blend_node = nod.createPairBlend(self.legBonesFK[i], + self.legBonesIK[i], + self.blend_att, + 1) pm.connectAttr(blend_node + ".outRotate", x+".rotate") pm.connectAttr(blend_node + ".outTranslate", x+".translate") - """ + """ node = pm.createNode("pairBlend") node.attr("rotInterpolation").set(rotInterpolation) if inputA: if trans: - pm.connectAttr(inputA+".translate", node+".inTranslate1") + pm.connectAttr(inputA + ".translate", node + ".inTranslate1") if rot: - pm.connectAttr(inputA+".rotate", node+".inRotate1") + pm.connectAttr(inputA + ".rotate", node + ".inRotate1") if inputB: if trans: - pm.connectAttr(inputB+".translate", node+".inTranslate2") + pm.connectAttr(inputB + ".translate", node + ".inTranslate2") if rot: - pm.connectAttr(inputB+".rotate", node+".inRotate2") + pm.connectAttr(inputB + ".rotate", node + ".inRotate2") - if isinstance(blender, str) or isinstance(blender, unicode) or isinstance(blender, pm.Attribute): - pm.connectAttr(blender, node+".weight") + if (isinstance(blender, str) + or isinstance(blender, unicode) + or isinstance(blender, pm.Attribute)): + pm.connectAttr(blender, node + ".weight") else: - pm.setAttr(node+".weight", blender) + pm.setAttr(node + ".weight", blender) if output: if rot: - pm.connectAttr(node+".outRotate", output+".rotate") + pm.connectAttr(node + ".outRotate", output + ".rotate") if trans: - pm.connectAttr(node+".outTranslate", output+".translate") + pm.connectAttr(node + ".outTranslate", output + ".translate") return node -def createSetRangeNode(input, oldMin, oldMax, newMin=0, newMax=1, output=None, name="setRange"): + +def createSetRangeNode(input, + oldMin, + oldMax, + newMin=0, + newMax=1, + output=None, + name="setRange"): + """Create Set Range Node""" + node = pm.createNode("setRange", n=name) if not isinstance(input, list): input = [input] for item, s in zip(input, "XYZ"): - if isinstance(item, str) or isinstance(item, unicode) or isinstance(item, pm.Attribute): - pm.connectAttr(item, node+".value"+s) + if (isinstance(item, str) + or isinstance(item, unicode) + or isinstance(item, pm.Attribute)): + pm.connectAttr(item, node + ".value" + s) else: - pm.setAttr(node+".value"+s, item) + pm.setAttr(node + ".value" + s, item) - if isinstance(oldMin, str) or isinstance(oldMin, unicode) or isinstance(oldMin, pm.Attribute): - pm.connectAttr(oldMin, node+".oldMin"+s) + if (isinstance(oldMin, str) + or isinstance(oldMin, unicode) + or isinstance(oldMin, pm.Attribute)): + pm.connectAttr(oldMin, node + ".oldMin" + s) else: - pm.setAttr(node+".oldMin"+s, oldMin) + pm.setAttr(node + ".oldMin" + s, oldMin) - if isinstance(oldMax, str) or isinstance(oldMax, unicode) or isinstance(oldMax, pm.Attribute): - pm.connectAttr(oldMax, node+".oldMax"+s) + if (isinstance(oldMax, str) + or isinstance(oldMax, unicode) + or isinstance(oldMax, pm.Attribute)): + pm.connectAttr(oldMax, node + ".oldMax" + s) else: - pm.setAttr(node+".oldMax"+s, oldMax) + pm.setAttr(node + ".oldMax" + s, oldMax) - if isinstance(newMin, str) or isinstance(newMin, unicode) or isinstance(newMin, pm.Attribute): - pm.connectAttr(newMin, node+".min"+s) + if (isinstance(newMin, str) + or isinstance(newMin, unicode) + or isinstance(newMin, pm.Attribute)): + pm.connectAttr(newMin, node + ".min" + s) else: - pm.setAttr(node+".min"+s, newMin) + pm.setAttr(node + ".min" + s, newMin) - if isinstance(newMax, str) or isinstance(newMax, unicode) or isinstance(newMax, pm.Attribute): - pm.connectAttr(newMax, node+".max"+s) + if (isinstance(newMax, str) + or isinstance(newMax, unicode) + or isinstance(newMax, pm.Attribute)): + pm.connectAttr(newMax, node + ".max" + s) else: - pm.setAttr(node+".max"+s, newMax) - + pm.setAttr(node + ".max" + s, newMax) if output: if not isinstance(output, list): output = [output] for out, s in zip(output, "XYZ"): - pm.connectAttr(node+".outValue"+s, out, f=True) - + pm.connectAttr(node + ".outValue" + s, out, f=True) return node + def createReverseNode(input, output=None): - """ - Create and connect a reverse node. + """Create and connect a reverse node. - Args: + Arguments: input (attr or list of 3 attr): The attribute input. - output (attr or list of 3 attr): The attribute to connect the output. + output (attr or list of 3 attr): The attribute to connect the + output. Returns: pyNode: the newly created node. >>> fkvis_node = nod.createReverseNode(self.blend_att) - """ + """ node = pm.createNode("reverse") if not isinstance(input, list): input = [input] for item, s in zip(input, "XYZ"): - if isinstance(item, str) or isinstance(item, unicode) or isinstance(item, pm.Attribute): - pm.connectAttr(item, node+".input"+s) + if (isinstance(item, str) + or isinstance(item, unicode) + or isinstance(item, pm.Attribute)): + pm.connectAttr(item, node + ".input" + s) else: - pm.setAttr(node+".input"+s, item) + pm.setAttr(node + ".input" + s, item) if output: if not isinstance(output, list): output = [output] for out, s in zip(output, "XYZ"): - pm.connectAttr(node+".output"+s, out, f=True) - + pm.connectAttr(node + ".output" + s, out, f=True) return node def createCurveInfoNode(crv): - """ - Create and connect a curveInfo node. + """Create and connect a curveInfo node. - Args: + Arguments: crv (dagNode): The curve. Returns: pyNode: the newly created node. >>> crv_node = nod.createCurveInfoNode(self.slv_crv) - """ + """ node = pm.createNode("curveInfo") shape = pm.listRelatives(crv, shapes=True)[0] - pm.connectAttr(shape+".local", node+".inputCurve") + pm.connectAttr(shape + ".local", node + ".inputCurve") return node # TODO: update using plusMinusAverage node def createAddNode(inputA, inputB): - """ - Create and connect a addition node. + """Create and connect a addition node. - Args: + Arguments: inputA (attr or float): The attribute input A inputB (attr or float): The attribute input B @@ -374,29 +401,32 @@ def createAddNode(inputA, inputB): pyNode: the newly created node. >>> add_node = nod.createAddNode(self.roundness_att, .001) - """ + """ node = pm.createNode("addDoubleLinear") - if isinstance(inputA, str) or isinstance(inputA, unicode) or isinstance(inputA, pm.Attribute): - pm.connectAttr(inputA, node+".input1") + if (isinstance(inputA, str) + or isinstance(inputA, unicode) + or isinstance(inputA, pm.Attribute)): + pm.connectAttr(inputA, node + ".input1") else: - pm.setAttr(node+".input1", inputA) + pm.setAttr(node + ".input1", inputA) - if isinstance(inputB, str) or isinstance(inputB, unicode) or isinstance(inputB, pm.Attribute): - pm.connectAttr(inputB, node+".input2") + if (isinstance(inputB, str) + or isinstance(inputB, unicode) + or isinstance(inputB, pm.Attribute)): + pm.connectAttr(inputB, node + ".input2") else: - pm.setAttr(node+".input2", inputB) + pm.setAttr(node + ".input2", inputB) return node # TODO: update using plusMinusAverage node def createSubNode(inputA, inputB): - """ - Create and connect a subtraction node. + """Create and connect a subtraction node. - Args: + Arguments: inputA (attr or float): The attribute input A inputB (attr or float): The attribute input B @@ -404,33 +434,38 @@ def createSubNode(inputA, inputB): pyNode: the newly created node. >>> sub_nod = nod.createSubNode(self.roll_att, angle_outputs[i-1]) - """ + """ node = pm.createNode("addDoubleLinear") - if isinstance(inputA, str) or isinstance(inputA, unicode) or isinstance(inputA, pm.Attribute): - pm.connectAttr(inputA, node+".input1") + if (isinstance(inputA, str) + or isinstance(inputA, unicode) + or isinstance(inputA, pm.Attribute)): + pm.connectAttr(inputA, node + ".input1") else: - pm.setAttr(node+".input1", inputA) + pm.setAttr(node + ".input1", inputA) - if isinstance(inputB, str) or isinstance(inputB, unicode) or isinstance(inputB, pm.Attribute): + if (isinstance(inputB, str) + or isinstance(inputB, unicode) + or isinstance(inputB, pm.Attribute)): neg_node = pm.createNode("multiplyDivide") - pm.connectAttr(inputB, neg_node+".input1X") - pm.setAttr(neg_node+".input2X", -1) - pm.connectAttr(neg_node+".outputX", node+".input2") + pm.connectAttr(inputB, neg_node + ".input1X") + pm.setAttr(neg_node + ".input2X", -1) + pm.connectAttr(neg_node + ".outputX", node + ".input2") else: - pm.setAttr(node+".input2", -inputB) + pm.setAttr(node + ".input2", -inputB) return node + def createPowNode(inputA, inputB, output=None): - """ - Create and connect a power node. + """Create and connect a power node. - Args: + Arguments: inputA (attr, float or list of float): The attribute input A inputB (attr, float or list of float): The attribute input B - output (attr or list of attr): The attribute to connect the output. + output (attr or list of attr): The attribute to connect the + output. Returns: pyNode: the newly created node. @@ -440,13 +475,13 @@ def createPowNode(inputA, inputB, output=None): def createMulNode(inputA, inputB, output=None): - """ - Create and connect a Multiply node. + """Create and connect a Multiply node. - Args: + Arguments: inputA (attr, float or list of float): The attribute input A inputB (attr, float or list of float): The attribute input B - output (attr or list of attr): The attribute to connect the output. + output (attr or list of attr): The attribute to connect the + output. Returns: pyNode: the newly created node. @@ -456,13 +491,13 @@ def createMulNode(inputA, inputB, output=None): def createDivNode(inputA, inputB, output=None): - """ - Create and connect a Divide node. + """Create and connect a Divide node. - Args: + Arguments: inputA (attr, float or list of float): The attribute input A inputB (attr, float or list of float): The attribute input B - output (attr or list of attr): The attribute to connect the output. + output (attr or list of attr): The attribute to connect the + output. Returns: pyNode: the newly created node. @@ -474,30 +509,32 @@ def createDivNode(inputA, inputB, output=None): div1_node = pm.createNode("multiplyDivide") div1_node.setAttr("operation", 2) div1_node.setAttr("input1X", 1) - pm.connectAttr(self.rig.global_ctl+".sx", div1_node+".input2X") + pm.connectAttr(self.rig.global_ctl+".sx", + div1_node+".input2X") # mGear style = 1 line - div1_node = nod.createDivNode(1.0, self.rig.global_ctl+".sx") + div1_node = nod.createDivNode(1.0, + self.rig.global_ctl+".sx") """ return createMulDivNode(inputA, inputB, 2, output) def createMulDivNode(inputA, inputB, operation=1, output=None): - """ - Create and connect a Multiply or Divide node. + """Create and connect a Multiply or Divide node. - Args: + Arguments: inputA (attr, float or list of float): The attribute input A inputB (attr, float or list of float): The attribute input B - output (attr or list of attr): The attribute to connect the output. + output (attr or list of attr): The attribute to connect the + output. Returns: pyNode: the newly created node. """ node = pm.createNode("multiplyDivide") - pm.setAttr(node+".operation", operation) + pm.setAttr(node + ".operation", operation) if not isinstance(inputA, list): inputA = [inputA] @@ -506,41 +543,48 @@ def createMulDivNode(inputA, inputB, operation=1, output=None): inputB = [inputB] for item, s in zip(inputA, "XYZ"): - if isinstance(item, str) or isinstance(item, unicode) or isinstance(item, pm.Attribute): + if (isinstance(item, str) + or isinstance(item, unicode) + or isinstance(item, pm.Attribute)): try: - pm.connectAttr(item, node+".input1"+s, f=True) - except( UnicodeEncodeError, RuntimeError): # Maya in Japanese have an issue with unicodeEndoce UnicodeEncodeError is a workaround - pm.connectAttr(item, node+".input1", f=True) + pm.connectAttr(item, node + ".input1" + s, f=True) + except(UnicodeEncodeError, RuntimeError): + # Maya in Japanese have an issue with unicodeEndoce + # UnicodeEncodeError is a workaround + pm.connectAttr(item, node + ".input1", f=True) break else: - pm.setAttr(node+".input1"+s, item) + pm.setAttr(node + ".input1" + s, item) for item, s in zip(inputB, "XYZ"): - if isinstance(item, str) or isinstance(item, unicode) or isinstance(item, pm.Attribute): + if (isinstance(item, str) + or isinstance(item, unicode) + or isinstance(item, pm.Attribute)): try: - pm.connectAttr(item, node+".input2"+s, f=True) - except( UnicodeEncodeError, RuntimeError): # Maya in Japanese have an issue with unicodeEndoce UnicodeEncodeError is a workaround - pm.connectAttr(item, node+".input2", f=True) + pm.connectAttr(item, node + ".input2" + s, f=True) + except(UnicodeEncodeError, RuntimeError): + # Maya in Japanese have an issue with unicodeEndoce + # UnicodeEncodeError is a workaround + pm.connectAttr(item, node + ".input2", f=True) break else: - pm.setAttr(node+".input2"+s, item) + pm.setAttr(node + ".input2" + s, item) if output: if not isinstance(output, list): output = [output] for item, s in zip(output, "XYZ"): - pm.connectAttr(node+".output"+s, item, f=True) + pm.connectAttr(node + ".output" + s, item, f=True) return node def createClampNode(input, in_min, in_max): - """ - Create and connect a clamp node + """Create and connect a clamp node - Args: + Arguments: input (attr, float or list): The input value to clamp in_min (float): The minimun value to clamp in_max (float): The maximun value to clamp @@ -548,7 +592,10 @@ def createClampNode(input, in_min, in_max): Returns: pyNode: the newly created node. - >>> clamp_node = nod.createClampNode([self.roll_att, self.bank_att, self.bank_att], [0, -180, 0], [180,0,180]) + >>> clamp_node = nod.createClampNode( + [self.roll_att, self.bank_att, self.bank_att], + [0, -180, 0], + [180,0,180]) """ node = pm.createNode("clamp") @@ -562,30 +609,36 @@ def createClampNode(input, in_min, in_max): for in_item, min_item, max_item, s in zip(input, in_min, in_max, "RGB"): - if isinstance(in_item, str) or isinstance(in_item, unicode) or isinstance(in_item, pm.Attribute): - pm.connectAttr(in_item, node+".input"+s) + if (isinstance(in_item, str) + or isinstance(in_item, unicode) + or isinstance(in_item, pm.Attribute)): + pm.connectAttr(in_item, node + ".input" + s) else: - pm.setAttr(node+".input"+s, in_item) + pm.setAttr(node + ".input" + s, in_item) - if isinstance(min_item, str) or isinstance(min_item, unicode) or isinstance(min_item, pm.Attribute): - pm.connectAttr(min_item, node+".min"+s) + if (isinstance(min_item, str) + or isinstance(min_item, unicode) + or isinstance(min_item, pm.Attribute)): + pm.connectAttr(min_item, node + ".min" + s) else: - pm.setAttr(node+".min"+s, min_item) + pm.setAttr(node + ".min" + s, min_item) - if isinstance(max_item, str) or isinstance(max_item, unicode) or isinstance(max_item, pm.Attribute): - pm.connectAttr(max_item, node+".max"+s) + if (isinstance(max_item, str) + or isinstance(max_item, unicode) + or isinstance(max_item, pm.Attribute)): + pm.connectAttr(max_item, node + ".max" + s) else: - pm.setAttr(node+".max"+s, max_item) + pm.setAttr(node + ".max" + s, max_item) return node def createPlusMinusAverage1D(input, operation=1, output=None): - """ - Create a multiple average node 1D. - Args: + """Create a multiple average node 1D. + Arguments: input (attr, float or list): The input values. - operation (int): Node operation. 0=None, 1=sum, 2=subtract, 3=average + operation (int): Node operation. 0=None, 1=sum, 2=subtract, + 3=average output (attr): The attribute to connect the result. Returns: @@ -600,172 +653,179 @@ def createPlusMinusAverage1D(input, operation=1, output=None): for i, x in enumerate(input): try: - pm.connectAttr(x, node+".input1D[%s]"%str(i)) - except: - pm.setAttr( node+".input1D[%s]"%str(i), x) + pm.connectAttr(x, node + ".input1D[%s]" % str(i)) + except RuntimeError: + pm.setAttr(node + ".input1D[%s]" % str(i), x) if output: - pm.connectAttr(node+".output1D", output) - + pm.connectAttr(node + ".output1D", output) return node -def createVertexPositionNode(inShape, vId=0, output=None, name="mgear_vertexPosition"): - """ - Creates a mgear_vertexPosition node - """ +def createVertexPositionNode(inShape, + vId=0, + output=None, + name="mgear_vertexPosition"): + """Creates a mgear_vertexPosition node""" node = pm.createNode("mgear_vertexPosition", n=name) inShape.worldMesh.connect(node.inputShape) node.vertex.set(vId) if output: - pm.connectAttr(output.parentInverseMatrix, node.drivenParentInverseMatrix) + pm.connectAttr(output.parentInverseMatrix, + node.drivenParentInverseMatrix) pm.connectAttr(node.output, output.translate) return node - ############################################# # CREATE MULTI NODES ############################################# def createNegateNodeMulti(name, inputs=[]): - """ - Create and connect multiple negate nodes + """Create and connect multiple negate nodes - Args: + Arguments: name (str): The name for the new node. inputs (list of attr): The list of attributes to negate Returns: list: The output attributes list. - """ + """ s = "XYZ" - count=0 - i=0 + count = 0 + i = 0 outputs = [] for input in inputs: - if count==0: - real_name = name+"_"+str(i) + if count == 0: + real_name = name + "_" + str(i) node_name = pm.createNode("multiplyDivide", n=real_name) - i+=1 + i += 1 - pm.connectAttr(input, node_name+".input1"+s[count], f=True) - pm.setAttr(node_name+".input2"+s[count], -1) + pm.connectAttr(input, node_name + ".input1" + s[count], f=True) + pm.setAttr(node_name + ".input2" + s[count], -1) - outputs.append(node_name+".output"+s[count]) - count = (count+1)%3 + outputs.append(node_name + ".output" + s[count]) + count = (count + 1) % 3 return outputs def createAddNodeMulti(inputs=[]): - """ - Create and connect multiple add nodes + """Create and connect multiple add nodes - Args: + Arguments: inputs (list of attr): The list of attributes to add Returns: list: The output attributes list. >>> angle_outputs = nod.createAddNodeMulti(self.angles_att) - """ + """ outputs = [inputs[0]] for i, input in enumerate(inputs[1:]): node_name = pm.createNode("addDoubleLinear") - if isinstance(outputs[-1], str) or isinstance(outputs[-1], unicode) or isinstance(outputs[-1], pm.Attribute): - pm.connectAttr(outputs[-1], node_name+".input1", f=True) + if (isinstance(outputs[-1], str) + or isinstance(outputs[-1], unicode) + or isinstance(outputs[-1], pm.Attribute)): + pm.connectAttr(outputs[-1], node_name + ".input1", f=True) else: - pm.setAttr(node_name+".input1", outputs[-1]) + pm.setAttr(node_name + ".input1", outputs[-1]) - if isinstance(input, str) or isinstance(input, unicode) or isinstance(input, pm.Attribute): - pm.connectAttr(input, node_name+".input2", f=True) + if (isinstance(input, str) + or isinstance(input, unicode) + or isinstance(input, pm.Attribute)): + pm.connectAttr(input, node_name + ".input2", f=True) else: - pm.setAttr(node_name+".input2", input) + pm.setAttr(node_name + ".input2", input) - outputs.append(node_name+".output") + outputs.append(node_name + ".output") return outputs def createMulNodeMulti(name, inputs=[]): - """ - Create and connect multiple multiply nodes + """Create and connect multiple multiply nodes - Args: + Arguments: name (str): The name for the new node. inputs (list of attr): The list of attributes to multiply Returns: list: The output attributes list. - """ + """ outputs = [inputs[0]] for i, input in enumerate(inputs[1:]): - real_name = name+"_"+str(i) + real_name = name + "_" + str(i) node_name = pm.createNode("multiplyDivide", n=real_name) - pm.setAttr(node_name+".operation", 1) + pm.setAttr(node_name + ".operation", 1) - if isinstance(outputs[-1], str) or isinstance(outputs[-1], unicode) or isinstance(outputs[-1], pm.Attribute): - pm.connectAttr(outputs[-1], node_name+".input1X", f=True) + if (isinstance(outputs[-1], str) + or isinstance(outputs[-1], unicode) + or isinstance(outputs[-1], pm.Attribute)): + pm.connectAttr(outputs[-1], node_name + ".input1X", f=True) else: - pm.setAttr(node_name+".input1X", outputs[-1]) + pm.setAttr(node_name + ".input1X", outputs[-1]) - if isinstance(input, str) or isinstance(input, unicode) or isinstance(input, pm.Attribute): - pm.connectAttr(input, node_name+".input2X", f=True) + if (isinstance(input, str) + or isinstance(input, unicode) + or isinstance(input, pm.Attribute)): + pm.connectAttr(input, node_name + ".input2X", f=True) else: - pm.setAttr(node_name+".input2X", input) + pm.setAttr(node_name + ".input2X", input) - outputs.append(node_name+".output") + outputs.append(node_name + ".output") return outputs def createDivNodeMulti(name, inputs1=[], inputs2=[]): - """ - Create and connect multiple divide nodes + """Create and connect multiple divide nodes - Args: + Arguments: name (str): The name for the new node. inputs1 (list of attr): The list of attributes inputs2 (list of attr): The list of attributes Returns: list: The output attributes list. - """ + """ for i, input in enumerate(pm.inputs[1:]): - real_name = name+"_"+str(i) + real_name = name + "_" + str(i) node_name = pm.createNode("multiplyDivide", n=real_name) - pm.setAttr(node_name+".operation", 2) + pm.setAttr(node_name + ".operation", 2) - if isinstance(pm.outputs[-1], str) or isinstance(pm.outputs[-1], unicode) or isinstance(pm.outputs[-1], pm.Attribute): - pm.connectAttr(pm.outputs[-1], node_name+".input1X", f=True) + if (isinstance(pm.outputs[-1], str) + or isinstance(pm.outputs[-1], unicode) + or isinstance(pm.outputs[-1], pm.Attribute)): + pm.connectAttr(pm.outputs[-1], node_name + ".input1X", f=True) else: - pm.setAttr(node_name+".input1X", pm.outputs[-1]) + pm.setAttr(node_name + ".input1X", pm.outputs[-1]) - if isinstance(input, str) or isinstance(input, unicode) or isinstance(input, pm.Attribute): - pm.connectAttr(input, node_name+".input2X", f=True) + if (isinstance(input, str) + or isinstance(input, unicode) + or isinstance(input, pm.Attribute)): + pm.connectAttr(input, node_name + ".input2X", f=True) else: - pm.setAttr(node_name+".input2X", input) + pm.setAttr(node_name + ".input2X", input) - pm.outputs.append(node_name+".output") + pm.outputs.append(node_name + ".output") return pm.outputs def createClampNodeMulti(name, inputs=[], in_min=[], in_max=[]): - """ - Create and connect multiple clamp nodes + """Create and connect multiple clamp nodes - Args: + Arguments: name (str): The name for the new node. inputs (list of attr): The list of attributes in_min (list of attr): The list of attributes @@ -773,31 +833,35 @@ def createClampNodeMulti(name, inputs=[], in_min=[], in_max=[]): Returns: list: The output attributes list. - """ + """ s = "RGB" - count=0 - i=0 + count = 0 + i = 0 outputs = [] for input, min, max in zip(inputs, in_min, in_max): - if count==0: - real_name = name+"_"+str(i) + if count == 0: + real_name = name + "_" + str(i) node_name = pm.createNode("clamp", n=real_name) - i+=1 + i += 1 - pm.connectAttr(input, node_name+".input"+s[count], f=True) + pm.connectAttr(input, node_name + ".input" + s[count], f=True) - if isinstance(min, str) or isinstance(min, unicode) or isinstance(min, pm.Attribute): - pm.connectAttr(min, node_name+".min"+s[count], f=True) + if (isinstance(min, str) + or isinstance(min, unicode) + or isinstance(min, pm.Attribute)): + pm.connectAttr(min, node_name + ".min" + s[count], f=True) else: - pm.setAttr(node_name+".min"+s[count], min) + pm.setAttr(node_name + ".min" + s[count], min) - if isinstance(max, str) or isinstance(max, unicode) or isinstance(max, pm.Attribute): - pm.connectAttr(max, node_name+".max"+s[count], f=True) + if (isinstance(max, str) + or isinstance(max, unicode) + or isinstance(max, pm.Attribute)): + pm.connectAttr(max, node_name + ".max" + s[count], f=True) else: - pm.setAttr(node_name+".max"+s[count], max) + pm.setAttr(node_name + ".max" + s[count], max) - outputs.append(node_name+".output"+s[count]) - count = (count+1)%3 + outputs.append(node_name + ".output" + s[count]) + count = (count + 1) % 3 return outputs From cd44d7b815f95bc9787ae1d42bae233121785456 Mon Sep 17 00:00:00 2001 From: miquelcampos Date: Fri, 24 Nov 2017 18:43:23 +0900 Subject: [PATCH 099/134] PEP8 #100: mGear: Refactor mgear.maya.pickWalk --- scripts/mgear/maya/pickWalk.py | 244 ++++++++++++++++++--------------- 1 file changed, 131 insertions(+), 113 deletions(-) diff --git a/scripts/mgear/maya/pickWalk.py b/scripts/mgear/maya/pickWalk.py index 3da7fb3..85722a7 100644 --- a/scripts/mgear/maya/pickWalk.py +++ b/scripts/mgear/maya/pickWalk.py @@ -1,38 +1,9 @@ -# MGEAR is under the terms of the MIT License - -# Copyright (c) 2016 Jeremie Passerin, Miquel Campos - -# Permission is hereby granted, free of charge, to any person obtaining a copy -# of this software and associated documentation files (the "Software"), to deal -# in the Software without restriction, including without limitation the rights -# to use, copy, modify, merge, publish, distribute, sublicense, and/or sell -# copies of the Software, and to permit persons to whom the Software is -# furnished to do so, subject to the following conditions: - -# The above copyright notice and this permission notice shall be included in all -# copies or substantial portions of the Software. - -# THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR -# IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, -# FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE -# AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER -# LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, -# OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE -# SOFTWARE. - -# Author: Jeremie Passerin geerem@hotmail.com www.jeremiepasserin.com -# Author: Miquel Campos hello@miquel-campos.com www.miquel-campos.com -# Date: 2016 / 10 / 10 - -""" -Custom Pick walk. -""" -############################################# -# GLOBAL -############################################# +"""Custom Pick walk""" + import pymel.core as pm -import mgear.string as stri +from mgear import string + ########################################################## # Utility funcsions @@ -40,11 +11,12 @@ def getWalkTag(node): """Get Controller tag - Args: + Arguments: node (dagNode): Controller object with tag Returns: tag: Controller tag + """ tag = node.listConnections(t="controller", et=True) if tag: @@ -53,34 +25,38 @@ def getWalkTag(node): def reorderControllerChildrenTags(tag): """Clean the order on the children connection. + This is important for the Left and right pick walk. Becasue is using the index of the connection. - Args: + Arguments: tag (controller tag): The tag to clean the children order + """ ch = tag.children.connections() - for i, c in enumerate(ch): - d = c.children.connections(c.parent, p=True)[0] + for i, c in enumerate(ch): + d = c.children.connections(c.parent, p=True)[0] pm.disconnectAttr(c.parent, d) - pm.connectAttr(c.parent, tag.attr("children[%s]"%str(i))) + pm.connectAttr(c.parent, tag.attr("children[%s]" % str(i))) def cleanOrphaneControllerTags(tag): - """security check, delete tags without controlObject plug + """Security check, delete tags without controlObject plug - Args: + Arguments: tag (controllers tag list): The tags to check Returns: list: The valid tags with controller object plugged + """ if not isinstance(tag, list): tag = [tag] validTags = [] for t in tag: if not t.controllerObject.connections(): - pm.displayWarning("The controller tag: %s have not controller object input. Auto Deleted!"%t.name()) + pm.displayWarning("The controller tag: %s have not controller " + "object input. Auto Deleted!" % t.name()) pm.delete(t) reorderControllerChildrenTags(t) else: @@ -89,21 +65,18 @@ def cleanOrphaneControllerTags(tag): ########################################################## -#PICK WALK +# PICK WALK ########################################################## -# ===================================================== -# controllers walkers - def _getControllerWalkNodes(tag): - """Get the node conneted to a controllers tag as - a controller object + """Get the node conneted to a controllers tag as a controller object - Args: + Arguments: tag (controller list): Maya's controller tag Returns: dagNode: The list of controller objects + """ nodes = [] if not isinstance(tag, list): @@ -114,45 +87,51 @@ def _getControllerWalkNodes(tag): nodes.append(cnx[0]) return nodes + def controllerWalkUp(node, add=False): - """ Walk up in the hierachy using the controller tag + """Walk up in the hierachy using the controller tag - Args: + Arguments: node (dagNode or list of dagNode): Node with controller tag add (bool, optional): If true add to selection + """ oParent = [] - if not isinstance(node,list): + if not isinstance(node, list): node = [node] - for n in node: + for n in node: tag = getWalkTag(n) if tag: cnx = tag.parent.connections() if cnx: oParent.append(cnx[0]) else: - pm.displayWarning("The selected object: %s without Controller tag will be skipped"%n.name()) + pm.displayWarning("The selected object: %s without Controller tag " + "will be skipped" % n.name()) if oParent: pm.select(_getControllerWalkNodes(oParent), add=add) else: pm.displayWarning("No parent to walk Up.") + def controllerWalkDown(node, add=False, multi=False): - """ Walk down in the hierachy using the controller tag + """Walk down in the hierachy using the controller tag - Args: + Arguments: node (dagNode or list of dagNode): Node with controller tag add (bool, optional): If true add to selection + """ oChild = [] - if not isinstance(node,list): + if not isinstance(node, list): node = [node] - for n in node: + for n in node: tag = getWalkTag(n) if tag: cnx = cleanOrphaneControllerTags(tag.children.connections()) else: - pm.displayWarning("The selected object: %s without Controller tag will be skipped"%n.name()) + pm.displayWarning("The selected object: %s without Controller tag " + "will be skipped" % n.name()) if cnx: if multi: oChild = oChild + cnx @@ -165,15 +144,17 @@ def controllerWalkDown(node, add=False, multi=False): def _getControllerWalkSiblings(node, direction="right", multi=False): - """ Get the sibling tag of the controller tag + """Get the sibling tag of the controller tag - Args: + Arguments: node (dagNode or list of dagNode): Node with the controller tag - direction (str, optional): Direction of the walk. Values "right" and "left" + direction (str, optional): Direction of the walk. Values "right" + and "left" multi (bool, optional): If true, selects all the siblings Returns: TYPE: Description + """ if direction == "right": d = 1 @@ -183,67 +164,72 @@ def _getControllerWalkSiblings(node, direction="right", multi=False): if not isinstance(node, list): node = [node] - siblingsTags =[] + siblingsTags = [] for n in node: tag = getWalkTag(n) if tag: pTag = tag.parent.connections() if pTag: - siblings = cleanOrphaneControllerTags(pTag[0].children.connections()) + siblings = cleanOrphaneControllerTags( + pTag[0].children.connections()) if multi: - siblingsTags = siblingsTags + siblings + siblingsTags = siblingsTags + siblings else: i = siblings.index(tag) - if i <= len(siblings)-2: - siblingsTags.append(siblings[i+d]) + if i <= len(siblings) - 2: + siblingsTags.append(siblings[i + d]) else: siblingsTags.append(siblings[0]) else: - pm.displayWarning("The tag: %s doesn't have parent tag"%tag.name()) + pm.displayWarning("The tag: %s doesn't have parent " + "tag" % tag.name()) else: - pm.displayWarning("The selected object: %s without Controller tag will be skipped"%n.name()) - + pm.displayWarning("The selected object: %s without Controller tag" + " will be skipped" % n.name()) siblingsNode = [] for t in siblingsTags: siblingsNode.append(t.controllerObject.connections()[0]) - return siblingsNode def controllerWalkLeft(node, add=False, multi=False): - """ Pick walks the next sibling to the left using controller tag + """Pick walks the next sibling to the left using controller tag - Args: + Arguments: node (TYPE): Description add (bool, optional): If true add to selection multi (bool, optional): If true, selects all the siblings """ - nodes = _getControllerWalkSiblings(pm.selected(), "left", multi) + nodes = _getControllerWalkSiblings(pm.selected(), "left", multi) pm.select(nodes, add=add) + def controllerWalkRight(node, add=False, multi=False): """ Pick walks the next sibling to the right using controller tag - Args: + Arguments: node (TYPE): Description add (bool, optional): If true add to selection multi (bool, optional): If true, selects all the siblings """ - nodes = _getControllerWalkSiblings(pm.selected(), "right", multi) + nodes = _getControllerWalkSiblings(pm.selected(), "right", multi) pm.select(nodes, add=add) # ===================================================== # transform walkers + + def transformWalkUp(node, add=False): - """ Walks to the parent transform dagNode on the hierarcy + """Walks to the parent transform dagNode on the hierarcy - Args: + Arguments: node (dagNode or list of dagNode): dagNode to walk add (bool, optional): if True, will add to the selection + """ oParent = [] if not isinstance(node, list): @@ -262,7 +248,7 @@ def transformWalkUp(node, add=False): def transformWalkDown(node, add=False, multi=False): """Walks to the child transform dagNode on the hierarcy - Args: + Arguments: node (dagNode or list of dagNode): dagNode to walk add (bool, optional): if True, will add to the selection multi (bool, optional): if True will select all the childrens @@ -286,13 +272,15 @@ def transformWalkDown(node, add=False, multi=False): def _getTransformWalkSiblings(node, direction="right", multi=False): """ Get the sibling transforms on the hierarchy - Args: + Arguments: node (dagNode or list of dagNode): dagNode to walk the siblings - direction (str, optional): Direction of the walk. Values "right" and "left" + direction (str, optional): Direction of the walk. Values "right" + and "left" multi (bool, optional): If true, selects all the siblings Returns: dagNode: list of dagNode + """ if direction == "right": d = 1 @@ -301,74 +289,86 @@ def _getTransformWalkSiblings(node, direction="right", multi=False): if not isinstance(node, list): node = [node] - siblings =[] + siblings = [] for n in node: p = n.getParent() sib = p.getChildren() - tSib = [t for t in sib if t.type()=="transform"] + tSib = [t for t in sib if t.type() == "transform"] if multi: siblings = siblings + tSib else: i = tSib.index(n) - if i <= len(tSib)-2: - siblings.append(tSib[i+d]) + if i <= len(tSib) - 2: + siblings.append(tSib[i + d]) else: siblings.append(tSib[0]) return siblings + def transformWalkLeft(node, add=False, multi=False): - """ Pick walks to the left the next sibling transform on the hierarchy + """Pick walks to the left the next sibling transform on the hierarchy - Args: - node (dagNode or list of dagNode): dagNode transform to navegate the hierarchy + Arguments: + node (dagNode or list of dagNode): dagNode transform to navegate + the hierarchy add (bool, optional): If true add to selection multi (bool, optional): If true, selects all the siblings + """ sib = _getTransformWalkSiblings(node, "left", multi) pm.select(sib, add=add) + def transformWalkRight(node, add=False, multi=False): - """ Pick walks to the right the next sibling transform on the hierarchy + """Pick walks to the right the next sibling transform on the hierarchy - Args: - node (dagNode or list of dagNode): dagNode transform to navegate the hierarchy + Arguments: + node (dagNode or list of dagNode): dagNode transform to navegate + the hierarchy add (bool, optional): If true add to selection multi (bool, optional): If true, selects all the siblings + """ sib = _getTransformWalkSiblings(node, "right", multi) pm.select(sib, add=add) # ===================================================== -#Walk mirror +# Walk mirror def getMirror(node): """Get the mirrored node usin _L and _R replacement - Args: - node (dagNode or list of dagNodes): The dagNode to look for a mirror + Arguments: + node (dagNode or list of dagNodes): The dagNode to look for a + mirror Returns: - dagNode or list of dagNodes: The dagNode contrapart on the other side _L or _R + dagNode or list of dagNodes: The dagNode contrapart on the other + side _L or _R + """ if not isinstance(node, list): node = [node] mirrorNodes = [] for n in node: try: - mirrorNodes.append(pm.PyNode(stri.convertRLName(n.name()))) - except: - pm.displayInfo("The object: %s doesn't have mirror _L or _R contrapart. Skipped!"%n.name()) + mirrorNodes.append(pm.PyNode(string.convertRLName(n.name()))) + except Exception: + pm.displayInfo("The object: %s doesn't have mirror _L or _R " + "contrapart. Skipped!" % n.name()) mirrorNodes.append(n) return mirrorNodes + def walkMirror(node, add=False): """Select the mirror dagNode - Args: + Arguments: node (dagNode or list of dagNode): The dagNode to look for a mirror add (bool, optional): If true add to selection + """ mN = getMirror(node) pm.select(mN, add=add) @@ -378,16 +378,23 @@ def walkMirror(node, add=False): # Main walkers def _walk(node, direction, add=False, multi=False): """Walk main function. - This function will check if the first object on the selection have Controller tag or not. - NOTE: The pick walk function on the following selected node will be decided by the firs in the selection - i.e: if the secon element on the selection doesn't controller tag. This element will be discarted. + This function will check if the first object on the selection have + Controller tag or not. + + NOTE: The pick walk function on the following selected node will be + decided by the firs in the selection + i.e: if the secon element on the selection doesn't controller tag. + This element will be discarted. - Args: - node (dagNode or list of dagNode): the starting object for the pickwalk - direction (string): the direction of the navigation : "up", "down", "left" and "right" + Arguments: + node (dagNode or list of dagNode): the starting object for the + pickwalk + direction (string): the direction of the navigation : "up", + "down", "left" and "right" add (bool, optional): If True add to selection multi (bool, optional): If true, selects all the siblings + """ if not isinstance(node, list): node = [node] @@ -403,7 +410,7 @@ def _walk(node, direction, add=False, multi=False): elif direction == "right": controllerWalkRight(node, add, multi) - else: # there is no tag. We pick walk only transforms. + else: # there is no tag. We pick walk only transforms. pm.displayInfo("Transform PickWalk") if direction == "up": transformWalkUp(node, add) @@ -418,40 +425,51 @@ def _walk(node, direction, add=False, multi=False): def walkUp(node, add=False, multi=False): """Walk up - Args: - node (dagNode or list of dagNode): the starting object for the pickwalk + Arguments: + node (dagNode or list of dagNode): the starting object for the + pickwalk add (bool, optional): If True add to selection multi (bool, optional): If true, selects all the siblings + """ _walk(node, "up", add, multi) + def walkDown(node, add=False, multi=False): """Walk Down - Args: - node (dagNode or list of dagNode): the starting object for the pickwalk + Arguments: + node (dagNode or list of dagNode): the starting object for the + pickwalk add (bool, optional): If True add to selection multi (bool, optional): If true, selects all the siblings + """ _walk(node, "down", add, multi) + def walkLeft(node, add=False, multi=False): """Walk left - Args: - node (dagNode or list of dagNode): the starting object for the pickwalk + Arguments: + node (dagNode or list of dagNode): the starting object for the + pickwalk add (bool, optional): If True add to selection multi (bool, optional): If true, selects all the siblings + """ _walk(node, "left", add, multi) + def walkRight(node, add=False, multi=False): """Walk right - Args: - node (dagNode or list of dagNode): the starting object for the pickwalk + Arguments: + node (dagNode or list of dagNode): the starting object for the + pickwalk add (bool, optional): If True add to selection multi (bool, optional): If true, selects all the siblings + """ _walk(node, "right", add, multi) From 763007a4decd9d7eeedcc426182e772fd2390014 Mon Sep 17 00:00:00 2001 From: miquelcampos Date: Fri, 24 Nov 2017 19:04:42 +0900 Subject: [PATCH 100/134] PEP8 #100: mGear: Refactor mgear.maya.pickWalk/pyqt/skin --- scripts/mgear/maya/primitive.py | 208 ++++++++++++++-------------- scripts/mgear/maya/pyqt.py | 60 +++------ scripts/mgear/maya/skin.py | 231 +++++++++++++++++--------------- 3 files changed, 242 insertions(+), 257 deletions(-) diff --git a/scripts/mgear/maya/primitive.py b/scripts/mgear/maya/primitive.py index 2851de9..35e191e 100644 --- a/scripts/mgear/maya/primitive.py +++ b/scripts/mgear/maya/primitive.py @@ -1,50 +1,19 @@ -# MGEAR is under the terms of the MIT License +"""Functions to create primitives (Non geometry)""" -# Copyright (c) 2016 Jeremie Passerin, Miquel Campos - -# Permission is hereby granted, free of charge, to any person obtaining a copy -# of this software and associated documentation files (the "Software"), to deal -# in the Software without restriction, including without limitation the rights -# to use, copy, modify, merge, publish, distribute, sublicense, and/or sell -# copies of the Software, and to permit persons to whom the Software is -# furnished to do so, subject to the following conditions: - -# The above copyright notice and this permission notice shall be included in all -# copies or substantial portions of the Software. - -# THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR -# IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, -# FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE -# AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER -# LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, -# OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE -# SOFTWARE. - -# Author: Jeremie Passerin geerem@hotmail.com www.jeremiepasserin.com -# Author: Miquel Campos hello@miquel-campos.com www.miquel-campos.com -# Date: 2016 / 10 / 10 - -""" -Functions to create primitives (Non geometry) -""" - -############################################# -# GLOBAL -############################################# import pymel.core as pm -import pymel.core.datatypes as dt +import pymel.core.datatypes as datatypes -import mgear.maya.transform as tra +import mgear.maya.transform as transform ############################################# # PRIMITIVE ############################################# -def addTransform(parent, name, m=dt.Matrix()): - """ - Create a transform dagNode. - Args: +def addTransform(parent, name, m=datatypes.Matrix()): + """Create a transform dagNode. + + Arguments: parent (dagNode): The parent for the node. name (str): The Node name. m (matrix): The matrix for the node transformation (optional). @@ -53,7 +22,6 @@ def addTransform(parent, name, m=dt.Matrix()): dagNode: The newly created node. """ - node = pm.PyNode(pm.createNode("transform", n=name)) node.setTransformation(m) @@ -62,11 +30,11 @@ def addTransform(parent, name, m=dt.Matrix()): return node -def addTransformFromPos(parent, name, pos=dt.Vector(0,0,0)): - """ - Create a transform dagNode. - Args: +def addTransformFromPos(parent, name, pos=datatypes.Vector(0, 0, 0)): + """Create a transform dagNode. + + Arguments: parent (dagNode): The parent for the node. name (str): The Node name. pos (vector): The vector for the node position (optional). @@ -75,7 +43,6 @@ def addTransformFromPos(parent, name, pos=dt.Vector(0,0,0)): dagNode: The newly created node. """ - node = pm.PyNode(pm.createNode("transform", n=name)) node.setTranslation(pos, space="world") @@ -86,11 +53,12 @@ def addTransformFromPos(parent, name, pos=dt.Vector(0,0,0)): # =========================================== # LOCATOR -def addLocator(parent, name, m=dt.Matrix(), size=1): - """ - Create a space locator dagNode. - Args: + +def addLocator(parent, name, m=datatypes.Matrix(), size=1): + """Create a space locator dagNode. + + Arguments: parent (dagNode): The parent for the node. name (str): The Node name. m (matrix): The matrix for the node transformation (optional). @@ -100,7 +68,6 @@ def addLocator(parent, name, m=dt.Matrix(), size=1): dagNode: The newly created node. """ - node = pm.PyNode(pm.createNode("locator")).getParent() node.rename(name) node.setTransformation(m) @@ -111,11 +78,11 @@ def addLocator(parent, name, m=dt.Matrix(), size=1): return node -def addLocatorFromPos(parent, name, pos=dt.Vector(0,0,0), size=1): - """ - Create a space locator dagNode. - Args: +def addLocatorFromPos(parent, name, pos=datatypes.Vector(0, 0, 0), size=1): + """Create a space locator dagNode. + + Arguments: parent (dagNode): The parent for the node. name (str): The Node name. pos (vector): The vector for the node position (optional). @@ -123,9 +90,8 @@ def addLocatorFromPos(parent, name, pos=dt.Vector(0,0,0), size=1): Returns: dagNode: The newly created node. - """ - + """ node = pm.PyNode(pm.createNode("locator")).getParent() node.rename(name) node.setTranslation(pos, space="world") @@ -138,15 +104,16 @@ def addLocatorFromPos(parent, name, pos=dt.Vector(0,0,0), size=1): # =========================================== # JOINT -def addJoint(parent, name, m=dt.Matrix(), vis=True): - """ - Create a joint dagNode. + + +def addJoint(parent, name, m=datatypes.Matrix(), vis=True): + """Create a joint dagNode. Note: I'm not using the joint() comand because this is parenting the newly created joint to current selection which might not be desired - Args: + Arguments: parent (dagNode): The parent for the node. name (str): The node name. m (matrix): The matrix for the node transformation (optional). @@ -165,15 +132,15 @@ def addJoint(parent, name, m=dt.Matrix(), vis=True): return node -def addJointFromPos(parent, name, pos=dt.Vector(0,0,0)): - """ - Create a joint dagNode. + +def addJointFromPos(parent, name, pos=datatypes.Vector(0, 0, 0)): + """Create a joint dagNode. Note: I'm not using the joint() comand because this is parenting the newly created joint to current selection which might not be desired - Args: + Arguments: parent (dagNode): The parent for the node. name (str): The node name. pos (vector): The vector for the node position (optional). @@ -191,21 +158,25 @@ def addJointFromPos(parent, name, pos=dt.Vector(0,0,0)): return node + def add2DChain2(parent, name, positions, normal, negate=False, vis=True): - """ - Experimental 2D Chain creation function. Create a 2D joint chain. Like Softimage 2D chain. + """Experimental 2D Chain creation function. + + Create a 2D joint chain. Like Softimage 2D chain. Warning: This function is WIP and not ready for production. Warning: - This function will create un expected results if all the positions are not in the same 2D plane. + This function will create un expected results if all the + positions are not in the same 2D plane. - Args: + Arguments: parent (dagNode): The parent for the chain. name (str): The node name. positions(list of vectors): the positons to define the chain. - normal (vector): The normal vector to define the direction of the chain. + normal (vector): The normal vector to define the direction of + the chain. negate (bool): If True will negate the direction of the chain Returns; @@ -213,20 +184,24 @@ def add2DChain2(parent, name, positions, normal, negate=False, vis=True): - >>> self.chain3bones = pri.add2DChain2(self.setup, self.getName("chain3bones%s_jnt"), self.guide.apos[0:4], self.normal, False) + >>> self.chain3bones = pri.add2DChain2( + self.setup, + self.getName("chain3bones%s_jnt"), + self.guide.apos[0:4], + self.normal, + False) """ - - if "%s" not in name: + if "%s" not in name: name += "%s" - transforms = tra.getChainTransform(positions, normal, negate) - t = tra.setMatrixPosition(transforms[-1], positions[-1]) + transforms = transform.getChainTransform(positions, normal, negate) + t = transform.setMatrixPosition(transforms[-1], positions[-1]) transforms.append(t) chain = [] for i, t in enumerate(transforms): - node = addJoint(parent, name%i, t, vis) + node = addJoint(parent, name % i, t, vis) chain.append(node) parent = node @@ -235,13 +210,14 @@ def add2DChain2(parent, name, positions, normal, negate=False, vis=True): if i == 0: jnt.setAttr("jointOrient", jnt.getAttr("rotate")) - elif i == len(chain)-1: + elif i == len(chain) - 1: jnt.setAttr("jointOrient", 0, 0, 0) else: - # This will fail if chain is not always oriented the same way (like Z chain) - v0 = positions[i] - positions[i-1] - v1 = positions[i+1] - positions[i] - angle = dt.degrees(v0.angle(v1)) + # This will fail if chain is not always oriented the same + # way (like Z chain) + v0 = positions[i] - positions[i - 1] + v1 = positions[i + 1] - positions[i] + angle = datatypes.degrees(v0.angle(v1)) jnt.setAttr("jointOrient", 0, 0, angle) @@ -250,36 +226,43 @@ def add2DChain2(parent, name, positions, normal, negate=False, vis=True): return chain + def add2DChain(parent, name, positions, normal, negate=False, vis=True): - """ - Create a 2D joint chain. Like Softimage 2D chain. + """Create a 2D joint chain. Like Softimage 2D chain. Warning: - This function will create un expected results if all the positions are not in the same 2D plane. + This function will create un expected results if all the + positions are not in the same 2D plane. - Args: + Arguments: parent (dagNode): The parent for the chain. name (str): The node name. positions(list of vectors): the positons to define the chain. - normal (vector): The normal vector to define the direction of the chain. + normal (vector): The normal vector to define the direction of + the chain. negate (bool): If True will negate the direction of the chain Returns; list of dagNodes: The list containg all the joints of the chain - >>> self.rollRef = pri.add2DChain(self.root, self.getName("rollChain"), self.guide.apos[:2], self.normal, self.negate) - """ + >>> self.rollRef = pri.add2DChain( + self.root, + self.getName("rollChain"), + self.guide.apos[:2], + self.normal, + self.negate) - if "%s" not in name: + """ + if "%s" not in name: name += "%s" - transforms = tra.getChainTransform(positions, normal, negate) - t = tra.setMatrixPosition(transforms[-1], positions[-1]) + transforms = transform.getChainTransform(positions, normal, negate) + t = transform.setMatrixPosition(transforms[-1], positions[-1]) transforms.append(t) chain = [] for i, t in enumerate(transforms): - node = addJoint(parent, name%i, t, vis) + node = addJoint(parent, name % i, t, vis) chain.append(node) parent = node @@ -288,22 +271,26 @@ def add2DChain(parent, name, positions, normal, negate=False, vis=True): if i == 0: jnt.setAttr("jointOrient", jnt.getAttr("rotate")) jnt.setAttr("rotate", 0, 0, 0) - elif i == len(chain)-1: + elif i == len(chain) - 1: jnt.setAttr("jointOrient", 0, 0, 0) jnt.setAttr("rotate", 0, 0, 0) else: - # This will fail if chain is not always oriented the same way (like X chain) - v0 = positions[i] - positions[i-1] - v1 = positions[i+1] - positions[i] - angle = dt.degrees(v0.angle(v1)) + # This will fail if chain is not always oriented the same + # way (like X chain) + v0 = positions[i] - positions[i - 1] + v1 = positions[i + 1] - positions[i] + angle = datatypes.degrees(v0.angle(v1)) jnt.setAttr("rotate", 0, 0, 0) jnt.setAttr("jointOrient", 0, 0, angle) - # check if we have to negate Z angle by comparing the guide position and the resulting position. + # check if we have to negate Z angle by comparing the guide + # position and the resulting position. if i >= 1: # round the position values to 6 decimals precission - # TODO: test with less precision and new check after apply Ik solver - if [round(elem, 4) for elem in tra.getTranslation(jnt)] != [round(elem, 4) for elem in positions[i]]: + # TODO: test with less precision and new check after apply + # Ik solver + if ([round(elem, 4) for elem in transform.getTranslation(jnt)] + != [round(elem, 4) for elem in positions[i]]): jp = jnt.getParent() @@ -312,7 +299,8 @@ def add2DChain(parent, name, positions, normal, negate=False, vis=True): while jp.type() == "transform": jp = jp.getParent() - jp.setAttr("jointOrient", 0, 0, jp.attr("jointOrient").get()[2]*-1) + jp.setAttr( + "jointOrient", 0, 0, jp.attr("jointOrient").get()[2] * -1) jnt.setAttr("radius", 1.5) @@ -320,24 +308,31 @@ def add2DChain(parent, name, positions, normal, negate=False, vis=True): def addIkHandle(parent, name, chn, solver="ikRPsolver", poleV=None): - """ - Creates and connect an IKhandle to a joints chain. + """Creates and connect an IKhandle to a joints chain. - Args: + Arguments: parent (dagNode): The parent for the IKhandle. name (str): The node name. chn (list): List of joints. - solver (str): the solver to be use for the ikHandel. Default value is "ikRPsolver" + solver (str): the solver to be use for the ikHandel. Default + value is "ikRPsolver" poleV (dagNode): Pole vector for the IKHandle Returns: dagNode: The IKHandle - >>> self.ikHandleUpvRef = pri.addIkHandle(self.root, self.getName("ikHandleLegChainUpvRef"), self.legChainUpvRef, "ikSCsolver") - """ + >>> self.ikHandleUpvRef = pri.addIkHandle( + self.root, + self.getName("ikHandleLegChainUpvRef"), + self.legChainUpvRef, + "ikSCsolver") + """ # creating a crazy name to avoid name clashing before convert to pyNode. - node = pm.ikHandle(n=name+"kjfjfklsdf049r58420582y829h3jnf", sj=chn[0], ee=chn[-1], solver=solver)[0] + node = pm.ikHandle(n=name + "kjfjfklsdf049r58420582y829h3jnf", + sj=chn[0], + ee=chn[-1], + solver=solver)[0] node = pm.PyNode(node) pm.rename(node, name) node.attr("visibility").set(False) @@ -348,5 +343,4 @@ def addIkHandle(parent, name, chn, solver="ikRPsolver", poleV=None): if poleV: pm.poleVectorConstraint(poleV, node) - return node diff --git a/scripts/mgear/maya/pyqt.py b/scripts/mgear/maya/pyqt.py index 0485e3f..82f39ea 100644 --- a/scripts/mgear/maya/pyqt.py +++ b/scripts/mgear/maya/pyqt.py @@ -1,32 +1,4 @@ -# MGEAR is under the terms of the MIT License - -# Copyright (c) 2016 Jeremie Passerin, Miquel Campos - -# Permission is hereby granted, free of charge, to any person obtaining a copy -# of this software and associated documentation files (the "Software"), to deal -# in the Software without restriction, including without limitation the rights -# to use, copy, modify, merge, publish, distribute, sublicense, and/or sell -# copies of the Software, and to permit persons to whom the Software is -# furnished to do so, subject to the following conditions: - -# The above copyright notice and this permission notice shall be included in all -# copies or substantial portions of the Software. - -# THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR -# IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, -# FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE -# AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER -# LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, -# OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE -# SOFTWARE. - -# Author: Jeremie Passerin geerem@hotmail.com www.jeremiepasserin.com -# Author: Miquel Campos hello@miquel-campos.com www.miquel-campos.com -# Date: 2016 / 10 / 10 - -""" -pyQt/pySide widgets and helper functions for mGear -""" +"""pyQt/pySide widgets and helper functions for mGear""" ############################################# # GLOBAL @@ -34,16 +6,15 @@ import traceback import maya.OpenMayaUI as omui -from mGear_pyqt import qt_import from mgear.vendor.Qt import QtWidgets, QtCompat ############################################# # helper Maya pyQt functions ############################################# + def maya_main_window(): - """ - Get Maya's main window + """Get Maya's main window Returns: QMainWindow: main window. @@ -53,6 +24,7 @@ def maya_main_window(): main_window_ptr = omui.MQtUtil.mainWindow() return QtCompat.wrapInstance(long(main_window_ptr), QtWidgets.QWidget) + def showDialog(dialog, dInst=True, *args): """ Show the defined dialog window @@ -66,7 +38,7 @@ def showDialog(dialog, dInst=True, *args): for c in maya_main_window().children(): if isinstance(c, dialog): c.deleteLater() - except: + except Exception: pass # Create minimal dialog object @@ -75,42 +47,44 @@ def showDialog(dialog, dInst=True, *args): # windw = dialog(maya_main_window()) # else: windw = dialog() - windw.move(QtWidgets.QApplication.desktop().screen().rect().center()- windw.rect().center()) + windw.move(QtWidgets.QApplication.desktop().screen().rect().center() + - windw.rect().center()) # Delete the UI if errors occur to avoid causing winEvent # and event errors (in Maya 2014) try: windw.show() - except: + except Exception: windw.deleteLater() traceback.print_exc() def deleteInstances(dialog, checkinstance): - """ - Delete any instance of a given dialog and if the dialog is instance of checkinstance. + """Delete any instance of a given dialog + + Delete any instance of a given dialog and if the dialog is + instance of checkinstance. Attributes: dialog (QDialog): The dialog to delete. checkinstance (QDialog): The instance to check the type of dialog. """ - mayaMainWindow = maya_main_window() for obj in mayaMainWindow.children(): - if type( obj ) == checkinstance: + if isinstance(obj, checkinstance): if obj.widget().objectName() == dialog.toolName: print 'Deleting instance {0}'.format(obj) mayaMainWindow.removeDockWidget(obj) obj.setParent(None) obj.deleteLater() + def fakeTranslate(*args): - """ - fake QApplication.translate. This function helps to bypass the incompativility - for the Unicode utf8 deprecated in pyside2 + """Fake Translation + fake QApplication.translate. This function helps to bypass the + incompativility for the Unicode utf8 deprecated in pyside2 """ - return args[1] diff --git a/scripts/mgear/maya/skin.py b/scripts/mgear/maya/skin.py index 9a16f26..c345c99 100644 --- a/scripts/mgear/maya/skin.py +++ b/scripts/mgear/maya/skin.py @@ -1,36 +1,10 @@ -# MGEAR is under the terms of the MIT License - -# Copyright (c) 2016 Jeremie Passerin, Miquel Campos - -# Permission is hereby granted, free of charge, to any person obtaining a copy -# of this software and associated documentation files (the "Software"), to deal -# in the Software without restriction, including without limitation the rights -# to use, copy, modify, merge, publish, distribute, sublicense, and/or sell -# copies of the Software, and to permit persons to whom the Software is -# furnished to do so, subject to the following conditions: - -# The above copyright notice and this permission notice shall be included in all -# copies or substantial portions of the Software. - -# THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR -# IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, -# FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE -# AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER -# LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, -# OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE -# SOFTWARE. - -# Author: Jeremie Passerin geerem@hotmail.com www.jeremiepasserin.com -# Author: Miquel Campos hello@miquel-campos.com www.miquel-campos.com -# Author: Chad Vernon ------------------ www.chadvernon.com -# Date: 2016 / 10 / 10 - """ Functions to work with skinCluster data. This module is derivated from Chad Vernon's Skin IO. -`Chad Vernon's github `_ +`Chad Vernon's github \n +`_ """ ############################################# @@ -39,7 +13,6 @@ import os import cPickle as pickle import json -from functools import partial import pymel.core as pm import maya.OpenMaya as OpenMaya @@ -48,26 +21,27 @@ PACK_EXT = ".gSkinPack" ###################################### -## Skin getters +# Skin getters ###################################### + def getSkinCluster(obj): - """ - Get the skincluster of a given object + """Get the skincluster of a given object - Args: + Arguments: obj (dagNode): The object to get skincluster Returns: pyNode: The skin cluster pynode object - """ + """ skinCluster = None - if isinstance(obj, basestring): + if isinstance(obj, basestring): obj = pm.PyNode(obj) try: - if pm.nodeType(obj.getShape()) in ["mesh", "nurbsSurface", "nurbsCurve"]: + if (pm.nodeType(obj.getShape()) + in ["mesh", "nurbsSurface", "nurbsCurve"]): for shape in obj.getShapes(): try: @@ -75,20 +49,20 @@ def getSkinCluster(obj): try: if skC.getGeometry()[0] == shape: skinCluster = skC - except: + except Exception: pass - except: + except Exception: pass - except: - pm.displayWarning("%s: is not supported."% obj.name()) + except Exception: + pm.displayWarning("%s: is not supported." % obj.name()) return skinCluster + def getGeometryComponents(skinCls): - """ - Get the geometry components from skincluster + """Get the geometry components from skincluster - Args: + Arguments: skinCls (PyNode): The skincluster node Returns: @@ -103,17 +77,18 @@ def getGeometryComponents(skinCls): members.getDagPath(0, dagPath, components) return dagPath, components + def getCurrentWeights(skinCls, dagPath, components): - """ - Get the skincluster weights + """Get the skincluster weights - Args: + Arguments: skinCls (PyNode): The skincluster node dagPath (MDagPath): The skincluster dagpath components (MObject): The skincluster components Returns: MDoubleArray: The skincluster weights + """ weights = OpenMaya.MDoubleArray() util = OpenMaya.MScriptUtil() @@ -123,9 +98,10 @@ def getCurrentWeights(skinCls, dagPath, components): return weights ###################################### -## Skin Collectors +# Skin Collectors ###################################### + def collectInfluenceWeights(skinCls, dagPath, components, dataDic): weights = getCurrentWeights(skinCls, dagPath, components) @@ -135,8 +111,9 @@ def collectInfluenceWeights(skinCls, dagPath, components, dataDic): for ii in range(influencePaths.length()): influenceName = influencePaths[ii].partialPathName() influenceWithoutNamespace = pm.PyNode(influenceName).stripNamespace() - dataDic['weights'][influenceWithoutNamespace] = \ - [weights[jj*numInfluences+ii] for jj in range(numComponentsPerInfluence)] + inf_w = [weights[jj * numInfluences + ii] for jj + in range(numComponentsPerInfluence)] + dataDic['weights'][influenceWithoutNamespace] = inf_w def collectBlendWeights(skinCls, dagPath, components, dataDic): @@ -145,7 +122,6 @@ def collectBlendWeights(skinCls, dagPath, components, dataDic): dataDic['blendWeights'] = [weights[i] for i in range(weights.length())] - def collectData(skinCls, dataDic): dagPath, components = getGeometryComponents(skinCls) collectInfluenceWeights(skinCls, dagPath, components, dataDic) @@ -158,7 +134,7 @@ def collectData(skinCls, dataDic): ###################################### -## Skin export +# Skin export ###################################### def exportSkin(filePath=None, objs=None, *args): @@ -170,14 +146,16 @@ def exportSkin(filePath=None, objs=None, *args): pm.displayWarning("Please Select One or more objects") return False - packDic = { "objs":[], - "objDDic":[], - "bypassObj":[] - } + packDic = {"objs": [], + "objDDic": [], + "bypassObj": [] + } if not filePath: startDir = pm.workspace(q=True, rootDirectory=True) - filePath = pm.fileDialog2(dialogStyle=2, fileMode=0, startingDirectory=startDir, + filePath = pm.fileDialog2(dialogStyle=2, + fileMode=0, + startingDirectory=startDir, fileFilter='mGear Skin (*%s)' % FILE_EXT) filePath = filePath[0] if not filePath: @@ -186,31 +164,35 @@ def exportSkin(filePath=None, objs=None, *args): if not filePath.endswith(FILE_EXT): filePath += FILE_EXT - #object parsing + # object parsing for obj in objs: skinCls = getSkinCluster(obj) if not skinCls: - pm.displayWarning(obj.name() + ": Skiped because don't have Skin Cluster") + pm.displayWarning( + obj.name() + ": Skiped because don't have Skin Cluster") pass else: - dataDic = { 'weights':{}, - 'blendWeights':[], - 'skinClsName':"", - 'objName':"", - 'nameSpace':"" - } + dataDic = {'weights': {}, + 'blendWeights': [], + 'skinClsName': "", + 'objName': "", + 'nameSpace': "" + } dataDic["objName"] = obj.name() dataDic["nameSpace"] = obj.namespace() - collectData(skinCls, dataDic) packDic["objs"].append(obj.name()) packDic["objDDic"].append(dataDic) - pm.displayInfo( 'Exported skinCluster %s (%d influences, %d vertices) %s' % ( skinCls.name(), - len(dataDic['weights'].keys()), len(dataDic['blendWeights']), obj.name())) + pm.displayInfo( + "Exported skinCluster %s (%d influences, %d " + "vertices) %s" % (skinCls.name(), + len(dataDic['weights'].keys()), + len(dataDic['blendWeights']), + obj.name())) if packDic["objs"]: fh = open(filePath, 'wb') @@ -227,31 +209,33 @@ def exportSkinPack(packPath=None, objs=None, *args): pm.displayWarning("Please Select Some Objects") return - packDic = { - "packFiles":[], - "rootPath":[] - } + "packFiles": [], + "rootPath": [] + } startDir = pm.workspace(q=True, rootDirectory=True) - packPath = pm.fileDialog2(dialogStyle=2, fileMode=0, startingDirectory=startDir, - fileFilter='mGear skinPack (*%s)' % PACK_EXT) + packPath = pm.fileDialog2(dialogStyle=2, + fileMode=0, + startingDirectory=startDir, + fileFilter='mGear skinPack (*%s)' % PACK_EXT) if not packPath: return packPath = packPath[0] if not packPath.endswith(PACK_EXT): packPath += PACK_EXT - packDic["rootPath"], packName = os.path.split(packPath) + packDic["rootPath"], packName = os.path.split(packPath) for obj in objs: fileName = obj.stripNamespace() + FILE_EXT filePath = os.path.join(packDic["rootPath"], fileName) if exportSkin(filePath, [obj]): packDic["packFiles"].append(fileName) - pm.displayInfo( filePath) + pm.displayInfo(filePath) else: - pm.displayWarning(obj.name() + ": Skiped because don't have Skin Cluster") + pm.displayWarning( + obj.name() + ": Skiped because don't have Skin Cluster") if packDic["packFiles"]: data_string = json.dumps(packDic, indent=4, sort_keys=True) @@ -260,11 +244,12 @@ def exportSkinPack(packPath=None, objs=None, *args): f.close() pm.displayInfo("Skin Pack exported: " + packPath) else: - pm.displayWarning("Any of the selected objects have Skin Cluster. Skin Pack export aborted.") + pm.displayWarning("Any of the selected objects have Skin Cluster. " + "Skin Pack export aborted.") ###################################### -## Skin setters +# Skin setters ###################################### @@ -278,19 +263,23 @@ def setInfluenceWeights(skinCls, dagPath, components, dataDic): for importedInfluence, importedWeights in dataDic['weights'].items(): for ii in range(influencePaths.length()): influenceName = influencePaths[ii].partialPathName() - influenceWithoutNamespace = pm.PyNode(influenceName).stripNamespace() + nnspace = pm.PyNode(influenceName).stripNamespace() + influenceWithoutNamespace = nnspace if influenceWithoutNamespace == importedInfluence: for jj in range(numComponentsPerInfluence): - weights.set(importedWeights[jj], jj*numInfluences+ii) + weights.set(importedWeights[jj], jj * numInfluences + ii) break else: unusedImports.append(importedInfluence) - influenceIndices = OpenMaya.MIntArray(numInfluences) for ii in range(numInfluences): influenceIndices.set(ii, ii) - skinCls.__apimfn__().setWeights(dagPath, components, influenceIndices, weights, False) + skinCls.__apimfn__().setWeights(dagPath, + components, + influenceIndices, + weights, + False) def setBlendWeights(skinCls, dagPath, components, dataDic): @@ -309,13 +298,17 @@ def setData(skinCls, dataDic): pm.setAttr('%s.%s' % (skinCls, attr), dataDic[attr]) ###################################### -## Skin import +# Skin import ###################################### + + def getObjsFromSkinFile(filePath=None, *args): - #retrive the object names inside gSkin file + # retrive the object names inside gSkin file if not filePath: startDir = pm.workspace(q=True, rootDirectory=True) - filePath = pm.fileDialog2(dialogStyle=2, fileMode=1, startingDirectory=startDir, + filePath = pm.fileDialog2(dialogStyle=2, + fileMode=1, + startingDirectory=startDir, fileFilter='mGear Skin (*%s)' % FILE_EXT) if not filePath: return @@ -329,11 +322,14 @@ def getObjsFromSkinFile(filePath=None, *args): for x in data["objs"]: print x + def importSkin(filePath=None, *args): if not filePath: startDir = pm.workspace(q=True, rootDirectory=True) - filePath = pm.fileDialog2(dialogStyle=2, fileMode=1, startingDirectory=startDir, + filePath = pm.fileDialog2(dialogStyle=2, + fileMode=1, + startingDirectory=startDir, fileFilter='mGear Skin (*%s)' % FILE_EXT) if not filePath: return @@ -359,38 +355,44 @@ def importSkin(filePath=None, *args): pm.displayWarning('Vertex counts do not match. %d != %d' % (meshVertices, importedVertices)) continue - except: + except Exception: pass - if getSkinCluster(objNode): + if getSkinCluster(objNode): skinCluster = getSkinCluster(objNode) else: try: joints = data['weights'].keys() - skinCluster = pm.skinCluster(joints, objNode, tsb=True, nw=2, n=data['skinClsName']) - except: + skinCluster = pm.skinCluster( + joints, objNode, tsb=True, nw=2, n=data['skinClsName']) + except Exception: notFound = data['weights'].keys() - sceneJoints = set([pm.PyNode(x).name() for x in pm.ls(type='joint')]) + sceneJoints = set([pm.PyNode(x).name() + for x in pm.ls(type='joint')]) for j in notFound: if j in sceneJoints: notFound.remove(j) - pm.displayWarning("Object: " + objName + " Skiped. Can't found corresponding deformer for the following joints: " + str(notFound)) + pm.displayWarning("Object: " + objName + " Skiped. Can't " + "found corresponding deformer for the " + "following joints: " + str(notFound)) continue if skinCluster: setData(skinCluster, data) print 'Imported skin for: %s' % objName - - except: - pm.displayWarning("Object: " + objName + " Skiped. Can NOT be found in the scene" ) + except Exception: + pm.displayWarning("Object: " + objName + " Skiped. Can NOT be " + "found in the scene") def importSkinPack(filePath=None, *args): if not filePath: startDir = pm.workspace(q=True, rootDirectory=True) - filePath = pm.fileDialog2(dialogStyle=2, fileMode=1, startingDirectory=startDir, - fileFilter='mGear skinPack (*%s)' % PACK_EXT) + filePath = pm.fileDialog2(dialogStyle=2, + fileMode=1, + startingDirectory=startDir, + fileFilter='mGear skinPack (*%s)' % PACK_EXT) if not filePath: return if not isinstance(filePath, basestring): @@ -402,47 +404,62 @@ def importSkinPack(filePath=None, *args): importSkin(filePath, True) ###################################### -## Skin Copy +# Skin Copy ###################################### + def skinCopy(sourceMesh=None, targetMesh=None, *args): if not sourceMesh or not targetMesh: - if len(pm.selected()) >=2: + if len(pm.selected()) >= 2: sourceMesh = pm.selected()[-1] targetMeshes = pm.selected()[:-1] else: - pm.displayWarning("Please select target mesh/meshes and source mesh with skinCluster.") + pm.displayWarning("Please select target mesh/meshes and source " + "mesh with skinCluster.") return else: targetMeshes = [targetMesh] - #we check this here, because if not need to check when we work base on selection. + # we check this here, because if not need to check when we work + # base on selection. if isinstance(sourceMesh, basestring): sourceMesh = pm.PyNode(sourceMesh) for targetMesh in targetMeshes: - if isinstance(targetMesh, basestring): + if isinstance(targetMesh, basestring): sourceMesh = pm.PyNode(targetMesh) ss = getSkinCluster(sourceMesh) if ss: oDef = pm.skinCluster(sourceMesh, query=True, influence=True) - skinCluster = pm.skinCluster(oDef, targetMesh, tsb=True, nw=2, n=targetMesh.name() + "_SkinCluster") - pm.copySkinWeights( ss=ss.stripNamespace(), ds=skinCluster.name(), noMirror=True, ia="oneToOne", sm=True, nr=True) + skinCluster = pm.skinCluster(oDef, + targetMesh, + tsb=True, + nw=2, + n=targetMesh.name() + "_SkinCluster") + pm.copySkinWeights(ss=ss.stripNamespace(), + ds=skinCluster.name(), + noMirror=True, + ia="oneToOne", + sm=True, + nr=True) else: - pm.displayError("Source Mesh :" + sourceMesh.name() + " Don't have skinCluster") + pm.displayError("Source Mesh :" + sourceMesh.name() + " Don't " + "have skinCluster") ###################################### -## Skin Utils +# Skin Utils ###################################### + + def selectDeformers(*args): if pm.selected(): try: oSel = pm.selected()[0] oColl = pm.skinCluster(oSel, query=True, influence=True) pm.select(oColl) - except: + except Exception: pm.displayError("Select one object with skinCluster") else: pm.displayWarning("Select one object with skinCluster") From 3ee7da9357386e60d8cab004f41318e359f0777e Mon Sep 17 00:00:00 2001 From: miquelcampos Date: Fri, 24 Nov 2017 19:05:15 +0900 Subject: [PATCH 101/134] PEP8 #100: mGear: maya modules WIP --- scripts/mgear/maya/transform.py | 40 ++++++++++++++++----------------- scripts/mgear/maya/utils.py | 2 +- scripts/mgear/maya/vector.py | 14 ++++++------ 3 files changed, 28 insertions(+), 28 deletions(-) diff --git a/scripts/mgear/maya/transform.py b/scripts/mgear/maya/transform.py index b1647bd..43c3bec 100644 --- a/scripts/mgear/maya/transform.py +++ b/scripts/mgear/maya/transform.py @@ -47,7 +47,7 @@ def getTranslation(node): """ Return the position of the dagNode in worldSpace. - Args: + Arguments: node (dagNode): The dagNode to get the translation Returns: @@ -59,7 +59,7 @@ def getTransform(node): """ Return the transformation matrix of the dagNode in worldSpace. - Args: + Arguments: node (dagNode): The dagNode to get the translation Returns: @@ -71,7 +71,7 @@ def getTransformLookingAt(pos, lookat, normal, axis="xy", negate=False): """ Return the transformation matrix of the dagNode oriented looking to an specific point. - Args: + Arguments: pos (vector): The position for the transformation lookat (vector): The aiming position to stablish the orientation. normal (vector): The normal control the transformation roll. @@ -151,7 +151,7 @@ def getChainTransform(positions, normal, negate=False): """ Get a tranformation list from a positions list and normal. - Args: + Arguments: positions(list of vector): List with the chain positions. normal (vector): Normal direction. negate (bool): If true invert the chain orientation. @@ -187,7 +187,7 @@ def getChainTransform2(positions, normal, negate=False): Note: getChainTransform2 is using the latest position on the chain - Args: + Arguments: positions(list of vector): List with the chain positions. normal (vector): Normal direction. negate (bool): If true invert the chain orientation. @@ -228,7 +228,7 @@ def getTransformFromPos(pos): """ Create a transformation Matrix from a given position. - Args: + Arguments: pos (vector): Position for the transformation matrix Returns: @@ -249,7 +249,7 @@ def getOffsetPosition(node, offset=[0,0,0]): """ Get an offset position from dagNode - Args: + Arguments: node (dagNode): The dagNode with the original position. offset (list of float): Ofsset values for xyz. exp : [1.2, 4.6, 32.78] @@ -271,7 +271,7 @@ def getPositionFromMatrix(in_m): """ Get the position values from matrix - Args: + Arguments: in_m (matrix): The input Matrix. Returns: @@ -285,7 +285,7 @@ def setMatrixPosition(in_m, pos): """ Set the position for a given matrix - Args: + Arguments: in_m (matrix): The input Matrix. pos (list of float): The position values for xyz @@ -308,7 +308,7 @@ def setMatrixRotation(m, rot): """ Set the rotation for a given matrix - Args: + Arguments: in_m (matrix): The input Matrix. rot (list of float): The rotation values for xyz @@ -329,7 +329,7 @@ def setMatrixScale(m, scl=[1,1,1]): """ Set the scale for a given matrix - Args: + Arguments: in_m (matrix): The input Matrix. scl (list of float): The scale values for xyz @@ -349,7 +349,7 @@ def getFilteredTransform(m, translation=True, rotation=True, scaling=True): """ Retrieve a transformation filtered. - Args: + Arguments: m (matrix): the reference matrix translation (bool): If true the return matrix will match the translation. rotation (bool): If true the return matrix will match the rotation. @@ -387,7 +387,7 @@ def getRotationFromAxis(in_a, in_b, axis="xy", negate=False): """ Get the matrix rotation from a given axis. - Args: + Arguments: in_a (vector): Axis A in_b (vector): Axis B axis (str): The axis to use for the orientation. Default: "xy" @@ -453,7 +453,7 @@ def getSymmetricalTransform(t, axis="yz", fNegScale=False): """ Get the symmetrical tranformation matrix from a define 2 axis mirror plane. exp:"yz". - Args: + Arguments: t (matrix): The transformation matrix to mirror. axis (str): The mirror plane. fNegScale(bool): This function is not yet implemented. @@ -488,7 +488,7 @@ def resetTransform(node, t=True, r=True, s=True): """ Reset the scale, rotation and translation for a given dagNode. - Args: + Arguments: node(dagNode): The object to reset the transforms. t (bool): If true translation will be reseted. r (bool): If true rotation will be reseted. @@ -520,7 +520,7 @@ def matchWorldTransform(source, target): """ Match 2 dagNode transformations in world space. - Args: + Arguments: source (dagNode): The source dagNode target (dagNode): The target dagNode @@ -535,7 +535,7 @@ def quaternionDotProd(q1, q2): """ Get the dot product of 2 quaternion. - Args: + Arguments: q1 (quaternion): Input quaternion 1. q2 (quaternion): Input quaternion 2. @@ -550,7 +550,7 @@ def quaternionSlerp(q1, q2, blend): """ Get an interpolate quaternion based in slerp function. - Args: + Arguments: q1 (quaternion): Input quaternion 1. q2 (quaternion): Input quaternion 2. blend (float): Blending value. @@ -587,7 +587,7 @@ def convert2TransformMatrix(tm): """ Convert a transformation Matrix or a matrix to a transformation matrix in world space. - Args: + Arguments: tm (matrix): The input matrix. Returns: @@ -605,7 +605,7 @@ def getInterpolateTransformMatrix(t1, t2, blend=.5 ): """ Interpolate 2 matrix. - Args: + Arguments: t1 (matrix): Input matrix 1. t2 (matrix): Input matrix 2. blend (float): The blending value. Default 0.5 diff --git a/scripts/mgear/maya/utils.py b/scripts/mgear/maya/utils.py index 0a31a48..4c78686 100644 --- a/scripts/mgear/maya/utils.py +++ b/scripts/mgear/maya/utils.py @@ -49,7 +49,7 @@ def is_odd(num): """ Check if the number is odd. - Args: + Arguments: num (int): the number Returns: diff --git a/scripts/mgear/maya/vector.py b/scripts/mgear/maya/vector.py index 1ab04b5..60aa756 100644 --- a/scripts/mgear/maya/vector.py +++ b/scripts/mgear/maya/vector.py @@ -45,7 +45,7 @@ def getDistance(v0, v1): """ Get the distance between 2 vectors - Args: + Arguments: v0 (vector): vector A. v1 (vector): vector B. @@ -61,7 +61,7 @@ def getDistance2(obj0, obj1): """ Get the distance between 2 objects. - Args: + Arguments: obj0 (dagNode): Object A obj1 (dagNode): Object B @@ -80,7 +80,7 @@ def linearlyInterpolate(v0, v1, blend=.5): """ Get the vector interpolated between 2 vectors. - Args: + Arguments: v0 (vector): vector A. v1 (vector): vector B. blend (float): Blending value. @@ -101,7 +101,7 @@ def getPlaneNormal(v0, v1, v2): """ Get the normal vector of a plane (Defined by 3 positions). - Args: + Arguments: v0 (vector): First position on the plane. v1 (vector): Second position on the plane. v2 (vector): Third position on the plane. @@ -126,7 +126,7 @@ def getPlaneBiNormal(v0, v1, v2): """ Get the binormal vector of a plane (Defined by 3 positions). - Args: + Arguments: v0 (vector): First position on the plane. v1 (vector): Second position on the plane. v2 (vector): Third position on the plane. @@ -150,7 +150,7 @@ def getTransposedVector(v, position0, position1, inverse=False): """ Get the transposed vector. - Args: + Arguments: v (vector): Input Vector. position0 (vector): Position A. position1 (vector): Position B. @@ -193,7 +193,7 @@ def rotateAlongAxis(v, axis, a): """ Rotate a vector around a given axis defined by other vector. - Args: + Arguments: v (vector): The vector to rotate. axis (vector): The axis to rotate around. a (float): The rotation angle in radians. From c902c175792ceef916fcafd2599fe5a442569ebd Mon Sep 17 00:00:00 2001 From: miquelcampos Date: Mon, 27 Nov 2017 13:01:59 +0900 Subject: [PATCH 102/134] PEP8 #100: mGear: maya modules finish --- scripts/mgear/maya/pyqt.py | 4 + scripts/mgear/maya/transform.py | 359 +++++++++++++++++--------------- scripts/mgear/maya/utils.py | 97 ++++----- scripts/mgear/maya/vector.py | 115 ++++------ 4 files changed, 269 insertions(+), 306 deletions(-) diff --git a/scripts/mgear/maya/pyqt.py b/scripts/mgear/maya/pyqt.py index 82f39ea..1631f82 100644 --- a/scripts/mgear/maya/pyqt.py +++ b/scripts/mgear/maya/pyqt.py @@ -8,6 +8,10 @@ from mgear.vendor.Qt import QtWidgets, QtCompat +# TODO: Delete after finish refactor +# not used in this module, but imported in others +from mGear_pyqt import qt_import + ############################################# # helper Maya pyQt functions ############################################# diff --git a/scripts/mgear/maya/transform.py b/scripts/mgear/maya/transform.py index 43c3bec..f756e53 100644 --- a/scripts/mgear/maya/transform.py +++ b/scripts/mgear/maya/transform.py @@ -1,51 +1,19 @@ -# MGEAR is under the terms of the MIT License +"""Functions to work with matrix and transformations""" -# Copyright (c) 2016 Jeremie Passerin, Miquel Campos - -# Permission is hereby granted, free of charge, to any person obtaining a copy -# of this software and associated documentation files (the "Software"), to deal -# in the Software without restriction, including without limitation the rights -# to use, copy, modify, merge, publish, distribute, sublicense, and/or sell -# copies of the Software, and to permit persons to whom the Software is -# furnished to do so, subject to the following conditions: - -# The above copyright notice and this permission notice shall be included in all -# copies or substantial portions of the Software. - -# THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR -# IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, -# FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE -# AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER -# LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, -# OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE -# SOFTWARE. - -# Author: Jeremie Passerin geerem@hotmail.com www.jeremiepasserin.com -# Author: Miquel Campos hello@miquel-campos.com www.miquel-campos.com -# Date: 2016 / 10 / 10 - -""" -Functions to work with matrix and transformations. -""" - - -############################################# -# GLOBAL -############################################# import math -from pymel import util as pmu -import pymel.core.datatypes as dt -import pymel.core.nodetypes as nt +from pymel import util +from pymel.core import datatypes, nodetypes -import mgear.maya.vector as vec +from . import vector ############################################# # TRANSFORM ############################################# + + def getTranslation(node): - """ - Return the position of the dagNode in worldSpace. + """Return the position of the dagNode in worldSpace. Arguments: node (dagNode): The dagNode to get the translation @@ -55,9 +23,9 @@ def getTranslation(node): """ return node.getTranslation(space="world") + def getTransform(node): - """ - Return the transformation matrix of the dagNode in worldSpace. + """Return the transformation matrix of the dagNode in worldSpace. Arguments: node (dagNode): The dagNode to get the translation @@ -67,13 +35,16 @@ def getTransform(node): """ return node.getMatrix(worldSpace=True) + def getTransformLookingAt(pos, lookat, normal, axis="xy", negate=False): - """ - Return the transformation matrix of the dagNode oriented looking to an specific point. + """Return a transformation mstrix using vector positions. + + Return the transformation matrix of the dagNode oriented looking to + an specific point. Arguments: pos (vector): The position for the transformation - lookat (vector): The aiming position to stablish the orientation. + lookat (vector): The aiming position to stablish the orientation normal (vector): The normal control the transformation roll. axis (str): The 2 axis used for lookat and normal. Default "xy" negate (bool): If true, invert the aiming direction. @@ -81,9 +52,13 @@ def getTransformLookingAt(pos, lookat, normal, axis="xy", negate=False): Returns: matrix: The transformation matrix - >>> t = tra.getTransformLookingAt(self.guide.pos["heel"], self.guide.apos[-4], self.normal, "xz", self.negate) - """ + >>> t = tra.getTransformLookingAt(self.guide.pos["heel"], + self.guide.apos[-4], + self.normal, + "xz", + self.negate) + """ normal.normalize() if negate: @@ -92,9 +67,9 @@ def getTransformLookingAt(pos, lookat, normal, axis="xy", negate=False): a = lookat - pos a.normalize() - c = pmu.cross(a, normal) + c = util.cross(a, normal) c.normalize() - b = pmu.cross(c, a) + b = util.cross(c, a) b.normalize() if axis == "xy": @@ -139,7 +114,7 @@ def getTransformLookingAt(pos, lookat, normal, axis="xy", negate=False): Y = b Z = c - m = dt.Matrix() + m = datatypes.Matrix() m[0] = [X[0], X[1], X[2], 0.0] m[1] = [Y[0], Y[1], Y[2], 0.0] m[2] = [Z[0], Z[1], Z[2], 0.0] @@ -147,9 +122,9 @@ def getTransformLookingAt(pos, lookat, normal, axis="xy", negate=False): return m + def getChainTransform(positions, normal, negate=False): - """ - Get a tranformation list from a positions list and normal. + """Get a tranformation list from a positions list and normal. Arguments: positions(list of vector): List with the chain positions. @@ -157,21 +132,23 @@ def getChainTransform(positions, normal, negate=False): negate (bool): If true invert the chain orientation. returns: - list of matrix: The list containing the transformation matrix for the chain. + list of matrix: The list containing the transformation matrix + for the chain. >>> tra.getChainTransform(self.guide.apos, self.normal, self.negate) - """ + """ # Draw transforms = [] - for i in range(len(positions)-1): - v0 = positions[i-1] + for i in range(len(positions) - 1): + v0 = positions[i - 1] v1 = positions[i] - v2 = positions[i+1] + v2 = positions[i + 1] # Normal Offset if i > 0: - normal = vec.getTransposedVector(normal, [v0, v1], [v1, v2]) + normal = vector.getTransposedVector( + normal, [v0, v1], [v1, v2]) t = getTransformLookingAt(v1, v2, normal, "xz", negate) transforms.append(t) @@ -179,10 +156,8 @@ def getChainTransform(positions, normal, negate=False): return transforms - def getChainTransform2(positions, normal, negate=False): - """ - Get a tranformation list from a positions list and normal. + """Get a tranformation list from a positions list and normal. Note: getChainTransform2 is using the latest position on the chain @@ -193,29 +168,33 @@ def getChainTransform2(positions, normal, negate=False): negate (bool): If true invert the chain orientation. returns: - list of matrix: The list containing the transformation matrix for the chain. + list of matrix: The list containing the transformation matrix + for the chain. - >>> tra.getChainTransform2(self.guide.apos, self.normal, self.negate) - """ + >>> tra.getChainTransform2(self.guide.apos, + self.normal, + self.negate) + """ # Draw transforms = [] for i in range(len(positions)): - if i == len(positions)-1: - v0 = positions[i-1] + if i == len(positions) - 1: + v0 = positions[i - 1] v1 = positions[i] - v2 = positions[i-2] + v2 = positions[i - 2] else: - v0 = positions[i-1] + v0 = positions[i - 1] v1 = positions[i] - v2 = positions[i+1] + v2 = positions[i + 1] # Normal Offset - if i > 0 and i != len(positions)-1: - normal = vec.getTransposedVector(normal, [v0, v1], [v1, v2]) + if i > 0 and i != len(positions) - 1: + normal = vector.getTransposedVector( + normal, [v0, v1], [v1, v2]) - if i == len(positions)-1: + if i == len(positions) - 1: t = getTransformLookingAt(v1, v0, normal, "-xz", negate) else: t = getTransformLookingAt(v1, v2, normal, "xz", negate) @@ -225,8 +204,7 @@ def getChainTransform2(positions, normal, negate=False): def getTransformFromPos(pos): - """ - Create a transformation Matrix from a given position. + """Create a transformation Matrix from a given position. Arguments: pos (vector): Position for the transformation matrix @@ -235,9 +213,9 @@ def getTransformFromPos(pos): matrix: The newly created transformation matrix >>> t = tra.getTransformFromPos(self.guide.pos["root"]) - """ - m = dt.Matrix() + """ + m = datatypes.Matrix() m[0] = [1.0, 0, 0, 0.0] m[1] = [0, 1.0, 0, 0.0] m[2] = [0, 0, 1.0, 0.0] @@ -245,13 +223,14 @@ def getTransformFromPos(pos): return m -def getOffsetPosition(node, offset=[0,0,0]): - """ - Get an offset position from dagNode + +def getOffsetPosition(node, offset=[0, 0, 0]): + """Get an offset position from dagNode Arguments: node (dagNode): The dagNode with the original position. - offset (list of float): Ofsset values for xyz. exp : [1.2, 4.6, 32.78] + offset (list of float): Ofsset values for xyz. + exp : [1.2, 4.6, 32.78] Returns: list of float: the new offset position. @@ -264,26 +243,27 @@ def getOffsetPosition(node, offset=[0,0,0]): self.knee = self.addLoc("knee", self.root, vTemp) """ - offsetVec = dt.Vector(offset[0],offset[1],offset[2]) + offsetVec = datatypes.Vector(offset[0], offset[1], offset[2]) return offsetVec + node.getTranslation(space="world") + def getPositionFromMatrix(in_m): - """ - Get the position values from matrix + """Get the position values from matrix Arguments: in_m (matrix): The input Matrix. Returns: list of float: The position values for xyz. + """ pos = in_m[3][:3] return pos + def setMatrixPosition(in_m, pos): - """ - Set the position for a given matrix + """Set the position for a given matrix Arguments: in_m (matrix): The input Matrix. @@ -295,8 +275,9 @@ def setMatrixPosition(in_m, pos): >>> tnpo = tra.setMatrixPosition(tOld, tra.getPositionFromMatrix(t)) >>> t = tra.setMatrixPosition(t, self.guide.apos[-1]) + """ - m = dt.Matrix() + m = datatypes.Matrix() m[0] = in_m[0] m[1] = in_m[1] m[2] = in_m[2] @@ -304,9 +285,9 @@ def setMatrixPosition(in_m, pos): return m + def setMatrixRotation(m, rot): - """ - Set the rotation for a given matrix + """Set the rotation for a given matrix Arguments: in_m (matrix): The input Matrix. @@ -314,6 +295,7 @@ def setMatrixRotation(m, rot): Returns: matrix: The matrix with the new rotation + """ X = rot[0] Y = rot[1] @@ -325,9 +307,9 @@ def setMatrixRotation(m, rot): return m -def setMatrixScale(m, scl=[1,1,1]): - """ - Set the scale for a given matrix + +def setMatrixScale(m, scl=[1, 1, 1]): + """Set the scale for a given matrix Arguments: in_m (matrix): The input Matrix. @@ -335,47 +317,56 @@ def setMatrixScale(m, scl=[1,1,1]): Returns: matrix: The matrix with the new scale - """ - tm = dt.TransformationMatrix(m) + """ + tm = datatypes.TransformationMatrix(m) tm.setScale(scl, space="world") - m = dt.Matrix(tm) + m = datatypes.Matrix(tm) return m -def getFilteredTransform(m, translation=True, rotation=True, scaling=True): - """ - Retrieve a transformation filtered. +def getFilteredTransform(m, + translation=True, + rotation=True, + scaling=True): + """Retrieve a transformation filtered. Arguments: m (matrix): the reference matrix - translation (bool): If true the return matrix will match the translation. - rotation (bool): If true the return matrix will match the rotation. - scaling (bool): If true the return matrix will match the scaling. + translation (bool): If true the return matrix will match the + translation. + rotation (bool): If true the return matrix will match the + rotation. + scaling (bool): If true the return matrix will match the + scaling. Returns: matrix : The filtered matrix """ - t = dt.Vector(m[3][0],m[3][1],m[3][2]) - x = dt.Vector(m[0][0],m[0][1],m[0][2]) - y = dt.Vector(m[1][0],m[1][1],m[1][2]) - z = dt.Vector(m[2][0],m[2][1],m[2][2]) + t = datatypes.Vector(m[3][0], m[3][1], m[3][2]) + x = datatypes.Vector(m[0][0], m[0][1], m[0][2]) + y = datatypes.Vector(m[1][0], m[1][1], m[1][2]) + z = datatypes.Vector(m[2][0], m[2][1], m[2][2]) - out = dt.Matrix() + out = datatypes.Matrix() if translation: out = setMatrixPosition(out, t) if rotation and scaling: - out = setMatrixRotation(out, [x,y,z]) + out = setMatrixRotation(out, [x, y, z]) elif rotation and not scaling: out = setMatrixRotation(out, [x.normal(), y.normal(), z.normal()]) elif not rotation and scaling: - out = setMatrixRotation(out, [dt.Vector(1,0,0) * x.length(), dt.Vector(0,1,0) * y.length(), dt.Vector(0,0,1) * z.length()]) + out = setMatrixRotation(out, + [datatypes.Vector(1, 0, 0) + * x.length(), datatypes.Vector(0, 1, 0) + * y.length(), datatypes.Vector(0, 0, 1) + * z.length()]) return out @@ -383,9 +374,9 @@ def getFilteredTransform(m, translation=True, rotation=True, scaling=True): # ROTATION ########################################################## + def getRotationFromAxis(in_a, in_b, axis="xy", negate=False): - """ - Get the matrix rotation from a given axis. + """Get the matrix rotation from a given axis. Arguments: in_a (vector): Axis A @@ -399,16 +390,18 @@ def getRotationFromAxis(in_a, in_b, axis="xy", negate=False): Example: .. code-block:: python - x = dt.Vector(0,-1,0) + x = datatypes.Vector(0,-1,0) x = x * tra.getTransform(self.eff_loc) - z = dt.Vector(self.normal.x,self.normal.y,self.normal.z) + z = datatypes.Vector(self.normal.x, + self.normal.y, + self.normal.z) z = z * tra.getTransform(self.eff_loc) m = tra.getRotationFromAxis(x, z, "xz", self.negate) - """ - a = dt.Vector(in_a.x, in_a.y, in_a.z) - b = dt.Vector(in_b.x, in_b.y, in_b.z) - c = dt.Vector() + """ + a = datatypes.Vector(in_a.x, in_a.y, in_a.z) + b = datatypes.Vector(in_b.x, in_b.y, in_b.z) + c = datatypes.Vector() if negate: a *= -1 @@ -444,14 +437,17 @@ def getRotationFromAxis(in_a, in_b, axis="xy", negate=False): y = b x = -c - m = dt.Matrix() - setMatrixRotation(m, [x,y,z]) + m = datatypes.Matrix() + setMatrixRotation(m, [x, y, z]) return m + def getSymmetricalTransform(t, axis="yz", fNegScale=False): - """ - Get the symmetrical tranformation matrix from a define 2 axis mirror plane. exp:"yz". + """Get the symmetrical tranformation + + Get the symmetrical tranformation matrix from a define 2 axis mirror + plane. exp:"yz". Arguments: t (matrix): The transformation matrix to mirror. @@ -463,30 +459,30 @@ def getSymmetricalTransform(t, axis="yz", fNegScale=False): """ if axis == "yz": - mirror = dt.TransformationMatrix( -1,0,0,0, - 0,1,0,0, - 0,0,1,0, - 0,0,0,1) + mirror = datatypes.TransformationMatrix(-1, 0, 0, 0, + 0, 1, 0, 0, + 0, 0, 1, 0, + 0, 0, 0, 1) if axis == "xy": - mirror = dt.TransformationMatrix( 1,0,0,0, - 0,1,0,0, - 0,0,-1,0, - 0,0,0,1) + mirror = datatypes.TransformationMatrix(1, 0, 0, 0, + 0, 1, 0, 0, + 0, 0, -1, 0, + 0, 0, 0, 1) if axis == "zx": - mirror = dt.TransformationMatrix( 1,0,0,0, - 0,-1,0,0, - 0,0,1,0, - 0,0,0,1) + mirror = datatypes.TransformationMatrix(1, 0, 0, 0, + 0, -1, 0, 0, + 0, 0, 1, 0, + 0, 0, 0, 1) t *= mirror - #TODO: getSymmetricalTransform: add freeze negative scaling procedure. + # TODO: add freeze negative scaling procedure. return t + def resetTransform(node, t=True, r=True, s=True): - """ - Reset the scale, rotation and translation for a given dagNode. + """Reset the scale, rotation and translation for a given dagNode. Arguments: node(dagNode): The object to reset the transforms. @@ -498,27 +494,37 @@ def resetTransform(node, t=True, r=True, s=True): None """ + trsDic = {"tx": 0, + "ty": 0, + "tz": 0, + "rx": 0, + "ry": 0, + "rz": 0, + "sx": 1, + "sy": 1, + "sz": 1} - trsDic = {"tx":0, "ty":0, "tz":0, "rx":0, "ry":0, "rz":0, "sx":1, "sy":1, "sz":1} tAxis = ["tx", "ty", "tz"] rAxis = ["rx", "ry", "rz"] sAxis = ["sx", "sy", "sz"] axis = [] - if t: axis = axis + tAxis - if r: axis = axis + rAxis - if s: axis = axis + sAxis + if t: + axis = axis + tAxis + if r: + axis = axis + rAxis + if s: + axis = axis + sAxis for a in axis: - try: node.attr(a).set(trsDic[a]) - except: pass - - + try: + node.attr(a).set(trsDic[a]) + except Exception: + pass def matchWorldTransform(source, target): - """ - Match 2 dagNode transformations in world space. + """Match 2 dagNode transformations in world space. Arguments: source (dagNode): The source dagNode @@ -526,14 +532,14 @@ def matchWorldTransform(source, target): Returns: None - """ + """ sWM = source.getMatrix(worldSpace=True) target.setMatrix(sWM, worldSpace=True) + def quaternionDotProd(q1, q2): - """ - Get the dot product of 2 quaternion. + """Get the dot product of 2 quaternion. Arguments: q1 (quaternion): Input quaternion 1. @@ -541,14 +547,14 @@ def quaternionDotProd(q1, q2): Returns: quaternion: The dot proct quaternion. - """ + """ dot = q1.x * q2.x + q1.y * q2.y + q1.z * q2.z + q1.w * q2.w return dot + def quaternionSlerp(q1, q2, blend): - """ - Get an interpolate quaternion based in slerp function. + """Get an interpolate quaternion based in slerp function. Arguments: q1 (quaternion): Input quaternion 1. @@ -561,8 +567,11 @@ def quaternionSlerp(q1, q2, blend): Example: .. code-block:: python - q = quaternionSlerp(dt.Quaternion(t1.getRotationQuaternion()), - dt.Quaternion(t2.getRotationQuaternion()), blend) + q = quaternionSlerp(datatypes.Quaternion( + t1.getRotationQuaternion()), + datatypes.Quaternion( + t2.getRotationQuaternion()), blend) + """ dot = quaternionDotProd(q1, q2) if dot < 0.0: @@ -578,32 +587,35 @@ def quaternionSlerp(q1, q2, blend): w1 = 1.0 - blend w2 = blend - result = dt.Quaternion(q1).scaleIt(w1) + dt.Quaternion(q2).scaleIt(w2) + result = (datatypes.Quaternion(q1).scaleIt(w1) + + datatypes.Quaternion(q2).scaleIt(w2)) return result def convert2TransformMatrix(tm): - """ - Convert a transformation Matrix or a matrix to a transformation matrix in world space. + """Convert a transformation Matrix + + Convert a transformation Matrix or a matrix to a transformation + matrix in world space. Arguments: tm (matrix): The input matrix. Returns: matrix: The transformation matrix in worldSpace + """ - if isinstance(tm, nt.Transform): - tm = dt.TransformationMatrix(tm.getMatrix(worldSpace=True)) - if isinstance(tm, dt.Matrix): - tm = dt.TransformationMatrix(tm) + if isinstance(tm, nodetypes.Transform): + tm = datatypes.TransformationMatrix(tm.getMatrix(worldSpace=True)) + if isinstance(tm, datatypes.Matrix): + tm = datatypes.TransformationMatrix(tm) return tm -def getInterpolateTransformMatrix(t1, t2, blend=.5 ): - """ - Interpolate 2 matrix. +def getInterpolateTransformMatrix(t1, t2, blend=.5): + """Interpolate 2 matrix. Arguments: t1 (matrix): Input matrix 1. @@ -613,10 +625,12 @@ def getInterpolateTransformMatrix(t1, t2, blend=.5 ): Returns: matrix: The newly interpolated transformation matrix. - >>> t = tra.getInterpolateTransformMatrix(self.fk_ctl[0], self.tws1A_npo, .3333) - """ + >>> t = tra.getInterpolateTransformMatrix(self.fk_ctl[0], + self.tws1A_npo, + .3333) - #check if the input transforms are transformMatrix + """ + # check if the input transforms are transformMatrix t1 = convert2TransformMatrix(t1) t2 = convert2TransformMatrix(t2) @@ -626,20 +640,23 @@ def getInterpolateTransformMatrix(t1, t2, blend=.5 ): return t1 # translate - pos = vec.linearlyInterpolate(t1.getTranslation(space="world"), t2.getTranslation(space="world"), blend) + pos = vector.linearlyInterpolate(t1.getTranslation(space="world"), + t2.getTranslation(space="world"), + blend) # scale - scaleA = dt.Vector(*t1.getScale(space="world")) - scaleB = dt.Vector(*t2.getScale(space="world")) - + scaleA = datatypes.Vector(*t1.getScale(space="world")) + scaleB = datatypes.Vector(*t2.getScale(space="world")) - vs = vec.linearlyInterpolate(scaleA, scaleB, blend) + vs = vector.linearlyInterpolate(scaleA, scaleB, blend) # rotate - q = quaternionSlerp(dt.Quaternion(t1.getRotationQuaternion()), dt.Quaternion(t2.getRotationQuaternion()), blend) + q = quaternionSlerp(datatypes.Quaternion(t1.getRotationQuaternion()), + datatypes.Quaternion(t2.getRotationQuaternion()), + blend) # out - result = dt.TransformationMatrix() + result = datatypes.TransformationMatrix() result.setTranslation(pos, space="world") result.setRotationQuaternion(q.x, q.y, q.z, q.w) diff --git a/scripts/mgear/maya/utils.py b/scripts/mgear/maya/utils.py index 4c78686..a4c9b0a 100644 --- a/scripts/mgear/maya/utils.py +++ b/scripts/mgear/maya/utils.py @@ -1,35 +1,6 @@ -# MGEAR is under the terms of the MIT License - -# Copyright (c) 2016 Jeremie Passerin, Miquel Campos - -# Permission is hereby granted, free of charge, to any person obtaining a copy -# of this software and associated documentation files (the "Software"), to deal -# in the Software without restriction, including without limitation the rights -# to use, copy, modify, merge, publish, distribute, sublicense, and/or sell -# copies of the Software, and to permit persons to whom the Software is -# furnished to do so, subject to the following conditions: - -# The above copyright notice and this permission notice shall be included in all -# copies or substantial portions of the Software. - -# THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR -# IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, -# FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE -# AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER -# LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, -# OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE -# SOFTWARE. - -# Author: Jeremie Passerin geerem@hotmail.com www.jeremiepasserin.com -# Author: Miquel Campos hello@miquel-campos.com www.miquel-campos.com -# Date: 2016 / 10 / 10 - -""" -Utilitie functions. -""" -########################################################## -# GLOBAL -########################################################## +"""Utilitie functions""" + + import os import sys from functools import wraps @@ -46,8 +17,7 @@ ########################################################## def is_odd(num): - """ - Check if the number is odd. + """Check if the number is odd. Arguments: num (int): the number @@ -58,9 +28,10 @@ def is_odd(num): return num % 2 -def gatherCustomModuleDirectories(envvarkey, defaultModulePath, component=False): - """ - returns component directory +def gatherCustomModuleDirectories(envvarkey, + defaultModulePath, + component=False): + """returns component directory Arguments: envvarkey: The environment variable key name, that is searched @@ -68,14 +39,15 @@ def gatherCustomModuleDirectories(envvarkey, defaultModulePath, component=False) Returns: Dict{string: []string} - """ + """ results = {} # default path if not os.path.exists(defaultModulePath): message = "= GEAR RIG SYSTEM ====== notify:" - message += "\n default module directory is not found at {}".format(defaultModulePath) + message += "\n default module directory is not " \ + "found at {}".format(defaultModulePath) message += "\n\n check your mGear installation" message += " or call your system administrator." message += "\n" @@ -85,7 +57,6 @@ def gatherCustomModuleDirectories(envvarkey, defaultModulePath, component=False) modules = sorted(os.listdir(defaultModulePath)) results[defaultModulePath] = modules - # from environment variables envvarval = os.environ.get(envvarkey, "") for path in envvarval.split(os.pathsep): @@ -96,8 +67,10 @@ def gatherCustomModuleDirectories(envvarkey, defaultModulePath, component=False) init_py_path = os.path.join(path, "__init__.py") if not os.path.exists(init_py_path): message = "= GEAR RIG SYSTEM ====== notify:" - message += "\n __init__.py for custom component not found {}".format(init_py_path) - message += "\n\n check your module definition file or environment variable 'MGEAR_COMPONENTS_PATH'" + message += "\n __init__.py for custom component not " \ + "found {}".format(init_py_path) + message += "\n\n check your module definition file or " \ + "environment variable 'MGEAR_COMPONENTS_PATH'" message += " or call your system administrator." message += "\n" mgear.log(message, mgear.sev_error) @@ -108,12 +81,12 @@ def gatherCustomModuleDirectories(envvarkey, defaultModulePath, component=False) results[path] = modules - return results def getModuleBasePath(directories, moduleName): - # search component path + """search component path""" + for basepath, modules in directories.iteritems(): if moduleName in modules: # moduleBasePath = os.path.basename(basepath) @@ -122,23 +95,30 @@ def getModuleBasePath(directories, moduleName): else: moduleBasePath = "" message = "= GEAR RIG SYSTEM ======" - message += "component base directory not found for {}".format(moduleName) + message += "component base directory not found " \ + " for {}".format(moduleName) mgear.log(message, mgear.sev_error) return moduleBasePath -def importFromStandardOrCustomDirectories(directories, defaultFormatter, customFormatter, moduleName): - """ - return imported module +def importFromStandardOrCustomDirectories(directories, + defaultFormatter, + customFormatter, + moduleName): + """Return imported module Arguments: - directories: the directories for search in. this is got by gatherCustomModuleDirectories - defaultFormatter: this represents module structure for default module. for example "mgear.maya.shifter.component.{}" - customFormatter: this represents module structure for custom module. for example "{0}.{1}" + directories: the directories for search in. this is got by + gatherCustomModuleDirectories + defaultFormatter: this represents module structure for default + module. for example "mgear.maya.shifter.component.{}" + customFormatter: this represents module structure for custom + module. for example "{0}.{1}" Returns: module: imported module + """ # Import module and get class try: @@ -158,10 +138,12 @@ def importFromStandardOrCustomDirectories(directories, defaultFormatter, customF # Decorators # ----------------------------------------------------------------------------- def viewport_off(func): - # type: (function) -> function - """ - Decorator - turn off Maya display while func is running. + """Decorator - Turn off Maya display while func is running. + if func will fail, the error will be raised after. + + type: (function) -> function + """ @wraps(func) def wrap(*args, **kwargs): @@ -184,9 +166,10 @@ def wrap(*args, **kwargs): def one_undo(func): - # type: (function) -> function - """ - Decorator - guarantee close chunk. + """Decorator - guarantee close chunk. + + type: (function) -> function + """ @wraps(func) def wrap(*args, **kwargs): diff --git a/scripts/mgear/maya/vector.py b/scripts/mgear/maya/vector.py index 60aa756..07ed5de 100644 --- a/scripts/mgear/maya/vector.py +++ b/scripts/mgear/maya/vector.py @@ -1,49 +1,17 @@ -# MGEAR is under the terms of the MIT License +"""Functions to work with vectors""" -# Copyright (c) 2016 Jeremie Passerin, Miquel Campos - -# Permission is hereby granted, free of charge, to any person obtaining a copy -# of this software and associated documentation files (the "Software"), to deal -# in the Software without restriction, including without limitation the rights -# to use, copy, modify, merge, publish, distribute, sublicense, and/or sell -# copies of the Software, and to permit persons to whom the Software is -# furnished to do so, subject to the following conditions: - -# The above copyright notice and this permission notice shall be included in all -# copies or substantial portions of the Software. - -# THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR -# IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, -# FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE -# AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER -# LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, -# OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE -# SOFTWARE. - -# Author: Jeremie Passerin geerem@hotmail.com www.jeremiepasserin.com -# Author: Miquel Campos hello@miquel-campos.com www.miquel-campos.com -# Date: 2016 / 10 / 10 - -""" -Functions to work with vectors. -""" - -############################################# -# GLOBAL -############################################# import math -import maya.OpenMaya as om +import maya.OpenMaya as OpenMaya + +from pymel.core import datatypes -import pymel.core.datatypes as dt -import pymel.core as pm ############################################# # VECTOR OPERATIONS ############################################# def getDistance(v0, v1): - """ - Get the distance between 2 vectors + """Get the distance between 2 vectors Arguments: v0 (vector): vector A. @@ -51,6 +19,7 @@ def getDistance(v0, v1): Returns: float: Distance length. + """ v = v1 - v0 @@ -58,8 +27,7 @@ def getDistance(v0, v1): def getDistance2(obj0, obj1): - """ - Get the distance between 2 objects. + """Get the distance between 2 objects. Arguments: obj0 (dagNode): Object A @@ -67,6 +35,7 @@ def getDistance2(obj0, obj1): Returns: float: Distance length + """ v0 = obj0.getTranslation(space="world") v1 = obj1.getTranslation(space="world") @@ -77,8 +46,7 @@ def getDistance2(obj0, obj1): def linearlyInterpolate(v0, v1, blend=.5): - """ - Get the vector interpolated between 2 vectors. + """Get the vector interpolated between 2 vectors. Arguments: v0 (vector): vector A. @@ -89,7 +57,6 @@ def linearlyInterpolate(v0, v1, blend=.5): vector: The interpolated vector. """ - vector = v1 - v0 vector *= blend vector += v0 @@ -98,8 +65,7 @@ def linearlyInterpolate(v0, v1, blend=.5): def getPlaneNormal(v0, v1, v2): - """ - Get the normal vector of a plane (Defined by 3 positions). + """Get the normal vector of a plane (Defined by 3 positions). Arguments: v0 (vector): First position on the plane. @@ -110,7 +76,6 @@ def getPlaneNormal(v0, v1, v2): vector: The normal. """ - vector0 = v1 - v0 vector1 = v2 - v0 vector0.normalize() @@ -123,8 +88,7 @@ def getPlaneNormal(v0, v1, v2): def getPlaneBiNormal(v0, v1, v2): - """ - Get the binormal vector of a plane (Defined by 3 positions). + """Get the binormal vector of a plane (Defined by 3 positions). Arguments: v0 (vector): First position on the plane. @@ -135,7 +99,6 @@ def getPlaneBiNormal(v0, v1, v2): vector: The binormal. """ - normal = getPlaneNormal(v0, v1, v2) vector0 = v1 - v0 @@ -147,8 +110,7 @@ def getPlaneBiNormal(v0, v1, v2): def getTransposedVector(v, position0, position1, inverse=False): - """ - Get the transposed vector. + """Get the transposed vector. Arguments: v (vector): Input Vector. @@ -159,14 +121,13 @@ def getTransposedVector(v, position0, position1, inverse=False): Returns: vector: The transposed vector. - Khan Academy: - `Transposed Vector `_ - - - >>> normal = vec.getTransposedVector(self.normal, [self.guide.apos[0], self.guide.apos[1]], [self.guide.apos[-2], self.guide.apos[-1]]) + >>> normal = vec.getTransposedVector(self.normal, + [self.guide.apos[0], + self.guide.apos[1]], + [self.guide.apos[-2], + self.guide.apos[-1]]) """ - v0 = position0[1] - position0[0] v0.normalize() @@ -190,52 +151,50 @@ def getTransposedVector(v, position0, position1, inverse=False): def rotateAlongAxis(v, axis, a): - """ - Rotate a vector around a given axis defined by other vector. + """Rotate a vector around a given axis defined by other vector. Arguments: v (vector): The vector to rotate. axis (vector): The axis to rotate around. a (float): The rotation angle in radians. + """ sa = math.sin(a / 2.0) ca = math.cos(a / 2.0) - q1 = om.MQuaternion(v.x, v.y, v.z, 0) - q2 = om.MQuaternion(axis.x * sa, axis.y * sa, axis.z * sa, ca) - q2n = om.MQuaternion(-axis.x * sa, -axis.y * sa, -axis.z * sa, ca) + q1 = OpenMaya.MQuaternion(v.x, v.y, v.z, 0) + q2 = OpenMaya.MQuaternion(axis.x * sa, axis.y * sa, axis.z * sa, ca) + q2n = OpenMaya.MQuaternion(-axis.x * sa, -axis.y * sa, -axis.z * sa, ca) q = q2 * q1 q *= q2n - out = om.MVector(q.x, q.y, q.z) + out = OpenMaya.MVector(q.x, q.y, q.z) return out - ########################################################## # CLASS ########################################################## -# ======================================================== class Blade(object): - """ - The Blade object for shifter guides. - """ + """The Blade object for shifter guides""" - def __init__(self, t=dt.Matrix()): + def __init__(self, t=datatypes.Matrix()): self.transform = t - d = [t.data[j][i] for j in range(len(t.data)) for i in range(len(t.data[0])) ] + d = [t.data[j][i] + for j in range(len(t.data)) + for i in range(len(t.data[0]))] - m = om.MMatrix() - om.MScriptUtil.createMatrixFromList(d, m) - m = om.MTransformationMatrix(m) + m = OpenMaya.MMatrix() + OpenMaya.MScriptUtil.createMatrixFromList(d, m) + m = OpenMaya.MTransformationMatrix(m) - x = om.MVector(1,0,0).rotateBy(m.rotation()) - y = om.MVector(0,1,0).rotateBy(m.rotation()) - z = om.MVector(0,0,1).rotateBy(m.rotation()) + x = OpenMaya.MVector(1, 0, 0).rotateBy(m.rotation()) + y = OpenMaya.MVector(0, 1, 0).rotateBy(m.rotation()) + z = OpenMaya.MVector(0, 0, 1).rotateBy(m.rotation()) - self.x = dt.Vector(x.x, x.y, x.z) - self.y = dt.Vector(y.x, y.y, y.z) - self.z = dt.Vector(z.x, z.y, z.z) + self.x = datatypes.Vector(x.x, x.y, x.z) + self.y = datatypes.Vector(y.x, y.y, y.z) + self.z = datatypes.Vector(z.x, z.y, z.z) From dd13499ac62c21abe4e75c49caa9662fd97598de Mon Sep 17 00:00:00 2001 From: miquelcampos Date: Mon, 27 Nov 2017 15:39:30 +0900 Subject: [PATCH 103/134] PEP8 #100 Rigbits: __init__.py refactor --- scripts/mgear/maya/rigbits/__init__.py | 415 ++++++++++++++----------- 1 file changed, 234 insertions(+), 181 deletions(-) diff --git a/scripts/mgear/maya/rigbits/__init__.py b/scripts/mgear/maya/rigbits/__init__.py index ed63449..af7b1be 100644 --- a/scripts/mgear/maya/rigbits/__init__.py +++ b/scripts/mgear/maya/rigbits/__init__.py @@ -1,49 +1,23 @@ -# MGEAR is under the terms of the MIT License - -# Copyright (c) 2016 Jeremie Passerin, Miquel Campos - -# Permission is hereby granted, free of charge, to any person obtaining a copy -# of this software and associated documentation files (the "Software"), to deal -# in the Software without restriction, including without limitation the rights -# to use, copy, modify, merge, publish, distribute, sublicense, and/or sell -# copies of the Software, and to permit persons to whom the Software is -# furnished to do so, subject to the following conditions: - -# The above copyright notice and this permission notice shall be included in all -# copies or substantial portions of the Software. - -# THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR -# IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, -# FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE -# AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER -# LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, -# OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE -# SOFTWARE. - -# Author: Jeremie Passerin geerem@hotmail.com www.jeremiepasserin.com -# Author: Miquel Campos hello@miquel-campos.com www.miquel-campos.com -# Date: 2016 / 10 / 10 - import pymel.core as pm -import pymel.core.datatypes as dt +from pymel.core import datatypes from pymel import util as pmu import mgear -import mgear.maya.icon as ic -import mgear.maya.applyop as aop -import mgear.maya.node as nod -import mgear.maya.transform as tra -import mgear.maya.primitive as pri -import mgear.maya.meshNavigation as mnav import mgear.string +from mgear.maya import icon, applyop, node, transform +from mgear.maya import primitive, meshNavigation def addNPO(objs=None, *args): - """ - Add a transform node as a parent and in the same pose of each of the selected objects. - This way neutralize the local transfromation values. - NPO stands for "neutral position" terminology from the all mighty Softimage ;) + """Add a transform node as a neutral pose + + Add a transform node as a parent and in the same pose of each of the + selected objects. This way neutralize the local transfromation + values. + NPO stands for "neutral position" terminology from the all mighty + Softimage ;) + """ npoList = [] @@ -53,7 +27,10 @@ def addNPO(objs=None, *args): objs = [objs] for obj in objs: oParent = obj.getParent() - oTra = pm.createNode("transform", n= obj.name() + "_npo", p=oParent, ss=True) + oTra = pm.createNode("transform", + n=obj.name() + "_npo", + p=oParent, + ss=True) oTra.setTransformation(obj.getMatrix()) pm.parent(obj, oTra) npoList.append(oTra) @@ -62,73 +39,86 @@ def addNPO(objs=None, *args): def selectDeformers(*args): - """ - Select the deformers from the object skinCluster. - """ + """Select the deformers from the object skinCluster""" + oSel = pm.selected()[0] oColl = pm.skinCluster(oSel, query=True, influence=True) pm.select(oColl) -#Icon creator -def createCTL(type = "square", child=False, *args): - """ - Create a control for each selected object. The newly create control can be parent or child of the object. +# Icon creator +def createCTL(type="square", child=False, *args): + """Create a control for each selected object. + + The newly create control can be parent or child of the object. Args: type (str): The shape of the control. - child (bool): if True, the control will be created as a child of the object. + child (bool): if True, the control will be created as a + child of the object. + """ - iconList =[] + iconList = [] if child: if len(pm.selected()) > 0: for x in pm.selected(): - oChilds = [item for item in x.listRelatives(ad=True, type="transform") if item.longName().split("|")[-2] == x.name()] - - icon = ic.create(None, x.name() + "_ctl",None, [1, 0, 0], type) - iconList.append(icon) - icon.setTransformation(x.getMatrix(worldSpace=True)) - pm.parent(icon, x) + oChilds = [item for item + in x.listRelatives(ad=True, type="transform") + if item.longName().split("|")[-2] == x.name()] + + o_icon = icon.create( + None, x.name() + "_ctl", None, [1, 0, 0], type) + iconList.append(o_icon) + o_icon.setTransformation(x.getMatrix(worldSpace=True)) + pm.parent(o_icon, x) for child in oChilds: - pm.parent(child, icon) + pm.parent(child, o_icon) else: - icon = ic.create(None, type + "_ctl", pm.datatypes.Matrix(), [1, 0, 0], type) - iconList.append(icon) + o_icon = icon.create( + None, type + "_ctl", datatypes.Matrix(), [1, 0, 0], type) + iconList.append(o_icon) else: if len(pm.selected()) > 0: for x in pm.selected(): oParent = x.getParent() - icon = ic.create(oParent, x.name() + "_ctl", x.getMatrix(), [1, 0, 0], type) - iconList.append(icon) - icon.setTransformation(x.getMatrix()) - pm.parent(x, icon) + o_icon = icon.create(oParent, + x.name() + "_ctl", + x.getMatrix(), + [1, 0, 0], + type) + iconList.append(o_icon) + o_icon.setTransformation(x.getMatrix()) + pm.parent(x, o_icon) else: - icon = ic.create(None, type + "_ctl", pm.datatypes.Matrix(), [1, 0, 0], type) - iconList.append(icon) + o_icon = icon.create( + None, type + "_ctl", datatypes.Matrix(), [1, 0, 0], type) + iconList.append(o_icon) try: defSet = pm.PyNode("rig_controllers_grp") for ico in iconList: pm.sets(defSet, add=ico) - except: + except TypeError: print "not rig_controllers_grp found" pass def addJnt(obj=False, parent=False, noReplace=False, grp=None, *args): - - """ - Create one joint for each selected object. + """Create one joint for each selected object. Args: - obj (bool or dagNode, optional): The object to drive the new joint. If False will use the current selection. - parent (bool or dagNode, optional): The parent for the joint. If False will try to parent to jnt_org. - If jnt_org doesn't exist will parent the joint under the obj - noReplace (bool, optional): If True will add the extension "_jnt" to the new joint name - grp (pyNode or None, optional): The set to add the new joint. If none will use "rig_deformers_grp" + obj (bool or dagNode, optional): The object to drive the new + joint. If False will use the current selection. + parent (bool or dagNode, optional): The parent for the joint. + If False will try to parent to jnt_org. If jnt_org doesn't + exist will parent the joint under the obj + noReplace (bool, optional): If True will add the extension + "_jnt" to the new joint name + grp (pyNode or None, optional): The set to add the new joint. + If none will use "rig_deformers_grp" *args: Maya's dummy Returns: @@ -144,14 +134,14 @@ def addJnt(obj=False, parent=False, noReplace=False, grp=None, *args): if not parent: try: oParent = pm.PyNode("jnt_org") - except: + except TypeError: oParent = obj else: oParent = parent if noReplace: - jntName = "_".join(obj.name().split("_"))+"_jnt" + jntName = "_".join(obj.name().split("_")) + "_jnt" else: - jntName = "_".join(obj.name().split("_")[:-1])+"_jnt" + jntName = "_".join(obj.name().split("_")[:-1]) + "_jnt" jnt = pm.createNode("joint", n=jntName) if grp: @@ -160,7 +150,7 @@ def addJnt(obj=False, parent=False, noReplace=False, grp=None, *args): try: defSet = pm.PyNode("rig_deformers_grp") pm.sets(defSet, add=jnt) - except: + except TypeError: pm.sets(n="rig_deformers_grp") defSet = pm.PyNode("rig_deformers_grp") pm.sets(defSet, add=jnt) @@ -169,12 +159,14 @@ def addJnt(obj=False, parent=False, noReplace=False, grp=None, *args): jnt.setAttr("jointOrient", 0, 0, 0) try: - mulmat_node = nod.createMultMatrixNode(obj + ".worldMatrix", jnt + ".parentInverseMatrix") - dm_node = nod.createDecomposeMatrixNode(mulmat_node+".matrixSum") - pm.connectAttr(dm_node+".outputTranslate", jnt+".t") - pm.connectAttr(dm_node+".outputRotate", jnt+".r") - pm.connectAttr(dm_node+".outputScale", jnt+".s") - except: + mulmat_node = node.createMultMatrixNode( + obj + ".worldMatrix", jnt + ".parentInverseMatrix") + dm_node = node.createDecomposeMatrixNode( + mulmat_node + ".matrixSum") + pm.connectAttr(dm_node + ".outputTranslate", jnt + ".t") + pm.connectAttr(dm_node + ".outputRotate", jnt + ".r") + pm.connectAttr(dm_node + ".outputScale", jnt + ".s") + except RuntimeError: for axis in ["tx", "ty", "tz", "rx", "ry", "rz"]: jnt.attr(axis).set(0.0) @@ -182,19 +174,18 @@ def addJnt(obj=False, parent=False, noReplace=False, grp=None, *args): def duplicateSym(*args): - """ - Duplicate one dag hierarchy to/from X/-X renaming "L" to "R" - """ + """Duplicate one dag hierarchy to/from X/-X renaming "L" to "R" """ + oSelection = pm.selected() if oSelection: oSel = oSelection[0] oTarget = pm.duplicate()[0] t = oSel.getTransformation() - t = tra.getSymmetricalTransform(t) + t = transform.getSymmetricalTransform(t) oTarget.setTransformation(t) - #Quick rename + # Quick rename pm.select(oTarget, hi=True) for x in pm.selected(): @@ -205,35 +196,40 @@ def duplicateSym(*args): def matchWorldXform(*args): - """ - Align 2 selected objects in world space. - """ - if len(pm.selected()) <2: - mgear.log( "2 objects or more must be selected. Source and Targets transform", mgear.sev_warning) + """Align 2 selected objects in world space""" + + if len(pm.selected()) < 2: + mgear.log("2 objects or more must be selected. Source and Targets " + "transform", mgear.sev_warning) else: source = pm.selected()[0] for target in pm.selected()[1:]: - tra.matchWorldTransform(source, target) + transform.matchWorldTransform(source, target) + def alignToPointsLoop(points=None, loc=None, name=None, *args): - """ - Create space locator align to the plain define by at less 3 vertex + """Create space locator align to the plain define by at less 3 vertex Args: - points (None or vertex list, optional): The reference vertex to align the ref locator + points (None or vertex list, optional): The reference vertex to align + the ref locator loc (None or dagNode, optional): If none will create a new locator name (None or string, optional): Name of the new locator *args: Description Returns: TYPE: Description - """ + """ if not points: oSel = pm.selected(fl=True) - if not oSel or len(oSel) < 3 or str(type(oSel[0])) != "": - pm.displayWarning("We need to select a points loop, with at less 3 or more points") + checkType = "" + if (not oSel + or len(oSel) < 3 + or str(type(oSel[0])) != checkType): + pm.displayWarning("We need to select a points loop, with at " + "less 3 or more points") return else: points = oSel @@ -243,29 +239,31 @@ def alignToPointsLoop(points=None, loc=None, name=None, *args): loc = pm.spaceLocator(n=name) oLen = len(points) - wPos = [0,0,0] + wPos = [0, 0, 0] for x in points: pos = x.getPosition(space="world") wPos[0] += pos[0] wPos[1] += pos[1] wPos[2] += pos[2] - centerPosition = dt.Vector([wPos[0]/oLen, wPos[1]/oLen, wPos[2]/oLen ]) - + centerPosition = datatypes.Vector([wPos[0] / oLen, + wPos[1] / oLen, + wPos[2] / oLen]) - lookat = dt.Vector(points[0].getPosition(space="world")) + lookat = datatypes.Vector(points[0].getPosition(space="world")) # NORMAL - a = lookat - centerPosition + a = lookat - centerPosition a.normalize() - nextV = dt.Vector(points[1].getPosition(space="world")) - b = nextV - centerPosition + nextV = datatypes.Vector(points[1].getPosition(space="world")) + b = nextV - centerPosition b.normalize() normal = pmu.cross(b, a) normal.normalize() - trans = tra.getTransformLookingAt(centerPosition,lookat, normal, axis="xy", negate=False) + trans = transform.getTransformLookingAt( + centerPosition, lookat, normal, axis="xy", negate=False) loc.setTransformation(trans) @@ -277,18 +275,20 @@ def connectWorldTransform(source, target): source (dagNode): Source dagNode. target (dagNode): target dagNode. """ - mulmat_node = nod.createMultMatrixNode(source + ".worldMatrix", target + ".parentInverseMatrix") - dm_node = nod.createDecomposeMatrixNode(mulmat_node+".matrixSum") - pm.connectAttr(dm_node+".outputTranslate", target+".t") - pm.connectAttr(dm_node+".outputRotate", target+".r") - pm.connectAttr(dm_node+".outputScale", target+".s") + mulmat_node = node.createMultMatrixNode(source + ".worldMatrix", + target + ".parentInverseMatrix") + dm_node = node.createDecomposeMatrixNode(mulmat_node + ".matrixSum") + pm.connectAttr(dm_node + ".outputTranslate", target + ".t") + pm.connectAttr(dm_node + ".outputRotate", target + ".r") + pm.connectAttr(dm_node + ".outputScale", target + ".s") + def connectLocalTransform(objects=None, s=True, r=True, t=True, *args): - """ - Connect scale, rotatio and translation. + """Connect scale, rotatio and translation. Args: - objects (None or list of dagNode, optional): If None will use the current selection. + objects (None or list of dagNode, optional): If None will use the + current selection. s (bool, optional): If True will connect the local scale r (bool, optional): If True will connect the local rotation t (bool, optional): If True will connect the local translation @@ -299,7 +299,7 @@ def connectLocalTransform(objects=None, s=True, r=True, t=True, *args): source = objects[0] targets = objects[1:] - else : + else: source = pm.selected()[0] targets = pm.selected()[1:] @@ -313,13 +313,18 @@ def connectLocalTransform(objects=None, s=True, r=True, t=True, *args): else: pm.displayWarning("Please at less select 2 objects. Source + target/s") + def connectUserDefinedChannels(source, targets): - """ - Connects the user defined channels between 2 objects with the same channels. Usually a copy of the same object. + """Connects the user defined channels + + Connects the user defined channels between 2 objects with the same + channels. Usually a copy of the same object. Args: source (dagNode): The dagNode with the source user defined channels - targets (list of dagNode): The list of dagNodes with the same user defined channels to be connected. + targets (list of dagNode): The list of dagNodes with the same user + defined channels to be connected. + """ udc = source.listAttr(ud=True) if not isinstance(targets, list): @@ -328,8 +333,10 @@ def connectUserDefinedChannels(source, targets): for t in targets: try: pm.connectAttr(c, t.attr(c.name().split(".")[-1])) - except: - pm.displayWarning("%s don't have contrapart channel on %s"%(c, t)) + except RuntimeError: + pm.displayWarning("%s don't have contrapart channel " + "on %s" % (c, t)) + def connectInvertSRT(source, target, srt="srt", axis="xyz"): """Connect the locat transformations with inverted values. @@ -337,8 +344,9 @@ def connectInvertSRT(source, target, srt="srt", axis="xyz"): Args: source (dagNode): The source driver dagNode target (dagNode): The target driven dagNode - srt (string, optional): String value for the scale(s), rotate(r), translation(t). Default - value is "srt". Posible values "s", "r", "t" or any combination + srt (string, optional): String value for the scale(s), rotate(r), + translation(t). Default value is "srt". Posible values "s", "r", + "t" or any combination axis (string, optional): String value for the axis. Default value is "xyz". Posible values "x", "y", "z" or any combination """ @@ -347,30 +355,33 @@ def connectInvertSRT(source, target, srt="srt", axis="xyz"): invList = [] targetList = [] for a in axis: - soureList.append(source.attr(t+a)) + soureList.append(source.attr(t + a)) invList.append(-1) - targetList.append(target.attr(t+a)) + targetList.append(target.attr(t + a)) if soureList: - nod.createMulNode(soureList, invList, targetList) + node.createMulNode(soureList, invList, targetList) + def replaceShape(source=None, targets=None, *args): - """ - Replace the shape of one object by another. + """Replace the shape of one object by another. Args: source (None, PyNode): Source object with the original shape. - targets (None, list of pyNode): Targets object to apply the source shape. + targets (None, list of pyNode): Targets object to apply the + source shape. *args: Maya's dummy Returns: - None: Return non if nothing is selected or the source and targets are none + None: Return non if nothing is selected or the source and targets + are none + """ if not source and not targets: - oSel = pm.selected() - if len(oSel) <2: - pm.displayWarning( "At less 2 objects must be selected") + oSel = pm.selected() + if len(oSel) < 2: + pm.displayWarning("At less 2 objects must be selected") return None else: source = oSel[0] @@ -382,20 +393,23 @@ def replaceShape(source=None, targets=None, *args): pm.delete(shape) pm.parent(source2.getShapes(), target, r=True, s=True) - for i, sh in enumerate(target.getShapes()): - pm.rename( sh, target.name() + "_%s_Shape"%str(i) ) + for i, sh in enumerate(target.getShapes()): + pm.rename(sh, target.name() + "_%s_Shape" % str(i)) pm.delete(source2) def matchPosfromBBox(*args): - """ - Match the position of one object, using the boundig box center of another object. + """Match the position usin bounding box of another object another. + + Match the position of one object, using the boundig box center of + another object. + """ source = pm.selected()[0] target = pm.selected()[1] - center = mnav.bboxCenter(source, radius=False) + center = meshNavigation.bboxCenter(source, radius=False) target.setTranslation(center, space="world") @@ -405,8 +419,10 @@ def matchPosfromBBox(*args): ####################################### def spaceJump(ref=None, space=None, *args): - """ - This function create a local reference space from another space in the hierarchy + """Space Jump gimmick + + This function create a local reference space from another space in the + hierarchy Args: ref (None, optional): Transform reference @@ -415,20 +431,27 @@ def spaceJump(ref=None, space=None, *args): Returns: pyNode: Transform - """ + """ if not ref and not space: - if len(pm.selected())==2: + if len(pm.selected()) == 2: ref = pm.selected()[0] space = pm.selected()[1] else: - pm.displayWarning("Please select 2 objects. Reference Space and Jump Space") + pm.displayWarning("Please select 2 objects. Reference Space " + "and Jump Space") return - refLocal = pri.addTransform(ref, ref.name()+"_SPACE_"+space.name(), space.getMatrix(worldSpace=True)) - spaceLocal = pri.addTransform(space, ref.name()+"_JUMP_"+space.name(), space.getMatrix(worldSpace=True)) + refLocal = primitive.addTransform(ref, + ref.name() + "_SPACE_" + space.name(), + space.getMatrix(worldSpace=True)) + spaceLocal = primitive.addTransform(space, + ref.name() + "_JUMP_" + space.name(), + space.getMatrix(worldSpace=True)) - aop.gear_mulmatrix_op(refLocal.attr("worldMatrix"), spaceLocal.attr("parentInverseMatrix[0]"), spaceLocal) + applyop.gear_mulmatrix_op(refLocal.attr("worldMatrix"), + spaceLocal.attr("parentInverseMatrix[0]"), + spaceLocal) pm.displayInfo("Jump Space for local space: " + space.name() + "created") return spaceLocal @@ -436,29 +459,41 @@ def spaceJump(ref=None, space=None, *args): def createInterpolateTransform(objects=None, blend=.5, *args): """ - Create space locator and apply gear_intmatrix_op, to interpolate the his pose between 2 selected objects. + Create space locator and apply gear_intmatrix_op, to interpolate the his + pose between 2 selected objects. Args: - objects (None or list of 2 dagNode, optional): The 2 dagNode to interpolate the transform. + objects (None or list of 2 dagNode, optional): The 2 dagNode to + interpolate the transform. blend (float, optional): The interpolation blend factor. *args: Maya's dummy Returns: - pyNode: The new transformation witht the interpolate matrix node applied. + pyNode: The new transformation witht the interpolate matrix o_node + applied. + """ if objects or len(pm.selected()) >= 2: if objects: refA = objects[0] refB = objects[1] - else : + else: refA = pm.selected()[0] refB = pm.selected()[1] - intMatrix = aop.gear_intmatrix_op(refA.attr("worldMatrix"), refB.attr("worldMatrix"), blend) - intTrans = pri.addTransform(refA, refA.name()+"_INTER_"+refB.name(), dt.Matrix()) - aop.gear_mulmatrix_op(intMatrix.attr("output"), intTrans.attr("parentInverseMatrix[0]"), intTrans) - pm.displayInfo("Interpolated Transform: " + intTrans.name() + " created") + intMatrix = applyop.gear_intmatrix_op(refA.attr("worldMatrix"), + refB.attr("worldMatrix"), + blend) + intTrans = primitive.addTransform( + refA, refA.name() + "_INTER_" + refB.name(), datatypes.Matrix()) + + applyop.gear_mulmatrix_op(intMatrix.attr("output"), + intTrans.attr("parentInverseMatrix[0]"), + intTrans) + + pm.displayInfo( + "Interpolated Transform: " + intTrans.name() + " created") else: pm.displayWarning("Please select 2 objects. ") return @@ -466,19 +501,28 @@ def createInterpolateTransform(objects=None, blend=.5, *args): return intTrans -def addBlendedJoint(oSel=None, compScale=True, blend=.5, name=None, select=True, *args): - """Create a joint that rotate 50% of the selected joint. This operation is done using a - pairBlend node. +def addBlendedJoint(oSel=None, + compScale=True, + blend=.5, + name=None, + select=True, + *args): + """Create and gimmick blended joint + + Create a joint that rotate 50% of the selected joint. This operation is + done using a pairBlend node. Args: oSel (None or joint, optional): If None will use the selected joints. - compScale (bool, optional): Set the compScale option of the blended joint. Default is True. + compScale (bool, optional): Set the compScale option of the blended + joint. Default is True. blend (float, optional): blend rotation value - name (None, optional): Name for the blended node + name (None, optional): Name for the blended o_node *args: Maya's dummy Returns: list: blended joints list + """ if not oSel: oSel = pm.selected() @@ -489,30 +533,30 @@ def addBlendedJoint(oSel=None, compScale=True, blend=.5, name=None, select=True, if isinstance(x, pm.nodetypes.Joint): parent = x.getParent() if name: - name = 'blend_'+name + name = 'blend_' + name else: - name = 'blend_'+x.name() + name = 'blend_' + x.name() jnt = pm.createNode('joint', n=name, p=x) jnt_list.append(jnt) jnt.attr('radius').set(1.5) pm.parent(jnt, parent) - node = pm.createNode("pairBlend") - node.attr("rotInterpolation").set(1) - pm.setAttr(node+".weight", blend) - pm.connectAttr(x+".translate", node+".inTranslate1") - pm.connectAttr(x+".translate", node+".inTranslate2") - pm.connectAttr(x+".rotate", node+".inRotate1") + o_node = pm.createNode("pairBlend") + o_node.attr("rotInterpolation").set(1) + pm.setAttr(o_node + ".weight", blend) + pm.connectAttr(x + ".translate", o_node + ".inTranslate1") + pm.connectAttr(x + ".translate", o_node + ".inTranslate2") + pm.connectAttr(x + ".rotate", o_node + ".inRotate1") - pm.connectAttr(node+".outRotateX", jnt+".rotateX") - pm.connectAttr(node+".outRotateY", jnt+".rotateY") - pm.connectAttr(node+".outRotateZ", jnt+".rotateZ") + pm.connectAttr(o_node + ".outRotateX", jnt + ".rotateX") + pm.connectAttr(o_node + ".outRotateY", jnt + ".rotateY") + pm.connectAttr(o_node + ".outRotateZ", jnt + ".rotateZ") - pm.connectAttr(node+".outTranslateX", jnt+".translateX") - pm.connectAttr(node+".outTranslateY", jnt+".translateY") - pm.connectAttr(node+".outTranslateZ", jnt+".translateZ") + pm.connectAttr(o_node + ".outTranslateX", jnt + ".translateX") + pm.connectAttr(o_node + ".outTranslateY", jnt + ".translateY") + pm.connectAttr(o_node + ".outTranslateZ", jnt + ".translateZ") - pm.connectAttr(x+".scale", jnt+".scale") + pm.connectAttr(x + ".scale", jnt + ".scale") jnt.attr("overrideEnabled").set(1) jnt.attr("overrideColor").set(17) @@ -522,28 +566,34 @@ def addBlendedJoint(oSel=None, compScale=True, blend=.5, name=None, select=True, try: defSet = pm.PyNode("rig_deformers_grp") - except: + except TypeError: pm.sets(n="rig_deformers_grp") defSet = pm.PyNode("rig_deformers_grp") pm.sets(defSet, add=jnt) else: - pm.displayWarning("Blended Joint can't be added to: %s. Because is not ot type Joint"%x.name()) + pm.displayWarning("Blended Joint can't be added to: %s. Because " + "is not ot type Joint" % x.name()) if jnt_list and select: pm.select(jnt_list) return jnt_list + def addSupportJoint(oSel=None, select=True, *args): - """Add an extra joint to the blended joint. This is meant to be use with SDK for game style deformation. + """Add an extra joint to the blended joint. + + This is meant to be use with SDK for game style deformation. Args: - oSel (None or blended joint, optional): If None will use the current selection. + oSel (None or blended joint, optional): If None will use the current + selection. *args: Mays's dummy Returns: list: blended joints list + """ if not oSel: oSel = pm.selected() @@ -553,9 +603,11 @@ def addSupportJoint(oSel=None, select=True, *args): jnt_list = [] for x in oSel: if x.name().split("_")[0] == "blend": - children = [item for item in pm.selected()[0].listRelatives(ad=True, type="joint")] + children = [item for item + in pm.selected()[0].listRelatives(ad=True, + type="joint")] i = len(children) - name = x.name().replace("blend", "blendSupport_%s"%str(i)) + name = x.name().replace("blend", "blendSupport_%s" % str(i)) jnt = pm.createNode('joint', n=name, p=x) jnt_list.append(jnt) jnt.attr('radius').set(1.5) @@ -564,14 +616,15 @@ def addSupportJoint(oSel=None, select=True, *args): try: defSet = pm.PyNode("rig_deformers_grp") - except: + except pm.MayaNodeError: pm.sets(n="rig_deformers_grp") defSet = pm.PyNode("rig_deformers_grp") pm.sets(defSet, add=jnt) else: - pm.displayWarning("Support Joint can't be added to: %s. Because is not blend joint"%x.name()) + pm.displayWarning("Support Joint can't be added to: %s. Because " + "is not blend joint" % x.name()) if jnt_list and select: pm.select(jnt_list) From 0a36b99dbf18fd4a322c6634faf87c361b587ed4 Mon Sep 17 00:00:00 2001 From: miquelcampos Date: Mon, 27 Nov 2017 17:29:04 +0900 Subject: [PATCH 104/134] PEP8 #100 Rigbits: refactor --- scripts/mgear/maya/rigbits/blendShapes.py | 70 ++--- scripts/mgear/maya/rigbits/channelWrangler.py | 283 ++++++++++-------- .../mgear/maya/rigbits/channelWranglerUI.py | 88 ++---- scripts/mgear/maya/rigbits/cycleTweaks.py | 206 +++++++------ scripts/mgear/maya/rigbits/ghost.py | 121 ++++---- scripts/mgear/maya/rigbits/postSpring.py | 260 +++++++++------- scripts/mgear/maya/rigbits/proxySlicer.py | 121 ++++---- scripts/mgear/maya/rigbits/rivet.py | 153 +++++----- scripts/mgear/maya/rigbits/rope.py | 151 +++++----- scripts/mgear/maya/rigbits/tweaks.py | 242 ++++++++------- scripts/mgear/maya/rigbits/utils.py | 67 ++--- 11 files changed, 915 insertions(+), 847 deletions(-) diff --git a/scripts/mgear/maya/rigbits/blendShapes.py b/scripts/mgear/maya/rigbits/blendShapes.py index be97c5e..9b5f555 100644 --- a/scripts/mgear/maya/rigbits/blendShapes.py +++ b/scripts/mgear/maya/rigbits/blendShapes.py @@ -1,66 +1,56 @@ -# MGEAR is under the terms of the MIT License - -# Copyright (c) 2016 Jeremie Passerin, Miquel Campos - -# Permission is hereby granted, free of charge, to any person obtaining a copy -# of this software and associated documentation files (the "Software"), to deal -# in the Software without restriction, including without limitation the rights -# to use, copy, modify, merge, publish, distribute, sublicense, and/or sell -# copies of the Software, and to permit persons to whom the Software is -# furnished to do so, subject to the following conditions: - -# The above copyright notice and this permission notice shall be included in all -# copies or substantial portions of the Software. - -# THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR -# IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, -# FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE -# AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER -# LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, -# OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE -# SOFTWARE. - -# Author: Jeremie Passerin geerem@hotmail.com www.jeremiepasserin.com -# Author: Miquel Campos hello@miquel-campos.com www.miquel-campos.com -# Date: 2016 / 10 / 10 - - - - - +"""Rigbits blendshapes utilities and tools""" import pymel.core as pm - def getBlendShape(obj): + """Get the blendshape node of an object. + + Args: + obj (PyNode): The object with the blendshape node - if isinstance(obj, basestring): + Returns: + PyNode: The blendshape node + """ + if isinstance(obj, basestring): obj = pm.PyNode(obj) try: - if pm.nodeType(obj.getShape()) in ["mesh", "nurbsSurface", "nurbsCurve"]: + if (pm.nodeType(obj.getShape()) + in ["mesh", "nurbsSurface", "nurbsCurve"]): blendShape = pm.listHistory(obj.getShape(), type="blendShape")[0] - except: + except Exception: blendShape = None return blendShape def connectWithBlendshape(mesh, bst, wgt=1.0): + """Connect 2 geometries using blendshape node + + Args: + mesh (PyNode): The Object to apply the blendshape target + bst (PyNode): The Blendshape target + wgt (float, optional): Description + Returns: + PyNode: The blenshape node + """ if isinstance(mesh, basestring): - mesh = pm.PyNode(mesh) + mesh = pm.PyNode(mesh) if isinstance(bst, basestring): - bst = pm.PyNode(bst) + bst = pm.PyNode(bst) bsnode = getBlendShape(mesh) if bsnode: - wc = pm.blendShape( bsnode, q=True, wc=True ) - # print wc - pm.blendShape( bsnode, edit=True, t=(mesh, wc, bst, 1.0) ) + wc = pm.blendShape(bsnode, q=True, wc=True) + pm.blendShape(bsnode, edit=True, t=(mesh, wc, bst, 1.0)) bsnode.attr(bst.name()).set(wgt) bs = bsnode else: - bs = pm.blendShape(bst, mesh, name="_".join([mesh.name(), "blendShape"]), foc=True, w=[(0, 1.0)]) + bs = pm.blendShape(bst, + mesh, + name="_".join([mesh.name(), "blendShape"]), + foc=True, + w=[(0, 1.0)]) return bs diff --git a/scripts/mgear/maya/rigbits/channelWrangler.py b/scripts/mgear/maya/rigbits/channelWrangler.py index 80f58be..46c9d7d 100644 --- a/scripts/mgear/maya/rigbits/channelWrangler.py +++ b/scripts/mgear/maya/rigbits/channelWrangler.py @@ -1,45 +1,18 @@ -# MGEAR is under the terms of the MIT License - -# Copyright (c) 2016 Jeremie Passerin, Miquel Campos - -# Permission is hereby granted, free of charge, to any person obtaining a copy -# of this software and associated documentation files (the "Software"), to deal -# in the Software without restriction, including without limitation the rights -# to use, copy, modify, merge, publish, distribute, sublicense, and/or sell -# copies of the Software, and to permit persons to whom the Software is -# furnished to do so, subject to the following conditions: - -# The above copyright notice and this permission notice shall be included in all -# copies or substantial portions of the Software. - -# THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR -# IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, -# FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE -# AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER -# LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, -# OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE -# SOFTWARE. - -# Author: Jeremie Passerin geerem@hotmail.com www.jeremiepasserin.com -# Author: Miquel Campos hello@miquel-campos.com www.miquel-campos.com -# Date: 2016 / 10 / 10 +"""Channel wrangler tool, to manage user channel""" import json -import mgear.maya.pyqt as gqt -import mgear.maya.attribute as att -import mgear.maya.rigbits.channelWranglerUI as channelWranglerUI - import pymel.core as pm - - from maya.app.general.mayaMixin import MayaQWidgetDockableMixin -QtGui, QtCore, QtWidgets, wrapInstance = gqt.qt_import() + +from mgear.maya import attribute, pyqt +import mgear.maya.rigbits.channelWranglerUI as channelWranglerUI +from mgear.vendor.Qt import QtWidgets, QtCore ###################################################################### -## Functions +# Functions ###################################################################### @@ -58,14 +31,18 @@ def _applyChannelConfig(configDic): node = pm.PyNode(sourceNode) sourceAttrs = node.attr(attr) target = pm.PyNode(targetNode) - att.addProxyAttribute(sourceAttrs, target, proxyPolicy) + attribute.addProxyAttribute(sourceAttrs, target, proxyPolicy) # move else: - att.moveChannel(attr, sourceNode, targetNode, movePolicy) + attribute.moveChannel(attr, sourceNode, targetNode, movePolicy) + +# apply the configuration stored in a json file. This will be to use outside +# the interface + -# apply the configuration stored in a json file. This will be to use outside the interface def applyChannelConfig(filePath): - """apply the configuration stored in a json file. + """Apply the configuration stored in a json file. + This will be to use outside the interface Args: @@ -76,10 +53,11 @@ def applyChannelConfig(filePath): ###################################################################### -## Dialog +# Dialog ###################################################################### class cwUI(QtWidgets.QDialog, channelWranglerUI.Ui_Form): + """Initialize the UI""" def __init__(self, parent=None): super(cwUI, self).__init__(parent) @@ -87,23 +65,30 @@ def __init__(self, parent=None): class channelWrangler(MayaQWidgetDockableMixin, QtWidgets.QDialog): + """Channel wrangler UI""" + valueChanged = QtCore.Signal(int) def __init__(self, parent=None): self.toolName = "ChannelWranglerWindow" - super(self.__class__, self).__init__(parent = parent) + super(self.__class__, self).__init__(parent=parent) self.cwUIInst = cwUI() self.table = self.cwUIInst.channelMapping_tableWidget self.headerTable = self.table.horizontalHeader() - # we try setSectionResizeMode for Pyside2 if attributeError setResizeMode for PySide + # we try setSectionResizeMode for Pyside2 if attributeError + # setResizeMode for PySide for i in [1, 4]: try: - self.headerTable.setSectionResizeMode(i, QtWidgets.QHeaderView.Stretch) - self.headerTable.setSectionResizeMode(0, QtWidgets.QHeaderView.ResizeToContents) + self.headerTable.setSectionResizeMode( + i, QtWidgets.QHeaderView.Stretch) + self.headerTable.setSectionResizeMode( + 0, QtWidgets.QHeaderView.ResizeToContents) except AttributeError: - self.headerTable.setResizeMode(i, QtWidgets.QHeaderView.Stretch) - self.headerTable.setResizeMode(0, QtWidgets.QHeaderView.ResizeToContents) + self.headerTable.setResizeMode( + i, QtWidgets.QHeaderView.Stretch) + self.headerTable.setResizeMode( + 0, QtWidgets.QHeaderView.ResizeToContents) self.setup_channelWranglerWindow() self.create_layout() @@ -112,7 +97,7 @@ def __init__(self, parent=None): self.setAttribute(QtCore.Qt.WA_DeleteOnClose) def setup_channelWranglerWindow(self): - self.mayaMainWindow = gqt.maya_main_window() + self.mayaMainWindow = pyqt.maya_main_window() self.setObjectName(self.toolName) self.setWindowFlags(QtCore.Qt.Window) @@ -127,33 +112,56 @@ def create_layout(self): self.setLayout(self.cw_layout) ########################### - #create connections SIGNALS + # create connections SIGNALS ########################### def create_connections(self): - self.cwUIInst.channel_pushButton.clicked.connect(self.populateChannelLineEdit) - self.cwUIInst.target_pushButton.clicked.connect(self.populateTargetLineEdit) - self.cwUIInst.setRow_pushButton.clicked.connect(self.setRow) - self.cwUIInst.setMultiChannel_pushButton.clicked.connect(self.setMultiChannel) - self.cwUIInst.setMultiTarget_pushButton.clicked.connect(self.setMultiTarget) - self.cwUIInst.clearAll_pushButton.clicked.connect(self.clearAllRows) - self.cwUIInst.clearSelectedRows_pushButton.clicked.connect(self.clearSelectedRows) - self.cwUIInst.setMoveOp_pushButton.clicked.connect(self.setMoveOperator) - self.cwUIInst.setProxyOp_pushButton.clicked.connect(self.setProxyOperator) - self.cwUIInst.export_pushButton.clicked.connect(self.exportConfig) - self.cwUIInst.import_pushButton.clicked.connect(self.importConfig) - self.cwUIInst.apply_pushButton.clicked.connect(self.applyChannelConfig) + self.cwUIInst.channel_pushButton.clicked.connect( + self.populateChannelLineEdit) + self.cwUIInst.target_pushButton.clicked.connect( + self.populateTargetLineEdit) + self.cwUIInst.setRow_pushButton.clicked.connect( + self.setRow) + self.cwUIInst.setMultiChannel_pushButton.clicked.connect( + self.setMultiChannel) + self.cwUIInst.setMultiTarget_pushButton.clicked.connect( + self.setMultiTarget) + self.cwUIInst.clearAll_pushButton.clicked.connect( + self.clearAllRows) + self.cwUIInst.clearSelectedRows_pushButton.clicked.connect( + self.clearSelectedRows) + self.cwUIInst.setMoveOp_pushButton.clicked.connect( + self.setMoveOperator) + self.cwUIInst.setProxyOp_pushButton.clicked.connect( + self.setProxyOperator) + self.cwUIInst.export_pushButton.clicked.connect( + self.exportConfig) + self.cwUIInst.import_pushButton.clicked.connect( + self.importConfig) + self.cwUIInst.apply_pushButton.clicked.connect( + self.applyChannelConfig) ################## # helper functions ################## - # set the row item + def _setRowItem(self, rowPosition, itemIndex, itemContent): + """Set the row item + + Args: + rowPosition (Int): Row Index + itemIndex (Int): Item Index + itemContent (Str): Item content + + Returns: + QTableWidgetItem: Item + """ item = QtWidgets.QTableWidgetItem(itemContent) - self.table.setItem(rowPosition , itemIndex, item) + self.table.setItem(rowPosition, itemIndex, item) return item - # the source is set at the same time as the channel def _setRowChannel(self, rowPosition, channel, source): + """The source is set at the same time as the channel""" + self._setRowItem(rowPosition, 0, str(rowPosition).zfill(3)) self._setRowItem(rowPosition, 1, channel) self._setRowItem(rowPosition, 2, source) @@ -168,13 +176,13 @@ def _setRowTarget(self, rowPosition, target): """ self._setRowItem(rowPosition, 3, target) - def _addNewRow(self, channel=None, source=None, target=None): """Add new row to the table Args: channel (str, optional): The channel to add to the table. - source (str, optional): The source node that has the channel to move. + source (str, optional): The source node that has the channel + to move. target (str, optional): The destionation node for the channel. Returns: @@ -209,7 +217,6 @@ def _getSelectedRowsIndex(self): return index_list - def _buildConfigDict(self): """build the config dictionary from the UI data @@ -219,65 +226,78 @@ def _buildConfigDict(self): configDict = {} mapList = [] - # this list will contain only the 3 main items list to avoid duplicated rules + # this list will contain only the 3 main items list to avoid + # duplicated rules checkDuplicatedList = [] for i in range(self.table.rowCount()): - checkItems = [self.table.item(i , x+1).text() for x in range(3)] + checkItems = [self.table.item(i, x + 1).text() for x in range(3)] if checkItems not in checkDuplicatedList: checkDuplicatedList.append(checkItems) - rowItems = checkItems + [self.table.cellWidget(i, 4).currentIndex()] + rowItems = checkItems + [self.table.cellWidget( + i, 4).currentIndex()] mapList.append(rowItems) configDict["map"] = mapList - configDict["movePolicy"]= ["merge", "index", "fullName"][self.cwUIInst.movePolicy_comboBox.currentIndex()] - configDict["proxyPolicy"]= ["index", "fullName"][self.cwUIInst.proxyPolicy_comboBox.currentIndex()] + mpIndex = self.cwUIInst.movePolicy_comboBox.currentIndex() + configDict["movePolicy"] = ["merge", "index", "fullName"][mpIndex] + pxyIndex = self.cwUIInst.proxyPolicy_comboBox.currentIndex() + configDict["proxyPolicy"] = ["index", "fullName"][pxyIndex] return configDict - ########################### - #SLOTS + # SLOTS ########################### - #buttons + # buttons def populateChannelLineEdit(self): oSel = pm.selected() if oSel: - chan = att.getSelectedChannels(True)[0] - self.cwUIInst.channel_lineEdit.setText("{}.{}".format(oSel[0].name(), chan)) + chan = attribute.getSelectedChannels(True)[0] + self.cwUIInst.channel_lineEdit.setText( + "{}.{}".format(oSel[0].name(), chan)) def populateTargetLineEdit(self): oSel = pm.selected() if oSel: self.cwUIInst.target_lineEdit.setText(oSel[0].name()) - # sets a new row with the information on the channel and target lineEdit def setRow(self): + """Sets a new row + + Sets a new row with the information on the channel and target lineEdit + """ fullChanName = self.cwUIInst.channel_lineEdit.text() if fullChanName: sourceName, chanName = fullChanName.split(".") targetName = self.cwUIInst.target_lineEdit.text() - if fullChanName and targetName: - #TODO: checker for the new rule, be sure is not duplicated + if fullChanName and targetName: + # TODO: checker for the new rule, be sure is not duplicated self._addNewRow(chanName, sourceName, targetName) else: pm.displayWarning("Channel and target are not set properly") - # sets new rows from the selectec channels. 1 channel for each row. def setMultiChannel(self): + """sets new rows from the selectec channels. 1 channel for each row""" oSel = pm.selected() if oSel: - channels = att.getSelectedChannels(True) + channels = attribute.getSelectedChannels(True) if not channels: - channels = att.getSelectedObjectChannels(oSel[0], True, True) + channels = attribute.getSelectedObjectChannels( + oSel[0], True, True) for ch in channels: self._addNewRow(ch, oSel[0].name(), oSel[0].name()) else: - pm.displayWarning("To set the source, you need to select at one source object") + pm.displayWarning("To set the source, you need to select at " + "one source object") - # set the target colum for the selected rows - # if only one object is selected will populate all the rows with the same object - # if there is more that one object selected, will iterate the selection adding one object to each row def setMultiTarget(self): + """set the target colum for the selected rows + + If only one object is selected will populate all the rows with the + same object + If there is more that one object selected, will iterate the selection + adding one object to each row + """ oSel = pm.selected() index_list = self._getSelectedRowsIndex() @@ -293,33 +313,31 @@ def setMultiTarget(self): for i in reversed(range(self.table.rowCount())): self._setRowTarget(i, oSel[0].name()) else: - pm.displayWarning("To set the target, you need to select at less one target object") + pm.displayWarning("To set the target, you need to select at less" + " one target object") - # clear selected rows def clearSelectedRows(self): - """Clear selected rows from the table - """ + """Clear selected rows from the table""" + index_list = self._getSelectedRowsIndex() for index in index_list: self.table.removeRow(index.row()) - # for x in range(4): - # self.table.item(index, x).clear() - # self.table.cellWidget(index, 4).deleteLater() - - # clear all the rows def clearAllRows(self): + """Clear all the rows""" + self.table.clear() for i in reversed(range(self.table.rowCount())): self.table.removeRow(i) - - # export channelWrangler configuration def exportConfig(self): + """Export channelWrangler configuration""" configDict = self._buildConfigDict() data_string = json.dumps(configDict, indent=4, sort_keys=True) - filePath = pm.fileDialog2(dialogStyle=2, fileMode=0, - fileFilter='Channel Wrangler Configuration .cwc (*%s)' %".cwc") + filePath = pm.fileDialog2( + dialogStyle=2, + fileMode=0, + fileFilter='Channel Wrangler Configuration .cwc (*%s)' % ".cwc") if not filePath: return if not isinstance(filePath, basestring): @@ -328,60 +346,78 @@ def exportConfig(self): f.write(data_string) f.close() - - # import channel wrangler configuration def importConfig(self): - # TODO: if import dict ask to add to the current configuration or replace. + """Import channel wrangler configuration""" + + # TODO: if import dict ask to add to the current + # configuration or replace. startDir = pm.workspace(q=True, rootDirectory=True) - filePath = pm.fileDialog2( dialogStyle=2, fileMode=1, startingDirectory=startDir, - fileFilter='Channel Wrangler Configuration .cwc (*%s)' %".cwc") + filePath = pm.fileDialog2( + dialogStyle=2, + fileMode=1, + startingDirectory=startDir, + fileFilter='Channel Wrangler Configuration .cwc (*%s)' % ".cwc") if not filePath: return if not isinstance(filePath, basestring): filePath = filePath[0] configDict = json.load(open(filePath)) - # also ask for proxy and move policy if is not the same when we add to the current list + # also ask for proxy and move policy if is not the same when we add to + # the current list if self.table.rowCount(): - option = pm.confirmDialog( title='Channel Wrangler Configuration Import Style', - message='Do you want to repace current configuration or add it?\n\ - if add the move policy and proxy policy will not change', - button=['Replace','Add', 'Cancel'], defaultButton='Reaplace', - cancelButton='Cancel', dismissString='Cancel' ) + option = pm.confirmDialog( + title='Channel Wrangler Configuration Import Style', + message='Do you want to repace current configuration or' + ' add it?\n if add the move policy and proxy policy' + ' will not change', + button=['Replace', 'Add', 'Cancel'], + defaultButton='Reaplace', + cancelButton='Cancel', + dismissString='Cancel') else: option = "Replace" if option == "Replace": self.clearAllRows() - #set move policy + # set move policy indexList = ["merge", "index", "fullName"] - self.cwUIInst.movePolicy_comboBox.setCurrentIndex(indexList.index(configDict["movePolicy"])) + self.cwUIInst.movePolicy_comboBox.setCurrentIndex( + indexList.index(configDict["movePolicy"])) - #set proxy policy + # set proxy policy indexList = ["index", "fullName"] - self.cwUIInst.proxyPolicy_comboBox.setCurrentIndex(indexList.index(configDict["proxyPolicy"])) + self.cwUIInst.proxyPolicy_comboBox.setCurrentIndex( + indexList.index(configDict["proxyPolicy"])) for rule in configDict["map"]: - row_pos = self._addNewRow(channel=rule[0], source=rule[1], target=rule[2]) + row_pos = self._addNewRow(channel=rule[0], + source=rule[1], + target=rule[2]) + oCombo = self.table.cellWidget(row_pos, 4) oCombo.setCurrentIndex(rule[3]) - # apply the current configuration in the dialog def applyChannelConfig(self): with pm.UndoChunk(): configDict = self._buildConfigDict() - #TODO add checker to avoid error if the datas is not found in the scene + # TODO add checker to avoid error if the datas is not + # found in the scene for rule in configDict["map"]: # proxy if rule[3]: source = pm.PyNode("{}.{}".format(rule[1], rule[0])) target = pm.PyNode(rule[2]) - att.addProxyAttribute(source, target, configDict["proxyPolicy"]) - #move + attribute.addProxyAttribute(source, + target, + configDict["proxyPolicy"]) + # move else: source = pm.PyNode(rule[1]) target = pm.PyNode(rule[2]) - att.moveChannel( rule[0], source, target, configDict["movePolicy"]) - + attribute.moveChannel(rule[0], + source, + target, + configDict["movePolicy"]) def _setOperator(self, operator): """set the channel wrangle operator @@ -406,21 +442,22 @@ def _setOperator(self, operator): oCombo = self.table.cellWidget(i, 4) oCombo.setCurrentIndex(operator) - def setMoveOperator(self): """set the channel wrangler operator to Move """ self._setOperator(0) - def setProxyOperator(self): """set the channel wrangler operator to Proxy """ self._setOperator(1) + def openChannelWrangler(*args): - gqt.showDialog(channelWrangler) + pyqt.showDialog(channelWrangler) #################################### + + if __name__ == "__main__": - gqt.showDialog(channelWrangler) + pyqt.showDialog(channelWrangler) diff --git a/scripts/mgear/maya/rigbits/channelWranglerUI.py b/scripts/mgear/maya/rigbits/channelWranglerUI.py index 0a26b6f..1040e49 100644 --- a/scripts/mgear/maya/rigbits/channelWranglerUI.py +++ b/scripts/mgear/maya/rigbits/channelWranglerUI.py @@ -1,33 +1,9 @@ -# MGEAR is under the terms of the MIT License +from mgear.maya import pyqt +from mgear.vendor.Qt import QtCore, QtWidgets -# Copyright (c) 2016 Jeremie Passerin, Miquel Campos - -# Permission is hereby granted, free of charge, to any person obtaining a copy -# of this software and associated documentation files (the "Software"), to deal -# in the Software without restriction, including without limitation the rights -# to use, copy, modify, merge, publish, distribute, sublicense, and/or sell -# copies of the Software, and to permit persons to whom the Software is -# furnished to do so, subject to the following conditions: - -# The above copyright notice and this permission notice shall be included in all -# copies or substantial portions of the Software. - -# THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR -# IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, -# FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE -# AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER -# LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, -# OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE -# SOFTWARE. - -# Author: Jeremie Passerin geerem@hotmail.com www.jeremiepasserin.com -# Author: Miquel Campos hello@miquel-campos.com www.miquel-campos.com -# Date: 2016 / 10 / 10 - -import mgear.maya.pyqt as gqt -QtGui, QtCore, QtWidgets, wrapInstance = gqt.qt_import() class Ui_Form(object): + def setupUi(self, Form): Form.setObjectName("Form") Form.resize(832, 537) @@ -193,35 +169,35 @@ def setupUi(self, Form): QtCore.QMetaObject.connectSlotsByName(Form) def retranslateUi(self, Form): - Form.setWindowTitle(gqt.fakeTranslate("Form", "Form", None, -1)) + Form.setWindowTitle(pyqt.fakeTranslate("Form", "Form", None, -1)) self.channelMapping_tableWidget.setSortingEnabled(False) - self.channelMapping_tableWidget.horizontalHeaderItem(0).setText(gqt.fakeTranslate("Form", "Idx", None, -1)) - self.channelMapping_tableWidget.horizontalHeaderItem(1).setText(gqt.fakeTranslate("Form", "Channel", None, -1)) - self.channelMapping_tableWidget.horizontalHeaderItem(2).setText(gqt.fakeTranslate("Form", "Source", None, -1)) - self.channelMapping_tableWidget.horizontalHeaderItem(3).setText(gqt.fakeTranslate("Form", "Target", None, -1)) - self.channelMapping_tableWidget.horizontalHeaderItem(4).setText(gqt.fakeTranslate("Form", "operation", None, -1)) - self.export_pushButton.setText(gqt.fakeTranslate("Form", "Export", None, -1)) - self.import_pushButton.setText(gqt.fakeTranslate("Form", "Import", None, -1)) - self.apply_pushButton.setText(gqt.fakeTranslate("Form", "Apply", None, -1)) - self.groupBox.setTitle(gqt.fakeTranslate("Form", "Channel", None, -1)) - self.channel_pushButton.setText(gqt.fakeTranslate("Form", "<<<", None, -1)) - self.groupBox_2.setTitle(gqt.fakeTranslate("Form", "Target", None, -1)) - self.target_pushButton.setText(gqt.fakeTranslate("Form", "<<<", None, -1)) - self.setRow_pushButton.setText(gqt.fakeTranslate("Form", "Set Row", None, -1)) - self.setMultiChannel_pushButton.setText(gqt.fakeTranslate("Form", "Set Multi Channel", None, -1)) - self.setMultiTarget_pushButton.setText(gqt.fakeTranslate("Form", "Set Multi Target", None, -1)) - self.clearSelectedRows_pushButton.setText(gqt.fakeTranslate("Form", "Clear Selected Rows", None, -1)) - self.clearAll_pushButton.setText(gqt.fakeTranslate("Form", "Clear All", None, -1)) - self.setMoveOp_pushButton.setText(gqt.fakeTranslate("Form", "Set Move Operation", None, -1)) - self.setProxyOp_pushButton.setText(gqt.fakeTranslate("Form", "Set Proxy Operation", None, -1)) - self.groupBox_3.setTitle(gqt.fakeTranslate("Form", "Move Duplicated Channel Policy", None, -1)) - self.movePolicy_comboBox.setToolTip(gqt.fakeTranslate("Form", "

Set the duplicate channel policy when we use proxy channel operation.

-Merge: If the channel is already in the target object the new channel creationg will be skipped and the output channels will be reconnected to the previous existing channel

-Index: If the channel is already in the target object, the new proxy channel will add an index number to avoid the name clashing.

example:

"ik_fk_blend" will be renamed "ik_fk_blend0", "ik_fk_blend1","ik_fk_blend2", etc...

-Full Name: If the channel is already in the target object, the new channel will be renamed using the source node name as a prefix

", None, -1)) - self.movePolicy_comboBox.setItemText(0, gqt.fakeTranslate("Form", "Merge", None, -1)) - self.movePolicy_comboBox.setItemText(1, gqt.fakeTranslate("Form", "Index", None, -1)) - self.movePolicy_comboBox.setItemText(2, gqt.fakeTranslate("Form", "Full Name", None, -1)) - self.groupBox_4.setTitle(gqt.fakeTranslate("Form", "Proxy Duplicated Channel Policy", None, -1)) - self.proxyPolicy_comboBox.setToolTip(gqt.fakeTranslate("Form", "

Set the duplicate channel policy when we use proxy channel operation.

-Index: If the channel is already in the target object, the new proxy channel will add an index number to avoid the name clashing.

example:

"ik_fk_blend" will be renamed "ik_fk_blend0", "ik_fk_blend1","ik_fk_blend2", etc...

-Full Name: If the channel is already in the target object, the new channel will be renamed using the source node name as a prefix

", None, -1)) - self.proxyPolicy_comboBox.setItemText(0, gqt.fakeTranslate("Form", "Index", None, -1)) - self.proxyPolicy_comboBox.setItemText(1, gqt.fakeTranslate("Form", "Full Name", None, -1)) + self.channelMapping_tableWidget.horizontalHeaderItem(0).setText(pyqt.fakeTranslate("Form", "Idx", None, -1)) + self.channelMapping_tableWidget.horizontalHeaderItem(1).setText(pyqt.fakeTranslate("Form", "Channel", None, -1)) + self.channelMapping_tableWidget.horizontalHeaderItem(2).setText(pyqt.fakeTranslate("Form", "Source", None, -1)) + self.channelMapping_tableWidget.horizontalHeaderItem(3).setText(pyqt.fakeTranslate("Form", "Target", None, -1)) + self.channelMapping_tableWidget.horizontalHeaderItem(4).setText(pyqt.fakeTranslate("Form", "operation", None, -1)) + self.export_pushButton.setText(pyqt.fakeTranslate("Form", "Export", None, -1)) + self.import_pushButton.setText(pyqt.fakeTranslate("Form", "Import", None, -1)) + self.apply_pushButton.setText(pyqt.fakeTranslate("Form", "Apply", None, -1)) + self.groupBox.setTitle(pyqt.fakeTranslate("Form", "Channel", None, -1)) + self.channel_pushButton.setText(pyqt.fakeTranslate("Form", "<<<", None, -1)) + self.groupBox_2.setTitle(pyqt.fakeTranslate("Form", "Target", None, -1)) + self.target_pushButton.setText(pyqt.fakeTranslate("Form", "<<<", None, -1)) + self.setRow_pushButton.setText(pyqt.fakeTranslate("Form", "Set Row", None, -1)) + self.setMultiChannel_pushButton.setText(pyqt.fakeTranslate("Form", "Set Multi Channel", None, -1)) + self.setMultiTarget_pushButton.setText(pyqt.fakeTranslate("Form", "Set Multi Target", None, -1)) + self.clearSelectedRows_pushButton.setText(pyqt.fakeTranslate("Form", "Clear Selected Rows", None, -1)) + self.clearAll_pushButton.setText(pyqt.fakeTranslate("Form", "Clear All", None, -1)) + self.setMoveOp_pushButton.setText(pyqt.fakeTranslate("Form", "Set Move Operation", None, -1)) + self.setProxyOp_pushButton.setText(pyqt.fakeTranslate("Form", "Set Proxy Operation", None, -1)) + self.groupBox_3.setTitle(pyqt.fakeTranslate("Form", "Move Duplicated Channel Policy", None, -1)) + self.movePolicy_comboBox.setToolTip(pyqt.fakeTranslate("Form", "

Set the duplicate channel policy when we use proxy channel operation.

-Merge: If the channel is already in the target object the new channel creationg will be skipped and the output channels will be reconnected to the previous existing channel

-Index: If the channel is already in the target object, the new proxy channel will add an index number to avoid the name clashing.

example:

"ik_fk_blend" will be renamed "ik_fk_blend0", "ik_fk_blend1","ik_fk_blend2", etc...

-Full Name: If the channel is already in the target object, the new channel will be renamed using the source node name as a prefix

", None, -1)) + self.movePolicy_comboBox.setItemText(0, pyqt.fakeTranslate("Form", "Merge", None, -1)) + self.movePolicy_comboBox.setItemText(1, pyqt.fakeTranslate("Form", "Index", None, -1)) + self.movePolicy_comboBox.setItemText(2, pyqt.fakeTranslate("Form", "Full Name", None, -1)) + self.groupBox_4.setTitle(pyqt.fakeTranslate("Form", "Proxy Duplicated Channel Policy", None, -1)) + self.proxyPolicy_comboBox.setToolTip(pyqt.fakeTranslate("Form", "

Set the duplicate channel policy when we use proxy channel operation.

-Index: If the channel is already in the target object, the new proxy channel will add an index number to avoid the name clashing.

example:

"ik_fk_blend" will be renamed "ik_fk_blend0", "ik_fk_blend1","ik_fk_blend2", etc...

-Full Name: If the channel is already in the target object, the new channel will be renamed using the source node name as a prefix

", None, -1)) + self.proxyPolicy_comboBox.setItemText(0, pyqt.fakeTranslate("Form", "Index", None, -1)) + self.proxyPolicy_comboBox.setItemText(1, pyqt.fakeTranslate("Form", "Full Name", None, -1)) from mgear.maya.rigbits.widgets import TableWidgetDragRowsChannelWrangler diff --git a/scripts/mgear/maya/rigbits/cycleTweaks.py b/scripts/mgear/maya/rigbits/cycleTweaks.py index 3b2f4d5..0cd659b 100644 --- a/scripts/mgear/maya/rigbits/cycleTweaks.py +++ b/scripts/mgear/maya/rigbits/cycleTweaks.py @@ -1,40 +1,14 @@ -# MGEAR is under the terms of the MIT License - -# Copyright (c) 2016 Jeremie Passerin, Miquel Campos - -# Permission is hereby granted, free of charge, to any person obtaining a copy -# of this software and associated documentation files (the "Software"), to deal -# in the Software without restriction, including without limitation the rights -# to use, copy, modify, merge, publish, distribute, sublicense, and/or sell -# copies of the Software, and to permit persons to whom the Software is -# furnished to do so, subject to the following conditions: - -# The above copyright notice and this permission notice shall be included in all -# copies or substantial portions of the Software. - -# THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR -# IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, -# FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE -# AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER -# LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, -# OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE -# SOFTWARE. - -# Author: Jeremie Passerin geerem@hotmail.com www.jeremiepasserin.com -# Author: Miquel Campos hello@miquel-campos.com www.miquel-campos.com -# Date: 2016 / 10 / 10 +"""Cycle Tweaks module +This module content the tools and procedures to rig tweaks with a benigne cycle +""" import pymel.core as pm -import pymel.core.datatypes as dt +import pymel.core.datatypes as datatypes -import mgear.maya.node as nod -import mgear.maya.skin as ski -import mgear.maya.icon as ico +from mgear.maya import icon, skin, node +from . import rigbits, rivet, blendShapes -import mgear.maya.rigbits as rigbits -import mgear.maya.rigbits.rivet as rvt -import mgear.maya.rigbits.blendShapes as bshp def inverseTranslateParent(obj): """Invert the parent transformation @@ -45,10 +19,11 @@ def inverseTranslateParent(obj): if not isinstance(obj, list): obj = [obj] for x in obj: - nod.createMulNode([x.attr("tx"), x.attr("ty"), x.attr("tz")], [-1, -1, -1], - [x.getParent().attr("tx"), x.getParent().attr("ty"), x.getParent().attr("tz")]) - - + node.createMulNode([x.attr("tx"), x.attr("ty"), x.attr("tz")], + [-1, -1, -1], + [x.getParent().attr("tx"), + x.getParent().attr("ty"), + x.getParent().attr("tz")]) def initCycleTweakBase(outMesh, baseMesh, rotMesh, transMesh, staticJnt=None): @@ -57,22 +32,48 @@ def initCycleTweakBase(outMesh, baseMesh, rotMesh, transMesh, staticJnt=None): Args: outMesh (Mesh): The output mesh after the tweak deformation baseMesh (Mesh): The base mesh for the cycle tweak. - rotMesh (Mesh): The mesh that will support the rotation transformations for the cycle tweak - transMesh (Mesh): The mesh that will support the translation and scale transformations for the cycle tweak - staticJnt (None or joint, optional): The static joint for the static vertex. + rotMesh (Mesh): The mesh that will support the rotation + transformations for the cycle tweak + transMesh (Mesh): The mesh that will support the translation and + scale transformations for the cycle tweak + staticJnt (None or joint, optional): The static joint for the + static vertex. """ - bshp.connectWithBlendshape(rotMesh, baseMesh ) - bshp.connectWithBlendshape(transMesh, rotMesh) - bshp.connectWithBlendshape(outMesh, transMesh) - - #Init skinClusters - pm.skinCluster(staticJnt, rotMesh, tsb=True, nw=2, n='%s_skinCluster'%rotMesh.name()) - pm.skinCluster(staticJnt, transMesh, tsb=True, nw=2, n='%s_skinCluster'%transMesh.name()) - -def cycleTweak(name, edgePair, mirrorAxis, baseMesh, rotMesh, transMesh, setupParent, ctlParent, jntOrg=None, grp=None, - iconType="square", size=.025, color=13, ro=dt.Vector(1.5708,0,1.5708/2)): + blendShapes.connectWithBlendshape(rotMesh, baseMesh) + blendShapes.connectWithBlendshape(transMesh, rotMesh) + blendShapes.connectWithBlendshape(outMesh, transMesh) + + # Init skinClusters + pm.skinCluster(staticJnt, + rotMesh, + tsb=True, + nw=2, + n='%s_skinCluster' % rotMesh.name()) + pm.skinCluster(staticJnt, + transMesh, + tsb=True, + nw=2, + n='%s_skinCluster' % transMesh.name()) + + +def cycleTweak(name, + edgePair, + mirrorAxis, + baseMesh, + rotMesh, + transMesh, + setupParent, + ctlParent, + jntOrg=None, + grp=None, + iconType="square", + size=.025, + color=13, + ro=datatypes.Vector(1.5708, 0, 1.5708 / 2)): """The command to create a cycle tweak. - A cycle tweak is a tweak that cycles to the parent position but doesn't create a cycle of dependency. This type of tweaks + + A cycle tweak is a tweak that cycles to the parent position but doesn't + create a cycle of dependency. This type of tweaks are very useful to create facial tweakers. Args: @@ -80,8 +81,10 @@ def cycleTweak(name, edgePair, mirrorAxis, baseMesh, rotMesh, transMesh, setupPa edgePair (list): List of edge pair to attach the cycle tweak mirrorAxis (bool): If true, will mirror the x axis behaviour. baseMesh (Mesh): The base mesh for the cycle tweak. - rotMesh (Mesh): The mesh that will support the rotation transformations for the cycle tweak - transMesh (Mesh): The mesh that will support the translation and scale transformations for the cycle tweak + rotMesh (Mesh): The mesh that will support the rotation transformations + for the cycle tweak + transMesh (Mesh): The mesh that will support the translation and scale + transformations for the cycle tweak setupParent (dagNode): The parent for the setup objects ctlParent (dagNode): The parent for the control objects jntOrg (None or dagNode, optional): The parent for the joints @@ -95,43 +98,68 @@ def cycleTweak(name, edgePair, mirrorAxis, baseMesh, rotMesh, transMesh, setupPa multi: the tweak control and the list of related joints. """ # rotation sctructure - rRivet = rvt.rivet() - rBase = rRivet.create(baseMesh, edgePair[0], edgePair[1], setupParent, name + "_rRivet_loc") + rRivet = rivet.rivet() + rBase = rRivet.create( + baseMesh, edgePair[0], edgePair[1], setupParent, name + "_rRivet_loc") pos = rBase.getTranslation(space="world") # translation structure - tRivetParent = pm.createNode("transform", n=name+"_tRivetBase", p=ctlParent) - tRivetParent.setMatrix(dt.Matrix(), worldSpace=True) - tRivet = rvt.rivet() - tBase = tRivet.create(transMesh, edgePair[0], edgePair[1], tRivetParent, name + "_tRivet_loc") - - #create the control - tweakBase = pm.createNode("transform", n=name+"_tweakBase", p=ctlParent) - tweakBase.setMatrix(dt.Matrix(), worldSpace=True) - tweakNpo = pm.createNode("transform", n=name+"_tweakNpo", p=tweakBase) + tRivetParent = pm.createNode("transform", + n=name + "_tRivetBase", + p=ctlParent) + tRivetParent.setMatrix(datatypes.Matrix(), worldSpace=True) + tRivet = rivet.rivet() + tBase = tRivet.create(transMesh, + edgePair[0], + edgePair[1], + tRivetParent, + name + "_tRivet_loc") + + # create the control + tweakBase = pm.createNode("transform", n=name + "_tweakBase", p=ctlParent) + tweakBase.setMatrix(datatypes.Matrix(), worldSpace=True) + tweakNpo = pm.createNode("transform", n=name + "_tweakNpo", p=tweakBase) tweakBase.setTranslation(pos, space="world") - tweakCtl = ico.create(tweakNpo, name+"_ctl", tweakNpo.getMatrix(worldSpace=True), color, iconType, w=size, d=size, ro=ro) + tweakCtl = icon.create(tweakNpo, + name + "_ctl", + tweakNpo.getMatrix(worldSpace=True), + color, + iconType, + w=size, + d=size, + ro=ro) inverseTranslateParent(tweakCtl) - pm.pointConstraint(tBase, tweakBase ) - - #rot - rotBase = pm.createNode("transform", n=name+"_rotBase", p=setupParent) - rotBase.setMatrix(dt.Matrix(), worldSpace=True) - rotNPO = pm.createNode("transform", n=name+"_rot_npo", p=rotBase) - rotJointDriver = pm.createNode("transform", n=name+"_rotJointDriver", p=rotNPO) + pm.pointConstraint(tBase, tweakBase) + + # rot + rotBase = pm.createNode("transform", n=name + "_rotBase", p=setupParent) + rotBase.setMatrix(datatypes.Matrix(), worldSpace=True) + rotNPO = pm.createNode("transform", n=name + "_rot_npo", p=rotBase) + rotJointDriver = pm.createNode("transform", + n=name + "_rotJointDriver", + p=rotNPO) rotBase.setTranslation(pos, space="world") - nod.createMulNode([rotNPO.attr("tx"), rotNPO.attr("ty"), rotNPO.attr("tz")], [-1, -1, -1], - [rotJointDriver.attr("tx"), rotJointDriver.attr("ty"), rotJointDriver.attr("tz")]) - pm.pointConstraint(rBase, rotNPO ) - pm.connectAttr(tweakCtl.r, rotNPO.r ) - pm.connectAttr(tweakCtl.s, rotNPO.s ) - - # tra - posNPO = pm.createNode("transform", n=name+"_pos_npo", p=setupParent) - posJointDriver = pm.createNode("transform", n=name+"_posJointDriver", p=posNPO) + + node.createMulNode([rotNPO.attr("tx"), + rotNPO.attr("ty"), + rotNPO.attr("tz")], + [-1, -1, -1], + [rotJointDriver.attr("tx"), + rotJointDriver.attr("ty"), + rotJointDriver.attr("tz")]) + + pm.pointConstraint(rBase, rotNPO) + pm.connectAttr(tweakCtl.r, rotNPO.r) + pm.connectAttr(tweakCtl.s, rotNPO.s) + + # transform + posNPO = pm.createNode("transform", n=name + "_pos_npo", p=setupParent) + posJointDriver = pm.createNode("transform", + n=name + "_posJointDriver", + p=posNPO) posNPO.setTranslation(pos, space="world") - pm.connectAttr(tweakCtl.t, posJointDriver.t ) + pm.connectAttr(tweakCtl.t, posJointDriver.t) # mirror behaviour if mirrorAxis: @@ -142,18 +170,18 @@ def cycleTweak(name, edgePair, mirrorAxis, baseMesh, rotMesh, transMesh, setupPa rotBase.attr("sz").set(-1) posNPO.attr("sz").set(-1) - #create joints - rJoint = rigbits.addJnt(rotJointDriver, jntOrg, True, grp) - tJoint = rigbits.addJnt(posJointDriver, jntOrg, True, grp) + # create joints + rJoint = rigbits.addJnt(rotJointDriver, jntOrg, True, grp) + tJoint = rigbits.addJnt(posJointDriver, jntOrg, True, grp) # add to rotation skin # TODO: add checker to see if joint is in the skincluster. - rSK = ski.getSkinCluster(rotMesh) - pm.skinCluster(rSK, e=True, ai=rJoint, lw=True, wt=0) + rSK = skin.getSkinCluster(rotMesh) + pm.skinCluster(rSK, e=True, ai=rJoint, lw=True, wt=0) # add to transform skin # TODO: add checker to see if joint is in the skincluster. - tSK = ski.getSkinCluster(transMesh) - pm.skinCluster(tSK, e=True, ai=tJoint, lw=True, wt=0) + tSK = skin.getSkinCluster(transMesh) + pm.skinCluster(tSK, e=True, ai=tJoint, lw=True, wt=0) - return tweakCtl, [rJoint, tJoint ] + return tweakCtl, [rJoint, tJoint] diff --git a/scripts/mgear/maya/rigbits/ghost.py b/scripts/mgear/maya/rigbits/ghost.py index de0da1b..e1cd756 100644 --- a/scripts/mgear/maya/rigbits/ghost.py +++ b/scripts/mgear/maya/rigbits/ghost.py @@ -1,44 +1,20 @@ -# MGEAR is under the terms of the MIT License +"""Rigbits Ghost module -# Copyright (c) 2016 Jeremie Passerin, Miquel Campos - -# Permission is hereby granted, free of charge, to any person obtaining a copy -# of this software and associated documentation files (the "Software"), to deal -# in the Software without restriction, including without limitation the rights -# to use, copy, modify, merge, publish, distribute, sublicense, and/or sell -# copies of the Software, and to permit persons to whom the Software is -# furnished to do so, subject to the following conditions: - -# The above copyright notice and this permission notice shall be included in all -# copies or substantial portions of the Software. - -# THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR -# IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, -# FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE -# AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER -# LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, -# OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE -# SOFTWARE. - -# Author: Jeremie Passerin geerem@hotmail.com www.jeremiepasserin.com -# Author: Miquel Campos hello@miquel-campos.com www.miquel-campos.com -# Date: 2016 / 10 / 10 - -#maya +Helper tools to create layered controls rigs +""" import pymel.core as pm -#mgear -import mgear.maya.primitive as pri -import mgear.maya.node as nod -#rigbits -import mgear.maya.rigbits as rigbits +from mgear.maya import node, primitive + +from . import rigbits def createGhostCtl(ctl, parent=None, connect=True): - """ - Create a duplicate of the control and rename the original with _ghost. Later connect the local transforms and the - Channels. + """Create a duplicated Ghost control + + Create a duplicate of the control and rename the original with _ghost. + Later connect the local transforms and the Channels. This is useful to connect local rig controls with the final rig control. Args: @@ -49,28 +25,31 @@ def createGhostCtl(ctl, parent=None, connect=True): pyNode: The new created control """ - if isinstance(ctl, basestring): + if isinstance(ctl, basestring): ctl = pm.PyNode(ctl) if parent: - if isinstance(parent, basestring): + if isinstance(parent, basestring): parent = pm.PyNode(parent) grps = ctl.listConnections(t="objectSet") for grp in grps: grp.remove(ctl) oName = ctl.name() pm.rename(ctl, oName + "_ghost") - newCtl = pm.duplicate(ctl, po=True)[0] + newCtl = pm.duplicate(ctl, po=True)[0] pm.rename(newCtl, oName) source2 = pm.duplicate(ctl)[0] - for shape in source2.getShapes(): + for shape in source2.getShapes(): pm.parent(shape, newCtl, r=True, s=True) - pm.rename( shape, newCtl.name() + "Shape" ) + pm.rename(shape, newCtl.name() + "Shape") pm.parent(shape, newCtl, r=True, s=True) pm.delete(source2) if parent: pm.parent(newCtl, parent) - oTra = pm.createNode("transform", n= newCtl.name() + "_npo", p=parent, ss=True) - oTra.setMatrix(ctl.getParent().getMatrix(worldSpace=True), worldSpace=True) + oTra = pm.createNode("transform", + n=newCtl.name() + "_npo", + p=parent, ss=True) + oTra.setMatrix(ctl.getParent().getMatrix(worldSpace=True), + worldSpace=True) pm.parent(newCtl, oTra) if connect: rigbits.connectLocalTransform([newCtl, ctl]) @@ -81,9 +60,9 @@ def createGhostCtl(ctl, parent=None, connect=True): def createDoritoGhostCtl(ctl, parent=None): - """ - Create a duplicate of the dorito/tweak and rename the original with _ghost. Later connect the local transforms and the - Channels. + """ Create a duplicated Ghost control for doritos + Create a duplicate of the dorito/tweak and rename the original with _ghost. + Later connect the local transforms and the Channels. This is useful to connect local rig controls with the final rig control. Args: @@ -91,18 +70,25 @@ def createDoritoGhostCtl(ctl, parent=None): parent (dagNode): Parent for the new created control """ - if isinstance(ctl, basestring): + if isinstance(ctl, basestring): ctl = pm.PyNode(ctl) if parent: - if isinstance(parent, basestring): + if isinstance(parent, basestring): parent = pm.PyNode(parent) doritoCtl = createGhostCtl(ctl, parent) doritoParent = doritoCtl.getParent() ghostBaseParent = ctl.getParent(2) - oTra = pm.createNode("transform", n= ghostBaseParent.name() + "_npo", p=ghostBaseParent.getParent(), ss=True) + oTra = pm.createNode("transform", + n=ghostBaseParent.name() + "_npo", + p=ghostBaseParent.getParent(), + ss=True) + oTra.setTransformation(ghostBaseParent.getMatrix()) pm.parent(ghostBaseParent, oTra) - oTra = pm.createNode("transform", n= doritoParent.name() + "_npo", p=doritoParent.getParent(), ss=True) + oTra = pm.createNode("transform", + n=doritoParent.name() + "_npo", + p=doritoParent.getParent(), + ss=True) oTra.setTransformation(doritoParent.getMatrix()) pm.parent(doritoParent, oTra) @@ -118,10 +104,10 @@ def ghostSlider(ghostControls, surface, sliderParent): surface (Surface): The NURBS surface sliderParent (dagNode): The parent for the slider. """ - if not isinstance(ghostControls, list): + if not isinstance(ghostControls, list): ghostControls = [ghostControls] - #Seleccionamos los controles Ghost que queremos mover sobre el surface + # Seleccionamos los controles Ghost que queremos mover sobre el surface surfaceShape = surface.getShape() @@ -129,43 +115,56 @@ def ghostSlider(ghostControls, surface, sliderParent): ctl = pm.listConnections(ctlGhost, t="transform")[-1] t = ctl.getMatrix(worldSpace=True) - gDriver = pri.addTransform(ctlGhost.getParent(), ctl.name()+"_slideDriver", t) + gDriver = primitive.addTransform(ctlGhost.getParent(), + ctl.name() + "_slideDriver", + t) try: pm.connectAttr(ctl + ".translate", gDriver + ".translate") pm.disconnectAttr(ctl + ".translate", ctlGhost + ".translate") - except: + except RuntimeError: pass try: pm.connectAttr(ctl + ".scale", gDriver + ".scale") pm.disconnectAttr(ctl + ".scale", ctlGhost + ".scale") - except: + except RuntimeError: pass try: pm.connectAttr(ctl + ".rotate", gDriver + ".rotate") pm.disconnectAttr(ctl + ".rotate", ctlGhost + ".rotate") - except: + except RuntimeError: pass - oParent = ctlGhost.getParent() - npoName = "_".join(ctlGhost.name().split("_")[:-1]) + "_npo" - oTra = pm.PyNode(pm.createNode("transform", n=npoName, p=oParent, ss=True)) + npoName = "_".join(ctlGhost.name().split("_")[:-1]) + "_npo" + oTra = pm.PyNode(pm.createNode("transform", + n=npoName, + p=oParent, + ss=True)) oTra.setTransformation(ctlGhost.getMatrix()) pm.parent(ctlGhost, oTra) - slider = pri.addTransform(sliderParent, ctl.name()+"_slideDriven", t) + slider = primitive.addTransform(sliderParent, + ctl.name() + "_slideDriven", + t) - #connexion + # connexion - dm_node = nod.createDecomposeMatrixNode(gDriver.attr("worldMatrix[0]")) + dm_node = node.createDecomposeMatrixNode( + gDriver.attr("worldMatrix[0]")) cps_node = pm.createNode("closestPointOnSurface") dm_node.attr("outputTranslate") >> cps_node.attr("inPosition") surfaceShape.attr("worldSpace[0]") >> cps_node.attr("inputSurface") cps_node.attr("position") >> slider.attr("translate") - pm.normalConstraint(surfaceShape, slider, aimVector=[0,0,1] , upVector=[0,1,0], worldUpType="objectrotation", worldUpVector=[0,1,0], worldUpObject=gDriver) + pm.normalConstraint(surfaceShape, + slider, + aimVector=[0, 0, 1], + upVector=[0, 1, 0], + worldUpType="objectrotation", + worldUpVector=[0, 1, 0], + worldUpObject=gDriver) pm.parent(ctlGhost.getParent(), slider) diff --git a/scripts/mgear/maya/rigbits/postSpring.py b/scripts/mgear/maya/rigbits/postSpring.py index 53262b3..c7b02dd 100644 --- a/scripts/mgear/maya/rigbits/postSpring.py +++ b/scripts/mgear/maya/rigbits/postSpring.py @@ -1,42 +1,18 @@ -# MGEAR is under the terms of the MIT License - -# Copyright (c) 2016 Jeremie Passerin, Miquel Campos - -# Permission is hereby granted, free of charge, to any person obtaining a copy -# of this software and associated documentation files (the "Software"), to deal -# in the Software without restriction, including without limitation the rights -# to use, copy, modify, merge, publish, distribute, sublicense, and/or sell -# copies of the Software, and to permit persons to whom the Software is -# furnished to do so, subject to the following conditions: - -# The above copyright notice and this permission notice shall be included in all -# copies or substantial portions of the Software. - -# THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR -# IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, -# FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE -# AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER -# LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, -# OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE -# SOFTWARE. - -# Author: Jeremie Passerin geerem@hotmail.com www.jeremiepasserin.com -# Author: Miquel Campos hello@miquel-campos.com www.miquel-campos.com -# Date: 2016 / 10 / 10 +"""Post Spring tool -""" -Post Spring tool, creates a spring dynamic rig on top of a pre-existing FK chain rig. +creates a spring dynamic rig on top of a pre-existing FK chain rig. """ import pymel.core as pm -import mgear.maya.attribute as att -import mgear.maya.applyop as aop +from mgear.maya import applyop, attribute -def postSpring(dist = 5, hostUI = False, hostUI2 = False, invertX=False ): - """ - Create the dynamic spring rig. This spring system use the mgear_spring node. And transfer the position spring +def postSpring(dist=5, hostUI=False, hostUI2=False, invertX=False): + """Create the dynamic spring rig. + + This spring system use the mgear_spring node + And transfer the position spring to rotation spring using an aim constraint. Note: @@ -45,150 +21,204 @@ def postSpring(dist = 5, hostUI = False, hostUI2 = False, invertX=False ): Args: dist (float): The distance of the position spring. hostUI (dagNode): The spring active and intensity channel host. - hostUI2 (dagNode): The daping and stiffness channel host for each object in the chain. + hostUI2 (dagNode): The daping and stiffness channel host for each + object in the chain. invertX (bool): reverse the direction of the x axis. """ oSel = pm.selected() if not hostUI2: - hostUI2 = oSel[0] - - aSpring_active = att.addAttribute(hostUI2, "spring_active_%s"%oSel[0].name(), "double", 1.0, "___spring_active_______%s"%oSel[0].name(), "spring_active_%s"%oSel[0].name(), 0, 1) - aSpring_intensity = att.addAttribute(hostUI2, "spring_intensity_%s"%oSel[0].name(), "double", 1.0, "___spring_intensity_______%s"%oSel[0].name(), "spring_intensity_%s"%oSel[0].name(), 0, 1) + hostUI2 = oSel[0] + + aSpring_active = attribute.addAttribute( + hostUI2, + "spring_active_%s" % oSel[0].name(), + "double", + 1.0, + "___spring_active_______%s" % oSel[0].name(), + "spring_active_%s" % oSel[0].name(), + 0, + 1) + + aSpring_intensity = attribute.addAttribute( + hostUI2, + "spring_intensity_%s" % oSel[0].name(), + "double", + 1.0, + "___spring_intensity_______%s" % oSel[0].name(), + "spring_intensity_%s" % oSel[0].name(), + 0, + 1) if invertX: - dist = dist *-1 - #aim constraint + dist = dist * -1 + # aim constraint aimAxis = "-xy" else: - #aim constraint + # aim constraint aimAxis = "xy" for obj in oSel: oParent = obj.getParent() - - - oNpo = pm.PyNode(pm.createNode("transform", n= obj.name() + "_npo", p=oParent, ss=True)) + oNpo = pm.PyNode(pm.createNode("transform", + n=obj.name() + "_npo", + p=oParent, + ss=True)) oNpo.setTransformation(obj.getMatrix()) pm.parent(obj, oNpo) - oSpring_cns = pm.PyNode(pm.createNode("transform", n= obj.name() + "_spr_cns", p=oNpo, ss=True)) + oSpring_cns = pm.PyNode(pm.createNode("transform", + n=obj.name() + "_spr_cns", + p=oNpo, + ss=True)) oSpring_cns.setTransformation(obj.getMatrix()) pm.parent(obj, oSpring_cns) - - oSpringLvl = pm.PyNode(pm.createNode("transform", n= obj.name() + "_spr_lvl", p=oNpo, ss=True)) + oSpringLvl = pm.PyNode(pm.createNode("transform", + n=obj.name() + "_spr_lvl", + p=oNpo, + ss=True)) oM = obj.getTransformation() - oM.addTranslation([dist, 0,0], "object") + oM.addTranslation([dist, 0, 0], "object") oSpringLvl.setTransformation(oM.asMatrix()) - oSpringDriver = pm.PyNode(pm.createNode("transform", n= obj.name() + "_spr", p=oSpringLvl, ss=True)) - + oSpringDriver = pm.PyNode(pm.createNode("transform", + n=obj.name() + "_spr", + p=oSpringLvl, + ss=True)) try: - defSet = pm.PyNode("rig_PLOT_grp") - pm.sets(defSet, add=oSpring_cns) - except: - defSet = pm.sets(name="rig_PLOT_grp") + defSet = pm.PyNode("rig_PLOT_grp") + pm.sets(defSet, add=oSpring_cns) + except TypeError: + defSet = pm.sets(name="rig_PLOT_grp") pm.sets(defSet, remove=obj) pm.sets(defSet, add=oSpring_cns) - #adding attributes: + # adding attributes: if not hostUI: hostUI = obj - - aSpring_damping = att.addAttribute(hostUI, "spring_damping_%s"%obj.name(), "double", .5, "damping_%s"%obj.name(), "damping_%s"%obj.name(), 0, 1) - aSpring_stiffness_ = att.addAttribute(hostUI, "spring_stiffness_%s"%obj.name(), "double", .5, "stiffness_%s"%obj.name(), "stiffness_%s"%obj.name(), 0, 1) - - - - - cns = aop.aimCns(oSpring_cns, oSpringDriver, aimAxis, 2, [0,1,0], oNpo, False) - - #change from fcurves to spring + aSpring_damping = attribute.addAttribute( + hostUI, + "spring_damping_%s" % obj.name(), + "double", + .5, + "damping_%s" % obj.name(), + "damping_%s" % obj.name(), + 0, + 1) + + aSpring_stiffness_ = attribute.addAttribute( + hostUI, + "spring_stiffness_%s" % obj.name(), + "double", + .5, + "stiffness_%s" % obj.name(), + "stiffness_%s" % obj.name(), + 0, + 1) + + cns = applyop.aimCns(oSpring_cns, + oSpringDriver, + aimAxis, + 2, + [0, 1, 0], + oNpo, + False) + + # change from fcurves to spring pb_node = pm.createNode("pairBlend") - pm.connectAttr(cns+".constraintRotateX", pb_node+".inRotateX2") - pm.connectAttr(cns+".constraintRotateY", pb_node+".inRotateY2") - pm.connectAttr(cns+".constraintRotateZ", pb_node+".inRotateZ2") - pm.setAttr(pb_node+".translateXMode", 2) - pm.setAttr(pb_node+".translateYMode", 2) - pm.setAttr(pb_node+".translateZMode", 2) - - - pm.connectAttr( pb_node+".outRotateX", oSpring_cns+".rotateX", f=True) - pm.connectAttr( pb_node+".outRotateY", oSpring_cns+".rotateY", f=True) - pm.connectAttr( pb_node+".outRotateZ", oSpring_cns+".rotateZ", f=True) - pm.setKeyframe( oSpring_cns, at="rotateX") - pm.setKeyframe( oSpring_cns, at="rotateY") - pm.setKeyframe( oSpring_cns, at="rotateZ") - - #add sprint op - springOP = aop.gear_spring_op(oSpringDriver) - - #connecting attributes - pm.connectAttr(aSpring_active, pb_node+".weight") - pm.connectAttr(aSpring_intensity, springOP+".intensity") - pm.connectAttr(aSpring_damping, springOP+".damping") - pm.connectAttr(aSpring_stiffness_, springOP+".stiffness") + pm.connectAttr(cns + ".constraintRotateX", pb_node + ".inRotateX2") + pm.connectAttr(cns + ".constraintRotateY", pb_node + ".inRotateY2") + pm.connectAttr(cns + ".constraintRotateZ", pb_node + ".inRotateZ2") + pm.setAttr(pb_node + ".translateXMode", 2) + pm.setAttr(pb_node + ".translateYMode", 2) + pm.setAttr(pb_node + ".translateZMode", 2) + + pm.connectAttr(pb_node + ".outRotateX", + oSpring_cns + ".rotateX", + f=True) + pm.connectAttr(pb_node + ".outRotateY", + oSpring_cns + ".rotateY", + f=True) + pm.connectAttr(pb_node + ".outRotateZ", + oSpring_cns + ".rotateZ", + f=True) + + pm.setKeyframe(oSpring_cns, at="rotateX") + pm.setKeyframe(oSpring_cns, at="rotateY") + pm.setKeyframe(oSpring_cns, at="rotateZ") + + # add sprint op + springOP = applyop.gear_spring_op(oSpringDriver) + + # connecting attributes + pm.connectAttr(aSpring_active, pb_node + ".weight") + pm.connectAttr(aSpring_intensity, springOP + ".intensity") + pm.connectAttr(aSpring_damping, springOP + ".damping") + pm.connectAttr(aSpring_stiffness_, springOP + ".stiffness") def spring_UI(*args): - """ - Creates the post tool UI. - """ + """Creates the post tool UI""" - if pm.window("mGear_spring_window", exists = True): + if pm.window("mGear_spring_window", exists=True): pm.deleteUI("mGear_spring_window") - window = pm.window("mGear_spring_window", title="mGear post Spring", w=350, h=200, mxb=False, sizeable=False) - - pm.rowColumnLayout( numberOfColumns=2, columnAttach=(1, 'right', 0), columnWidth=[(1, 100), (2, 250)] ) + window = pm.window("mGear_spring_window", + title="mGear post Spring", + w=350, + h=200, + mxb=False, + sizeable=False) + pm.rowColumnLayout(numberOfColumns=2, + columnAttach=(1, 'right', 0), + columnWidth=[(1, 100), (2, 250)]) pm.text("spring Distance: ") - pm.floatField( "distance", annotation="distane in X local for the spring position", w=50, value= 5) - pm.text(label="Invert X to -X: " ) + pm.floatField("distance", + annotation="distane in X local for the spring position", + w=50, + value=5) + pm.text(label="Invert X to -X: ") pm.checkBox("invertX", label=" Invert X direction to -X ") - pm.text(label="UI Host: " ) + pm.text(label="UI Host: ") pm.textField("hostUI") - - - pm.separator(h=10) - pm.button(label="Spring Me bro!!", w=150, h=50, command=build_spring) + pm.button(label="Spring Me bro!!", w=150, h=50, command=build_spring) pm.separator(h=10) pm.separator(h=10) pm.separator(h=10) - pm.text(label="Instructions: Select controls in order from root to tip", align="left" ) + pm.text(label="Instructions: Select controls in order from root to tip", + align="left") pm.separator(h=10) pm.separator(h=10) pm.separator(h=10) - pm.button(label="Baker", w=50, h=50, command=bake_spring) - + pm.button(label="Baker", w=50, h=50, command=bake_spring) pm.showWindow(window) + def build_spring(*args): - dist = pm.floatField("distance", q=True, v=True) - hostName = pm.textField("hostUI", q=True, text=True) - try: - hostUI = pm.PyNode(hostName) - except: - hostUI = False - invertX = pm.checkBox("invertX", q=True, v=True) + dist = pm.floatField("distance", q=True, v=True) + hostName = pm.textField("hostUI", q=True, text=True) + try: + hostUI = pm.PyNode(hostName) + except TypeError: + hostUI = False + invertX = pm.checkBox("invertX", q=True, v=True) + postSpring(dist, hostUI, hostUI, invertX) - postSpring(dist, hostUI, hostUI, invertX ) def bake_spring(*args): - """ - Shortcut fro the Maya's Bake Simulation Options. - """ + """Shortcut fro the Maya's Bake Simulation Options""" pm.BakeSimulationOptions() diff --git a/scripts/mgear/maya/rigbits/proxySlicer.py b/scripts/mgear/maya/rigbits/proxySlicer.py index 78ca8e1..27065ff 100644 --- a/scripts/mgear/maya/rigbits/proxySlicer.py +++ b/scripts/mgear/maya/rigbits/proxySlicer.py @@ -1,47 +1,17 @@ -# MGEAR is under the terms of the MIT License - -# Copyright (c) 2016 Jeremie Passerin, Miquel Campos - -# Permission is hereby granted, free of charge, to any person obtaining a copy -# of this software and associated documentation files (the "Software"), to deal -# in the Software without restriction, including without limitation the rights -# to use, copy, modify, merge, publish, distribute, sublicense, and/or sell -# copies of the Software, and to permit persons to whom the Software is -# furnished to do so, subject to the following conditions: - -# The above copyright notice and this permission notice shall be included in all -# copies or substantial portions of the Software. - -# THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR -# IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, -# FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE -# AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER -# LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, -# OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE -# SOFTWARE. - -# Author: Jeremie Passerin geerem@hotmail.com www.jeremiepasserin.com -# Author: Miquel Campos hello@miquel-campos.com www.miquel-campos.com -# Date: 2016 / 10 / 10 - - +"""Rigbits proxy mesh slicer""" import datetime import pymel.core as pm import mgear -import mgear.maya.applyop as aop -import mgear.maya.node as nod -import mgear.maya.transform as tra - +from mgear.maya import applyop, node, transform def slice(parent=False, oSel=False, *args): - """ - Create a proxy geometry from a skinned object. - """ + """Create a proxy geometry from a skinned object""" + startTime = datetime.datetime.now() print oSel if not oSel: @@ -53,7 +23,6 @@ def slice(parent=False, oSel=False, *args): oFaces = oSel.faces nFaces = oSel.numFaces() - faceGroups = [] for x in oColl: faceGroups.append([]) @@ -61,70 +30,102 @@ def slice(parent=False, oSel=False, *args): print sCluster sCName = sCluster[0].name() for iFace in range(nFaces): - faceVtx = oFaces[iFace].getVertices() + faceVtx = oFaces[iFace].getVertices() oSum = False for iVtx in faceVtx: - values = pm.skinPercent(sCName, oSel.vtx[iVtx], q=True, v=True ) + values = pm.skinPercent(sCName, oSel.vtx[iVtx], q=True, v=True) if oSum: - oSum = [L+l for L, l in zip(oSum, values)] + oSum = [L + l for L, l in zip(oSum, values)] else: oSum = values - print "adding face: " + str(iFace) + " to group in: " + str( oColl[ oSum.index(max(oSum))]) + print "adding face: " \ + + str(iFace) \ + + " to group in: " \ + + str(oColl[oSum.index(max(oSum))]) faceGroups[oSum.index(max(oSum))].append(iFace) - original = oSel if not parent: try: parentGroup = pm.PyNode("ProxyGeo") - except: - parentGroup = pm.createNode("transform", n="ProxyGeo" ) + except TypeError: + parentGroup = pm.createNode("transform", n="ProxyGeo") try: proxySet = pm.PyNode("rig_proxyGeo_grp") - except: - proxySet = pm.sets(name="rig_proxyGeo_grp", em=True) + except TypeError: + proxySet = pm.sets(name="rig_proxyGeo_grp", em=True) for boneList in faceGroups: if len(boneList): - newObj = pm.duplicate(original, rr=True, name= oColl[faceGroups.index(boneList)] + "_Proxy") - for trans in ["tx", "ty", "tz", "rx", "ry", "rz", "sx", "sy", "sz"]: + newObj = pm.duplicate( + original, + rr=True, + name=oColl[faceGroups.index(boneList)] + "_Proxy") + + for trans in ["tx", + "ty", + "tz", + "rx", + "ry", + "rz", + "sx", + "sy", + "sz"]: pm.setAttr(newObj[0].name() + "." + trans, lock=0) c = list(newObj[0].faces) - for index in reversed(boneList): c.pop(index) pm.delete(c) if parent: - pm.parent(newObj, pm.PyNode(oColl[faceGroups.index(boneList)]), a=True) + pm.parent(newObj, + pm.PyNode(oColl[faceGroups.index(boneList)]), + a=True) else: pm.parent(newObj, parentGroup, a=True) dummyCopy = pm.duplicate(newObj[0])[0] pm.delete(newObj[0].listRelatives(c=True)) - tra.matchWorldTransform(pm.PyNode(oColl[faceGroups.index(boneList)]), newObj[0]) - pm.parent(dummyCopy.listRelatives(c=True)[0], newObj[0], shape=True) + + transform.matchWorldTransform( + pm.PyNode(oColl[faceGroups.index(boneList)]), newObj[0]) + + pm.parent(dummyCopy.listRelatives(c=True)[0], + newObj[0], + shape=True) + pm.delete(dummyCopy) - pm.rename(newObj[0].listRelatives(c=True)[0],newObj[0].name() + "_offset" ) - mulmat_node = aop.gear_mulmatrix_op( - pm.PyNode(oColl[faceGroups.index(boneList)]).name() + ".worldMatrix", + + pm.rename(newObj[0].listRelatives(c=True)[0], + newObj[0].name() + "_offset") + + o_multiplayer = pm.PyNode(oColl[faceGroups.index(boneList)]) + mulmat_node = applyop.gear_mulmatrix_op( + o_multiplayer.name() + ".worldMatrix", newObj[0].name() + ".parentInverseMatrix") - dm_node = nod.createDecomposeMatrixNode(mulmat_node+".output") - pm.connectAttr(dm_node+".outputTranslate", newObj[0].name()+".t") - pm.connectAttr(dm_node+".outputRotate", newObj[0].name()+".r") - pm.connectAttr(dm_node+".outputScale", newObj[0].name()+".s") - print "Creating proxy for: " + str(oColl[faceGroups.index(boneList)]) + outPlug = mulmat_node + ".output" + dm_node = node.createDecomposeMatrixNode(outPlug) - pm.sets(proxySet, add=newObj) + pm.connectAttr(dm_node + ".outputTranslate", + newObj[0].name() + ".t") + pm.connectAttr(dm_node + ".outputRotate", + newObj[0].name() + ".r") + pm.connectAttr(dm_node + ".outputScale", + newObj[0].name() + ".s") + print "Creating proxy for: {}".format( + str(oColl[faceGroups.index(boneList)])) + + pm.sets(proxySet, add=newObj) endTime = datetime.datetime.now() finalTime = endTime - startTime - mgear.log("=============== Slicing for: %s finish ======= [ %s ] ======" %(oSel.name(), str(finalTime) )) + mgear.log("=============== Slicing for: %s finish ======= [ %s ] ===" + "===" % (oSel.name(), str(finalTime))) diff --git a/scripts/mgear/maya/rigbits/rivet.py b/scripts/mgear/maya/rigbits/rivet.py index 296e2ae..38199be 100644 --- a/scripts/mgear/maya/rigbits/rivet.py +++ b/scripts/mgear/maya/rigbits/rivet.py @@ -1,103 +1,100 @@ - -# Permission is hereby granted, free of charge, to any person obtaining a copy -# of this software and associated documentation files (the "Software"), to deal -# in the Software without restriction, including without limitation the rights -# to use, copy, modify, merge, publish, distribute, sublicense, and/or sell -# copies of the Software, and to permit persons to whom the Software is -# furnished to do so, subject to the following conditions: - -# The above copyright notice and this permission notice shall be included in all -# copies or substantial portions of the Software. - -# THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR -# IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, -# FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE -# AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER -# LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, -# OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE -# SOFTWARE. - -# Author: Jeremie Passerin geerem@hotmail.com www.jeremiepasserin.com -# Author: Miquel Campos hello@miquel-campos.com www.miquel-campos.com -# Date: 2016 / 10 / 10 +"""Rigbits rivet creator""" import pymel.core as pm - - class rivet(): - """ - Create a rivet + """Create a rivet + Thanks to http://jinglezzz.tumblr.com for the tutorial :) """ def create(self, mesh, edge1, edge2, parent, name=None): self.sources = { - 'oMesh' : mesh, - 'edgeIndex1' : edge1, - 'edgeIndex2' : edge2 + 'oMesh': mesh, + 'edgeIndex1': edge1, + 'edgeIndex2': edge2 } self.createNodes() self.createConnections() self.setAttributes() if parent: - pm.parent( self.node['locator'].getParent(), parent) + pm.parent(self.o_node['locator'].getParent(), parent) if name: - pm.rename(self.node['locator'].getParent(), name) - - return self.node['locator'].getParent() + pm.rename(self.o_node['locator'].getParent(), name) + return self.o_node['locator'].getParent() def createNodes(self, *args): - self.node = { - 'meshEdgeNode1' : pm.createNode('curveFromMeshEdge'), - 'meshEdgeNode2' : pm.createNode('curveFromMeshEdge'), - 'ptOnSurfaceIn' : pm.createNode('pointOnSurfaceInfo'), - 'matrixNode' : pm.createNode('fourByFourMatrix'), - 'decomposeMatrix' : pm.createNode('decomposeMatrix'), - 'loftNode' : pm.createNode('loft'), - 'locator' : pm.createNode('locator') + self.o_node = { + 'meshEdgeNode1': pm.createNode('curveFromMeshEdge'), + 'meshEdgeNode2': pm.createNode('curveFromMeshEdge'), + 'ptOnSurfaceIn': pm.createNode('pointOnSurfaceInfo'), + 'matrixNode': pm.createNode('fourByFourMatrix'), + 'decomposeMatrix': pm.createNode('decomposeMatrix'), + 'loftNode': pm.createNode('loft'), + 'locator': pm.createNode('locator') } - def createConnections(self, *args): - self.sources['oMesh'].worldMesh.connect(self.node['meshEdgeNode1'].inputMesh) - self.sources['oMesh'].worldMesh.connect(self.node['meshEdgeNode2'].inputMesh) - self.node['meshEdgeNode1'].outputCurve.connect(self.node['loftNode'].inputCurve[0]) - self.node['meshEdgeNode2'].outputCurve.connect(self.node['loftNode'].inputCurve[1]) - self.node['loftNode'].outputSurface.connect(self.node['ptOnSurfaceIn'].inputSurface) - self.node['ptOnSurfaceIn'].normalizedNormalX.connect(self.node['matrixNode'].in00) - self.node['ptOnSurfaceIn'].normalizedNormalY.connect(self.node['matrixNode'].in01) - self.node['ptOnSurfaceIn'].normalizedNormalZ.connect(self.node['matrixNode'].in02) - self.node['ptOnSurfaceIn'].normalizedTangentUX.connect(self.node['matrixNode'].in10) - self.node['ptOnSurfaceIn'].normalizedTangentUY.connect(self.node['matrixNode'].in11) - self.node['ptOnSurfaceIn'].normalizedTangentUZ.connect(self.node['matrixNode'].in12) - self.node['ptOnSurfaceIn'].normalizedTangentVX.connect(self.node['matrixNode'].in20) - self.node['ptOnSurfaceIn'].normalizedTangentVY.connect(self.node['matrixNode'].in21) - self.node['ptOnSurfaceIn'].normalizedTangentVZ.connect(self.node['matrixNode'].in22) - self.node['ptOnSurfaceIn'].positionX.connect(self.node['matrixNode'].in30) - self.node['ptOnSurfaceIn'].positionY.connect(self.node['matrixNode'].in31) - self.node['ptOnSurfaceIn'].positionZ.connect(self.node['matrixNode'].in32) - self.node['matrixNode'].output.connect(self.node['decomposeMatrix'].inputMatrix) - self.node['decomposeMatrix'].outputTranslate.connect(self.node['locator'].getParent().translate) - self.node['decomposeMatrix'].outputRotate.connect(self.node['locator'].getParent().rotate) - self.node['locator'].attr("visibility").set(False) + self.sources['oMesh'].worldMesh.connect( + self.o_node['meshEdgeNode1'].inputMesh) + self.sources['oMesh'].worldMesh.connect( + self.o_node['meshEdgeNode2'].inputMesh) + self.o_node['meshEdgeNode1'].outputCurve.connect( + self.o_node['loftNode'].inputCurve[0]) + self.o_node['meshEdgeNode2'].outputCurve.connect( + self.o_node['loftNode'].inputCurve[1]) + self.o_node['loftNode'].outputSurface.connect( + self.o_node['ptOnSurfaceIn'].inputSurface) + self.o_node['ptOnSurfaceIn'].normalizedNormalX.connect( + self.o_node['matrixNode'].in00) + self.o_node['ptOnSurfaceIn'].normalizedNormalY.connect( + self.o_node['matrixNode'].in01) + self.o_node['ptOnSurfaceIn'].normalizedNormalZ.connect( + self.o_node['matrixNode'].in02) + self.o_node['ptOnSurfaceIn'].normalizedTangentUX.connect( + self.o_node['matrixNode'].in10) + self.o_node['ptOnSurfaceIn'].normalizedTangentUY.connect( + self.o_node['matrixNode'].in11) + self.o_node['ptOnSurfaceIn'].normalizedTangentUZ.connect( + self.o_node['matrixNode'].in12) + self.o_node['ptOnSurfaceIn'].normalizedTangentVX.connect( + self.o_node['matrixNode'].in20) + self.o_node['ptOnSurfaceIn'].normalizedTangentVY.connect( + self.o_node['matrixNode'].in21) + self.o_node['ptOnSurfaceIn'].normalizedTangentVZ.connect( + self.o_node['matrixNode'].in22) + self.o_node['ptOnSurfaceIn'].positionX.connect( + self.o_node['matrixNode'].in30) + self.o_node['ptOnSurfaceIn'].positionY.connect( + self.o_node['matrixNode'].in31) + self.o_node['ptOnSurfaceIn'].positionZ.connect( + self.o_node['matrixNode'].in32) + self.o_node['matrixNode'].output.connect( + self.o_node['decomposeMatrix'].inputMatrix) + self.o_node['decomposeMatrix'].outputTranslate.connect( + self.o_node['locator'].getParent().translate) + self.o_node['decomposeMatrix'].outputRotate.connect( + self.o_node['locator'].getParent().rotate) + self.o_node['locator'].attr("visibility").set(False) def setAttributes(self): - self.node['meshEdgeNode1'].isHistoricallyInteresting.set(1) - self.node['meshEdgeNode2'].isHistoricallyInteresting.set(1) - self.node['meshEdgeNode1'].edgeIndex[0].set(self.sources['edgeIndex1']) - self.node['meshEdgeNode2'].edgeIndex[0].set(self.sources['edgeIndex2']) - - self.node['loftNode'].reverseSurfaceNormals.set(1) - self.node['loftNode'].inputCurve.set(size=2) - self.node['loftNode'].uniform.set(True) - self.node['loftNode'].sectionSpans.set(3) - self.node['loftNode'].caching.set(True) - - self.node['ptOnSurfaceIn'].turnOnPercentage.set(True) - self.node['ptOnSurfaceIn'].parameterU.set(0.5) - self.node['ptOnSurfaceIn'].parameterV.set(0.5) - self.node['ptOnSurfaceIn'].caching.set(True) + self.o_node['meshEdgeNode1'].isHistoricallyInteresting.set(1) + self.o_node['meshEdgeNode2'].isHistoricallyInteresting.set(1) + self.o_node['meshEdgeNode1'].edgeIndex[0].set( + self.sources['edgeIndex1']) + self.o_node['meshEdgeNode2'].edgeIndex[0].set( + self.sources['edgeIndex2']) + + self.o_node['loftNode'].reverseSurfaceNormals.set(1) + self.o_node['loftNode'].inputCurve.set(size=2) + self.o_node['loftNode'].uniform.set(True) + self.o_node['loftNode'].sectionSpans.set(3) + self.o_node['loftNode'].caching.set(True) + + self.o_node['ptOnSurfaceIn'].turnOnPercentage.set(True) + self.o_node['ptOnSurfaceIn'].parameterU.set(0.5) + self.o_node['ptOnSurfaceIn'].parameterV.set(0.5) + self.o_node['ptOnSurfaceIn'].caching.set(True) diff --git a/scripts/mgear/maya/rigbits/rope.py b/scripts/mgear/maya/rigbits/rope.py index cd09338..e7f7568 100644 --- a/scripts/mgear/maya/rigbits/rope.py +++ b/scripts/mgear/maya/rigbits/rope.py @@ -1,44 +1,22 @@ -# MGEAR is under the terms of the MIT License - -# Copyright (c) 2016 Jeremie Passerin, Miquel Campos - -# Permission is hereby granted, free of charge, to any person obtaining a copy -# of this software and associated documentation files (the "Software"), to deal -# in the Software without restriction, including without limitation the rights -# to use, copy, modify, merge, publish, distribute, sublicense, and/or sell -# copies of the Software, and to permit persons to whom the Software is -# furnished to do so, subject to the following conditions: - -# The above copyright notice and this permission notice shall be included in all -# copies or substantial portions of the Software. - -# THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR -# IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, -# FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE -# AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER -# LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, -# OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE -# SOFTWARE. - -# Author: Jeremie Passerin geerem@hotmail.com www.jeremiepasserin.com -# Author: Miquel Campos hello@miquel-campos.com www.miquel-campos.com -# Date: 2016 / 10 / 10 +"""Rigbits Rope rig creator""" import pymel.core as pm - -import mgear.maya.applyop as aop -import mgear.maya.rigbits as rt +from mgear.maya import applyop, rigbits -def rope(DEF_nb=10, ropeName="rope", keepRatio=False, lvlType="transform", oSel=None): - """ - Create rope rig based in 2 parallel curves. +def rope(DEF_nb=10, + ropeName="rope", + keepRatio=False, + lvlType="transform", + oSel=None): + """Create rope rig based in 2 parallel curves. Args: DEF_nb (int): Number of deformer joints. ropeName (str): Name for the rope rig. - keepRatio (bool): If True, the deformers will keep the length position when the curve is stretched. + keepRatio (bool): If True, the deformers will keep the length + position when the curve is stretched. """ if oSel and len(oSel) == 2 and isinstance(oSel, list): oCrv = oSel[0] @@ -48,60 +26,70 @@ def rope(DEF_nb=10, ropeName="rope", keepRatio=False, lvlType="transform", oSel if isinstance(oCrvUpV, str): oCrvUpV = pm.PyNode(oCrvUpV) else: - if len( pm.selected()) !=2: + if len(pm.selected()) != 2: print "You need to select 2 nurbsCurve" return oCrv = pm.selected()[0] oCrvUpV = pm.selected()[1] - if oCrv.getShape().type() != "nurbsCurve" or oCrvUpV.getShape().type() != "nurbsCurve": + if (oCrv.getShape().type() != "nurbsCurve" + or oCrvUpV.getShape().type() != "nurbsCurve"): print "One of the selected objects is not of type: 'nurbsCurve'" print oCrv.getShape().type() - print oCrvUpV.getShape().type() + print oCrvUpV.getShape().type() return if keepRatio: arclen_node = pm.arclen(oCrv, ch=True) alAttr = pm.getAttr(arclen_node + ".arcLength") - muldiv_node = pm.createNode("multiplyDivide") - pm.connectAttr(arclen_node+".arcLength", muldiv_node+".input1X") - pm.setAttr(muldiv_node+".input2X", alAttr) - pm.setAttr(muldiv_node+".operation", 2) + muldiv_node = pm.createNode("multiplyDivide") + pm.connectAttr(arclen_node + ".arcLength", muldiv_node + ".input1X") + pm.setAttr(muldiv_node + ".input2X", alAttr) + pm.setAttr(muldiv_node + ".operation", 2) pm.addAttr(oCrv, ln="length_ratio", k=True, w=True) - pm.connectAttr(muldiv_node+".outputX", oCrv+".length_ratio") + pm.connectAttr(muldiv_node + ".outputX", oCrv + ".length_ratio") - root = pm.PyNode(pm.createNode(lvlType, n= ropeName + "_root", ss=True)) - step = 1.000/(DEF_nb -1) + root = pm.PyNode(pm.createNode(lvlType, n=ropeName + "_root", ss=True)) + step = 1.000 / (DEF_nb - 1) i = 0.000 shds = [] for x in range(DEF_nb): - oTransUpV = pm.PyNode(pm.createNode(lvlType, n= ropeName + str(x).zfill(3) + "_upv", p=root, ss=True)) - oTrans = pm.PyNode(pm.createNode(lvlType, n= ropeName + str(x).zfill(3) + "_lvl", p=root, ss=True)) + oTransUpV = pm.PyNode(pm.createNode( + lvlType, n=ropeName + str(x).zfill(3) + "_upv", p=root, ss=True)) - cnsUpv = aop.pathCns(oTransUpV, oCrvUpV, cnsType=False, u=i, tangent=False) - cns = aop.pathCns(oTrans, oCrv, cnsType=False, u=i, tangent=False) + oTrans = pm.PyNode(pm.createNode( + lvlType, n=ropeName + str(x).zfill(3) + "_lvl", p=root, ss=True)) - if keepRatio: - muldiv_node2 = pm.createNode("multiplyDivide") - condition_node = pm.createNode("condition") - pm.setAttr(muldiv_node2+".operation", 2) - pm.setAttr(muldiv_node2+".input1X", i) - pm.connectAttr(oCrv+".length_ratio", muldiv_node2+".input2X") - pm.connectAttr(muldiv_node2+".outputX", condition_node+".colorIfFalseR") - pm.connectAttr(muldiv_node2+".outputX", condition_node+".secondTerm") - pm.connectAttr(muldiv_node2+".input1X", condition_node+".colorIfTrueR") - pm.connectAttr(muldiv_node2+".input1X", condition_node+".firstTerm") - pm.setAttr(condition_node+".operation", 4) + cnsUpv = applyop.pathCns( + oTransUpV, oCrvUpV, cnsType=False, u=i, tangent=False) + cns = applyop.pathCns(oTrans, oCrv, cnsType=False, u=i, tangent=False) - pm.connectAttr(condition_node+".outColorR", cnsUpv+".uValue") - pm.connectAttr(condition_node+".outColorR", cns+".uValue") + if keepRatio: + muldiv_node2 = pm.createNode("multiplyDivide") + condition_node = pm.createNode("condition") + pm.setAttr(muldiv_node2 + ".operation", 2) + pm.setAttr(muldiv_node2 + ".input1X", i) + pm.connectAttr(oCrv + ".length_ratio", muldiv_node2 + ".input2X") + pm.connectAttr(muldiv_node2 + ".outputX", + condition_node + ".colorIfFalseR") + pm.connectAttr(muldiv_node2 + ".outputX", + condition_node + ".secondTerm") + pm.connectAttr(muldiv_node2 + ".input1X", + condition_node + ".colorIfTrueR") + pm.connectAttr(muldiv_node2 + ".input1X", + condition_node + ".firstTerm") + pm.setAttr(condition_node + ".operation", 4) + + pm.connectAttr(condition_node + ".outColorR", cnsUpv + ".uValue") + pm.connectAttr(condition_node + ".outColorR", cns + ".uValue") cns.setAttr("worldUpType", 1) cns.setAttr("frontAxis", 0) cns.setAttr("upAxis", 1) - pm.connectAttr(oTransUpV.attr("worldMatrix[0]"),cns.attr("worldUpMatrix")) - shd = rt.addJnt(oTrans) + pm.connectAttr(oTransUpV.attr("worldMatrix[0]"), + cns.attr("worldUpMatrix")) + shd = rigbits.addJnt(oTrans) shds.append(shd[0]) i += step @@ -109,37 +97,46 @@ def rope(DEF_nb=10, ropeName="rope", keepRatio=False, lvlType="transform", oSel def rope_UI(*args): - """ - Rope tool UI - """ + """Rope tool UI""" - if pm.window("mGear_rope_window", exists = True): + if pm.window("mGear_rope_window", exists=True): pm.deleteUI("mGear_rope_window") - window = pm.window("mGear_rope_window", title="mGear rope rig generator", w=350, h=150, mxb=False, sizeable=False) - - pm.rowColumnLayout( numberOfColumns=2, columnAttach=(1, 'right', 0), columnWidth=[(1, 100), (2, 250)] ) + window = pm.window("mGear_rope_window", + title="mGear rope rig generator", + w=350, + h=150, + mxb=False, + sizeable=False) + pm.rowColumnLayout(numberOfColumns=2, + columnAttach=(1, 'right', 0), + columnWidth=[(1, 100), (2, 250)]) pm.text("Nb of deformers: ") - pm.intField( "nbDeformers", annotation="number of deformers", w=50, value= 10) - pm.text(label="Keep position " ) + + pm.intField("nbDeformers", + annotation="number of deformers", + w=50, + value=10) + + pm.text(label="Keep position ") pm.checkBox("keepRatio", label=" (base on ratio) ") - pm.text(label="Name: " ) + pm.text(label="Name: ") pm.textField("RopeName", text="Rope") pm.separator(h=10) - pm.button(label="Build the rope!", w=150, h=50, command=build_rope) + pm.button(label="Build the rope!", w=150, h=50, command=build_rope) pm.separator(h=10) pm.separator(h=10) pm.separator(h=10) - pm.text(label="Instructions: Select ctl crv + upv crv", align="left" ) + pm.text(label="Instructions: Select ctl crv + upv crv", align="left") pm.showWindow(window) def build_rope(*args): - DEF_nb = pm.intField("nbDeformers", q=True, v=True) - ropeName = pm.textField("RopeName", q=True, text=True) - keepRatio = pm.checkBox("keepRatio", q=True, v=True) - rope(DEF_nb, ropeName, keepRatio) + DEF_nb = pm.intField("nbDeformers", q=True, v=True) + ropeName = pm.textField("RopeName", q=True, text=True) + keepRatio = pm.checkBox("keepRatio", q=True, v=True) + rope(DEF_nb, ropeName, keepRatio) diff --git a/scripts/mgear/maya/rigbits/tweaks.py b/scripts/mgear/maya/rigbits/tweaks.py index 7c02cfb..2a5c9e2 100644 --- a/scripts/mgear/maya/rigbits/tweaks.py +++ b/scripts/mgear/maya/rigbits/tweaks.py @@ -1,41 +1,10 @@ - -# Permission is hereby granted, free of charge, to any person obtaining a copy -# of this software and associated documentation files (the "Software"), to deal -# in the Software without restriction, including without limitation the rights -# to use, copy, modify, merge, publish, distribute, sublicense, and/or sell -# copies of the Software, and to permit persons to whom the Software is -# furnished to do so, subject to the following conditions: - -# The above copyright notice and this permission notice shall be included in all -# copies or substantial portions of the Software. - -# THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR -# IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, -# FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE -# AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER -# LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, -# OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE -# SOFTWARE. - -# Author: Jeremie Passerin geerem@hotmail.com www.jeremiepasserin.com -# Author: Miquel Campos hello@miquel-campos.com www.miquel-campos.com -# Date: 2016 / 10 / 10 - - +"""Rigbits tweaks rig module""" import pymel.core as pm -import pymel.core.datatypes as dt +from pymel.core import datatypes - - -import mgear.maya.skin as ski -import mgear.maya.primitive as pri -import mgear.maya.icon as ico -import mgear.maya.transform as tra -import mgear.maya.attribute as att - -import mgear.maya.rigbits.blendShapes as bsp -import mgear.maya.rigbits.rivet as rvt +from mgear.maya import skin, primitive, icon, transform, attribute +from . import rivet, blendShapes def resetJntLocalSRT(jnt): @@ -45,33 +14,41 @@ def resetJntLocalSRT(jnt): jnt (joint): The joint to reset the local SRT """ for axis in "XYZ": - pm.setAttr(jnt+".jointOrient"+axis, 0) - pm.setAttr(jnt+".rotate"+axis, 0) - pm.setAttr(jnt+".translate"+axis, 0) + pm.setAttr(jnt + ".jointOrient" + axis, 0) + pm.setAttr(jnt + ".rotate" + axis, 0) + pm.setAttr(jnt + ".translate" + axis, 0) def doritosMagic(mesh, joint, jointBase, parent=None): - #magic of doritos connection - skinCluster = ski.getSkinCluster(mesh) + # magic of doritos connection + skinCluster = skin.getSkinCluster(mesh) if not skinCluster: if pm.objExists('static_jnt') is not True: - static_jnt = pri.addJoint(parent, "static_jnt", m=dt.Matrix(), vis=True) + static_jnt = primitive.addJoint( + parent, "static_jnt", m=datatypes.Matrix(), vis=True) static_jnt = pm.PyNode("static_jnt") - #apply initial skincluster - skinCluster = pm.skinCluster(static_jnt, mesh, tsb=True, nw=2, n='%s_skinCluster'%mesh.name()) + # apply initial skincluster + skinCluster = pm.skinCluster( + static_jnt, mesh, tsb=True, nw=2, n='%s_skinCluster' % mesh.name()) try: - # we try to add the joint to the skin cluster. Will fail if is already in the skin cluster - pm.skinCluster(skinCluster, e=True, ai=joint, lw=True, wt=0) - except: - pm.displayInfo("The Joint: %s is already in the %s."%(joint.name(),skinCluster.name()) ) + # we try to add the joint to the skin cluster. Will fail if is already + # in the skin cluster + pm.skinCluster(skinCluster, e=True, ai=joint, lw=True, wt=0) + except Exception: + pm.displayInfo("The Joint: %s is already in the %s." % ( + joint.name(), skinCluster.name())) pass cn = joint.listConnections(p=True, type="skinCluster") for x in cn: - if x.type()=="matrix": + if x.type() == "matrix": if x.name().split(".")[0] == skinCluster.name(): - # We force to avoid errors in case the joint is already connected - pm.connectAttr(jointBase + ".worldInverseMatrix[0]", skinCluster + ".bindPreMatrix["+str(x.index())+"]", f=True) + # We force to avoid errors in case the joint is already + # connected + pm.connectAttr( + jointBase + ".worldInverseMatrix[0]", + skinCluster + ".bindPreMatrix[" + str(x.index()) + "]", + f=True) def createJntTweak(mesh, parentJnt, ctlParent): @@ -88,34 +65,57 @@ def createJntTweak(mesh, parentJnt, ctlParent): name = "_".join(parentJnt.name().split("_")[:3]) # create joints - jointBase = pri.addJoint(parentJnt, name +"_tweak_jnt_lvl", parentJnt.getMatrix(worldSpace=True)) + jointBase = primitive.addJoint(parentJnt, + name + "_tweak_jnt_lvl", + parentJnt.getMatrix(worldSpace=True)) resetJntLocalSRT(jointBase) - joint = pri.addJoint(jointBase, name +"_tweak_jnt", parentJnt.getMatrix(worldSpace=True)) + joint = primitive.addJoint(jointBase, + name + "_tweak_jnt", + parentJnt.getMatrix(worldSpace=True)) resetJntLocalSRT(joint) - #hidding joint base by changing the draw mode + # hidding joint base by changing the draw mode # pm.setAttr(jointBase+".drawStyle", 2) try: defSet = pm.PyNode("rig_deformers_grp") - except: + except TypeError: pm.sets(n="rig_deformers_grp") defSet = pm.PyNode("rig_deformers_grp") pm.sets(defSet, add=joint) controlType = "circle" - iconBase = ico.create(ctlParent, name + "_base_tweak_ctl", ctlParent.getMatrix(worldSpace=True), 13, controlType, w=.8, ro=dt.Vector(0,0,1.5708)) - icon = ico.create(iconBase, name + "_tweak_ctl", ctlParent.getMatrix(worldSpace=True), 17, controlType, w=.5, ro=dt.Vector(0,0,1.5708)) + iconBase = icon.create(ctlParent, + name + "_base_tweak_ctl", + ctlParent.getMatrix(worldSpace=True), + 13, + controlType, + w=.8, + ro=datatypes.Vector(0, 0, 1.5708)) + o_icon = icon.create(iconBase, name + "_tweak_ctl", + ctlParent.getMatrix(worldSpace=True), + 17, + controlType, + w=.5, + ro=datatypes.Vector(0, 0, 1.5708)) + for t in [".translate", ".scale", ".rotate"]: pm.connectAttr(iconBase + t, jointBase + t) - pm.connectAttr(icon + t, joint + t) + pm.connectAttr(o_icon + t, joint + t) - #magic of doritos connection + # magic of doritos connection for m in mesh: doritosMagic(m, joint, jointBase) -def createRivetTweak(mesh, edgePair, name, parent=None, ctlParent=None, color=[0,0,0], size=.04, defSet=None): +def createRivetTweak(mesh, + edgePair, + name, + parent=None, + ctlParent=None, + color=[0, 0, 0], + size=.04, + defSet=None): """Create a tweak joint attached to the mesh using a rivet Args: @@ -126,11 +126,11 @@ def createRivetTweak(mesh, edgePair, name, parent=None, ctlParent=None, color=[ ctlParent (None or dagNode, optional): The parent for the tweak control color (list, optional): The color for the control """ - blendShape = bsp.getBlendShape(mesh) + blendShape = blendShapes.getBlendShape(mesh) inputMesh = blendShape.listConnections(sh=True, t="shape", d=False)[0] - oRivet = rvt.rivet() + oRivet = rivet.rivet() base = oRivet.create(inputMesh, edgePair[0], edgePair[1], parent) # get side if base.getTranslation(space='world')[0] < -0.01: @@ -141,11 +141,13 @@ def createRivetTweak(mesh, edgePair, name, parent=None, ctlParent=None, color=[ side = "C" nameSide = name + "_tweak_" + side - nameNeutral = name + "_tweak" pm.rename(base, nameSide) - #Joints NPO - npo = pm.PyNode(pm.createNode("transform", n=nameSide+"_npo", p=ctlParent, ss=True)) + # Joints NPO + npo = pm.PyNode(pm.createNode("transform", + n=nameSide + "_npo", + p=ctlParent, + ss=True)) pm.pointConstraint(base, npo) # set proper orientation @@ -157,64 +159,86 @@ def createRivetTweak(mesh, edgePair, name, parent=None, ctlParent=None, color=[ temp.attr("tx").set(1) lookat = temp.getTranslation(space="world") - up = dt.Vector(0,1,0) + up = datatypes.Vector(0, 1, 0) - t = tra.getTransformLookingAt(pos, lookat, up, axis="xy", negate=False) + t = transform.getTransformLookingAt(pos, + lookat, + up, + axis="xy", + negate=False) npo.setMatrix(t, worldSpace=True) pm.delete(temp) # create joints - jointBase = pri.addJoint(npo, nameSide +"_jnt_lvl") - joint = pri.addJoint(jointBase, nameSide +"_jnt") + jointBase = primitive.addJoint(npo, nameSide + "_jnt_lvl") + joint = primitive.addJoint(jointBase, nameSide + "_jnt") - #hidding joint base by changing the draw mode - pm.setAttr(jointBase+".drawStyle", 2) + # hidding joint base by changing the draw mode + pm.setAttr(jointBase + ".drawStyle", 2) if not defSet: try: defSet = pm.PyNode("rig_deformers_grp") - except: + except TypeError: pm.sets(n="rig_deformers_grp") defSet = pm.PyNode("rig_deformers_grp") pm.sets(defSet, add=joint) controlType = "sphere" - icon = ico.create(jointBase, nameSide + "_ctl", pm.datatypes.Matrix(), color, controlType, w=size) + o_icon = icon.create(jointBase, nameSide + "_ctl", + datatypes.Matrix(), + color, + controlType, + w=size) for t in [".translate", ".scale", ".rotate"]: - pm.connectAttr(icon + t, joint + t) + pm.connectAttr(o_icon + t, joint + t) # create the attributes to handlde mirror and symetrical pose - att.addAttribute(icon, "invTx", "bool", 0, keyable=False, niceName="Invert Mirror TX") - att.addAttribute(icon, "invTy", "bool", 0, keyable=False, niceName="Invert Mirror TY") - att.addAttribute(icon, "invTz", "bool", 0, keyable=False, niceName="Invert Mirror TZ") - att.addAttribute(icon, "invRx", "bool", 0, keyable=False, niceName="Invert Mirror RX") - att.addAttribute(icon, "invRy", "bool", 0, keyable=False, niceName="Invert Mirror RY") - att.addAttribute(icon, "invRz", "bool", 0, keyable=False, niceName="Invert Mirror RZ") - att.addAttribute(icon, "invSx", "bool", 0, keyable=False, niceName="Invert Mirror SX") - att.addAttribute(icon, "invSy", "bool", 0, keyable=False, niceName="Invert Mirror SY") - att.addAttribute(icon, "invSz", "bool", 0, keyable=False, niceName="Invert Mirror SZ") - - #magic of doritos connection + attribute.addAttribute( + o_icon, "invTx", "bool", 0, keyable=False, niceName="Invert Mirror TX") + attribute.addAttribute( + o_icon, "invTy", "bool", 0, keyable=False, niceName="Invert Mirror TY") + attribute.addAttribute( + o_icon, "invTz", "bool", 0, keyable=False, niceName="Invert Mirror TZ") + attribute.addAttribute( + o_icon, "invRx", "bool", 0, keyable=False, niceName="Invert Mirror RX") + attribute.addAttribute( + o_icon, "invRy", "bool", 0, keyable=False, niceName="Invert Mirror RY") + attribute.addAttribute( + o_icon, "invRz", "bool", 0, keyable=False, niceName="Invert Mirror RZ") + attribute.addAttribute( + o_icon, "invSx", "bool", 0, keyable=False, niceName="Invert Mirror SX") + attribute.addAttribute( + o_icon, "invSy", "bool", 0, keyable=False, niceName="Invert Mirror SY") + attribute.addAttribute( + o_icon, "invSz", "bool", 0, keyable=False, niceName="Invert Mirror SZ") + + # magic of doritos connection doritosMagic(mesh, joint, jointBase) # reset axis and inver behaviour for axis in "XYZ": - pm.setAttr(jointBase+".jointOrient"+axis, 0) - pm.setAttr(npo+".translate"+axis, 0) - pm.setAttr(jointBase+".translate"+axis, 0) + pm.setAttr(jointBase + ".jointOrient" + axis, 0) + pm.setAttr(npo + ".translate" + axis, 0) + pm.setAttr(jointBase + ".translate" + axis, 0) - p = icon.getParent().getParent() + p = o_icon.getParent().getParent() pp = p.getParent() pm.parent(p, w=True) for axis in "xyz": - p.attr("r"+axis).set(0) + p.attr("r" + axis).set(0) if side == "R": p.attr("ry").set(180) p.attr("sz").set(-1) pm.parent(p, pp) - return icon + return o_icon + -def createRivetTweakFromList(mesh, edgeIndexPairList, name, parent=None, ctlParent=None, color=[0,0,0]): +def createRivetTweakFromList(mesh, + edgeIndexPairList, + name, parent=None, + ctlParent=None, + color=[0, 0, 0]): """Create multiple rivet tweaks from a list of edge pairs Args: @@ -227,11 +251,22 @@ def createRivetTweakFromList(mesh, edgeIndexPairList, name, parent=None, ctlPare """ ctlList = [] for i, pair in enumerate(edgeIndexPairList): - ctl = createRivetTweak(mesh, [pair[0], pair[1]], name + str(i).zfill(3), parent, ctlParent, color) + ctl = createRivetTweak(mesh, + [pair[0], pair[1]], + name + str(i).zfill(3), + parent, + ctlParent, + color) ctlList.append(ctl) return ctlList -def createRivetTweakLayer(layerMesh, bst, edgeList, tweakName, parent=None, ctlParent=None): + +def createRivetTweakLayer(layerMesh, + bst, + edgeList, + tweakName, + parent=None, + ctlParent=None): """Create a rivet tweak layer Args: @@ -242,16 +277,23 @@ def createRivetTweakLayer(layerMesh, bst, edgeList, tweakName, parent=None, ctlP parent (None or dagNode, optional): The parent for the tweak ctlParent (None or dagNode, optional): the parent for the tweak control """ - #Apply blendshape from blendshapes layer mesh - bsp.connectWithBlendshape(layerMesh, bst) + # Apply blendshape from blendshapes layer mesh + blendShapes.connectWithBlendshape(layerMesh, bst) - #create static joint + # create static joint if pm.objExists('static_jnt') is not True: - static_jnt = pri.addJoint(parent, "static_jnt", m=dt.Matrix(), vis=True) + static_jnt = primitive.addJoint(parent, + "static_jnt", + m=datatypes.Matrix(), + vis=True) static_jnt = pm.PyNode("static_jnt") - #apply initial skincluster - pm.skinCluster(static_jnt, layerMesh, tsb=True, nw=2, n='%s_skinCluster'%layerMesh.name()) + # apply initial skincluster + pm.skinCluster(static_jnt, + layerMesh, + tsb=True, + nw=2, + n='%s_skinCluster' % layerMesh.name()) - #create doritos + # create doritos createRivetTweak(layerMesh, edgeList, tweakName, parent, ctlParent) diff --git a/scripts/mgear/maya/rigbits/utils.py b/scripts/mgear/maya/rigbits/utils.py index 896edf8..e6fedd3 100644 --- a/scripts/mgear/maya/rigbits/utils.py +++ b/scripts/mgear/maya/rigbits/utils.py @@ -1,32 +1,4 @@ -# MGEAR is under the terms of the MIT License - -# Copyright (c) 2016 Jeremie Passerin, Miquel Campos - -# Permission is hereby granted, free of charge, to any person obtaining a copy -# of this software and associated documentation files (the "Software"), to deal -# in the Software without restriction, including without limitation the rights -# to use, copy, modify, merge, publish, distribute, sublicense, and/or sell -# copies of the Software, and to permit persons to whom the Software is -# furnished to do so, subject to the following conditions: - -# The above copyright notice and this permission notice shall be included in all -# copies or substantial portions of the Software. - -# THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR -# IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, -# FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE -# AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER -# LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, -# OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE -# SOFTWARE. - -# Author: Jeremie Passerin geerem@hotmail.com www.jeremiepasserin.com -# Author: Miquel Campos hello@miquel-campos.com www.miquel-campos.com -# Date: 2016 / 10 / 10 - -""" -mGear utilitie tools. -""" +"""Rigbits utilitie tools""" from mGear_pyqt import compileUi @@ -34,15 +6,17 @@ UI_EXT = "ui" + def ui2py(filePath=None, *args): - """ - Convert qtDesigner .ui files to .py. - """ + """Convert qtDesigner .ui files to .py""" if not filePath: startDir = pm.workspace(q=True, rootDirectory=True) - filePath = pm.fileDialog2(dialogStyle=2, fileMode=1, startingDirectory=startDir, - fileFilter='PyQt Designer (*%s)' % UI_EXT, okc="Compile to .py") + filePath = pm.fileDialog2(dialogStyle=2, + fileMode=1, + startingDirectory=startDir, + fileFilter='PyQt Designer (*%s)' % UI_EXT, + okc="Compile to .py") if not filePath: return False filePath = filePath[0] @@ -55,24 +29,27 @@ def ui2py(filePath=None, *args): pyfile = open(compiledFilePath, 'w') compileUi(filePath, pyfile, False, 4, False) pyfile.close() - pm.displayInfo("PyQt Designer file compiled to .py in: " + compiledFilePath) + + info = "PyQt Designer file compiled to .py in: " + pm.displayInfo(info + compiledFilePath) def createRunTimeCommand(name, rCmd, ann=""): - """ - Create run time commands from raw string. + """Create run time commands from raw string. + This function is used to create the mGear hotkeys. """ if pm.runTimeCommand(name, ex=True): pm.runTimeCommand(name, e=True, delete=True) - pm.displayWarning("Old hotkey: " +name+ " Deleted" ) - + pm.displayWarning("Old hotkey: " + name + " Deleted") pm.runTimeCommand(name, ann=ann, c=rCmd, cat="mGear") - pm.displayInfo("Hotkey: " +name+ " created" ) + pm.displayInfo("Hotkey: " + name + " created") + def createHotkeys(*args): """Create mGear custom hotkey functions ready to be use. + This command doesn't set the hotkey binding. Only create the functions. Args: @@ -87,7 +64,7 @@ def createHotkeys(*args): pm.polyExtrudeFacet(constructionHistory=True,keepFacesTogether=True ) else: root = pm.selected()[0] - if not pm.attributeQuery("comp_type", node=root, ex=True): + if not pm.attributeQuery("comp_type", o_node=root, ex=True): rigbits.duplicateSym() else: gui.Guide_UI.duplicate(True) @@ -104,7 +81,7 @@ def createHotkeys(*args): pm.polyExtrudeFacet(constructionHistory=True,keepFacesTogether=True ) else: root = pm.selected()[0] - if not pm.attributeQuery("comp_type", node=root, ex=True): + if not pm.attributeQuery("comp_type", o_node=root, ex=True): pm.duplicate() else: gui.Guide_UI.duplicate(False) @@ -131,7 +108,6 @@ def frameSelectedCenter(): ''' createRunTimeCommand("mGear_frameCenter", rCmd, ann="") - # reset SRT rCmd = ''' import pymel.core as pm @@ -227,8 +203,6 @@ def resetSRT(oColl): ''' createRunTimeCommand("mGear_align2Transforms", rCmd, ann="") - - # inspect property rCmd = ''' import mgear.maya.shifter.gui as gui @@ -298,7 +272,6 @@ def resetSRT(oColl): ''' createRunTimeCommand("mGear_walkMirror", rCmd, ann="") - # reset camera persp rCmd = ''' import pymel.core as pm @@ -310,7 +283,6 @@ def resetSRT(oColl): pm.displayInfo("mGear Hotkeys creation finish.") - # walk transform child add rCmd = ''' import pymel.core as pm @@ -363,4 +335,3 @@ def resetSRT(oColl): ''' createRunTimeCommand("mGear_walkMirrorAdd", rCmd, ann="") - From eba22cfbda085390fc8d0702ae3802eea166cef1 Mon Sep 17 00:00:00 2001 From: miquelcampos Date: Mon, 27 Nov 2017 17:37:21 +0900 Subject: [PATCH 105/134] PEP8 #100 Rigbits: refactor finish --- scripts/mgear/maya/rigbits/cycleTweaks.py | 3 +- scripts/mgear/maya/rigbits/ghost.py | 2 +- scripts/mgear/maya/rigbits/widgets.py | 62 ++++++++--------------- 3 files changed, 24 insertions(+), 43 deletions(-) diff --git a/scripts/mgear/maya/rigbits/cycleTweaks.py b/scripts/mgear/maya/rigbits/cycleTweaks.py index 0cd659b..7625c5a 100644 --- a/scripts/mgear/maya/rigbits/cycleTweaks.py +++ b/scripts/mgear/maya/rigbits/cycleTweaks.py @@ -7,7 +7,8 @@ from mgear.maya import icon, skin, node -from . import rigbits, rivet, blendShapes +from .. import rigbits +from . import rivet, blendShapes def inverseTranslateParent(obj): diff --git a/scripts/mgear/maya/rigbits/ghost.py b/scripts/mgear/maya/rigbits/ghost.py index e1cd756..69d07fd 100644 --- a/scripts/mgear/maya/rigbits/ghost.py +++ b/scripts/mgear/maya/rigbits/ghost.py @@ -7,7 +7,7 @@ from mgear.maya import node, primitive -from . import rigbits +from .. import rigbits def createGhostCtl(ctl, parent=None, connect=True): diff --git a/scripts/mgear/maya/rigbits/widgets.py b/scripts/mgear/maya/rigbits/widgets.py index 39ac2c5..ad06dfb 100644 --- a/scripts/mgear/maya/rigbits/widgets.py +++ b/scripts/mgear/maya/rigbits/widgets.py @@ -1,54 +1,33 @@ -# MGEAR is under the terms of the MIT License +"""Rigbits widgets""" -# Copyright (c) 2016 Jeremie Passerin, Miquel Campos - -# Permission is hereby granted, free of charge, to any person obtaining a copy -# of this software and associated documentation files (the "Software"), to deal -# in the Software without restriction, including without limitation the rights -# to use, copy, modify, merge, publish, distribute, sublicense, and/or sell -# copies of the Software, and to permit persons to whom the Software is -# furnished to do so, subject to the following conditions: - -# The above copyright notice and this permission notice shall be included in all -# copies or substantial portions of the Software. - -# THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR -# IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, -# FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE -# AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER -# LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, -# OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE -# SOFTWARE. - -# Author: Jeremie Passerin geerem@hotmail.com www.jeremiepasserin.com -# Author: Miquel Campos hello@miquel-campos.com www.miquel-campos.com -# Date: 2016 / 10 / 10 - - -## Rigbits widgets - -import mgear.widgets as gWidgets -from mgear.vendor.Qt import QtWidgets +from mgear import widgets +from mgear.vendor.Qt import QtWidgets ################################################ # CUSTOM WIDGETS ################################################ -class TableWidgetDragRowsChannelWrangler(gWidgets.TableWidgetDragRows): - """TableWidgetDragRows subclass for channelWrangler - """ +class TableWidgetDragRowsChannelWrangler(widgets.TableWidgetDragRows): + """TableWidgetDragRows subclass for channelWrangler""" + def __init__(self, *args, **kwargs): - super(TableWidgetDragRowsChannelWrangler, self).__init__(*args, **kwargs) + super(TableWidgetDragRowsChannelWrangler, self).__init__(*args, + **kwargs) def dropEvent(self, event): if not event.isAccepted() and event.source() == self: drop_row = self.drop_on(event) rows = sorted(set(item.row() for item in self.selectedItems())) - rows_to_move = [[QtWidgets.QTableWidgetItem(self.item(row_index, column_index)) for column_index in range(self.columnCount())] - for row_index in rows] - rows_widgets_to_move = [ self.cellWidget(row_index, 4) for row_index in rows] + + rows_to_move = [[QtWidgets.QTableWidgetItem( + self.item(row_index, column_index)) + for column_index in range(self.columnCount())] + for row_index in rows] + + rows_widgets_to_move = [self.cellWidget(row_index, 4) + for row_index in rows] for row_index in reversed(rows): self.removeRow(row_index) @@ -60,16 +39,18 @@ def dropEvent(self, event): inRow = row_index + drop_row self.insertRow(inRow) for column_index, column_data in enumerate(data): - if column_index !=4: + if column_index != 4: self.setItem(inRow, column_index, column_data) # self.setCellWidget(inRow, 4, rows_widgets_to_move[row_index]) - # moving the combo box crash maya. Current workaround is create a new one and destroy the old + # moving the combo box crash maya. Current workaround is + # create a new one and destroy the old # someone knows better way? Thanks :) operation_comboBox = QtWidgets.QComboBox() operation_comboBox.setObjectName("operation") operation_comboBox.addItem("Move Channel") operation_comboBox.addItem("Proxy Channel") - operation_comboBox.SizeAdjustPolicy(QtWidgets.QComboBox.AdjustToContentsOnFirstShow) + size_polizy = QtWidgets.QComboBox.AdjustToContentsOnFirstShow + operation_comboBox.SizeAdjustPolicy(size_polizy) oComboOld = rows_widgets_to_move[row_index] self.setCellWidget(inRow, 4, operation_comboBox) operation_comboBox.setCurrentIndex(oComboOld.currentIndex()) @@ -81,4 +62,3 @@ def dropEvent(self, event): self.item(drop_row + row_index, 1).setSelected(True) self.item(drop_row + row_index, 2).setSelected(True) self.item(drop_row + row_index, 3).setSelected(True) - From 9f7976244c29ef35d7bc8fa0b099265221dcc329 Mon Sep 17 00:00:00 2001 From: miquelcampos Date: Mon, 27 Nov 2017 18:05:13 +0900 Subject: [PATCH 106/134] PEP8 #100 Simple Rig refactor --- scripts/mgear/maya/simpleRig/__init__.py | 300 ++++++++++++----------- 1 file changed, 159 insertions(+), 141 deletions(-) diff --git a/scripts/mgear/maya/simpleRig/__init__.py b/scripts/mgear/maya/simpleRig/__init__.py index 0a8e61d..a3c7880 100644 --- a/scripts/mgear/maya/simpleRig/__init__.py +++ b/scripts/mgear/maya/simpleRig/__init__.py @@ -1,53 +1,18 @@ -# MGEAR is under the terms of the MIT License - -# Copyright (c) 2016 Jeremie Passerin, Miquel Campos - -# Permission is hereby granted, free of charge, to any person obtaining a copy -# of this software and associated documentation files (the "Software"), to deal -# in the Software without restriction, including without limitation the rights -# to use, copy, modify, merge, publish, distribute, sublicense, and/or sell -# copies of the Software, and to permit persons to whom the Software is -# furnished to do so, subject to the following conditions: - -# The above copyright notice and this permission notice shall be included in all -# copies or substantial portions of the Software. - -# THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR -# IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, -# FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE -# AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER -# LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, -# OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE -# SOFTWARE. - -# Author: Jeremie Passerin geerem@hotmail.com www.jeremiepasserin.com -# Author: Miquel Campos hello@miquel-campos.com www.miquel-campos.com -# Date: 2016 / 10 / 10 - -""" -Simple autorig for props or set dressing. +"""Simple autorig for props or set dressing. This rigging system follow the structure and naming conventions from Shifer. """ import datetime import getpass -from mGear_pyqt import QtWidgets, wrapInstance +from mgear.vendor.Qt import QtWidgets, QtCompat -# Maya import pymel.core as pm import maya.OpenMayaUI as OpenMayaUI -#mGear import mgear import mgear.maya.icon as ico -import mgear.maya.dag as dag -import mgear.maya.transform as tra -import mgear.maya.node as nod -import mgear.string as st -import mgear.maya.attribute as att - - +from mgear.maya import dag, transform, node, string, attribute ############################################# @@ -73,8 +38,6 @@ def bBoxData(obj=None, yZero=True, *args): yZero (bool, optional): If true, sets the hight to the lowest point *args: Maya dummy - Returns: - TYPE: Description """ volCenter = False @@ -83,13 +46,14 @@ def bBoxData(obj=None, yZero=True, *args): shapes = pm.listRelatives(obj, ad=True, s=True) if shapes: bb = pm.polyEvaluate(shapes, b=True) - volCenter = [ (axis[0] + axis[1]) /2 for axis in bb ] + volCenter = [(axis[0] + axis[1]) / 2 for axis in bb] if yZero: volCenter[1] = bb[1][0] - radio = max([bb[0][1] - bb[0][0],bb[2][1] - bb[2][0]])/1.7 + radio = max([bb[0][1] - bb[0][0], bb[2][1] - bb[2][0]]) / 1.7 return volCenter, radio, bb + def getMayaWindow(): """Gets Maya main window @@ -97,7 +61,8 @@ def getMayaWindow(): QMainWindow: Maya window """ ptr = OpenMayaUI.MQtUtil.mainWindow() - return wrapInstance(long(ptr), QtWidgets.QMainWindow) + return QtCompat.wrapInstance(long(ptr), QtWidgets.QMainWindow) + def cnsPart(source, target): """Constraint target to source with parent and scale constraint @@ -110,22 +75,21 @@ def cnsPart(source, target): pm.parentConstraint(source, target, mo=True) pm.scaleConstraint(source, target, mo=True) - if WIP: # Is not working with stack offset objects - offsetLvl = pm.createNode("transform", n=source.name().split("_")[0]+"_offLvl") + offsetLvl = pm.createNode("transform", + n=source.name().split("_")[0] + "_offLvl") pm.parent(offsetLvl, source) - mulmat_node = pm.createNode("multMatrix") - pm.connectAttr(offsetLvl+".worldMatrix", mulmat_node+".matrixIn[0]", f=True) - pm.connectAttr(target+".parentInverseMatrix", mulmat_node+".matrixIn[1]", f=True) - - - dm_node = nod.createDecomposeMatrixNode(mulmat_node+".matrixSum") - pm.connectAttr(dm_node+".outputTranslate", target+".t", f=True) - pm.connectAttr(dm_node+".outputRotate", target+".r", f=True) - pm.connectAttr(dm_node+".outputScale", target+".s", f=True) - + mulmat_node = pm.createNode("multMatrix") + pm.connectAttr(offsetLvl + ".worldMatrix", + mulmat_node + ".matrixIn[0]", f=True) + pm.connectAttr(target + ".parentInverseMatrix", + mulmat_node + ".matrixIn[1]", f=True) + dm_node = node.createDecomposeMatrixNode(mulmat_node + ".matrixSum") + pm.connectAttr(dm_node + ".outputTranslate", target + ".t", f=True) + pm.connectAttr(dm_node + ".outputRotate", target + ".r", f=True) + pm.connectAttr(dm_node + ".outputScale", target + ".s", f=True) ########################################### @@ -138,7 +102,8 @@ def simpleRig(rigName="rig", wCntCtl=False, *args): Args: rigName (str, optional): Name of the rig. - wCntCtl (bool, optional): Place the Golbal control in the wolrd center or use the general BBox of the selection. + wCntCtl (bool, optional): Place the Golbal control in the wolrd + center or use the general BBox of the selection. *args: Description Returns: @@ -150,8 +115,7 @@ def simpleRig(rigName="rig", wCntCtl=False, *args): absBB = [] absRadio = 0.5 - listSelection = [oSel for oSel in pm.selected()] - + listSelection = [oSel for oSel in pm.selected()] # Create base structure rig = pm.createNode('transform', n=rigName) @@ -159,54 +123,66 @@ def simpleRig(rigName="rig", wCntCtl=False, *args): geo.attr("overrideEnabled").set(1) geo.attr("overrideDisplayType").set(2) - att.addAttribute(rig, "is_rig", "bool", True) - att.addAttribute(rig, "rig_name", "string", "rig") - att.addAttribute(rig, "user", "string", getpass.getuser()) - att.addAttribute(rig, "date", "string", str(datetime.datetime.now())) - att.addAttribute(rig, "maya_version", "string", str(pm.mel.eval("getApplicationVersionAsFloat"))) - att.addAttribute(rig, "gear_version", "string", mgear.getVersion()) - att.addAttribute(rig, "ctl_vis", "bool", True) - att.addAttribute(rig, "jnt_vis", "bool", False) + attribute.addAttribute(rig, "is_rig", "bool", True) + attribute.addAttribute(rig, "rig_name", "string", "rig") + attribute.addAttribute(rig, "user", "string", getpass.getuser()) + attribute.addAttribute(rig, "date", "string", str(datetime.datetime.now())) + + attribute.addAttribute(rig, + "maya_version", + "string", + str(pm.mel.eval("getApplicationVersionAsFloat"))) - att.addAttribute(rig, "quickselA", "string", "") - att.addAttribute(rig, "quickselB", "string", "") - att.addAttribute(rig, "quickselC", "string", "") - att.addAttribute(rig, "quickselD", "string", "") - att.addAttribute(rig, "quickselE", "string", "") - att.addAttribute(rig, "quickselF", "string", "") + attribute.addAttribute(rig, "gear_version", "string", mgear.getVersion()) + attribute.addAttribute(rig, "ctl_vis", "bool", True) + attribute.addAttribute(rig, "jnt_vis", "bool", False) - rig.addAttr( "rigGroups", at='message', m=1 ) - rig.addAttr( "rigPoses", at='message', m=1 ) + attribute.addAttribute(rig, "quickselA", "string", "") + attribute.addAttribute(rig, "quickselB", "string", "") + attribute.addAttribute(rig, "quickselC", "string", "") + attribute.addAttribute(rig, "quickselD", "string", "") + attribute.addAttribute(rig, "quickselE", "string", "") + attribute.addAttribute(rig, "quickselF", "string", "") + rig.addAttr("rigGroups", at='message', m=1) + rig.addAttr("rigPoses", at='message', m=1) - for oSel in listSelection: + for oSel in listSelection: bbCenter, bbRadio, bb = bBoxData(oSel) lvl = pm.createNode('transform', n=oSel.name().split("_")[0] + "_npo") lvlList.append(lvl) - t = tra.getTransformFromPos(bbCenter) + t = transform.getTransformFromPos(bbCenter) lvl.setTransformation(t) - ctl = ico.create(lvl, oSel.name().split("_")[0] + "_ctl", t, 14, icon="circle", w=bbRadio*2) - cnsPart(ctl, oSel) + ctl = ico.create(lvl, + oSel.name().split("_")[0] + "_ctl", + t, + 14, + icon="circle", + w=bbRadio * 2) + + cnsPart(ctl, oSel) ctlList.append(ctl) for oShape in oSel.listRelatives(ad=True, s=True, type='mesh'): - pm.connectAttr(ctl+".visibility", oShape+".visibility", f=True) + pm.connectAttr(ctl + ".visibility", oShape + ".visibility", f=True) meshList.append(oShape) - #Reparenting + # Reparenting pm.parent(oSel, geo) - - #calculate the global control BB + # calculate the global control BB if not wCntCtl: if not absBB: absBB = bb else: - absBB = [[min(bb[0][0], absBB[0][0]), max(bb[0][1], absBB[0][1])], - [min(bb[1][0], absBB[1][0]), max(bb[1][1], absBB[1][1])], - [min(bb[2][0], absBB[2][0]), max(bb[2][1], absBB[2][1])]] + absBB = [[min(bb[0][0], absBB[0][0]), + max(bb[0][1], absBB[0][1])], + [min(bb[1][0], absBB[1][0]), + max(bb[1][1], absBB[1][1])], + [min(bb[2][0], absBB[2][0]), + max(bb[2][1], absBB[2][1])]] userPivots = dag.findChildrenPartial(oSel, PIVOT_EXTENSION) # Loop selection @@ -214,65 +190,96 @@ def simpleRig(rigName="rig", wCntCtl=False, *args): if userPivots: for uPivot in userPivots: try: - pgrp = pm.PyNode(uPivot.name().split('_')[0]+"_"+PGROUP_EXTENSION) - except: - pm.displayError("The selected pivot dont have the group contrapart. Review your rig structure") + pstr = uPivot.name().split('_')[0] + "_" + PGROUP_EXTENSION + pgrp = pm.PyNode(pstr) + except TypeError: + pm.displayError("The selected pivot dont have the group" + " contrapart. Review your rig structure") return False objList = pgrp.listRelatives(ad=True) if objList: bbCenter, bbRadio, bb = bBoxData(objList) t = uPivot.getMatrix(worldSpace=True) - lvlParent = pm.listRelatives(uPivot, p=True)[0].name().split("_")[0]+"_ctl" - lvl = pm.createNode('transform', n=uPivot.split("_")[0] + "_npo") + lvlParent = pm.listRelatives( + uPivot, p=True)[0].name().split("_")[0] + "_ctl" + + lvl = pm.createNode('transform', + n=uPivot.split("_")[0] + "_npo") lvl.setTransformation(t) icon = iconList[uPivot.attr("ctlIcon").get()] ctlKeyable = [] if uPivot.attr("animTranslation").get(): - ctlKeyable = ctlKeyable + ["tx", "ty", "tz"] + ctlKeyable = ctlKeyable + ["tx", "ty", "tz"] if uPivot.attr("animRotation").get(): - ctlKeyable = ctlKeyable + ["ro", "rx", "ry", "rz"] + ctlKeyable = ctlKeyable + ["ro", "rx", "ry", "rz"] if uPivot.attr("animScale").get(): - ctlKeyable = ctlKeyable + ["sx", "sy", "sz"] - ctl = ico.create(lvl, uPivot.split("_")[0] + "_ctl", t, 15, icon=icon, w=bbRadio*2, h=bbRadio*2, d=bbRadio*2) - att.setKeyableAttributes(ctl, ctlKeyable) + ctlKeyable = ctlKeyable + ["sx", "sy", "sz"] + + ctl = ico.create(lvl, + uPivot.split("_")[0] + "_ctl", + t, + 15, + icon=icon, + w=bbRadio * 2, + h=bbRadio * 2, + d=bbRadio * 2) + + attribute.setKeyableAttributes(ctl, ctlKeyable) pm.parent(lvl, lvlParent) - att.setKeyableAttributes(lvl, []) + attribute.setKeyableAttributes(lvl, []) uPivotCtl.append(ctl) - #Constraint + # Constraint cnsPart(ctl, pgrp) - for oShape in uPivot.listRelatives(ad=True, s=True, type='mesh'): - pm.connectAttr(ctl+".visibility", oShape+".visibility", f=True) + for oShape in uPivot.listRelatives(ad=True, + s=True, + type='mesh'): + pm.connectAttr(ctl + ".visibility", + oShape + ".visibility", + f=True) meshList.append(oShape) - #hidde user pivot + # hidde user pivot uPivot.attr("visibility").set(False) # setting the global control if wCntCtl: - absCenter = [0,0,0] + absCenter = [0, 0, 0] else: - absCenter = [ (axis[0] + axis[1]) /2 for axis in absBB ] - #set the cencter in the floor + absCenter = [(axis[0] + axis[1]) / 2 for axis in absBB] + # set the cencter in the floor absCenter[1] = absBB[1][0] - absRadio = max([absBB[0][1] - absBB[0][0],absBB[2][1] - absBB[2][0]])/1.7 - t = tra.getTransformFromPos(absCenter) + + absRadio = max([absBB[0][1] - absBB[0][0], + absBB[2][1] - absBB[2][0]]) / 1.7 + + t = transform.getTransformFromPos(absCenter) lvl = pm.createNode('transform', n="global_npo") lvl.setTransformation(t) pm.parent(lvl, rig) - ctlGlobal = ico.create(lvl, "global_ctl", t, 17, icon="square", w=absRadio*2, d=absRadio*2) + + ctlGlobal = ico.create(lvl, + "global_ctl", + t, + 17, + icon="square", + w=absRadio * 2, + d=absRadio * 2) + pm.parent(lvlList, ctlGlobal) ctlList.append(ctlGlobal) - att.setKeyableAttributes(lvl, []) + attribute.setKeyableAttributes(lvl, []) for lvl in lvlList: - att.setKeyableAttributes(lvl, []) + attribute.setKeyableAttributes(lvl, []) # Create sets meshSet = pm.sets(meshList, n="CACHE_grp") ctlSet = pm.sets([ctlList, uPivotCtl], n="rig_controllers_grp") deformersSet = pm.sets(meshList, n="rig_deformers_grp") compGroup = pm.sets(meshList, n="rig_componentsRoots_grp") - rigSets = pm.sets([meshSet, ctlSet, deformersSet, compGroup], n="rig_Sets_grp") + + rigSets = pm.sets([meshSet, ctlSet, deformersSet, compGroup], + n="rig_Sets_grp") pm.connectAttr(rigSets.attr("message"), "rig.rigGroups[0]") pm.connectAttr(meshSet.attr("message"), "rig.rigGroups[1]") @@ -288,17 +295,17 @@ def simpleRig(rigName="rig", wCntCtl=False, *args): pm.sets(n="animSets", em=True) animSets_set = pm.PyNode("animSets") - #adding set + # adding set pm.sets(animSets_set, add=animNodes_set) pm.sets(animNodes_set, add=ctlSet.members()) pm.connectAttr(animSets_set.attr("message"), "rig.rigGroups[5]") pm.connectAttr(animNodes_set.attr("message"), "rig.rigGroups[6]") - #create dagPose + # create dagPose pm.select(ctlSet) - node = pm.dagPose(save=True, selection=True) - pm.connectAttr(node.message, rig.rigPoses[0]) + o_node = pm.dagPose(save=True, selection=True) + pm.connectAttr(o_node.message, rig.rigPoses[0]) return rig @@ -313,29 +320,40 @@ def setUserRigPivot(*args): Returns: dagNode, dagNode: the axis and the group """ - listSelection = [oSel for oSel in pm.selected()] + listSelection = [oSel for oSel in pm.selected()] if listSelection: parent = listSelection[0].listRelatives(p=True) if parent: parent = parent[0] else: - pm.displayWarning("In order to set user pivot, the selected object must have one parent or Root") + pm.displayWarning("In order to set user pivot, the selected " + "object must have one parent or Root") return False, False dialog = NameUIDialog(getMayaWindow()) dialog.exec_() - oName = dialog.rootName + oName = dialog.rootName bbCenter, bbRadio, bb = bBoxData(listSelection, yZero=False) - t = tra.getTransformFromPos(bbCenter) - axis = ico.axis(parent=parent, name=oName +"_"+PIVOT_EXTENSION, width=bbRadio*2, color=[0,0,0], m=t) - att.addAttribute(axis, "animTranslation", "bool", True) - att.addAttribute(axis, "animRotation", "bool", True) - att.addAttribute(axis, "animScale", "bool", True) - att.addEnumAttribute(axis, "ctlIcon", 0, iconList) - pgrp = pm.group(listSelection, p=parent, n=oName + "_"+ PGROUP_EXTENSION) + t = transform.getTransformFromPos(bbCenter) + + axis = ico.axis(parent=parent, + name=oName + "_" + PIVOT_EXTENSION, + width=bbRadio * 2, + color=[0, 0, 0], + m=t) + + attribute.addAttribute(axis, "animTranslation", "bool", True) + attribute.addAttribute(axis, "animRotation", "bool", True) + attribute.addAttribute(axis, "animScale", "bool", True) + attribute.addEnumAttribute(axis, "ctlIcon", 0, iconList) + + pgrp = pm.group(listSelection, + p=parent, + n=oName + "_" + PGROUP_EXTENSION) return axis, pgrp else: - pm.displayWarning("Please select the objects to set and the parent root/userPivot") + pm.displayWarning("Please select the objects to set and " + "the parent root/userPivot") return False, False @@ -350,15 +368,18 @@ def selectObjectInUserRootPivot(*args): """ oSel = pm.selected()[0] try: - pgrp = pm.PyNode(oSel.name().split('_')[0]+"_"+PGROUP_EXTENSION) + pgrp = pm.PyNode(oSel.name().split('_')[0] + "_" + PGROUP_EXTENSION) objList = pgrp.listRelatives(ad=True, type="transform") pm.select(objList) - except: - pm.displayError("The selected pivot dont have the group contrapart. Review your rig structure") + except TypeError: + pm.displayError("The selected pivot dont have the group contrapart." + " Review your rig structure") return False + def addToUserPivot(*args): """Add the selected objects to a user pivot. + First select the objects and last the pivot Args: @@ -370,10 +391,11 @@ def addToUserPivot(*args): oSel = pm.selected()[:-1] pivot = pm.selected()[-1] try: - pgrp = pm.PyNode(pivot.name().split('_')[0]+"_"+PGROUP_EXTENSION) + pgrp = pm.PyNode(pivot.name().split('_')[0] + "_" + PGROUP_EXTENSION) pm.parent(oSel, pgrp) - except: - pm.displayError("The selected pivot dont have the group contrapart. Review your rig structure") + except TypeError: + pm.displayError("The selected pivot dont have the group contrapart. " + "Review your rig structure") return False @@ -389,21 +411,19 @@ def createRoot(*args): group = False dialog = NameUIDialog(getMayaWindow()) dialog.exec_() - oName = dialog.rootName + oName = dialog.rootName if oName: group = pm.group(n=oName + "_" + ROOT_EXTENSION) - att.addAttribute(group, "animSets", "bool", False) + attribute.addAttribute(group, "animSets", "bool", False) return group - ########################################### # UI ########################################### class NameUIDialog(QtWidgets.QDialog): - """Ui dialog for names input + """Ui dialog for names input""" - """ def __init__(self, parent=None): super(NameUIDialog, self).__init__(parent) self.setWindowTitle('Name') @@ -414,7 +434,7 @@ def __init__(self, parent=None): mainVbox = QtWidgets.QVBoxLayout(self) - label = QtWidgets.QLabel("Please set the name for this part." ) + label = QtWidgets.QLabel("Please set the name for this part.") label.setWordWrap(True) mainVbox.addWidget(label) @@ -428,10 +448,8 @@ def __init__(self, parent=None): self.line.returnPressed.connect(self.getName) - - def getName(self): - """Get the name of from the dialog - """ - self.rootName = st.removeInvalidCharacter(self.line.text()) + """Get the name of from the dialog""" + + self.rootName = string.removeInvalidCharacter(self.line.text()) self.close() From 5ef7f39a21a1b04271a2b0137739d4700e8b33f7 Mon Sep 17 00:00:00 2001 From: miquelcampos Date: Mon, 27 Nov 2017 18:09:30 +0900 Subject: [PATCH 107/134] PEP8 #100 Simple Rig refactor fix import --- scripts/mgear/maya/simpleRig/__init__.py | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/scripts/mgear/maya/simpleRig/__init__.py b/scripts/mgear/maya/simpleRig/__init__.py index a3c7880..d64ee5a 100644 --- a/scripts/mgear/maya/simpleRig/__init__.py +++ b/scripts/mgear/maya/simpleRig/__init__.py @@ -12,7 +12,8 @@ import mgear import mgear.maya.icon as ico -from mgear.maya import dag, transform, node, string, attribute +from mgear.maya import dag, transform, node, attribute +from mgear import string ############################################# From 5e217b2d80bb75a7e9a4152ea34166e72e879237 Mon Sep 17 00:00:00 2001 From: miquelcampos Date: Mon, 27 Nov 2017 18:58:41 +0900 Subject: [PATCH 108/134] PEP8 #100 Synoptic: Refactor WIP --- scripts/mgear/maya/synoptic/__init__.py | 149 +++---- scripts/mgear/maya/synoptic/tabs/__init__.py | 4 +- .../maya/synoptic/tabs/baker/__init__.py | 4 +- .../maya/synoptic/tabs/biped/__init__.py | 10 +- .../maya/synoptic/tabs/quadruped/__init__.py | 4 +- scripts/mgear/maya/synoptic/utils.py | 364 +++++++++++------- scripts/mgear/maya/synoptic/widgets.py | 4 +- 7 files changed, 313 insertions(+), 226 deletions(-) diff --git a/scripts/mgear/maya/synoptic/__init__.py b/scripts/mgear/maya/synoptic/__init__.py index 7d74186..bb9361a 100644 --- a/scripts/mgear/maya/synoptic/__init__.py +++ b/scripts/mgear/maya/synoptic/__init__.py @@ -1,49 +1,19 @@ -# MGEAR is under the terms of the MIT License - -# Copyright (c) 2016 Jeremie Passerin, Miquel Campos - -# Permission is hereby granted, free of charge, to any person obtaining a copy -# of this software and associated documentation files (the "Software"), to deal -# in the Software without restriction, including without limitation the rights -# to use, copy, modify, merge, publish, distribute, sublicense, and/or sell -# copies of the Software, and to permit persons to whom the Software is -# furnished to do so, subject to the following conditions: - -# The above copyright notice and this permission notice shall be included in all -# copies or substantial portions of the Software. - -# THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR -# IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, -# FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE -# AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER -# LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, -# OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE -# SOFTWARE. - -# Author: Jeremie Passerin geerem@hotmail.com www.jeremiepasserin.com -# Author: Miquel Campos hello@miquel-campos.com www.miquel-campos.com -# Date: 2016 / 10 / 10 - -################################################## -# GLOBAL -################################################## import os import pymel.core as pm from maya.app.general.mayaMixin import MayaQDockWidget from maya.app.general.mayaMixin import MayaQWidgetDockableMixin -import mgear.maya.pyqt as gqt -import mgear.maya.utils - -QtGui, QtCore, QtWidgets, wrapInstance = gqt.qt_import() +import mgear +from mgear.maya import pyqt, utils +from mgear.vendor.Qt import QtGui, QtCore, QtWidgets SYNOPTIC_WIDGET_NAME = "synoptic_view" SYNOPTIC_ENV_KEY = "MGEAR_SYNOPTIC_PATH" -SYNOPTIC_DIRECTORIES = mgear.maya.utils.gatherCustomModuleDirectories( +SYNOPTIC_DIRECTORIES = utils.gatherCustomModuleDirectories( SYNOPTIC_ENV_KEY, os.path.join(os.path.dirname(__file__), "tabs")) @@ -53,16 +23,25 @@ ################################################## def open(*args): # open the synoptic dialog, without clean old instances - gqt.showDialog(Synoptic, False) + pyqt.showDialog(Synoptic, False) def importTab(tabName): + """Import Synoptic Tab + + Args: + tabName (Str): Synoptic tab name + + Returns: + module: Synoptic tab module + """ import mgear.maya.synoptic as syn dirs = syn.SYNOPTIC_DIRECTORIES defFmt = "mgear.maya.synoptic.tabs.{}" customFmt = "{0}" - module = mgear.maya.utils.importFromStandardOrCustomDirectories(dirs, defFmt, customFmt, tabName) + module = utils.importFromStandardOrCustomDirectories( + dirs, defFmt, customFmt, tabName) return module @@ -70,6 +49,7 @@ def importTab(tabName): # SYNOPTIC ################################################## class Synoptic(MayaQWidgetDockableMixin, QtWidgets.QDialog): + """Synoptic Main class""" default_height = 790 default_width = 325 @@ -78,7 +58,7 @@ class Synoptic(MayaQWidgetDockableMixin, QtWidgets.QDialog): def __init__(self, parent=None): self.toolName = SYNOPTIC_WIDGET_NAME # Delete old instances of the componet settings window. - gqt.deleteInstances(self, MayaQDockWidget) + pyqt.deleteInstances(self, MayaQDockWidget) super(Synoptic, self).__init__(parent) self.create_widgets() self.setAttribute(QtCore.Qt.WA_DeleteOnClose) @@ -98,7 +78,8 @@ def setupUi(self): self.setObjectName(SYNOPTIC_WIDGET_NAME) self.resize(560, 775) - sizePolicy = QtWidgets.QSizePolicy(QtWidgets.QSizePolicy.Preferred, QtWidgets.QSizePolicy.Preferred) + sizePolicy = QtWidgets.QSizePolicy( + QtWidgets.QSizePolicy.Preferred, QtWidgets.QSizePolicy.Preferred) sizePolicy.setHorizontalStretch(1) sizePolicy.setVerticalStretch(1) sizePolicy.setHeightForWidth(self.sizePolicy().hasHeightForWidth()) @@ -111,10 +92,14 @@ def setupUi(self): self.mainContainer = QtWidgets.QGroupBox(self) - sizePolicy = QtWidgets.QSizePolicy(QtWidgets.QSizePolicy.Preferred, QtWidgets.QSizePolicy.Preferred) + sizePolicy = QtWidgets.QSizePolicy( + QtWidgets.QSizePolicy.Preferred, QtWidgets.QSizePolicy.Preferred) + sizePolicy.setHorizontalStretch(1) sizePolicy.setVerticalStretch(1) - sizePolicy.setHeightForWidth(self.mainContainer.sizePolicy().hasHeightForWidth()) + + sizePolicy.setHeightForWidth( + self.mainContainer.sizePolicy().hasHeightForWidth()) self.mainContainer.setSizePolicy(sizePolicy) self.mainContainer.setMinimumSize(QtCore.QSize(0, 0)) @@ -146,14 +131,20 @@ def setupUi(self): self.gridLayout.setObjectName("gridLayout") self.scrollArea = QtWidgets.QScrollArea(self.mainContainer) - sizePolicy = QtWidgets.QSizePolicy(QtWidgets.QSizePolicy.Expanding, QtWidgets.QSizePolicy.Expanding) + sizePolicy = QtWidgets.QSizePolicy( + QtWidgets.QSizePolicy.Expanding, QtWidgets.QSizePolicy.Expanding) + sizePolicy.setHorizontalStretch(1) sizePolicy.setVerticalStretch(1) - sizePolicy.setHeightForWidth(self.scrollArea.sizePolicy().hasHeightForWidth()) + sizePolicy.setHeightForWidth( + self.scrollArea.sizePolicy().hasHeightForWidth()) self.scrollArea.setSizePolicy(sizePolicy) self.scrollArea.setFrameShape(QtWidgets.QFrame.NoFrame) - self.scrollArea.setHorizontalScrollBarPolicy(QtCore.Qt.ScrollBarAsNeeded) + + self.scrollArea.setHorizontalScrollBarPolicy( + QtCore.Qt.ScrollBarAsNeeded) + self.scrollArea.setVerticalScrollBarPolicy(QtCore.Qt.ScrollBarAsNeeded) self.scrollArea.setWidgetResizable(True) self.scrollArea.setAlignment(QtCore.Qt.AlignCenter) @@ -163,10 +154,12 @@ def setupUi(self): self.tabs.setSizePolicy(sizePolicy) self.tabs.setObjectName("tabs") - sizePolicy = QtWidgets.QSizePolicy(QtWidgets.QSizePolicy.Expanding, QtWidgets.QSizePolicy.Expanding) + sizePolicy = QtWidgets.QSizePolicy( + QtWidgets.QSizePolicy.Expanding, QtWidgets.QSizePolicy.Expanding) sizePolicy.setHorizontalStretch(1) sizePolicy.setVerticalStretch(1) - sizePolicy.setHeightForWidth(self.tabs.sizePolicy().hasHeightForWidth()) + sizePolicy.setHeightForWidth( + self.tabs.sizePolicy().hasHeightForWidth()) self.tabs.setSizePolicy(sizePolicy) self.tabs.setObjectName("synoptic_tab") @@ -178,13 +171,16 @@ def setupUi(self): # Singal Methods ============================= def updateModelList(self): - # avoiding unnecessary firing currentIndexChanged event before finish to model_list + # avoiding unnecessary firing currentIndexChanged event before + # finish to model_list try: self.model_list.currentIndexChanged.disconnect() except RuntimeError: pass - rig_models = [item for item in pm.ls(transforms=True) if item.hasAttr("is_rig")] + rig_models = [item for item in pm.ls(transforms=True) + if item.hasAttr("is_rig")] + self.model_list.clear() for item in rig_models: self.model_list.addItem(item.name(), item.name()) @@ -193,7 +189,6 @@ def updateModelList(self): self.model_list.currentIndexChanged.connect(self.updateTabs) self.updateTabs() - def updateTabs(self): for i in range(self.tabs.count()): @@ -241,13 +236,18 @@ def updateTabs(self): self.tabs.insertTab(i, tab, tab_name) else: - mes = "No synoptic tabs for %s" % self.model_list.currentText() + mes = "No synoptic tabs for %s" % \ + self.model_list.currentText() + pm.displayWarning(mes) except Exception as e: import traceback traceback.print_exc() - mes = "Synoptic tab: %s Loading fail {0}\n{1}".format(tab_name, e) + + mes = "Synoptic tab: %s Loading fail {0}\n{1}".format( + tab_name, e) + pm.displayError(mes) max_h = self.default_height if max_h == 0 else max_h @@ -269,8 +269,16 @@ def wrapTabContents(self, synoptic_tab): horizontalLayout.setContentsMargins(0, 0, 0, 0) horizontalLayout.setObjectName("horizontalLayout") - spacer_left = QtWidgets.QSpacerItem(0, 0, QtWidgets.QSizePolicy.Expanding, QtWidgets.QSizePolicy.Minimum) - spacer_right = QtWidgets.QSpacerItem(0, 0, QtWidgets.QSizePolicy.Expanding, QtWidgets.QSizePolicy.Minimum) + spacer_left = QtWidgets.QSpacerItem(0, + 0, + QtWidgets.QSizePolicy.Expanding, + QtWidgets.QSizePolicy.Minimum) + + spacer_right = QtWidgets.QSpacerItem(0, + 0, + QtWidgets.QSizePolicy.Expanding, + QtWidgets.QSizePolicy.Minimum) + wrapperWidget.setSpacerLeft(spacer_left) horizontalLayout.addItem(spacer_left) @@ -285,8 +293,10 @@ def wrapTabContents(self, synoptic_tab): class SynopticTabWrapper(QtWidgets.QWidget): - """ - class for handling mouse rubberband within spacer and synoptic tab that is children of. + """Class for handling mouse rubberband Selection + + Class for handling mouse rubberband within spacer and synoptic tab that + is children of. """ def __init__(self, *args, **kwargs): @@ -295,7 +305,10 @@ def __init__(self, *args, **kwargs): super(SynopticTabWrapper, self).__init__(*args, **kwargs) self.setAttribute(QtCore.Qt.WA_DeleteOnClose) - self.rubberband = QtWidgets.QRubberBand(QtWidgets.QRubberBand.Rectangle, self) + + self.rubberband = QtWidgets.QRubberBand( + QtWidgets.QRubberBand.Rectangle, self) + self.offset = QtCore.QPoint() def setSpacerLeft(self, spacer): @@ -350,29 +363,31 @@ def offsetEvent(self, event): def mousePressEvent(self, event): # type: (QtGui.QMouseEvent) -> None - self.syn_widget, self.syn_widget_is_mainsynoptictab = self.searchMainSynopticTab() + self.syn_w, self.syn_wid_is_mainsyntab = self.searchMainSynopticTab() self.offset = self.calculateOffset() self.origin = event.pos() self.rubberband.setGeometry(QtCore.QRect(self.origin, QtCore.QSize())) self.rubberband.show() - if self.syn_widget_is_mainsynoptictab: - self.syn_widget.mousePressEvent_(self.offsetEvent(event)) + if self.syn_wid_is_mainsyntab: + self.syn_w.mousePressEvent_(self.offsetEvent(event)) else: - self.syn_widget.mousePressEvent(self.offsetEvent(event)) + self.syn_w.mousePressEvent(self.offsetEvent(event)) def mouseMoveEvent(self, event): # type: (QtGui.QMouseEvent) -> None - self.syn_widget, self.syn_widget_is_mainsynoptictab = self.searchMainSynopticTab() + self.syn_w, self.syn_wid_is_mainsyntab = self.searchMainSynopticTab() if self.rubberband.isVisible(): - self.rubberband.setGeometry(QtCore.QRect(self.origin, event.pos()).normalized()) - if self.syn_widget_is_mainsynoptictab: - self.syn_widget.mouseMoveEvent_(self.offsetEvent(event)) + self.rubberband.setGeometry( + QtCore.QRect(self.origin, event.pos()).normalized()) + + if self.syn_wid_is_mainsyntab: + self.syn_w.mouseMoveEvent_(self.offsetEvent(event)) else: - self.syn_widget.mouseMoveEvent(self.offsetEvent(event)) + self.syn_w.mouseMoveEvent(self.offsetEvent(event)) def mouseReleaseEvent(self, event): # type: (QtGui.QMouseEvent) -> None @@ -380,7 +395,7 @@ def mouseReleaseEvent(self, event): if self.rubberband.isVisible(): self.rubberband.hide() - if self.syn_widget_is_mainsynoptictab: - self.syn_widget.mouseReleaseEvent_(self.offsetEvent(event)) + if self.syn_wid_is_mainsyntab: + self.syn_w.mouseReleaseEvent_(self.offsetEvent(event)) else: - self.syn_widget.mouseReleaseEvent(self.offsetEvent(event)) + self.syn_w.mouseReleaseEvent(self.offsetEvent(event)) diff --git a/scripts/mgear/maya/synoptic/tabs/__init__.py b/scripts/mgear/maya/synoptic/tabs/__init__.py index c370833..71bae52 100644 --- a/scripts/mgear/maya/synoptic/tabs/__init__.py +++ b/scripts/mgear/maya/synoptic/tabs/__init__.py @@ -32,7 +32,7 @@ import pymel.core as pm import maya.OpenMayaUI as OpenMayaUI -import mgear.maya.pyqt as gqt +import mgear.maya.pyqt as pyqt import mgear import mgear.maya.synoptic.utils as syn_uti @@ -40,7 +40,7 @@ # import functools -QtGui, QtCore, QtWidgets, wrapInstance, shiboken = gqt.qt_import(True) +QtGui, QtCore, QtWidgets, wrapInstance, shiboken = pyqt.qt_import(True) ################################################## diff --git a/scripts/mgear/maya/synoptic/tabs/baker/__init__.py b/scripts/mgear/maya/synoptic/tabs/baker/__init__.py index 68a11fa..78144ae 100644 --- a/scripts/mgear/maya/synoptic/tabs/baker/__init__.py +++ b/scripts/mgear/maya/synoptic/tabs/baker/__init__.py @@ -28,13 +28,13 @@ # GLOBAL ################################################## import os -import mgear.maya.pyqt as gqt +import mgear.maya.pyqt as pyqt import mgear.maya.synoptic.utils as syn_uti from mgear.maya.synoptic.tabs import MainSynopticTab import widget as wui -QtGui, QtCore, QtWidgets, wrapInstance, shiboken = gqt.qt_import(True) +QtGui, QtCore, QtWidgets, wrapInstance, shiboken = pyqt.qt_import(True) ################################################## diff --git a/scripts/mgear/maya/synoptic/tabs/biped/__init__.py b/scripts/mgear/maya/synoptic/tabs/biped/__init__.py index 0413134..ec55e84 100644 --- a/scripts/mgear/maya/synoptic/tabs/biped/__init__.py +++ b/scripts/mgear/maya/synoptic/tabs/biped/__init__.py @@ -28,13 +28,13 @@ # GLOBAL ################################################## import os -import mgear.maya.pyqt as gqt +import mgear.maya.pyqt as pyqt import mgear.maya.synoptic.utils as syn_uti from mgear.maya.synoptic.tabs import MainSynopticTab import widget as wui -QtGui, QtCore, QtWidgets, wrapInstance, shiboken = gqt.qt_import(True) +QtGui, QtCore, QtWidgets, wrapInstance, shiboken = pyqt.qt_import(True) ################################################## @@ -100,7 +100,7 @@ def keyLeft_clicked(self): ''' MEMO: widget.py snippet -self.thumbRoll_L0_ctl.setToolTip(gqt.fakeTranslate("biped_body", "thumbRoll_L0_ctl", None, -1)) -self.thumbRoll_L0_ctl.setStatusTip(gqt.fakeTranslate("biped_body", "thumbRoll_L0_ctl", None, -1)) -self.thumbRoll_L0_ctl.setWhatsThis(gqt.fakeTranslate("biped_body", "thumbRoll_L0_ctl", None, -1)) +self.thumbRoll_L0_ctl.setToolTip(pyqt.fakeTranslate("biped_body", "thumbRoll_L0_ctl", None, -1)) +self.thumbRoll_L0_ctl.setStatusTip(pyqt.fakeTranslate("biped_body", "thumbRoll_L0_ctl", None, -1)) +self.thumbRoll_L0_ctl.setWhatsThis(pyqt.fakeTranslate("biped_body", "thumbRoll_L0_ctl", None, -1)) ''' diff --git a/scripts/mgear/maya/synoptic/tabs/quadruped/__init__.py b/scripts/mgear/maya/synoptic/tabs/quadruped/__init__.py index a545f03..901b231 100644 --- a/scripts/mgear/maya/synoptic/tabs/quadruped/__init__.py +++ b/scripts/mgear/maya/synoptic/tabs/quadruped/__init__.py @@ -27,12 +27,12 @@ ################################################## # GLOBAL ################################################## -import mgear.maya.pyqt as gqt +import mgear.maya.pyqt as pyqt from mgear.maya.synoptic.tabs import MainSynopticTab import widget as wui -QtGui, QtCore, QtWidgets, wrapInstance, shiboken = gqt.qt_import(True) +QtGui, QtCore, QtWidgets, wrapInstance, shiboken = pyqt.qt_import(True) ################################################## diff --git a/scripts/mgear/maya/synoptic/utils.py b/scripts/mgear/maya/synoptic/utils.py index 6b43a5a..3c36a59 100644 --- a/scripts/mgear/maya/synoptic/utils.py +++ b/scripts/mgear/maya/synoptic/utils.py @@ -1,54 +1,14 @@ -# MGEAR is under the terms of the MIT License - -# Copyright (c) 2016 Jeremie Passerin, Miquel Campos - -# Permission is hereby granted, free of charge, to any person obtaining a copy -# of this software and associated documentation files (the "Software"), to deal -# in the Software without restriction, including without limitation the rights -# to use, copy, modify, merge, publish, distribute, sublicense, and/or sell -# copies of the Software, and to permit persons to whom the Software is -# furnished to do so, subject to the following conditions: - -# The above copyright notice and this permission notice shall be included in all -# copies or substantial portions of the Software. - -# THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR -# IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, -# FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE -# AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER -# LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, -# OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE -# SOFTWARE. - -# Author: Jeremie Passerin geerem@hotmail.com www.jeremiepasserin.com -# Author: Miquel Campos hello@miquel-campos.com www.miquel-campos.com -# Date: 2016 / 10 / 10 - -################################################## -# GLOBAL -################################################## - - - -import pymel.core as pm -from pymel import versions -# import maya.mel as mel -# import maya.OpenMayaUI as omui from functools import partial import re - -import mgear -import mgear.maya.dag as dag -import mgear.maya.transform as tra -import mgear.maya.utils as mutils import traceback +from pymel import versions +import pymel.core as pm -import mgear.maya.pyqt as gqt -# from maya.app.general.mayaMixin import MayaQWidgetDockableMixin -# from maya.app.general.mayaMixin import MayaQDockWidget +import mgear -QtGui, QtCore, QtWidgets, wrapInstance = gqt.qt_import() +from mgear.maya import pyqt, dag, transform, utils +from mgear.vendor.Qt import QtCore, QtWidgets SYNOPTIC_WIDGET_NAME = "synoptic_view" @@ -63,9 +23,9 @@ ################################################## # util def isSideElement(name): + """Returns is name(str) side element? + # type: (str) -> bool - """ - Returns is name(str) side element? Arguments: node: str @@ -84,10 +44,11 @@ def isSideElement(name): def swapSideLabel(name): - # type: (str) -> str - """ - Returns fliped name that replaced side label left to right or right to left. + """Returns fliped name + Returns fliped name that replaced side label left to right or right to left + + # type: (str) -> str Arguments: name(str): @@ -110,9 +71,8 @@ def swapSideLabel(name): ################################################## def getSynopticWidget(widget, max_iter=20): + """Return the widget where the synoptic panel is attach - """ - Return the widget where the synoptic panel is attach :param widget: :param max_iter: :return: @@ -125,6 +85,7 @@ def getSynopticWidget(widget, max_iter=20): return False + def getModel(widget): syn_widget = getSynopticWidget(widget, max_iter=20) @@ -138,22 +99,25 @@ def getModel(widget): except pm.general.MayaNodeError: mes = traceback.format_exc() - mes = "Can't find model {0} for widget: {1}\n{2}".format(model_name, widget, mes) + mes = "Can't find model {0} for widget: {1}\n{2}".format( + model_name, widget, mes) mgear.log(mes, mgear.sev_error) return None return model + def getControlers(model, gSuffix=CTRL_GRP_SUFFIX): try: - ctl_set = pm.PyNode(model.name()+gSuffix) + ctl_set = pm.PyNode(model.name() + gSuffix) members = ctl_set.members() return members - except: + except TypeError: return None + def getNamespace(modelName): if not modelName: return "" @@ -165,9 +129,11 @@ def getNamespace(modelName): return nameSpace + def stripNamespace(nodeName): return nodeName.split(":")[-1] + def getNode(nodeName): try: return pm.PyNode(nodeName) @@ -179,7 +145,8 @@ def getNode(nodeName): def listAttrForMirror(node): # type: (pm.nodetypes.Transform) -> list[str] - res = ["tx", "ty", "tz", "rx", "ry", "rz", "sx", "sy", "sz"] # FIXME: should "ro" be here? + # TODO: should "ro" be here? + res = ["tx", "ty", "tz", "rx", "ry", "rz", "sx", "sy", "sz"] res.extend(pm.listAttr(node, userDefined=True, shortNames=True)) res = list(filter(lambda x: not x.startswith("inv"), res)) @@ -205,7 +172,7 @@ def selectObj(model, object_names, mouse_button, key_modifier): with pm.UndoChunk(): nodes = [] for name in object_names: - if nameSpace: + if nameSpace: node = getNode(nameSpace + ":" + name) else: node = getNode(name) @@ -214,9 +181,10 @@ def selectObj(model, object_names, mouse_button, key_modifier): continue if not node and nameSpace: - mgear.log("Can't find object : %s:%s"%( nameSpace, name), mgear.sev_error) + mgear.log("Can't find object : %s:%s" % (nameSpace, name), + mgear.sev_error) elif not node: - mgear.log("Can't find object : %s"%( name), mgear.sev_error) + mgear.log("Can't find object : %s" % (name), mgear.sev_error) nodes.append(node) if not nodes: @@ -230,31 +198,40 @@ def selectObj(model, object_names, mouse_button, key_modifier): # Key pressed if key_modifier is None: pm.select(nodes) - elif key_modifier == QtCore.Qt.NoModifier:# No Key + elif key_modifier == QtCore.Qt.NoModifier: # No Key pm.select(nodes) - elif key_modifier == QtCore.Qt.ControlModifier: # ctrl + elif key_modifier == QtCore.Qt.ControlModifier: # ctrl pm.select(nodes, deselect=True) - elif key_modifier == QtCore.Qt.ShiftModifier: # shift + elif key_modifier == QtCore.Qt.ShiftModifier: # shift pm.select(nodes, toggle=True) - elif int(key_modifier) == (QtCore.Qt.ControlModifier | QtCore.Qt.ShiftModifier): # ctrl + shift + elif int(key_modifier) == (QtCore.Qt.ControlModifier + | QtCore.Qt.ShiftModifier): # ctrl + shift pm.select(nodes, add=True) - elif key_modifier == QtCore.Qt.AltModifier: # alt + elif key_modifier == QtCore.Qt.AltModifier: # alt pm.select(nodes) - elif int(key_modifier) == (QtCore.Qt.ControlModifier | QtCore.Qt.AltModifier): # ctrl + alt + elif int(key_modifier) == (QtCore.Qt.ControlModifier + | QtCore.Qt.AltModifier): # ctrl + alt pm.select(nodes, deselect=True) - elif int(key_modifier) == (QtCore.Qt.ShiftModifier | QtCore.Qt.AltModifier): # shift + alt + elif int(key_modifier) == (QtCore.Qt.ShiftModifier + | QtCore.Qt.AltModifier): # shift + alt pm.select(nodes, toggle=True) - elif int(key_modifier) == (QtCore.Qt.ControlModifier | QtCore.Qt.AltModifier | QtCore.Qt.ShiftModifier): # Ctrl + alt + shift + + # Ctrl + alt + shift + elif int(key_modifier) == (QtCore.Qt.ControlModifier + | QtCore.Qt.AltModifier + | QtCore.Qt.ShiftModifier): pm.select(nodes, add=True) else: pm.select(nodes) # ================================================ + + def quickSel(model, channel, mouse_button): - qs_attr = model.attr("quicksel%s"%channel) + qs_attr = model.attr("quicksel%s" % channel) - if mouse_button == QtCore.Qt.LeftButton: # Call Selection + if mouse_button == QtCore.Qt.LeftButton: # Call Selection names = qs_attr.get().split(",") if not names: return @@ -263,11 +240,14 @@ def quickSel(model, channel, mouse_button): ctl = dag.findChild(model, name) if ctl: ctl.select(add=True) - elif mouse_button == QtCore.Qt.MidButton: # Save Selection - names = [ sel.name().split("|")[-1] for sel in pm.ls(selection=True) if sel.name().endswith("_ctl") ] + elif mouse_button == QtCore.Qt.MidButton: # Save Selection + names = [sel.name().split("|")[-1] + for sel in pm.ls(selection=True) + if sel.name().endswith("_ctl")] + qs_attr.set(",".join(names)) - elif mouse_button == QtCore.Qt.RightButton: # Key Selection + elif mouse_button == QtCore.Qt.RightButton: # Key Selection names = qs_attr.get().split(",") if not names: return @@ -275,12 +255,16 @@ def quickSel(model, channel, mouse_button): keyObj(model, names) # ================================================ + + def selAll(model): controlers = getControlers(model) pm.select(controlers) # ================================================ + + def selGroup(model, groupSuffix): controlers = getControlers(model, groupSuffix) @@ -295,20 +279,23 @@ def keySel(): pm.setKeyframe() # ================================================ + + def keyObj(model, object_names): + """Set the keyframe in the controls pass by a list in obj_names variable - """ - Set the keyframe in the controls pass by a list in obj_names variable + Args: + model (Str): Name of the namespace that will define de the model + object_names (Str): names of the controls, without the name space - :param model: Name of the namespace that will define de the model - :param object_names: names of the controls, without the name space - :return: None + Returns: + None """ with pm.UndoChunk(): nodes = [] nameSpace = getNamespace(model) for name in object_names: - if nameSpace: + if nameSpace: node = getNode(nameSpace + ":" + name) else: node = getNode(name) @@ -317,9 +304,10 @@ def keyObj(model, object_names): continue if not node and nameSpace: - mgear.log("Can't find object : %s:%s"%( nameSpace, name), mgear.sev_error) + mgear.log("Can't find object : %s:%s" % (nameSpace, name), + mgear.sev_error) elif not node: - mgear.log("Can't find object : %s"%( name), mgear.sev_error) + mgear.log("Can't find object : %s" % (name), mgear.sev_error) nodes.append(node) if not nodes: @@ -328,12 +316,16 @@ def keyObj(model, object_names): pm.setKeyframe(*nodes) # ================================================ + + def keyAll(model): controlers = getControlers(model) pm.setKeyframe(controlers) # ================================================ + + def keyGroup(model, groupSuffix): controlers = getControlers(model, groupSuffix) @@ -345,12 +337,12 @@ def keyGroup(model, groupSuffix): def toggleAttr(model, object_name, attr_name): nameSpace = getNamespace(model) - if nameSpace: + if nameSpace: node = dag.findChild(nameSpace + ":" + object_name) else: node = dag.findChild(model, object_name) - oAttr = node.attr(attr_name) + oAttr = node.attr(attr_name) if oAttr.type() in ["float", "bool"]: oVal = oAttr.get() if oVal == 1: @@ -359,7 +351,6 @@ def toggleAttr(model, object_name, attr_name): oAttr.set(1) - ################################################## # Combo Box ################################################## @@ -367,12 +358,10 @@ def toggleAttr(model, object_name, attr_name): def getComboKeys(model, object_name, combo_attr): nameSpace = getNamespace(model) - if nameSpace: + if nameSpace: node = getNode(nameSpace + ":" + object_name) - # node = dag.findRelative(model, model.split(":")[0] + ":" + object_name) else: node = getNode(object_name) - # node = dag.findRelative(model, object_name) oAttr = node.attr(combo_attr) keys = oAttr.getEnums().keys() @@ -383,12 +372,12 @@ def getComboKeys(model, object_name, combo_attr): def getComboIndex(model, object_name, combo_attr): nameSpace = getNamespace(model) - if nameSpace: + if nameSpace: node = getNode(nameSpace + ":" + object_name) else: node = getNode(object_name) - oVal = node.attr(combo_attr).get() + oVal = node.attr(combo_attr).get() return oVal @@ -455,18 +444,18 @@ def _getMth(name): if val == 1.0: for target, ctl in zip(fkTargets, fkCtrls): - tra.matchWorldTransform(target, ctl) + transform.matchWorldTransform(target, ctl) oAttr.set(0.0) # if is FK elif val == 0.0: - tra.matchWorldTransform(ikTarget, ikCtrl) + transform.matchWorldTransform(ikTarget, ikCtrl) if ikRot: - tra.matchWorldTransform(ikRotTarget, ikRotNode) + transform.matchWorldTransform(ikRotTarget, ikRotNode) - tra.matchWorldTransform(upvTarget, upvCtrl) + transform.matchWorldTransform(upvTarget, upvCtrl) oAttr.set(1.0) roll_att = uiNode.attr(ikfk_attr.replace("blend", "roll")) @@ -475,7 +464,8 @@ def _getMth(name): ################################################## # POSE ################################################## -# ================================================ + + def mirrorPose(flip=False, nodes=None): # type(bool, List[pm.nodetypes.Transform]) -> None @@ -518,7 +508,10 @@ def applyMirror(nameSpace, mirrorEntry): node.attr(attr).set(val) except RuntimeError as e: - mgear.log("applyMirror failed: {0} {1}: {2}".format(node.name(), attr, e), mgear.sev_error) + mgear.log("applyMirror failed: {0} {1}: {2}".format(node.name(), + attr, + e), + mgear.sev_error) def gatherMirrorData(nameSpace, node, flip): @@ -549,7 +542,10 @@ def calculateMirrorData(srcNode, targetNode, flip=False): # whether does attribute "invTx" exists when attrName is "tx" invCheckName = getInvertCheckButtonAttrName(attrName) - if not pm.attributeQuery(invCheckName, node=srcNode, shortName=True, exists=True): + if not pm.attributeQuery(invCheckName, + node=srcNode, + shortName=True, + exists=True): # if not exists, straight inv = 1 @@ -571,9 +567,13 @@ def calculateMirrorData(srcNode, targetNode, flip=False): # if flip enabled record self also if flip: flipVal = targetNode.attr(attrName).get() - results.append({"target": srcNode, "attr": invAttrName, "val": flipVal * inv}) + results.append({"target": srcNode, + "attr": invAttrName, + "val": flipVal * inv}) - results.append({"target": targetNode, "attr": invAttrName, "val": srcNode.attr(attrName).get() * inv}) + results.append({"target": targetNode, + "attr": invAttrName, + "val": srcNode.attr(attrName).get() * inv}) return results @@ -581,15 +581,24 @@ def calculateMirrorData(srcNode, targetNode, flip=False): def mirrorPoseOld(flip=False, nodes=False): axis = ["tx", "ty", "tz", "rx", "ry", "rz", "sx", "sy", "sz"] - aDic = {"tx":"invTx", "ty":"invTy", "tz":"invTz", "rx":"invRx", "ry":"invRy", "rz":"invRz", "sx":"invSx", "sy":"invSy", "sz":"invSz"} - mapDic = {"L":"R", "R":"L"} + aDic = {"tx": "invTx", + "ty": "invTy", + "tz": "invTz", + "rx": "invRx", + "ry": "invRy", + "rz": "invRz", + "sx": "invSx", + "sy": "invSy", + "sz": "invSz"} + + mapDic = {"L": "R", "R": "L"} if not nodes: nodes = pm.selected() pm.undoInfo(ock=1) try: nameSpace = False if nodes: - if len(nodes[0].split(":")) == 2: + if len(nodes[0].split(":")) == 2: nameSpace = nodes[0].split(":")[0] for oSel in nodes: if nameSpace: @@ -599,15 +608,15 @@ def mirrorPoseOld(flip=False, nodes=False): if nameParts[1][0] == "C": if not oSel.attr("tx").isLocked(): - oSel.attr("tx").set(oSel.attr("tx").get()*-1) + oSel.attr("tx").set(oSel.attr("tx").get() * -1) if not oSel.attr("ry").isLocked(): - oSel.attr("ry").set(oSel.attr("ry").get()*-1) + oSel.attr("ry").set(oSel.attr("ry").get() * -1) if not oSel.attr("rz").isLocked(): - oSel.attr("rz").set(oSel.attr("rz").get()*-1) + oSel.attr("rz").set(oSel.attr("rz").get() * -1) else: nameParts[1] = mapDic[nameParts[1][0]] + nameParts[1][1:] if nameSpace: - nameTarget = nameSpace+":"+"_".join(nameParts) + nameTarget = nameSpace + ":" + "_".join(nameParts) else: nameTarget = "_".join(nameParts) oTarget = getNode(nameTarget) @@ -620,11 +629,11 @@ def mirrorPoseOld(flip=False, nodes=False): if flip: flipVal = oTarget.attr(a).get() - oTarget.attr(a).set(oSel.attr(a).get()*inv) + oTarget.attr(a).set(oSel.attr(a).get() * inv) if flip: - oSel.attr(a).set(flipVal*inv) - except: + oSel.attr(a).set(flipVal * inv) + except Exception: pm.displayWarning("Flip/Mirror pose fail") pass finally: @@ -634,28 +643,27 @@ def mirrorPoseOld(flip=False, nodes=False): def bindPose(model): nameSpace = getNamespace(model.name()) if nameSpace: - dagPoseName = nameSpace+':dagPose1' + dagPoseName = nameSpace + ':dagPose1' else: dagPoseName = 'dagPose1' - pm.dagPose( dagPoseName, restore=True ) + pm.dagPose(dagPoseName, restore=True) def resetSelTrans(): with pm.UndoChunk(): for obj in pm.selected(): - tra.resetTransform(obj) + transform.resetTransform(obj) ################################################## # Transfer space ################################################## -# ================================================ class AbstractAnimationTransfer(QtWidgets.QDialog): try: valueChanged = QtCore.Signal(int) except Exception: - valueChanged = gqt.pyqtSignal() + valueChanged = pyqt.pyqtSignal() def __init__(self): # type: () -> None @@ -683,7 +691,10 @@ def create_controls(self): # type: () -> None self.groupBox = QtWidgets.QGroupBox() - self.setGroupBoxTitle() # must be implemented in each specialized classes + + # must be implemented in each specialized classes + self.setGroupBoxTitle() + self.onlyKeyframes_check = QtWidgets.QCheckBox('Only Keyframe Frames') self.onlyKeyframes_check.setChecked(True) self.startFrame_label = QtWidgets.QLabel("Start") @@ -697,7 +708,8 @@ def create_controls(self): self.endFrame_value.setMaximum(999999) self.populateRange(True) self.allFrames_button = QtWidgets.QPushButton("All Frames") - self.timeSliderFrames_button = QtWidgets.QPushButton("Time Slider Frames") + self.timeSliderFrames_button = QtWidgets.QPushButton( + "Time Slider Frames") self.comboBoxSpaces = QtWidgets.QComboBox() self.comboBoxSpaces.addItems(self.comboItems) @@ -738,8 +750,10 @@ def create_connections(self): # type: () -> None self.spaceTransfer_button.clicked.connect(self.doItByUI) - self.allFrames_button.clicked.connect(partial(self.populateRange, False)) - self.timeSliderFrames_button.clicked.connect(partial(self.populateRange, True)) + self.allFrames_button.clicked.connect( + partial(self.populateRange, False)) + self.timeSliderFrames_button.clicked.connect( + partial(self.populateRange, True)) # SLOTS ########################################################## @@ -812,7 +826,8 @@ def getWorldMatrices(self, start, end, val_src_nodes): def transfer(self, startFrame, endFrame, onlyKeyframes, *args, **kwargs): # type: (int, int, bool, *str, **str) -> None - raise NotImplementedError("must be implemented in each specialized class") + raise NotImplementedError("must be implemented in each " + "specialized class") def doItByUI(self): # type: () -> None @@ -829,25 +844,36 @@ def doItByUI(self): if self.comboObj is not None: self.comboObj.setCurrentIndex(self.comboBoxSpaces.currentIndex()) - for c in gqt.maya_main_window().children(): + for c in pyqt.maya_main_window().children(): if isinstance(c, AbstractAnimationTransfer): c.deleteLater() - @mutils.one_undo - @mutils.viewport_off - def bakeAnimation(self, switch_attr_name, val_src_nodes, key_src_nodes, key_dst_nodes, - startFrame, endFrame, onlyKeyframes=True): + @utils.one_undo + @utils.viewport_off + def bakeAnimation(self, + switch_attr_name, + val_src_nodes, + key_src_nodes, + key_dst_nodes, + startFrame, + endFrame, + onlyKeyframes=True): # type: (str, List[pm.nodetypes.Transform], List[pm.nodetypes.Transform], List[pm.nodetypes.Transform], int, int, bool) -> None # Temporaly turn off cycle check to avoid misleading cycle message on Maya 2016. With Maya 2016.5 and 2017 the cycle warning doesn't show up if versions.current() < 201650: pm.cycleCheck(e=False) - pm.displayWarning("Maya version older than: 2016.5: CycleCheck temporal turn OFF") + pm.displayWarning("Maya version older than: 2016.5: " + "CycleCheck temporal turn OFF") channels = ["tx", "ty", "tz", "rx", "ry", "rz", "sx", "sy", "sz"] - worldMatrixList = self.getWorldMatrices(startFrame, endFrame, val_src_nodes) - keyframeList = list(set(pm.keyframe(key_src_nodes, at=["t", "r", "s"], q=True))) - keyframeList.sort() + worldMatrixList = self.getWorldMatrices(startFrame, + endFrame, + val_src_nodes) + + keyframeList = sorted(set(pm.keyframe(key_src_nodes, + at=["t", "r", "s"], + q=True))) # delete animation in the space switch channel and destination ctrls pm.cutKey(key_dst_nodes, at=channels, time=(startFrame, endFrame)) @@ -875,6 +901,8 @@ def bakeAnimation(self, switch_attr_name, val_src_nodes, key_src_nodes, key_dst_ # ================================================ # Transfer space + + class ParentSpaceTransfer(AbstractAnimationTransfer): def __init__(self): @@ -902,7 +930,8 @@ def getValue(self): def setGroupBoxTitle(self): if hasattr(self, "groupBox"): # TODO: extract logic with naming convention - part = "_".join(self.ctrlNode.name().split(":")[-1].split("_")[:-1]) + part = "_".join( + self.ctrlNode.name().split(":")[-1].split("_")[:-1]) self.groupBox.setTitle(part) def transfer(self, startFrame, endFrame, onlyKeyframes, *args, **kwargs): @@ -912,15 +941,20 @@ def transfer(self, startFrame, endFrame, onlyKeyframes, *args, **kwargs): key_src_nodes = val_src_nodes key_dst_nodes = val_src_nodes - self.bakeAnimation(self.getChangeAttrName(), val_src_nodes, key_src_nodes, key_dst_nodes, - startFrame, endFrame, onlyKeyframes) + self.bakeAnimation(self.getChangeAttrName(), + val_src_nodes, + key_src_nodes, + key_dst_nodes, + startFrame, + endFrame, + onlyKeyframes) @staticmethod def showUI(combo, model, uihost, switchedAttrShortName, ctrl_name, *args): # type: (widgets.toggleCombo, pm.nodetypes.Transform, str, str, str, *str) -> None try: - for c in gqt.maya_main_window().children(): + for c in pyqt.maya_main_window().children(): if isinstance(c, ParentSpaceTransfer): c.deleteLater() @@ -939,7 +973,7 @@ def showUI(combo, model, uihost, switchedAttrShortName, ctrl_name, *args): # Delete the UI if errors occur to avoid causing winEvent # and event errors (in Maya 2014) try: - ui.createUI(gqt.maya_main_window()) + ui.createUI(pyqt.maya_main_window()) ui.show() except Exception as e: @@ -963,7 +997,9 @@ def getChangeAttrName(self): def getChangeRollAttrName(self): # type: () -> str - return "{}.{}".format(self.getHostName(), self.switchedAttrShortName.replace("blend", "roll")) + return "{}.{}".format( + self.getHostName(), + self.switchedAttrShortName.replace("blend", "roll")) def changeAttrToBoundValue(self): # type: () -> None @@ -1022,7 +1058,14 @@ def setGroupBoxTitle(self): # ---------------------------------------------------------------- - def transfer(self, startFrame, endFrame, onlyKeyframes, ikRot, switchTo=None, *args, **kargs): + def transfer(self, + startFrame, + endFrame, + onlyKeyframes, + ikRot, + switchTo=None, + *args, + **kargs): # type: (int, int, bool, str, *str, **str) -> None if switchTo is not None: @@ -1071,8 +1114,13 @@ def transfer(self, startFrame, endFrame, onlyKeyframes, ikRot, switchTo=None, *a pm.cutKey(roll_att, time=(startFrame, endFrame)) pm.setAttr(roll_att, 0) - self.bakeAnimation(self.getChangeAttrName(), val_src_nodes, key_src_nodes, key_dst_nodes, - startFrame, endFrame, onlyKeyframes) + self.bakeAnimation(self.getChangeAttrName(), + val_src_nodes, + key_src_nodes, + key_dst_nodes, + startFrame, + endFrame, + onlyKeyframes) # ---------------------------------------------------------------- # re implement doItbyUI to have access to self.hasIKrot option @@ -1091,7 +1139,7 @@ def doItByUI(self): if self.comboObj is not None: self.comboObj.setCurrentIndex(self.comboBoxSpaces.currentIndex()) - for c in gqt.maya_main_window().children(): + for c in pyqt.maya_main_window().children(): if isinstance(c, AbstractAnimationTransfer): c.deleteLater() # ---------------------------------------------------------------- @@ -1101,7 +1149,7 @@ def showUI(model, ikfk_attr, uihost, fks, ik, upv, ikRot, *args): # type: (pm.nodetypes.Transform, str, str, List[str], str, str, *str) -> None try: - for c in gqt.maya_main_window().children(): + for c in pyqt.maya_main_window().children(): if isinstance(c, IkFkTransfer): c.deleteLater() @@ -1120,7 +1168,7 @@ def showUI(model, ikfk_attr, uihost, fks, ik, upv, ikRot, *args): # Delete the UI if errors occur to avoid causing winEvent # and event errors (in Maya 2014) try: - ui.createUI(gqt.maya_main_window()) + ui.createUI(pyqt.maya_main_window()) ui.show() except Exception as e: @@ -1129,8 +1177,17 @@ def showUI(model, ikfk_attr, uihost, fks, ik, upv, ikRot, *args): mgear.log(e, mgear.sev_error) @staticmethod - def execute(model, ikfk_attr, uihost, fks, ik, upv, ikRot=None, - startFrame=None, endFrame=None, onlyKeyframes=None, switchTo=None): + def execute(model, + ikfk_attr, + uihost, + fks, + ik, + upv, + ikRot=None, + startFrame=None, + endFrame=None, + onlyKeyframes=None, + switchTo=None): # type: (pm.nodetypes.Transform, str, str, List[str], str, str, int, int, bool, str) -> None """transfer without displaying UI""" @@ -1163,28 +1220,43 @@ def toIK(model, ikfk_attr, uihost, fks, ik, upv, ikRot, **kwargs): # type: (pm.nodetypes.Transform, str, str, List[str], str, str, **str) -> None kwargs.update({"switchTo": "ik"}) - IkFkTransfer.execute(model, ikfk_attr, uihost, fks, ik, upv, ikRot, **kwargs) + IkFkTransfer.execute(model, + ikfk_attr, + uihost, + fks, + ik, + upv, + ikRot, + **kwargs) @staticmethod def toFK(model, ikfk_attr, uihost, fks, ik, upv, ikRot, **kwargs): # type: (pm.nodetypes.Transform, str, str, List[str], str, str, **str) -> None kwargs.update({"switchTo": "fk"}) - IkFkTransfer.execute(model, ikfk_attr, uihost, fks, ik, upv, ikRot, **kwargs) + IkFkTransfer.execute(model, + ikfk_attr, + uihost, + fks, + ik, + upv, + ikRot, + **kwargs) -#Baker Springs +# Baker Springs def clearSprings(model): springNodes = getControlers(model, gSuffix=PLOT_GRP_SUFFIX) pm.cutKey(springNodes, cl=True) -@mutils.one_undo -@mutils.viewport_off + +@utils.one_undo +@utils.viewport_off def bakeSprings(model): springNodes = getControlers(model, gSuffix=PLOT_GRP_SUFFIX) if springNodes: pm.cutKey(springNodes, cl=True) start = pm.playbackOptions(q=True, min=True) end = pm.playbackOptions(q=True, max=True) - pm.bakeResults( springNodes, t=(start,end), simulation=True ) + pm.bakeResults(springNodes, t=(start, end), simulation=True) diff --git a/scripts/mgear/maya/synoptic/widgets.py b/scripts/mgear/maya/synoptic/widgets.py index 2b90f06..5596b92 100644 --- a/scripts/mgear/maya/synoptic/widgets.py +++ b/scripts/mgear/maya/synoptic/widgets.py @@ -27,12 +27,12 @@ ################################################## # GLOBAL ################################################## -import mgear.maya.pyqt as gqt +import mgear.maya.pyqt as pyqt # from maya.app.general.mayaMixin import MayaQWidgetDockableMixin # from maya.app.general.mayaMixin import MayaQDockWidget import mgear.maya.synoptic.utils as syn_uti -QtGui, QtCore, QtWidgets, wrapInstance = gqt.qt_import() +QtGui, QtCore, QtWidgets, wrapInstance = pyqt.qt_import() From 1cde8c7fdb87f6f7545e3125c9d82bf05c891aeb Mon Sep 17 00:00:00 2001 From: miquelcampos Date: Tue, 28 Nov 2017 16:30:33 +0900 Subject: [PATCH 109/134] PEP8 #100: Synoptic WIP --- scripts/mgear/maya/synoptic/__init__.py | 7 +- scripts/mgear/maya/synoptic/tabs/__init__.py | 88 ++---- .../maya/synoptic/tabs/baker/__init__.py | 40 +-- .../maya/synoptic/tabs/biped/__init__.py | 84 ++---- .../maya/synoptic/tabs/quadruped/__init__.py | 37 +-- scripts/mgear/maya/synoptic/utils.py | 243 +++++++++++++-- scripts/mgear/maya/synoptic/widgets.py | 277 +++++++++--------- 7 files changed, 414 insertions(+), 362 deletions(-) diff --git a/scripts/mgear/maya/synoptic/__init__.py b/scripts/mgear/maya/synoptic/__init__.py index bb9361a..8ab4e40 100644 --- a/scripts/mgear/maya/synoptic/__init__.py +++ b/scripts/mgear/maya/synoptic/__init__.py @@ -6,14 +6,15 @@ from maya.app.general.mayaMixin import MayaQWidgetDockableMixin import mgear -from mgear.maya import pyqt, utils +from mgear.maya import pyqt from mgear.vendor.Qt import QtGui, QtCore, QtWidgets +import mgear.maya.utils SYNOPTIC_WIDGET_NAME = "synoptic_view" SYNOPTIC_ENV_KEY = "MGEAR_SYNOPTIC_PATH" -SYNOPTIC_DIRECTORIES = utils.gatherCustomModuleDirectories( +SYNOPTIC_DIRECTORIES = mgear.maya.utils.gatherCustomModuleDirectories( SYNOPTIC_ENV_KEY, os.path.join(os.path.dirname(__file__), "tabs")) @@ -40,7 +41,7 @@ def importTab(tabName): defFmt = "mgear.maya.synoptic.tabs.{}" customFmt = "{0}" - module = utils.importFromStandardOrCustomDirectories( + module = mgear.maya.utils.importFromStandardOrCustomDirectories( dirs, defFmt, customFmt, tabName) return module diff --git a/scripts/mgear/maya/synoptic/tabs/__init__.py b/scripts/mgear/maya/synoptic/tabs/__init__.py index 71bae52..de951aa 100644 --- a/scripts/mgear/maya/synoptic/tabs/__init__.py +++ b/scripts/mgear/maya/synoptic/tabs/__init__.py @@ -1,51 +1,18 @@ -# MGEAR is under the terms of the MIT License - -# Copyright (c) 2016 Jeremie Passerin, Miquel Campos - -# Permission is hereby granted, free of charge, to any person obtaining a copy -# of this software and associated documentation files (the "Software"), to deal -# in the Software without restriction, including without limitation the rights -# to use, copy, modify, merge, publish, distribute, sublicense, and/or sell -# copies of the Software, and to permit persons to whom the Software is -# furnished to do so, subject to the following conditions: - -# The above copyright notice and this permission notice shall be included in all -# copies or substantial portions of the Software. - -# THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR -# IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, -# FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE -# AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER -# LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, -# OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE -# SOFTWARE. - -# Author: Jeremie Passerin geerem@hotmail.com www.jeremiepasserin.com -# Author: Miquel Campos hello@miquel-campos.com www.miquel-campos.com -# Date: 2016 / 10 / 10 - - -################################################## -# GLOBAL -################################################## import traceback import pymel.core as pm import maya.OpenMayaUI as OpenMayaUI -import mgear.maya.pyqt as pyqt import mgear -import mgear.maya.synoptic.utils as syn_uti -import mgear.maya.synoptic.widgets as mwi - -# import functools - -QtGui, QtCore, QtWidgets, wrapInstance, shiboken = pyqt.qt_import(True) - +from .. import widgets +import mgear.maya.synoptic.utils as syn_utils +from mgear.vendor.Qt import QtCore, QtWidgets, QtGui, QtCompat ################################################## # SYNOPTIC TAB WIDGET ################################################## + + class MainSynopticTab(QtWidgets.QDialog): """ Base class of synoptic tab widget @@ -114,31 +81,28 @@ def _conn(entry): for entry in self.default_buttons + self.buttons: _conn(entry) - # self.b_selAll.clicked.connect(self.selAll_clicked) - # self.b_selAll.setMouseTracking(True) - # self.b_keyAll.clicked.connect(self.keyAll_clicked) - # self.b_keySel.clicked.connect(self.keySel_clicked) - def connectMaya(self): # type: () -> None # script job callback - ptr = long(shiboken.getCppPointer(self)[0]) + # ptr = long(QtCompat.getCppPointer(self)[0]) + # ptr = long(QtCompat.getCppPointer(self)) + ptr = QtCompat.getCppPointer(self) + gui = OpenMayaUI.MQtUtil.fullName(ptr) - self.selJob = pm.scriptJob(e=("SelectionChanged", self.selectChanged), parent=gui) + self.selJob = pm.scriptJob(e=("SelectionChanged", + self.selectChanged), + parent=gui) def selectChanged(self, *args): - """ - - :param args: - """ - # wrap to catch exception guaranteeing maya does not stop at this try: self.__selectChanged(*args) except Exception as e: mes = traceback.format_exc() - mes = "error has occur in scriptJob SelectionChanged\n{0}".format(mes) + mes = "error has occur in scriptJob " \ + "SelectionChanged\n{0}".format(mes) + mes = "{0}\n{1}".format(mes, e) mgear.log(mes, mgear.sev_error) pm.scriptJob(kill=self.selJob) @@ -149,21 +113,21 @@ def __selectChanged(self, *args): sels = [] [sels.append(x.name()) for x in pm.ls(sl=True)] - oModel = syn_uti.getModel(self) + oModel = syn_utils.getModel(self) if not oModel: mes = "model not found for synoptic {}".format(self.name) mgear.log(mes, mgear.sev_info) # self.close() - syn_widget = syn_uti.getSynopticWidget(self) + syn_widget = syn_utils.getSynopticWidget(self) syn_widget.updateModelList() return - nameSpace = syn_uti.getNamespace(oModel.name()) + nameSpace = syn_utils.getNamespace(oModel.name()) - selButtons = self.findChildren(mwi.SelectButton) + selButtons = self.findChildren(widgets.SelectButton) for selB in selButtons: obj = str(selB.property("object")).split(",") if len(obj) == 1: @@ -178,7 +142,7 @@ def __selectChanged(self, *args): selB.paintSelected(False) def _getButtonAbsoluteGeometry(self, button): - # type: (mwi.SelectButton) -> QtCore.QSize + # type: (widgets.SelectButton) -> QtCore.QSize if button in self._buttonGeometry.keys(): return self._buttonGeometry[button] @@ -211,7 +175,7 @@ def mouseReleaseEvent_(self, event): selected = [] rect = QtCore.QRect(self.origin, event.pos()).normalized() - for child in self.findChildren(mwi.SelectButton): + for child in self.findChildren(widgets.SelectButton): # if rect.intersects(child.geometry()): if rect.intersects(self._getButtonAbsoluteGeometry(child)): selected.append(child) @@ -235,8 +199,8 @@ def mouseReleaseEvent_(self, event): # BUTTONS def selAll_clicked(self): # type: () -> None - model = syn_uti.getModel(self) - syn_uti.selAll(model) + model = syn_utils.getModel(self) + syn_utils.selAll(model) def resetAll_clicked(self): # type: () -> None @@ -248,9 +212,9 @@ def resetSel_clicked(self): def keyAll_clicked(self): # type: () -> None - model = syn_uti.getModel(self) - syn_uti.keyAll(model) + model = syn_utils.getModel(self) + syn_utils.keyAll(model) def keySel_clicked(self): # type: () -> None - syn_uti.keySel() + syn_utils.keySel() diff --git a/scripts/mgear/maya/synoptic/tabs/baker/__init__.py b/scripts/mgear/maya/synoptic/tabs/baker/__init__.py index 78144ae..81d6f10 100644 --- a/scripts/mgear/maya/synoptic/tabs/baker/__init__.py +++ b/scripts/mgear/maya/synoptic/tabs/baker/__init__.py @@ -1,40 +1,5 @@ -# MGEAR is under the terms of the MIT License - -# Copyright (c) 2016 Jeremie Passerin, Miquel Campos - -# Permission is hereby granted, free of charge, to any person obtaining a copy -# of this software and associated documentation files (the "Software"), to deal -# in the Software without restriction, including without limitation the rights -# to use, copy, modify, merge, publish, distribute, sublicense, and/or sell -# copies of the Software, and to permit persons to whom the Software is -# furnished to do so, subject to the following conditions: - -# The above copyright notice and this permission notice shall be included in all -# copies or substantial portions of the Software. - -# THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR -# IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, -# FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE -# AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER -# LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, -# OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE -# SOFTWARE. - -# Author: Jeremie Passerin geerem@hotmail.com www.jeremiepasserin.com -# Author: Miquel Campos hello@miquel-campos.com www.miquel-campos.com -# Date: 2016 / 10 / 10 - -################################################## -# GLOBAL -################################################## -import os -import mgear.maya.pyqt as pyqt -import mgear.maya.synoptic.utils as syn_uti - from mgear.maya.synoptic.tabs import MainSynopticTab -import widget as wui - -QtGui, QtCore, QtWidgets, wrapInstance, shiboken = pyqt.qt_import(True) +from . import widget ################################################## @@ -42,12 +7,11 @@ ################################################## -class SynopticTab(MainSynopticTab, wui.Ui_baker): +class SynopticTab(MainSynopticTab, widget.Ui_baker): description = "baker" name = "baker" - # ============================================ # INIT def __init__(self, parent=None): diff --git a/scripts/mgear/maya/synoptic/tabs/biped/__init__.py b/scripts/mgear/maya/synoptic/tabs/biped/__init__.py index ec55e84..b5702ed 100644 --- a/scripts/mgear/maya/synoptic/tabs/biped/__init__.py +++ b/scripts/mgear/maya/synoptic/tabs/biped/__init__.py @@ -1,48 +1,17 @@ -# MGEAR is under the terms of the MIT License - -# Copyright (c) 2016 Jeremie Passerin, Miquel Campos - -# Permission is hereby granted, free of charge, to any person obtaining a copy -# of this software and associated documentation files (the "Software"), to deal -# in the Software without restriction, including without limitation the rights -# to use, copy, modify, merge, publish, distribute, sublicense, and/or sell -# copies of the Software, and to permit persons to whom the Software is -# furnished to do so, subject to the following conditions: - -# The above copyright notice and this permission notice shall be included in all -# copies or substantial portions of the Software. - -# THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR -# IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, -# FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE -# AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER -# LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, -# OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE -# SOFTWARE. - -# Author: Jeremie Passerin geerem@hotmail.com www.jeremiepasserin.com -# Author: Miquel Campos hello@miquel-campos.com www.miquel-campos.com -# Date: 2016 / 10 / 10 - -################################################## -# GLOBAL -################################################## import os -import mgear.maya.pyqt as pyqt -import mgear.maya.synoptic.utils as syn_uti from mgear.maya.synoptic.tabs import MainSynopticTab -import widget as wui - -QtGui, QtCore, QtWidgets, wrapInstance, shiboken = pyqt.qt_import(True) +from . import widget +import mgear.maya.synoptic.utils as syn_utils +from mgear.vendor.Qt import QtWidgets ################################################## # SYNOPTIC TAB WIDGET ################################################## -class SynopticTab(MainSynopticTab, wui.Ui_biped_body): +class SynopticTab(MainSynopticTab, widget.Ui_biped_body): description = "biped" name = "biped" @@ -63,44 +32,39 @@ def __init__(self, parent=None): # ============================================ # BUTTONS def selRight_clicked(self): - model = syn_uti.getModel(self) + model = syn_utils.getModel(self) # i : num of fingers, j : finger length - object_names = ["finger_R%s_fk%s_ctl"%(i,j) for i in range(4) for j in range(3)] - thumb_names = ["thumb_R0_fk%s_ctl"%j for j in range(3)] + object_names = ["finger_R%s_fk%s_ctl" % (i, j) + for i in range(4) for j in range(3)] + thumb_names = ["thumb_R0_fk%s_ctl" % j for j in range(3)] object_names.extend(thumb_names) modifiers = QtWidgets.QApplication.keyboardModifiers() - syn_uti.selectObj(model, object_names, None, modifiers) + syn_utils.selectObj(model, object_names, None, modifiers) def selLeft_clicked(self): - model = syn_uti.getModel(self) + model = syn_utils.getModel(self) # i : num of fingers, j : finger length - object_names = ["finger_L%s_fk%s_ctl"%(i,j) for i in range(4) for j in range(3)] - thumb_names = ["thumb_L0_fk%s_ctl"%j for j in range(3)] + object_names = ["finger_L%s_fk%s_ctl" % (i, j) + for i in range(4) for j in range(3)] + thumb_names = ["thumb_L0_fk%s_ctl" % j for j in range(3)] object_names.extend(thumb_names) modifiers = QtWidgets.QApplication.keyboardModifiers() - syn_uti.selectObj(model, object_names, None, modifiers) + syn_utils.selectObj(model, object_names, None, modifiers) def keyRight_clicked(self): - model = syn_uti.getModel(self) + model = syn_utils.getModel(self) # i : num of fingers, j : finger length - object_names = ["finger_R%s_fk%s_ctl"%(i,j) for i in range(4) for j in range(3)] - thumb_names = ["thumb_R0_fk%s_ctl"%j for j in range(3)] + object_names = ["finger_R%s_fk%s_ctl" % (i, j) + for i in range(4) for j in range(3)] + thumb_names = ["thumb_R0_fk%s_ctl" % j for j in range(3)] object_names.extend(thumb_names) - syn_uti.keyObj(model, object_names) + syn_utils.keyObj(model, object_names) def keyLeft_clicked(self): - model = syn_uti.getModel(self) + model = syn_utils.getModel(self) # i : num of fingers, j : finger length - object_names = ["finger_L%s_fk%s_ctl"%(i,j) for i in range(4) for j in range(3)] - thumb_names = ["thumb_L0_fk%s_ctl"%j for j in range(3)] + object_names = ["finger_L%s_fk%s_ctl" % (i, j) + for i in range(4) for j in range(3)] + thumb_names = ["thumb_L0_fk%s_ctl" % j for j in range(3)] object_names.extend(thumb_names) - syn_uti.keyObj(model, object_names) - - - -''' -MEMO: widget.py snippet -self.thumbRoll_L0_ctl.setToolTip(pyqt.fakeTranslate("biped_body", "thumbRoll_L0_ctl", None, -1)) -self.thumbRoll_L0_ctl.setStatusTip(pyqt.fakeTranslate("biped_body", "thumbRoll_L0_ctl", None, -1)) -self.thumbRoll_L0_ctl.setWhatsThis(pyqt.fakeTranslate("biped_body", "thumbRoll_L0_ctl", None, -1)) -''' + syn_utils.keyObj(model, object_names) diff --git a/scripts/mgear/maya/synoptic/tabs/quadruped/__init__.py b/scripts/mgear/maya/synoptic/tabs/quadruped/__init__.py index 901b231..ed7b718 100644 --- a/scripts/mgear/maya/synoptic/tabs/quadruped/__init__.py +++ b/scripts/mgear/maya/synoptic/tabs/quadruped/__init__.py @@ -1,38 +1,5 @@ -# MGEAR is under the terms of the MIT License - -# Copyright (c) 2016 Jeremie Passerin, Miquel Campos - -# Permission is hereby granted, free of charge, to any person obtaining a copy -# of this software and associated documentation files (the "Software"), to deal -# in the Software without restriction, including without limitation the rights -# to use, copy, modify, merge, publish, distribute, sublicense, and/or sell -# copies of the Software, and to permit persons to whom the Software is -# furnished to do so, subject to the following conditions: - -# The above copyright notice and this permission notice shall be included in all -# copies or substantial portions of the Software. - -# THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR -# IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, -# FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE -# AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER -# LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, -# OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE -# SOFTWARE. - -# Author: Jeremie Passerin geerem@hotmail.com www.jeremiepasserin.com -# Author: Miquel Campos hello@miquel-campos.com www.miquel-campos.com -# Date: 2016 / 10 / 10 - -################################################## -# GLOBAL -################################################## -import mgear.maya.pyqt as pyqt - from mgear.maya.synoptic.tabs import MainSynopticTab -import widget as wui - -QtGui, QtCore, QtWidgets, wrapInstance, shiboken = pyqt.qt_import(True) +from . import widget ################################################## @@ -40,7 +7,7 @@ ################################################## -class SynopticTab(MainSynopticTab, wui.Ui_biped_body): +class SynopticTab(MainSynopticTab, widget.Ui_biped_body): description = "biped body" name = "biped_body" diff --git a/scripts/mgear/maya/synoptic/utils.py b/scripts/mgear/maya/synoptic/utils.py index 3c36a59..809deca 100644 --- a/scripts/mgear/maya/synoptic/utils.py +++ b/scripts/mgear/maya/synoptic/utils.py @@ -25,13 +25,14 @@ def isSideElement(name): """Returns is name(str) side element? - # type: (str) -> bool - Arguments: - node: str + name (str): Description Returns: bool + + Deleted Parameters: + node: str """ nameParts = stripNamespace(name).split("|")[-1] @@ -46,11 +47,11 @@ def isSideElement(name): def swapSideLabel(name): """Returns fliped name - Returns fliped name that replaced side label left to right or right to left + Returns fliped name that replaced side label left to right or + right to left - # type: (str) -> str Arguments: - name(str): + name(str): Name to swap the side Returns: str @@ -73,9 +74,12 @@ def swapSideLabel(name): def getSynopticWidget(widget, max_iter=20): """Return the widget where the synoptic panel is attach - :param widget: - :param max_iter: - :return: + Arguments: + widget (QWidget): The widget to get the parent + max_iter (int, optional): Iteration limit to find the paretn widget + + Returns: + widget: The Parent widget """ parent = widget.parentWidget() for i in range(max_iter): @@ -87,7 +91,14 @@ def getSynopticWidget(widget, max_iter=20): def getModel(widget): + """Get the model Name + + Args: + widget (QWidget): Synoptic widget + Returns: + PyNode: The rig model name + """ syn_widget = getSynopticWidget(widget, max_iter=20) model_name = syn_widget.model_list.currentText() @@ -108,7 +119,15 @@ def getModel(widget): def getControlers(model, gSuffix=CTRL_GRP_SUFFIX): + """Get thr controlers from the set + Args: + model (PyNode): Rig root + gSuffix (str, optional): set suffix + + Returns: + list: The members of the group + """ try: ctl_set = pm.PyNode(model.name() + gSuffix) members = ctl_set.members() @@ -119,6 +138,14 @@ def getControlers(model, gSuffix=CTRL_GRP_SUFFIX): def getNamespace(modelName): + """Get the name space from rig root + + Args: + modelName (str): Rig top node name + + Returns: + str: Namespace + """ if not modelName: return "" @@ -131,10 +158,27 @@ def getNamespace(modelName): def stripNamespace(nodeName): + """Strip all the namespaces from a given name + + Args: + nodeName (str): Node name to strip the namespaces + + Returns: + str: Node name without namespace + """ return nodeName.split(":")[-1] def getNode(nodeName): + """Get a PyNode from the string name + + + Args: + nodeName (str): Node name + + Returns: + PyNode or None: The node. or None if the object can't be found + """ try: return pm.PyNode(nodeName) @@ -143,8 +187,14 @@ def getNode(nodeName): def listAttrForMirror(node): - # type: (pm.nodetypes.Transform) -> list[str] + """List attributes to invert the value for mirror posing + + Args: + node (PyNode): The Node with the attributes to invert + Returns: + list: Attributes to invert + """ # TODO: should "ro" be here? res = ["tx", "ty", "tz", "rx", "ry", "rz", "sx", "sy", "sz"] res.extend(pm.listAttr(node, userDefined=True, shortNames=True)) @@ -154,6 +204,14 @@ def listAttrForMirror(node): def getInvertCheckButtonAttrName(str): + """Get the invert check butto attribute name + + Args: + str (str): The attribute name + + Returns: + str: The checked attribute name + """ # type: (str) -> str return "inv{0}".format(str.lower().capitalize()) @@ -163,7 +221,17 @@ def getInvertCheckButtonAttrName(str): ################################################## # ================================================ def selectObj(model, object_names, mouse_button, key_modifier): + """Select an object + + Args: + model (PyNode): The rig top node + object_names (list): The names of the objects to select + mouse_button (QtSignal): Clicked mouse button signal + key_modifier (QtSignal): Modifier button signal + Returns: + None + """ if not model: return @@ -228,7 +296,16 @@ def selectObj(model, object_names, mouse_button, key_modifier): def quickSel(model, channel, mouse_button): + """Select the object stored on the quick selection attributes + + Args: + model (PyNode): The rig top node + channel (str): The quick selection channel name + mouse_button (QtSignal): Clicked mouse button + Returns: + None + """ qs_attr = model.attr("quicksel%s" % channel) if mouse_button == QtCore.Qt.LeftButton: # Call Selection @@ -258,7 +335,11 @@ def quickSel(model, channel, mouse_button): def selAll(model): + """Select all controlers + Args: + model (PyNode): Rig top node + """ controlers = getControlers(model) pm.select(controlers) @@ -266,7 +347,12 @@ def selAll(model): def selGroup(model, groupSuffix): + """Select the members of a given set + Args: + model (PyNode): Rig top node + groupSuffix (str): Set suffix name + """ controlers = getControlers(model, groupSuffix) pm.select(controlers) @@ -276,6 +362,8 @@ def selGroup(model, groupSuffix): ################################################## # ================================================ def keySel(): + """Key selected controls""" + pm.setKeyframe() # ================================================ @@ -319,7 +407,13 @@ def keyObj(model, object_names): def keyAll(model): + """Keyframe all the controls inside the controls group + + Note: We use the workd "group" to refer to a set in Maya + Args: + model (PyNode): Rig top node + """ controlers = getControlers(model) pm.setKeyframe(controlers) @@ -327,7 +421,12 @@ def keyAll(model): def keyGroup(model, groupSuffix): + """Keyframe all the members of a given group + Args: + model (PyNode): Rig top node + groupSuffix (str): The group preffix + """ controlers = getControlers(model, groupSuffix) pm.setKeyframe(controlers) @@ -335,7 +434,14 @@ def keyGroup(model, groupSuffix): def toggleAttr(model, object_name, attr_name): + """Toggle a boolean attribute + Args: + model (PyNode): Rig top node + object_name (str): The name of the control containing the attribute to + toggle + attr_name (str): The attribute to toggle + """ nameSpace = getNamespace(model) if nameSpace: node = dag.findChild(nameSpace + ":" + object_name) @@ -356,7 +462,16 @@ def toggleAttr(model, object_name, attr_name): ################################################## # ================================================ def getComboKeys(model, object_name, combo_attr): + """Get the keys from a combo attribute + Args: + model (PyNode): Rig top node + object_name (str): Control name + combo_attr (str): Combo attribute name + + Returns: + list: Keys names from the combo attribute. + """ nameSpace = getNamespace(model) if nameSpace: node = getNode(nameSpace + ":" + object_name) @@ -370,7 +485,16 @@ def getComboKeys(model, object_name, combo_attr): def getComboIndex(model, object_name, combo_attr): + """Get the index from a combo attribute + + Args: + model (PyNode): Rig top node + object_name (str): Control name + combo_attr (str): Combo attribute name + Returns: + int: Current index in the combo attribute + """ nameSpace = getNamespace(model) if nameSpace: node = getNode(nameSpace + ":" + object_name) @@ -382,7 +506,17 @@ def getComboIndex(model, object_name, combo_attr): def changeSpace(model, object_name, combo_attr, cnsIndex, ctl_name): + """Change the space of a control + + i.e: A control with ik reference array + Args: + model (PyNode): Rig top node + object_name (str): Object Name + combo_attr (str): Combo attribute name + cnsIndex (int): Combo index to change + ctl_name (str): Control name + """ nameSpace = getNamespace(model) if nameSpace: node = getNode(nameSpace + ":" + object_name) @@ -404,8 +538,20 @@ def changeSpace(model, object_name, combo_attr, cnsIndex, ctl_name): ################################################## # ================================================ def ikFkMatch(model, ikfk_attr, uiHost_name, fks, ik, upv, ikRot=None): - # type: (pm.nodetypes.Transform, str, str, List[str], str, str, str) -> None + """Switch IK/FK with matching functionality + + This function is meant to work with 2 joint limbs. + i.e: human legs or arms + Args: + model (PyNode): Rig top transform node + ikfk_attr (str): Blend ik fk attribute name + uiHost_name (str): Ui host name + fks ([str]): List of fk controls names + ik (str): Ik control name + upv (str): Up vector control name + ikRot (None, str): optional. Name of the Ik Rotation control + """ nameSpace = getNamespace(model) def _getNode(name): @@ -467,8 +613,12 @@ def _getMth(name): def mirrorPose(flip=False, nodes=None): - # type(bool, List[pm.nodetypes.Transform]) -> None + """Summary + Args: + flip (bool, optiona): Set the function behaviout to flip + nodes (None, [PyNode]): Controls to mirro/flip the pose + """ if nodes is None: nodes = pm.selected() @@ -496,6 +646,12 @@ def mirrorPose(flip=False, nodes=None): def applyMirror(nameSpace, mirrorEntry): + """Apply mirro pose + + Args: + nameSpace (str): Namespace + mirrorEntry (list): List witht the mirror entry template + """ node = mirrorEntry["target"] attr = mirrorEntry["attr"] val = mirrorEntry["val"] @@ -515,8 +671,16 @@ def applyMirror(nameSpace, mirrorEntry): def gatherMirrorData(nameSpace, node, flip): - # type: (str, pm.datatypes.Transform, bool) -> List[dict[str]] + """Get the data to mirror + + Args: + nameSpace (str): Namespace + node (PyNode): No + flip (TYPE): flip option + Returns: + [dict[str]: The mirror data + """ if isSideElement(node.name()): nameParts = stripNamespace(node.name()).split("|")[-1] @@ -532,8 +696,16 @@ def gatherMirrorData(nameSpace, node, flip): def calculateMirrorData(srcNode, targetNode, flip=False): - # type: (str, pm.datatypes.Transform, bool) -> List[dict[str]] - """returns [{"target": node, "attr": at, "val": flipVal}]""" + """Calculate the mirror data + + Args: + srcNode (str): The source Node + targetNode ([dict[str]]): Target node + flip (bool, optional): flip option + + Returns: + [{"target": node, "attr": at, "val": flipVal}] + """ results = [] @@ -579,7 +751,12 @@ def calculateMirrorData(srcNode, targetNode, flip=False): def mirrorPoseOld(flip=False, nodes=False): + """Deprecated: Mirror pose + Args: + flip (bool, optional): if True will flip the pose + nodes (bool, optional): Nodes to mirror or flip transformation + """ axis = ["tx", "ty", "tz", "rx", "ry", "rz", "sx", "sy", "sz"] aDic = {"tx": "invTx", "ty": "invTy", @@ -641,6 +818,11 @@ def mirrorPoseOld(flip=False, nodes=False): def bindPose(model): + """Restore the reset position of the rig + + Args: + model (TYPE): Description + """ nameSpace = getNamespace(model.name()) if nameSpace: dagPoseName = nameSpace + ':dagPose1' @@ -650,6 +832,7 @@ def bindPose(model): def resetSelTrans(): + """Reset the transfom values (SRT) for the selected objects""" with pm.UndoChunk(): for obj in pm.selected(): transform.resetTransform(obj) @@ -659,6 +842,7 @@ def resetSelTrans(): # Transfer space ################################################## class AbstractAnimationTransfer(QtWidgets.QDialog): + """Abstract animation transfer class""" try: valueChanged = QtCore.Signal(int) @@ -786,7 +970,8 @@ def setComboBoxItemsFormList(self, comboList): def setGroupBoxTitle(self): # type: (str) -> None - # raise NotImplementedError("must implement transfer in each specialized class") + # raise NotImplementedError("must implement transfer + # in each specialized class") pass def setComboObj(self, combo): @@ -811,7 +996,8 @@ def getHostName(self): return ":".join([self.nameSpace, self.uihost]) def getWorldMatrices(self, start, end, val_src_nodes): - # type: (int, int, List[pm.nodetypes.Transform]) -> List[List[pm.datatypes.Matrix]] + # type: (int, int, List[pm.nodetypes.Transform]) -> + # List[List[pm.datatypes.Matrix]] """ returns matrice List[frame][controller number].""" res = [] @@ -858,9 +1044,13 @@ def bakeAnimation(self, startFrame, endFrame, onlyKeyframes=True): - # type: (str, List[pm.nodetypes.Transform], List[pm.nodetypes.Transform], List[pm.nodetypes.Transform], int, int, bool) -> None + # type: (str, List[pm.nodetypes.Transform], + # List[pm.nodetypes.Transform], + # List[pm.nodetypes.Transform], int, int, bool) -> None - # Temporaly turn off cycle check to avoid misleading cycle message on Maya 2016. With Maya 2016.5 and 2017 the cycle warning doesn't show up + # Temporaly turn off cycle check to avoid misleading cycle message + # on Maya 2016. With Maya 2016.5 and 2017 the cycle warning doesn't + # show up if versions.current() < 201650: pm.cycleCheck(e=False) pm.displayWarning("Maya version older than: 2016.5: " @@ -951,7 +1141,8 @@ def transfer(self, startFrame, endFrame, onlyKeyframes, *args, **kwargs): @staticmethod def showUI(combo, model, uihost, switchedAttrShortName, ctrl_name, *args): - # type: (widgets.toggleCombo, pm.nodetypes.Transform, str, str, str, *str) -> None + # type: (widgets.toggleCombo, + # pm.nodetypes.Transform, str, str, str, *str) -> None try: for c in pyqt.maya_main_window().children(): @@ -1146,7 +1337,8 @@ def doItByUI(self): @staticmethod def showUI(model, ikfk_attr, uihost, fks, ik, upv, ikRot, *args): - # type: (pm.nodetypes.Transform, str, str, List[str], str, str, *str) -> None + # type: (pm.nodetypes.Transform, str, str, + # List[str], str, str, *str) -> None try: for c in pyqt.maya_main_window().children(): @@ -1188,7 +1380,8 @@ def execute(model, endFrame=None, onlyKeyframes=None, switchTo=None): - # type: (pm.nodetypes.Transform, str, str, List[str], str, str, int, int, bool, str) -> None + # type: (pm.nodetypes.Transform, str, str, + # List[str], str, str, int, int, bool, str) -> None """transfer without displaying UI""" if startFrame is None: @@ -1217,7 +1410,8 @@ def execute(model, @staticmethod def toIK(model, ikfk_attr, uihost, fks, ik, upv, ikRot, **kwargs): - # type: (pm.nodetypes.Transform, str, str, List[str], str, str, **str) -> None + # type: (pm.nodetypes.Transform, str, str, + # List[str], str, str, **str) -> None kwargs.update({"switchTo": "ik"}) IkFkTransfer.execute(model, @@ -1231,7 +1425,8 @@ def toIK(model, ikfk_attr, uihost, fks, ik, upv, ikRot, **kwargs): @staticmethod def toFK(model, ikfk_attr, uihost, fks, ik, upv, ikRot, **kwargs): - # type: (pm.nodetypes.Transform, str, str, List[str], str, str, **str) -> None + # type: (pm.nodetypes.Transform, str, str, + # List[str], str, str, **str) -> None kwargs.update({"switchTo": "fk"}) IkFkTransfer.execute(model, diff --git a/scripts/mgear/maya/synoptic/widgets.py b/scripts/mgear/maya/synoptic/widgets.py index 5596b92..65bcef6 100644 --- a/scripts/mgear/maya/synoptic/widgets.py +++ b/scripts/mgear/maya/synoptic/widgets.py @@ -1,39 +1,6 @@ -# MGEAR is under the terms of the MIT License - -# Copyright (c) 2016 Jeremie Passerin, Miquel Campos - -# Permission is hereby granted, free of charge, to any person obtaining a copy -# of this software and associated documentation files (the "Software"), to deal -# in the Software without restriction, including without limitation the rights -# to use, copy, modify, merge, publish, distribute, sublicense, and/or sell -# copies of the Software, and to permit persons to whom the Software is -# furnished to do so, subject to the following conditions: - -# The above copyright notice and this permission notice shall be included in all -# copies or substantial portions of the Software. - -# THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR -# IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, -# FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE -# AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER -# LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, -# OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE -# SOFTWARE. - -# Author: Jeremie Passerin geerem@hotmail.com www.jeremiepasserin.com -# Author: Miquel Campos hello@miquel-campos.com www.miquel-campos.com -# Date: 2016 / 10 / 10 - -################################################## -# GLOBAL -################################################## -import mgear.maya.pyqt as pyqt -# from maya.app.general.mayaMixin import MayaQWidgetDockableMixin -# from maya.app.general.mayaMixin import MayaQDockWidget -import mgear.maya.synoptic.utils as syn_uti - -QtGui, QtCore, QtWidgets, wrapInstance = pyqt.qt_import() +from mgear.maya.synoptic import utils as syn_utils +from mgear.vendor.Qt import QtCore, QtWidgets, QtGui ################################################## @@ -49,48 +16,58 @@ def __init__(self, parent=None): self.currentIndexChanged['QString'].connect(self.handleChanged) - - def wheelEvent (self, event): + def wheelEvent(self, event): event.ignore() - # def focusInEvent(self, event): def enterEvent(self, event): - self.model = syn_uti.getModel(self) + self.model = syn_utils.getModel(self) self.uihost_name = str(self.property("Object")) self.combo_attr = str(self.property("Attr")) self.ctl_name = str(self.property("ik_ctl")) if not self.currentText(): - list1 = syn_uti.getComboKeys( self.model, self.uihost_name, self.combo_attr) + list1 = syn_utils.getComboKeys( + self.model, self.uihost_name, self.combo_attr) self.addItems(list1) - self.setCurrentIndex(syn_uti.getComboIndex( self.model, self.uihost_name, self.combo_attr)) + self.setCurrentIndex(syn_utils.getComboIndex( + self.model, self.uihost_name, self.combo_attr)) self.firstUpdate = True def handleChanged(self): if self.firstUpdate: - if self.currentIndex() == self.count() -1: + if self.currentIndex() == self.count() - 1: print "Space Transfer" - self.setCurrentIndex(syn_uti.getComboIndex( self.model, self.uihost_name, self.combo_attr)) - # self.setCurrentIndex(0) - syn_uti.ParentSpaceTransfer.showUI(self, self.model, self.uihost_name, self.combo_attr, self.ctl_name) + self.setCurrentIndex(syn_utils.getComboIndex( + self.model, self.uihost_name, self.combo_attr)) + syn_utils.ParentSpaceTransfer.showUI(self, + self.model, + self.uihost_name, + self.combo_attr, + self.ctl_name) else: - syn_uti.changeSpace(self.model, self.uihost_name, self.combo_attr, self.currentIndex(), self.ctl_name) + syn_utils.changeSpace(self.model, + self.uihost_name, + self.combo_attr, + self.currentIndex(), + self.ctl_name) + class bakeSprings(QtWidgets.QPushButton): def mousePressEvent(self, event): - model = syn_uti.getModel(self) - syn_uti.bakeSprings(model) + model = syn_utils.getModel(self) + syn_utils.bakeSprings(model) + class clearSprings(QtWidgets.QPushButton): def mousePressEvent(self, event): - model = syn_uti.getModel(self) - syn_uti.clearSprings(model) + model = syn_utils.getModel(self) + syn_utils.clearSprings(model) class ikfkMatchButton(QtWidgets.QPushButton): @@ -116,7 +93,7 @@ def mousePressEvent(self, event): mouse_button = event.button() - model = syn_uti.getModel(self) + model = syn_utils.getModel(self) ikfk_attr = str(self.property("ikfk_attr")) uiHost_name = str(self.property("uiHost_name")) @@ -136,85 +113,86 @@ def mousePressEvent(self, event): ikRot = None if mouse_button == QtCore.Qt.RightButton: - syn_uti.IkFkTransfer.showUI(model, ikfk_attr, uiHost_name, fks, ik, upv, ikRot) + syn_utils.IkFkTransfer.showUI( + model, ikfk_attr, uiHost_name, fks, ik, upv, ikRot) return else: - syn_uti.ikFkMatch(model, ikfk_attr, uiHost_name, fks, ik, upv, ikRot) + syn_utils.ikFkMatch( + model, ikfk_attr, uiHost_name, fks, ik, upv, ikRot) return + class selGroup(QtWidgets.QPushButton): def mousePressEvent(self, event): - model = syn_uti.getModel(self) + model = syn_utils.getModel(self) group_suffix = str(self.property("groupSuffix")) - mouse_button = event.button() - syn_uti.selGroup(model, group_suffix) + syn_utils.selGroup(model, group_suffix) + class keyGroup(QtWidgets.QPushButton): def mousePressEvent(self, event): - model = syn_uti.getModel(self) + model = syn_utils.getModel(self) group_suffix = str(self.property("groupSuffix")) - mouse_button = event.button() - syn_uti.keyGroup(model, group_suffix) + syn_utils.keyGroup(model, group_suffix) class toggleAttrButton(QtWidgets.QPushButton): def mousePressEvent(self, event): - model = syn_uti.getModel(self) + model = syn_utils.getModel(self) object_name = str(self.property("Object")) attr_name = str(self.property("Attr")) - mouse_button = event.button() - syn_uti.toggleAttr(model, object_name, attr_name) + syn_utils.toggleAttr(model, object_name, attr_name) class resetTransform(QtWidgets.QPushButton): def mousePressEvent(self, event): - mouse_button = event.button() - syn_uti.resetSelTrans() + syn_utils.resetSelTrans() class resetBindPose(QtWidgets.QPushButton): def mousePressEvent(self, event): - model = syn_uti.getModel(self) - mouse_button = event.button() + model = syn_utils.getModel(self) + + syn_utils.bindPose(model) - syn_uti.bindPose(model) class MirrorPoseButton(QtWidgets.QPushButton): def mousePressEvent(self, event): - mouse_button = event.button() - syn_uti.mirrorPose() + syn_utils.mirrorPose() + class FlipPoseButton(QtWidgets.QPushButton): def mousePressEvent(self, event): - mouse_button = event.button() - syn_uti.mirrorPose(True) + syn_utils.mirrorPose(True) + class QuickSelButton(QtWidgets.QPushButton): def mousePressEvent(self, event): - model = syn_uti.getModel(self) + model = syn_utils.getModel(self) channel = str(self.property("channel")) mouse_button = event.button() - syn_uti.quickSel(model, channel, mouse_button) + syn_utils.quickSel(model, channel, mouse_button) + class SelectButton(QtWidgets.QWidget): over = False @@ -229,7 +207,6 @@ def __init__(self, parent=None): p.setColor(self.backgroundRole(), QtGui.QColor(000, 000, 000, 000)) self.setPalette(p) - def enterEvent(self, event): self.over = True self.repaint() @@ -240,29 +217,29 @@ def leaveEvent(self, event): self.repaint() self.update() - def rectangleSelection(self,event, firstLoop): + def rectangleSelection(self, event, firstLoop): if firstLoop: key_modifier = event.modifiers() else: if event.modifiers(): key_modifier = event.modifiers() else: - # key_modifier = QtCore.Qt.ShiftModifier - key_modifier = (QtCore.Qt.ControlModifier | QtCore.Qt.ShiftModifier) - model = syn_uti.getModel(self) + key_modifier = (QtCore.Qt.ControlModifier + | QtCore.Qt.ShiftModifier) + model = syn_utils.getModel(self) object = str(self.property("object")).split(",") mouse_button = event.button() - syn_uti.selectObj(model, object, mouse_button, key_modifier) + syn_utils.selectObj(model, object, mouse_button, key_modifier) def mousePressEvent(self, event): - model = syn_uti.getModel(self) + model = syn_utils.getModel(self) object = str(self.property("object")).split(",") mouse_button = event.button() key_modifier = event.modifiers() - syn_uti.selectObj(model, object, mouse_button, key_modifier) + syn_utils.selectObj(model, object, mouse_button, key_modifier) def paintEvent(self, event): painter = QtGui.QPainter() @@ -277,12 +254,13 @@ def paintEvent(self, event): def paintSelected(self, paint=False): if paint: p = self.palette() - p.setColor(self.foregroundRole(),QtGui.QColor(255, 255, 255, 255)) + p.setColor(self.foregroundRole(), QtGui.QColor(255, 255, 255, 255)) self.setPalette(p) self.setBorderColor(QtGui.QColor(255, 255, 255, 255)) else: p = self.palette() - p.setColor(self.foregroundRole(),QtGui.QColor(000, 000, 000, 010)) + p.setColor(self.foregroundRole(), + QtGui.QColor(000, 000, 000, 0o10)) self.setPalette(p) self.setBorderColor(self.defaultBGColor) @@ -303,27 +281,35 @@ def drawPathWithBorder(self, painter, path, borderWidth): class SelectBtn_RFk(SelectButton): color = QtGui.QColor(0, 0, 192, 255) + class SelectBtn_RIk(SelectButton): color = QtGui.QColor(0, 128, 192, 255) + class SelectBtn_CFk(SelectButton): color = QtGui.QColor(128, 0, 128, 255) + class SelectBtn_CIk(SelectButton): color = QtGui.QColor(192, 64, 192, 255) + class SelectBtn_LFk(SelectButton): color = QtGui.QColor(192, 0, 0, 255) + class SelectBtn_LIk(SelectButton): color = QtGui.QColor(192, 128, 0, 255) + class SelectBtn_yellow(SelectButton): color = QtGui.QColor(255, 192, 0, 255) + class SelectBtn_green(SelectButton): color = QtGui.QColor(0, 192, 0, 255) + class SelectBtn_darkGreen(SelectButton): color = QtGui.QColor(0, 100, 0, 255) @@ -377,9 +363,10 @@ def drawShape(self, painter): innH = h - (ow * 2) innR = rr * 0.2 pathInner = QtGui.QPainterPath() - pathInner.addRoundedRect(QtCore.QRectF(innX, innY, innW, innH), innR, innR) + pathInner.addRoundedRect(QtCore.QRectF(innX, innY, innW, innH), + innR, innR) - self.drawPathWithBorder(painter, pathOuter - pathInner, borderWidth) + self.drawPathWithBorder(painter, pathOuter - pathInner, borderWidth) class SelectBtn_Circle(SelectButton): @@ -429,7 +416,9 @@ def drawShape(self, painter): w = self.width() - borderWidth h = self.height() - borderWidth - triangle = QtGui.QPolygon([QtCore.QPoint(1, h/2), QtCore.QPoint( w-1, 0), QtCore.QPoint( w-1,h-1)]) + triangle = QtGui.QPolygon([QtCore.QPoint(1, h / 2), + QtCore.QPoint(w - 1, 0), + QtCore.QPoint(w - 1, h - 1)]) path = QtGui.QPainterPath() path.addPolygon(triangle) self.drawPathWithBorder(painter, path, borderWidth) @@ -443,7 +432,9 @@ def drawShape(self, painter): w = self.width() - borderWidth h = self.height() - borderWidth - triangle = QtGui.QPolygon([QtCore.QPoint(1, h/2), QtCore.QPoint( w-1, 0), QtCore.QPoint( w-1,h-1)]) + triangle = QtGui.QPolygon([QtCore.QPoint(1, h / 2), + QtCore.QPoint(w - 1, 0), + QtCore.QPoint(w - 1, h - 1)]) path = QtGui.QPainterPath() path.addPolygon(triangle) self.drawPathWithBorder(painter, path, borderWidth) @@ -457,7 +448,9 @@ def drawShape(self, painter): w = self.width() - borderWidth h = self.height() - borderWidth - triangle = QtGui.QPolygon([ QtCore.QPoint(-1, 0), QtCore.QPoint( -1, h-1), QtCore.QPoint(w-1, h/2)]) + triangle = QtGui.QPolygon([QtCore.QPoint(-1, 0), + QtCore.QPoint(-1, h - 1), + QtCore.QPoint(w - 1, h / 2)]) path = QtGui.QPainterPath() path.addPolygon(triangle) self.drawPathWithBorder(painter, path, borderWidth) @@ -471,7 +464,9 @@ def drawShape(self, painter): w = self.width() - borderWidth h = self.height() - borderWidth - triangle = QtGui.QPolygon([ QtCore.QPoint(-1, 0), QtCore.QPoint( -1, h-1), QtCore.QPoint(w-1, h/2)]) + triangle = QtGui.QPolygon([QtCore.QPoint(-1, 0), + QtCore.QPoint(-1, h - 1), + QtCore.QPoint(w - 1, h / 2)]) path = QtGui.QPainterPath() path.addPolygon(triangle) self.drawPathWithBorder(painter, path, borderWidth) @@ -489,57 +484,59 @@ class SelectorClass(color, shape): SELECTORS = { # "selector button name": [ColorClass, DrawingClass], - "SelectBtn_RFkBox": [SelectBtn_RFk, SelectBtn_Box], - "SelectBtn_RIkBox": [SelectBtn_RIk, SelectBtn_Box], - "SelectBtn_CFkBox": [SelectBtn_CFk, SelectBtn_Box], - "SelectBtn_CIkBox": [SelectBtn_CIk, SelectBtn_Box], - "SelectBtn_LFkBox": [SelectBtn_LFk, SelectBtn_Box], - "SelectBtn_LIkBox": [SelectBtn_LIk, SelectBtn_Box], - "SelectBtn_yellowBox": [SelectBtn_yellow, SelectBtn_Box], - "SelectBtn_greenBox": [SelectBtn_green, SelectBtn_Box], - "SelectBtn_darkGreenBox": [SelectBtn_darkGreen, SelectBtn_Box], - "SelectBtn_blueBox": [SelectBtn_RFk, SelectBtn_Box], - "SelectBtn_redBox": [SelectBtn_LFk, SelectBtn_Box], - - "SelectBtn_RFkCircle": [SelectBtn_RFk, SelectBtn_Circle], - "SelectBtn_RIkCircle": [SelectBtn_RIk, SelectBtn_Circle], - "SelectBtn_CFkCircle": [SelectBtn_CFk, SelectBtn_Circle], - "SelectBtn_CIkCircle": [SelectBtn_CIk, SelectBtn_Circle], - "SelectBtn_LFkCircle": [SelectBtn_LFk, SelectBtn_Circle], - "SelectBtn_LIkCircle": [SelectBtn_LIk, SelectBtn_Circle], - "SelectBtn_greenCircle": [SelectBtn_green, SelectBtn_Circle], - "SelectBtn_redCircle": [SelectBtn_LFk, SelectBtn_Circle], - "SelectBtn_yellowCircle": [SelectBtn_yellow, SelectBtn_Circle], - "SelectBtn_blueCircle": [SelectBtn_RFk, SelectBtn_Circle], - - "SelectBtn_RFkOutlineBox": [SelectBtn_RFk, SelectBtn_OutlineBox], - "SelectBtn_RIkOutlineBox": [SelectBtn_RIk, SelectBtn_OutlineBox], - "SelectBtn_CFkOutlineBox": [SelectBtn_CFk, SelectBtn_OutlineBox], - "SelectBtn_CIkOutlineBox": [SelectBtn_CIk, SelectBtn_OutlineBox], - "SelectBtn_LFkOutlineBox": [SelectBtn_LFk, SelectBtn_OutlineBox], - "SelectBtn_LIkOutlineBox": [SelectBtn_LIk, SelectBtn_OutlineBox], - "SelectBtn_yellowOutlineBox": [SelectBtn_yellow, SelectBtn_OutlineBox], - "SelectBtn_greenOutlineBox": [SelectBtn_green, SelectBtn_OutlineBox], - "SelectBtn_darkGreenOutlineBox": [SelectBtn_darkGreen, SelectBtn_OutlineBox], - - "SelectBtn_RFkOutlineCircle": [SelectBtn_RFk, SelectBtn_OutlineCircle], - "SelectBtn_RIkOutlineCircle": [SelectBtn_RIk, SelectBtn_OutlineCircle], - "SelectBtn_CFkOutlineCircle": [SelectBtn_CFk, SelectBtn_OutlineCircle], - "SelectBtn_CIkOutlineCircle": [SelectBtn_CIk, SelectBtn_OutlineCircle], - "SelectBtn_LFkOutlineCircle": [SelectBtn_LFk, SelectBtn_OutlineCircle], - "SelectBtn_LIkOutlineCircle": [SelectBtn_LIk, SelectBtn_OutlineCircle], - "SelectBtn_greenOutlineCircle": [SelectBtn_green, SelectBtn_OutlineCircle], - "SelectBtn_redOutlineCircle": [SelectBtn_LFk, SelectBtn_OutlineCircle], - "SelectBtn_yellowOutlineCircle": [SelectBtn_yellow, SelectBtn_OutlineCircle], - "SelectBtn_blueOutlineCircle": [SelectBtn_RFk, SelectBtn_OutlineCircle], - - "SelectBtn_RFkTriangleRight": [SelectBtn_RFk, SelectBtn_TriangleRight], - "SelectBtn_RIkTriangleRight": [SelectBtn_RIk, SelectBtn_TriangleRight], - "SelectBtn_LFkTriangleLeft": [SelectBtn_LFk, SelectBtn_TriangleLeft], - "SelectBtn_LIkTriangleLeft": [SelectBtn_LIk, SelectBtn_TriangleLeft], - - "SelectBtn_greenTriangleRight": [SelectBtn_green, SelectBtn_TriangleRight], - "SelectBtn_greenTriangleLeft": [SelectBtn_green, SelectBtn_TriangleLeft] + "SelectBtn_RFkBox": [SelectBtn_RFk, SelectBtn_Box], + "SelectBtn_RIkBox": [SelectBtn_RIk, SelectBtn_Box], + "SelectBtn_CFkBox": [SelectBtn_CFk, SelectBtn_Box], + "SelectBtn_CIkBox": [SelectBtn_CIk, SelectBtn_Box], + "SelectBtn_LFkBox": [SelectBtn_LFk, SelectBtn_Box], + "SelectBtn_LIkBox": [SelectBtn_LIk, SelectBtn_Box], + "SelectBtn_yellowBox": [SelectBtn_yellow, SelectBtn_Box], + "SelectBtn_greenBox": [SelectBtn_green, SelectBtn_Box], + "SelectBtn_darkGreenBox": [SelectBtn_darkGreen, SelectBtn_Box], + "SelectBtn_blueBox": [SelectBtn_RFk, SelectBtn_Box], + "SelectBtn_redBox": [SelectBtn_LFk, SelectBtn_Box], + + "SelectBtn_RFkCircle": [SelectBtn_RFk, SelectBtn_Circle], + "SelectBtn_RIkCircle": [SelectBtn_RIk, SelectBtn_Circle], + "SelectBtn_CFkCircle": [SelectBtn_CFk, SelectBtn_Circle], + "SelectBtn_CIkCircle": [SelectBtn_CIk, SelectBtn_Circle], + "SelectBtn_LFkCircle": [SelectBtn_LFk, SelectBtn_Circle], + "SelectBtn_LIkCircle": [SelectBtn_LIk, SelectBtn_Circle], + "SelectBtn_greenCircle": [SelectBtn_green, SelectBtn_Circle], + "SelectBtn_redCircle": [SelectBtn_LFk, SelectBtn_Circle], + "SelectBtn_yellowCircle": [SelectBtn_yellow, SelectBtn_Circle], + "SelectBtn_blueCircle": [SelectBtn_RFk, SelectBtn_Circle], + + "SelectBtn_RFkOutlineBox": [SelectBtn_RFk, SelectBtn_OutlineBox], + "SelectBtn_RIkOutlineBox": [SelectBtn_RIk, SelectBtn_OutlineBox], + "SelectBtn_CFkOutlineBox": [SelectBtn_CFk, SelectBtn_OutlineBox], + "SelectBtn_CIkOutlineBox": [SelectBtn_CIk, SelectBtn_OutlineBox], + "SelectBtn_LFkOutlineBox": [SelectBtn_LFk, SelectBtn_OutlineBox], + "SelectBtn_LIkOutlineBox": [SelectBtn_LIk, SelectBtn_OutlineBox], + "SelectBtn_yellowOutlineBox": [SelectBtn_yellow, SelectBtn_OutlineBox], + "SelectBtn_greenOutlineBox": [SelectBtn_green, SelectBtn_OutlineBox], + "SelectBtn_darkGreenOutlineBox": [SelectBtn_darkGreen, + SelectBtn_OutlineBox], + + "SelectBtn_RFkOutlineCircle": [SelectBtn_RFk, SelectBtn_OutlineCircle], + "SelectBtn_RIkOutlineCircle": [SelectBtn_RIk, SelectBtn_OutlineCircle], + "SelectBtn_CFkOutlineCircle": [SelectBtn_CFk, SelectBtn_OutlineCircle], + "SelectBtn_CIkOutlineCircle": [SelectBtn_CIk, SelectBtn_OutlineCircle], + "SelectBtn_LFkOutlineCircle": [SelectBtn_LFk, SelectBtn_OutlineCircle], + "SelectBtn_LIkOutlineCircle": [SelectBtn_LIk, SelectBtn_OutlineCircle], + "SelectBtn_greenOutlineCircle": [SelectBtn_green, SelectBtn_OutlineCircle], + "SelectBtn_redOutlineCircle": [SelectBtn_LFk, SelectBtn_OutlineCircle], + "SelectBtn_yellowOutlineCircle": [SelectBtn_yellow, + SelectBtn_OutlineCircle], + "SelectBtn_blueOutlineCircle": [SelectBtn_RFk, SelectBtn_OutlineCircle], + + "SelectBtn_RFkTriangleRight": [SelectBtn_RFk, SelectBtn_TriangleRight], + "SelectBtn_RIkTriangleRight": [SelectBtn_RIk, SelectBtn_TriangleRight], + "SelectBtn_LFkTriangleLeft": [SelectBtn_LFk, SelectBtn_TriangleLeft], + "SelectBtn_LIkTriangleLeft": [SelectBtn_LIk, SelectBtn_TriangleLeft], + + "SelectBtn_greenTriangleRight": [SelectBtn_green, SelectBtn_TriangleRight], + "SelectBtn_greenTriangleLeft": [SelectBtn_green, SelectBtn_TriangleLeft] } From e777a5eb7890d7256be93b04097370b4893cbb84 Mon Sep 17 00:00:00 2001 From: miquelcampos Date: Tue, 28 Nov 2017 16:41:17 +0900 Subject: [PATCH 110/134] PEP8 #100: Synoptic Finish --- scripts/mgear/maya/synoptic/tabs/__init__.py | 19 +++-- .../maya/synoptic/tabs/biped/__init__.py | 18 ++--- scripts/mgear/maya/synoptic/widgets.py | 79 +++++++++---------- 3 files changed, 57 insertions(+), 59 deletions(-) diff --git a/scripts/mgear/maya/synoptic/tabs/__init__.py b/scripts/mgear/maya/synoptic/tabs/__init__.py index de951aa..f5a13c0 100644 --- a/scripts/mgear/maya/synoptic/tabs/__init__.py +++ b/scripts/mgear/maya/synoptic/tabs/__init__.py @@ -4,8 +4,7 @@ import maya.OpenMayaUI as OpenMayaUI import mgear -from .. import widgets -import mgear.maya.synoptic.utils as syn_utils +from .. import widgets, utils from mgear.vendor.Qt import QtCore, QtWidgets, QtGui, QtCompat ################################################## @@ -113,19 +112,19 @@ def __selectChanged(self, *args): sels = [] [sels.append(x.name()) for x in pm.ls(sl=True)] - oModel = syn_utils.getModel(self) + oModel = utils.getModel(self) if not oModel: mes = "model not found for synoptic {}".format(self.name) mgear.log(mes, mgear.sev_info) # self.close() - syn_widget = syn_utils.getSynopticWidget(self) + syn_widget = utils.getSynopticWidget(self) syn_widget.updateModelList() return - nameSpace = syn_utils.getNamespace(oModel.name()) + nameSpace = utils.getNamespace(oModel.name()) selButtons = self.findChildren(widgets.SelectButton) for selB in selButtons: @@ -199,8 +198,8 @@ def mouseReleaseEvent_(self, event): # BUTTONS def selAll_clicked(self): # type: () -> None - model = syn_utils.getModel(self) - syn_utils.selAll(model) + model = utils.getModel(self) + utils.selAll(model) def resetAll_clicked(self): # type: () -> None @@ -212,9 +211,9 @@ def resetSel_clicked(self): def keyAll_clicked(self): # type: () -> None - model = syn_utils.getModel(self) - syn_utils.keyAll(model) + model = utils.getModel(self) + utils.keyAll(model) def keySel_clicked(self): # type: () -> None - syn_utils.keySel() + utils.keySel() diff --git a/scripts/mgear/maya/synoptic/tabs/biped/__init__.py b/scripts/mgear/maya/synoptic/tabs/biped/__init__.py index b5702ed..34675d8 100644 --- a/scripts/mgear/maya/synoptic/tabs/biped/__init__.py +++ b/scripts/mgear/maya/synoptic/tabs/biped/__init__.py @@ -3,7 +3,7 @@ from mgear.maya.synoptic.tabs import MainSynopticTab from . import widget -import mgear.maya.synoptic.utils as syn_utils +from ... import utils from mgear.vendor.Qt import QtWidgets ################################################## @@ -32,39 +32,39 @@ def __init__(self, parent=None): # ============================================ # BUTTONS def selRight_clicked(self): - model = syn_utils.getModel(self) + model = utils.getModel(self) # i : num of fingers, j : finger length object_names = ["finger_R%s_fk%s_ctl" % (i, j) for i in range(4) for j in range(3)] thumb_names = ["thumb_R0_fk%s_ctl" % j for j in range(3)] object_names.extend(thumb_names) modifiers = QtWidgets.QApplication.keyboardModifiers() - syn_utils.selectObj(model, object_names, None, modifiers) + utils.selectObj(model, object_names, None, modifiers) def selLeft_clicked(self): - model = syn_utils.getModel(self) + model = utils.getModel(self) # i : num of fingers, j : finger length object_names = ["finger_L%s_fk%s_ctl" % (i, j) for i in range(4) for j in range(3)] thumb_names = ["thumb_L0_fk%s_ctl" % j for j in range(3)] object_names.extend(thumb_names) modifiers = QtWidgets.QApplication.keyboardModifiers() - syn_utils.selectObj(model, object_names, None, modifiers) + utils.selectObj(model, object_names, None, modifiers) def keyRight_clicked(self): - model = syn_utils.getModel(self) + model = utils.getModel(self) # i : num of fingers, j : finger length object_names = ["finger_R%s_fk%s_ctl" % (i, j) for i in range(4) for j in range(3)] thumb_names = ["thumb_R0_fk%s_ctl" % j for j in range(3)] object_names.extend(thumb_names) - syn_utils.keyObj(model, object_names) + utils.keyObj(model, object_names) def keyLeft_clicked(self): - model = syn_utils.getModel(self) + model = utils.getModel(self) # i : num of fingers, j : finger length object_names = ["finger_L%s_fk%s_ctl" % (i, j) for i in range(4) for j in range(3)] thumb_names = ["thumb_L0_fk%s_ctl" % j for j in range(3)] object_names.extend(thumb_names) - syn_utils.keyObj(model, object_names) + utils.keyObj(model, object_names) diff --git a/scripts/mgear/maya/synoptic/widgets.py b/scripts/mgear/maya/synoptic/widgets.py index 65bcef6..94a0224 100644 --- a/scripts/mgear/maya/synoptic/widgets.py +++ b/scripts/mgear/maya/synoptic/widgets.py @@ -1,4 +1,4 @@ -from mgear.maya.synoptic import utils as syn_utils +from . import utils from mgear.vendor.Qt import QtCore, QtWidgets, QtGui @@ -21,16 +21,16 @@ def wheelEvent(self, event): # def focusInEvent(self, event): def enterEvent(self, event): - self.model = syn_utils.getModel(self) + self.model = utils.getModel(self) self.uihost_name = str(self.property("Object")) self.combo_attr = str(self.property("Attr")) self.ctl_name = str(self.property("ik_ctl")) if not self.currentText(): - list1 = syn_utils.getComboKeys( + list1 = utils.getComboKeys( self.model, self.uihost_name, self.combo_attr) self.addItems(list1) - self.setCurrentIndex(syn_utils.getComboIndex( + self.setCurrentIndex(utils.getComboIndex( self.model, self.uihost_name, self.combo_attr)) self.firstUpdate = True @@ -38,36 +38,36 @@ def handleChanged(self): if self.firstUpdate: if self.currentIndex() == self.count() - 1: print "Space Transfer" - self.setCurrentIndex(syn_utils.getComboIndex( + self.setCurrentIndex(utils.getComboIndex( self.model, self.uihost_name, self.combo_attr)) - syn_utils.ParentSpaceTransfer.showUI(self, - self.model, - self.uihost_name, - self.combo_attr, - self.ctl_name) + utils.ParentSpaceTransfer.showUI(self, + self.model, + self.uihost_name, + self.combo_attr, + self.ctl_name) else: - syn_utils.changeSpace(self.model, - self.uihost_name, - self.combo_attr, - self.currentIndex(), - self.ctl_name) + utils.changeSpace(self.model, + self.uihost_name, + self.combo_attr, + self.currentIndex(), + self.ctl_name) class bakeSprings(QtWidgets.QPushButton): def mousePressEvent(self, event): - model = syn_utils.getModel(self) - syn_utils.bakeSprings(model) + model = utils.getModel(self) + utils.bakeSprings(model) class clearSprings(QtWidgets.QPushButton): def mousePressEvent(self, event): - model = syn_utils.getModel(self) - syn_utils.clearSprings(model) + model = utils.getModel(self) + utils.clearSprings(model) class ikfkMatchButton(QtWidgets.QPushButton): @@ -93,7 +93,7 @@ def mousePressEvent(self, event): mouse_button = event.button() - model = syn_utils.getModel(self) + model = utils.getModel(self) ikfk_attr = str(self.property("ikfk_attr")) uiHost_name = str(self.property("uiHost_name")) @@ -113,13 +113,12 @@ def mousePressEvent(self, event): ikRot = None if mouse_button == QtCore.Qt.RightButton: - syn_utils.IkFkTransfer.showUI( + utils.IkFkTransfer.showUI( model, ikfk_attr, uiHost_name, fks, ik, upv, ikRot) return else: - syn_utils.ikFkMatch( - model, ikfk_attr, uiHost_name, fks, ik, upv, ikRot) + utils.ikFkMatch(model, ikfk_attr, uiHost_name, fks, ik, upv, ikRot) return @@ -127,71 +126,71 @@ class selGroup(QtWidgets.QPushButton): def mousePressEvent(self, event): - model = syn_utils.getModel(self) + model = utils.getModel(self) group_suffix = str(self.property("groupSuffix")) - syn_utils.selGroup(model, group_suffix) + utils.selGroup(model, group_suffix) class keyGroup(QtWidgets.QPushButton): def mousePressEvent(self, event): - model = syn_utils.getModel(self) + model = utils.getModel(self) group_suffix = str(self.property("groupSuffix")) - syn_utils.keyGroup(model, group_suffix) + utils.keyGroup(model, group_suffix) class toggleAttrButton(QtWidgets.QPushButton): def mousePressEvent(self, event): - model = syn_utils.getModel(self) + model = utils.getModel(self) object_name = str(self.property("Object")) attr_name = str(self.property("Attr")) - syn_utils.toggleAttr(model, object_name, attr_name) + utils.toggleAttr(model, object_name, attr_name) class resetTransform(QtWidgets.QPushButton): def mousePressEvent(self, event): - syn_utils.resetSelTrans() + utils.resetSelTrans() class resetBindPose(QtWidgets.QPushButton): def mousePressEvent(self, event): - model = syn_utils.getModel(self) + model = utils.getModel(self) - syn_utils.bindPose(model) + utils.bindPose(model) class MirrorPoseButton(QtWidgets.QPushButton): def mousePressEvent(self, event): - syn_utils.mirrorPose() + utils.mirrorPose() class FlipPoseButton(QtWidgets.QPushButton): def mousePressEvent(self, event): - syn_utils.mirrorPose(True) + utils.mirrorPose(True) class QuickSelButton(QtWidgets.QPushButton): def mousePressEvent(self, event): - model = syn_utils.getModel(self) + model = utils.getModel(self) channel = str(self.property("channel")) mouse_button = event.button() - syn_utils.quickSel(model, channel, mouse_button) + utils.quickSel(model, channel, mouse_button) class SelectButton(QtWidgets.QWidget): @@ -226,20 +225,20 @@ def rectangleSelection(self, event, firstLoop): else: key_modifier = (QtCore.Qt.ControlModifier | QtCore.Qt.ShiftModifier) - model = syn_utils.getModel(self) + model = utils.getModel(self) object = str(self.property("object")).split(",") mouse_button = event.button() - syn_utils.selectObj(model, object, mouse_button, key_modifier) + utils.selectObj(model, object, mouse_button, key_modifier) def mousePressEvent(self, event): - model = syn_utils.getModel(self) + model = utils.getModel(self) object = str(self.property("object")).split(",") mouse_button = event.button() key_modifier = event.modifiers() - syn_utils.selectObj(model, object, mouse_button, key_modifier) + utils.selectObj(model, object, mouse_button, key_modifier) def paintEvent(self, event): painter = QtGui.QPainter() From 64e7d42c93f9e4ed91a3d2a94ad89495f2ac7c8a Mon Sep 17 00:00:00 2001 From: miquelcampos Date: Tue, 28 Nov 2017 17:56:50 +0900 Subject: [PATCH 111/134] Rolling back #65 and minor fix for update guide --- scripts/mGear_guidesTemplates.py | 2 +- scripts/mgear/maya/dag.py | 6 +++--- scripts/mgear/maya/shifter/component/guide.py | 7 +++---- scripts/mgear/maya/shifter/guide.py | 10 +++++----- 4 files changed, 12 insertions(+), 13 deletions(-) diff --git a/scripts/mGear_guidesTemplates.py b/scripts/mGear_guidesTemplates.py index 50eccbe..9d7be44 100644 --- a/scripts/mGear_guidesTemplates.py +++ b/scripts/mGear_guidesTemplates.py @@ -19,7 +19,7 @@ def buildFromSelection(*args): def updateGuide(*args): """Update the guide rig""" if pm.selected(): - rgGuide = shifter.RigGuide() + rgGuide = shifter.guide.Rig() rgGuide.update(pm.selected()[0]) else: pm.displayWarning("Please select the guide top node") diff --git a/scripts/mgear/maya/dag.py b/scripts/mgear/maya/dag.py index a38dcf4..cd5e543 100644 --- a/scripts/mgear/maya/dag.py +++ b/scripts/mgear/maya/dag.py @@ -52,7 +52,7 @@ def findChild(node, name): comp_guide.root.name())) """ - return __findChildren2(node, name, True) + return __findChildren(node, name, True) def findChildren(node, name): @@ -66,7 +66,7 @@ def findChildren(node, name): dagNode list: The children dagNodes """ - return __findChildren2(node, name, False) + return __findChildren(node, name, False) def findChildrenPartial(node, name): @@ -81,7 +81,7 @@ def findChildrenPartial(node, name): dagNode list: The children dagNodes """ - return __findChildren2(node, name, False, True) + return __findChildren(node, name, False, True) def __findChildren(node, name, firstOnly=False, partialName=False): diff --git a/scripts/mgear/maya/shifter/component/guide.py b/scripts/mgear/maya/shifter/component/guide.py index b8c0cce..aaaff68 100644 --- a/scripts/mgear/maya/shifter/component/guide.py +++ b/scripts/mgear/maya/shifter/component/guide.py @@ -437,11 +437,10 @@ def rename(self, root, newName, newSide, newIndex): self.parent.attr("comp_index").set(self.values["comp_index"]) - # objList = dag.findComponentChildren( - # self.parent, oldName, oldSideIndex) + objList = dag.findComponentChildren(self.parent, oldName, oldSideIndex) # NOTE: Experimenta using findComponentChildren2 - objList = dag.findComponentChildren2( - self.parent, oldName, oldSideIndex) + # objList = dag.findComponentChildren2( + # self.parent, oldName, oldSideIndex) newSideIndex = newSide + str(self.values["comp_index"]) objList.append(self.parent) for obj in objList: diff --git a/scripts/mgear/maya/shifter/guide.py b/scripts/mgear/maya/shifter/guide.py index a977795..67c9d19 100644 --- a/scripts/mgear/maya/shifter/guide.py +++ b/scripts/mgear/maya/shifter/guide.py @@ -385,11 +385,11 @@ def setFromHierarchy(self, root, branch=True): for name in self.componentsIndex: mgear.log("Get parenting for: " + name) compParent = self.components[name] - # for localName, element in \ - # compParent.getObjects(self.model, False).items(): # NOTE: getObjects3 is an experimental function - for localName, element in compParent.getObjects3( - self.model).items(): + # for localName, element in compParent.getObjects3( + # self.model).items(): + for localName, element in compParent.getObjects( + self.model, False).items(): for name in self.componentsIndex: compChild = self.components[name] compChild_parent = compChild.root.getParent() @@ -551,7 +551,7 @@ def drawUpdate(self, oldRoot, parent=None): try: pm.delete(pm.PyNode(newParentName + "|controllers_org")) oldRootName = oldRoot.name().split("|")[0] + "|controllers_org" - (oldRootName, newParentName) + pm.parent(oldRootName, newParentName) except TypeError: pm.displayError("The guide don't have controllers_org") From 47628faa9fcf79241a56f130bd5f2f39671bb653 Mon Sep 17 00:00:00 2001 From: miquelcampos Date: Tue, 28 Nov 2017 18:00:59 +0900 Subject: [PATCH 112/134] Shifter: arm 2jnt: guide: Minor fix: connect slot to upate connector attribute --- scripts/mgear/maya/shifter/component/arm_2jnt_01/guide.py | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/scripts/mgear/maya/shifter/component/arm_2jnt_01/guide.py b/scripts/mgear/maya/shifter/component/arm_2jnt_01/guide.py index 1693377..83403ac 100644 --- a/scripts/mgear/maya/shifter/component/arm_2jnt_01/guide.py +++ b/scripts/mgear/maya/shifter/component/arm_2jnt_01/guide.py @@ -279,6 +279,11 @@ def create_componentConnections(self): self.settingsTab.pinRefArray_listWidget.installEventFilter(self) + self.mainSettingsTab.connector_comboBox.currentIndexChanged.connect( + partial(self.updateConnector, + self.mainSettingsTab.connector_comboBox, + self.connector_items)) + def eventFilter(self, sender, event): if event.type() == QtCore.QEvent.ChildRemoved: if sender == self.settingsTab.ikRefArray_listWidget: From e70ace2ea80291d888215ad1973960e145f1f1dc Mon Sep 17 00:00:00 2001 From: miquelcampos Date: Wed, 29 Nov 2017 17:51:54 +0900 Subject: [PATCH 113/134] shifter:update guide structure in pre custom step #101 --- scripts/mgear/maya/shifter/__init__.py | 51 +++++++++++++++++++------- 1 file changed, 37 insertions(+), 14 deletions(-) diff --git a/scripts/mgear/maya/shifter/__init__.py b/scripts/mgear/maya/shifter/__init__.py index 804ba83..55a80a3 100644 --- a/scripts/mgear/maya/shifter/__init__.py +++ b/scripts/mgear/maya/shifter/__init__.py @@ -2,6 +2,7 @@ import os.path import datetime import getpass +from pprint import pprint # Maya import pymel.core as pm @@ -90,19 +91,32 @@ def buildFromSelection(self): """Build the rig from selected guides.""" startTime = datetime.datetime.now() - mgear.log("= GEAR RIG SYSTEM " + "=" * 46) + mgear.log("\n" + "= SHIFTER RIG SYSTEM " + "=" * 46) + self.stopBuild = False + selection = pm.ls(selection=True) + if not selection: + mgear.log( + "Select one or more guide root or a guide model", + mgear.sev_error) + return + + self.preCustomStep(selection) + + mgear.log("\n" + "= GUIDE VALIDATION " + "=" * 46) # Check guide is valid self.guide.setFromSelection() if not self.guide.valid: return # Build + mgear.log("\n" + "= BUILDING RIG " + "=" * 46) self.build() + self.postCustomStep() endTime = datetime.datetime.now() finalTime = endTime - startTime - mgear.log("= GEAR BUILD RIG DONE {} [ {} ] {}".format( + mgear.log("\n" + "= SHIFTER BUILD RIG DONE {} [ {} ] {}".format( "=" * 16, finalTime, "=" * 7 @@ -116,21 +130,21 @@ def build(self): self.customStepDic["mgearRun"] = self - # stop build triggered if a custom step fail - self.stopBuild = False - - self.preCustomStep() if not self.stopBuild: self.initialHierarchy() self.processComponents() self.finalize() - self.postCustomStep() return self.model - def customStep(self, checker, attr): - if self.options[checker]: - customSteps = self.options[attr].split(",") + def stepsList(self, checker, attr): + if self.options[checker] and self.options[attr]: + return self.options[attr].split(",") + else: + return None + + def customStep(self, customSteps=None): + if customSteps: for step in customSteps: if not self.stopBuild: self.stopBuild = guide.helperSlots.runStep( @@ -139,11 +153,19 @@ def customStep(self, checker, attr): pm.displayWarning("Build Stopped") break - def preCustomStep(self): - self.customStep("doPreCustomStep", "preCustomStep") + def preCustomStep(self, selection): + if (selection[0].hasAttr("ismodel") and + selection[0].attr("doPreCustomStep").get()): + customSteps = selection[0].attr("preCustomStep").get() + if customSteps: + mgear.log("\n" + "= PRE CUSTOM STEPS " + "=" * 46) + self.customStep(customSteps.split(",")) def postCustomStep(self): - self.customStep("doPostCustomStep", "postCustomStep") + customSteps = self.stepsList("doPostCustomStep", "postCustomStep") + if customSteps: + mgear.log("\n" + "= POST CUSTOM STEPS " + "=" * 46) + self.customStep(customSteps) def initialHierarchy(self): """Build the initial hierarchy of the rig. @@ -303,7 +325,8 @@ def finalize(self): pg.add(sub) # Bind pose --------------------------------------- - print self.groups["controllers"] + # controls_grp = self.groups["controllers"] + # pprint(controls_grp, stream=None, indent=1, width=100) pm.select(self.groups["controllers"]) node = pm.dagPose(save=True, selection=True) pm.connectAttr(node.message, self.model.rigPoses[0]) From 751b60df5830b6ad2be8242c7db41fbb994aa2b3 Mon Sep 17 00:00:00 2001 From: miquelcampos Date: Wed, 29 Nov 2017 18:52:46 +0900 Subject: [PATCH 114/134] Shifter: Closes #66. Now this is an optional setting. The Old Guides needs to be updated using 'update guide' command. --- scripts/mgear/maya/shifter/__init__.py | 22 +- .../component/_templates/biped_guide.ma | 2 + .../shifter/component/_templates/quadruped.ma | 2 + scripts/mgear/maya/shifter/customStepUI.py | 4 - scripts/mgear/maya/shifter/customStepUI.ui | 17 +- scripts/mgear/maya/shifter/gui.py | 2 +- scripts/mgear/maya/shifter/guide.py | 8 + scripts/mgear/maya/shifter/guideUI.py | 342 +++++++----------- scripts/mgear/maya/shifter/guideUI.ui | 293 ++++++++------- 9 files changed, 324 insertions(+), 368 deletions(-) diff --git a/scripts/mgear/maya/shifter/__init__.py b/scripts/mgear/maya/shifter/__init__.py index 55a80a3..4a394a8 100644 --- a/scripts/mgear/maya/shifter/__init__.py +++ b/scripts/mgear/maya/shifter/__init__.py @@ -2,7 +2,6 @@ import os.path import datetime import getpass -from pprint import pprint # Maya import pymel.core as pm @@ -169,6 +168,7 @@ def postCustomStep(self): def initialHierarchy(self): """Build the initial hierarchy of the rig. + Create the rig model, the main properties, and a couple of base organisation nulls. Get the global size of the rig. @@ -182,13 +182,21 @@ def initialHierarchy(self): None, self.options["rig_name"]) attribute.lockAttribute(self.model) - # -------------------------------------------------- + # ------------------------- ------------------------- # Global Ctl - # self.global_ctl = self.addCtl(self.model, "global_C0_ctl", - # datatypes.Matrix(), self.options["C_color_fk"], "crossarrow", w=10) - self.global_ctl = self.addCtl( - self.model, "world_ctl", datatypes.Matrix(), - self.options["C_color_fk"], "circle", w=10) + if self.options["worldCtl"]: + self.global_ctl = self.addCtl(self.model, + "world_ctl", + datatypes.Matrix(), + self.options["C_color_fk"], + "circle", w=10) + else: + self.global_ctl = self.addCtl(self.model, + "global_C0_ctl", + datatypes.Matrix(), + self.options["C_color_fk"], + "crossarrow", + w=10) attribute.setRotOrder(self.global_ctl, "ZXY") # -------------------------------------------------- diff --git a/scripts/mgear/maya/shifter/component/_templates/biped_guide.ma b/scripts/mgear/maya/shifter/component/_templates/biped_guide.ma index 4a57ab9..acb2806 100644 --- a/scripts/mgear/maya/shifter/component/_templates/biped_guide.ma +++ b/scripts/mgear/maya/shifter/component/_templates/biped_guide.ma @@ -22,6 +22,7 @@ createNode transform -n "guide"; addAttr -ci true -sn "classicChannelNames" -ln "classicChannelNames" -min 0 -max 1 -at "bool"; addAttr -ci true -sn "proxyChannels" -ln "proxyChannels" -min 0 -max 1 -at "bool"; + addAttr -ci true -sn "worldCtl" -ln "worldCtl" -min 0 -max 1 -at "bool"; addAttr -ci true -sn "importSkin" -ln "importSkin" -min 0 -max 1 -at "bool"; addAttr -ci true -sn "skin" -ln "skin" -dt "string"; addAttr -ci true -sn "L_color_fk" -ln "L_color_fk" -min 0 -max 31 -at "long"; @@ -45,6 +46,7 @@ createNode transform -n "guide"; setAttr -k on ".step" 6; setAttr ".ismodel" yes; setAttr ".proxyChannels" yes; + setAttr ".worldCtl" yes; setAttr ".skin" -type "string" ""; setAttr ".L_color_fk" 6; setAttr ".L_color_ik" 18; diff --git a/scripts/mgear/maya/shifter/component/_templates/quadruped.ma b/scripts/mgear/maya/shifter/component/_templates/quadruped.ma index 2082fbd..dac96db 100644 --- a/scripts/mgear/maya/shifter/component/_templates/quadruped.ma +++ b/scripts/mgear/maya/shifter/component/_templates/quadruped.ma @@ -21,6 +21,7 @@ createNode transform -n "guide"; addAttr -ci true -sn "classicChannelNames" -ln "classicChannelNames" -min 0 -max 1 -at "bool"; addAttr -ci true -sn "proxyChannels" -ln "proxyChannels" -min 0 -max 1 -at "bool"; + addAttr -ci true -sn "worldCtl" -ln "worldCtl" -min 0 -max 1 -at "bool"; addAttr -ci true -sn "importSkin" -ln "importSkin" -min 0 -max 1 -at "bool"; addAttr -ci true -sn "skin" -ln "skin" -dt "string"; addAttr -ci true -sn "L_color_fk" -ln "L_color_fk" -min 0 -max 31 -at "long"; @@ -44,6 +45,7 @@ createNode transform -n "guide"; setAttr -k on ".step" 6; setAttr ".ismodel" yes; setAttr ".proxyChannels" yes; + setAttr ".worldCtl" yes; setAttr ".skin" -type "string" ""; setAttr ".L_color_fk" 6; setAttr ".L_color_ik" 18; diff --git a/scripts/mgear/maya/shifter/customStepUI.py b/scripts/mgear/maya/shifter/customStepUI.py index eb7c9c4..1182736 100644 --- a/scripts/mgear/maya/shifter/customStepUI.py +++ b/scripts/mgear/maya/shifter/customStepUI.py @@ -54,10 +54,6 @@ def setupUi(self, Form): "preCustomStepNew_pushButton") self.preCustomStep_verticalLayout_2.addWidget( self.preCustomStepNew_pushButton) - spacerItem = QtWidgets.QSpacerItem( - 20, 40, QtWidgets.QSizePolicy.Minimum, - QtWidgets.QSizePolicy.Expanding) - self.preCustomStep_verticalLayout_2.addItem(spacerItem) self.preCustomStepDuplicate_pushButton = QtWidgets.QPushButton( self.groupBox) self.preCustomStepDuplicate_pushButton.setObjectName( diff --git a/scripts/mgear/maya/shifter/customStepUI.ui b/scripts/mgear/maya/shifter/customStepUI.ui index bd8ca23..d4df848 100644 --- a/scripts/mgear/maya/shifter/customStepUI.ui +++ b/scripts/mgear/maya/shifter/customStepUI.ui @@ -6,8 +6,8 @@ 0 0 - 344 - 593 + 312 + 587 @@ -78,19 +78,6 @@ - - - - Qt::Vertical - - - - 20 - 40 - - - - diff --git a/scripts/mgear/maya/shifter/gui.py b/scripts/mgear/maya/shifter/gui.py index bbbad0b..05f7184 100644 --- a/scripts/mgear/maya/shifter/gui.py +++ b/scripts/mgear/maya/shifter/gui.py @@ -153,7 +153,7 @@ def drawComp(self, compType, *args): @classmethod def buildFromSelection(self, *args): - logWin = pm.window(title="mGear Build Log", iconName='mGear Log') + logWin = pm.window(title="Shifter Build Log", iconName='Shifter Log') pm.columnLayout(adjustableColumn=True) pm.cmdScrollFieldReporter(width=800, height=500, clr=True) pm.button(label='Close', command=( diff --git a/scripts/mgear/maya/shifter/guide.py b/scripts/mgear/maya/shifter/guide.py index 67c9d19..2e5d92a 100644 --- a/scripts/mgear/maya/shifter/guide.py +++ b/scripts/mgear/maya/shifter/guide.py @@ -277,6 +277,7 @@ def addParameters(self): "bool", True) self.pProxyChannels = self.addParam("proxyChannels", "bool", False) + self.pWorldCtl = self.addParam("worldCtl", "bool", False) # -------------------------------------------------- # skin @@ -968,6 +969,9 @@ def populate_controls(self): self.root.attr("step").get()) self.populateCheck( self.guideSettingsTab.proxyChannels_checkBox, "proxyChannels") + + self.populateCheck(self.guideSettingsTab.worldCtl_checkBox, "worldCtl") + self.populateCheck( self.guideSettingsTab.classicChannelNames_checkBox, "classicChannelNames") @@ -1038,6 +1042,10 @@ def create_connections(self): partial(self.updateCheck, tap.proxyChannels_checkBox, "proxyChannels")) + tap.worldCtl_checkBox.stateChanged.connect( + partial(self.updateCheck, + tap.worldCtl_checkBox, + "worldCtl")) tap.classicChannelNames_checkBox.stateChanged.connect( partial(self.updateCheck, tap.classicChannelNames_checkBox, diff --git a/scripts/mgear/maya/shifter/guideUI.py b/scripts/mgear/maya/shifter/guideUI.py index 4e94da6..7a9f687 100644 --- a/scripts/mgear/maya/shifter/guideUI.py +++ b/scripts/mgear/maya/shifter/guideUI.py @@ -1,9 +1,7 @@ import mgear.maya.pyqt as gqt from mgear.vendor.Qt import QtCore, QtWidgets - class Ui_Form(object): - def setupUi(self, Form): Form.setObjectName("Form") Form.resize(459, 809) @@ -33,12 +31,10 @@ def setupUi(self, Form): self.L_color_fk_label.setObjectName("L_color_fk_label") self.horizontalLayout_3.addWidget(self.L_color_fk_label) self.L_color_fk_spinBox = QtWidgets.QSpinBox(self.groupBox_5) - sizePolicy = QtWidgets.QSizePolicy( - QtWidgets.QSizePolicy.Expanding, QtWidgets.QSizePolicy.Fixed) + sizePolicy = QtWidgets.QSizePolicy(QtWidgets.QSizePolicy.Expanding, QtWidgets.QSizePolicy.Fixed) sizePolicy.setHorizontalStretch(0) sizePolicy.setVerticalStretch(0) - sizePolicy.setHeightForWidth( - self.L_color_fk_spinBox.sizePolicy().hasHeightForWidth()) + sizePolicy.setHeightForWidth(self.L_color_fk_spinBox.sizePolicy().hasHeightForWidth()) self.L_color_fk_spinBox.setSizePolicy(sizePolicy) self.L_color_fk_spinBox.setMaximum(31) self.L_color_fk_spinBox.setObjectName("L_color_fk_spinBox") @@ -50,12 +46,10 @@ def setupUi(self, Form): self.L_color_fk_label_5.setObjectName("L_color_fk_label_5") self.horizontalLayout_7.addWidget(self.L_color_fk_label_5) self.C_color_fk_spinBox = QtWidgets.QSpinBox(self.groupBox_5) - sizePolicy = QtWidgets.QSizePolicy( - QtWidgets.QSizePolicy.Expanding, QtWidgets.QSizePolicy.Fixed) + sizePolicy = QtWidgets.QSizePolicy(QtWidgets.QSizePolicy.Expanding, QtWidgets.QSizePolicy.Fixed) sizePolicy.setHorizontalStretch(0) sizePolicy.setVerticalStretch(0) - sizePolicy.setHeightForWidth( - self.C_color_fk_spinBox.sizePolicy().hasHeightForWidth()) + sizePolicy.setHeightForWidth(self.C_color_fk_spinBox.sizePolicy().hasHeightForWidth()) self.C_color_fk_spinBox.setSizePolicy(sizePolicy) self.C_color_fk_spinBox.setMaximum(31) self.C_color_fk_spinBox.setObjectName("C_color_fk_spinBox") @@ -67,12 +61,10 @@ def setupUi(self, Form): self.L_color_fk_label_3.setObjectName("L_color_fk_label_3") self.horizontalLayout_5.addWidget(self.L_color_fk_label_3) self.R_color_fk_spinBox = QtWidgets.QSpinBox(self.groupBox_5) - sizePolicy = QtWidgets.QSizePolicy( - QtWidgets.QSizePolicy.Expanding, QtWidgets.QSizePolicy.Fixed) + sizePolicy = QtWidgets.QSizePolicy(QtWidgets.QSizePolicy.Expanding, QtWidgets.QSizePolicy.Fixed) sizePolicy.setHorizontalStretch(0) sizePolicy.setVerticalStretch(0) - sizePolicy.setHeightForWidth( - self.R_color_fk_spinBox.sizePolicy().hasHeightForWidth()) + sizePolicy.setHeightForWidth(self.R_color_fk_spinBox.sizePolicy().hasHeightForWidth()) self.R_color_fk_spinBox.setSizePolicy(sizePolicy) self.R_color_fk_spinBox.setMaximum(31) self.R_color_fk_spinBox.setObjectName("R_color_fk_spinBox") @@ -84,12 +76,10 @@ def setupUi(self, Form): self.L_color_fk_label_2.setObjectName("L_color_fk_label_2") self.horizontalLayout_4.addWidget(self.L_color_fk_label_2) self.L_color_ik_spinBox = QtWidgets.QSpinBox(self.groupBox_5) - sizePolicy = QtWidgets.QSizePolicy( - QtWidgets.QSizePolicy.Expanding, QtWidgets.QSizePolicy.Fixed) + sizePolicy = QtWidgets.QSizePolicy(QtWidgets.QSizePolicy.Expanding, QtWidgets.QSizePolicy.Fixed) sizePolicy.setHorizontalStretch(0) sizePolicy.setVerticalStretch(0) - sizePolicy.setHeightForWidth( - self.L_color_ik_spinBox.sizePolicy().hasHeightForWidth()) + sizePolicy.setHeightForWidth(self.L_color_ik_spinBox.sizePolicy().hasHeightForWidth()) self.L_color_ik_spinBox.setSizePolicy(sizePolicy) self.L_color_ik_spinBox.setMaximum(31) self.L_color_ik_spinBox.setObjectName("L_color_ik_spinBox") @@ -101,12 +91,10 @@ def setupUi(self, Form): self.L_color_fk_label_6.setObjectName("L_color_fk_label_6") self.horizontalLayout_8.addWidget(self.L_color_fk_label_6) self.C_color_ik_spinBox = QtWidgets.QSpinBox(self.groupBox_5) - sizePolicy = QtWidgets.QSizePolicy( - QtWidgets.QSizePolicy.Expanding, QtWidgets.QSizePolicy.Fixed) + sizePolicy = QtWidgets.QSizePolicy(QtWidgets.QSizePolicy.Expanding, QtWidgets.QSizePolicy.Fixed) sizePolicy.setHorizontalStretch(0) sizePolicy.setVerticalStretch(0) - sizePolicy.setHeightForWidth( - self.C_color_ik_spinBox.sizePolicy().hasHeightForWidth()) + sizePolicy.setHeightForWidth(self.C_color_ik_spinBox.sizePolicy().hasHeightForWidth()) self.C_color_ik_spinBox.setSizePolicy(sizePolicy) self.C_color_ik_spinBox.setMaximum(31) self.C_color_ik_spinBox.setObjectName("C_color_ik_spinBox") @@ -118,87 +106,17 @@ def setupUi(self, Form): self.L_color_fk_label_4.setObjectName("L_color_fk_label_4") self.horizontalLayout_6.addWidget(self.L_color_fk_label_4) self.R_color_ik_spinBox = QtWidgets.QSpinBox(self.groupBox_5) - sizePolicy = QtWidgets.QSizePolicy( - QtWidgets.QSizePolicy.Expanding, QtWidgets.QSizePolicy.Fixed) + sizePolicy = QtWidgets.QSizePolicy(QtWidgets.QSizePolicy.Expanding, QtWidgets.QSizePolicy.Fixed) sizePolicy.setHorizontalStretch(0) sizePolicy.setVerticalStretch(0) - sizePolicy.setHeightForWidth( - self.R_color_ik_spinBox.sizePolicy().hasHeightForWidth()) + sizePolicy.setHeightForWidth(self.R_color_ik_spinBox.sizePolicy().hasHeightForWidth()) self.R_color_ik_spinBox.setSizePolicy(sizePolicy) self.R_color_ik_spinBox.setMaximum(31) self.R_color_ik_spinBox.setObjectName("R_color_ik_spinBox") self.horizontalLayout_6.addWidget(self.R_color_ik_spinBox) self.gridLayout.addLayout(self.horizontalLayout_6, 2, 2, 1, 1) self.gridLayout_7.addLayout(self.gridLayout, 0, 0, 1, 1) - self.gridLayout_2.addWidget(self.groupBox_5, 5, 0, 1, 1) - self.groupBox_4 = QtWidgets.QGroupBox(Form) - self.groupBox_4.setObjectName("groupBox_4") - self.gridLayout_6 = QtWidgets.QGridLayout(self.groupBox_4) - self.gridLayout_6.setObjectName("gridLayout_6") - self.horizontalLayout_2 = QtWidgets.QHBoxLayout() - self.horizontalLayout_2.setObjectName("horizontalLayout_2") - self.verticalLayout_3 = QtWidgets.QVBoxLayout() - self.verticalLayout_3.setObjectName("verticalLayout_3") - self.rigTabs_label = QtWidgets.QLabel(self.groupBox_4) - self.rigTabs_label.setObjectName("rigTabs_label") - self.verticalLayout_3.addWidget(self.rigTabs_label) - self.rigTabs_listWidget = QtWidgets.QListWidget(self.groupBox_4) - self.rigTabs_listWidget.setDragDropOverwriteMode(True) - self.rigTabs_listWidget.setDragDropMode( - QtWidgets.QAbstractItemView.InternalMove) - self.rigTabs_listWidget.setDefaultDropAction(QtCore.Qt.MoveAction) - self.rigTabs_listWidget.setAlternatingRowColors(True) - self.rigTabs_listWidget.setSelectionMode( - QtWidgets.QAbstractItemView.ExtendedSelection) - self.rigTabs_listWidget.setSelectionRectVisible(False) - self.rigTabs_listWidget.setObjectName("rigTabs_listWidget") - self.verticalLayout_3.addWidget(self.rigTabs_listWidget) - self.horizontalLayout_2.addLayout(self.verticalLayout_3) - self.verticalLayout_4 = QtWidgets.QVBoxLayout() - self.verticalLayout_4.setSizeConstraint( - QtWidgets.QLayout.SetDefaultConstraint) - self.verticalLayout_4.setObjectName("verticalLayout_4") - spacerItem = QtWidgets.QSpacerItem( - 20, 40, QtWidgets.QSizePolicy.Minimum, - QtWidgets.QSizePolicy.Expanding) - self.verticalLayout_4.addItem(spacerItem) - self.addTab_pushButton = QtWidgets.QPushButton(self.groupBox_4) - self.addTab_pushButton.setObjectName("addTab_pushButton") - self.verticalLayout_4.addWidget(self.addTab_pushButton) - self.removeTab_pushButton = QtWidgets.QPushButton(self.groupBox_4) - sizePolicy = QtWidgets.QSizePolicy( - QtWidgets.QSizePolicy.Minimum, QtWidgets.QSizePolicy.Fixed) - sizePolicy.setHorizontalStretch(0) - sizePolicy.setVerticalStretch(0) - sizePolicy.setHeightForWidth( - self.removeTab_pushButton.sizePolicy().hasHeightForWidth()) - self.removeTab_pushButton.setSizePolicy(sizePolicy) - self.removeTab_pushButton.setObjectName("removeTab_pushButton") - self.verticalLayout_4.addWidget(self.removeTab_pushButton) - spacerItem1 = QtWidgets.QSpacerItem( - 20, 40, QtWidgets.QSizePolicy.Minimum, - QtWidgets.QSizePolicy.Expanding) - self.verticalLayout_4.addItem(spacerItem1) - self.horizontalLayout_2.addLayout(self.verticalLayout_4) - self.verticalLayout_2 = QtWidgets.QVBoxLayout() - self.verticalLayout_2.setObjectName("verticalLayout_2") - self.available_label = QtWidgets.QLabel(self.groupBox_4) - self.available_label.setObjectName("available_label") - self.verticalLayout_2.addWidget(self.available_label) - self.available_listWidget = QtWidgets.QListWidget(self.groupBox_4) - self.available_listWidget.setDragDropOverwriteMode(True) - self.available_listWidget.setDragDropMode( - QtWidgets.QAbstractItemView.NoDragDrop) - self.available_listWidget.setDefaultDropAction(QtCore.Qt.IgnoreAction) - self.available_listWidget.setAlternatingRowColors(True) - self.available_listWidget.setSelectionMode( - QtWidgets.QAbstractItemView.ExtendedSelection) - self.available_listWidget.setSelectionRectVisible(False) - self.available_listWidget.setObjectName("available_listWidget") - self.verticalLayout_2.addWidget(self.available_listWidget) - self.horizontalLayout_2.addLayout(self.verticalLayout_2) - self.gridLayout_6.addLayout(self.horizontalLayout_2, 0, 0, 1, 1) - self.gridLayout_2.addWidget(self.groupBox_4, 4, 0, 1, 1) + self.gridLayout_2.addWidget(self.groupBox_5, 6, 0, 1, 1) self.groupBox = QtWidgets.QGroupBox(Form) self.groupBox.setObjectName("groupBox") self.gridLayout_3 = QtWidgets.QGridLayout(self.groupBox) @@ -207,26 +125,21 @@ def setupUi(self, Form): self.formLayout.setObjectName("formLayout") self.rigName_label = QtWidgets.QLabel(self.groupBox) self.rigName_label.setObjectName("rigName_label") - self.formLayout.setWidget( - 0, QtWidgets.QFormLayout.LabelRole, self.rigName_label) + self.formLayout.setWidget(0, QtWidgets.QFormLayout.LabelRole, self.rigName_label) self.rigName_lineEdit = QtWidgets.QLineEdit(self.groupBox) self.rigName_lineEdit.setObjectName("rigName_lineEdit") - self.formLayout.setWidget( - 0, QtWidgets.QFormLayout.FieldRole, self.rigName_lineEdit) + self.formLayout.setWidget(0, QtWidgets.QFormLayout.FieldRole, self.rigName_lineEdit) self.mode_label = QtWidgets.QLabel(self.groupBox) self.mode_label.setObjectName("mode_label") - self.formLayout.setWidget( - 1, QtWidgets.QFormLayout.LabelRole, self.mode_label) + self.formLayout.setWidget(1, QtWidgets.QFormLayout.LabelRole, self.mode_label) self.mode_comboBox = QtWidgets.QComboBox(self.groupBox) self.mode_comboBox.setObjectName("mode_comboBox") self.mode_comboBox.addItem("") self.mode_comboBox.addItem("") - self.formLayout.setWidget( - 1, QtWidgets.QFormLayout.FieldRole, self.mode_comboBox) + self.formLayout.setWidget(1, QtWidgets.QFormLayout.FieldRole, self.mode_comboBox) self.step_label = QtWidgets.QLabel(self.groupBox) self.step_label.setObjectName("step_label") - self.formLayout.setWidget( - 2, QtWidgets.QFormLayout.LabelRole, self.step_label) + self.formLayout.setWidget(2, QtWidgets.QFormLayout.LabelRole, self.step_label) self.step_comboBox = QtWidgets.QComboBox(self.groupBox) self.step_comboBox.setObjectName("step_comboBox") self.step_comboBox.addItem("") @@ -236,8 +149,7 @@ def setupUi(self, Form): self.step_comboBox.addItem("") self.step_comboBox.addItem("") self.step_comboBox.addItem("") - self.formLayout.setWidget( - 2, QtWidgets.QFormLayout.FieldRole, self.step_comboBox) + self.formLayout.setWidget(2, QtWidgets.QFormLayout.FieldRole, self.step_comboBox) self.gridLayout_3.addLayout(self.formLayout, 0, 0, 1, 1) self.gridLayout_2.addWidget(self.groupBox, 0, 0, 1, 1) self.groupBox_2 = QtWidgets.QGroupBox(Form) @@ -262,14 +174,69 @@ def setupUi(self, Form): self.horizontalLayout.addWidget(self.loadSkinPath_pushButton) self.verticalLayout.addLayout(self.horizontalLayout) self.gridLayout_4.addLayout(self.verticalLayout, 0, 0, 1, 1) - self.gridLayout_2.addWidget(self.groupBox_2, 2, 0, 1, 1) + self.gridLayout_2.addWidget(self.groupBox_2, 3, 0, 1, 1) + self.groupBox_4 = QtWidgets.QGroupBox(Form) + self.groupBox_4.setObjectName("groupBox_4") + self.gridLayout_6 = QtWidgets.QGridLayout(self.groupBox_4) + self.gridLayout_6.setObjectName("gridLayout_6") + self.horizontalLayout_2 = QtWidgets.QHBoxLayout() + self.horizontalLayout_2.setObjectName("horizontalLayout_2") + self.verticalLayout_3 = QtWidgets.QVBoxLayout() + self.verticalLayout_3.setObjectName("verticalLayout_3") + self.rigTabs_label = QtWidgets.QLabel(self.groupBox_4) + self.rigTabs_label.setObjectName("rigTabs_label") + self.verticalLayout_3.addWidget(self.rigTabs_label) + self.rigTabs_listWidget = QtWidgets.QListWidget(self.groupBox_4) + self.rigTabs_listWidget.setDragDropOverwriteMode(True) + self.rigTabs_listWidget.setDragDropMode(QtWidgets.QAbstractItemView.InternalMove) + self.rigTabs_listWidget.setDefaultDropAction(QtCore.Qt.MoveAction) + self.rigTabs_listWidget.setAlternatingRowColors(True) + self.rigTabs_listWidget.setSelectionMode(QtWidgets.QAbstractItemView.ExtendedSelection) + self.rigTabs_listWidget.setSelectionRectVisible(False) + self.rigTabs_listWidget.setObjectName("rigTabs_listWidget") + self.verticalLayout_3.addWidget(self.rigTabs_listWidget) + self.horizontalLayout_2.addLayout(self.verticalLayout_3) + self.verticalLayout_4 = QtWidgets.QVBoxLayout() + self.verticalLayout_4.setSizeConstraint(QtWidgets.QLayout.SetDefaultConstraint) + self.verticalLayout_4.setObjectName("verticalLayout_4") + spacerItem = QtWidgets.QSpacerItem(20, 40, QtWidgets.QSizePolicy.Minimum, QtWidgets.QSizePolicy.Expanding) + self.verticalLayout_4.addItem(spacerItem) + self.addTab_pushButton = QtWidgets.QPushButton(self.groupBox_4) + self.addTab_pushButton.setObjectName("addTab_pushButton") + self.verticalLayout_4.addWidget(self.addTab_pushButton) + self.removeTab_pushButton = QtWidgets.QPushButton(self.groupBox_4) + sizePolicy = QtWidgets.QSizePolicy(QtWidgets.QSizePolicy.Minimum, QtWidgets.QSizePolicy.Fixed) + sizePolicy.setHorizontalStretch(0) + sizePolicy.setVerticalStretch(0) + sizePolicy.setHeightForWidth(self.removeTab_pushButton.sizePolicy().hasHeightForWidth()) + self.removeTab_pushButton.setSizePolicy(sizePolicy) + self.removeTab_pushButton.setObjectName("removeTab_pushButton") + self.verticalLayout_4.addWidget(self.removeTab_pushButton) + spacerItem1 = QtWidgets.QSpacerItem(20, 40, QtWidgets.QSizePolicy.Minimum, QtWidgets.QSizePolicy.Expanding) + self.verticalLayout_4.addItem(spacerItem1) + self.horizontalLayout_2.addLayout(self.verticalLayout_4) + self.verticalLayout_2 = QtWidgets.QVBoxLayout() + self.verticalLayout_2.setObjectName("verticalLayout_2") + self.available_label = QtWidgets.QLabel(self.groupBox_4) + self.available_label.setObjectName("available_label") + self.verticalLayout_2.addWidget(self.available_label) + self.available_listWidget = QtWidgets.QListWidget(self.groupBox_4) + self.available_listWidget.setDragDropOverwriteMode(True) + self.available_listWidget.setDragDropMode(QtWidgets.QAbstractItemView.NoDragDrop) + self.available_listWidget.setDefaultDropAction(QtCore.Qt.IgnoreAction) + self.available_listWidget.setAlternatingRowColors(True) + self.available_listWidget.setSelectionMode(QtWidgets.QAbstractItemView.ExtendedSelection) + self.available_listWidget.setSelectionRectVisible(False) + self.available_listWidget.setObjectName("available_listWidget") + self.verticalLayout_2.addWidget(self.available_listWidget) + self.horizontalLayout_2.addLayout(self.verticalLayout_2) + self.gridLayout_6.addLayout(self.horizontalLayout_2, 0, 0, 1, 1) + self.gridLayout_2.addWidget(self.groupBox_4, 5, 0, 1, 1) self.groupBox_3 = QtWidgets.QGroupBox(Form) - sizePolicy = QtWidgets.QSizePolicy( - QtWidgets.QSizePolicy.Preferred, QtWidgets.QSizePolicy.Fixed) + sizePolicy = QtWidgets.QSizePolicy(QtWidgets.QSizePolicy.Preferred, QtWidgets.QSizePolicy.Fixed) sizePolicy.setHorizontalStretch(0) sizePolicy.setVerticalStretch(0) - sizePolicy.setHeightForWidth( - self.groupBox_3.sizePolicy().hasHeightForWidth()) + sizePolicy.setHeightForWidth(self.groupBox_3.sizePolicy().hasHeightForWidth()) self.groupBox_3.setSizePolicy(sizePolicy) self.groupBox_3.setObjectName("groupBox_3") self.gridLayout_5 = QtWidgets.QGridLayout(self.groupBox_3) @@ -277,7 +244,7 @@ def setupUi(self, Form): self.jointRig_checkBox = QtWidgets.QCheckBox(self.groupBox_3) self.jointRig_checkBox.setObjectName("jointRig_checkBox") self.gridLayout_5.addWidget(self.jointRig_checkBox, 0, 0, 1, 1) - self.gridLayout_2.addWidget(self.groupBox_3, 3, 0, 1, 1) + self.gridLayout_2.addWidget(self.groupBox_3, 4, 0, 1, 1) self.groupBox_6 = QtWidgets.QGroupBox(Form) self.groupBox_6.setObjectName("groupBox_6") self.gridLayout_8 = QtWidgets.QGridLayout(self.groupBox_6) @@ -285,107 +252,68 @@ def setupUi(self, Form): self.proxyChannels_checkBox = QtWidgets.QCheckBox(self.groupBox_6) self.proxyChannels_checkBox.setObjectName("proxyChannels_checkBox") self.gridLayout_8.addWidget(self.proxyChannels_checkBox, 0, 0, 1, 1) - self.classicChannelNames_checkBox = QtWidgets.QCheckBox( - self.groupBox_6) - self.classicChannelNames_checkBox.setObjectName( - "classicChannelNames_checkBox") - self.gridLayout_8.addWidget( - self.classicChannelNames_checkBox, 1, 0, 1, 1) + self.classicChannelNames_checkBox = QtWidgets.QCheckBox(self.groupBox_6) + self.classicChannelNames_checkBox.setObjectName("classicChannelNames_checkBox") + self.gridLayout_8.addWidget(self.classicChannelNames_checkBox, 1, 0, 1, 1) self.gridLayout_2.addWidget(self.groupBox_6, 1, 0, 1, 1) + self.groupBox_7 = QtWidgets.QGroupBox(Form) + sizePolicy = QtWidgets.QSizePolicy(QtWidgets.QSizePolicy.Preferred, QtWidgets.QSizePolicy.Fixed) + sizePolicy.setHorizontalStretch(0) + sizePolicy.setVerticalStretch(0) + sizePolicy.setHeightForWidth(self.groupBox_7.sizePolicy().hasHeightForWidth()) + self.groupBox_7.setSizePolicy(sizePolicy) + self.groupBox_7.setObjectName("groupBox_7") + self.gridLayout_9 = QtWidgets.QGridLayout(self.groupBox_7) + self.gridLayout_9.setObjectName("gridLayout_9") + self.worldCtl_checkBox = QtWidgets.QCheckBox(self.groupBox_7) + self.worldCtl_checkBox.setObjectName("worldCtl_checkBox") + self.gridLayout_9.addWidget(self.worldCtl_checkBox, 0, 0, 1, 1) + self.gridLayout_2.addWidget(self.groupBox_7, 2, 0, 1, 1) self.retranslateUi(Form) QtCore.QMetaObject.connectSlotsByName(Form) def retranslateUi(self, Form): Form.setWindowTitle(gqt.fakeTranslate("Form", "Form", None, -1)) - self.groupBox_5.setTitle(gqt.fakeTranslate( - "Form", "Color Settings", None, -1)) + self.groupBox_5.setTitle(gqt.fakeTranslate("Form", "Color Settings", None, -1)) self.label.setText(gqt.fakeTranslate("Form", "Left", None, -1)) self.label_2.setText(gqt.fakeTranslate("Form", "Center", None, -1)) self.label_3.setText(gqt.fakeTranslate("Form", "Right", None, -1)) - self.L_color_fk_label.setText( - gqt.fakeTranslate("Form", "FK", None, -1)) - self.L_color_fk_label_5.setText( - gqt.fakeTranslate("Form", "FK", None, -1)) - self.L_color_fk_label_3.setText( - gqt.fakeTranslate("Form", "FK", None, -1)) - self.L_color_fk_label_2.setText( - gqt.fakeTranslate("Form", "IK", None, -1)) - self.L_color_fk_label_6.setText( - gqt.fakeTranslate("Form", "IK", None, -1)) - self.L_color_fk_label_4.setText( - gqt.fakeTranslate("Form", " IK", None, -1)) - self.groupBox_4.setTitle(gqt.fakeTranslate( - "Form", "Synoptic Settings", None, -1)) - self.rigTabs_label.setText( - gqt.fakeTranslate("Form", "Rig Tabs", None, -1)) - self.addTab_pushButton.setText( - gqt.fakeTranslate("Form", "<<", None, -1)) - self.removeTab_pushButton.setText( - gqt.fakeTranslate("Form", ">>", None, -1)) - self.available_label.setText(gqt.fakeTranslate( - "Form", "Available Tabs", None, -1)) - self.groupBox.setTitle(gqt.fakeTranslate( - "Form", "Rig Settings", None, -1)) - self.rigName_label.setText( - gqt.fakeTranslate("Form", "Rig Name", None, -1)) - self.mode_label.setText(gqt.fakeTranslate( - "Form", "Debug Mode", None, -1)) - self.mode_comboBox.setItemText( - 0, gqt.fakeTranslate("Form", "Final", None, -1)) - self.mode_comboBox.setItemText( - 1, gqt.fakeTranslate("Form", "WIP", None, -1)) - self.step_label.setText(gqt.fakeTranslate( - "Form", "Guide Build Steps:", None, -1)) - self.step_comboBox.setItemText( - 0, gqt.fakeTranslate("Form", "All Steps", None, -1)) - self.step_comboBox.setItemText( - 1, gqt.fakeTranslate("Form", "Objects", None, -1)) - self.step_comboBox.setItemText( - 2, gqt.fakeTranslate("Form", "Attributes", None, -1)) - self.step_comboBox.setItemText( - 3, gqt.fakeTranslate("Form", "Operators", None, -1)) - self.step_comboBox.setItemText( - 4, gqt.fakeTranslate("Form", "Connect", None, -1)) - self.step_comboBox.setItemText( - 5, gqt.fakeTranslate("Form", "Joints", None, -1)) - self.step_comboBox.setItemText( - 6, gqt.fakeTranslate("Form", "Finalize", None, -1)) - self.groupBox_2.setTitle(gqt.fakeTranslate( - "Form", "Skinning Settings", None, -1)) - self.importSkin_checkBox.setText( - gqt.fakeTranslate("Form", "Import Skin", None, -1)) - self.skin_label.setText(gqt.fakeTranslate( - "Form", "Skin Path", None, -1)) - self.loadSkinPath_pushButton.setText( - gqt.fakeTranslate("Form", "Load Path", None, -1)) - self.groupBox_3.setTitle(gqt.fakeTranslate( - "Form", "Joint Settings", None, -1)) - self.jointRig_checkBox.setText(gqt.fakeTranslate( - "Form", "Separated Joint Structure", None, -1)) - self.groupBox_6.setTitle(gqt.fakeTranslate( - "Form", "Animation Channels Settings", None, -1)) - self.proxyChannels_checkBox.setText(gqt.fakeTranslate( - "Form", "Add Internal Proxy Channels", None, -1)) - self.classicChannelNames_checkBox.setToolTip( - gqt.fakeTranslate( - "Form", "

If this option" - " is checked. The channel name will have unique full name." - "

" - "i.e: "arm_L0_blend"

If the option" - " is unchecked. The channel will use the simple name. " - "

i." - "e: "arm_blend"

NOTE: With the option unchecked. " - "If the channel host (uiHost) have 2 or more componets of the " - "same type. The connection will be shared amoung all the " - "componets with the same name channel.

i.e: If we have 2 arms, the " - "channels will be shared for both arms. To avoid this " - "behaviour with the unchecked option, please use a unique" - " channel host for each component.

", - None, -1)) - self.classicChannelNames_checkBox.setText(gqt.fakeTranslate( - "Form", - "Use Classic Channel Names (All channels will have unique names.)", - None, -1)) + self.L_color_fk_label.setText(gqt.fakeTranslate("Form", "FK", None, -1)) + self.L_color_fk_label_5.setText(gqt.fakeTranslate("Form", "FK", None, -1)) + self.L_color_fk_label_3.setText(gqt.fakeTranslate("Form", "FK", None, -1)) + self.L_color_fk_label_2.setText(gqt.fakeTranslate("Form", "IK", None, -1)) + self.L_color_fk_label_6.setText(gqt.fakeTranslate("Form", "IK", None, -1)) + self.L_color_fk_label_4.setText(gqt.fakeTranslate("Form", " IK", None, -1)) + self.groupBox.setTitle(gqt.fakeTranslate("Form", "Rig Settings", None, -1)) + self.rigName_label.setText(gqt.fakeTranslate("Form", "Rig Name", None, -1)) + self.mode_label.setText(gqt.fakeTranslate("Form", "Debug Mode", None, -1)) + self.mode_comboBox.setItemText(0, gqt.fakeTranslate("Form", "Final", None, -1)) + self.mode_comboBox.setItemText(1, gqt.fakeTranslate("Form", "WIP", None, -1)) + self.step_label.setText(gqt.fakeTranslate("Form", "Guide Build Steps:", None, -1)) + self.step_comboBox.setItemText(0, gqt.fakeTranslate("Form", "All Steps", None, -1)) + self.step_comboBox.setItemText(1, gqt.fakeTranslate("Form", "Objects", None, -1)) + self.step_comboBox.setItemText(2, gqt.fakeTranslate("Form", "Attributes", None, -1)) + self.step_comboBox.setItemText(3, gqt.fakeTranslate("Form", "Operators", None, -1)) + self.step_comboBox.setItemText(4, gqt.fakeTranslate("Form", "Connect", None, -1)) + self.step_comboBox.setItemText(5, gqt.fakeTranslate("Form", "Joints", None, -1)) + self.step_comboBox.setItemText(6, gqt.fakeTranslate("Form", "Finalize", None, -1)) + self.groupBox_2.setTitle(gqt.fakeTranslate("Form", "Skinning Settings", None, -1)) + self.importSkin_checkBox.setText(gqt.fakeTranslate("Form", "Import Skin", None, -1)) + self.skin_label.setText(gqt.fakeTranslate("Form", "Skin Path", None, -1)) + self.loadSkinPath_pushButton.setText(gqt.fakeTranslate("Form", "Load Path", None, -1)) + self.groupBox_4.setTitle(gqt.fakeTranslate("Form", "Synoptic Settings", None, -1)) + self.rigTabs_label.setText(gqt.fakeTranslate("Form", "Rig Tabs", None, -1)) + self.addTab_pushButton.setText(gqt.fakeTranslate("Form", "<<", None, -1)) + self.removeTab_pushButton.setText(gqt.fakeTranslate("Form", ">>", None, -1)) + self.available_label.setText(gqt.fakeTranslate("Form", "Available Tabs", None, -1)) + self.groupBox_3.setTitle(gqt.fakeTranslate("Form", "Joint Settings", None, -1)) + self.jointRig_checkBox.setText(gqt.fakeTranslate("Form", "Separated Joint Structure", None, -1)) + self.groupBox_6.setTitle(gqt.fakeTranslate("Form", "Animation Channels Settings", None, -1)) + self.proxyChannels_checkBox.setText(gqt.fakeTranslate("Form", "Add Internal Proxy Channels", None, -1)) + self.classicChannelNames_checkBox.setToolTip(gqt.fakeTranslate("Form", "

If this option is checked. The channel name will have unique full name.

i.e: "arm_L0_blend"

If the option is unchecked. The channel will use the simple name.

i.e: "arm_blend"

NOTE: With the option unchecked. If the channel host (uiHost) have 2 or more componets of the same type. The connection will be shared amoung all the componets with the same name channel.

i.e: If we have 2 arms, the channels will be shared for both arms. To avoid this behaviour with the unchecked option, please use a unique channel host for each component.

", None, -1)) + self.classicChannelNames_checkBox.setText(gqt.fakeTranslate("Form", "Use Classic Channel Names (All channels will have unique names.)", None, -1)) + self.groupBox_7.setTitle(gqt.fakeTranslate("Form", "Base Rig Control", None, -1)) + self.worldCtl_checkBox.setToolTip(gqt.fakeTranslate("Form", "

Shifter creates by default a Base control called "global_C0_ctl".

Since this control is not accesible from any guide locator. Is not possible to add it as a space reference.

If this option is active, The base control will be named "world_ctl" and we can add "global_C0_ctl" as a regular "Control_01" component.

This way we can use it as space reference.

The biped guide template is configured with this structure.

", None, -1)) + self.worldCtl_checkBox.setText(gqt.fakeTranslate("Form", "Use World Ctl", None, -1)) + diff --git a/scripts/mgear/maya/shifter/guideUI.ui b/scripts/mgear/maya/shifter/guideUI.ui index 0b338db..4831e84 100644 --- a/scripts/mgear/maya/shifter/guideUI.ui +++ b/scripts/mgear/maya/shifter/guideUI.ui @@ -14,7 +14,7 @@ Form
- + Color Settings @@ -201,7 +201,138 @@
- + + + + Rig Settings + + + + + + + + Rig Name + + + + + + + + + + Debug Mode + + + + + + + + Final + + + + + WIP + + + + + + + + Guide Build Steps: + + + + + + + + All Steps + + + + + Objects + + + + + Attributes + + + + + Operators + + + + + Connect + + + + + Joints + + + + + Finalize + + + + + + + + + + + + + Skinning Settings + + + + + + + + Import Skin + + + + + + + + + Skin Path + + + + + + + + + + Load Path + + + + + + + + + + + Synoptic Settings @@ -333,138 +464,7 @@ - - - - Rig Settings - - - - - - - - Rig Name - - - - - - - - - - Debug Mode - - - - - - - - Final - - - - - WIP - - - - - - - - Guide Build Steps: - - - - - - - - All Steps - - - - - Objects - - - - - Attributes - - - - - Operators - - - - - Connect - - - - - Joints - - - - - Finalize - - - - - - - - - - - - - Skinning Settings - - - - - - - - Import Skin - - - - - - - - - Skin Path - - - - - - - - - - Load Path - - - - - - - - - - - + @@ -512,6 +512,31 @@ + + + + + 0 + 0 + + + + Base Rig Control + + + + + + <html><head/><body><p>Shifter creates by default a Base control called &quot;<span style=" font-weight:600;">global_C0_ctl</span>&quot;. </p><p>Since this control is not accesible from any guide locator. Is not possible to add it as a space reference.</p><p>If this option is active, The base control will be named &quot;<span style=" font-weight:600;">world_ctl</span>&quot; and we can add &quot;<span style=" font-weight:600;">global_C0_ctl</span>&quot; as a regular &quot;Control_01&quot; component. </p><p>This way we can use it as space reference.</p><p>The biped guide template is configured with this structure.</p></body></html> + + + Use World Ctl + + + + + + From d893e48a0f157febd3184aa6f32bfefd6794a82b Mon Sep 17 00:00:00 2001 From: miquelcampos Date: Fri, 1 Dec 2017 09:52:55 +0900 Subject: [PATCH 115/134] Shifter: #101. Fixing issue for stop build on pre step error --- scripts/mgear/maya/shifter/__init__.py | 46 +++++++++++++------------- 1 file changed, 23 insertions(+), 23 deletions(-) diff --git a/scripts/mgear/maya/shifter/__init__.py b/scripts/mgear/maya/shifter/__init__.py index 4a394a8..1b1eae9 100644 --- a/scripts/mgear/maya/shifter/__init__.py +++ b/scripts/mgear/maya/shifter/__init__.py @@ -102,24 +102,25 @@ def buildFromSelection(self): self.preCustomStep(selection) - mgear.log("\n" + "= GUIDE VALIDATION " + "=" * 46) - # Check guide is valid - self.guide.setFromSelection() - if not self.guide.valid: - return - - # Build - mgear.log("\n" + "= BUILDING RIG " + "=" * 46) - self.build() - self.postCustomStep() - - endTime = datetime.datetime.now() - finalTime = endTime - startTime - mgear.log("\n" + "= SHIFTER BUILD RIG DONE {} [ {} ] {}".format( - "=" * 16, - finalTime, - "=" * 7 - )) + if not self.stopBuild: + mgear.log("\n" + "= GUIDE VALIDATION " + "=" * 46) + # Check guide is valid + self.guide.setFromSelection() + if not self.guide.valid: + return + + # Build + mgear.log("\n" + "= BUILDING RIG " + "=" * 46) + self.build() + self.postCustomStep() + + endTime = datetime.datetime.now() + finalTime = endTime - startTime + mgear.log("\n" + "= SHIFTER BUILD RIG DONE {} [ {} ] {}".format( + "=" * 16, + finalTime, + "=" * 7 + )) def build(self): """Build the rig.""" @@ -129,12 +130,11 @@ def build(self): self.customStepDic["mgearRun"] = self - if not self.stopBuild: - self.initialHierarchy() - self.processComponents() - self.finalize() + self.initialHierarchy() + self.processComponents() + self.finalize() - return self.model + return self.model def stepsList(self, checker, attr): if self.options[checker] and self.options[attr]: From bc1a7e3598177f8fe9f6454bd4b90a93a66312fd Mon Sep 17 00:00:00 2001 From: miquelcampos Date: Fri, 1 Dec 2017 18:47:11 +0900 Subject: [PATCH 116/134] Shifter: Improve rig build speed #65. This new implentation is much faster to build the rig. Some guide from 300 components reduced the time from 5 min to 1 min --- scripts/mgear/maya/dag.py | 30 +++- scripts/mgear/maya/shifter/component/guide.py | 12 +- scripts/mgear/maya/shifter/guide.py | 167 ++++++++++-------- 3 files changed, 129 insertions(+), 80 deletions(-) diff --git a/scripts/mgear/maya/dag.py b/scripts/mgear/maya/dag.py index cd5e543..6b316c0 100644 --- a/scripts/mgear/maya/dag.py +++ b/scripts/mgear/maya/dag.py @@ -52,7 +52,8 @@ def findChild(node, name): comp_guide.root.name())) """ - return __findChildren(node, name, True) + # return __findChildren(node, name, True) + return __findChild(node, name) def findChildren(node, name): @@ -104,6 +105,33 @@ def __findChildren(node, name, firstOnly=False, partialName=False): return children +def __findChild(node, name): + """This find children function will stop search after firs child found.child + + This is a faster version of __findchildren + + Arguments: + node (dagNode): The input node to search + name (str): The name to search + + Returns: + dagNode: Children node + """ + try: + for item in cmds.listRelatives(node.name(), + allDescendents=True, + type="transform"): + if item.split("|")[-1] == name: + return pm.PyNode(item) + except pm.MayaNodeError: + for item in node.listRelatives(allDescendents=True, + type="transform"): + if item.split("|")[-1] == name: + return item + + return False + + def __findChildren2(node, name, firstOnly=False, partialName=False): """This function is using Maya cmds instead of PyMel diff --git a/scripts/mgear/maya/shifter/component/guide.py b/scripts/mgear/maya/shifter/component/guide.py index aaaff68..1fe6713 100644 --- a/scripts/mgear/maya/shifter/component/guide.py +++ b/scripts/mgear/maya/shifter/component/guide.py @@ -437,10 +437,11 @@ def rename(self, root, newName, newSide, newIndex): self.parent.attr("comp_index").set(self.values["comp_index"]) - objList = dag.findComponentChildren(self.parent, oldName, oldSideIndex) + # objList = dag.findComponentChildren(self.parent, + # oldName, oldSideIndex) # NOTE: Experimenta using findComponentChildren2 - # objList = dag.findComponentChildren2( - # self.parent, oldName, oldSideIndex) + objList = dag.findComponentChildren2( + self.parent, oldName, oldSideIndex) newSideIndex = newSide + str(self.values["comp_index"]) objList.append(self.parent) for obj in objList: @@ -675,8 +676,9 @@ def getObjects3(self, model): objects = {} for child in cmds.ls(self.fullName + "_*", type="transform"): - objects[child[child.index( - self.fullName + "_") + len(self.fullName + "_"):]] = child + if pm.PyNode(child).getParent(-1) == model: + objects[child[child.index( + self.fullName + "_") + len(self.fullName + "_"):]] = child return objects diff --git a/scripts/mgear/maya/shifter/guide.py b/scripts/mgear/maya/shifter/guide.py index 2e5d92a..a5c4c9a 100644 --- a/scripts/mgear/maya/shifter/guide.py +++ b/scripts/mgear/maya/shifter/guide.py @@ -385,18 +385,35 @@ def setFromHierarchy(self, root, branch=True): if self.valid: for name in self.componentsIndex: mgear.log("Get parenting for: " + name) - compParent = self.components[name] - # NOTE: getObjects3 is an experimental function - # for localName, element in compParent.getObjects3( - # self.model).items(): - for localName, element in compParent.getObjects( - self.model, False).items(): - for name in self.componentsIndex: - compChild = self.components[name] - compChild_parent = compChild.root.getParent() - if element is not None and element == compChild_parent: - compChild.parentComponent = compParent - compChild.parentLocalName = localName + # TODO: In the future should use connections to retrive this + # data + # We try the fastes aproach, will fail if is not the top node + try: + # search for his parent + compParent = self.components[name].root.getParent() + if compParent and compParent.hasAttr("isGearGuide"): + pName = "_".join(compParent.name().split("_")[:2]) + pLocal = "_".join(compParent.name().split("_")[2:]) + + pComp = self.components[pName] + self.components[name].parentComponent = pComp + self.components[name].parentLocalName = pLocal + # This will scan the hierachy in reverse. It is much slower + except KeyError: + # search children and set him as parent + compParent = self.components[name] + # for localName, element in compParent.getObjects( + # self.model, False).items(): + # NOTE: getObjects3 is an experimental function + for localName, element in compParent.getObjects3( + self.model).items(): + for name in self.componentsIndex: + compChild = self.components[name] + compChild_parent = compChild.root.getParent() + if (element is not None + and element == compChild_parent): + compChild.parentComponent = compParent + compChild.parentLocalName = localName # More option values self.addOptionsValues() @@ -451,7 +468,7 @@ def findComponentRecursive(self, node, branch=True): self.components[comp_guide.fullName] = comp_guide if branch: - for child in node.getChildren(): + for child in node.getChildren(type="transform"): self.findComponentRecursive(child) def getComponentGuide(self, comp_type): @@ -842,56 +859,56 @@ def editFile(self, widgetList): @classmethod def runStep(self, stepPath, customStepDic): - try: - with pm.UndoChunk(): + try: + with pm.UndoChunk(): + pm.displayInfo( + "EXEC: Executing custom step: %s" % stepPath) + fileName = os.path.split(stepPath)[1].split(".")[0] + if os.environ.get(MGEAR_SHIFTER_CUSTOMSTEP_KEY, ""): + runPath = os.path.join( + os.environ.get( + MGEAR_SHIFTER_CUSTOMSTEP_KEY, ""), stepPath) + else: + runPath = stepPath + customStep = imp.load_source(fileName, runPath) + if hasattr(customStep, "CustomShifterStep"): + cs = customStep.CustomShifterStep() + cs.run(customStepDic) + customStepDic[cs.name] = cs pm.displayInfo( - "EXEC: Executing custom step: %s" % stepPath) - fileName = os.path.split(stepPath)[1].split(".")[0] - if os.environ.get(MGEAR_SHIFTER_CUSTOMSTEP_KEY, ""): - runPath = os.path.join( - os.environ.get( - MGEAR_SHIFTER_CUSTOMSTEP_KEY, ""), stepPath) - else: - runPath = stepPath - customStep = imp.load_source(fileName, runPath) - if hasattr(customStep, "CustomShifterStep"): - cs = customStep.CustomShifterStep() - cs.run(customStepDic) - customStepDic[cs.name] = cs - pm.displayInfo( - "SUCCEED: Custom Shifter Step Class: %s. " - "Succeed!!" % stepPath) - else: - pm.displayInfo( - "SUCCEED: Custom Step simple script: %s. " - "Succeed!!" % stepPath) - - except Exception as ex: - template = "An exception of type {0} occured. " - "Arguments:\n{1!r}" - message = template.format(type(ex).__name__, ex.args) - pm.displayError(message) - pm.displayError(traceback.format_exc()) - cont = pm.confirmBox( - "FAIL: Custom Step Fail", - "The step:%s has failed. Continue with next step?" % - stepPath + "\n\n" + message + "\n\n" + - traceback.format_exc(), - "Continue", "Stop Build", "Try Again!") - if cont == "Stop Build": - # stop Build - return True - elif cont == "Try Again!": - try: # just in case there is nothing to undo - pm.undo() - except Exception: - pass - pm.displayInfo("Trying again! : {}".format(stepPath)) - inception = self.runStep(stepPath, customStepDic) - if inception: # stops build from the recursion loop. - return True + "SUCCEED: Custom Shifter Step Class: %s. " + "Succeed!!" % stepPath) else: - return False + pm.displayInfo( + "SUCCEED: Custom Step simple script: %s. " + "Succeed!!" % stepPath) + + except Exception as ex: + template = "An exception of type {0} occured. " + "Arguments:\n{1!r}" + message = template.format(type(ex).__name__, ex.args) + pm.displayError(message) + pm.displayError(traceback.format_exc()) + cont = pm.confirmBox( + "FAIL: Custom Step Fail", + "The step:%s has failed. Continue with next step?" % + stepPath + "\n\n" + message + "\n\n" + + traceback.format_exc(), + "Continue", "Stop Build", "Try Again!") + if cont == "Stop Build": + # stop Build + return True + elif cont == "Try Again!": + try: # just in case there is nothing to undo + pm.undo() + except Exception: + pass + pm.displayInfo("Trying again! : {}".format(stepPath)) + inception = self.runStep(stepPath, customStepDic) + if inception: # stops build from the recursion loop. + return True + else: + return False def runManualStep(self, widgetList): selItems = widgetList.selectedItems() @@ -900,12 +917,14 @@ def runManualStep(self, widgetList): class GuideSettingsTab(QtWidgets.QDialog, guui.Ui_Form): + def __init__(self, parent=None): super(guideSettingsTab, self).__init__(parent) self.setupUi(self) class CustomStepTab(QtWidgets.QDialog, csui.Ui_Form): + def __init__(self, parent=None): super(customStepTab, self).__init__(parent) self.setupUi(self) @@ -1186,20 +1205,20 @@ def populateAvailableSynopticTabs(self): self.guideSettingsTab.available_listWidget.addItem(tab) def skinLoad(self, *args): - startDir = self.root.attr("skin").get() - filePath = pm.fileDialog2( - dialogStyle=2, - fileMode=1, - startingDirectory=startDir, - okc="Apply", - fileFilter='mGear skin (*%s)' % skin.FILE_EXT) - if not filePath: - return - if not isinstance(filePath, basestring): - filePath = filePath[0] + startDir = self.root.attr("skin").get() + filePath = pm.fileDialog2( + dialogStyle=2, + fileMode=1, + startingDirectory=startDir, + okc="Apply", + fileFilter='mGear skin (*%s)' % skin.FILE_EXT) + if not filePath: + return + if not isinstance(filePath, basestring): + filePath = filePath[0] - self.root.attr("skin").set(filePath) - self.guideSettingsTab.skin_lineEdit.setText(filePath) + self.root.attr("skin").set(filePath) + self.guideSettingsTab.skin_lineEdit.setText(filePath) def addCustomStep(self, pre=True, *args): """Add a new custom step From 8899f41b73756a2d7fa7e49f7080fd0812826f26 Mon Sep 17 00:00:00 2001 From: AkagiT Date: Tue, 10 Oct 2017 21:01:52 +0900 Subject: [PATCH 117/134] #62:Shifter:leg_2jnt_freeTangent_01:change upv structure --- .../component/leg_2jnt_freeTangents_01/__init__.py | 12 +++++++----- 1 file changed, 7 insertions(+), 5 deletions(-) diff --git a/scripts/mgear/maya/shifter/component/leg_2jnt_freeTangents_01/__init__.py b/scripts/mgear/maya/shifter/component/leg_2jnt_freeTangents_01/__init__.py index be909af..7a44b04 100644 --- a/scripts/mgear/maya/shifter/component/leg_2jnt_freeTangents_01/__init__.py +++ b/scripts/mgear/maya/shifter/component/leg_2jnt_freeTangents_01/__init__.py @@ -173,7 +173,7 @@ def addObjects(self): v += self.guide.apos[1] self.upv_cns = primitive.addTransformFromPos( - self.root, self.getName("upv_cns"), v) + self.ik_ctl, self.getName("upv_cns"), v) self.upv_ctl = self.addCtl( self.upv_cns, @@ -601,9 +601,11 @@ def addAttributes(self): ref_names = ["Auto", "ikFoot"] if self.settings["upvrefarray"]: - ref_names = ref_names + self.settings["upvrefarray"].split(",") - self.upvref_att = self.addAnimEnumParam( - "upvref", "UpV Ref", 0, ref_names) + ref_names += self.settings["upvrefarray"].split(",") + if len(ref_names) > 1: + self.upvref_att = self.addAnimEnumParam( + "upvref", "UpV Ref", 0, ref_names) + if self.settings["pinrefarray"]: ref_names = self.settings["pinrefarray"].split(",") ref_names = ["Auto"] + ref_names @@ -658,7 +660,7 @@ def addOperators(self): self.legChainUpvRef, "ikSCsolver") pm.pointConstraint(self.ik_ctl, self.ikHandleUpvRef) - pm.parentConstraint(self.legChainUpvRef[0], self.upv_cns, mo=True) + pm.parentConstraint(self.legChainUpvRef[0], self.ik_ctl, self.upv_cns, mo=True) # Visibilities ------------------------------------- # shape.dispGeometry From 34be14b8111bc7c998b71d6cc5613d1ddb9f60e3 Mon Sep 17 00:00:00 2001 From: miquelcampos Date: Mon, 4 Dec 2017 11:19:01 +0900 Subject: [PATCH 118/134] Shifter: Control_01: Add option to have mirror behaviour. Consolidate and close #68 --- .../shifter/component/control_01/__init__.py | 7 +- .../shifter/component/control_01/guide.py | 13 +- .../component/control_01/settingsUI.py | 43 +- .../component/control_01/settingsUI.ui | 26 +- .../shifter/component/control_02/__init__.py | 115 --- .../shifter/component/control_02/guide.py | 234 ------ .../shifter/component/control_02/icon.jpg | Bin 1764 -> 0 bytes .../component/control_02/settingsUI.py | 359 -------- .../component/control_02/settingsUI.ui | 793 ------------------ 9 files changed, 49 insertions(+), 1541 deletions(-) delete mode 100644 scripts/mgear/maya/shifter/component/control_02/__init__.py delete mode 100644 scripts/mgear/maya/shifter/component/control_02/guide.py delete mode 100644 scripts/mgear/maya/shifter/component/control_02/icon.jpg delete mode 100644 scripts/mgear/maya/shifter/component/control_02/settingsUI.py delete mode 100644 scripts/mgear/maya/shifter/component/control_02/settingsUI.ui diff --git a/scripts/mgear/maya/shifter/component/control_01/__init__.py b/scripts/mgear/maya/shifter/component/control_01/__init__.py index b0810fc..b242fb6 100644 --- a/scripts/mgear/maya/shifter/component/control_01/__init__.py +++ b/scripts/mgear/maya/shifter/component/control_01/__init__.py @@ -23,7 +23,12 @@ def addObjects(self): t = transform.getTransformFromPos(self.guide.pos["root"]) else: t = self.guide.tra["root"] - t = transform.setMatrixScale(t) + if self.settings["mirrorBehaviour"] and self.negate: + scl = [1, 1, -1] + else: + scl = [1, 1, 1] + t = transform.setMatrixScale(t, scl) + self.ik_cns = primitive.addTransform( self.root, self.getName("ik_cns"), t) diff --git a/scripts/mgear/maya/shifter/component/control_01/guide.py b/scripts/mgear/maya/shifter/component/control_01/guide.py index 9330d97..3cb0021 100644 --- a/scripts/mgear/maya/shifter/component/control_01/guide.py +++ b/scripts/mgear/maya/shifter/component/control_01/guide.py @@ -17,12 +17,14 @@ AUTHOR = "Jeremie Passerin, Miquel Campos" URL = "www.jeremiepasserin.com, www.miquel-campos.com" EMAIL = "geerem@hotmail.com, hello@miquel-campos.com" -VERSION = [1, 1, 0] +VERSION = [1, 2, 0] TYPE = "control_01" NAME = "control" DESCRIPTION = "Simple controler with space switch and Rot order selection. \n"\ "This component can use the root rotation to place the "\ - "control orientation" + "control orientation \n" \ + "NOTE: MAYA 2018 and 2018.1 have a bug that break the behaviour"\ + " with negative scale. This affect 'Mirror behaviour option' " ########################################################## # CLASS @@ -76,6 +78,7 @@ def addParameters(self): self.pDefault_RotOrder = self.addParam( "default_rotorder", "long", 0, 0, 5) self.pNeutralRotation = self.addParam("neutralRotation", "bool", True) + self.pMirrorBehaviour = self.addParam("mirrorBehaviour", "bool", False) self.pCtlSize = self.addParam("ctlSize", "double", 1, None, None) self.pUseIndex = self.addParam("useIndex", "bool", False) self.pParentJointIndex = self.addParam( @@ -154,6 +157,8 @@ def populate_componentControls(self): self.populateCheck(self.settingsTab.uniScale_checkBox, "uniScale") self.populateCheck(self.settingsTab.neutralRotation_checkBox, "neutralRotation") + self.populateCheck(self.settingsTab.mirrorBehaviour_checkBox, + "mirrorBehaviour") self.settingsTab.ctlSize_doubleSpinBox.setValue( self.root.attr("ctlSize").get()) sideIndex = self.iconsList.index(self.root.attr("icon").get()) @@ -199,6 +204,10 @@ def create_componentConnections(self): partial(self.updateCheck, self.settingsTab.neutralRotation_checkBox, "neutralRotation")) + self.settingsTab.mirrorBehaviour_checkBox.stateChanged.connect( + partial(self.updateCheck, + self.settingsTab.mirrorBehaviour_checkBox, + "mirrorBehaviour")) self.settingsTab.ctlSize_doubleSpinBox.valueChanged.connect( partial(self.updateSpinBox, self.settingsTab.ctlSize_doubleSpinBox, diff --git a/scripts/mgear/maya/shifter/component/control_01/settingsUI.py b/scripts/mgear/maya/shifter/component/control_01/settingsUI.py index af86769..0a61bd6 100644 --- a/scripts/mgear/maya/shifter/component/control_01/settingsUI.py +++ b/scripts/mgear/maya/shifter/component/control_01/settingsUI.py @@ -1,37 +1,12 @@ -# MGEAR is under the terms of the MIT License - -# Copyright (c) 2016 Jeremie Passerin, Miquel Campos - -# Permission is hereby granted, free of charge, to any person obtaining a copy -# of this software and associated documentation files (the "Software"), to deal -# in the Software without restriction, including without limitation the rights -# to use, copy, modify, merge, publish, distribute, sublicense, and/or sell -# copies of the Software, and to permit persons to whom the Software is -# furnished to do so, subject to the following conditions: - -# The above copyright notice and this permission notice shall be included in all -# copies or substantial portions of the Software. - -# THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR -# IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, -# FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE -# AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER -# LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, -# OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE -# SOFTWARE. - -# Author: Jeremie Passerin geerem@hotmail.com www.jeremiepasserin.com -# Author: Miquel Campos hello@miquel-campos.com www.miquel-campos.com -# Date: 2016 / 10 / 10 - import mgear.maya.pyqt as gqt -QtGui, QtCore, QtWidgets, wrapInstance = gqt.qt_import() +from mgear.vendor.Qt import QtCore, QtWidgets class Ui_Form(object): + def setupUi(self, Form): Form.setObjectName("Form") - Form.resize(280, 525) + Form.resize(283, 472) self.gridLayout = QtWidgets.QGridLayout(Form) self.gridLayout.setObjectName("gridLayout") self.groupBox = QtWidgets.QGroupBox(Form) @@ -50,6 +25,9 @@ def setupUi(self, Form): self.neutralRotation_checkBox = QtWidgets.QCheckBox(self.groupBox) self.neutralRotation_checkBox.setObjectName("neutralRotation_checkBox") self.verticalLayout_4.addWidget(self.neutralRotation_checkBox) + self.mirrorBehaviour_checkBox = QtWidgets.QCheckBox(self.groupBox) + self.mirrorBehaviour_checkBox.setObjectName("mirrorBehaviour_checkBox") + self.verticalLayout_4.addWidget(self.mirrorBehaviour_checkBox) self.horizontalLayout_3 = QtWidgets.QHBoxLayout() self.horizontalLayout_3.setObjectName("horizontalLayout_3") self.ctlSize_label = QtWidgets.QLabel(self.groupBox) @@ -122,7 +100,7 @@ def setupUi(self, Form): self.tz_checkBox = QtWidgets.QCheckBox(self.keyable_groupBox) self.tz_checkBox.setObjectName("tz_checkBox") self.verticalLayout.addWidget(self.tz_checkBox) - spacerItem = QtWidgets.QSpacerItem(20, 40, QtWidgets.QSizePolicy.Minimum, QtWidgets.QSizePolicy.Expanding) + spacerItem = QtWidgets.QSpacerItem(20, 40, QtWidgets.QSizePolicy.Minimum, QtWidgets.QSizePolicy.Minimum) self.verticalLayout.addItem(spacerItem) self.horizontalLayout.addLayout(self.verticalLayout) self.verticalLayout_2 = QtWidgets.QVBoxLayout() @@ -154,7 +132,6 @@ def setupUi(self, Form): self.verticalLayout_2.addWidget(self.ro_comboBox) self.horizontalLayout.addLayout(self.verticalLayout_2) self.verticalLayout_3 = QtWidgets.QVBoxLayout() - self.verticalLayout_3.setSizeConstraint(QtWidgets.QLayout.SetMinAndMaxSize) self.verticalLayout_3.setObjectName("verticalLayout_3") self.scale_pushButton = QtWidgets.QPushButton(self.keyable_groupBox) self.scale_pushButton.setObjectName("scale_pushButton") @@ -168,7 +145,7 @@ def setupUi(self, Form): self.sz_checkBox = QtWidgets.QCheckBox(self.keyable_groupBox) self.sz_checkBox.setObjectName("sz_checkBox") self.verticalLayout_3.addWidget(self.sz_checkBox) - spacerItem1 = QtWidgets.QSpacerItem(20, 40, QtWidgets.QSizePolicy.Minimum, QtWidgets.QSizePolicy.Expanding) + spacerItem1 = QtWidgets.QSpacerItem(20, 40, QtWidgets.QSizePolicy.Minimum, QtWidgets.QSizePolicy.Minimum) self.verticalLayout_3.addItem(spacerItem1) self.horizontalLayout.addLayout(self.verticalLayout_3) self.gridLayout_4.addLayout(self.horizontalLayout, 0, 0, 1, 1) @@ -222,7 +199,10 @@ def retranslateUi(self, Form): Form.setWindowTitle(gqt.fakeTranslate("Form", "Form", None, -1)) self.joint_checkBox.setText(gqt.fakeTranslate("Form", "Joint", None, -1)) self.uniScale_checkBox.setText(gqt.fakeTranslate("Form", "Uniform Scale", None, -1)) + self.neutralRotation_checkBox.setToolTip(gqt.fakeTranslate("Form", "

If is active, it will align the control with world space

", None, -1)) self.neutralRotation_checkBox.setText(gqt.fakeTranslate("Form", "World Space Orientation Align", None, -1)) + self.mirrorBehaviour_checkBox.setToolTip(gqt.fakeTranslate("Form", "

If is active, the control will have symmetrical behaviour on Left and Right side.


WARNING: There is a bug in Maya 2018 and 2018.1 that will result in an incorrect behaviour, because this option will negate one of the axis. Other Maya version should be ok.

", None, -1)) + self.mirrorBehaviour_checkBox.setText(gqt.fakeTranslate("Form", "Mirror Behaviour L and R", None, -1)) self.ctlSize_label.setText(gqt.fakeTranslate("Form", "Ctl Size", None, -1)) self.controlShape_comboBox.setItemText(0, gqt.fakeTranslate("Form", "Arrow", None, -1)) self.controlShape_comboBox.setItemText(1, gqt.fakeTranslate("Form", "Circle", None, -1)) @@ -261,4 +241,3 @@ def retranslateUi(self, Form): self.ikRefArray_groupBox.setTitle(gqt.fakeTranslate("Form", "IK Reference Array", None, -1)) self.ikRefArrayAdd_pushButton.setText(gqt.fakeTranslate("Form", "<<", None, -1)) self.ikRefArrayRemove_pushButton.setText(gqt.fakeTranslate("Form", ">>", None, -1)) - diff --git a/scripts/mgear/maya/shifter/component/control_01/settingsUI.ui b/scripts/mgear/maya/shifter/component/control_01/settingsUI.ui index 701e0db..14e31ff 100644 --- a/scripts/mgear/maya/shifter/component/control_01/settingsUI.ui +++ b/scripts/mgear/maya/shifter/component/control_01/settingsUI.ui @@ -6,8 +6,8 @@ 0 0 - 280 - 525 + 283 + 472 @@ -38,11 +38,24 @@
+ + <html><head/><body><p>If is active, it will align the control with world space</p></body></html> + World Space Orientation Align + + + + <html><head/><body><p>If is active, the control will have symmetrical behaviour on Left and Right side.</p><p><br/></p><p>WARNING: There is a bug in Maya 2018 and 2018.1 that will result in an incorrect behaviour, because this option will negate one of the axis. Other Maya version should be ok.</p></body></html> + + + Mirror Behaviour L and R + + + @@ -224,6 +237,9 @@ Qt::Vertical + + QSizePolicy::Minimum + 20 @@ -312,9 +328,6 @@ - - QLayout::SetMinAndMaxSize - @@ -348,6 +361,9 @@ Qt::Vertical + + QSizePolicy::Minimum + 20 diff --git a/scripts/mgear/maya/shifter/component/control_02/__init__.py b/scripts/mgear/maya/shifter/component/control_02/__init__.py deleted file mode 100644 index 2755e7c..0000000 --- a/scripts/mgear/maya/shifter/component/control_02/__init__.py +++ /dev/null @@ -1,115 +0,0 @@ -# MGEAR is under the terms of the MIT License - -# Copyright (c) 2016 Jeremie Passerin, Miquel Campos - -# Permission is hereby granted, free of charge, to any person obtaining a copy -# of this software and associated documentation files (the "Software"), to deal -# in the Software without restriction, including without limitation the rights -# to use, copy, modify, merge, publish, distribute, sublicense, and/or sell -# copies of the Software, and to permit persons to whom the Software is -# furnished to do so, subject to the following conditions: - -# The above copyright notice and this permission notice shall be included in all -# copies or substantial portions of the Software. - -# THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR -# IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, -# FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE -# AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER -# LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, -# OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE -# SOFTWARE. - -# Author: Jeremie Passerin geerem@hotmail.com www.jeremiepasserin.com -# Author: Miquel Campos hello@miquel-campos.com www.miquel-campos.com -# Date: 2016 / 10 / 10 - -############################################# -# GLOBAL -############################################# -# mgear -from mgear.maya.shifter.component import MainComponent - -import mgear.maya.primitive as pri -import mgear.maya.transform as tra -import mgear.maya.attribute as att -import mgear.maya.vector as vec - - -############################################# -# COMPONENT -############################################# -class Component(MainComponent): - - def addObjects(self): - # self.length0 = vec.getDistance(self.guide.apos[0], self.guide.apos[1]) - - if self.settings["neutralRotation"]: - t = tra.getTransformFromPos(self.guide.pos["root"]) - else: - t = self.guide.tra["root"] - if self.settings["mirrorBehaviour"] and self.negate: - scl=[1,1,-1] - else: - scl=[1,1,1] - t = tra.setMatrixScale(t, scl) - self.ik_cns = pri.addTransform(self.root, self.getName("ik_cns"), t) - - self.ctl = self.addCtl( self.ik_cns, - "ctl", - t, - self.color_ik, - self.settings["icon"], - w=self.settings["ctlSize"]*self.size, - h=self.settings["ctlSize"]*self.size, - d=self.settings["ctlSize"]*self.size, - tp=self.parentCtlTag) - - #we need to set the rotation order before lock any rotation axis - if self.settings["k_ro"]: - rotOderList = ["XYZ", "YZX", "ZXY", "XZY", "YXZ", "ZYX"] - att.setRotOrder(self.ctl, rotOderList[self.settings["default_rotorder"]]) - - params = [ s for s in ["tx", "ty", "tz", "ro", "rx", "ry", "rz", "sx", "sy", "sz"] if self.settings["k_"+s] ] - att.setKeyableAttributes(self.ctl, params) - - if self.settings["joint"]: - self.jnt_pos.append([self.ctl, 0, None, self.settings["uniScale"]]) - - - def addAttributes(self): - # Ref - if self.settings["ikrefarray"]: - ref_names = self.settings["ikrefarray"].split(",") - if len(ref_names) > 1: - self.ikref_att = self.addAnimEnumParam("ikref", "Ik Ref", 0, self.settings["ikrefarray"].split(",")) - - - def addOperators(self): - return - - # ===================================================== - # CONNECTOR - # ===================================================== - ## Set the relation beetween object from guide to rig.\n - # @param self - def setRelation(self): - self.relatives["root"] = self.ctl - self.controlRelatives["root"] = self.ctl - if self.settings["joint"]: - self.jointRelatives["root"] = 0 - - - # @param self - def addConnection(self): - self.connections["standard"] = self.connect_standard - self.connections["orientation"] = self.connect_orientation - - - ## standard connection definition. - # @param self - def connect_standard(self): - self.connect_standardWithSimpleIkRef() - - def connect_orientation(self): - self.connect_orientCns() diff --git a/scripts/mgear/maya/shifter/component/control_02/guide.py b/scripts/mgear/maya/shifter/component/control_02/guide.py deleted file mode 100644 index 01d46d3..0000000 --- a/scripts/mgear/maya/shifter/component/control_02/guide.py +++ /dev/null @@ -1,234 +0,0 @@ -# MGEAR is under the terms of the MIT License - -# Copyright (c) 2016 Jeremie Passerin, Miquel Campos - -# Permission is hereby granted, free of charge, to any person obtaining a copy -# of this software and associated documentation files (the "Software"), to deal -# in the Software without restriction, including without limitation the rights -# to use, copy, modify, merge, publish, distribute, sublicense, and/or sell -# copies of the Software, and to permit persons to whom the Software is -# furnished to do so, subject to the following conditions: - -# The above copyright notice and this permission notice shall be included in all -# copies or substantial portions of the Software. - -# THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR -# IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, -# FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE -# AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER -# LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, -# OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE -# SOFTWARE. - -# Author: Jeremie Passerin geerem@hotmail.com www.jeremiepasserin.com -# Author: Miquel Campos hello@miquel-campos.com www.miquel-campos.com -# Date: 2016 / 10 / 10 - -############################################# -# GLOBAL -############################################# -from functools import partial - -import pymel.core as pm -# mgear -import mgear.maya.transform as tra -from mgear.maya.shifter.component.guide import ComponentGuide - -#Pyside -from mgear.maya.shifter.component.guide import componentMainSettings -import mgear.maya.pyqt as gqt -from maya.app.general.mayaMixin import MayaQWidgetDockableMixin -from maya.app.general.mayaMixin import MayaQDockWidget -import settingsUI as sui -QtGui, QtCore, QtWidgets, wrapInstance = gqt.qt_import() - - -# guide info -AUTHOR = "Jeremie Passerin, Miquel Campos" -URL = "www.jeremiepasserin.com, www.miquel-campos.com" -EMAIL = "geerem@hotmail.com, hello@miquel-campos.com" -VERSION = [1,2,0] -TYPE = "control_02" -NAME = "control" -DESCRIPTION = "WIP. MAYA 2018.1 have a bug that break the behaviour with negative scale: Simple controler with space switch and Rot order selection. \nThis component can full mirror behaviour for L and R" -########################################################## -# CLASS -########################################################## -class Guide(ComponentGuide): - - compType = TYPE - compName = NAME - description = DESCRIPTION - - author = AUTHOR - url = URL - email = EMAIL - version = VERSION - - # ===================================================== - ## - # @param self - def postInit(self): - self.save_transform = ["root", "sizeRef"] - - # ===================================================== - ## Add more object to the object definition list. - # @param self - def addObjects(self): - - self.root = self.addRoot() - vTemp = tra.getOffsetPosition( self.root, [0,0,1]) - self.sizeRef = self.addLoc("sizeRef", self.root, vTemp) - # self.sizeRef.visibility.set(False) - pm.delete(self.sizeRef.getShapes()) - - - - # ===================================================== - ## Add more parameter to the parameter definition list. - # @param self - def addParameters(self): - - - self.pIcon = self.addParam("icon", "string", "cube") - - self.pIkRefArray = self.addParam("ikrefarray", "string", "") - - self.pJoint = self.addParam("joint", "bool", False) - self.pJoint = self.addParam("uniScale", "bool", True) - - for s in ["tx", "ty", "tz", "ro", "rx", "ry", "rz", "sx", "sy", "sz"]: - self.addParam("k_"+s, "bool", True) - - self.pDefault_RotOrder = self.addParam("default_rotorder", "long", 0, 0, 5) - self.pNeutralRotation = self.addParam("neutralRotation", "bool", True) - self.pMirrorBehaviour = self.addParam("mirrorBehaviour", "bool", False) - self.pCtlSize = self.addParam("ctlSize", "double", 1 , None, None) - self.pUseIndex = self.addParam("useIndex", "bool", False) - self.pParentJointIndex = self.addParam("parentJointIndex", "long", -1, None, None) - - return - -########################################################## -# Setting Page -########################################################## - -class settingsTab(QtWidgets.QDialog, sui.Ui_Form): - - def __init__(self, parent=None): - super(settingsTab, self).__init__(parent) - self.setupUi(self) - - -class componentSettings(MayaQWidgetDockableMixin, componentMainSettings): - - def __init__(self, parent = None): - self.toolName = TYPE - # Delete old instances of the componet settings window. - gqt.deleteInstances(self, MayaQDockWidget) - self.iconsList = ['arrow', 'circle', 'compas', 'cross', 'crossarrow', 'cube', 'cubewithpeak', 'cylinder', 'diamond', 'flower', 'null', 'pyramid', 'sphere', 'square'] - - - super(self.__class__, self).__init__(parent = parent) - self.settingsTab = settingsTab() - - - self.setup_componentSettingWindow() - self.create_componentControls() - self.populate_componentControls() - self.create_componentLayout() - self.create_componentConnections() - - def setup_componentSettingWindow(self): - self.mayaMainWindow = gqt.maya_main_window() - - self.setObjectName(self.toolName) - self.setWindowFlags(QtCore.Qt.Window) - self.setWindowTitle(TYPE) - self.resize(280, 520) - - def create_componentControls(self): - return - - - def populate_componentControls(self): - """ - Populate the controls values from the custom attributes of the component. - - """ - #populate tab - self.tabs.insertTab(1, self.settingsTab, "Component Settings") - - #populate component settings - - self.populateCheck(self.settingsTab.joint_checkBox, "joint") - self.populateCheck(self.settingsTab.uniScale_checkBox, "uniScale") - self.populateCheck(self.settingsTab.neutralRotation_checkBox, "neutralRotation") - self.populateCheck(self.settingsTab.mirrorBehaviour_checkBox, "mirrorBehaviour") - self.settingsTab.ctlSize_doubleSpinBox.setValue(self.root.attr("ctlSize").get()) - sideIndex = self.iconsList.index(self.root.attr("icon").get()) - self.settingsTab.controlShape_comboBox.setCurrentIndex(sideIndex) - - self.populateCheck(self.settingsTab.tx_checkBox, "k_tx") - self.populateCheck(self.settingsTab.ty_checkBox, "k_ty") - self.populateCheck(self.settingsTab.tz_checkBox, "k_tz") - self.populateCheck(self.settingsTab.rx_checkBox, "k_rx") - self.populateCheck(self.settingsTab.ry_checkBox, "k_ry") - self.populateCheck(self.settingsTab.rz_checkBox, "k_rz") - self.populateCheck(self.settingsTab.ro_checkBox, "k_ro") - self.populateCheck(self.settingsTab.sx_checkBox, "k_sx") - self.populateCheck(self.settingsTab.sy_checkBox, "k_sy") - self.populateCheck(self.settingsTab.sz_checkBox, "k_sz") - - self.settingsTab.ro_comboBox.setCurrentIndex(self.root.attr("default_rotorder").get()) - - ikRefArrayItems = self.root.attr("ikrefarray").get().split(",") - for item in ikRefArrayItems: - self.settingsTab.ikRefArray_listWidget.addItem(item) - - - def create_componentLayout(self): - - self.settings_layout = QtWidgets.QVBoxLayout() - self.settings_layout.addWidget(self.tabs) - self.settings_layout.addWidget(self.close_button) - - self.setLayout(self.settings_layout) - - def create_componentConnections(self): - - self.settingsTab.joint_checkBox.stateChanged.connect(partial(self.updateCheck, self.settingsTab.joint_checkBox, "joint")) - self.settingsTab.uniScale_checkBox.stateChanged.connect(partial(self.updateCheck, self.settingsTab.uniScale_checkBox, "uniScale")) - self.settingsTab.neutralRotation_checkBox.stateChanged.connect(partial(self.updateCheck, self.settingsTab.neutralRotation_checkBox, "neutralRotation")) - self.settingsTab.mirrorBehaviour_checkBox.stateChanged.connect(partial(self.updateCheck, self.settingsTab.mirrorBehaviour_checkBox, "mirrorBehaviour")) - self.settingsTab.ctlSize_doubleSpinBox.valueChanged.connect(partial(self.updateSpinBox, self.settingsTab.ctlSize_doubleSpinBox, "ctlSize")) - self.settingsTab.controlShape_comboBox.currentIndexChanged.connect(partial(self.updateControlShape, self.settingsTab.controlShape_comboBox, self.iconsList, "icon")) - - self.settingsTab.tx_checkBox.stateChanged.connect(partial(self.updateCheck, self.settingsTab.tx_checkBox, "k_tx")) - self.settingsTab.ty_checkBox.stateChanged.connect(partial(self.updateCheck, self.settingsTab.ty_checkBox, "k_ty")) - self.settingsTab.tz_checkBox.stateChanged.connect(partial(self.updateCheck, self.settingsTab.tz_checkBox, "k_tz")) - self.settingsTab.rx_checkBox.stateChanged.connect(partial(self.updateCheck, self.settingsTab.rx_checkBox, "k_rx")) - self.settingsTab.ry_checkBox.stateChanged.connect(partial(self.updateCheck, self.settingsTab.ry_checkBox, "k_ry")) - self.settingsTab.rz_checkBox.stateChanged.connect(partial(self.updateCheck, self.settingsTab.rz_checkBox, "k_rz")) - self.settingsTab.ro_checkBox.stateChanged.connect(partial(self.updateCheck, self.settingsTab.ro_checkBox, "k_ro")) - self.settingsTab.sx_checkBox.stateChanged.connect(partial(self.updateCheck, self.settingsTab.sx_checkBox, "k_sx")) - self.settingsTab.sy_checkBox.stateChanged.connect(partial(self.updateCheck, self.settingsTab.sy_checkBox, "k_sy")) - self.settingsTab.sz_checkBox.stateChanged.connect(partial(self.updateCheck, self.settingsTab.sz_checkBox, "k_sz")) - - self.settingsTab.ro_comboBox.currentIndexChanged.connect(partial(self.updateComboBox, self.settingsTab.ro_comboBox, "default_rotorder")) - - self.settingsTab.ikRefArrayAdd_pushButton.clicked.connect(partial(self.addItem2listWidget, self.settingsTab.ikRefArray_listWidget, "ikrefarray")) - self.settingsTab.ikRefArrayRemove_pushButton.clicked.connect(partial(self.removeSelectedFromListWidget, self.settingsTab.ikRefArray_listWidget, "ikrefarray")) - self.settingsTab.ikRefArray_listWidget.installEventFilter(self) - - def eventFilter(self, sender, event): - if event.type() == QtCore.QEvent.ChildRemoved: - if sender == self.settingsTab.ikRefArray_listWidget: - self.updateListAttr(sender, "ikrefarray") - return True - else: - return QtWidgets.QDialog.eventFilter(self, sender, event) - - - def dockCloseEventTriggered(self): - gqt.deleteInstances(self, MayaQDockWidget) diff --git a/scripts/mgear/maya/shifter/component/control_02/icon.jpg b/scripts/mgear/maya/shifter/component/control_02/icon.jpg deleted file mode 100644 index 21cbc0fbacd9d6b0fac77c0a20322e755e98b6a1..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1764 zcma)6dolj4 zuMmyrK?>&*<$5HM%F)Z4B&W{YIqRO){r7zK+H39g`Rx5!`=7l<&qQ+o>tKJ>9zZYv zXyO2(MS!zop9zfz5I}&xNFZ7U($=)d06L&`iy25X4LAV$=Yahm@bCD090oyRRh-|2 ze_DvT0S*K7fF2ye0T>Q~;~>#Pzy(0;2N$pT9ViJ&BpL?CKw!PPNsa(+)6EelHe(6jej7-mNfhphx+AM4kp)$I z#Bg8E7!HrO-Od|>Z?D4**q;5hgZc*bgXCfD$D4XSdHj+{^Kxg;;l28O z&&bpMI-W4ZKr@4agRSO|-)*8b zutxk&FC?Cgt@c>a8t|40D$B03v5w(+?a#{OaSM{TZcqH_HFh5AFRIwo0u$Uv&Zs{6 z=K{pd5X-d&)63zzM;@Fm}3@P0OhoU>!3 zHE)m-usu7KA2Ir(!~Lmkx_|-eA{=gu*p3-C6TV+jfmr0XCj<%S@9w0_r05R+IhJUp zuu(m)_tM_4gBrGuY0Wc$^Pkl3b2ymAJUoy=cAzNhnD%{=>$z9oG9BADw>6ugyThpW z|FC%Ui*v%c+7)iBmscx!qN_sAChd>wm#h?nRc0%k>RC0~d54+m1{vDgX<)CUIVNHbI>wOeHx%5xgrvaSSKH`>N@0c&vvlCnR(>vW2wD4eiP)XcbYM0m9{yZ& zESWkXpzkED1#+rJOzPXOS63e-OlVx&46Bk#s!h|(IewW=zgcGNVymhHtGdy8$dHeB zbL?7qT)rN>H#w}|Qng$87T)_%&=Dn!*{Yh-gPptDVS7HylGyjItaqQ0O3I~rTN|nG zV&zh5wJ^p*+6(pPIPcm@p8Zm?Cz3rz9eYv0GP1x=ygQ^>p`oE9r1fO|Yj5mjM+@Ix z-q8Zc=ooSq7KY9)!iD=>TZ(=yy!y2H7B9%00=va?P16t7Mm_4JHjMU!M!oYKeS5&R z>0%T9C`0iOFe_}4WL`5o38igFIhT)P?L&*|#n*hQ)%~?TyESuYGukXDxMi}zwSkG* z_dY9&mBv==q^&hpm^nZ-+LS70&F;xa8t<(1H)#B>R54$+Llc#4WHfGch!kVc7k82JVa;E$NQd!8Cd;cNX zp+oF^8$Uu6lN!d_?&0Z|^ACPZ#InvOlbm$d!nIGc2)(l1@!G?FtL?^LyQnx4WjS zKDAXSC%{~~KZN&p3Q9*E|JC#ST4^j>C%NfiP1jUy~t3ES6Q{2IM%9v(@ohJWht zd->z`mygqI5pXE7tWC-s_s5Dr(Y!P>", None, -1)) - diff --git a/scripts/mgear/maya/shifter/component/control_02/settingsUI.ui b/scripts/mgear/maya/shifter/component/control_02/settingsUI.ui deleted file mode 100644 index c8fca52..0000000 --- a/scripts/mgear/maya/shifter/component/control_02/settingsUI.ui +++ /dev/null @@ -1,793 +0,0 @@ - - - Form - - - - 0 - 0 - 305 - 651 - - - - Form - - - - - - - - - - - - - - Joint - - - - - - - Uniform Scale - - - - - - - World Space Orientation Align - - - - - - - Mirror Behaviour L and R - - - - - - - Keyable - - - - - - - - QLayout::SetMinimumSize - - - - - Translate - - - - - - - tx - - - - - - - ty - - - - - - - tz - - - - - - - Qt::Vertical - - - - 20 - 40 - - - - - - - - - - QLayout::SetMinimumSize - - - - - Rotate - - - - - - - rx - - - - - - - ry - - - - - - - rz - - - - - - - ro - - - - - - - - XYZ - - - - - YZX - - - - - ZXY - - - - - XZY - - - - - YXZ - - - - - ZYX - - - - - - - - - - QLayout::SetMinAndMaxSize - - - - - Scale - - - - - - - sx - - - - - - - sy - - - - - - - sz - - - - - - - Qt::Vertical - - - - 20 - 40 - - - - - - - - - - - - - - - - - Ctl Size - - - - - - - - 0 - 0 - - - - false - - - Qt::AlignCenter - - - QAbstractSpinBox::PlusMinus - - - 0.010000000000000 - - - 200.000000000000000 - - - 1.000000000000000 - - - - - - - - - - - Control Shape - - - - - - - - 0 - 0 - - - - - Arrow - - - - - Circle - - - - - Compas - - - - - Cross - - - - - Crossarrow - - - - - Cube - - - - - Cubewithpeak - - - - - Cylinder - - - - - Diamond - - - - - Flower - - - - - Null - - - - - Pyramid - - - - - Sphere - - - - - Square - - - - - - - - - - - - - - - Keyable - - - - - - - - QLayout::SetMinimumSize - - - - - Translate - - - - - - - tx - - - - - - - ty - - - - - - - tz - - - - - - - Qt::Vertical - - - - 20 - 40 - - - - - - - - - - QLayout::SetMinimumSize - - - - - Rotate - - - - - - - rx - - - - - - - ry - - - - - - - rz - - - - - - - ro - - - - - - - - XYZ - - - - - YZX - - - - - ZXY - - - - - XZY - - - - - YXZ - - - - - ZYX - - - - - - - - - - QLayout::SetMinAndMaxSize - - - - - Scale - - - - - - - sx - - - - - - - sy - - - - - - - sz - - - - - - - Qt::Vertical - - - - 20 - 40 - - - - - - - - - - - - - - - IK Reference Array - - - - - - - - - - true - - - QAbstractItemView::InternalMove - - - Qt::MoveAction - - - true - - - QAbstractItemView::ExtendedSelection - - - false - - - - - - - - - - - << - - - - - - - >> - - - - - - - Qt::Vertical - - - - 20 - 40 - - - - - - - - - - - - - - - - - translate_pushButton - clicked() - tz_checkBox - toggle() - - - 46 - 114 - - - 21 - 193 - - - - - translate_pushButton - clicked() - ty_checkBox - toggle() - - - 20 - 120 - - - 13 - 165 - - - - - translate_pushButton - clicked() - tx_checkBox - toggle() - - - 68 - 117 - - - 14 - 143 - - - - - rotate_pushButton - clicked() - rx_checkBox - toggle() - - - 116 - 120 - - - 97 - 144 - - - - - rotate_pushButton - clicked() - ry_checkBox - toggle() - - - 134 - 122 - - - 118 - 168 - - - - - rotate_pushButton - clicked() - rz_checkBox - toggle() - - - 145 - 121 - - - 104 - 189 - - - - - rotate_pushButton - clicked() - ro_checkBox - toggle() - - - 151 - 117 - - - 128 - 219 - - - - - scale_pushButton - clicked() - sx_checkBox - toggle() - - - 213 - 113 - - - 196 - 150 - - - - - scale_pushButton - clicked() - sy_checkBox - toggle() - - - 220 - 121 - - - 210 - 176 - - - - - scale_pushButton - clicked() - sz_checkBox - toggle() - - - 227 - 110 - - - 223 - 192 - - - - - From 89c52f37ddfa1f6c72efd41bff0cebb16cdd8b21 Mon Sep 17 00:00:00 2001 From: miquelcampos Date: Mon, 4 Dec 2017 11:20:15 +0900 Subject: [PATCH 119/134] Shifter: leg 2 jnt freetangent PEP8 fix --- .../shifter/component/leg_2jnt_freeTangents_01/__init__.py | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/scripts/mgear/maya/shifter/component/leg_2jnt_freeTangents_01/__init__.py b/scripts/mgear/maya/shifter/component/leg_2jnt_freeTangents_01/__init__.py index 7a44b04..0f1d802 100644 --- a/scripts/mgear/maya/shifter/component/leg_2jnt_freeTangents_01/__init__.py +++ b/scripts/mgear/maya/shifter/component/leg_2jnt_freeTangents_01/__init__.py @@ -660,7 +660,8 @@ def addOperators(self): self.legChainUpvRef, "ikSCsolver") pm.pointConstraint(self.ik_ctl, self.ikHandleUpvRef) - pm.parentConstraint(self.legChainUpvRef[0], self.ik_ctl, self.upv_cns, mo=True) + pm.parentConstraint( + self.legChainUpvRef[0], self.ik_ctl, self.upv_cns, mo=True) # Visibilities ------------------------------------- # shape.dispGeometry From dad98ddf67577010571f4085879f16965be87c33 Mon Sep 17 00:00:00 2001 From: miquelcampos Date: Mon, 4 Dec 2017 13:02:41 +0900 Subject: [PATCH 120/134] mGear: Attribute: new functions to work with default values. Closes #84 --- scripts/mGear_menu.py | 5 +- scripts/mgear/maya/attribute.py | 92 ++++++++++++++++++++++++++++- scripts/mgear/maya/rigbits/utils.py | 10 +--- 3 files changed, 95 insertions(+), 12 deletions(-) diff --git a/scripts/mGear_menu.py b/scripts/mGear_menu.py index 2b45dad..9cd2acf 100644 --- a/scripts/mGear_menu.py +++ b/scripts/mGear_menu.py @@ -7,7 +7,7 @@ import mgear -from mgear.maya import synoptic, skin, simpleRig, rigbits +from mgear.maya import synoptic, skin, simpleRig, rigbits, attribute from mgear.maya.rigbits import ( postSpring, rope, @@ -199,6 +199,9 @@ def createMenu(): pm.menuItem(label="Characterize Biped", command=characterizeBiped) pm.menuItem(label="Bake Mocap Biped", command=bakeMocap) + pm.menuItem(divider=True) + pm.menuItem(label="Smart Reset Attribute/SRT", + command=attribute.smart_reset) # util Tools pm.setParent(mGearM, menu=True) diff --git a/scripts/mgear/maya/attribute.py b/scripts/mgear/maya/attribute.py index 2788efa..f131a2f 100644 --- a/scripts/mgear/maya/attribute.py +++ b/scripts/mgear/maya/attribute.py @@ -6,6 +6,7 @@ import collections import mgear import pymel.core as pm +import maya.cmds as cmds import pymel.core.datatypes as datatypes @@ -508,8 +509,8 @@ def setRotOrder(node, s="XYZ"): # So let's do it manually using the EulerRotation class er = datatypes.EulerRotation([pm.getAttr(node + ".rx"), - pm.getAttr(node + ".ry"), - pm.getAttr(node + ".rz")], + pm.getAttr(node + ".ry"), + pm.getAttr(node + ".rz")], unit="degrees") er.reorderIt(s) @@ -650,6 +651,7 @@ class ParamDef2(ParamDef): ParamDef: The stored parameter definition. """ + def __init__(self, scriptName, valueType, @@ -686,6 +688,7 @@ class FCurveParamDef(ParamDef): extrapolation (int): the curve extrapolation. """ + def __init__(self, scriptName, keys=None, @@ -730,6 +733,7 @@ class colorParamDef(ParamDef): exp [1.0, 0.99, 0.13]. """ + def __init__(self, scriptName, value=False): self.scriptName = scriptName @@ -756,6 +760,7 @@ class enumParamDef(ParamDef): value (int): The default value. """ + def __init__(self, scriptName, enum, value=False): self.scriptName = scriptName @@ -776,10 +781,91 @@ def create(self, node): return node, attr_name +########################################################## +# Default Values functions +########################################################## + +def get_default_value(node, attribute): + """Get the default attribute value + + Args: + node (str, PyNode): The object with the attribute + attribute (str): The attribute to get the value + + Returns: + variant: The attribute value + """ + return pm.attributeQuery(attribute, + node=node, + listDefault=True)[0] + + +def set_default_value(node, attribute): + """Set the default value to the attribute + + Args: + node (str, PyNode): The object with the attribute to reset + attribute (str): The attribute to reset + """ + if not isinstance(node, pm.PyNode): + node = pm.PyNode(node) + + defVal = get_default_value(node, attribute) + try: + node.attr(attribute).set(defVal) + except RuntimeError: + pass + + +def reset_selected_channels_value(objects=None, attributes=None): + """Reset the the selected channels if not attribute is provided + + Args: + objects (None, optional): The objects to reset the channels + attribute (list, optional): The attribute to reset + """ + if not objects: + objects = cmds.ls(selection=True) + if not attributes: + attributes = getSelectedChannels() + + for obj in objects: + for attr in attributes: + set_default_value(obj, attr) + + +def reset_SRT(objects=None, + attributes=["tx", "ty", "tz", + "rx", "ry", "rz", + "sx", "sy", "sz", + "v"]): + """Reset Scale Rotation and translation attributes to default value + + Args: + objects (None, optional): The objects to reset the channels + attribute (list): The attribute to reset + """ + reset_selected_channels_value(objects, attributes) + + +def smart_reset(*args): + """Reset the SRT or the selected channels + + Checks first if we have channels selected. If not, will try to reset SRT + + Args: + *args: Dummy + """ + attributes = getSelectedChannels() + if attributes: + reset_selected_channels_value(objects=None, attributes=attributes) + else: + reset_SRT() + ########################################################## # GETTERS ########################################################## -# ======================================================== + def getSelectedChannels(userDefine=False): """Get the selected channels on the channel box diff --git a/scripts/mgear/maya/rigbits/utils.py b/scripts/mgear/maya/rigbits/utils.py index e6fedd3..3c715fa 100644 --- a/scripts/mgear/maya/rigbits/utils.py +++ b/scripts/mgear/maya/rigbits/utils.py @@ -130,14 +130,8 @@ def resetSRT(oColl): # maximize Maya window rCmd = ''' -import maya.cmds as cmds -import maya.mel as mel -gMainWindow = mel.eval('$temp1=$gMainWindow') -acti = cmds.window( gMainWindow, q=True, titleBar=True ) -if acti: - cmds.window( gMainWindow, e=True, titleBar=False ) -else: - cmds.window( gMainWindow, e=True, titleBar=True ) +from mgear.maya import attribute +attribute.smart_reset() ''' createRunTimeCommand("mGear_maximizeMaya", rCmd, ann="") From 5b62ce4cdb190a6d50ee7a6f0507ddcb12b6354b Mon Sep 17 00:00:00 2001 From: miquelcampos Date: Mon, 4 Dec 2017 13:05:03 +0900 Subject: [PATCH 121/134] Rigbits: Channel wrangler: fix PEP8 --- scripts/mgear/maya/rigbits/channelWrangler.py | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/scripts/mgear/maya/rigbits/channelWrangler.py b/scripts/mgear/maya/rigbits/channelWrangler.py index 46c9d7d..4571aa8 100644 --- a/scripts/mgear/maya/rigbits/channelWrangler.py +++ b/scripts/mgear/maya/rigbits/channelWrangler.py @@ -200,7 +200,8 @@ def _addNewRow(self, channel=None, source=None, target=None): operation_comboBox.setObjectName("operation") operation_comboBox.addItem("Move Channel") operation_comboBox.addItem("Proxy Channel") - operation_comboBox.SizeAdjustPolicy(QtWidgets.QComboBox.AdjustToContentsOnFirstShow) + operation_comboBox.SizeAdjustPolicy( + QtWidgets.QComboBox.AdjustToContentsOnFirstShow) self.table.setCellWidget(rowPosition, 4, operation_comboBox) return rowPosition From e61933bc8f8e325418dbe53f559fd3f4f6be7289 Mon Sep 17 00:00:00 2001 From: miquelcampos Date: Mon, 4 Dec 2017 13:13:58 +0900 Subject: [PATCH 122/134] Shifter: Connect Ctl_vis. Fixes #103 --- scripts/mgear/maya/shifter/__init__.py | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/scripts/mgear/maya/shifter/__init__.py b/scripts/mgear/maya/shifter/__init__.py index 1b1eae9..0ef3c4d 100644 --- a/scripts/mgear/maya/shifter/__init__.py +++ b/scripts/mgear/maya/shifter/__init__.py @@ -246,6 +246,10 @@ def initialHierarchy(self): self.rigGroups = self.model.addAttr("rigGroups", at='message', m=1) self.rigPoses = self.model.addAttr("rigPoses", at='message', m=1) + # Connect global visibility + pm.connectAttr(self.ctlVis_att, self.global_ctl.attr("visibility")) + attribute.lockAttribute(self.global_ctl, ['v']) + # -------------------------------------------------- # Basic set of null if self.options["joint_rig"]: From b1f0283fb83fce25c2db0cf7b219b257510e27dc Mon Sep 17 00:00:00 2001 From: miquelcampos Date: Mon, 4 Dec 2017 13:40:27 +0900 Subject: [PATCH 123/134] Shifter: Arms auto upvector and shoulder space jump. Fixes #85 --- scripts/mgear/maya/shifter/component/arm_2jnt_01/__init__.py | 4 ++-- .../shifter/component/arm_2jnt_freeTangents_01/__init__.py | 2 +- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/scripts/mgear/maya/shifter/component/arm_2jnt_01/__init__.py b/scripts/mgear/maya/shifter/component/arm_2jnt_01/__init__.py index 17e9d1e..b56fa83 100644 --- a/scripts/mgear/maya/shifter/component/arm_2jnt_01/__init__.py +++ b/scripts/mgear/maya/shifter/component/arm_2jnt_01/__init__.py @@ -551,7 +551,7 @@ def addOperators(self): # 1 bone chain Upv ref ============================================== self.ikHandleUpvRef = primitive.addIkHandle( self.root, - self.getName("ikHandleLegChainUpvRef"), + self.getName("ikHandleArmChainUpvRef"), self.armChainUpvRef, "ikSCsolver") pm.pointConstraint(self.ik_ctl, @@ -806,4 +806,4 @@ def connect_standard(self): def connect_shoulder_01(self): """ Custom connection to be use with shoulder 01 component""" self.connect_standard() - pm.parent(self.rollRef[0], self.parent_comp.ctl) + pm.parent(self.rollRef[0], self.ikHandleUpvRef, self.parent_comp.ctl) diff --git a/scripts/mgear/maya/shifter/component/arm_2jnt_freeTangents_01/__init__.py b/scripts/mgear/maya/shifter/component/arm_2jnt_freeTangents_01/__init__.py index 142e1ff..3d6fcf2 100644 --- a/scripts/mgear/maya/shifter/component/arm_2jnt_freeTangents_01/__init__.py +++ b/scripts/mgear/maya/shifter/component/arm_2jnt_freeTangents_01/__init__.py @@ -1196,4 +1196,4 @@ def connect_shoulder_01(self): """ Custom connection to be use with shoulder 01 component""" self.connect_standard() - pm.parent(self.armRollRef[0], self.parent_comp.ctl) + pm.parent(self.armRollRef[0], self.ikHandleUpvRef, self.parent_comp.ctl) From 546f6f062b029eaf3ccea5d01a7af778c6080c96 Mon Sep 17 00:00:00 2001 From: miquelcampos Date: Mon, 4 Dec 2017 13:41:27 +0900 Subject: [PATCH 124/134] Shifter: Arms auto upvector and shoulder space jump. Fixes #85 PEP8 style --- scripts/mgear/maya/shifter/component/arm_2jnt_01/__init__.py | 4 +++- .../shifter/component/arm_2jnt_freeTangents_01/__init__.py | 4 +++- 2 files changed, 6 insertions(+), 2 deletions(-) diff --git a/scripts/mgear/maya/shifter/component/arm_2jnt_01/__init__.py b/scripts/mgear/maya/shifter/component/arm_2jnt_01/__init__.py index b56fa83..82d12f1 100644 --- a/scripts/mgear/maya/shifter/component/arm_2jnt_01/__init__.py +++ b/scripts/mgear/maya/shifter/component/arm_2jnt_01/__init__.py @@ -806,4 +806,6 @@ def connect_standard(self): def connect_shoulder_01(self): """ Custom connection to be use with shoulder 01 component""" self.connect_standard() - pm.parent(self.rollRef[0], self.ikHandleUpvRef, self.parent_comp.ctl) + pm.parent(self.rollRef[0], + self.ikHandleUpvRef, + self.parent_comp.ctl) diff --git a/scripts/mgear/maya/shifter/component/arm_2jnt_freeTangents_01/__init__.py b/scripts/mgear/maya/shifter/component/arm_2jnt_freeTangents_01/__init__.py index 3d6fcf2..4ea5d1e 100644 --- a/scripts/mgear/maya/shifter/component/arm_2jnt_freeTangents_01/__init__.py +++ b/scripts/mgear/maya/shifter/component/arm_2jnt_freeTangents_01/__init__.py @@ -1196,4 +1196,6 @@ def connect_shoulder_01(self): """ Custom connection to be use with shoulder 01 component""" self.connect_standard() - pm.parent(self.armRollRef[0], self.ikHandleUpvRef, self.parent_comp.ctl) + pm.parent(self.armRollRef[0], + self.ikHandleUpvRef, + self.parent_comp.ctl) From 74bc2daecfa5009af47818d824f33490afeb67f5 Mon Sep 17 00:00:00 2001 From: miquelcampos Date: Mon, 4 Dec 2017 16:47:58 +0900 Subject: [PATCH 125/134] Shifter: 3 joint leg: soft Ik range min in graph editor. Fixes #82 --- .../shifter/component/leg_3jnt_01/__init__.py | 24 ++++++++++++------- 1 file changed, 16 insertions(+), 8 deletions(-) diff --git a/scripts/mgear/maya/shifter/component/leg_3jnt_01/__init__.py b/scripts/mgear/maya/shifter/component/leg_3jnt_01/__init__.py index 0020ba5..daf86b4 100644 --- a/scripts/mgear/maya/shifter/component/leg_3jnt_01/__init__.py +++ b/scripts/mgear/maya/shifter/component/leg_3jnt_01/__init__.py @@ -586,6 +586,14 @@ def addOperators(self): we shouldn't create any new object in this method. """ + # Soft condition + soft_cond_node = node.createConditionNode( + self.soft_attr, + 0.0001, + 4, + 0.0001, + self.soft_attr) + self.soft_attr_cond = soft_cond_node.outColorR if self.settings["ikSolver"]: self.ikSolver = "ikRPsolver" @@ -659,7 +667,7 @@ def addOperators(self): multJnt3_node.attr("outputX")]) subtract1_node = node.createPlusMinusAverage1D( - [plusTotalLength_node.attr("output1D"), self.soft_attr], 2) + [plusTotalLength_node.attr("output1D"), self.soft_attr_cond], 2) distance1_node = node.createDistNode(self.ik_ref, self.aim_tra) div1_node = node.createDivNode(1.0, self.rig.global_ctl + ".sx") @@ -668,11 +676,11 @@ def addOperators(self): subtract2_node = node.createPlusMinusAverage1D( [mult1_node.attr("outputX"), subtract1_node.attr("output1D")], 2) div2_node = node.createDivNode(subtract2_node + ".output1D", - self.soft_attr) + self.soft_attr_cond) mult2_node = node.createMulNode(-1, div2_node + ".outputX") power_node = node.createPowNode(self.softSpeed_attr, mult2_node + ".outputX") - mult3_node = node.createMulNode(self.soft_attr, + mult3_node = node.createMulNode(self.soft_attr_cond, power_node + ".outputX") subtract3_node = node.createPlusMinusAverage1D( [plusTotalLength_node.attr("output1D"), @@ -680,7 +688,7 @@ def addOperators(self): 2) cond1_node = node.createConditionNode( - self.soft_attr, + self.soft_attr_cond, 0, 2, subtract3_node + ".output1D", @@ -763,7 +771,7 @@ def addOperators(self): [multJnt1_node.attr("outputX"), multJnt2_node.attr("outputX")]) subtract1_node = node.createPlusMinusAverage1D( - [plusTotalLength_node.attr("output1D"), self.soft_attr], 2) + [plusTotalLength_node.attr("output1D"), self.soft_attr_cond], 2) distance1_node = node.createDistNode(self.ik2b_ik_ref, self.aim_tra2) div1_node = node.createDivNode(1, self.rig.global_ctl + ".sx") @@ -775,14 +783,14 @@ def addOperators(self): [mult1_node.attr("outputX"), subtract1_node.attr("output1D")], 2) div2_node = node.createDivNode(subtract2_node + ".output1D", - self.soft_attr) + self.soft_attr_cond) mult2_node = node.createMulNode(-1, div2_node + ".outputX") power_node = node.createPowNode(self.softSpeed_attr, mult2_node + ".outputX") - mult3_node = node.createMulNode(self.soft_attr, + mult3_node = node.createMulNode(self.soft_attr_cond, power_node + ".outputX") subtract3_node = node.createPlusMinusAverage1D( @@ -791,7 +799,7 @@ def addOperators(self): 2) cond1_node = node.createConditionNode( - self.soft_attr, + self.soft_attr_cond, 0, 2, subtract3_node + ".output1D", From 484264cdf869f1aa3b88bc1c7285e56377126e16 Mon Sep 17 00:00:00 2001 From: miquelcampos Date: Mon, 4 Dec 2017 16:51:41 +0900 Subject: [PATCH 126/134] mGear: Attribute and Node: Improved connection or set attributes helper function. TODO: Needs to refactor many functions to clean ugly code repetition #106 --- scripts/mgear/maya/attribute.py | 23 +++++++++++++++++++++++ scripts/mgear/maya/node.py | 15 ++++++++++----- 2 files changed, 33 insertions(+), 5 deletions(-) diff --git a/scripts/mgear/maya/attribute.py b/scripts/mgear/maya/attribute.py index f131a2f..89512c9 100644 --- a/scripts/mgear/maya/attribute.py +++ b/scripts/mgear/maya/attribute.py @@ -913,3 +913,26 @@ def getSelectedObjectChannels(oSel=None, userDefine=False, animatable=False): for x in oSel.listAttr(ud=userDefine, k=animatable)] return channels + + +########################################################## +# UTIL +########################################################## + +def connectSet(source, target, testInstance): + """Connect or set attributes + + Connects or set attributes depending if is isntance of a instance check + + Args: + source (str or Attr): Striname of the attribute or PyNode attribute + target (str or Attr): Striname of the attribute or PyNode attribute + testInstance (tuple): Tuple of types to check + """ + if not isinstance(testInstance, tuple): + testInstance = tuple(testInstance) + + if isinstance(source, testInstance): + pm.connectAttr(source, target) + else: + pm.setAttr(target, source) diff --git a/scripts/mgear/maya/node.py b/scripts/mgear/maya/node.py index b8f6d0b..3206c72 100644 --- a/scripts/mgear/maya/node.py +++ b/scripts/mgear/maya/node.py @@ -3,12 +3,13 @@ import pymel.core as pm import pymel.core.datatypes as datatypes - +from . import attribute ############################################# # CREATE SIMPLE NODES ############################################# + def createMultMatrixNode(mA, mB, target=False, transform='srt'): """Create Maya multiply Matrix node. @@ -140,16 +141,20 @@ def createConditionNode(firstTerm=False, plusTotalLength_node+".output1D") """ + check_list = (pm.Attribute, unicode, str) node = pm.createNode("condition") pm.setAttr(node + ".operation", operator) if firstTerm: - pm.connectAttr(firstTerm, node + ".firstTerm") + attribute.connectSet(firstTerm, node + ".firstTerm", check_list) + if secondTerm: - pm.connectAttr(secondTerm, node + ".secondTerm") + attribute.connectSet(secondTerm, node + ".secondTerm", check_list) + if ifTrue: - pm.connectAttr(ifTrue, node + ".colorIfTrueR") + attribute.connectSet(ifTrue, node + ".colorIfTrueR", check_list) + if ifFalse: - pm.connectAttr(ifFalse, node + ".colorIfFalseR") + attribute.connectSet(ifFalse, node + ".colorIfFalseR", check_list) return node From 288a2dd0e87e97392e9991ddcc000c785f1c4b1b Mon Sep 17 00:00:00 2001 From: miquelcampos Date: Mon, 4 Dec 2017 17:06:26 +0900 Subject: [PATCH 127/134] Rigbits: Fix hotkey error --- scripts/mgear/maya/attribute.py | 2 +- scripts/mgear/maya/rigbits/utils.py | 30 ++++++++++++----------------- 2 files changed, 13 insertions(+), 19 deletions(-) diff --git a/scripts/mgear/maya/attribute.py b/scripts/mgear/maya/attribute.py index 89512c9..41227bd 100644 --- a/scripts/mgear/maya/attribute.py +++ b/scripts/mgear/maya/attribute.py @@ -922,7 +922,7 @@ def getSelectedObjectChannels(oSel=None, userDefine=False, animatable=False): def connectSet(source, target, testInstance): """Connect or set attributes - Connects or set attributes depending if is isntance of a instance check + Connects or set attributes depending if is instance of a instance check Args: source (str or Attr): Striname of the attribute or PyNode attribute diff --git a/scripts/mgear/maya/rigbits/utils.py b/scripts/mgear/maya/rigbits/utils.py index 3c715fa..8ce36cd 100644 --- a/scripts/mgear/maya/rigbits/utils.py +++ b/scripts/mgear/maya/rigbits/utils.py @@ -64,7 +64,7 @@ def createHotkeys(*args): pm.polyExtrudeFacet(constructionHistory=True,keepFacesTogether=True ) else: root = pm.selected()[0] - if not pm.attributeQuery("comp_type", o_node=root, ex=True): + if not pm.attributeQuery("comp_type", node=root, ex=True): rigbits.duplicateSym() else: gui.Guide_UI.duplicate(True) @@ -81,7 +81,7 @@ def createHotkeys(*args): pm.polyExtrudeFacet(constructionHistory=True,keepFacesTogether=True ) else: root = pm.selected()[0] - if not pm.attributeQuery("comp_type", o_node=root, ex=True): + if not pm.attributeQuery("comp_type", node=root, ex=True): pm.duplicate() else: gui.Guide_UI.duplicate(False) @@ -110,28 +110,22 @@ def frameSelectedCenter(): # reset SRT rCmd = ''' -import pymel.core as pm -def resetSRT(oColl): - trList = ['.tx','.ty','.tz','.rx','.ry','.rz'] - sList = ['.sx','.sy','.sz'] - - for attr in [(o, x) for o in oColl for x in trList]: - try: pm.Attribute(attr[0] + attr[1]).set(0) - except: pass - for attr in [(o, x) for o in oColl for x in sList]: - try: pm.Attribute(attr[0] + attr[1]).set(1) - except: pass -#this ensure it is one undo step -doReset = pm.Callback(resetSRT, pm.selected() ) -doReset() +from mgear.maya import attribute +attribute.smart_reset() ''' createRunTimeCommand("mGear_resetSRT", rCmd, ann="") # maximize Maya window rCmd = ''' -from mgear.maya import attribute -attribute.smart_reset() +import maya.cmds as cmds +import maya.mel as mel +gMainWindow = mel.eval('$temp1=$gMainWindow') +acti = cmds.window( gMainWindow, q=True, titleBar=True) +if acti: + cmds.window( gMainWindow, e=True, titleBar=False) +else: + cmds.window( gMainWindow, e=True, titleBar=True) ''' createRunTimeCommand("mGear_maximizeMaya", rCmd, ann="") From 4321ee699e0623f703f6ee700e0559f5628460bf Mon Sep 17 00:00:00 2001 From: miquelcampos Date: Mon, 4 Dec 2017 17:35:31 +0900 Subject: [PATCH 128/134] Rigbits: export skin pack error with crvs. Fixes #56 --- scripts/mgear/maya/skin.py | 14 ++++++++------ 1 file changed, 8 insertions(+), 6 deletions(-) diff --git a/scripts/mgear/maya/skin.py b/scripts/mgear/maya/skin.py index c345c99..7087510 100644 --- a/scripts/mgear/maya/skin.py +++ b/scripts/mgear/maya/skin.py @@ -169,7 +169,7 @@ def exportSkin(filePath=None, objs=None, *args): skinCls = getSkinCluster(obj) if not skinCls: pm.displayWarning( - obj.name() + ": Skiped because don't have Skin Cluster") + obj.name() + ": Skipped because don't have Skin Cluster") pass else: @@ -189,16 +189,18 @@ def exportSkin(filePath=None, objs=None, *args): packDic["objDDic"].append(dataDic) pm.displayInfo( "Exported skinCluster %s (%d influences, %d " - "vertices) %s" % (skinCls.name(), - len(dataDic['weights'].keys()), - len(dataDic['blendWeights']), - obj.name())) + "points) %s" % (skinCls.name(), + len(dataDic['weights'].keys()), + len(dataDic['blendWeights']), + obj.name())) if packDic["objs"]: fh = open(filePath, 'wb') pickle.dump(packDic, fh, pickle.HIGHEST_PROTOCOL) fh.close() + return True + def exportSkinPack(packPath=None, objs=None, *args): @@ -235,7 +237,7 @@ def exportSkinPack(packPath=None, objs=None, *args): pm.displayInfo(filePath) else: pm.displayWarning( - obj.name() + ": Skiped because don't have Skin Cluster") + obj.name() + ": Skipped because don't have Skin Cluster") if packDic["packFiles"]: data_string = json.dumps(packDic, indent=4, sort_keys=True) From 58f9aa16e68fdcdb63535bf538b7b17bb9d9f6da Mon Sep 17 00:00:00 2001 From: miquelcampos Date: Tue, 5 Dec 2017 10:23:21 +0900 Subject: [PATCH 129/134] Shifter: Chain_spring_01: pop if manipulate FK ctl after Bake. Fixes #75 --- .../component/chain_spring_01/__init__.py | 16 ++++++- scripts/mgear/maya/synoptic/utils.py | 42 +++++++++++++++++-- 2 files changed, 53 insertions(+), 5 deletions(-) diff --git a/scripts/mgear/maya/shifter/component/chain_spring_01/__init__.py b/scripts/mgear/maya/shifter/component/chain_spring_01/__init__.py index 556dbb5..993c595 100644 --- a/scripts/mgear/maya/shifter/component/chain_spring_01/__init__.py +++ b/scripts/mgear/maya/shifter/component/chain_spring_01/__init__.py @@ -5,7 +5,7 @@ from mgear.maya.shifter import component -from mgear.maya import applyop, vector +from mgear.maya import applyop, vector, node from mgear.maya import attribute, transform, primitive ############################################# @@ -158,10 +158,22 @@ def addOperators(self): [0, 1, 0], self.fk_npo[i], False) - applyop.oriCns(tranCns, self.spring_cns[i]) + ori_cns = applyop.oriCns(tranCns, self.spring_cns[i]) springOP = applyop.gear_spring_op(self.spring_target[i]) + blend_node = pm.createNode("pairBlend") + + pm.connectAttr(ori_cns.constraintRotate, blend_node.inRotate2) + pm.connectAttr(self.aSpring_intensity, blend_node.weight) + + pm.disconnectAttr(ori_cns.constraintRotate, + self.spring_cns[i].rotate) + + pm.connectAttr(blend_node.outRotateX, self.spring_cns[i].rotateX) + pm.connectAttr(blend_node.outRotateY, self.spring_cns[i].rotateY) + pm.connectAttr(blend_node.outRotateZ, self.spring_cns[i].rotateZ) + pm.connectAttr(self.aSpring_intensity, springOP + ".intensity") pm.connectAttr(self.aDamping[i], springOP + ".damping") pm.connectAttr(self.aStiffness[i], springOP + ".stiffness") diff --git a/scripts/mgear/maya/synoptic/utils.py b/scripts/mgear/maya/synoptic/utils.py index 809deca..2e4e939 100644 --- a/scripts/mgear/maya/synoptic/utils.py +++ b/scripts/mgear/maya/synoptic/utils.py @@ -1441,17 +1441,53 @@ def toFK(model, ikfk_attr, uihost, fks, ik, upv, ikRot, **kwargs): # Baker Springs +@utils.one_undo def clearSprings(model): + """Delete baked animation from spring + + Args: + model (dagNode): The rig top node + """ springNodes = getControlers(model, gSuffix=PLOT_GRP_SUFFIX) - pm.cutKey(springNodes, cl=True) + pairblends = [sn.listConnections(type="pairBlend")[0] + for sn in springNodes] + + for pb in pairblends: + animCrvs = pb.listConnections(type="animCurveTA") + for fcrv in animCrvs: + for conn in fcrv.listConnections(connections=True, + destination=True, + plugs=True): + + pm.disconnectAttr(conn[0], conn[1]) + # reset the value to 0 + attrs = ["inRotateX1", "inRotateY1", "inRotateZ1"] + for attr in attrs: + pb.attr(attr).set(0) + + # delete fcurves + pm.delete(animCrvs) @utils.one_undo @utils.viewport_off def bakeSprings(model): + """Bake the automatic spring animation to animation curves + + Args: + model (dagNode): The rig top node + """ + # first clear animation + clearSprings(model) + + # bake again springNodes = getControlers(model, gSuffix=PLOT_GRP_SUFFIX) if springNodes: - pm.cutKey(springNodes, cl=True) + start = pm.playbackOptions(q=True, min=True) end = pm.playbackOptions(q=True, max=True) - pm.bakeResults(springNodes, t=(start, end), simulation=True) + ct = start + for i in range(int(end - start) + 1): + pm.currentTime(int(ct)) + pm.setKeyframe(springNodes, insertBlend=True, attribute='rotate') + ct += 1 From 58fe8105a70b1bad3d465889ed2eb2335f5283ca Mon Sep 17 00:00:00 2001 From: miquelcampos Date: Tue, 5 Dec 2017 12:29:44 +0900 Subject: [PATCH 130/134] Shifter: Reload components in custom path. Closes #78. New reload components command added --- scripts/mGear_menu.py | 7 ++++--- scripts/mgear/maya/shifter/__init__.py | 18 ++++++++++++++++++ 2 files changed, 22 insertions(+), 3 deletions(-) diff --git a/scripts/mGear_menu.py b/scripts/mGear_menu.py index 9cd2acf..c79739b 100644 --- a/scripts/mGear_menu.py +++ b/scripts/mGear_menu.py @@ -7,7 +7,7 @@ import mgear -from mgear.maya import synoptic, skin, simpleRig, rigbits, attribute +from mgear.maya import synoptic, skin, simpleRig, rigbits, attribute, shifter from mgear.maya.rigbits import ( postSpring, rope, @@ -64,8 +64,9 @@ def createMenu(): pm.menuItem(label="Import Quadruped Guide", command=quadrupedGuide) pm.menuItem(divider=True) - pm.menuItem(label="Update Guide", - command=updateGuide) + pm.menuItem(label="Update Guide", command=updateGuide) + pm.menuItem(divider=True) + pm.menuItem(label="Reload Components", command=shifter.reloadComponents) pm.setParent(mGearM, menu=True) pm.menuItem(divider=True) diff --git a/scripts/mgear/maya/shifter/__init__.py b/scripts/mgear/maya/shifter/__init__.py index 0ef3c4d..962306c 100644 --- a/scripts/mgear/maya/shifter/__init__.py +++ b/scripts/mgear/maya/shifter/__init__.py @@ -62,6 +62,24 @@ def importComponent(comp_type): return module +def reloadComponents(*args): + """Reload all componets + + Args: + *args: Dummy + """ + compDir = getComponentDirectories() + + for x in compDir: + for com in compDir[x]: + try: + reload(importComponent(com)) + reload(importComponentGuide(com)) + print "reload : {}.{}".format(os.path.basename(x), com) + except ImportError: + pass + + class Rig(object): """The main rig class. From ff7362d928fee457fa61cef9afd3b228f44f5d85 Mon Sep 17 00:00:00 2001 From: miquelcampos Date: Tue, 5 Dec 2017 12:50:02 +0900 Subject: [PATCH 131/134] Shifter: Control_01: fix bug with setting UI --- .../component/control_01/settingsUI.py | 11 ++- .../component/control_01/settingsUI.ui | 88 +++++++++---------- 2 files changed, 49 insertions(+), 50 deletions(-) diff --git a/scripts/mgear/maya/shifter/component/control_01/settingsUI.py b/scripts/mgear/maya/shifter/component/control_01/settingsUI.py index 0a61bd6..e8cf56e 100644 --- a/scripts/mgear/maya/shifter/component/control_01/settingsUI.py +++ b/scripts/mgear/maya/shifter/component/control_01/settingsUI.py @@ -1,12 +1,10 @@ import mgear.maya.pyqt as gqt -from mgear.vendor.Qt import QtCore, QtWidgets - +QtGui, QtCore, QtWidgets, wrapInstance = gqt.qt_import() class Ui_Form(object): - def setupUi(self, Form): Form.setObjectName("Form") - Form.resize(283, 472) + Form.resize(733, 550) self.gridLayout = QtWidgets.QGridLayout(Form) self.gridLayout.setObjectName("gridLayout") self.groupBox = QtWidgets.QGroupBox(Form) @@ -183,9 +181,9 @@ def setupUi(self, Form): self.gridLayout.addWidget(self.ikRefArray_groupBox, 2, 0, 1, 1) self.retranslateUi(Form) - QtCore.QObject.connect(self.translate_pushButton, QtCore.SIGNAL("clicked()"), self.tz_checkBox.toggle) - QtCore.QObject.connect(self.translate_pushButton, QtCore.SIGNAL("clicked()"), self.ty_checkBox.toggle) QtCore.QObject.connect(self.translate_pushButton, QtCore.SIGNAL("clicked()"), self.tx_checkBox.toggle) + QtCore.QObject.connect(self.translate_pushButton, QtCore.SIGNAL("clicked()"), self.ty_checkBox.toggle) + QtCore.QObject.connect(self.translate_pushButton, QtCore.SIGNAL("clicked()"), self.tz_checkBox.toggle) QtCore.QObject.connect(self.rotate_pushButton, QtCore.SIGNAL("clicked()"), self.rx_checkBox.toggle) QtCore.QObject.connect(self.rotate_pushButton, QtCore.SIGNAL("clicked()"), self.ry_checkBox.toggle) QtCore.QObject.connect(self.rotate_pushButton, QtCore.SIGNAL("clicked()"), self.rz_checkBox.toggle) @@ -241,3 +239,4 @@ def retranslateUi(self, Form): self.ikRefArray_groupBox.setTitle(gqt.fakeTranslate("Form", "IK Reference Array", None, -1)) self.ikRefArrayAdd_pushButton.setText(gqt.fakeTranslate("Form", "<<", None, -1)) self.ikRefArrayRemove_pushButton.setText(gqt.fakeTranslate("Form", ">>", None, -1)) + diff --git a/scripts/mgear/maya/shifter/component/control_01/settingsUI.ui b/scripts/mgear/maya/shifter/component/control_01/settingsUI.ui index 14e31ff..78841ba 100644 --- a/scripts/mgear/maya/shifter/component/control_01/settingsUI.ui +++ b/scripts/mgear/maya/shifter/component/control_01/settingsUI.ui @@ -6,8 +6,8 @@ 0 0 - 283 - 472 + 733 + 550 @@ -456,16 +456,16 @@ translate_pushButton clicked() - tz_checkBox + tx_checkBox toggle() - 46 - 114 + 120 + 210 - 21 - 193 + 31 + 232 @@ -476,28 +476,28 @@ toggle() - 20 - 120 + 139 + 212 - 13 - 165 + 68 + 258 translate_pushButton clicked() - tx_checkBox + tz_checkBox toggle() - 68 - 117 + 176 + 212 - 14 - 143 + 168 + 278 @@ -508,12 +508,12 @@ toggle() - 116 - 120 + 338 + 208 - 97 - 144 + 338 + 234 @@ -524,12 +524,12 @@ toggle() - 134 - 122 + 367 + 212 - 118 - 168 + 367 + 261 @@ -540,12 +540,12 @@ toggle() - 145 - 121 + 401 + 207 - 104 - 189 + 397 + 275 @@ -556,12 +556,12 @@ toggle() - 151 - 117 + 430 + 213 - 128 - 219 + 419 + 302 @@ -572,12 +572,12 @@ toggle() - 213 - 113 + 533 + 209 - 196 - 150 + 532 + 234 @@ -588,12 +588,12 @@ toggle() - 220 - 121 + 563 + 211 - 210 - 176 + 558 + 261 @@ -604,12 +604,12 @@ toggle() - 227 - 110 + 593 + 218 - 223 - 192 + 587 + 277 From 46e8ea7df1623a648ad8615af6f169faff3eec88 Mon Sep 17 00:00:00 2001 From: miquelcampos Date: Tue, 5 Dec 2017 15:23:33 +0900 Subject: [PATCH 132/134] mGear: Update version number to 2.3.0 --- README.md | 4 ++-- SConstruct | 2 +- mGear.mod | 48 +++++++++++++++++++-------------------- mgear.status | 4 ++-- scripts/mgear/__init__.py | 2 +- 5 files changed, 30 insertions(+), 30 deletions(-) diff --git a/README.md b/README.md index 349c0d4..5b8bcf0 100644 --- a/README.md +++ b/README.md @@ -6,7 +6,7 @@ Originally mGear was design and develope by Jeremie Passerin , since 2013 Miquel MGEAR is under the terms of the MIT License -*Latest release: 2.2.4 ( Release Log: https://miquelcampos.github.io/mgear/releaseLog.html) +*Latest release: 2.3.0 ( Release Log: https://miquelcampos.github.io/mgear/releaseLog.html) For the official release, with compiled solvers and example data please download mGear from: https://gumroad.com/l/mgear @@ -14,4 +14,4 @@ Official Documentation: https://miquelcampos.github.io/mgear/ mGear Goggle group: https://groups.google.com/forum/#!forum/mgearusergroup -Youtube channel: https://www.youtube.com/channel/UCJsN2KCAD7qkA6-fOeB2fOw +Youtube channel: https://www.youtube.com/c/mgearriggingframework diff --git a/SConstruct b/SConstruct index 1f6367a..1514480 100644 --- a/SConstruct +++ b/SConstruct @@ -9,7 +9,7 @@ maya.SetupMscver() env = excons.MakeBaseEnv() -version = (2, 2, 5) +version = (2, 3, 0) versionstr = "%d.%d.%d" % version platname = {"win32": "windows", "darwin": "osx"}.get(sys.platform, "linux") outprefix = "platforms/%s/%s/%s/plug-ins" % (maya.Version(nice=True), platname, excons.arch_dir) diff --git a/mGear.mod b/mGear.mod index 8847c87..b43a330 100644 --- a/mGear.mod +++ b/mGear.mod @@ -1,71 +1,71 @@ -+ MAYAVERSION:2013 PLATFORM:win64 mGear 2.2 ./platforms/2013/windows/x64 ++ MAYAVERSION:2013 PLATFORM:win64 mGear 2.3 ./platforms/2013/windows/x64 scripts: ../../../../scripts -+ MAYAVERSION:2013 PLATFORM:linux mGear 2.2 ./platforms/2013/linux/x64 ++ MAYAVERSION:2013 PLATFORM:linux mGear 2.3 ./platforms/2013/linux/x64 scripts: ../../../../scripts -+ MAYAVERSION:2013 PLATFORM:mac mGear 2.2 ./platforms/2013/osx/x64 ++ MAYAVERSION:2013 PLATFORM:mac mGear 2.3 ./platforms/2013/osx/x64 scripts: ../../../../scripts -+ MAYAVERSION:2013.5 PLATFORM:win64 mGear 2.2 ./platforms/2013.5/windows/x64 ++ MAYAVERSION:2013.5 PLATFORM:win64 mGear 2.3 ./platforms/2013.5/windows/x64 scripts: ../../../../scripts -+ MAYAVERSION:2013.5 PLATFORM:linux mGear 2.2 ./platforms/2013.5/linux/x64 ++ MAYAVERSION:2013.5 PLATFORM:linux mGear 2.3 ./platforms/2013.5/linux/x64 scripts: ../../../../scripts -+ MAYAVERSION:2013.5 PLATFORM:mac mGear 2.2 ./platforms/2013.5/osx/x64 ++ MAYAVERSION:2013.5 PLATFORM:mac mGear 2.3 ./platforms/2013.5/osx/x64 scripts: ../../../../scripts -+ MAYAVERSION:2014 PLATFORM:win64 mGear 2.2 ./platforms/2014/windows/x64 ++ MAYAVERSION:2014 PLATFORM:win64 mGear 2.3 ./platforms/2014/windows/x64 scripts: ../../../../scripts -+ MAYAVERSION:2014 PLATFORM:linux mGear 2.2 ./platforms/2014/linux/x64 ++ MAYAVERSION:2014 PLATFORM:linux mGear 2.3 ./platforms/2014/linux/x64 scripts: ../../../../scripts -+ MAYAVERSION:2014 PLATFORM:mac mGear 2.2 ./platforms/2014/osx/x64 ++ MAYAVERSION:2014 PLATFORM:mac mGear 2.3 ./platforms/2014/osx/x64 scripts: ../../../../scripts -+ MAYAVERSION:2015 PLATFORM:win64 mGear 2.2 ./platforms/2015/windows/x64 ++ MAYAVERSION:2015 PLATFORM:win64 mGear 2.3 ./platforms/2015/windows/x64 scripts: ../../../../scripts -+ MAYAVERSION:2015 PLATFORM:linux mGear 2.2 ./platforms/2015/linux/x64 ++ MAYAVERSION:2015 PLATFORM:linux mGear 2.3 ./platforms/2015/linux/x64 scripts: ../../../../scripts -+ MAYAVERSION:2015 PLATFORM:mac mGear 2.2 ./platforms/2015/osx/x64 ++ MAYAVERSION:2015 PLATFORM:mac mGear 2.3 ./platforms/2015/osx/x64 scripts: ../../../../scripts -+ MAYAVERSION:2016 PLATFORM:win64 mGear 2.2 ./platforms/2016/windows/x64 ++ MAYAVERSION:2016 PLATFORM:win64 mGear 2.3 ./platforms/2016/windows/x64 scripts: ../../../../scripts -+ MAYAVERSION:2016 PLATFORM:linux mGear 2.2 ./platforms/2016/linux/x64 ++ MAYAVERSION:2016 PLATFORM:linux mGear 2.3 ./platforms/2016/linux/x64 scripts: ../../../../scripts -+ MAYAVERSION:2016 PLATFORM:mac mGear 2.2 ./platforms/2016/osx/x64 ++ MAYAVERSION:2016 PLATFORM:mac mGear 2.3 ./platforms/2016/osx/x64 scripts: ../../../../scripts -+ MAYAVERSION:2016.5 PLATFORM:win64 mGear 2.2 ./platforms/2016.5/windows/x64 ++ MAYAVERSION:2016.5 PLATFORM:win64 mGear 2.3 ./platforms/2016.5/windows/x64 scripts: ../../../../scripts -+ MAYAVERSION:2016.5 PLATFORM:linux mGear 2.2 ./platforms/2016.5/linux/x64 ++ MAYAVERSION:2016.5 PLATFORM:linux mGear 2.3 ./platforms/2016.5/linux/x64 scripts: ../../../../scripts -+ MAYAVERSION:2016.5 PLATFORM:mac mGear 2.2 ./platforms/2016.5/osx/x64 ++ MAYAVERSION:2016.5 PLATFORM:mac mGear 2.3 ./platforms/2016.5/osx/x64 scripts: ../../../../scripts -+ MAYAVERSION:2017 PLATFORM:win64 mGear 2.2 ./platforms/2017/windows/x64 ++ MAYAVERSION:2017 PLATFORM:win64 mGear 2.3 ./platforms/2017/windows/x64 scripts: ../../../../scripts -+ MAYAVERSION:2017 PLATFORM:linux mGear 2.2 ./platforms/2017/linux/x64 ++ MAYAVERSION:2017 PLATFORM:linux mGear 2.3 ./platforms/2017/linux/x64 scripts: ../../../../scripts -+ MAYAVERSION:2017 PLATFORM:mac mGear 2.2 ./platforms/2017/osx/x64 ++ MAYAVERSION:2017 PLATFORM:mac mGear 2.3 ./platforms/2017/osx/x64 scripts: ../../../../scripts -+ MAYAVERSION:2018 PLATFORM:win64 mGear 2.2 ./platforms/2018/windows/x64 ++ MAYAVERSION:2018 PLATFORM:win64 mGear 2.3 ./platforms/2018/windows/x64 scripts: ../../../../scripts -+ MAYAVERSION:2018 PLATFORM:linux mGear 2.2 ./platforms/2018/linux/x64 ++ MAYAVERSION:2018 PLATFORM:linux mGear 2.3 ./platforms/2018/linux/x64 scripts: ../../../../scripts -+ MAYAVERSION:2018 PLATFORM:mac mGear 2.2 ./platforms/2018/osx/x64 ++ MAYAVERSION:2018 PLATFORM:mac mGear 2.3 ./platforms/2018/osx/x64 scripts: ../../../../scripts diff --git a/mgear.status b/mgear.status index d7e3ea7..4f13d9a 100644 --- a/mgear.status +++ b/mgear.status @@ -1,3 +1,3 @@ -MGEAR_VERSION [2, 2, 5] -MGEAR_MAJMIN_VERSION 2.2 +MGEAR_VERSION [2, 3, 0] +MGEAR_MAJMIN_VERSION 2.3 diff --git a/scripts/mgear/__init__.py b/scripts/mgear/__init__.py index cee48ba..e230d63 100644 --- a/scripts/mgear/__init__.py +++ b/scripts/mgear/__init__.py @@ -16,7 +16,7 @@ sev_comment = 32 # gear version -VERSION = [2, 2, 5] +VERSION = [2, 3, 0] ########################################################## # METHODS From 52c7849fa82c37e3af853fa1da7b288f459a73df Mon Sep 17 00:00:00 2001 From: miquelcampos Date: Wed, 6 Dec 2017 11:05:37 +0900 Subject: [PATCH 133/134] Shifter: Biped and Quadruped templates updated --- .../component/_templates/biped_guide.ma | 8347 ++++++++--------- .../shifter/component/_templates/quadruped.ma | 5141 +++++----- 2 files changed, 6760 insertions(+), 6728 deletions(-) diff --git a/scripts/mgear/maya/shifter/component/_templates/biped_guide.ma b/scripts/mgear/maya/shifter/component/_templates/biped_guide.ma index acb2806..a2ae833 100644 --- a/scripts/mgear/maya/shifter/component/_templates/biped_guide.ma +++ b/scripts/mgear/maya/shifter/component/_templates/biped_guide.ma @@ -1,6 +1,6 @@ //Maya ASCII 2016R2 scene //Name: biped_guide.ma -//Last modified: Mon, Oct 16, 2017 05:46:04 PM +//Last modified: Wed, Dec 06, 2017 11:02:00 AM //Codeset: 932 requires maya "2016R2"; requires -nodeType "mgear_curveCns" "mgear_solvers" "2.1.0"; @@ -12,26 +12,87 @@ fileInfo "product" "Maya 2016"; fileInfo "version" "2016 Extension 2 SP2"; fileInfo "cutIdentifier" "201608220310-1001477-2"; fileInfo "osv" "Microsoft Windows 8 Business Edition, 64-bit (Build 9200)\n"; +createNode transform -s -n "persp"; + rename -uid "CDB4F2CD-4A87-919A-618B-ABB1AAE486A9"; + setAttr ".v" no; + setAttr ".t" -type "double3" 5.7112380831474399 16.612526471270751 32.284082462110909 ; + setAttr ".r" -type "double3" -15.338352729602919 9.8000000000004253 -4.0345661506751271e-016 ; +createNode camera -s -n "perspShape" -p "persp"; + rename -uid "3EB3D15B-420E-E67B-D514-CBAA09281E5C"; + setAttr -k off ".v" no; + setAttr ".fl" 34.999999999999993; + setAttr ".coi" 37.265978198906765; + setAttr ".imn" -type "string" "persp"; + setAttr ".den" -type "string" "persp_depth"; + setAttr ".man" -type "string" "persp_mask"; + setAttr ".hc" -type "string" "viewSet -p %camera"; +createNode transform -s -n "top"; + rename -uid "398FD8F7-44A7-0FE7-4D51-8D9604E1A062"; + setAttr ".v" no; + setAttr ".t" -type "double3" 0 1000.1 0 ; + setAttr ".r" -type "double3" -89.999999999999986 0 0 ; +createNode camera -s -n "topShape" -p "top"; + rename -uid "F9784B1D-4E51-60E6-EB23-7987F165A200"; + setAttr -k off ".v" no; + setAttr ".rnd" no; + setAttr ".coi" 1000.1; + setAttr ".ow" 30; + setAttr ".imn" -type "string" "top"; + setAttr ".den" -type "string" "top_depth"; + setAttr ".man" -type "string" "top_mask"; + setAttr ".hc" -type "string" "viewSet -t %camera"; + setAttr ".o" yes; +createNode transform -s -n "front"; + rename -uid "A355D6C2-4104-0BDF-F161-D19C893E8612"; + setAttr ".v" no; + setAttr ".t" -type "double3" 0 0 1000.1 ; +createNode camera -s -n "frontShape" -p "front"; + rename -uid "A0BC09A5-45D5-0301-867B-C8B45C4E95DA"; + setAttr -k off ".v" no; + setAttr ".rnd" no; + setAttr ".coi" 1000.1; + setAttr ".ow" 30; + setAttr ".imn" -type "string" "front"; + setAttr ".den" -type "string" "front_depth"; + setAttr ".man" -type "string" "front_mask"; + setAttr ".hc" -type "string" "viewSet -f %camera"; + setAttr ".o" yes; +createNode transform -s -n "side"; + rename -uid "2E6BFB0C-499E-A3F2-81E2-DE90269F73B0"; + setAttr ".v" no; + setAttr ".t" -type "double3" 1000.1 0 0 ; + setAttr ".r" -type "double3" 0 89.999999999999986 0 ; +createNode camera -s -n "sideShape" -p "side"; + rename -uid "4CD47DBF-4312-E04D-FD24-85A8C98136CD"; + setAttr -k off ".v" no; + setAttr ".rnd" no; + setAttr ".coi" 1000.1; + setAttr ".ow" 30; + setAttr ".imn" -type "string" "side"; + setAttr ".den" -type "string" "side_depth"; + setAttr ".man" -type "string" "side_mask"; + setAttr ".hc" -type "string" "viewSet -s %camera"; + setAttr ".o" yes; createNode transform -n "guide"; - rename -uid "68D0CAF9-402F-6404-4A80-729E4B81D2DB"; + rename -uid "B0A48A84-4789-4956-BA49-FF9D491F44C1"; addAttr -ci true -sn "rig_name" -ln "rig_name" -dt "string"; addAttr -ci true -k true -sn "mode" -ln "mode" -min 0 -max 1 -en "Final:WIP" -at "enum"; addAttr -ci true -k true -sn "step" -ln "step" -min 0 -max 6 -en "All Steps:Objects:Properties:Operators:Connect:Joints:Finalize" -at "enum"; - addAttr -ci true -sn "ismodel" -ln "ismodel" -min 0 -max 1 -at "bool"; + addAttr -ci true -sn "ismodel" -ln "ismodel" -dv 1 -min 0 -max 1 -at "bool"; addAttr -ci true -sn "classicChannelNames" -ln "classicChannelNames" -min 0 -max 1 -at "bool"; - addAttr -ci true -sn "proxyChannels" -ln "proxyChannels" -min 0 -max 1 -at "bool"; - addAttr -ci true -sn "worldCtl" -ln "worldCtl" -min 0 -max 1 -at "bool"; + addAttr -ci true -sn "proxyChannels" -ln "proxyChannels" -dv 1 -min 0 -max 1 -at "bool"; + addAttr -ci true -sn "worldCtl" -ln "worldCtl" -dv 1 -min 0 -max 1 -at "bool"; addAttr -ci true -sn "importSkin" -ln "importSkin" -min 0 -max 1 -at "bool"; addAttr -ci true -sn "skin" -ln "skin" -dt "string"; - addAttr -ci true -sn "L_color_fk" -ln "L_color_fk" -min 0 -max 31 -at "long"; - addAttr -ci true -sn "L_color_ik" -ln "L_color_ik" -min 0 -max 31 -at "long"; - addAttr -ci true -sn "R_color_fk" -ln "R_color_fk" -min 0 -max 31 -at "long"; - addAttr -ci true -sn "R_color_ik" -ln "R_color_ik" -min 0 -max 31 -at "long"; - addAttr -ci true -sn "C_color_fk" -ln "C_color_fk" -min 0 -max 31 -at "long"; - addAttr -ci true -sn "C_color_ik" -ln "C_color_ik" -min 0 -max 31 -at "long"; - addAttr -ci true -sn "joint_rig" -ln "joint_rig" -min 0 -max 1 -at "bool"; + addAttr -ci true -sn "L_color_fk" -ln "L_color_fk" -dv 6 -min 0 -max 31 -at "long"; + addAttr -ci true -sn "L_color_ik" -ln "L_color_ik" -dv 18 -min 0 -max 31 -at "long"; + addAttr -ci true -sn "R_color_fk" -ln "R_color_fk" -dv 23 -min 0 -max 31 -at "long"; + addAttr -ci true -sn "R_color_ik" -ln "R_color_ik" -dv 14 -min 0 -max 31 -at "long"; + addAttr -ci true -sn "C_color_fk" -ln "C_color_fk" -dv 13 -min 0 -max 31 -at "long"; + addAttr -ci true -sn "C_color_ik" -ln "C_color_ik" -dv 17 -min 0 -max 31 -at "long"; + addAttr -ci true -sn "joint_rig" -ln "joint_rig" -dv 1 -min 0 -max 1 -at "bool"; addAttr -ci true -sn "synoptic" -ln "synoptic" -dt "string"; addAttr -ci true -sn "doPreCustomStep" -ln "doPreCustomStep" -min 0 -max 1 -at "bool"; addAttr -ci true -sn "doPostCustomStep" -ln "doPostCustomStep" -min 0 -max 1 -at "bool"; @@ -44,17 +105,7 @@ createNode transform -n "guide"; addAttr -ci true -sn "gear_version" -ln "gear_version" -dt "string"; setAttr ".rig_name" -type "string" "rig"; setAttr -k on ".step" 6; - setAttr ".ismodel" yes; - setAttr ".proxyChannels" yes; - setAttr ".worldCtl" yes; setAttr ".skin" -type "string" ""; - setAttr ".L_color_fk" 6; - setAttr ".L_color_ik" 18; - setAttr ".R_color_fk" 23; - setAttr ".R_color_ik" 14; - setAttr ".C_color_fk" 13; - setAttr ".C_color_ik" 17; - setAttr ".joint_rig" yes; setAttr ".synoptic" -type "string" "biped"; setAttr ".preCustomStep" -type "string" ""; setAttr ".postCustomStep" -type "string" ""; @@ -68,7 +119,7 @@ createNode transform -n "controllers_org" -p "guide"; setAttr ".v" no; setAttr ".s" -type "double3" 1.5545667115145092 1.5545667115145092 1.5545667115145092 ; createNode transform -n "global_C0_root" -p "guide"; - rename -uid "AE59666B-4ADC-69B4-F35F-70B751A4EDCF"; + rename -uid "8B72C636-4A8C-8895-9265-82AC319280D3"; addAttr -ci true -sn "isGearGuide" -ln "isGearGuide" -dv 1 -min 0 -max 1 -at "bool"; addAttr -ci true -sn "comp_type" -ln "comp_type" -dt "string"; addAttr -ci true -sn "comp_name" -ln "comp_name" -dt "string"; @@ -80,22 +131,24 @@ createNode transform -n "global_C0_root" -p "guide"; addAttr -ci true -sn "icon" -ln "icon" -dt "string"; addAttr -ci true -sn "ikrefarray" -ln "ikrefarray" -dt "string"; addAttr -ci true -sn "joint" -ln "joint" -min 0 -max 1 -at "bool"; - addAttr -ci true -sn "uniScale" -ln "uniScale" -min 0 -max 1 -at "bool"; - addAttr -ci true -sn "k_tx" -ln "k_tx" -min 0 -max 1 -at "bool"; - addAttr -ci true -sn "k_ty" -ln "k_ty" -min 0 -max 1 -at "bool"; - addAttr -ci true -sn "k_tz" -ln "k_tz" -min 0 -max 1 -at "bool"; - addAttr -ci true -sn "k_ro" -ln "k_ro" -min 0 -max 1 -at "bool"; - addAttr -ci true -sn "k_rx" -ln "k_rx" -min 0 -max 1 -at "bool"; - addAttr -ci true -sn "k_ry" -ln "k_ry" -min 0 -max 1 -at "bool"; - addAttr -ci true -sn "k_rz" -ln "k_rz" -min 0 -max 1 -at "bool"; - addAttr -ci true -sn "k_sx" -ln "k_sx" -min 0 -max 1 -at "bool"; - addAttr -ci true -sn "k_sy" -ln "k_sy" -min 0 -max 1 -at "bool"; - addAttr -ci true -sn "k_sz" -ln "k_sz" -min 0 -max 1 -at "bool"; + addAttr -ci true -sn "uniScale" -ln "uniScale" -dv 1 -min 0 -max 1 -at "bool"; + addAttr -ci true -sn "k_tx" -ln "k_tx" -dv 1 -min 0 -max 1 -at "bool"; + addAttr -ci true -sn "k_ty" -ln "k_ty" -dv 1 -min 0 -max 1 -at "bool"; + addAttr -ci true -sn "k_tz" -ln "k_tz" -dv 1 -min 0 -max 1 -at "bool"; + addAttr -ci true -sn "k_ro" -ln "k_ro" -dv 1 -min 0 -max 1 -at "bool"; + addAttr -ci true -sn "k_rx" -ln "k_rx" -dv 1 -min 0 -max 1 -at "bool"; + addAttr -ci true -sn "k_ry" -ln "k_ry" -dv 1 -min 0 -max 1 -at "bool"; + addAttr -ci true -sn "k_rz" -ln "k_rz" -dv 1 -min 0 -max 1 -at "bool"; + addAttr -ci true -sn "k_sx" -ln "k_sx" -dv 1 -min 0 -max 1 -at "bool"; + addAttr -ci true -sn "k_sy" -ln "k_sy" -dv 1 -min 0 -max 1 -at "bool"; + addAttr -ci true -sn "k_sz" -ln "k_sz" -dv 1 -min 0 -max 1 -at "bool"; addAttr -ci true -sn "default_rotorder" -ln "default_rotorder" -min 0 -max 5 -at "long"; - addAttr -ci true -sn "neutralRotation" -ln "neutralRotation" -min 0 -max 1 -at "bool"; - addAttr -ci true -sn "ctlSize" -ln "ctlSize" -at "double"; + addAttr -ci true -sn "neutralRotation" -ln "neutralRotation" -dv 1 -min 0 -max 1 + -at "bool"; + addAttr -ci true -sn "mirrorBehaviour" -ln "mirrorBehaviour" -min 0 -max 1 -at "bool"; + addAttr -ci true -sn "ctlSize" -ln "ctlSize" -dv 8 -at "double"; addAttr -ci true -sn "useIndex" -ln "useIndex" -min 0 -max 1 -at "bool"; - addAttr -ci true -sn "parentJointIndex" -ln "parentJointIndex" -at "long"; + addAttr -ci true -sn "parentJointIndex" -ln "parentJointIndex" -dv -1 -at "long"; setAttr -k off -cb on ".v"; setAttr -k off -cb on ".tx"; setAttr -k off -cb on ".ty"; @@ -115,22 +168,8 @@ createNode transform -n "global_C0_root" -p "guide"; setAttr ".ctlGrp" -type "string" ""; setAttr ".icon" -type "string" "square"; setAttr ".ikrefarray" -type "string" ""; - setAttr ".uniScale" yes; - setAttr ".k_tx" yes; - setAttr ".k_ty" yes; - setAttr ".k_tz" yes; - setAttr ".k_ro" yes; - setAttr ".k_rx" yes; - setAttr ".k_ry" yes; - setAttr ".k_rz" yes; - setAttr ".k_sx" yes; - setAttr ".k_sy" yes; - setAttr ".k_sz" yes; - setAttr ".neutralRotation" yes; - setAttr ".ctlSize" 8; - setAttr ".parentJointIndex" -1; createNode nurbsCurve -n "global_C0_rootShape" -p "global_C0_root"; - rename -uid "0888C468-4D4C-E774-F1A0-E7B62199D44B"; + rename -uid "40C323DA-48D1-D859-E433-539B827A3B9A"; setAttr ".ihi" 0; setAttr -k off ".v"; setAttr ".ove" yes; @@ -142,8 +181,8 @@ createNode nurbsCurve -n "global_C0_rootShape" -p "global_C0_root"; 0.25 0 0 -0.25 0 0 ; -createNode nurbsCurve -n "global_C0_root1Shape" -p "global_C0_root"; - rename -uid "24C1B100-4B70-0005-1D5C-D889878EB8C2"; +createNode nurbsCurve -n "global_C0_root4Shape" -p "global_C0_root"; + rename -uid "1CD052FB-48BA-245E-A706-34ACE7A39FAB"; setAttr ".ihi" 0; setAttr -k off ".v"; setAttr ".ove" yes; @@ -155,8 +194,8 @@ createNode nurbsCurve -n "global_C0_root1Shape" -p "global_C0_root"; 0 0.25 0 0 -0.25 0 ; -createNode nurbsCurve -n "global_C0_root2Shape" -p "global_C0_root"; - rename -uid "80656DBF-43DD-DE2F-C705-A9A3CFB343D0"; +createNode nurbsCurve -n "global_C0_root5Shape" -p "global_C0_root"; + rename -uid "EE836821-453A-DE8A-B519-6CA5A099A6A0"; setAttr ".ihi" 0; setAttr -k off ".v"; setAttr ".ove" yes; @@ -168,8 +207,8 @@ createNode nurbsCurve -n "global_C0_root2Shape" -p "global_C0_root"; 0 0 0.25 0 0 -0.25 ; -createNode nurbsCurve -n "global_C0_root3Shape" -p "global_C0_root"; - rename -uid "7ECCC198-45F3-EA46-93C0-28ADF8021051"; +createNode nurbsCurve -n "global_C0_root6Shape" -p "global_C0_root"; + rename -uid "E6A582B9-48F4-C50F-5931-07BBEC227066"; setAttr ".ihi" 0; setAttr -k off ".v"; setAttr ".ove" yes; @@ -196,7 +235,7 @@ createNode nurbsCurve -n "global_C0_root3Shape" -p "global_C0_root"; -0.125 -0.125 -0.125 ; createNode transform -n "global_C0_sizeRef" -p "global_C0_root"; - rename -uid "5A23185F-4091-7EE2-7CB2-0B8D899C64B8"; + rename -uid "637739D6-4157-5FCF-366C-0F91E6BBD669"; addAttr -ci true -sn "isGearGuide" -ln "isGearGuide" -dv 1 -min 0 -max 1 -at "bool"; setAttr -k off -cb on ".v"; setAttr ".t" -type "double3" 0 0 1 ; @@ -211,7 +250,7 @@ createNode transform -n "global_C0_sizeRef" -p "global_C0_root"; setAttr -k off -cb on ".sy"; setAttr -k off -cb on ".sz"; createNode transform -n "local_C0_root" -p "global_C0_root"; - rename -uid "1D85A16B-4649-79B4-FB72-2D901C22C4ED"; + rename -uid "A1F273BE-493C-767E-4AE5-CA8CE06F26DF"; addAttr -ci true -sn "isGearGuide" -ln "isGearGuide" -dv 1 -min 0 -max 1 -at "bool"; addAttr -ci true -sn "comp_type" -ln "comp_type" -dt "string"; addAttr -ci true -sn "comp_name" -ln "comp_name" -dt "string"; @@ -223,22 +262,24 @@ createNode transform -n "local_C0_root" -p "global_C0_root"; addAttr -ci true -sn "icon" -ln "icon" -dt "string"; addAttr -ci true -sn "ikrefarray" -ln "ikrefarray" -dt "string"; addAttr -ci true -sn "joint" -ln "joint" -min 0 -max 1 -at "bool"; - addAttr -ci true -sn "uniScale" -ln "uniScale" -min 0 -max 1 -at "bool"; - addAttr -ci true -sn "k_tx" -ln "k_tx" -min 0 -max 1 -at "bool"; - addAttr -ci true -sn "k_ty" -ln "k_ty" -min 0 -max 1 -at "bool"; - addAttr -ci true -sn "k_tz" -ln "k_tz" -min 0 -max 1 -at "bool"; - addAttr -ci true -sn "k_ro" -ln "k_ro" -min 0 -max 1 -at "bool"; - addAttr -ci true -sn "k_rx" -ln "k_rx" -min 0 -max 1 -at "bool"; - addAttr -ci true -sn "k_ry" -ln "k_ry" -min 0 -max 1 -at "bool"; - addAttr -ci true -sn "k_rz" -ln "k_rz" -min 0 -max 1 -at "bool"; - addAttr -ci true -sn "k_sx" -ln "k_sx" -min 0 -max 1 -at "bool"; - addAttr -ci true -sn "k_sy" -ln "k_sy" -min 0 -max 1 -at "bool"; - addAttr -ci true -sn "k_sz" -ln "k_sz" -min 0 -max 1 -at "bool"; + addAttr -ci true -sn "uniScale" -ln "uniScale" -dv 1 -min 0 -max 1 -at "bool"; + addAttr -ci true -sn "k_tx" -ln "k_tx" -dv 1 -min 0 -max 1 -at "bool"; + addAttr -ci true -sn "k_ty" -ln "k_ty" -dv 1 -min 0 -max 1 -at "bool"; + addAttr -ci true -sn "k_tz" -ln "k_tz" -dv 1 -min 0 -max 1 -at "bool"; + addAttr -ci true -sn "k_ro" -ln "k_ro" -dv 1 -min 0 -max 1 -at "bool"; + addAttr -ci true -sn "k_rx" -ln "k_rx" -dv 1 -min 0 -max 1 -at "bool"; + addAttr -ci true -sn "k_ry" -ln "k_ry" -dv 1 -min 0 -max 1 -at "bool"; + addAttr -ci true -sn "k_rz" -ln "k_rz" -dv 1 -min 0 -max 1 -at "bool"; + addAttr -ci true -sn "k_sx" -ln "k_sx" -dv 1 -min 0 -max 1 -at "bool"; + addAttr -ci true -sn "k_sy" -ln "k_sy" -dv 1 -min 0 -max 1 -at "bool"; + addAttr -ci true -sn "k_sz" -ln "k_sz" -dv 1 -min 0 -max 1 -at "bool"; addAttr -ci true -sn "default_rotorder" -ln "default_rotorder" -min 0 -max 5 -at "long"; - addAttr -ci true -sn "neutralRotation" -ln "neutralRotation" -min 0 -max 1 -at "bool"; - addAttr -ci true -sn "ctlSize" -ln "ctlSize" -at "double"; + addAttr -ci true -sn "neutralRotation" -ln "neutralRotation" -dv 1 -min 0 -max 1 + -at "bool"; + addAttr -ci true -sn "mirrorBehaviour" -ln "mirrorBehaviour" -min 0 -max 1 -at "bool"; + addAttr -ci true -sn "ctlSize" -ln "ctlSize" -dv 6 -at "double"; addAttr -ci true -sn "useIndex" -ln "useIndex" -min 0 -max 1 -at "bool"; - addAttr -ci true -sn "parentJointIndex" -ln "parentJointIndex" -at "long"; + addAttr -ci true -sn "parentJointIndex" -ln "parentJointIndex" -dv -1 -at "long"; setAttr -k off -cb on ".v"; setAttr -k off -cb on ".tx"; setAttr -k off -cb on ".ty"; @@ -258,22 +299,8 @@ createNode transform -n "local_C0_root" -p "global_C0_root"; setAttr ".ctlGrp" -type "string" ""; setAttr ".icon" -type "string" "square"; setAttr ".ikrefarray" -type "string" ""; - setAttr ".uniScale" yes; - setAttr ".k_tx" yes; - setAttr ".k_ty" yes; - setAttr ".k_tz" yes; - setAttr ".k_ro" yes; - setAttr ".k_rx" yes; - setAttr ".k_ry" yes; - setAttr ".k_rz" yes; - setAttr ".k_sx" yes; - setAttr ".k_sy" yes; - setAttr ".k_sz" yes; - setAttr ".neutralRotation" yes; - setAttr ".ctlSize" 6; - setAttr ".parentJointIndex" -1; createNode nurbsCurve -n "local_C0_rootShape" -p "local_C0_root"; - rename -uid "0E302202-4705-61DE-7537-2296A14BBF13"; + rename -uid "7A69D641-408B-03AC-DF14-1D9827091AD8"; setAttr ".ihi" 0; setAttr -k off ".v"; setAttr ".ove" yes; @@ -285,8 +312,8 @@ createNode nurbsCurve -n "local_C0_rootShape" -p "local_C0_root"; 0.25 0 0 -0.25 0 0 ; -createNode nurbsCurve -n "local_C0_root1Shape" -p "local_C0_root"; - rename -uid "A30BEA63-49D0-A83B-8819-2AAD75B0E5E4"; +createNode nurbsCurve -n "local_C0_root4Shape" -p "local_C0_root"; + rename -uid "A7386352-46FA-73CA-B29C-919E7C23C7BD"; setAttr ".ihi" 0; setAttr -k off ".v"; setAttr ".ove" yes; @@ -298,8 +325,8 @@ createNode nurbsCurve -n "local_C0_root1Shape" -p "local_C0_root"; 0 0.25 0 0 -0.25 0 ; -createNode nurbsCurve -n "local_C0_root2Shape" -p "local_C0_root"; - rename -uid "21C9E095-42F7-A9DB-539A-BDBDED100268"; +createNode nurbsCurve -n "local_C0_root5Shape" -p "local_C0_root"; + rename -uid "B4274E28-4800-DC25-FF86-699B57A947E1"; setAttr ".ihi" 0; setAttr -k off ".v"; setAttr ".ove" yes; @@ -311,8 +338,8 @@ createNode nurbsCurve -n "local_C0_root2Shape" -p "local_C0_root"; 0 0 0.25 0 0 -0.25 ; -createNode nurbsCurve -n "local_C0_root3Shape" -p "local_C0_root"; - rename -uid "108A2AA1-466F-A33B-DB41-E88A5A6B7BFA"; +createNode nurbsCurve -n "local_C0_root6Shape" -p "local_C0_root"; + rename -uid "88AFD719-4550-4B69-3B59-478C4E5958A0"; setAttr ".ihi" 0; setAttr -k off ".v"; setAttr ".ove" yes; @@ -339,7 +366,7 @@ createNode nurbsCurve -n "local_C0_root3Shape" -p "local_C0_root"; -0.125 -0.125 -0.125 ; createNode transform -n "local_C0_sizeRef" -p "local_C0_root"; - rename -uid "B59F9E8A-47A7-4CCB-8694-159A6A00E427"; + rename -uid "F8890FE3-4192-3C70-DC00-B0B3A4BC5D78"; addAttr -ci true -sn "isGearGuide" -ln "isGearGuide" -dv 1 -min 0 -max 1 -at "bool"; setAttr -k off -cb on ".v"; setAttr ".t" -type "double3" 0 0 1 ; @@ -354,7 +381,7 @@ createNode transform -n "local_C0_sizeRef" -p "local_C0_root"; setAttr -k off -cb on ".sy"; setAttr -k off -cb on ".sz"; createNode transform -n "body_C0_root" -p "local_C0_root"; - rename -uid "67DFE83C-4DFE-B517-851F-17B65EBBA354"; + rename -uid "B97FFB2F-46AA-4920-0297-FDBA8DC75D3E"; addAttr -ci true -sn "isGearGuide" -ln "isGearGuide" -dv 1 -min 0 -max 1 -at "bool"; addAttr -ci true -sn "comp_type" -ln "comp_type" -dt "string"; addAttr -ci true -sn "comp_name" -ln "comp_name" -dt "string"; @@ -367,21 +394,24 @@ createNode transform -n "body_C0_root" -p "local_C0_root"; addAttr -ci true -sn "ikrefarray" -ln "ikrefarray" -dt "string"; addAttr -ci true -sn "joint" -ln "joint" -min 0 -max 1 -at "bool"; addAttr -ci true -sn "uniScale" -ln "uniScale" -min 0 -max 1 -at "bool"; - addAttr -ci true -sn "k_tx" -ln "k_tx" -min 0 -max 1 -at "bool"; - addAttr -ci true -sn "k_ty" -ln "k_ty" -min 0 -max 1 -at "bool"; - addAttr -ci true -sn "k_tz" -ln "k_tz" -min 0 -max 1 -at "bool"; - addAttr -ci true -sn "k_ro" -ln "k_ro" -min 0 -max 1 -at "bool"; - addAttr -ci true -sn "k_rx" -ln "k_rx" -min 0 -max 1 -at "bool"; - addAttr -ci true -sn "k_ry" -ln "k_ry" -min 0 -max 1 -at "bool"; - addAttr -ci true -sn "k_rz" -ln "k_rz" -min 0 -max 1 -at "bool"; + addAttr -ci true -sn "k_tx" -ln "k_tx" -dv 1 -min 0 -max 1 -at "bool"; + addAttr -ci true -sn "k_ty" -ln "k_ty" -dv 1 -min 0 -max 1 -at "bool"; + addAttr -ci true -sn "k_tz" -ln "k_tz" -dv 1 -min 0 -max 1 -at "bool"; + addAttr -ci true -sn "k_ro" -ln "k_ro" -dv 1 -min 0 -max 1 -at "bool"; + addAttr -ci true -sn "k_rx" -ln "k_rx" -dv 1 -min 0 -max 1 -at "bool"; + addAttr -ci true -sn "k_ry" -ln "k_ry" -dv 1 -min 0 -max 1 -at "bool"; + addAttr -ci true -sn "k_rz" -ln "k_rz" -dv 1 -min 0 -max 1 -at "bool"; addAttr -ci true -sn "k_sx" -ln "k_sx" -min 0 -max 1 -at "bool"; addAttr -ci true -sn "k_sy" -ln "k_sy" -min 0 -max 1 -at "bool"; addAttr -ci true -sn "k_sz" -ln "k_sz" -min 0 -max 1 -at "bool"; - addAttr -ci true -sn "default_rotorder" -ln "default_rotorder" -min 0 -max 5 -at "long"; - addAttr -ci true -sn "neutralRotation" -ln "neutralRotation" -min 0 -max 1 -at "bool"; - addAttr -ci true -sn "ctlSize" -ln "ctlSize" -at "double"; + addAttr -ci true -sn "default_rotorder" -ln "default_rotorder" -dv 2 -min 0 -max + 5 -at "long"; + addAttr -ci true -sn "neutralRotation" -ln "neutralRotation" -dv 1 -min 0 -max 1 + -at "bool"; + addAttr -ci true -sn "mirrorBehaviour" -ln "mirrorBehaviour" -min 0 -max 1 -at "bool"; + addAttr -ci true -sn "ctlSize" -ln "ctlSize" -dv 3 -at "double"; addAttr -ci true -sn "useIndex" -ln "useIndex" -min 0 -max 1 -at "bool"; - addAttr -ci true -sn "parentJointIndex" -ln "parentJointIndex" -at "long"; + addAttr -ci true -sn "parentJointIndex" -ln "parentJointIndex" -dv -1 -at "long"; setAttr -k off -cb on ".v"; setAttr ".t" -type "double3" 0 10.853210488970383 0.18241213460091918 ; setAttr -k off -cb on ".tx"; @@ -392,7 +422,7 @@ createNode transform -n "body_C0_root" -p "local_C0_root"; setAttr -k off -cb on ".ry"; setAttr -k off -cb on ".rz"; setAttr -cb on ".ro"; - setAttr ".s" -type "double3" 1.8613851194869442 1.8613851194869344 1.8613851194869442 ; + setAttr ".s" -type "double3" 1.8613851194869446 1.8613851194869344 1.8613851194869446 ; setAttr -k off -cb on ".sx"; setAttr -k off -cb on ".sy"; setAttr -k off -cb on ".sz"; @@ -404,19 +434,8 @@ createNode transform -n "body_C0_root" -p "local_C0_root"; setAttr ".ctlGrp" -type "string" ""; setAttr ".icon" -type "string" "square"; setAttr ".ikrefarray" -type "string" ""; - setAttr ".k_tx" yes; - setAttr ".k_ty" yes; - setAttr ".k_tz" yes; - setAttr ".k_ro" yes; - setAttr ".k_rx" yes; - setAttr ".k_ry" yes; - setAttr ".k_rz" yes; - setAttr ".default_rotorder" 2; - setAttr ".neutralRotation" yes; - setAttr ".ctlSize" 3; - setAttr ".parentJointIndex" -1; createNode nurbsCurve -n "body_C0_rootShape" -p "body_C0_root"; - rename -uid "DE6B6F5D-4C24-C252-831E-E78EF36569FA"; + rename -uid "EED1AEDE-450F-5D41-32D8-A3A358470F53"; setAttr ".ihi" 0; setAttr -k off ".v"; setAttr ".ove" yes; @@ -428,8 +447,8 @@ createNode nurbsCurve -n "body_C0_rootShape" -p "body_C0_root"; 0.25 0 0 -0.25 0 0 ; -createNode nurbsCurve -n "body_C0_root25Shape" -p "body_C0_root"; - rename -uid "5CAD877E-44D3-7DC3-164E-12967ADD0219"; +createNode nurbsCurve -n "body_C0_root28Shape" -p "body_C0_root"; + rename -uid "7068D1B5-44E1-4E2A-A4CC-3AB444A1E627"; setAttr ".ihi" 0; setAttr -k off ".v"; setAttr ".ove" yes; @@ -441,8 +460,8 @@ createNode nurbsCurve -n "body_C0_root25Shape" -p "body_C0_root"; 0 0.25 0 0 -0.25 0 ; -createNode nurbsCurve -n "body_C0_root26Shape" -p "body_C0_root"; - rename -uid "C59BB543-4BC9-7AFC-82DC-F4A0504FE2F3"; +createNode nurbsCurve -n "body_C0_root29Shape" -p "body_C0_root"; + rename -uid "D29F71BF-41FF-0D90-CDA8-2F88C025226F"; setAttr ".ihi" 0; setAttr -k off ".v"; setAttr ".ove" yes; @@ -454,8 +473,8 @@ createNode nurbsCurve -n "body_C0_root26Shape" -p "body_C0_root"; 0 0 0.25 0 0 -0.25 ; -createNode nurbsCurve -n "body_C0_root27Shape" -p "body_C0_root"; - rename -uid "6007CE16-4076-99B9-825F-6DB6888E51F7"; +createNode nurbsCurve -n "body_C0_root30Shape" -p "body_C0_root"; + rename -uid "8553D652-4F3C-0230-F2CB-C0ADA8395B34"; setAttr ".ihi" 0; setAttr -k off ".v"; setAttr ".ove" yes; @@ -482,10 +501,10 @@ createNode nurbsCurve -n "body_C0_root27Shape" -p "body_C0_root"; -0.125 -0.125 -0.125 ; createNode transform -n "body_C0_sizeRef" -p "body_C0_root"; - rename -uid "146C80F8-4B26-FA2E-C413-1B9E825B141E"; + rename -uid "3D144055-4D7E-9DBF-9B9E-09937D73E7F7"; addAttr -ci true -sn "isGearGuide" -ln "isGearGuide" -dv 1 -min 0 -max 1 -at "bool"; setAttr -k off -cb on ".v"; - setAttr ".t" -type "double3" 0.53723433669418785 0 1.1928998604342214e-016 ; + setAttr ".t" -type "double3" 0.53723433669418763 0 1.1928998604342207e-016 ; setAttr -k off -cb on ".tx"; setAttr -k off -cb on ".ty"; setAttr -k off -cb on ".tz"; @@ -494,12 +513,12 @@ createNode transform -n "body_C0_sizeRef" -p "body_C0_root"; setAttr -k off -cb on ".ry"; setAttr -k off -cb on ".rz"; setAttr -cb on ".ro"; - setAttr ".s" -type "double3" 0.53723433669418785 0.53723433669419063 0.53723433669418785 ; + setAttr ".s" -type "double3" 0.53723433669418774 0.53723433669419063 0.53723433669418774 ; setAttr -k off -cb on ".sx"; setAttr -k off -cb on ".sy"; setAttr -k off -cb on ".sz"; createNode transform -n "spine_C0_root" -p "body_C0_root"; - rename -uid "4264760D-4C42-4F59-FBCE-92A48C305988"; + rename -uid "D83C516E-4DDD-92FC-0DA0-BE943E363D0E"; addAttr -ci true -sn "isGearGuide" -ln "isGearGuide" -dv 1 -min 0 -max 1 -at "bool"; addAttr -ci true -sn "comp_type" -ln "comp_type" -dt "string"; addAttr -ci true -sn "comp_name" -ln "comp_name" -dt "string"; @@ -509,19 +528,19 @@ createNode transform -n "spine_C0_root" -p "body_C0_root"; addAttr -ci true -sn "ui_host" -ln "ui_host" -dt "string"; addAttr -ci true -sn "ctlGrp" -ln "ctlGrp" -dt "string"; addAttr -ci true -sn "position" -ln "position" -min 0 -max 1 -at "double"; - addAttr -ci true -sn "maxstretch" -ln "maxstretch" -dv 1 -min 1 -at "double"; - addAttr -ci true -sn "maxsquash" -ln "maxsquash" -min 0 -max 1 -at "double"; + addAttr -ci true -sn "maxstretch" -ln "maxstretch" -dv 1.5 -min 1 -at "double"; + addAttr -ci true -sn "maxsquash" -ln "maxsquash" -dv 0.5 -min 0 -max 1 -at "double"; addAttr -ci true -sn "softness" -ln "softness" -min 0 -max 1 -at "double"; - addAttr -ci true -sn "lock_ori" -ln "lock_ori" -min 0 -max 1 -at "double"; - addAttr -ci true -sn "division" -ln "division" -dv 3 -min 3 -at "long"; - addAttr -ci true -sn "autoBend" -ln "autoBend" -min 0 -max 1 -at "bool"; - addAttr -ci true -sn "centralTangent" -ln "centralTangent" -min 0 -max 1 -at "bool"; + addAttr -ci true -sn "lock_ori" -ln "lock_ori" -dv 1 -min 0 -max 1 -at "double"; + addAttr -ci true -sn "division" -ln "division" -dv 5 -min 3 -at "long"; + addAttr -ci true -sn "autoBend" -ln "autoBend" -dv 1 -min 0 -max 1 -at "bool"; + addAttr -ci true -sn "centralTangent" -ln "centralTangent" -dv 1 -min 0 -max 1 -at "bool"; addAttr -ci true -k true -sn "st_profile" -ln "st_profile" -at "double"; addAttr -ci true -k true -sn "sq_profile" -ln "sq_profile" -at "double"; addAttr -ci true -sn "useIndex" -ln "useIndex" -min 0 -max 1 -at "bool"; - addAttr -ci true -sn "parentJointIndex" -ln "parentJointIndex" -at "long"; + addAttr -ci true -sn "parentJointIndex" -ln "parentJointIndex" -dv -1 -at "long"; setAttr -k off -cb on ".v"; - setAttr ".t" -type "double3" -5.5511151231257827e-017 1.7763568394002505e-015 -1.8488927466117464e-032 ; + setAttr ".t" -type "double3" -6.9388939039072284e-017 1.7763568394002505e-015 -2.1570415377137042e-032 ; setAttr -k off -cb on ".tx"; setAttr -k off -cb on ".ty"; setAttr -k off -cb on ".tz"; @@ -530,7 +549,7 @@ createNode transform -n "spine_C0_root" -p "body_C0_root"; setAttr -k off -cb on ".ry"; setAttr -k off -cb on ".rz"; setAttr -cb on ".ro"; - setAttr ".s" -type "double3" 0.51189149642410492 0.51189149642410281 0.51189149642410203 ; + setAttr ".s" -type "double3" 0.51189149642410492 0.51189149642410259 0.51189149642410181 ; setAttr -k off -cb on ".sx"; setAttr -k off -cb on ".sy"; setAttr -k off -cb on ".sz"; @@ -540,17 +559,10 @@ createNode transform -n "spine_C0_root" -p "body_C0_root"; setAttr ".connector" -type "string" "standard"; setAttr ".ui_host" -type "string" "spineUI_C0_root"; setAttr ".ctlGrp" -type "string" ""; - setAttr ".maxstretch" 1.5; - setAttr ".maxsquash" 0.5; - setAttr ".lock_ori" 1; - setAttr ".division" 5; - setAttr ".autoBend" yes; - setAttr ".centralTangent" yes; setAttr -k on ".st_profile"; setAttr -k on ".sq_profile"; - setAttr ".parentJointIndex" -1; createNode nurbsCurve -n "spine_C0_rootShape" -p "spine_C0_root"; - rename -uid "CF73C17F-40D7-7DA8-E295-61B19CDF1843"; + rename -uid "FC6BD12F-4E09-3426-3345-DF84D72D01B0"; setAttr ".ihi" 0; setAttr -k off ".v"; setAttr ".ove" yes; @@ -562,8 +574,8 @@ createNode nurbsCurve -n "spine_C0_rootShape" -p "spine_C0_root"; 0.25 0 0 -0.25 0 0 ; -createNode nurbsCurve -n "spine_C0_root25Shape" -p "spine_C0_root"; - rename -uid "3D30A8F2-4C19-DFA9-8FA1-36B6420416B4"; +createNode nurbsCurve -n "spine_C0_root28Shape" -p "spine_C0_root"; + rename -uid "486E846B-4FAD-AA6D-8FA9-0B9E40AFDB6A"; setAttr ".ihi" 0; setAttr -k off ".v"; setAttr ".ove" yes; @@ -575,8 +587,8 @@ createNode nurbsCurve -n "spine_C0_root25Shape" -p "spine_C0_root"; 0 0.25 0 0 -0.25 0 ; -createNode nurbsCurve -n "spine_C0_root26Shape" -p "spine_C0_root"; - rename -uid "140E8904-4927-164C-BF22-8E8C927B0787"; +createNode nurbsCurve -n "spine_C0_root29Shape" -p "spine_C0_root"; + rename -uid "EAF9B8FD-4685-3D62-EF18-FDBCA73A99F8"; setAttr ".ihi" 0; setAttr -k off ".v"; setAttr ".ove" yes; @@ -588,8 +600,8 @@ createNode nurbsCurve -n "spine_C0_root26Shape" -p "spine_C0_root"; 0 0 0.25 0 0 -0.25 ; -createNode nurbsCurve -n "spine_C0_root27Shape" -p "spine_C0_root"; - rename -uid "547544D7-43A1-A36D-D8AD-F089135D3D45"; +createNode nurbsCurve -n "spine_C0_root30Shape" -p "spine_C0_root"; + rename -uid "F4DF86D9-4D3E-604A-6981-A6822749082B"; setAttr ".ihi" 0; setAttr -k off ".v"; setAttr ".ove" yes; @@ -616,7 +628,7 @@ createNode nurbsCurve -n "spine_C0_root27Shape" -p "spine_C0_root"; -0.125 -0.125 -0.125 ; createNode transform -n "spine_C0_eff" -p "spine_C0_root"; - rename -uid "9237A6EC-4349-7310-EDE6-15AFE725AEDE"; + rename -uid "7EA4BFFC-49B6-A3BC-A38B-E1ACA4483EE4"; addAttr -ci true -sn "isGearGuide" -ln "isGearGuide" -dv 1 -min 0 -max 1 -at "bool"; setAttr -k off -cb on ".v"; setAttr ".t" -type "double3" 2.3760066881565312 -1.6930901125533637e-015 1.2325951644078309e-031 ; @@ -627,12 +639,12 @@ createNode transform -n "spine_C0_eff" -p "spine_C0_root"; setAttr -k off -cb on ".ry"; setAttr -k off -cb on ".rz"; setAttr -cb on ".ro"; - setAttr ".s" -type "double3" 1.0000000000000013 0.99999999999999933 0.99999999999999956 ; + setAttr ".s" -type "double3" 1.0000000000000011 0.99999999999999944 0.99999999999999956 ; setAttr -k off -cb on ".sx"; setAttr -k off -cb on ".sy"; setAttr -k off -cb on ".sz"; createNode nurbsCurve -n "spine_C0_effShape" -p "spine_C0_eff"; - rename -uid "56576215-4469-95AF-B698-E5818CF0F303"; + rename -uid "529DD8F4-4B8F-E796-E69B-8B90FDA72289"; setAttr ".ihi" 0; setAttr -k off ".v"; setAttr ".ove" yes; @@ -644,8 +656,8 @@ createNode nurbsCurve -n "spine_C0_effShape" -p "spine_C0_eff"; 0.25 0 0 -0.25 0 0 ; -createNode nurbsCurve -n "spine_C0_eff25Shape" -p "spine_C0_eff"; - rename -uid "F249C8BF-4B46-F005-C09A-39BC8F055386"; +createNode nurbsCurve -n "spine_C0_eff28Shape" -p "spine_C0_eff"; + rename -uid "766A6756-4CF9-F63B-195B-06B345E22922"; setAttr ".ihi" 0; setAttr -k off ".v"; setAttr ".ove" yes; @@ -657,8 +669,8 @@ createNode nurbsCurve -n "spine_C0_eff25Shape" -p "spine_C0_eff"; 0 0.25 0 0 -0.25 0 ; -createNode nurbsCurve -n "spine_C0_eff26Shape" -p "spine_C0_eff"; - rename -uid "98848A5E-4EAF-881A-6AB8-1C822CD8C41A"; +createNode nurbsCurve -n "spine_C0_eff29Shape" -p "spine_C0_eff"; + rename -uid "A822A40F-4478-19BF-EF5B-46861766F411"; setAttr ".ihi" 0; setAttr -k off ".v"; setAttr ".ove" yes; @@ -670,8 +682,8 @@ createNode nurbsCurve -n "spine_C0_eff26Shape" -p "spine_C0_eff"; 0 0 0.25 0 0 -0.25 ; -createNode nurbsCurve -n "spine_C0_eff27Shape" -p "spine_C0_eff"; - rename -uid "D74A66C6-467C-BB11-3213-BB9CBA14EA68"; +createNode nurbsCurve -n "spine_C0_eff30Shape" -p "spine_C0_eff"; + rename -uid "190744A1-486D-3A70-05B4-FEA64230267C"; setAttr ".ihi" 0; setAttr -k off ".v"; setAttr ".ove" yes; @@ -688,8 +700,8 @@ createNode nurbsCurve -n "spine_C0_eff27Shape" -p "spine_C0_eff"; 0 -0.1875 0 -0.1875 0 0 ; -createNode nurbsCurve -n "spine_C0_eff27_0crvShape" -p "spine_C0_eff"; - rename -uid "D9FC3E11-4D86-24FD-F308-8B9C7C5A3333"; +createNode nurbsCurve -n "spine_C0_eff30_0crvShape" -p "spine_C0_eff"; + rename -uid "C8CDB49D-4C00-757E-5698-24B142667E09"; setAttr ".ihi" 0; setAttr -k off ".v"; setAttr ".ove" yes; @@ -706,8 +718,8 @@ createNode nurbsCurve -n "spine_C0_eff27_0crvShape" -p "spine_C0_eff"; 0 0 -0.1875 -0.1875 0 0 ; -createNode nurbsCurve -n "spine_C0_eff27_1crvShape" -p "spine_C0_eff"; - rename -uid "167596A0-42F6-8B48-5A57-2E82F7EA2B09"; +createNode nurbsCurve -n "spine_C0_eff30_1crvShape" -p "spine_C0_eff"; + rename -uid "ADCE79EA-4345-F684-9A40-5E8D3ECDCB4C"; setAttr ".ihi" 0; setAttr -k off ".v"; setAttr ".ove" yes; @@ -725,7 +737,7 @@ createNode nurbsCurve -n "spine_C0_eff27_1crvShape" -p "spine_C0_eff"; 0 0 -0.1875 ; createNode transform -n "spineUI_C0_root" -p "spine_C0_eff"; - rename -uid "AA3EA0D4-482B-8890-D0C5-50B0BB968413"; + rename -uid "35F3E27C-48C4-8C2B-ED37-98A2F21603FE"; addAttr -ci true -sn "isGearGuide" -ln "isGearGuide" -dv 1 -min 0 -max 1 -at "bool"; addAttr -ci true -sn "comp_type" -ln "comp_type" -dt "string"; addAttr -ci true -sn "comp_name" -ln "comp_name" -dt "string"; @@ -749,12 +761,14 @@ createNode transform -n "spineUI_C0_root" -p "spine_C0_eff"; addAttr -ci true -sn "k_sy" -ln "k_sy" -min 0 -max 1 -at "bool"; addAttr -ci true -sn "k_sz" -ln "k_sz" -min 0 -max 1 -at "bool"; addAttr -ci true -sn "default_rotorder" -ln "default_rotorder" -min 0 -max 5 -at "long"; - addAttr -ci true -sn "neutralRotation" -ln "neutralRotation" -min 0 -max 1 -at "bool"; - addAttr -ci true -sn "ctlSize" -ln "ctlSize" -at "double"; + addAttr -ci true -sn "neutralRotation" -ln "neutralRotation" -dv 1 -min 0 -max 1 + -at "bool"; + addAttr -ci true -sn "mirrorBehaviour" -ln "mirrorBehaviour" -min 0 -max 1 -at "bool"; + addAttr -ci true -sn "ctlSize" -ln "ctlSize" -dv 1 -at "double"; addAttr -ci true -sn "useIndex" -ln "useIndex" -min 0 -max 1 -at "bool"; - addAttr -ci true -sn "parentJointIndex" -ln "parentJointIndex" -at "long"; + addAttr -ci true -sn "parentJointIndex" -ln "parentJointIndex" -dv -1 -at "long"; setAttr -k off -cb on ".v"; - setAttr ".t" -type "double3" 3.2578484988603371 0.60394549966678479 -1.9764781265571727 ; + setAttr ".t" -type "double3" 3.2578484988603389 0.60394549966678479 -1.9764781265571729 ; setAttr -k off -cb on ".tx"; setAttr -k off -cb on ".ty"; setAttr -k off -cb on ".tz"; @@ -763,7 +777,7 @@ createNode transform -n "spineUI_C0_root" -p "spine_C0_eff"; setAttr -k off -cb on ".ry"; setAttr -k off -cb on ".rz"; setAttr -cb on ".ro"; - setAttr ".s" -type "double3" 0.88775990675476246 0.88775990675476002 0.88775990675475902 ; + setAttr ".s" -type "double3" 0.88775990675476268 0.88775990675476024 0.88775990675475924 ; setAttr -k off -cb on ".sx"; setAttr -k off -cb on ".sy"; setAttr -k off -cb on ".sz"; @@ -775,11 +789,8 @@ createNode transform -n "spineUI_C0_root" -p "spine_C0_eff"; setAttr ".ctlGrp" -type "string" ""; setAttr ".icon" -type "string" "cross"; setAttr ".ikrefarray" -type "string" ""; - setAttr ".neutralRotation" yes; - setAttr ".ctlSize" 1; - setAttr ".parentJointIndex" -1; createNode nurbsCurve -n "spineUI_C0_rootShape" -p "spineUI_C0_root"; - rename -uid "295175C3-4A63-C851-EC4A-D98196B68364"; + rename -uid "E1C966BD-4758-22A0-E09D-DF81103EF0C8"; setAttr ".ihi" 0; setAttr -k off ".v"; setAttr ".ove" yes; @@ -791,8 +802,8 @@ createNode nurbsCurve -n "spineUI_C0_rootShape" -p "spineUI_C0_root"; 0.25 0 0 -0.25 0 0 ; -createNode nurbsCurve -n "spineUI_C0_root25Shape" -p "spineUI_C0_root"; - rename -uid "92D8FBB0-49C1-19BC-3B3B-0B9F8E8FAB23"; +createNode nurbsCurve -n "spineUI_C0_root28Shape" -p "spineUI_C0_root"; + rename -uid "70A77FDE-475D-99AA-7FFA-DFB997DACE67"; setAttr ".ihi" 0; setAttr -k off ".v"; setAttr ".ove" yes; @@ -804,8 +815,8 @@ createNode nurbsCurve -n "spineUI_C0_root25Shape" -p "spineUI_C0_root"; 0 0.25 0 0 -0.25 0 ; -createNode nurbsCurve -n "spineUI_C0_root26Shape" -p "spineUI_C0_root"; - rename -uid "52662B36-4C1A-0F07-44DE-E1BF90575AFC"; +createNode nurbsCurve -n "spineUI_C0_root29Shape" -p "spineUI_C0_root"; + rename -uid "5BB68AF0-438A-6FC6-1889-57A2E8074445"; setAttr ".ihi" 0; setAttr -k off ".v"; setAttr ".ove" yes; @@ -817,8 +828,8 @@ createNode nurbsCurve -n "spineUI_C0_root26Shape" -p "spineUI_C0_root"; 0 0 0.25 0 0 -0.25 ; -createNode nurbsCurve -n "spineUI_C0_root27Shape" -p "spineUI_C0_root"; - rename -uid "62C579B6-4044-FD36-7734-19A33CC235F8"; +createNode nurbsCurve -n "spineUI_C0_root30Shape" -p "spineUI_C0_root"; + rename -uid "A73CC0EA-4520-1810-EB87-D3B21FB469C1"; setAttr ".ihi" 0; setAttr -k off ".v"; setAttr ".ove" yes; @@ -845,10 +856,10 @@ createNode nurbsCurve -n "spineUI_C0_root27Shape" -p "spineUI_C0_root"; -0.125 -0.125 -0.125 ; createNode transform -n "spineUI_C0_sizeRef" -p "spineUI_C0_root"; - rename -uid "1AE0125B-4C75-2626-E505-E180B7E04A8F"; + rename -uid "D93B789F-46AC-EC15-5B1C-D095937E79B6"; addAttr -ci true -sn "isGearGuide" -ln "isGearGuide" -dv 1 -min 0 -max 1 -at "bool"; setAttr -k off -cb on ".v"; - setAttr ".t" -type "double3" 0 3.5527136788005009e-015 1.1821982708976555 ; + setAttr ".t" -type "double3" 0 0 1.1821982708976553 ; setAttr -k off -cb on ".tx"; setAttr -k off -cb on ".ty"; setAttr -k off -cb on ".tz"; @@ -856,12 +867,12 @@ createNode transform -n "spineUI_C0_sizeRef" -p "spineUI_C0_root"; setAttr -k off -cb on ".ry"; setAttr -k off -cb on ".rz"; setAttr -cb on ".ro"; - setAttr ".s" -type "double3" 1.1821982708976524 1.1821982708976531 1.1821982708976555 ; + setAttr ".s" -type "double3" 1.1821982708976522 1.1821982708976528 1.1821982708976551 ; setAttr -k off -cb on ".sx"; setAttr -k off -cb on ".sy"; setAttr -k off -cb on ".sz"; createNode transform -n "shoulder_L0_root" -p "spine_C0_eff"; - rename -uid "B984EF84-4F3F-E970-E880-C6B570858F3D"; + rename -uid "54552A76-4CF1-F277-72D0-E7B9261EC0AE"; addAttr -ci true -sn "isGearGuide" -ln "isGearGuide" -dv 1 -min 0 -max 1 -at "bool"; addAttr -ci true -sn "comp_type" -ln "comp_type" -dt "string"; addAttr -ci true -sn "comp_name" -ln "comp_name" -dt "string"; @@ -872,9 +883,9 @@ createNode transform -n "shoulder_L0_root" -p "spine_C0_eff"; addAttr -ci true -sn "ctlGrp" -ln "ctlGrp" -dt "string"; addAttr -ci true -sn "refArray" -ln "refArray" -dt "string"; addAttr -ci true -sn "useIndex" -ln "useIndex" -min 0 -max 1 -at "bool"; - addAttr -ci true -sn "parentJointIndex" -ln "parentJointIndex" -at "long"; + addAttr -ci true -sn "parentJointIndex" -ln "parentJointIndex" -dv -1 -at "long"; setAttr -k off -cb on ".v"; - setAttr ".t" -type "double3" 1.7395848890977366 -0.016853043661003347 -0.11673327753265016 ; + setAttr ".t" -type "double3" 1.7395848890977383 -0.016853043661003403 -0.11673327753265017 ; setAttr -k off -cb on ".tx"; setAttr -k off -cb on ".ty"; setAttr -k off -cb on ".tz"; @@ -883,7 +894,7 @@ createNode transform -n "shoulder_L0_root" -p "spine_C0_eff"; setAttr -k off -cb on ".ry"; setAttr -k off -cb on ".rz"; setAttr -cb on ".ro"; - setAttr ".s" -type "double3" 1.000000000000002 1.0000000000000027 0.99999999999999956 ; + setAttr ".s" -type "double3" 1.0000000000000022 1.0000000000000029 0.99999999999999978 ; setAttr -k off -cb on ".sx"; setAttr -k off -cb on ".sy"; setAttr -k off -cb on ".sz"; @@ -894,9 +905,8 @@ createNode transform -n "shoulder_L0_root" -p "spine_C0_eff"; setAttr ".ui_host" -type "string" "armUI_L0_root"; setAttr ".ctlGrp" -type "string" ""; setAttr ".refArray" -type "string" "shoulder_L0_root,local_C0_root,body_C0_root,spine_C0_eff,global_C0_root"; - setAttr ".parentJointIndex" -1; createNode nurbsCurve -n "shoulder_L0_rootShape" -p "shoulder_L0_root"; - rename -uid "E7F7E836-47A9-EBCD-0442-DCBE1208D9D1"; + rename -uid "B7C33AAA-484F-5A4F-E8E2-B6B8733DA506"; setAttr ".ihi" 0; setAttr -k off ".v"; setAttr ".ove" yes; @@ -908,8 +918,8 @@ createNode nurbsCurve -n "shoulder_L0_rootShape" -p "shoulder_L0_root"; 0.25 0 0 -0.25 0 0 ; -createNode nurbsCurve -n "shoulder_L0_root25Shape" -p "shoulder_L0_root"; - rename -uid "E20F966E-4205-07E2-4B34-508130070F6D"; +createNode nurbsCurve -n "shoulder_L0_root28Shape" -p "shoulder_L0_root"; + rename -uid "73DE8BA7-439E-BD8C-13D9-98A6014E5A77"; setAttr ".ihi" 0; setAttr -k off ".v"; setAttr ".ove" yes; @@ -921,8 +931,8 @@ createNode nurbsCurve -n "shoulder_L0_root25Shape" -p "shoulder_L0_root"; 0 0.25 0 0 -0.25 0 ; -createNode nurbsCurve -n "shoulder_L0_root26Shape" -p "shoulder_L0_root"; - rename -uid "E21373E4-482B-28C9-CA34-4FBA44885B87"; +createNode nurbsCurve -n "shoulder_L0_root29Shape" -p "shoulder_L0_root"; + rename -uid "067F9D45-474A-9858-E512-50BDCBFA1950"; setAttr ".ihi" 0; setAttr -k off ".v"; setAttr ".ove" yes; @@ -934,8 +944,8 @@ createNode nurbsCurve -n "shoulder_L0_root26Shape" -p "shoulder_L0_root"; 0 0 0.25 0 0 -0.25 ; -createNode nurbsCurve -n "shoulder_L0_root27Shape" -p "shoulder_L0_root"; - rename -uid "E9A25A03-4642-F597-F161-229F4F9CE9E8"; +createNode nurbsCurve -n "shoulder_L0_root30Shape" -p "shoulder_L0_root"; + rename -uid "BB35AE0F-4885-446B-0F13-29848AA9F7CB"; setAttr ".ihi" 0; setAttr -k off ".v"; setAttr ".ove" yes; @@ -962,10 +972,10 @@ createNode nurbsCurve -n "shoulder_L0_root27Shape" -p "shoulder_L0_root"; -0.125 -0.125 -0.125 ; createNode transform -n "shoulder_L0_tip" -p "shoulder_L0_root"; - rename -uid "A5AD84BF-4B7B-02F7-0E9B-5696728DABC2"; + rename -uid "062808CA-4909-816E-1D20-5CA051561DCE"; addAttr -ci true -sn "isGearGuide" -ln "isGearGuide" -dv 1 -min 0 -max 1 -at "bool"; setAttr -k off -cb on ".v"; - setAttr ".t" -type "double3" 0.33303929285645495 -0.91350954729966849 -1.5239746815175861 ; + setAttr ".t" -type "double3" 0.3330392928564585 -0.91350954729966838 -1.5239746815175856 ; setAttr -k off -cb on ".tx"; setAttr -k off -cb on ".ty"; setAttr -k off -cb on ".tz"; @@ -973,12 +983,12 @@ createNode transform -n "shoulder_L0_tip" -p "shoulder_L0_root"; setAttr -k off -cb on ".ry"; setAttr -k off -cb on ".rz"; setAttr -cb on ".ro"; - setAttr ".s" -type "double3" 0.99999999999999845 0.99999999999999623 0.99999999999999867 ; + setAttr ".s" -type "double3" 0.99999999999999822 0.999999999999996 0.99999999999999845 ; setAttr -k off -cb on ".sx"; setAttr -k off -cb on ".sy"; setAttr -k off -cb on ".sz"; createNode nurbsCurve -n "shoulder_L0_tipShape" -p "shoulder_L0_tip"; - rename -uid "B1EE12B4-4802-A0B7-E778-BA8BD0A9A2C1"; + rename -uid "37C22F0A-4224-9626-6122-0B874EDBD7E4"; setAttr ".ihi" 0; setAttr -k off ".v"; setAttr ".ove" yes; @@ -990,8 +1000,8 @@ createNode nurbsCurve -n "shoulder_L0_tipShape" -p "shoulder_L0_tip"; 0.25 0 0 -0.25 0 0 ; -createNode nurbsCurve -n "shoulder_L0_tip25Shape" -p "shoulder_L0_tip"; - rename -uid "C1A78790-4D1D-3D3D-B2B2-E5A6741E5BE6"; +createNode nurbsCurve -n "shoulder_L0_tip28Shape" -p "shoulder_L0_tip"; + rename -uid "F15D98C8-4369-DFF3-1756-4BB4495B01F2"; setAttr ".ihi" 0; setAttr -k off ".v"; setAttr ".ove" yes; @@ -1003,8 +1013,8 @@ createNode nurbsCurve -n "shoulder_L0_tip25Shape" -p "shoulder_L0_tip"; 0 0.25 0 0 -0.25 0 ; -createNode nurbsCurve -n "shoulder_L0_tip26Shape" -p "shoulder_L0_tip"; - rename -uid "199A51E3-45D4-DEB2-0C1C-DABB26D461A5"; +createNode nurbsCurve -n "shoulder_L0_tip29Shape" -p "shoulder_L0_tip"; + rename -uid "99B9C297-4338-DA43-EDEE-80B57C305D1C"; setAttr ".ihi" 0; setAttr -k off ".v"; setAttr ".ove" yes; @@ -1016,8 +1026,8 @@ createNode nurbsCurve -n "shoulder_L0_tip26Shape" -p "shoulder_L0_tip"; 0 0 0.25 0 0 -0.25 ; -createNode nurbsCurve -n "shoulder_L0_tip27Shape" -p "shoulder_L0_tip"; - rename -uid "9BA84C80-4A79-8CBE-4102-DBA2D20C5E2F"; +createNode nurbsCurve -n "shoulder_L0_tip30Shape" -p "shoulder_L0_tip"; + rename -uid "38C78B7B-49D0-9B64-EE4A-8D9541F02BC4"; setAttr ".ihi" 0; setAttr -k off ".v"; setAttr ".ove" yes; @@ -1034,8 +1044,8 @@ createNode nurbsCurve -n "shoulder_L0_tip27Shape" -p "shoulder_L0_tip"; 0 -0.1875 0 -0.1875 0 0 ; -createNode nurbsCurve -n "shoulder_L0_tip27_0crvShape" -p "shoulder_L0_tip"; - rename -uid "5EEC213F-4F59-7F81-3135-6A907F720ED6"; +createNode nurbsCurve -n "shoulder_L0_tip30_0crvShape" -p "shoulder_L0_tip"; + rename -uid "EED61E9B-4651-A2DE-678D-A3824B4D49F4"; setAttr ".ihi" 0; setAttr -k off ".v"; setAttr ".ove" yes; @@ -1052,8 +1062,8 @@ createNode nurbsCurve -n "shoulder_L0_tip27_0crvShape" -p "shoulder_L0_tip"; 0 0 -0.1875 -0.1875 0 0 ; -createNode nurbsCurve -n "shoulder_L0_tip27_1crvShape" -p "shoulder_L0_tip"; - rename -uid "4F4CC602-418A-A67B-255A-53872F294ED0"; +createNode nurbsCurve -n "shoulder_L0_tip30_1crvShape" -p "shoulder_L0_tip"; + rename -uid "506E7F21-4801-A702-580B-F9BBDF9A0165"; setAttr ".ihi" 0; setAttr -k off ".v"; setAttr ".ove" yes; @@ -1071,7 +1081,7 @@ createNode nurbsCurve -n "shoulder_L0_tip27_1crvShape" -p "shoulder_L0_tip"; 0 0 -0.1875 ; createNode transform -n "arm_L0_root" -p "shoulder_L0_tip"; - rename -uid "863B6A76-4CDA-B65E-8E46-7FBD8E7AA141"; + rename -uid "5419560D-4DA0-3FD7-6667-518B37C3F6DB"; addAttr -ci true -sn "isGearGuide" -ln "isGearGuide" -dv 1 -min 0 -max 1 -at "bool"; addAttr -ci true -sn "comp_type" -ln "comp_type" -dt "string"; addAttr -ci true -sn "comp_name" -ln "comp_name" -dt "string"; @@ -1084,49 +1094,43 @@ createNode transform -n "arm_L0_root" -p "shoulder_L0_tip"; addAttr -ci true -sn "ikrefarray" -ln "ikrefarray" -dt "string"; addAttr -ci true -sn "upvrefarray" -ln "upvrefarray" -dt "string"; addAttr -ci true -sn "pinrefarray" -ln "pinrefarray" -dt "string"; - addAttr -ci true -sn "maxstretch" -ln "maxstretch" -dv 1 -min 1 -at "double"; - addAttr -ci true -sn "ikTR" -ln "ikTR" -min 0 -max 1 -at "bool"; - addAttr -ci true -sn "mirrorMid" -ln "mirrorMid" -min 0 -max 1 -at "bool"; + addAttr -ci true -sn "maxstretch" -ln "maxstretch" -dv 1.5 -min 1 -at "double"; + addAttr -ci true -sn "ikTR" -ln "ikTR" -dv 1 -min 0 -max 1 -at "bool"; + addAttr -ci true -sn "mirrorMid" -ln "mirrorMid" -dv 1 -min 0 -max 1 -at "bool"; addAttr -ci true -sn "mirrorIK" -ln "mirrorIK" -min 0 -max 1 -at "bool"; - addAttr -ci true -sn "div0" -ln "div0" -dv 1 -min 1 -at "long"; - addAttr -ci true -sn "div1" -ln "div1" -dv 1 -min 1 -at "long"; + addAttr -ci true -sn "div0" -ln "div0" -dv 2 -min 1 -at "long"; + addAttr -ci true -sn "div1" -ln "div1" -dv 2 -min 1 -at "long"; addAttr -ci true -k true -sn "st_profile" -ln "st_profile" -at "double"; addAttr -ci true -k true -sn "sq_profile" -ln "sq_profile" -at "double"; addAttr -ci true -sn "useIndex" -ln "useIndex" -min 0 -max 1 -at "bool"; - addAttr -ci true -sn "parentJointIndex" -ln "parentJointIndex" -at "long"; + addAttr -ci true -sn "parentJointIndex" -ln "parentJointIndex" -dv -1 -at "long"; setAttr -k off -cb on ".v"; setAttr ".t" -type "double3" 1.0658141036401503e-014 3.3306690738754696e-016 -4.4408920985006262e-016 ; setAttr -k off -cb on ".tx"; setAttr -k off -cb on ".ty"; setAttr -k off -cb on ".tz"; - setAttr ".r" -type "double3" -95.878962023386904 44.411212983179865 -5.4710434405384278 ; + setAttr ".r" -type "double3" -95.878962023386919 44.411212983179865 -5.4710434405384332 ; setAttr -k off -cb on ".rx"; setAttr -k off -cb on ".ry"; setAttr -k off -cb on ".rz"; setAttr -cb on ".ro"; - setAttr ".s" -type "double3" 0.99999999999999978 0.99999999999999811 0.99999999999999967 ; + setAttr ".s" -type "double3" 1 0.99999999999999822 0.99999999999999956 ; setAttr -k off -cb on ".sx"; setAttr -k off -cb on ".sy"; setAttr -k off -cb on ".sz"; setAttr ".comp_type" -type "string" "arm_2jnt_01"; setAttr ".comp_name" -type "string" "arm"; setAttr ".comp_side" -type "string" "L"; - setAttr ".connector" -type "string" "standard"; + setAttr ".connector" -type "string" "shoulder_01"; setAttr ".ui_host" -type "string" "armUI_L0_root"; setAttr ".ctlGrp" -type "string" ""; setAttr ".ikrefarray" -type "string" "shoulder_L0_tip,local_C0_root,body_C0_root,spine_C0_eff,spine_C0_root,global_C0_root"; setAttr ".upvrefarray" -type "string" "shoulder_L0_tip,local_C0_root,body_C0_root,spine_C0_eff,spine_C0_root,global_C0_root"; setAttr ".pinrefarray" -type "string" "shoulder_L0_tip,local_C0_root,body_C0_root,spine_C0_eff,spine_C0_root,global_C0_root"; - setAttr ".maxstretch" 1.5; - setAttr ".ikTR" yes; - setAttr ".mirrorMid" yes; - setAttr ".div0" 2; - setAttr ".div1" 2; setAttr -k on ".st_profile"; setAttr -k on ".sq_profile"; - setAttr ".parentJointIndex" -1; createNode nurbsCurve -n "arm_L0_rootShape" -p "arm_L0_root"; - rename -uid "94199989-4ECE-F916-A335-0F898C304FF5"; + rename -uid "F770D184-4093-DE3C-F19D-5BA6D11702DE"; setAttr ".ihi" 0; setAttr -k off ".v"; setAttr ".ove" yes; @@ -1138,8 +1142,8 @@ createNode nurbsCurve -n "arm_L0_rootShape" -p "arm_L0_root"; 0.25 0 0 -0.25 0 0 ; -createNode nurbsCurve -n "arm_L0_root25Shape" -p "arm_L0_root"; - rename -uid "DF11EC3D-426D-5632-BCBA-69BFE5938CCE"; +createNode nurbsCurve -n "arm_L0_root28Shape" -p "arm_L0_root"; + rename -uid "C686C07A-42A6-E9DB-AB13-0E9717DC60A6"; setAttr ".ihi" 0; setAttr -k off ".v"; setAttr ".ove" yes; @@ -1151,8 +1155,8 @@ createNode nurbsCurve -n "arm_L0_root25Shape" -p "arm_L0_root"; 0 0.25 0 0 -0.25 0 ; -createNode nurbsCurve -n "arm_L0_root26Shape" -p "arm_L0_root"; - rename -uid "F11F7420-4F9C-D507-04AF-C5B360E24489"; +createNode nurbsCurve -n "arm_L0_root29Shape" -p "arm_L0_root"; + rename -uid "2F457D7D-4158-B14B-3A1C-E69F4AFE72F3"; setAttr ".ihi" 0; setAttr -k off ".v"; setAttr ".ove" yes; @@ -1164,8 +1168,8 @@ createNode nurbsCurve -n "arm_L0_root26Shape" -p "arm_L0_root"; 0 0 0.25 0 0 -0.25 ; -createNode nurbsCurve -n "arm_L0_root27Shape" -p "arm_L0_root"; - rename -uid "924F26ED-4840-8B61-9009-ACB2BA89EB86"; +createNode nurbsCurve -n "arm_L0_root30Shape" -p "arm_L0_root"; + rename -uid "C251384A-4BA2-7A2A-45E5-B48530C55D58"; setAttr ".ihi" 0; setAttr -k off ".v"; setAttr ".ove" yes; @@ -1192,24 +1196,24 @@ createNode nurbsCurve -n "arm_L0_root27Shape" -p "arm_L0_root"; -0.125 -0.125 -0.125 ; createNode transform -n "arm_L0_elbow" -p "arm_L0_root"; - rename -uid "50EEED0F-48A6-B9D7-5552-D98FC8B6B53E"; + rename -uid "F27CE0EA-4CDA-01DF-446F-FC915A569F2C"; addAttr -ci true -sn "isGearGuide" -ln "isGearGuide" -dv 1 -min 0 -max 1 -at "bool"; setAttr -k off -cb on ".v"; - setAttr ".t" -type "double3" 2.8283335982323328 3.5527136788005009e-015 0.078976790252909934 ; + setAttr ".t" -type "double3" 2.828333598232331 5.3290705182007514e-015 0.078976790252909934 ; setAttr -k off -cb on ".tx"; setAttr -k off -cb on ".ty"; setAttr -k off -cb on ".tz"; - setAttr ".r" -type "double3" 0 -10.688700162784265 0 ; + setAttr ".r" -type "double3" 0 -10.688700162784272 0 ; setAttr -k off -cb on ".rx"; setAttr -k off -cb on ".ry"; setAttr -k off -cb on ".rz"; setAttr -cb on ".ro"; - setAttr ".s" -type "double3" 0.99999999999999978 0.99999999999999967 0.99999999999999933 ; + setAttr ".s" -type "double3" 0.99999999999999978 0.99999999999999956 0.99999999999999933 ; setAttr -k off -cb on ".sx"; setAttr -k off -cb on ".sy"; setAttr -k off -cb on ".sz"; createNode nurbsCurve -n "arm_L0_elbowShape" -p "arm_L0_elbow"; - rename -uid "8AA4ADDE-46FC-D914-59E9-6D889B261CBE"; + rename -uid "9F7B7E1B-4FB1-A4F4-DBE8-A383A6CC4C27"; setAttr ".ihi" 0; setAttr -k off ".v"; setAttr ".ove" yes; @@ -1221,8 +1225,8 @@ createNode nurbsCurve -n "arm_L0_elbowShape" -p "arm_L0_elbow"; 0.25 0 0 -0.25 0 0 ; -createNode nurbsCurve -n "arm_L0_elbow25Shape" -p "arm_L0_elbow"; - rename -uid "82B8308E-40C7-3DD5-ACEB-7BA34C9514F8"; +createNode nurbsCurve -n "arm_L0_elbow28Shape" -p "arm_L0_elbow"; + rename -uid "5EA2289F-4A6C-836A-8D42-5692AB61706C"; setAttr ".ihi" 0; setAttr -k off ".v"; setAttr ".ove" yes; @@ -1234,8 +1238,8 @@ createNode nurbsCurve -n "arm_L0_elbow25Shape" -p "arm_L0_elbow"; 0 0.25 0 0 -0.25 0 ; -createNode nurbsCurve -n "arm_L0_elbow26Shape" -p "arm_L0_elbow"; - rename -uid "05303B69-4AC3-DC8D-9AA3-2BACFBB836A8"; +createNode nurbsCurve -n "arm_L0_elbow29Shape" -p "arm_L0_elbow"; + rename -uid "BE34DA73-43E4-FBCC-E389-6984C59E7BE5"; setAttr ".ihi" 0; setAttr -k off ".v"; setAttr ".ove" yes; @@ -1247,8 +1251,8 @@ createNode nurbsCurve -n "arm_L0_elbow26Shape" -p "arm_L0_elbow"; 0 0 0.25 0 0 -0.25 ; -createNode nurbsCurve -n "arm_L0_elbow27Shape" -p "arm_L0_elbow"; - rename -uid "2BA95774-4C84-084F-1598-47AD6FE8FB6F"; +createNode nurbsCurve -n "arm_L0_elbow30Shape" -p "arm_L0_elbow"; + rename -uid "69541892-4FD7-FF14-F671-D4B81AA7B44A"; setAttr ".ihi" 0; setAttr -k off ".v"; setAttr ".ove" yes; @@ -1265,8 +1269,8 @@ createNode nurbsCurve -n "arm_L0_elbow27Shape" -p "arm_L0_elbow"; 0 -0.1875 0 -0.1875 0 0 ; -createNode nurbsCurve -n "arm_L0_elbow27_0crvShape" -p "arm_L0_elbow"; - rename -uid "EDD655E3-4C7A-3E5F-4610-2883C7920098"; +createNode nurbsCurve -n "arm_L0_elbow30_0crvShape" -p "arm_L0_elbow"; + rename -uid "60EBF929-489F-70F6-644D-9B89A990AB14"; setAttr ".ihi" 0; setAttr -k off ".v"; setAttr ".ove" yes; @@ -1283,8 +1287,8 @@ createNode nurbsCurve -n "arm_L0_elbow27_0crvShape" -p "arm_L0_elbow"; 0 0 -0.1875 -0.1875 0 0 ; -createNode nurbsCurve -n "arm_L0_elbow27_1crvShape" -p "arm_L0_elbow"; - rename -uid "6B9E7F13-4E66-49E4-14A4-42B81998EC88"; +createNode nurbsCurve -n "arm_L0_elbow30_1crvShape" -p "arm_L0_elbow"; + rename -uid "300A7A89-4C4F-DE4A-D45D-A39E085DF929"; setAttr ".ihi" 0; setAttr -k off ".v"; setAttr ".ove" yes; @@ -1302,10 +1306,10 @@ createNode nurbsCurve -n "arm_L0_elbow27_1crvShape" -p "arm_L0_elbow"; 0 0 -0.1875 ; createNode transform -n "arm_L0_wrist" -p "arm_L0_elbow"; - rename -uid "122466BB-48C0-C178-D617-098A6BCCD6D1"; + rename -uid "16533C27-46E2-87FA-CF5D-E39F6AE05D22"; addAttr -ci true -sn "isGearGuide" -ln "isGearGuide" -dv 1 -min 0 -max 1 -at "bool"; setAttr -k off -cb on ".v"; - setAttr ".t" -type "double3" 2.9351547891496952 0 -0.11960611218230566 ; + setAttr ".t" -type "double3" 2.9351547891496979 -1.7763568394002505e-015 -0.11960611218230555 ; setAttr -k off -cb on ".tx"; setAttr -k off -cb on ".ty"; setAttr -k off -cb on ".tz"; @@ -1313,12 +1317,12 @@ createNode transform -n "arm_L0_wrist" -p "arm_L0_elbow"; setAttr -k off -cb on ".ry"; setAttr -k off -cb on ".rz"; setAttr -cb on ".ro"; - setAttr ".s" -type "double3" 1 1.0000000000000013 1.0000000000000009 ; + setAttr ".s" -type "double3" 1.0000000000000002 1.0000000000000016 1.0000000000000011 ; setAttr -k off -cb on ".sx"; setAttr -k off -cb on ".sy"; setAttr -k off -cb on ".sz"; createNode nurbsCurve -n "arm_L0_wristShape" -p "arm_L0_wrist"; - rename -uid "2737F2DA-4B58-C8A6-C214-6AB02CDB94AD"; + rename -uid "CA0155AD-420B-A3BC-E6DD-8DB560466590"; setAttr ".ihi" 0; setAttr -k off ".v"; setAttr ".ove" yes; @@ -1330,8 +1334,8 @@ createNode nurbsCurve -n "arm_L0_wristShape" -p "arm_L0_wrist"; 0.25 0 0 -0.25 0 0 ; -createNode nurbsCurve -n "arm_L0_wrist25Shape" -p "arm_L0_wrist"; - rename -uid "16443F8A-438D-8442-DD38-2C8722A3FD4D"; +createNode nurbsCurve -n "arm_L0_wrist28Shape" -p "arm_L0_wrist"; + rename -uid "1B3209C6-4969-2D95-CFAB-9899E1882054"; setAttr ".ihi" 0; setAttr -k off ".v"; setAttr ".ove" yes; @@ -1343,8 +1347,8 @@ createNode nurbsCurve -n "arm_L0_wrist25Shape" -p "arm_L0_wrist"; 0 0.25 0 0 -0.25 0 ; -createNode nurbsCurve -n "arm_L0_wrist26Shape" -p "arm_L0_wrist"; - rename -uid "7340F773-429B-0BA1-2E57-7596BAFC2DE6"; +createNode nurbsCurve -n "arm_L0_wrist29Shape" -p "arm_L0_wrist"; + rename -uid "C5B6578A-4492-D2C5-5411-EA8B18576745"; setAttr ".ihi" 0; setAttr -k off ".v"; setAttr ".ove" yes; @@ -1356,8 +1360,8 @@ createNode nurbsCurve -n "arm_L0_wrist26Shape" -p "arm_L0_wrist"; 0 0 0.25 0 0 -0.25 ; -createNode nurbsCurve -n "arm_L0_wrist27Shape" -p "arm_L0_wrist"; - rename -uid "0D58EDE0-4B24-8E7C-C035-9484C862C1B4"; +createNode nurbsCurve -n "arm_L0_wrist30Shape" -p "arm_L0_wrist"; + rename -uid "07CCF2E4-4E71-3245-CEF7-C9A61441D150"; setAttr ".ihi" 0; setAttr -k off ".v"; setAttr ".ove" yes; @@ -1374,8 +1378,8 @@ createNode nurbsCurve -n "arm_L0_wrist27Shape" -p "arm_L0_wrist"; 0 -0.1875 0 -0.1875 0 0 ; -createNode nurbsCurve -n "arm_L0_wrist27_0crvShape" -p "arm_L0_wrist"; - rename -uid "0A438EFA-4D7E-ACB8-A030-B2A6B50FBF6E"; +createNode nurbsCurve -n "arm_L0_wrist30_0crvShape" -p "arm_L0_wrist"; + rename -uid "8616D1C3-4950-2822-0603-BF850A1B1672"; setAttr ".ihi" 0; setAttr -k off ".v"; setAttr ".ove" yes; @@ -1392,8 +1396,8 @@ createNode nurbsCurve -n "arm_L0_wrist27_0crvShape" -p "arm_L0_wrist"; 0 0 -0.1875 -0.1875 0 0 ; -createNode nurbsCurve -n "arm_L0_wrist27_1crvShape" -p "arm_L0_wrist"; - rename -uid "1C8D13A4-435A-621F-1BD9-2EAAAE8F5382"; +createNode nurbsCurve -n "arm_L0_wrist30_1crvShape" -p "arm_L0_wrist"; + rename -uid "EA3DE583-478A-AF33-53E5-209A7FE3A98D"; setAttr ".ihi" 0; setAttr -k off ".v"; setAttr ".ove" yes; @@ -1411,10 +1415,10 @@ createNode nurbsCurve -n "arm_L0_wrist27_1crvShape" -p "arm_L0_wrist"; 0 0 -0.1875 ; createNode transform -n "arm_L0_eff" -p "arm_L0_wrist"; - rename -uid "F9AE3693-4B40-64F7-ECDA-D986CA28DADF"; + rename -uid "140565C9-4BDA-39F1-7F99-6D9968BD8D2C"; addAttr -ci true -sn "isGearGuide" -ln "isGearGuide" -dv 1 -min 0 -max 1 -at "bool"; setAttr -k off -cb on ".v"; - setAttr ".t" -type "double3" 1.3207237066308166 7.1054273576010019e-015 6.9388939039072284e-016 ; + setAttr ".t" -type "double3" 1.320723706630814 8.8817841970012523e-015 9.4368957093138306e-016 ; setAttr -k off -cb on ".tx"; setAttr -k off -cb on ".ty"; setAttr -k off -cb on ".tz"; @@ -1422,12 +1426,12 @@ createNode transform -n "arm_L0_eff" -p "arm_L0_wrist"; setAttr -k off -cb on ".ry"; setAttr -k off -cb on ".rz"; setAttr -cb on ".ro"; - setAttr ".s" -type "double3" 1.0000000000000009 1 0.99999999999999978 ; + setAttr ".s" -type "double3" 1.0000000000000007 0.99999999999999989 0.99999999999999944 ; setAttr -k off -cb on ".sx"; setAttr -k off -cb on ".sy"; setAttr -k off -cb on ".sz"; createNode nurbsCurve -n "arm_L0_effShape" -p "arm_L0_eff"; - rename -uid "81CC1C0D-48FF-5476-5F70-A1945A27923B"; + rename -uid "6D04601D-473F-A6C2-34C2-5EB33AA79B6F"; setAttr ".ihi" 0; setAttr -k off ".v"; setAttr ".ove" yes; @@ -1439,8 +1443,8 @@ createNode nurbsCurve -n "arm_L0_effShape" -p "arm_L0_eff"; 0.25 0 0 -0.25 0 0 ; -createNode nurbsCurve -n "arm_L0_eff25Shape" -p "arm_L0_eff"; - rename -uid "0BE72018-4BCC-A2C0-4872-A5834B6F892F"; +createNode nurbsCurve -n "arm_L0_eff28Shape" -p "arm_L0_eff"; + rename -uid "50082AAE-4FFC-362F-23FF-52915B065BC0"; setAttr ".ihi" 0; setAttr -k off ".v"; setAttr ".ove" yes; @@ -1452,8 +1456,8 @@ createNode nurbsCurve -n "arm_L0_eff25Shape" -p "arm_L0_eff"; 0 0.25 0 0 -0.25 0 ; -createNode nurbsCurve -n "arm_L0_eff26Shape" -p "arm_L0_eff"; - rename -uid "2D21C0F7-46F9-B86A-6323-97B1E7D41C12"; +createNode nurbsCurve -n "arm_L0_eff29Shape" -p "arm_L0_eff"; + rename -uid "98A5C722-4970-31A9-D368-EF9D5B7A1A62"; setAttr ".ihi" 0; setAttr -k off ".v"; setAttr ".ove" yes; @@ -1465,8 +1469,8 @@ createNode nurbsCurve -n "arm_L0_eff26Shape" -p "arm_L0_eff"; 0 0 0.25 0 0 -0.25 ; -createNode nurbsCurve -n "arm_L0_eff27Shape" -p "arm_L0_eff"; - rename -uid "9F303C65-442B-73EA-36F0-4BBF06242618"; +createNode nurbsCurve -n "arm_L0_eff30Shape" -p "arm_L0_eff"; + rename -uid "E9CB28A7-4C83-4A15-729F-EF8D002E893B"; setAttr ".ihi" 0; setAttr -k off ".v"; setAttr ".ove" yes; @@ -1483,8 +1487,8 @@ createNode nurbsCurve -n "arm_L0_eff27Shape" -p "arm_L0_eff"; 0 -0.1875 0 -0.1875 0 0 ; -createNode nurbsCurve -n "arm_L0_eff27_0crvShape" -p "arm_L0_eff"; - rename -uid "9ABF98F5-4741-867D-FDEC-8295114DCCB7"; +createNode nurbsCurve -n "arm_L0_eff30_0crvShape" -p "arm_L0_eff"; + rename -uid "C7F8C519-4AC0-F5CA-7B04-D4B94B34D4A0"; setAttr ".ihi" 0; setAttr -k off ".v"; setAttr ".ove" yes; @@ -1501,8 +1505,8 @@ createNode nurbsCurve -n "arm_L0_eff27_0crvShape" -p "arm_L0_eff"; 0 0 -0.1875 -0.1875 0 0 ; -createNode nurbsCurve -n "arm_L0_eff27_1crvShape" -p "arm_L0_eff"; - rename -uid "890EF6BE-4DB5-3EFD-E031-C68585D62C95"; +createNode nurbsCurve -n "arm_L0_eff30_1crvShape" -p "arm_L0_eff"; + rename -uid "C8E618F7-4ABE-025C-215B-5B82D50116D0"; setAttr ".ihi" 0; setAttr -k off ".v"; setAttr ".ove" yes; @@ -1520,7 +1524,7 @@ createNode nurbsCurve -n "arm_L0_eff27_1crvShape" -p "arm_L0_eff"; 0 0 -0.1875 ; createNode transform -n "armUI_L0_root" -p "arm_L0_eff"; - rename -uid "60C03CBA-4352-19EE-D192-EB8B07D7983E"; + rename -uid "B89F5A82-48F3-07C3-353B-999AA33E252C"; addAttr -ci true -sn "isGearGuide" -ln "isGearGuide" -dv 1 -min 0 -max 1 -at "bool"; addAttr -ci true -sn "comp_type" -ln "comp_type" -dt "string"; addAttr -ci true -sn "comp_name" -ln "comp_name" -dt "string"; @@ -1544,12 +1548,14 @@ createNode transform -n "armUI_L0_root" -p "arm_L0_eff"; addAttr -ci true -sn "k_sy" -ln "k_sy" -min 0 -max 1 -at "bool"; addAttr -ci true -sn "k_sz" -ln "k_sz" -min 0 -max 1 -at "bool"; addAttr -ci true -sn "default_rotorder" -ln "default_rotorder" -min 0 -max 5 -at "long"; - addAttr -ci true -sn "neutralRotation" -ln "neutralRotation" -min 0 -max 1 -at "bool"; - addAttr -ci true -sn "ctlSize" -ln "ctlSize" -at "double"; + addAttr -ci true -sn "neutralRotation" -ln "neutralRotation" -dv 1 -min 0 -max 1 + -at "bool"; + addAttr -ci true -sn "mirrorBehaviour" -ln "mirrorBehaviour" -min 0 -max 1 -at "bool"; + addAttr -ci true -sn "ctlSize" -ln "ctlSize" -dv 1 -at "double"; addAttr -ci true -sn "useIndex" -ln "useIndex" -min 0 -max 1 -at "bool"; - addAttr -ci true -sn "parentJointIndex" -ln "parentJointIndex" -at "long"; + addAttr -ci true -sn "parentJointIndex" -ln "parentJointIndex" -dv -1 -at "long"; setAttr -k off -cb on ".v"; - setAttr ".t" -type "double3" -1.2124561875008086 0.56073114764518017 -0.29276117198398871 ; + setAttr ".t" -type "double3" -1.2124561875008069 0.56073114764518195 -0.29276117198398888 ; setAttr -k off -cb on ".tx"; setAttr -k off -cb on ".ty"; setAttr -k off -cb on ".tz"; @@ -1557,7 +1563,7 @@ createNode transform -n "armUI_L0_root" -p "arm_L0_eff"; setAttr -k off -cb on ".ry"; setAttr -k off -cb on ".rz"; setAttr -cb on ".ro"; - setAttr ".s" -type "double3" 1.0000000000000007 1.0000000000000002 1.0000000000000013 ; + setAttr ".s" -type "double3" 1.0000000000000009 1.0000000000000002 1.0000000000000013 ; setAttr -k off -cb on ".sx"; setAttr -k off -cb on ".sy"; setAttr -k off -cb on ".sz"; @@ -1569,11 +1575,8 @@ createNode transform -n "armUI_L0_root" -p "arm_L0_eff"; setAttr ".ctlGrp" -type "string" ""; setAttr ".icon" -type "string" "cross"; setAttr ".ikrefarray" -type "string" ""; - setAttr ".neutralRotation" yes; - setAttr ".ctlSize" 1; - setAttr ".parentJointIndex" -1; createNode nurbsCurve -n "armUI_L0_rootShape" -p "armUI_L0_root"; - rename -uid "CAAC56B9-4190-70E8-489D-1BBD36335BB5"; + rename -uid "DA270C2B-4998-4586-0B59-7B9D7672E358"; setAttr ".ihi" 0; setAttr -k off ".v"; setAttr ".ove" yes; @@ -1585,8 +1588,8 @@ createNode nurbsCurve -n "armUI_L0_rootShape" -p "armUI_L0_root"; 0.25 0 0 -0.25 0 0 ; -createNode nurbsCurve -n "armUI_L0_root25Shape" -p "armUI_L0_root"; - rename -uid "33F5DFD9-4977-1314-1F9F-B08A1E36FD5D"; +createNode nurbsCurve -n "armUI_L0_root28Shape" -p "armUI_L0_root"; + rename -uid "8B66649A-49C3-0A26-1192-18B8BDCC2D26"; setAttr ".ihi" 0; setAttr -k off ".v"; setAttr ".ove" yes; @@ -1598,8 +1601,8 @@ createNode nurbsCurve -n "armUI_L0_root25Shape" -p "armUI_L0_root"; 0 0.25 0 0 -0.25 0 ; -createNode nurbsCurve -n "armUI_L0_root26Shape" -p "armUI_L0_root"; - rename -uid "763E33DB-4A08-39C3-15C2-30BBE4B199F6"; +createNode nurbsCurve -n "armUI_L0_root29Shape" -p "armUI_L0_root"; + rename -uid "FF90C15B-4DAA-F469-D808-7E9F6A729EDC"; setAttr ".ihi" 0; setAttr -k off ".v"; setAttr ".ove" yes; @@ -1611,8 +1614,8 @@ createNode nurbsCurve -n "armUI_L0_root26Shape" -p "armUI_L0_root"; 0 0 0.25 0 0 -0.25 ; -createNode nurbsCurve -n "armUI_L0_root27Shape" -p "armUI_L0_root"; - rename -uid "86D25C4E-4467-D427-92D2-78A4FBB45C86"; +createNode nurbsCurve -n "armUI_L0_root30Shape" -p "armUI_L0_root"; + rename -uid "E7DDE3D4-4994-C274-26E9-F9AB6EC50D9A"; setAttr ".ihi" 0; setAttr -k off ".v"; setAttr ".ove" yes; @@ -1639,24 +1642,24 @@ createNode nurbsCurve -n "armUI_L0_root27Shape" -p "armUI_L0_root"; -0.125 -0.125 -0.125 ; createNode transform -n "armUI_L0_sizeRef" -p "armUI_L0_root"; - rename -uid "0AB84938-41D8-4D70-DBAA-FC8B6A9AF4E9"; + rename -uid "D2FF785D-4865-0E04-D29A-6099F3BA4557"; addAttr -ci true -sn "isGearGuide" -ln "isGearGuide" -dv 1 -min 0 -max 1 -at "bool"; setAttr -k off -cb on ".v"; - setAttr ".t" -type "double3" 0.11347623085809344 -0.027001577630493045 1.0430060296210657 ; + setAttr ".t" -type "double3" 0.11347623085808944 -0.027001577630494822 1.0430060296210657 ; setAttr -k off -cb on ".tx"; setAttr -k off -cb on ".ty"; setAttr -k off -cb on ".tz"; - setAttr ".r" -type "double3" 5.4530840145882156 3.3190804973695687 45.379324150247726 ; + setAttr ".r" -type "double3" 5.4530840145882289 3.3190804973695629 45.379324150247726 ; setAttr -k off -cb on ".rx"; setAttr -k off -cb on ".ry"; setAttr -k off -cb on ".rz"; setAttr -cb on ".ro"; - setAttr ".s" -type "double3" 1.0495082267377429 1.049508226737738 1.0495082267377398 ; + setAttr ".s" -type "double3" 1.0495082267377429 1.049508226737738 1.04950822673774 ; setAttr -k off -cb on ".sx"; setAttr -k off -cb on ".sy"; setAttr -k off -cb on ".sz"; createNode transform -n "meta_L0_root" -p "arm_L0_eff"; - rename -uid "DA97F204-42CE-AA98-E252-CDAC2C467EA8"; + rename -uid "6CB1757C-49AF-FE8C-8310-32A00FA74AAF"; addAttr -ci true -sn "isGearGuide" -ln "isGearGuide" -dv 1 -min 0 -max 1 -at "bool"; addAttr -ci true -sn "comp_type" -ln "comp_type" -dt "string"; addAttr -ci true -sn "comp_name" -ln "comp_name" -dt "string"; @@ -1665,22 +1668,22 @@ createNode transform -n "meta_L0_root" -p "arm_L0_eff"; addAttr -ci true -sn "connector" -ln "connector" -dt "string"; addAttr -ci true -sn "ui_host" -ln "ui_host" -dt "string"; addAttr -ci true -sn "ctlGrp" -ln "ctlGrp" -dt "string"; - addAttr -ci true -sn "intScale" -ln "intScale" -min 0 -max 1 -at "bool"; - addAttr -ci true -sn "intRotation" -ln "intRotation" -min 0 -max 1 -at "bool"; - addAttr -ci true -sn "intTranslation" -ln "intTranslation" -min 0 -max 1 -at "bool"; + addAttr -ci true -sn "intScale" -ln "intScale" -dv 1 -min 0 -max 1 -at "bool"; + addAttr -ci true -sn "intRotation" -ln "intRotation" -dv 1 -min 0 -max 1 -at "bool"; + addAttr -ci true -sn "intTranslation" -ln "intTranslation" -dv 1 -min 0 -max 1 -at "bool"; addAttr -ci true -sn "useIndex" -ln "useIndex" -min 0 -max 1 -at "bool"; - addAttr -ci true -sn "parentJointIndex" -ln "parentJointIndex" -at "long"; + addAttr -ci true -sn "parentJointIndex" -ln "parentJointIndex" -dv -1 -at "long"; setAttr -k off -cb on ".v"; - setAttr ".t" -type "double3" -1.0556240028445685 -0.075350553640975093 0.35296225288850236 ; + setAttr ".t" -type "double3" -1.0556240028445685 -0.075350553640976869 0.35296225288850214 ; setAttr -k off -cb on ".tx"; setAttr -k off -cb on ".ty"; setAttr -k off -cb on ".tz"; - setAttr ".r" -type "double3" 86.350349008866786 93.71738146693724 86.467960127478719 ; + setAttr ".r" -type "double3" 86.350349008867127 93.717381466937212 86.467960127478676 ; setAttr -k off -cb on ".rx"; setAttr -k off -cb on ".ry"; setAttr -k off -cb on ".rz"; setAttr -cb on ".ro"; - setAttr ".s" -type "double3" 0.30838721081716924 0.30838721081716924 0.30838721081716947 ; + setAttr ".s" -type "double3" 0.30838721081716935 0.30838721081716935 0.30838721081716952 ; setAttr -k off -cb on ".sx"; setAttr -k off -cb on ".sy"; setAttr -k off -cb on ".sz"; @@ -1690,12 +1693,8 @@ createNode transform -n "meta_L0_root" -p "arm_L0_eff"; setAttr ".connector" -type "string" "standard"; setAttr ".ui_host" -type "string" ""; setAttr ".ctlGrp" -type "string" ""; - setAttr ".intScale" yes; - setAttr ".intRotation" yes; - setAttr ".intTranslation" yes; - setAttr ".parentJointIndex" -1; createNode nurbsCurve -n "meta_L0_rootShape" -p "meta_L0_root"; - rename -uid "B6A973C3-4B22-C42E-B294-83934CBE2E9C"; + rename -uid "89AA9E17-4874-4DDB-9AB4-C3B12CC8F07A"; setAttr ".ihi" 0; setAttr -k off ".v"; setAttr ".ove" yes; @@ -1707,8 +1706,8 @@ createNode nurbsCurve -n "meta_L0_rootShape" -p "meta_L0_root"; 0.25 0 0 -0.25 0 0 ; -createNode nurbsCurve -n "meta_L0_root25Shape" -p "meta_L0_root"; - rename -uid "F418832B-4CC2-AC40-1864-25A07BB5C8D2"; +createNode nurbsCurve -n "meta_L0_root28Shape" -p "meta_L0_root"; + rename -uid "843797CC-44CE-B045-B64D-C7B6EB43C3E4"; setAttr ".ihi" 0; setAttr -k off ".v"; setAttr ".ove" yes; @@ -1720,8 +1719,8 @@ createNode nurbsCurve -n "meta_L0_root25Shape" -p "meta_L0_root"; 0 0.25 0 0 -0.25 0 ; -createNode nurbsCurve -n "meta_L0_root26Shape" -p "meta_L0_root"; - rename -uid "EA4EC16E-4E97-46E2-B43F-B3BD2D1528FF"; +createNode nurbsCurve -n "meta_L0_root29Shape" -p "meta_L0_root"; + rename -uid "0C10D772-4B0C-5822-FD9B-9D9B511743FE"; setAttr ".ihi" 0; setAttr -k off ".v"; setAttr ".ove" yes; @@ -1733,8 +1732,8 @@ createNode nurbsCurve -n "meta_L0_root26Shape" -p "meta_L0_root"; 0 0 0.25 0 0 -0.25 ; -createNode nurbsCurve -n "meta_L0_root27Shape" -p "meta_L0_root"; - rename -uid "9A99D741-4E85-57ED-39C6-5B82E8FD7161"; +createNode nurbsCurve -n "meta_L0_root30Shape" -p "meta_L0_root"; + rename -uid "C982801D-4E88-0763-D3C0-05BEEB67DB82"; setAttr ".ihi" 0; setAttr -k off ".v"; setAttr ".ove" yes; @@ -1761,10 +1760,10 @@ createNode nurbsCurve -n "meta_L0_root27Shape" -p "meta_L0_root"; -0.125 -0.125 -0.125 ; createNode transform -n "meta_L0_0_loc" -p "meta_L0_root"; - rename -uid "A585AA2C-4571-B4A7-42E0-07BCB2FC1401"; + rename -uid "83081610-4780-2D93-ADE3-E690659DBBC9"; addAttr -ci true -sn "isGearGuide" -ln "isGearGuide" -dv 1 -min 0 -max 1 -at "bool"; setAttr -k off -cb on ".v"; - setAttr ".t" -type "double3" 0.66320847353617207 1.4210854715202004e-014 -2.6645352591003757e-014 ; + setAttr ".t" -type "double3" 0.66320847353617118 2.1316282072803006e-014 -2.8421709430404007e-014 ; setAttr -k off -cb on ".tx"; setAttr -k off -cb on ".ty"; setAttr -k off -cb on ".tz"; @@ -1772,12 +1771,12 @@ createNode transform -n "meta_L0_0_loc" -p "meta_L0_root"; setAttr -k off -cb on ".ry"; setAttr -k off -cb on ".rz"; setAttr -cb on ".ro"; - setAttr ".s" -type "double3" 0.999999999999999 0.99999999999999956 0.99999999999999878 ; + setAttr ".s" -type "double3" 0.99999999999999911 0.99999999999999956 0.99999999999999878 ; setAttr -k off -cb on ".sx"; setAttr -k off -cb on ".sy"; setAttr -k off -cb on ".sz"; createNode nurbsCurve -n "meta_L0_0_locShape" -p "meta_L0_0_loc"; - rename -uid "182DFBA7-41DC-8030-8CBB-358B4550DE07"; + rename -uid "FAB4DCFD-4F67-4B26-692C-D4B6298B7AF0"; setAttr ".ihi" 0; setAttr -k off ".v"; setAttr ".ove" yes; @@ -1789,8 +1788,8 @@ createNode nurbsCurve -n "meta_L0_0_locShape" -p "meta_L0_0_loc"; 0.25 0 0 -0.25 0 0 ; -createNode nurbsCurve -n "meta_L0_0_loc25Shape" -p "meta_L0_0_loc"; - rename -uid "61083201-40FE-F925-A654-A281EEC86C86"; +createNode nurbsCurve -n "meta_L0_0_loc28Shape" -p "meta_L0_0_loc"; + rename -uid "4F4577E4-4DC7-1E23-257F-C4AB3C0A171A"; setAttr ".ihi" 0; setAttr -k off ".v"; setAttr ".ove" yes; @@ -1802,8 +1801,8 @@ createNode nurbsCurve -n "meta_L0_0_loc25Shape" -p "meta_L0_0_loc"; 0 0.25 0 0 -0.25 0 ; -createNode nurbsCurve -n "meta_L0_0_loc26Shape" -p "meta_L0_0_loc"; - rename -uid "4AD2FEBA-4A66-2DDD-2AB9-8BA461DDD16D"; +createNode nurbsCurve -n "meta_L0_0_loc29Shape" -p "meta_L0_0_loc"; + rename -uid "564A5810-4573-169B-7716-859A71EE45E6"; setAttr ".ihi" 0; setAttr -k off ".v"; setAttr ".ove" yes; @@ -1815,8 +1814,8 @@ createNode nurbsCurve -n "meta_L0_0_loc26Shape" -p "meta_L0_0_loc"; 0 0 0.25 0 0 -0.25 ; -createNode nurbsCurve -n "meta_L0_0_loc27Shape" -p "meta_L0_0_loc"; - rename -uid "6E7A4206-44DD-E825-5CBB-F68051BC8E7A"; +createNode nurbsCurve -n "meta_L0_0_loc30Shape" -p "meta_L0_0_loc"; + rename -uid "883AAFBF-4576-DFBA-233D-11AC76E5EC8A"; setAttr ".ihi" 0; setAttr -k off ".v"; setAttr ".ove" yes; @@ -1833,8 +1832,8 @@ createNode nurbsCurve -n "meta_L0_0_loc27Shape" -p "meta_L0_0_loc"; 0 -0.1875 0 -0.1875 0 0 ; -createNode nurbsCurve -n "meta_L0_0_loc27_0crvShape" -p "meta_L0_0_loc"; - rename -uid "EA99077D-464D-8D14-0AB8-E1B3F213B48F"; +createNode nurbsCurve -n "meta_L0_0_loc30_0crvShape" -p "meta_L0_0_loc"; + rename -uid "ECFC5142-44C0-CFA8-1213-9D8A4F7FA22C"; setAttr ".ihi" 0; setAttr -k off ".v"; setAttr ".ove" yes; @@ -1851,8 +1850,8 @@ createNode nurbsCurve -n "meta_L0_0_loc27_0crvShape" -p "meta_L0_0_loc"; 0 0 -0.1875 -0.1875 0 0 ; -createNode nurbsCurve -n "meta_L0_0_loc27_1crvShape" -p "meta_L0_0_loc"; - rename -uid "6291D4FA-43C3-90D6-F0D4-A9832BBC7258"; +createNode nurbsCurve -n "meta_L0_0_loc30_1crvShape" -p "meta_L0_0_loc"; + rename -uid "A03CE51F-4A19-73F0-08FC-CA99EDA8C8DC"; setAttr ".ihi" 0; setAttr -k off ".v"; setAttr ".ove" yes; @@ -1870,10 +1869,10 @@ createNode nurbsCurve -n "meta_L0_0_loc27_1crvShape" -p "meta_L0_0_loc"; 0 0 -0.1875 ; createNode transform -n "meta_L0_1_loc" -p "meta_L0_0_loc"; - rename -uid "3FD400E8-468F-8154-8279-D4B79024193F"; + rename -uid "D444D24F-40F3-D8A4-5B9D-CD948AD8859F"; addAttr -ci true -sn "isGearGuide" -ln "isGearGuide" -dv 1 -min 0 -max 1 -at "bool"; setAttr -k off -cb on ".v"; - setAttr ".t" -type "double3" 0.66320847353618406 7.1054273576010019e-015 1.2434497875801753e-014 ; + setAttr ".t" -type "double3" 0.66320847353618362 1.4210854715202004e-014 1.2434497875801753e-014 ; setAttr -k off -cb on ".tx"; setAttr -k off -cb on ".ty"; setAttr -k off -cb on ".tz"; @@ -1881,12 +1880,12 @@ createNode transform -n "meta_L0_1_loc" -p "meta_L0_0_loc"; setAttr -k off -cb on ".ry"; setAttr -k off -cb on ".rz"; setAttr -cb on ".ro"; - setAttr ".s" -type "double3" 1.0000000000000002 1.0000000000000007 1.0000000000000004 ; + setAttr ".s" -type "double3" 1.0000000000000004 1.0000000000000011 1.0000000000000007 ; setAttr -k off -cb on ".sx"; setAttr -k off -cb on ".sy"; setAttr -k off -cb on ".sz"; createNode nurbsCurve -n "meta_L0_1_locShape" -p "meta_L0_1_loc"; - rename -uid "3BE4651C-4950-5C01-968C-10AF8087F378"; + rename -uid "20A1BFBE-424C-8E4B-A893-EAB488A43122"; setAttr ".ihi" 0; setAttr -k off ".v"; setAttr ".ove" yes; @@ -1898,8 +1897,8 @@ createNode nurbsCurve -n "meta_L0_1_locShape" -p "meta_L0_1_loc"; 0.25 0 0 -0.25 0 0 ; -createNode nurbsCurve -n "meta_L0_1_loc25Shape" -p "meta_L0_1_loc"; - rename -uid "D39D9061-486C-5FB2-8896-1D8F50D69B55"; +createNode nurbsCurve -n "meta_L0_1_loc28Shape" -p "meta_L0_1_loc"; + rename -uid "35B6B9B7-4466-BE64-6370-1B95C804F2DA"; setAttr ".ihi" 0; setAttr -k off ".v"; setAttr ".ove" yes; @@ -1911,8 +1910,8 @@ createNode nurbsCurve -n "meta_L0_1_loc25Shape" -p "meta_L0_1_loc"; 0 0.25 0 0 -0.25 0 ; -createNode nurbsCurve -n "meta_L0_1_loc26Shape" -p "meta_L0_1_loc"; - rename -uid "B151FCD7-4401-0BD6-BC60-A8BA8C770662"; +createNode nurbsCurve -n "meta_L0_1_loc29Shape" -p "meta_L0_1_loc"; + rename -uid "B1754CEA-4A07-AF04-BFFA-6AB59EDB0BBD"; setAttr ".ihi" 0; setAttr -k off ".v"; setAttr ".ove" yes; @@ -1924,8 +1923,8 @@ createNode nurbsCurve -n "meta_L0_1_loc26Shape" -p "meta_L0_1_loc"; 0 0 0.25 0 0 -0.25 ; -createNode nurbsCurve -n "meta_L0_1_loc27Shape" -p "meta_L0_1_loc"; - rename -uid "EDF2F7F3-4CBD-C3E0-82D8-FE82491A14C1"; +createNode nurbsCurve -n "meta_L0_1_loc30Shape" -p "meta_L0_1_loc"; + rename -uid "9ADE7F14-4043-0A91-E252-36B2EA2FAE40"; setAttr ".ihi" 0; setAttr -k off ".v"; setAttr ".ove" yes; @@ -1942,8 +1941,8 @@ createNode nurbsCurve -n "meta_L0_1_loc27Shape" -p "meta_L0_1_loc"; 0 -0.1875 0 -0.1875 0 0 ; -createNode nurbsCurve -n "meta_L0_1_loc27_0crvShape" -p "meta_L0_1_loc"; - rename -uid "88065115-44BC-6A80-2BB8-F5BABF2D8BB3"; +createNode nurbsCurve -n "meta_L0_1_loc30_0crvShape" -p "meta_L0_1_loc"; + rename -uid "6E26DF04-44A9-BDFB-C0CA-FBABD7BBC0FF"; setAttr ".ihi" 0; setAttr -k off ".v"; setAttr ".ove" yes; @@ -1960,8 +1959,8 @@ createNode nurbsCurve -n "meta_L0_1_loc27_0crvShape" -p "meta_L0_1_loc"; 0 0 -0.1875 -0.1875 0 0 ; -createNode nurbsCurve -n "meta_L0_1_loc27_1crvShape" -p "meta_L0_1_loc"; - rename -uid "3F434883-4E8F-1608-532A-BB85C79AC96A"; +createNode nurbsCurve -n "meta_L0_1_loc30_1crvShape" -p "meta_L0_1_loc"; + rename -uid "F7807CEE-41B9-7634-FFFF-8EBD546925EF"; setAttr ".ihi" 0; setAttr -k off ".v"; setAttr ".ove" yes; @@ -1979,10 +1978,10 @@ createNode nurbsCurve -n "meta_L0_1_loc27_1crvShape" -p "meta_L0_1_loc"; 0 0 -0.1875 ; createNode transform -n "meta_L0_2_loc" -p "meta_L0_1_loc"; - rename -uid "D68AE4EF-4A8E-77DA-65CE-489CD9E0CB68"; + rename -uid "6A42F738-4EFB-9D3A-A073-C69AD353415A"; addAttr -ci true -sn "isGearGuide" -ln "isGearGuide" -dv 1 -min 0 -max 1 -at "bool"; setAttr -k off -cb on ".v"; - setAttr ".t" -type "double3" 0.66320847353618451 7.1054273576010019e-015 -2.6645352591003757e-014 ; + setAttr ".t" -type "double3" 0.66320847353618628 0 -2.3092638912203256e-014 ; setAttr -k off -cb on ".tx"; setAttr -k off -cb on ".ty"; setAttr -k off -cb on ".tz"; @@ -1990,12 +1989,12 @@ createNode transform -n "meta_L0_2_loc" -p "meta_L0_1_loc"; setAttr -k off -cb on ".ry"; setAttr -k off -cb on ".rz"; setAttr -cb on ".ro"; - setAttr ".s" -type "double3" 0.99999999999999978 0.99999999999999922 0.99999999999999878 ; + setAttr ".s" -type "double3" 0.99999999999999967 0.99999999999999878 0.99999999999999845 ; setAttr -k off -cb on ".sx"; setAttr -k off -cb on ".sy"; setAttr -k off -cb on ".sz"; createNode nurbsCurve -n "meta_L0_2_locShape" -p "meta_L0_2_loc"; - rename -uid "45AAC2FF-4C1C-04F8-C96C-9D815E5670A4"; + rename -uid "67CFF977-46E0-F134-94A0-F5ABA21FC0ED"; setAttr ".ihi" 0; setAttr -k off ".v"; setAttr ".ove" yes; @@ -2007,8 +2006,8 @@ createNode nurbsCurve -n "meta_L0_2_locShape" -p "meta_L0_2_loc"; 0.25 0 0 -0.25 0 0 ; -createNode nurbsCurve -n "meta_L0_2_loc25Shape" -p "meta_L0_2_loc"; - rename -uid "23147271-45D1-C90A-C2D0-338E585F0D80"; +createNode nurbsCurve -n "meta_L0_2_loc28Shape" -p "meta_L0_2_loc"; + rename -uid "BA0A67D2-4518-8541-D941-54B1A7182988"; setAttr ".ihi" 0; setAttr -k off ".v"; setAttr ".ove" yes; @@ -2020,8 +2019,8 @@ createNode nurbsCurve -n "meta_L0_2_loc25Shape" -p "meta_L0_2_loc"; 0 0.25 0 0 -0.25 0 ; -createNode nurbsCurve -n "meta_L0_2_loc26Shape" -p "meta_L0_2_loc"; - rename -uid "6147A53D-4B00-16E3-131E-0483DCA63DDF"; +createNode nurbsCurve -n "meta_L0_2_loc29Shape" -p "meta_L0_2_loc"; + rename -uid "91D61A82-4366-472F-68BE-9196CC65605B"; setAttr ".ihi" 0; setAttr -k off ".v"; setAttr ".ove" yes; @@ -2033,8 +2032,8 @@ createNode nurbsCurve -n "meta_L0_2_loc26Shape" -p "meta_L0_2_loc"; 0 0 0.25 0 0 -0.25 ; -createNode nurbsCurve -n "meta_L0_2_loc27Shape" -p "meta_L0_2_loc"; - rename -uid "7ED5AF36-4DEC-0E58-7500-28B5F0A94D31"; +createNode nurbsCurve -n "meta_L0_2_loc30Shape" -p "meta_L0_2_loc"; + rename -uid "11F6EE7F-4C0E-9AC6-EAAB-E482F4493C3C"; setAttr ".ihi" 0; setAttr -k off ".v"; setAttr ".ove" yes; @@ -2051,8 +2050,8 @@ createNode nurbsCurve -n "meta_L0_2_loc27Shape" -p "meta_L0_2_loc"; 0 -0.1875 0 -0.1875 0 0 ; -createNode nurbsCurve -n "meta_L0_2_loc27_0crvShape" -p "meta_L0_2_loc"; - rename -uid "79F27A56-4537-AD1F-243E-81A6E5613FB7"; +createNode nurbsCurve -n "meta_L0_2_loc30_0crvShape" -p "meta_L0_2_loc"; + rename -uid "4A1FAB32-417C-BE51-75E9-6581CF40C596"; setAttr ".ihi" 0; setAttr -k off ".v"; setAttr ".ove" yes; @@ -2069,8 +2068,8 @@ createNode nurbsCurve -n "meta_L0_2_loc27_0crvShape" -p "meta_L0_2_loc"; 0 0 -0.1875 -0.1875 0 0 ; -createNode nurbsCurve -n "meta_L0_2_loc27_1crvShape" -p "meta_L0_2_loc"; - rename -uid "29FEE1E7-4066-3036-781F-2DB7F1E8CECB"; +createNode nurbsCurve -n "meta_L0_2_loc30_1crvShape" -p "meta_L0_2_loc"; + rename -uid "52E9057F-4DE3-29DC-3F6C-4EB8CDA03E92"; setAttr ".ihi" 0; setAttr -k off ".v"; setAttr ".ove" yes; @@ -2088,48 +2087,44 @@ createNode nurbsCurve -n "meta_L0_2_loc27_1crvShape" -p "meta_L0_2_loc"; 0 0 -0.1875 ; createNode transform -n "finger_L3_root" -p "meta_L0_2_loc"; - rename -uid "FB437058-4D9B-C624-FC3F-178A6AB29CCE"; + rename -uid "8DFE8D4A-4364-733F-11C9-0699BEDD991D"; addAttr -ci true -sn "isGearGuide" -ln "isGearGuide" -dv 1 -min 0 -max 1 -at "bool"; addAttr -ci true -sn "comp_type" -ln "comp_type" -dt "string"; addAttr -ci true -sn "comp_name" -ln "comp_name" -dt "string"; addAttr -ci true -sn "comp_side" -ln "comp_side" -dt "string"; - addAttr -ci true -sn "comp_index" -ln "comp_index" -min 0 -at "long"; + addAttr -ci true -sn "comp_index" -ln "comp_index" -dv 3 -min 0 -at "long"; addAttr -ci true -sn "connector" -ln "connector" -dt "string"; addAttr -ci true -sn "ui_host" -ln "ui_host" -dt "string"; addAttr -ci true -sn "ctlGrp" -ln "ctlGrp" -dt "string"; addAttr -ci true -sn "mode" -ln "mode" -min 0 -at "long"; - addAttr -ci true -sn "blend" -ln "blend" -min 0 -max 1 -at "double"; - addAttr -ci true -sn "neutralpose" -ln "neutralpose" -min 0 -max 1 -at "bool"; + addAttr -ci true -sn "blend" -ln "blend" -dv 1 -min 0 -max 1 -at "double"; + addAttr -ci true -sn "neutralpose" -ln "neutralpose" -dv 1 -min 0 -max 1 -at "bool"; addAttr -ci true -sn "ikrefarray" -ln "ikrefarray" -dt "string"; addAttr -ci true -sn "useIndex" -ln "useIndex" -min 0 -max 1 -at "bool"; - addAttr -ci true -sn "parentJointIndex" -ln "parentJointIndex" -at "long"; + addAttr -ci true -sn "parentJointIndex" -ln "parentJointIndex" -dv -1 -at "long"; setAttr -k off -cb on ".v"; - setAttr ".t" -type "double3" 0.27518484001103438 -0.17360051577779956 2.4946799341790502 ; + setAttr ".t" -type "double3" 0.27518484001103483 -0.17360051577779245 2.4946799341790502 ; setAttr -k off -cb on ".tx"; setAttr -k off -cb on ".ty"; setAttr -k off -cb on ".tz"; - setAttr ".r" -type "double3" 5.4173319878595638 -68.587073855452374 -5.8163374181209919 ; + setAttr ".r" -type "double3" 5.4173319878591863 -68.587073855452445 -5.8163374181200425 ; setAttr -k off -cb on ".rx"; setAttr -k off -cb on ".ry"; setAttr -k off -cb on ".rz"; setAttr -cb on ".ro"; - setAttr ".s" -type "double3" 1.2929668245661807 1.2929668245661794 1.2929668245661805 ; + setAttr ".s" -type "double3" 1.292966824566181 1.292966824566179 1.2929668245661805 ; setAttr -k off -cb on ".sx"; setAttr -k off -cb on ".sy"; setAttr -k off -cb on ".sz"; setAttr ".comp_type" -type "string" "chain_01"; setAttr ".comp_name" -type "string" "finger"; setAttr ".comp_side" -type "string" "L"; - setAttr ".comp_index" 3; setAttr ".connector" -type "string" "standard"; setAttr ".ui_host" -type "string" ""; setAttr ".ctlGrp" -type "string" ""; - setAttr ".blend" 1; - setAttr ".neutralpose" yes; setAttr ".ikrefarray" -type "string" ""; - setAttr ".parentJointIndex" -1; createNode nurbsCurve -n "finger_L3_rootShape" -p "finger_L3_root"; - rename -uid "68AEB714-4EC6-C09A-5293-1EA68F445B09"; + rename -uid "28B04211-4AA0-CBCC-52A2-4397947868F9"; setAttr ".ihi" 0; setAttr -k off ".v"; setAttr ".ove" yes; @@ -2141,8 +2136,8 @@ createNode nurbsCurve -n "finger_L3_rootShape" -p "finger_L3_root"; 0.25 0 0 -0.25 0 0 ; -createNode nurbsCurve -n "finger_L3_root25Shape" -p "finger_L3_root"; - rename -uid "E1332A26-4759-ACA3-8F01-0593B5443DA4"; +createNode nurbsCurve -n "finger_L3_root28Shape" -p "finger_L3_root"; + rename -uid "F780A2A9-40BD-D96C-4434-E7B33B65CAF8"; setAttr ".ihi" 0; setAttr -k off ".v"; setAttr ".ove" yes; @@ -2154,8 +2149,8 @@ createNode nurbsCurve -n "finger_L3_root25Shape" -p "finger_L3_root"; 0 0.25 0 0 -0.25 0 ; -createNode nurbsCurve -n "finger_L3_root26Shape" -p "finger_L3_root"; - rename -uid "2D290959-4311-DC38-FD8E-C09E3B645DE8"; +createNode nurbsCurve -n "finger_L3_root29Shape" -p "finger_L3_root"; + rename -uid "91EC1FDF-4970-7ED0-270E-5B90F238C9C0"; setAttr ".ihi" 0; setAttr -k off ".v"; setAttr ".ove" yes; @@ -2167,8 +2162,8 @@ createNode nurbsCurve -n "finger_L3_root26Shape" -p "finger_L3_root"; 0 0 0.25 0 0 -0.25 ; -createNode nurbsCurve -n "finger_L3_root27Shape" -p "finger_L3_root"; - rename -uid "8996337C-4758-6B00-F364-F7B649D8DB6C"; +createNode nurbsCurve -n "finger_L3_root30Shape" -p "finger_L3_root"; + rename -uid "285DA109-4BDF-DD05-9A10-EAA08070CA2C"; setAttr ".ihi" 0; setAttr -k off ".v"; setAttr ".ove" yes; @@ -2195,10 +2190,10 @@ createNode nurbsCurve -n "finger_L3_root27Shape" -p "finger_L3_root"; -0.125 -0.125 -0.125 ; createNode transform -n "finger_L3_0_loc" -p "finger_L3_root"; - rename -uid "D9C18358-412D-12F7-4B9F-03BE6BFA9408"; + rename -uid "54B817B2-4A04-1F3E-4AF8-358F9AE72F85"; addAttr -ci true -sn "isGearGuide" -ln "isGearGuide" -dv 1 -min 0 -max 1 -at "bool"; setAttr -k off -cb on ".v"; - setAttr ".t" -type "double3" 0.84766209830561934 1.4210854715202004e-014 -4.6629367034256575e-015 ; + setAttr ".t" -type "double3" 0.84766209830561579 1.7763568394002505e-014 -5.5511151231257827e-015 ; setAttr -k off -cb on ".tx"; setAttr -k off -cb on ".ty"; setAttr -k off -cb on ".tz"; @@ -2206,12 +2201,11 @@ createNode transform -n "finger_L3_0_loc" -p "finger_L3_root"; setAttr -k off -cb on ".ry"; setAttr -k off -cb on ".rz"; setAttr -cb on ".ro"; - setAttr ".s" -type "double3" 1 1 0.99999999999999989 ; setAttr -k off -cb on ".sx"; setAttr -k off -cb on ".sy"; setAttr -k off -cb on ".sz"; createNode nurbsCurve -n "finger_L3_0_locShape" -p "finger_L3_0_loc"; - rename -uid "B73B8A86-4A17-1259-5013-31955235E617"; + rename -uid "61CFEFB8-483F-4A27-8D8A-5EA79A8C291D"; setAttr ".ihi" 0; setAttr -k off ".v"; setAttr ".ove" yes; @@ -2223,8 +2217,8 @@ createNode nurbsCurve -n "finger_L3_0_locShape" -p "finger_L3_0_loc"; 0.25 0 0 -0.25 0 0 ; -createNode nurbsCurve -n "finger_L3_0_loc25Shape" -p "finger_L3_0_loc"; - rename -uid "6EA4288E-4010-8888-535E-4F9060DD31BB"; +createNode nurbsCurve -n "finger_L3_0_loc28Shape" -p "finger_L3_0_loc"; + rename -uid "48055F8C-40DE-120D-4494-EA9C43463242"; setAttr ".ihi" 0; setAttr -k off ".v"; setAttr ".ove" yes; @@ -2236,8 +2230,8 @@ createNode nurbsCurve -n "finger_L3_0_loc25Shape" -p "finger_L3_0_loc"; 0 0.25 0 0 -0.25 0 ; -createNode nurbsCurve -n "finger_L3_0_loc26Shape" -p "finger_L3_0_loc"; - rename -uid "12B9056E-4FB2-F993-7E0B-758FB0B923E9"; +createNode nurbsCurve -n "finger_L3_0_loc29Shape" -p "finger_L3_0_loc"; + rename -uid "F092861D-47A1-C8DA-60E0-2F987B7C3718"; setAttr ".ihi" 0; setAttr -k off ".v"; setAttr ".ove" yes; @@ -2249,8 +2243,8 @@ createNode nurbsCurve -n "finger_L3_0_loc26Shape" -p "finger_L3_0_loc"; 0 0 0.25 0 0 -0.25 ; -createNode nurbsCurve -n "finger_L3_0_loc27Shape" -p "finger_L3_0_loc"; - rename -uid "F70E89D3-47B1-FD1C-7979-D68C84E6E44B"; +createNode nurbsCurve -n "finger_L3_0_loc30Shape" -p "finger_L3_0_loc"; + rename -uid "14E5CB69-42D9-5530-3679-1DB2C44A4889"; setAttr ".ihi" 0; setAttr -k off ".v"; setAttr ".ove" yes; @@ -2267,8 +2261,8 @@ createNode nurbsCurve -n "finger_L3_0_loc27Shape" -p "finger_L3_0_loc"; 0 -0.1875 0 -0.1875 0 0 ; -createNode nurbsCurve -n "finger_L3_0_loc27_0crvShape" -p "finger_L3_0_loc"; - rename -uid "216C442A-4995-6889-FC02-A08E826B42BA"; +createNode nurbsCurve -n "finger_L3_0_loc30_0crvShape" -p "finger_L3_0_loc"; + rename -uid "4756BDD5-4818-A11B-0D7B-209D9C4F325D"; setAttr ".ihi" 0; setAttr -k off ".v"; setAttr ".ove" yes; @@ -2285,8 +2279,8 @@ createNode nurbsCurve -n "finger_L3_0_loc27_0crvShape" -p "finger_L3_0_loc"; 0 0 -0.1875 -0.1875 0 0 ; -createNode nurbsCurve -n "finger_L3_0_loc27_1crvShape" -p "finger_L3_0_loc"; - rename -uid "CD8ED8D0-4EE7-DEB9-290B-189323C1BD6E"; +createNode nurbsCurve -n "finger_L3_0_loc30_1crvShape" -p "finger_L3_0_loc"; + rename -uid "D9CAFD07-4410-D491-5E41-00B644AC3D07"; setAttr ".ihi" 0; setAttr -k off ".v"; setAttr ".ove" yes; @@ -2304,10 +2298,10 @@ createNode nurbsCurve -n "finger_L3_0_loc27_1crvShape" -p "finger_L3_0_loc"; 0 0 -0.1875 ; createNode transform -n "finger_L3_1_loc" -p "finger_L3_0_loc"; - rename -uid "3F5369F4-4D7D-DACA-8C2A-AF8CB938F690"; + rename -uid "6100888D-44E8-ED07-5ABD-F89C4EECC458"; addAttr -ci true -sn "isGearGuide" -ln "isGearGuide" -dv 1 -min 0 -max 1 -at "bool"; setAttr -k off -cb on ".v"; - setAttr ".t" -type "double3" 0.57524361070876839 -1.7763568394002505e-014 1.1102230246251565e-015 ; + setAttr ".t" -type "double3" 0.57524361070877017 -2.8421709430404007e-014 8.8817841970012523e-016 ; setAttr -k off -cb on ".tx"; setAttr -k off -cb on ".ty"; setAttr -k off -cb on ".tz"; @@ -2315,12 +2309,12 @@ createNode transform -n "finger_L3_1_loc" -p "finger_L3_0_loc"; setAttr -k off -cb on ".ry"; setAttr -k off -cb on ".rz"; setAttr -cb on ".ro"; - setAttr ".s" -type "double3" 1 0.99999999999999933 1.0000000000000002 ; + setAttr ".s" -type "double3" 1 0.99999999999999956 1 ; setAttr -k off -cb on ".sx"; setAttr -k off -cb on ".sy"; setAttr -k off -cb on ".sz"; createNode nurbsCurve -n "finger_L3_1_locShape" -p "finger_L3_1_loc"; - rename -uid "22877B88-4C8F-5E0A-813B-23A243BB05CC"; + rename -uid "51600966-4DB1-6408-E2E4-FFBD712329A9"; setAttr ".ihi" 0; setAttr -k off ".v"; setAttr ".ove" yes; @@ -2332,8 +2326,8 @@ createNode nurbsCurve -n "finger_L3_1_locShape" -p "finger_L3_1_loc"; 0.25 0 0 -0.25 0 0 ; -createNode nurbsCurve -n "finger_L3_1_loc25Shape" -p "finger_L3_1_loc"; - rename -uid "E09104CA-40A3-61B4-AC81-0A90222EA4E4"; +createNode nurbsCurve -n "finger_L3_1_loc28Shape" -p "finger_L3_1_loc"; + rename -uid "350F07C6-4403-1ECC-FF25-0C84F4C2F302"; setAttr ".ihi" 0; setAttr -k off ".v"; setAttr ".ove" yes; @@ -2345,8 +2339,8 @@ createNode nurbsCurve -n "finger_L3_1_loc25Shape" -p "finger_L3_1_loc"; 0 0.25 0 0 -0.25 0 ; -createNode nurbsCurve -n "finger_L3_1_loc26Shape" -p "finger_L3_1_loc"; - rename -uid "6042C87F-4622-3122-EB17-A294E2E27780"; +createNode nurbsCurve -n "finger_L3_1_loc29Shape" -p "finger_L3_1_loc"; + rename -uid "12C3D14D-468A-B0BA-9596-4A977702C920"; setAttr ".ihi" 0; setAttr -k off ".v"; setAttr ".ove" yes; @@ -2358,8 +2352,8 @@ createNode nurbsCurve -n "finger_L3_1_loc26Shape" -p "finger_L3_1_loc"; 0 0 0.25 0 0 -0.25 ; -createNode nurbsCurve -n "finger_L3_1_loc27Shape" -p "finger_L3_1_loc"; - rename -uid "F9C65DD2-4FDB-0157-37B9-A79A174C6751"; +createNode nurbsCurve -n "finger_L3_1_loc30Shape" -p "finger_L3_1_loc"; + rename -uid "9188CD5C-4CB6-51C2-2FB9-FFA7756CF559"; setAttr ".ihi" 0; setAttr -k off ".v"; setAttr ".ove" yes; @@ -2376,8 +2370,8 @@ createNode nurbsCurve -n "finger_L3_1_loc27Shape" -p "finger_L3_1_loc"; 0 -0.1875 0 -0.1875 0 0 ; -createNode nurbsCurve -n "finger_L3_1_loc27_0crvShape" -p "finger_L3_1_loc"; - rename -uid "C79A4836-43B8-A50D-3F84-FAB3D7B7C857"; +createNode nurbsCurve -n "finger_L3_1_loc30_0crvShape" -p "finger_L3_1_loc"; + rename -uid "294C2D10-4E70-A189-F6FB-45B4DAFE2FB0"; setAttr ".ihi" 0; setAttr -k off ".v"; setAttr ".ove" yes; @@ -2394,8 +2388,8 @@ createNode nurbsCurve -n "finger_L3_1_loc27_0crvShape" -p "finger_L3_1_loc"; 0 0 -0.1875 -0.1875 0 0 ; -createNode nurbsCurve -n "finger_L3_1_loc27_1crvShape" -p "finger_L3_1_loc"; - rename -uid "6D9E9243-47E6-6A26-1452-4BB323CEF395"; +createNode nurbsCurve -n "finger_L3_1_loc30_1crvShape" -p "finger_L3_1_loc"; + rename -uid "EACF23F9-4F82-903A-C925-92AE77045087"; setAttr ".ihi" 0; setAttr -k off ".v"; setAttr ".ove" yes; @@ -2413,10 +2407,10 @@ createNode nurbsCurve -n "finger_L3_1_loc27_1crvShape" -p "finger_L3_1_loc"; 0 0 -0.1875 ; createNode transform -n "finger_L3_2_loc" -p "finger_L3_1_loc"; - rename -uid "3344A37A-4DC2-1B59-5690-A39A4FE3E60D"; + rename -uid "1F8A8906-41B4-210E-F188-46AB7B886E48"; addAttr -ci true -sn "isGearGuide" -ln "isGearGuide" -dv 1 -min 0 -max 1 -at "bool"; setAttr -k off -cb on ".v"; - setAttr ".t" -type "double3" 0.31616177259193456 0 4.4408920985006262e-016 ; + setAttr ".t" -type "double3" 0.31616177259193368 7.1054273576010019e-015 -2.2204460492503131e-016 ; setAttr -k off -cb on ".tx"; setAttr -k off -cb on ".ty"; setAttr -k off -cb on ".tz"; @@ -2424,12 +2418,12 @@ createNode transform -n "finger_L3_2_loc" -p "finger_L3_1_loc"; setAttr -k off -cb on ".ry"; setAttr -k off -cb on ".rz"; setAttr -cb on ".ro"; - setAttr ".s" -type "double3" 0.99999999999999956 1.0000000000000013 1.0000000000000004 ; + setAttr ".s" -type "double3" 0.99999999999999944 1.0000000000000011 1.0000000000000004 ; setAttr -k off -cb on ".sx"; setAttr -k off -cb on ".sy"; setAttr -k off -cb on ".sz"; createNode nurbsCurve -n "finger_L3_2_locShape" -p "finger_L3_2_loc"; - rename -uid "DFD67111-448B-8C8A-320A-B38D010BE362"; + rename -uid "2098E164-4A67-1601-E66A-ECB49459EDA1"; setAttr ".ihi" 0; setAttr -k off ".v"; setAttr ".ove" yes; @@ -2441,8 +2435,8 @@ createNode nurbsCurve -n "finger_L3_2_locShape" -p "finger_L3_2_loc"; 0.25 0 0 -0.25 0 0 ; -createNode nurbsCurve -n "finger_L3_2_loc25Shape" -p "finger_L3_2_loc"; - rename -uid "493AEB06-4C77-6EF3-1F30-8A893321B4A8"; +createNode nurbsCurve -n "finger_L3_2_loc28Shape" -p "finger_L3_2_loc"; + rename -uid "AE3E4294-4EAC-D2B8-8A1D-6A8A23428B8D"; setAttr ".ihi" 0; setAttr -k off ".v"; setAttr ".ove" yes; @@ -2454,8 +2448,8 @@ createNode nurbsCurve -n "finger_L3_2_loc25Shape" -p "finger_L3_2_loc"; 0 0.25 0 0 -0.25 0 ; -createNode nurbsCurve -n "finger_L3_2_loc26Shape" -p "finger_L3_2_loc"; - rename -uid "8D525B7C-46D5-E8B4-6E8A-9AA2A7852183"; +createNode nurbsCurve -n "finger_L3_2_loc29Shape" -p "finger_L3_2_loc"; + rename -uid "24A0C1BA-4BD0-E9D1-FAA6-6A86648D9F4A"; setAttr ".ihi" 0; setAttr -k off ".v"; setAttr ".ove" yes; @@ -2467,8 +2461,8 @@ createNode nurbsCurve -n "finger_L3_2_loc26Shape" -p "finger_L3_2_loc"; 0 0 0.25 0 0 -0.25 ; -createNode nurbsCurve -n "finger_L3_2_loc27Shape" -p "finger_L3_2_loc"; - rename -uid "5248BDFE-4720-ECC1-BC14-47A6F52A358E"; +createNode nurbsCurve -n "finger_L3_2_loc30Shape" -p "finger_L3_2_loc"; + rename -uid "E00AB485-4224-D424-D5D0-19AE77B6006D"; setAttr ".ihi" 0; setAttr -k off ".v"; setAttr ".ove" yes; @@ -2485,8 +2479,8 @@ createNode nurbsCurve -n "finger_L3_2_loc27Shape" -p "finger_L3_2_loc"; 0 -0.1875 0 -0.1875 0 0 ; -createNode nurbsCurve -n "finger_L3_2_loc27_0crvShape" -p "finger_L3_2_loc"; - rename -uid "A3DC516E-49A4-0583-65DD-40A04CE8C50E"; +createNode nurbsCurve -n "finger_L3_2_loc30_0crvShape" -p "finger_L3_2_loc"; + rename -uid "8BDBDA93-4B4D-5C71-E2E4-AA81C1104C5B"; setAttr ".ihi" 0; setAttr -k off ".v"; setAttr ".ove" yes; @@ -2503,8 +2497,8 @@ createNode nurbsCurve -n "finger_L3_2_loc27_0crvShape" -p "finger_L3_2_loc"; 0 0 -0.1875 -0.1875 0 0 ; -createNode nurbsCurve -n "finger_L3_2_loc27_1crvShape" -p "finger_L3_2_loc"; - rename -uid "7DBAEEAB-4D24-8B53-0616-FFA6D91B0559"; +createNode nurbsCurve -n "finger_L3_2_loc30_1crvShape" -p "finger_L3_2_loc"; + rename -uid "D159E74E-4F99-8F26-1355-439F86A0E47D"; setAttr ".ihi" 0; setAttr -k off ".v"; setAttr ".ove" yes; @@ -2522,7 +2516,7 @@ createNode nurbsCurve -n "finger_L3_2_loc27_1crvShape" -p "finger_L3_2_loc"; 0 0 -0.1875 ; createNode transform -n "finger_L3_blade" -p "finger_L3_root"; - rename -uid "6323C71F-4D9D-9EF7-3E49-679943A7CD09"; + rename -uid "F1974BED-43CF-8FC4-8B57-84B6CF524F75"; addAttr -ci true -k true -sn "bladeRollOffset" -ln "bladeRollOffset" -at "float"; setAttr -l on -k off -cb on ".v"; setAttr -k off -cb on ".tx"; @@ -2532,13 +2526,12 @@ createNode transform -n "finger_L3_blade" -p "finger_L3_root"; setAttr -k off -cb on ".ry"; setAttr -k off -cb on ".rz"; setAttr -cb on ".ro"; - setAttr ".s" -type "double3" 1 1 0.99999999999999989 ; setAttr -l on -k off -cb on ".sx"; setAttr -l on -k off -cb on ".sy"; setAttr -l on -k off -cb on ".sz"; setAttr -k on ".bladeRollOffset"; createNode nurbsCurve -n "finger_L3_bladeShape" -p "finger_L3_blade"; - rename -uid "E0AA813B-4543-6790-B945-338976F8AA0E"; + rename -uid "FBC924DC-45FC-B63D-9141-F18FB8598403"; setAttr ".ihi" 0; setAttr -k off ".v"; setAttr ".ove" yes; @@ -2548,12 +2541,12 @@ createNode nurbsCurve -n "finger_L3_bladeShape" -p "finger_L3_blade"; 4 0 1 2 3 4 0 0 0 - 0.77578009473970844 0 0 - 0 0.25859336491323615 0 + 0.77578009473970855 0 0 + 0 0.2585933649132362 0 0 0 0 ; -createNode aimConstraint -n "finger_L3_blade_aimConstraint9" -p "finger_L3_blade"; - rename -uid "83F669CA-4448-28DE-0F4C-F1948E275BE3"; +createNode aimConstraint -n "finger_L3_blade_aimConstraint10" -p "finger_L3_blade"; + rename -uid "ED61B55F-4A01-9765-966B-EA94C3CCCCD3"; addAttr -dcb 0 -ci true -sn "w0" -ln "finger_L3_0_locW0" -dv 1 -at "double"; setAttr -k on ".nds"; setAttr -k off ".v"; @@ -2569,8 +2562,8 @@ createNode aimConstraint -n "finger_L3_blade_aimConstraint9" -p "finger_L3_blade setAttr ".erp" yes; setAttr ".wut" 2; setAttr -k on ".w0"; -createNode pointConstraint -n "finger_L3_blade_pointConstraint9" -p "finger_L3_blade"; - rename -uid "249B77DB-4D72-C357-A1CB-3A938A5D72DF"; +createNode pointConstraint -n "finger_L3_blade_pointConstraint10" -p "finger_L3_blade"; + rename -uid "A2500EF5-4718-04A7-8D4B-4CB1C366B44F"; addAttr -dcb 0 -ci true -k true -sn "w0" -ln "finger_L3_rootW0" -dv 1 -min 0 -at "double"; setAttr -k on ".nds"; setAttr -k off ".v"; @@ -2584,22 +2577,22 @@ createNode pointConstraint -n "finger_L3_blade_pointConstraint9" -p "finger_L3_b setAttr -k off ".sy"; setAttr -k off ".sz"; setAttr ".erp" yes; - setAttr ".rst" -type "double3" 1.7763568394002505e-015 0 6.6613381477509392e-016 ; + setAttr ".rst" -type "double3" -1.7763568394002505e-015 0 -2.2204460492503131e-016 ; setAttr -k on ".w0"; createNode transform -n "finger_L3_crv" -p "finger_L3_root"; - rename -uid "906A79DE-4B88-BE47-71A3-4DAE69B0DA56"; + rename -uid "5E11EB2A-4381-9CD9-141E-0A9AB7E98FE8"; setAttr ".ovdt" 1; setAttr ".ove" yes; - setAttr ".t" -type "double3" 8.1560938646754515 -29.032786855763469 1.4804327725045308 ; - setAttr ".r" -type "double3" -7.5791665394140972 -14.304244378901332 49.348303523761764 ; - setAttr ".s" -type "double3" 2.6320983106786136 2.632098310678602 2.6320983106786078 ; + setAttr ".t" -type "double3" 8.1560938646754533 -29.032786855763458 1.4804327725048581 ; + setAttr ".r" -type "double3" -7.5791665394145102 -14.304244378900817 49.348303523761885 ; + setAttr ".s" -type "double3" 2.6320983106786136 2.6320983106786024 2.6320983106786073 ; createNode nurbsCurve -n "finger_L3_crvShape" -p "finger_L3_crv"; - rename -uid "A84822B9-4A94-8F9E-1BB6-828DEAE68A0C"; + rename -uid "82E1BA38-4990-8A03-A9CF-7F9604503500"; setAttr -k off ".v"; setAttr -s 4 ".iog[0].og"; setAttr ".tw" yes; createNode nurbsCurve -n "finger_L3_crvShapeOrig" -p "finger_L3_crv"; - rename -uid "0CD40457-4F18-3DFA-331B-439F22FE1635"; + rename -uid "AAECFF70-473D-B344-9D25-70BB3BF551C1"; setAttr -k off ".v"; setAttr ".io" yes; setAttr ".cc" -type "nurbsCurve" @@ -2612,48 +2605,44 @@ createNode nurbsCurve -n "finger_L3_crvShapeOrig" -p "finger_L3_crv"; 0 0 0 ; createNode transform -n "finger_L2_root" -p "meta_L0_1_loc"; - rename -uid "57DA8E24-423A-7027-211D-F8BCBAA7FF04"; + rename -uid "418BFA34-4474-8D65-2952-B3B4E1A88249"; addAttr -ci true -sn "isGearGuide" -ln "isGearGuide" -dv 1 -min 0 -max 1 -at "bool"; addAttr -ci true -sn "comp_type" -ln "comp_type" -dt "string"; addAttr -ci true -sn "comp_name" -ln "comp_name" -dt "string"; addAttr -ci true -sn "comp_side" -ln "comp_side" -dt "string"; - addAttr -ci true -sn "comp_index" -ln "comp_index" -min 0 -at "long"; + addAttr -ci true -sn "comp_index" -ln "comp_index" -dv 2 -min 0 -at "long"; addAttr -ci true -sn "connector" -ln "connector" -dt "string"; addAttr -ci true -sn "ui_host" -ln "ui_host" -dt "string"; addAttr -ci true -sn "ctlGrp" -ln "ctlGrp" -dt "string"; addAttr -ci true -sn "mode" -ln "mode" -min 0 -at "long"; - addAttr -ci true -sn "blend" -ln "blend" -min 0 -max 1 -at "double"; - addAttr -ci true -sn "neutralpose" -ln "neutralpose" -min 0 -max 1 -at "bool"; + addAttr -ci true -sn "blend" -ln "blend" -dv 1 -min 0 -max 1 -at "double"; + addAttr -ci true -sn "neutralpose" -ln "neutralpose" -dv 1 -min 0 -max 1 -at "bool"; addAttr -ci true -sn "ikrefarray" -ln "ikrefarray" -dt "string"; addAttr -ci true -sn "useIndex" -ln "useIndex" -min 0 -max 1 -at "bool"; - addAttr -ci true -sn "parentJointIndex" -ln "parentJointIndex" -at "long"; + addAttr -ci true -sn "parentJointIndex" -ln "parentJointIndex" -dv -1 -at "long"; setAttr -k off -cb on ".v"; - setAttr ".t" -type "double3" 0.21404201232122544 -0.17620518664708129 2.8414845756647313 ; + setAttr ".t" -type "double3" 0.21404201232122766 -0.17620518664707419 2.8414845756647349 ; setAttr -k off -cb on ".tx"; setAttr -k off -cb on ".ty"; setAttr -k off -cb on ".tz"; - setAttr ".r" -type "double3" 19.114415121377057 -82.086889237978554 -14.829711404959337 ; + setAttr ".r" -type "double3" 19.114415121376148 -82.086889237978653 -14.829711404956837 ; setAttr -k off -cb on ".rx"; setAttr -k off -cb on ".ry"; setAttr -k off -cb on ".rz"; setAttr -cb on ".ro"; - setAttr ".s" -type "double3" 1.2929668245661798 1.2929668245661781 1.2929668245661798 ; + setAttr ".s" -type "double3" 1.2929668245661792 1.2929668245661774 1.2929668245661796 ; setAttr -k off -cb on ".sx"; setAttr -k off -cb on ".sy"; setAttr -k off -cb on ".sz"; setAttr ".comp_type" -type "string" "chain_01"; setAttr ".comp_name" -type "string" "finger"; setAttr ".comp_side" -type "string" "L"; - setAttr ".comp_index" 2; setAttr ".connector" -type "string" "standard"; setAttr ".ui_host" -type "string" ""; setAttr ".ctlGrp" -type "string" ""; - setAttr ".blend" 1; - setAttr ".neutralpose" yes; setAttr ".ikrefarray" -type "string" ""; - setAttr ".parentJointIndex" -1; createNode nurbsCurve -n "finger_L2_rootShape" -p "finger_L2_root"; - rename -uid "11EF1226-46C2-A172-EB9F-3C840ECD1BBF"; + rename -uid "95C28030-4BB0-B6CA-CF5E-B9A71BBB3306"; setAttr ".ihi" 0; setAttr -k off ".v"; setAttr ".ove" yes; @@ -2665,8 +2654,8 @@ createNode nurbsCurve -n "finger_L2_rootShape" -p "finger_L2_root"; 0.25 0 0 -0.25 0 0 ; -createNode nurbsCurve -n "finger_L2_root25Shape" -p "finger_L2_root"; - rename -uid "FA65E776-4AD8-BA5E-0BA6-B6AE407C7E73"; +createNode nurbsCurve -n "finger_L2_root28Shape" -p "finger_L2_root"; + rename -uid "785F8947-47CC-FCB7-9DD6-7B8723F7089F"; setAttr ".ihi" 0; setAttr -k off ".v"; setAttr ".ove" yes; @@ -2678,8 +2667,8 @@ createNode nurbsCurve -n "finger_L2_root25Shape" -p "finger_L2_root"; 0 0.25 0 0 -0.25 0 ; -createNode nurbsCurve -n "finger_L2_root26Shape" -p "finger_L2_root"; - rename -uid "D2CE43F0-46AA-7EE5-8E46-D8B46B11C77F"; +createNode nurbsCurve -n "finger_L2_root29Shape" -p "finger_L2_root"; + rename -uid "349BF42A-4356-5E05-5C89-6BB360FB0D48"; setAttr ".ihi" 0; setAttr -k off ".v"; setAttr ".ove" yes; @@ -2691,8 +2680,8 @@ createNode nurbsCurve -n "finger_L2_root26Shape" -p "finger_L2_root"; 0 0 0.25 0 0 -0.25 ; -createNode nurbsCurve -n "finger_L2_root27Shape" -p "finger_L2_root"; - rename -uid "95D8DDE0-4BE4-FF0C-B3A7-208847A4CDFD"; +createNode nurbsCurve -n "finger_L2_root30Shape" -p "finger_L2_root"; + rename -uid "0F1372C2-4823-E5FE-1CCE-0BAB57395C50"; setAttr ".ihi" 0; setAttr -k off ".v"; setAttr ".ove" yes; @@ -2719,10 +2708,10 @@ createNode nurbsCurve -n "finger_L2_root27Shape" -p "finger_L2_root"; -0.125 -0.125 -0.125 ; createNode transform -n "finger_L2_0_loc" -p "finger_L2_root"; - rename -uid "4A479D2F-427B-E9EC-99FA-A487F53D724B"; + rename -uid "9BF4079A-4154-19CE-9CBE-FFAF54047DE2"; addAttr -ci true -sn "isGearGuide" -ln "isGearGuide" -dv 1 -min 0 -max 1 -at "bool"; setAttr -k off -cb on ".v"; - setAttr ".t" -type "double3" 0.94501387217406929 -1.7763568394002505e-014 2.886579864025407e-015 ; + setAttr ".t" -type "double3" 0.9450138721740684 -1.4210854715202004e-014 2.6645352591003757e-015 ; setAttr -k off -cb on ".tx"; setAttr -k off -cb on ".ty"; setAttr -k off -cb on ".tz"; @@ -2730,12 +2719,12 @@ createNode transform -n "finger_L2_0_loc" -p "finger_L2_root"; setAttr -k off -cb on ".ry"; setAttr -k off -cb on ".rz"; setAttr -cb on ".ro"; - setAttr ".s" -type "double3" 1.0000000000000004 1.0000000000000013 1.0000000000000004 ; + setAttr ".s" -type "double3" 1.0000000000000011 1.0000000000000016 1.0000000000000007 ; setAttr -k off -cb on ".sx"; setAttr -k off -cb on ".sy"; setAttr -k off -cb on ".sz"; createNode nurbsCurve -n "finger_L2_0_locShape" -p "finger_L2_0_loc"; - rename -uid "00606F81-4364-D671-5A9E-C6BD35FBCBB7"; + rename -uid "4F9EF1F5-4AC7-9F2B-4E83-C6A2A9D1D94F"; setAttr ".ihi" 0; setAttr -k off ".v"; setAttr ".ove" yes; @@ -2747,8 +2736,8 @@ createNode nurbsCurve -n "finger_L2_0_locShape" -p "finger_L2_0_loc"; 0.25 0 0 -0.25 0 0 ; -createNode nurbsCurve -n "finger_L2_0_loc25Shape" -p "finger_L2_0_loc"; - rename -uid "02E1403D-45D6-2104-2632-0EA091195788"; +createNode nurbsCurve -n "finger_L2_0_loc28Shape" -p "finger_L2_0_loc"; + rename -uid "DBF01B79-43BC-64D4-F64A-A293C4C2143D"; setAttr ".ihi" 0; setAttr -k off ".v"; setAttr ".ove" yes; @@ -2760,8 +2749,8 @@ createNode nurbsCurve -n "finger_L2_0_loc25Shape" -p "finger_L2_0_loc"; 0 0.25 0 0 -0.25 0 ; -createNode nurbsCurve -n "finger_L2_0_loc26Shape" -p "finger_L2_0_loc"; - rename -uid "A37DE062-4593-BA0F-CFDE-F599648D40F3"; +createNode nurbsCurve -n "finger_L2_0_loc29Shape" -p "finger_L2_0_loc"; + rename -uid "C8C34CC6-424A-4B27-C4AE-418DC501E188"; setAttr ".ihi" 0; setAttr -k off ".v"; setAttr ".ove" yes; @@ -2773,8 +2762,8 @@ createNode nurbsCurve -n "finger_L2_0_loc26Shape" -p "finger_L2_0_loc"; 0 0 0.25 0 0 -0.25 ; -createNode nurbsCurve -n "finger_L2_0_loc27Shape" -p "finger_L2_0_loc"; - rename -uid "286B68CC-4B60-A3C8-F5B5-D9ADAC105F9D"; +createNode nurbsCurve -n "finger_L2_0_loc30Shape" -p "finger_L2_0_loc"; + rename -uid "7197DDE7-4AD5-2617-9EDD-769A510024DA"; setAttr ".ihi" 0; setAttr -k off ".v"; setAttr ".ove" yes; @@ -2791,8 +2780,8 @@ createNode nurbsCurve -n "finger_L2_0_loc27Shape" -p "finger_L2_0_loc"; 0 -0.1875 0 -0.1875 0 0 ; -createNode nurbsCurve -n "finger_L2_0_loc27_0crvShape" -p "finger_L2_0_loc"; - rename -uid "BFE5DF64-448A-40E9-CFA4-7B8BB1C9E106"; +createNode nurbsCurve -n "finger_L2_0_loc30_0crvShape" -p "finger_L2_0_loc"; + rename -uid "9811DA9C-4910-1A00-623D-3897CBAD77ED"; setAttr ".ihi" 0; setAttr -k off ".v"; setAttr ".ove" yes; @@ -2809,8 +2798,8 @@ createNode nurbsCurve -n "finger_L2_0_loc27_0crvShape" -p "finger_L2_0_loc"; 0 0 -0.1875 -0.1875 0 0 ; -createNode nurbsCurve -n "finger_L2_0_loc27_1crvShape" -p "finger_L2_0_loc"; - rename -uid "77BBAAF7-4AEE-938F-6A84-69AB7CD7B681"; +createNode nurbsCurve -n "finger_L2_0_loc30_1crvShape" -p "finger_L2_0_loc"; + rename -uid "2064B136-424E-C896-9E4D-CE9A261D7344"; setAttr ".ihi" 0; setAttr -k off ".v"; setAttr ".ove" yes; @@ -2828,10 +2817,10 @@ createNode nurbsCurve -n "finger_L2_0_loc27_1crvShape" -p "finger_L2_0_loc"; 0 0 -0.1875 ; createNode transform -n "finger_L2_1_loc" -p "finger_L2_0_loc"; - rename -uid "76C51B06-4616-DB68-B044-7182926C1A62"; + rename -uid "22EEE0FE-4605-0FF0-0996-2CB7ECDE849D"; addAttr -ci true -sn "isGearGuide" -ln "isGearGuide" -dv 1 -min 0 -max 1 -at "bool"; setAttr -k off -cb on ".v"; - setAttr ".t" -type "double3" 0.76775488587175289 2.4868995751603507e-014 0 ; + setAttr ".t" -type "double3" 0.76775488587175467 2.1316282072803006e-014 -2.2204460492503131e-016 ; setAttr -k off -cb on ".tx"; setAttr -k off -cb on ".ty"; setAttr -k off -cb on ".tz"; @@ -2839,12 +2828,12 @@ createNode transform -n "finger_L2_1_loc" -p "finger_L2_0_loc"; setAttr -k off -cb on ".ry"; setAttr -k off -cb on ".rz"; setAttr -cb on ".ro"; - setAttr ".s" -type "double3" 0.99999999999999967 0.99999999999999933 0.99999999999999944 ; + setAttr ".s" -type "double3" 0.99999999999999911 0.99999999999999944 0.99999999999999922 ; setAttr -k off -cb on ".sx"; setAttr -k off -cb on ".sy"; setAttr -k off -cb on ".sz"; createNode nurbsCurve -n "finger_L2_1_locShape" -p "finger_L2_1_loc"; - rename -uid "A624494C-4341-C534-4FDA-18B54C346609"; + rename -uid "AA0FE053-440E-AD19-4D34-DEADB8C4541A"; setAttr ".ihi" 0; setAttr -k off ".v"; setAttr ".ove" yes; @@ -2856,8 +2845,8 @@ createNode nurbsCurve -n "finger_L2_1_locShape" -p "finger_L2_1_loc"; 0.25 0 0 -0.25 0 0 ; -createNode nurbsCurve -n "finger_L2_1_loc25Shape" -p "finger_L2_1_loc"; - rename -uid "1BA9E9A3-41DF-919E-E9D8-399C04A0DB2A"; +createNode nurbsCurve -n "finger_L2_1_loc28Shape" -p "finger_L2_1_loc"; + rename -uid "EF6EF24A-4507-88CE-0D00-A5A00F208679"; setAttr ".ihi" 0; setAttr -k off ".v"; setAttr ".ove" yes; @@ -2869,8 +2858,8 @@ createNode nurbsCurve -n "finger_L2_1_loc25Shape" -p "finger_L2_1_loc"; 0 0.25 0 0 -0.25 0 ; -createNode nurbsCurve -n "finger_L2_1_loc26Shape" -p "finger_L2_1_loc"; - rename -uid "B90CFAF0-48D0-FB6A-4950-28B5740FF098"; +createNode nurbsCurve -n "finger_L2_1_loc29Shape" -p "finger_L2_1_loc"; + rename -uid "1CCDFF1B-4735-B19D-3583-05B98B747F28"; setAttr ".ihi" 0; setAttr -k off ".v"; setAttr ".ove" yes; @@ -2882,8 +2871,8 @@ createNode nurbsCurve -n "finger_L2_1_loc26Shape" -p "finger_L2_1_loc"; 0 0 0.25 0 0 -0.25 ; -createNode nurbsCurve -n "finger_L2_1_loc27Shape" -p "finger_L2_1_loc"; - rename -uid "D3744815-478E-C8B5-8DE2-C08D5A2DFE2F"; +createNode nurbsCurve -n "finger_L2_1_loc30Shape" -p "finger_L2_1_loc"; + rename -uid "50EB4404-4948-518D-1332-0CAAC10BA3D8"; setAttr ".ihi" 0; setAttr -k off ".v"; setAttr ".ove" yes; @@ -2900,8 +2889,8 @@ createNode nurbsCurve -n "finger_L2_1_loc27Shape" -p "finger_L2_1_loc"; 0 -0.1875 0 -0.1875 0 0 ; -createNode nurbsCurve -n "finger_L2_1_loc27_0crvShape" -p "finger_L2_1_loc"; - rename -uid "14083BDA-4618-C844-5DF1-4BADFA3B97C4"; +createNode nurbsCurve -n "finger_L2_1_loc30_0crvShape" -p "finger_L2_1_loc"; + rename -uid "B31452CD-48C6-513A-4A29-A8B97F1A5B5B"; setAttr ".ihi" 0; setAttr -k off ".v"; setAttr ".ove" yes; @@ -2918,8 +2907,8 @@ createNode nurbsCurve -n "finger_L2_1_loc27_0crvShape" -p "finger_L2_1_loc"; 0 0 -0.1875 -0.1875 0 0 ; -createNode nurbsCurve -n "finger_L2_1_loc27_1crvShape" -p "finger_L2_1_loc"; - rename -uid "BEF2FFC6-4F8E-582A-B099-419C0A01DFE3"; +createNode nurbsCurve -n "finger_L2_1_loc30_1crvShape" -p "finger_L2_1_loc"; + rename -uid "44314BD5-4758-F2AE-4CB6-19AD4869F483"; setAttr ".ihi" 0; setAttr -k off ".v"; setAttr ".ove" yes; @@ -2937,10 +2926,10 @@ createNode nurbsCurve -n "finger_L2_1_loc27_1crvShape" -p "finger_L2_1_loc"; 0 0 -0.1875 ; createNode transform -n "finger_L2_2_loc" -p "finger_L2_1_loc"; - rename -uid "8A085FD9-4CBB-1B80-BA06-E7B9B7C0E47A"; + rename -uid "D425715E-4685-EEF0-0D5A-D28CCD022306"; addAttr -ci true -sn "isGearGuide" -ln "isGearGuide" -dv 1 -min 0 -max 1 -at "bool"; setAttr -k off -cb on ".v"; - setAttr ".t" -type "double3" 0.67457026674915621 -2.1316282072803006e-014 -6.6613381477509392e-016 ; + setAttr ".t" -type "double3" 0.67457026674915532 -1.7763568394002505e-014 -6.6613381477509392e-016 ; setAttr -k off -cb on ".tx"; setAttr -k off -cb on ".ty"; setAttr -k off -cb on ".tz"; @@ -2948,12 +2937,12 @@ createNode transform -n "finger_L2_2_loc" -p "finger_L2_1_loc"; setAttr -k off -cb on ".ry"; setAttr -k off -cb on ".rz"; setAttr -cb on ".ro"; - setAttr ".s" -type "double3" 1.0000000000000007 1.0000000000000007 1.0000000000000007 ; + setAttr ".s" -type "double3" 1.0000000000000009 1.0000000000000004 1.0000000000000004 ; setAttr -k off -cb on ".sx"; setAttr -k off -cb on ".sy"; setAttr -k off -cb on ".sz"; createNode nurbsCurve -n "finger_L2_2_locShape" -p "finger_L2_2_loc"; - rename -uid "A102E4A9-4D5D-8F72-1425-F6A6A4B2E63D"; + rename -uid "969B6AE1-4303-18B6-C06C-2EB94C9D6C74"; setAttr ".ihi" 0; setAttr -k off ".v"; setAttr ".ove" yes; @@ -2965,8 +2954,8 @@ createNode nurbsCurve -n "finger_L2_2_locShape" -p "finger_L2_2_loc"; 0.25 0 0 -0.25 0 0 ; -createNode nurbsCurve -n "finger_L2_2_loc25Shape" -p "finger_L2_2_loc"; - rename -uid "6079D42E-42A3-223F-B1BA-A8AB851C9BAA"; +createNode nurbsCurve -n "finger_L2_2_loc28Shape" -p "finger_L2_2_loc"; + rename -uid "23B75318-4542-5E2F-C337-569B215A206E"; setAttr ".ihi" 0; setAttr -k off ".v"; setAttr ".ove" yes; @@ -2978,8 +2967,8 @@ createNode nurbsCurve -n "finger_L2_2_loc25Shape" -p "finger_L2_2_loc"; 0 0.25 0 0 -0.25 0 ; -createNode nurbsCurve -n "finger_L2_2_loc26Shape" -p "finger_L2_2_loc"; - rename -uid "46DA4B6C-415C-BC7B-C640-618E564DD3FC"; +createNode nurbsCurve -n "finger_L2_2_loc29Shape" -p "finger_L2_2_loc"; + rename -uid "8FD92D2F-4BD5-6F00-993E-E1BFD9FE66C0"; setAttr ".ihi" 0; setAttr -k off ".v"; setAttr ".ove" yes; @@ -2991,8 +2980,8 @@ createNode nurbsCurve -n "finger_L2_2_loc26Shape" -p "finger_L2_2_loc"; 0 0 0.25 0 0 -0.25 ; -createNode nurbsCurve -n "finger_L2_2_loc27Shape" -p "finger_L2_2_loc"; - rename -uid "8C5222A1-472E-D123-39AA-EE9F473A57F9"; +createNode nurbsCurve -n "finger_L2_2_loc30Shape" -p "finger_L2_2_loc"; + rename -uid "F1385FFC-41F8-22B9-E3D8-CEBEF22D9AE2"; setAttr ".ihi" 0; setAttr -k off ".v"; setAttr ".ove" yes; @@ -3009,8 +2998,8 @@ createNode nurbsCurve -n "finger_L2_2_loc27Shape" -p "finger_L2_2_loc"; 0 -0.1875 0 -0.1875 0 0 ; -createNode nurbsCurve -n "finger_L2_2_loc27_0crvShape" -p "finger_L2_2_loc"; - rename -uid "D901D1BB-4E32-1D56-50F3-F3BAF3B0DDD1"; +createNode nurbsCurve -n "finger_L2_2_loc30_0crvShape" -p "finger_L2_2_loc"; + rename -uid "58E2DBF7-47CF-D73B-467D-A4AD570D0BCE"; setAttr ".ihi" 0; setAttr -k off ".v"; setAttr ".ove" yes; @@ -3027,8 +3016,8 @@ createNode nurbsCurve -n "finger_L2_2_loc27_0crvShape" -p "finger_L2_2_loc"; 0 0 -0.1875 -0.1875 0 0 ; -createNode nurbsCurve -n "finger_L2_2_loc27_1crvShape" -p "finger_L2_2_loc"; - rename -uid "4428C116-4278-76BA-1154-91803031523E"; +createNode nurbsCurve -n "finger_L2_2_loc30_1crvShape" -p "finger_L2_2_loc"; + rename -uid "76F45813-4EAF-68BA-567F-23B44C5B88E0"; setAttr ".ihi" 0; setAttr -k off ".v"; setAttr ".ove" yes; @@ -3046,7 +3035,7 @@ createNode nurbsCurve -n "finger_L2_2_loc27_1crvShape" -p "finger_L2_2_loc"; 0 0 -0.1875 ; createNode transform -n "finger_L2_blade" -p "finger_L2_root"; - rename -uid "C8DBD929-4C8B-31C7-AB8A-E791CC172BFE"; + rename -uid "89394188-4369-A302-77E4-A0A65A6E53B6"; addAttr -ci true -k true -sn "bladeRollOffset" -ln "bladeRollOffset" -at "float"; setAttr -l on -k off -cb on ".v"; setAttr -k off -cb on ".tx"; @@ -3056,13 +3045,13 @@ createNode transform -n "finger_L2_blade" -p "finger_L2_root"; setAttr -k off -cb on ".ry"; setAttr -k off -cb on ".rz"; setAttr -cb on ".ro"; - setAttr ".s" -type "double3" 1.0000000000000004 1.0000000000000013 1.0000000000000004 ; + setAttr ".s" -type "double3" 1.0000000000000011 1.0000000000000016 1.0000000000000007 ; setAttr -l on -k off -cb on ".sx"; setAttr -l on -k off -cb on ".sy"; setAttr -l on -k off -cb on ".sz"; setAttr -k on ".bladeRollOffset"; createNode nurbsCurve -n "finger_L2_bladeShape" -p "finger_L2_blade"; - rename -uid "E8447041-42A1-55CF-B33E-36A7069A480C"; + rename -uid "A6F0E146-4640-EE70-A700-72B69C43FDEE"; setAttr ".ihi" 0; setAttr -k off ".v"; setAttr ".ove" yes; @@ -3072,12 +3061,12 @@ createNode nurbsCurve -n "finger_L2_bladeShape" -p "finger_L2_blade"; 4 0 1 2 3 4 0 0 0 - 0.77578009473970788 0 0 - 0 0.25859336491323598 0 + 0.77578009473970744 0 0 + 0 0.25859336491323581 0 0 0 0 ; -createNode aimConstraint -n "finger_L2_blade_aimConstraint9" -p "finger_L2_blade"; - rename -uid "175754FD-41F0-4C98-F30F-90A373DA3C69"; +createNode aimConstraint -n "finger_L2_blade_aimConstraint10" -p "finger_L2_blade"; + rename -uid "D5BCF1DD-48DD-BFA1-D2F5-15919A47A4DA"; addAttr -dcb 0 -ci true -sn "w0" -ln "finger_L2_0_locW0" -dv 1 -at "double"; setAttr -k on ".nds"; setAttr -k off ".v"; @@ -3093,8 +3082,8 @@ createNode aimConstraint -n "finger_L2_blade_aimConstraint9" -p "finger_L2_blade setAttr ".erp" yes; setAttr ".wut" 2; setAttr -k on ".w0"; -createNode pointConstraint -n "finger_L2_blade_pointConstraint9" -p "finger_L2_blade"; - rename -uid "3857FF8F-4EF7-A8DA-C519-4D821EB0726B"; +createNode pointConstraint -n "finger_L2_blade_pointConstraint10" -p "finger_L2_blade"; + rename -uid "1B1EC012-4C00-9D52-399F-23B5D6D92153"; addAttr -dcb 0 -ci true -k true -sn "w0" -ln "finger_L2_rootW0" -dv 1 -min 0 -at "double"; setAttr -k on ".nds"; setAttr -k off ".v"; @@ -3108,23 +3097,22 @@ createNode pointConstraint -n "finger_L2_blade_pointConstraint9" -p "finger_L2_b setAttr -k off ".sy"; setAttr -k off ".sz"; setAttr ".erp" yes; - setAttr ".rst" -type "double3" 1.7763568394002505e-015 -3.5527136788005009e-015 - 2.2204460492503131e-016 ; + setAttr ".rst" -type "double3" 1.7763568394002505e-015 0 0 ; setAttr -k on ".w0"; createNode transform -n "finger_L2_crv" -p "finger_L2_root"; - rename -uid "1A97941A-488F-CA57-2A33-A99A1155C674"; + rename -uid "2A97DE37-46C2-1452-248A-32B7CC2B0932"; setAttr ".ovdt" 1; setAttr ".ove" yes; - setAttr ".t" -type "double3" 8.0630938931309331 -29.023661369441623 1.4173349723071398 ; - setAttr ".r" -type "double3" -0.54140613098892132 -1.5904804996521624 47.737641631363935 ; - setAttr ".s" -type "double3" 2.6320983106786131 2.6320983106786016 2.6320983106786082 ; + setAttr ".t" -type "double3" 8.0630938931309526 -29.023661369441573 1.4173349723079571 ; + setAttr ".r" -type "double3" -0.54140613098998569 -1.5904804996509363 47.737641631363992 ; + setAttr ".s" -type "double3" 2.6320983106786136 2.632098310678602 2.6320983106786082 ; createNode nurbsCurve -n "finger_L2_crvShape" -p "finger_L2_crv"; - rename -uid "7FEDC1A6-4701-6313-BA1B-E4B88EEF4297"; + rename -uid "C9D9C989-43AF-78E0-D574-DD8FE0F978A2"; setAttr -k off ".v"; setAttr -s 4 ".iog[0].og"; setAttr ".tw" yes; createNode nurbsCurve -n "finger_L2_crvShapeOrig" -p "finger_L2_crv"; - rename -uid "3732F992-44E1-9AB4-ACEE-4DA21667DDED"; + rename -uid "6484CD8B-4000-A0E3-5649-118CDD3D104E"; setAttr -k off ".v"; setAttr ".io" yes; setAttr ".cc" -type "nurbsCurve" @@ -3137,48 +3125,44 @@ createNode nurbsCurve -n "finger_L2_crvShapeOrig" -p "finger_L2_crv"; 0 0 0 ; createNode transform -n "finger_L1_root" -p "meta_L0_0_loc"; - rename -uid "BD2268E3-4997-47BD-33DC-4CB41D8061CF"; + rename -uid "0C271F39-460C-265F-D87C-09B7D908AFF8"; addAttr -ci true -sn "isGearGuide" -ln "isGearGuide" -dv 1 -min 0 -max 1 -at "bool"; addAttr -ci true -sn "comp_type" -ln "comp_type" -dt "string"; addAttr -ci true -sn "comp_name" -ln "comp_name" -dt "string"; addAttr -ci true -sn "comp_side" -ln "comp_side" -dt "string"; - addAttr -ci true -sn "comp_index" -ln "comp_index" -min 0 -at "long"; + addAttr -ci true -sn "comp_index" -ln "comp_index" -dv 1 -min 0 -at "long"; addAttr -ci true -sn "connector" -ln "connector" -dt "string"; addAttr -ci true -sn "ui_host" -ln "ui_host" -dt "string"; addAttr -ci true -sn "ctlGrp" -ln "ctlGrp" -dt "string"; addAttr -ci true -sn "mode" -ln "mode" -min 0 -at "long"; - addAttr -ci true -sn "blend" -ln "blend" -min 0 -max 1 -at "double"; - addAttr -ci true -sn "neutralpose" -ln "neutralpose" -min 0 -max 1 -at "bool"; + addAttr -ci true -sn "blend" -ln "blend" -dv 1 -min 0 -max 1 -at "double"; + addAttr -ci true -sn "neutralpose" -ln "neutralpose" -dv 1 -min 0 -max 1 -at "bool"; addAttr -ci true -sn "ikrefarray" -ln "ikrefarray" -dt "string"; addAttr -ci true -sn "useIndex" -ln "useIndex" -min 0 -max 1 -at "bool"; - addAttr -ci true -sn "parentJointIndex" -ln "parentJointIndex" -at "long"; + addAttr -ci true -sn "parentJointIndex" -ln "parentJointIndex" -dv -1 -at "long"; setAttr -k off -cb on ".v"; - setAttr ".t" -type "double3" -0.0077643969605949437 -0.12358406696715463 2.9483952421545823 ; + setAttr ".t" -type "double3" -0.0077643969605958318 -0.1235840669671262 2.9483952421545823 ; setAttr -k off -cb on ".tx"; setAttr -k off -cb on ".ty"; setAttr -k off -cb on ".tz"; - setAttr ".r" -type "double3" 121.34021398870092 -79.977014017422619 -112.77222628638373 ; + setAttr ".r" -type "double3" 121.34021398870121 -79.977014017422945 -112.77222628638467 ; setAttr -k off -cb on ".rx"; setAttr -k off -cb on ".ry"; setAttr -k off -cb on ".rz"; setAttr -cb on ".ro"; - setAttr ".s" -type "double3" 1.2929668245661787 1.2929668245661801 1.2929668245661796 ; + setAttr ".s" -type "double3" 1.2929668245661792 1.2929668245661801 1.2929668245661796 ; setAttr -k off -cb on ".sx"; setAttr -k off -cb on ".sy"; setAttr -k off -cb on ".sz"; setAttr ".comp_type" -type "string" "chain_01"; setAttr ".comp_name" -type "string" "finger"; setAttr ".comp_side" -type "string" "L"; - setAttr ".comp_index" 1; setAttr ".connector" -type "string" "standard"; setAttr ".ui_host" -type "string" ""; setAttr ".ctlGrp" -type "string" ""; - setAttr ".blend" 1; - setAttr ".neutralpose" yes; setAttr ".ikrefarray" -type "string" ""; - setAttr ".parentJointIndex" -1; createNode nurbsCurve -n "finger_L1_rootShape" -p "finger_L1_root"; - rename -uid "4AA3DB21-4294-81DF-6F48-3B8323B7EF0C"; + rename -uid "23943D21-493A-41CE-FD6C-C68F9870AD74"; setAttr ".ihi" 0; setAttr -k off ".v"; setAttr ".ove" yes; @@ -3190,8 +3174,8 @@ createNode nurbsCurve -n "finger_L1_rootShape" -p "finger_L1_root"; 0.25 0 0 -0.25 0 0 ; -createNode nurbsCurve -n "finger_L1_root25Shape" -p "finger_L1_root"; - rename -uid "C3CBEF3B-49BE-51CA-74C6-05A747B249F0"; +createNode nurbsCurve -n "finger_L1_root28Shape" -p "finger_L1_root"; + rename -uid "3D7453AC-46C9-0752-C5C0-66BAAA2F97DA"; setAttr ".ihi" 0; setAttr -k off ".v"; setAttr ".ove" yes; @@ -3203,8 +3187,8 @@ createNode nurbsCurve -n "finger_L1_root25Shape" -p "finger_L1_root"; 0 0.25 0 0 -0.25 0 ; -createNode nurbsCurve -n "finger_L1_root26Shape" -p "finger_L1_root"; - rename -uid "31FB6B9D-48C2-D2A5-3187-4D95A50F74CA"; +createNode nurbsCurve -n "finger_L1_root29Shape" -p "finger_L1_root"; + rename -uid "B436E7B0-4582-B969-2FB0-AD84AC776642"; setAttr ".ihi" 0; setAttr -k off ".v"; setAttr ".ove" yes; @@ -3216,8 +3200,8 @@ createNode nurbsCurve -n "finger_L1_root26Shape" -p "finger_L1_root"; 0 0 0.25 0 0 -0.25 ; -createNode nurbsCurve -n "finger_L1_root27Shape" -p "finger_L1_root"; - rename -uid "A86BAF5A-4B42-B208-7CA2-B9AFAC2695A3"; +createNode nurbsCurve -n "finger_L1_root30Shape" -p "finger_L1_root"; + rename -uid "080CE05D-4013-2F76-66FD-00BF89BD0507"; setAttr ".ihi" 0; setAttr -k off ".v"; setAttr ".ove" yes; @@ -3244,10 +3228,10 @@ createNode nurbsCurve -n "finger_L1_root27Shape" -p "finger_L1_root"; -0.125 -0.125 -0.125 ; createNode transform -n "finger_L1_0_loc" -p "finger_L1_root"; - rename -uid "AA8B66A7-42ED-1D6C-2FAD-58A956DDF4A8"; + rename -uid "13F05939-4CF8-EE62-91B8-57A880D1DF8C"; addAttr -ci true -sn "isGearGuide" -ln "isGearGuide" -dv 1 -min 0 -max 1 -at "bool"; setAttr -k off -cb on ".v"; - setAttr ".t" -type "double3" 0.99999999999998401 1.4210854715202004e-014 -8.8817841970012523e-016 ; + setAttr ".t" -type "double3" 0.99999999999998224 7.1054273576010019e-015 -2.2204460492503131e-016 ; setAttr -k off -cb on ".tx"; setAttr -k off -cb on ".ty"; setAttr -k off -cb on ".tz"; @@ -3255,12 +3239,12 @@ createNode transform -n "finger_L1_0_loc" -p "finger_L1_root"; setAttr -k off -cb on ".ry"; setAttr -k off -cb on ".rz"; setAttr -cb on ".ro"; - setAttr ".s" -type "double3" 1 1 1.0000000000000002 ; + setAttr ".s" -type "double3" 0.99999999999999967 0.99999999999999967 1 ; setAttr -k off -cb on ".sx"; setAttr -k off -cb on ".sy"; setAttr -k off -cb on ".sz"; createNode nurbsCurve -n "finger_L1_0_locShape" -p "finger_L1_0_loc"; - rename -uid "1E614B76-418E-1DFE-B3D5-3AAF0EF83769"; + rename -uid "F136D4DF-4641-1040-7273-C9998F1CCA19"; setAttr ".ihi" 0; setAttr -k off ".v"; setAttr ".ove" yes; @@ -3272,8 +3256,8 @@ createNode nurbsCurve -n "finger_L1_0_locShape" -p "finger_L1_0_loc"; 0.25 0 0 -0.25 0 0 ; -createNode nurbsCurve -n "finger_L1_0_loc25Shape" -p "finger_L1_0_loc"; - rename -uid "10F5814E-45A5-70A8-E06F-6B90BB380FB4"; +createNode nurbsCurve -n "finger_L1_0_loc28Shape" -p "finger_L1_0_loc"; + rename -uid "4D0237A0-4F00-3C9B-F6BA-F19DF485A1A4"; setAttr ".ihi" 0; setAttr -k off ".v"; setAttr ".ove" yes; @@ -3285,8 +3269,8 @@ createNode nurbsCurve -n "finger_L1_0_loc25Shape" -p "finger_L1_0_loc"; 0 0.25 0 0 -0.25 0 ; -createNode nurbsCurve -n "finger_L1_0_loc26Shape" -p "finger_L1_0_loc"; - rename -uid "ED853624-4043-3727-F926-C39A6BD65842"; +createNode nurbsCurve -n "finger_L1_0_loc29Shape" -p "finger_L1_0_loc"; + rename -uid "DFAC43FB-4218-B221-AFAB-DD9C779C1F93"; setAttr ".ihi" 0; setAttr -k off ".v"; setAttr ".ove" yes; @@ -3298,8 +3282,8 @@ createNode nurbsCurve -n "finger_L1_0_loc26Shape" -p "finger_L1_0_loc"; 0 0 0.25 0 0 -0.25 ; -createNode nurbsCurve -n "finger_L1_0_loc27Shape" -p "finger_L1_0_loc"; - rename -uid "26646860-4CCB-99E3-ED33-7FA4E15C2954"; +createNode nurbsCurve -n "finger_L1_0_loc30Shape" -p "finger_L1_0_loc"; + rename -uid "1FB8DFC0-4AEB-E26B-8C3D-37BA59F2B8CD"; setAttr ".ihi" 0; setAttr -k off ".v"; setAttr ".ove" yes; @@ -3316,8 +3300,8 @@ createNode nurbsCurve -n "finger_L1_0_loc27Shape" -p "finger_L1_0_loc"; 0 -0.1875 0 -0.1875 0 0 ; -createNode nurbsCurve -n "finger_L1_0_loc27_0crvShape" -p "finger_L1_0_loc"; - rename -uid "7BD61DE9-4ADF-011D-F211-579B206007E3"; +createNode nurbsCurve -n "finger_L1_0_loc30_0crvShape" -p "finger_L1_0_loc"; + rename -uid "3735BCB6-4201-163A-55B9-2D9B530CA9F2"; setAttr ".ihi" 0; setAttr -k off ".v"; setAttr ".ove" yes; @@ -3334,8 +3318,8 @@ createNode nurbsCurve -n "finger_L1_0_loc27_0crvShape" -p "finger_L1_0_loc"; 0 0 -0.1875 -0.1875 0 0 ; -createNode nurbsCurve -n "finger_L1_0_loc27_1crvShape" -p "finger_L1_0_loc"; - rename -uid "8EC9AF1F-4C6F-89F8-155F-8A909A5FD410"; +createNode nurbsCurve -n "finger_L1_0_loc30_1crvShape" -p "finger_L1_0_loc"; + rename -uid "1D1576D8-461B-71A3-87F6-078E8CD459D2"; setAttr ".ihi" 0; setAttr -k off ".v"; setAttr ".ove" yes; @@ -3353,10 +3337,10 @@ createNode nurbsCurve -n "finger_L1_0_loc27_1crvShape" -p "finger_L1_0_loc"; 0 0 -0.1875 ; createNode transform -n "finger_L1_1_loc" -p "finger_L1_0_loc"; - rename -uid "30C346E4-4BE6-3596-2F37-3DA18EA1C891"; + rename -uid "4792E878-4C51-3D6A-9B26-EC8C334199AD"; addAttr -ci true -sn "isGearGuide" -ln "isGearGuide" -dv 1 -min 0 -max 1 -at "bool"; setAttr -k off -cb on ".v"; - setAttr ".t" -type "double3" 0.96412528414018439 1.0658141036401503e-014 -4.4408920985006262e-016 ; + setAttr ".t" -type "double3" 0.96412528414018617 1.0658141036401503e-014 4.4408920985006262e-016 ; setAttr -k off -cb on ".tx"; setAttr -k off -cb on ".ty"; setAttr -k off -cb on ".tz"; @@ -3364,12 +3348,12 @@ createNode transform -n "finger_L1_1_loc" -p "finger_L1_0_loc"; setAttr -k off -cb on ".ry"; setAttr -k off -cb on ".rz"; setAttr -cb on ".ro"; - setAttr ".s" -type "double3" 1.0000000000000002 0.99999999999999933 0.99999999999999978 ; + setAttr ".s" -type "double3" 1.0000000000000002 0.99999999999999956 1 ; setAttr -k off -cb on ".sx"; setAttr -k off -cb on ".sy"; setAttr -k off -cb on ".sz"; createNode nurbsCurve -n "finger_L1_1_locShape" -p "finger_L1_1_loc"; - rename -uid "B33026CF-417F-F5D7-1391-418A28E43527"; + rename -uid "7E590291-4B62-A4F9-2877-A692459603C2"; setAttr ".ihi" 0; setAttr -k off ".v"; setAttr ".ove" yes; @@ -3381,8 +3365,8 @@ createNode nurbsCurve -n "finger_L1_1_locShape" -p "finger_L1_1_loc"; 0.25 0 0 -0.25 0 0 ; -createNode nurbsCurve -n "finger_L1_1_loc25Shape" -p "finger_L1_1_loc"; - rename -uid "E2B644F7-4620-426A-A571-A58EB801C9E2"; +createNode nurbsCurve -n "finger_L1_1_loc28Shape" -p "finger_L1_1_loc"; + rename -uid "113BFA7C-4E92-F10E-A9B4-B385004A336E"; setAttr ".ihi" 0; setAttr -k off ".v"; setAttr ".ove" yes; @@ -3394,8 +3378,8 @@ createNode nurbsCurve -n "finger_L1_1_loc25Shape" -p "finger_L1_1_loc"; 0 0.25 0 0 -0.25 0 ; -createNode nurbsCurve -n "finger_L1_1_loc26Shape" -p "finger_L1_1_loc"; - rename -uid "98321750-49FA-3AA3-D1B8-0281C367A02D"; +createNode nurbsCurve -n "finger_L1_1_loc29Shape" -p "finger_L1_1_loc"; + rename -uid "33CAD94C-421F-0747-2B06-E794833052F5"; setAttr ".ihi" 0; setAttr -k off ".v"; setAttr ".ove" yes; @@ -3407,8 +3391,8 @@ createNode nurbsCurve -n "finger_L1_1_loc26Shape" -p "finger_L1_1_loc"; 0 0 0.25 0 0 -0.25 ; -createNode nurbsCurve -n "finger_L1_1_loc27Shape" -p "finger_L1_1_loc"; - rename -uid "ACF16CCA-479B-8318-2B55-6CB728588EF0"; +createNode nurbsCurve -n "finger_L1_1_loc30Shape" -p "finger_L1_1_loc"; + rename -uid "59DC19EC-4185-A2D4-1E15-3480D319C0EA"; setAttr ".ihi" 0; setAttr -k off ".v"; setAttr ".ove" yes; @@ -3425,8 +3409,8 @@ createNode nurbsCurve -n "finger_L1_1_loc27Shape" -p "finger_L1_1_loc"; 0 -0.1875 0 -0.1875 0 0 ; -createNode nurbsCurve -n "finger_L1_1_loc27_0crvShape" -p "finger_L1_1_loc"; - rename -uid "21E8EDFE-4250-DE96-2212-DDBB8F4C3DA7"; +createNode nurbsCurve -n "finger_L1_1_loc30_0crvShape" -p "finger_L1_1_loc"; + rename -uid "E84F6F0B-40D2-32EF-86AB-6797BF96ADAD"; setAttr ".ihi" 0; setAttr -k off ".v"; setAttr ".ove" yes; @@ -3443,8 +3427,8 @@ createNode nurbsCurve -n "finger_L1_1_loc27_0crvShape" -p "finger_L1_1_loc"; 0 0 -0.1875 -0.1875 0 0 ; -createNode nurbsCurve -n "finger_L1_1_loc27_1crvShape" -p "finger_L1_1_loc"; - rename -uid "9CAF207B-44B7-608D-3297-138B9C628413"; +createNode nurbsCurve -n "finger_L1_1_loc30_1crvShape" -p "finger_L1_1_loc"; + rename -uid "7B87ABF2-43D6-FF1F-5F1D-D6B00CC2704D"; setAttr ".ihi" 0; setAttr -k off ".v"; setAttr ".ove" yes; @@ -3462,10 +3446,10 @@ createNode nurbsCurve -n "finger_L1_1_loc27_1crvShape" -p "finger_L1_1_loc"; 0 0 -0.1875 ; createNode transform -n "finger_L1_2_loc" -p "finger_L1_1_loc"; - rename -uid "4380F867-424A-C527-1281-22975C9C1676"; + rename -uid "1D495523-40DC-BBBE-337D-E7923BEB96AC"; addAttr -ci true -sn "isGearGuide" -ln "isGearGuide" -dv 1 -min 0 -max 1 -at "bool"; setAttr -k off -cb on ".v"; - setAttr ".t" -type "double3" 0.58017281549591004 -1.7763568394002505e-014 -2.2204460492503131e-016 ; + setAttr ".t" -type "double3" 0.58017281549589939 -1.4210854715202004e-014 -4.4408920985006262e-016 ; setAttr -k off -cb on ".tx"; setAttr -k off -cb on ".ty"; setAttr -k off -cb on ".tz"; @@ -3473,12 +3457,12 @@ createNode transform -n "finger_L1_2_loc" -p "finger_L1_1_loc"; setAttr -k off -cb on ".ry"; setAttr -k off -cb on ".rz"; setAttr -cb on ".ro"; - setAttr ".s" -type "double3" 1 1 1.0000000000000002 ; + setAttr ".s" -type "double3" 1.0000000000000002 1.0000000000000002 1.0000000000000002 ; setAttr -k off -cb on ".sx"; setAttr -k off -cb on ".sy"; setAttr -k off -cb on ".sz"; createNode nurbsCurve -n "finger_L1_2_locShape" -p "finger_L1_2_loc"; - rename -uid "B625FAD2-41D6-9282-ADF6-F98C86299B4B"; + rename -uid "99AE3963-4377-47A0-8DE7-85A0A5232BEC"; setAttr ".ihi" 0; setAttr -k off ".v"; setAttr ".ove" yes; @@ -3490,8 +3474,8 @@ createNode nurbsCurve -n "finger_L1_2_locShape" -p "finger_L1_2_loc"; 0.25 0 0 -0.25 0 0 ; -createNode nurbsCurve -n "finger_L1_2_loc25Shape" -p "finger_L1_2_loc"; - rename -uid "9084206C-4BC2-911A-6524-8AB4BDC7BDD3"; +createNode nurbsCurve -n "finger_L1_2_loc28Shape" -p "finger_L1_2_loc"; + rename -uid "8A194ADA-4587-ADC8-3893-A5B1D1FBD01E"; setAttr ".ihi" 0; setAttr -k off ".v"; setAttr ".ove" yes; @@ -3503,8 +3487,8 @@ createNode nurbsCurve -n "finger_L1_2_loc25Shape" -p "finger_L1_2_loc"; 0 0.25 0 0 -0.25 0 ; -createNode nurbsCurve -n "finger_L1_2_loc26Shape" -p "finger_L1_2_loc"; - rename -uid "E79F0095-4AAE-60B6-F2F5-2B95CE3A81A9"; +createNode nurbsCurve -n "finger_L1_2_loc29Shape" -p "finger_L1_2_loc"; + rename -uid "D4C988F9-49B4-5BD6-54DD-B987A98C9316"; setAttr ".ihi" 0; setAttr -k off ".v"; setAttr ".ove" yes; @@ -3516,8 +3500,8 @@ createNode nurbsCurve -n "finger_L1_2_loc26Shape" -p "finger_L1_2_loc"; 0 0 0.25 0 0 -0.25 ; -createNode nurbsCurve -n "finger_L1_2_loc27Shape" -p "finger_L1_2_loc"; - rename -uid "E86F7563-4AEB-48D9-1B00-10B4680392F3"; +createNode nurbsCurve -n "finger_L1_2_loc30Shape" -p "finger_L1_2_loc"; + rename -uid "A296DCAD-4468-2665-D014-8C9BEA22B76E"; setAttr ".ihi" 0; setAttr -k off ".v"; setAttr ".ove" yes; @@ -3534,8 +3518,8 @@ createNode nurbsCurve -n "finger_L1_2_loc27Shape" -p "finger_L1_2_loc"; 0 -0.1875 0 -0.1875 0 0 ; -createNode nurbsCurve -n "finger_L1_2_loc27_0crvShape" -p "finger_L1_2_loc"; - rename -uid "FA5588E3-4D1E-B2A3-B3F5-0D93EA509AA9"; +createNode nurbsCurve -n "finger_L1_2_loc30_0crvShape" -p "finger_L1_2_loc"; + rename -uid "085A8154-407E-63C7-BF10-7F9310EABFFC"; setAttr ".ihi" 0; setAttr -k off ".v"; setAttr ".ove" yes; @@ -3552,8 +3536,8 @@ createNode nurbsCurve -n "finger_L1_2_loc27_0crvShape" -p "finger_L1_2_loc"; 0 0 -0.1875 -0.1875 0 0 ; -createNode nurbsCurve -n "finger_L1_2_loc27_1crvShape" -p "finger_L1_2_loc"; - rename -uid "D9CC2DA9-479D-2D42-F1ED-28AEB8E47235"; +createNode nurbsCurve -n "finger_L1_2_loc30_1crvShape" -p "finger_L1_2_loc"; + rename -uid "0467786D-45BB-1434-DA57-AE817A1AEDEE"; setAttr ".ihi" 0; setAttr -k off ".v"; setAttr ".ove" yes; @@ -3571,7 +3555,7 @@ createNode nurbsCurve -n "finger_L1_2_loc27_1crvShape" -p "finger_L1_2_loc"; 0 0 -0.1875 ; createNode transform -n "finger_L1_blade" -p "finger_L1_root"; - rename -uid "1DEEDD98-4D6D-1485-A84A-10B1E083A467"; + rename -uid "A98F837B-4A92-7ECD-3F39-3A973A576A0A"; addAttr -ci true -k true -sn "bladeRollOffset" -ln "bladeRollOffset" -at "float"; setAttr -l on -k off -cb on ".v"; setAttr -k off -cb on ".tx"; @@ -3581,13 +3565,13 @@ createNode transform -n "finger_L1_blade" -p "finger_L1_root"; setAttr -k off -cb on ".ry"; setAttr -k off -cb on ".rz"; setAttr -cb on ".ro"; - setAttr ".s" -type "double3" 1 1 1.0000000000000002 ; + setAttr ".s" -type "double3" 0.99999999999999967 0.99999999999999967 1 ; setAttr -l on -k off -cb on ".sx"; setAttr -l on -k off -cb on ".sy"; setAttr -l on -k off -cb on ".sz"; setAttr -k on ".bladeRollOffset"; createNode nurbsCurve -n "finger_L1_bladeShape" -p "finger_L1_blade"; - rename -uid "C937F5FD-42E8-56D7-69DA-0DBAB07FC194"; + rename -uid "BCC94EA1-432C-5292-D8B3-2393C001F71C"; setAttr ".ihi" 0; setAttr -k off ".v"; setAttr ".ove" yes; @@ -3597,12 +3581,12 @@ createNode nurbsCurve -n "finger_L1_bladeShape" -p "finger_L1_blade"; 4 0 1 2 3 4 0 0 0 - 0.77578009473970722 0 0 - 0 0.25859336491323576 0 + 0.77578009473970744 0 0 + 0 0.25859336491323581 0 0 0 0 ; -createNode aimConstraint -n "finger_L1_blade_aimConstraint9" -p "finger_L1_blade"; - rename -uid "E1B0E283-45C9-9B75-4D5C-60ACE66C8B8D"; +createNode aimConstraint -n "finger_L1_blade_aimConstraint10" -p "finger_L1_blade"; + rename -uid "B6410DF7-43E0-970B-722C-B0BC7A04DED4"; addAttr -dcb 0 -ci true -sn "w0" -ln "finger_L1_0_locW0" -dv 1 -at "double"; setAttr -k on ".nds"; setAttr -k off ".v"; @@ -3618,8 +3602,8 @@ createNode aimConstraint -n "finger_L1_blade_aimConstraint9" -p "finger_L1_blade setAttr ".erp" yes; setAttr ".wut" 2; setAttr -k on ".w0"; -createNode pointConstraint -n "finger_L1_blade_pointConstraint9" -p "finger_L1_blade"; - rename -uid "EBDA3D1E-4602-D91A-C83D-0A8DA97EF9A0"; +createNode pointConstraint -n "finger_L1_blade_pointConstraint10" -p "finger_L1_blade"; + rename -uid "87618FA0-4F86-0369-01CA-9DA206C5573C"; addAttr -dcb 0 -ci true -k true -sn "w0" -ln "finger_L1_rootW0" -dv 1 -min 0 -at "double"; setAttr -k on ".nds"; setAttr -k off ".v"; @@ -3633,22 +3617,22 @@ createNode pointConstraint -n "finger_L1_blade_pointConstraint9" -p "finger_L1_b setAttr -k off ".sy"; setAttr -k off ".sz"; setAttr ".erp" yes; - setAttr ".rst" -type "double3" 0 0 -4.4408920985006262e-016 ; + setAttr ".rst" -type "double3" 0 -3.5527136788005009e-015 0 ; setAttr -k on ".w0"; createNode transform -n "finger_L1_crv" -p "finger_L1_root"; - rename -uid "D46F285E-4F1A-5837-67B6-978759B03612"; + rename -uid "45445143-4606-ECE9-260F-618CB52AC206"; setAttr ".ovdt" 1; setAttr ".ove" yes; - setAttr ".t" -type "double3" 11.22243322515321 -28.040620010901346 1.1418187531094541 ; - setAttr ".r" -type "double3" 5.8484943948543453 9.9768879508748096 54.111347352878276 ; - setAttr ".s" -type "double3" 2.632098310678614 2.6320983106786024 2.6320983106786096 ; + setAttr ".t" -type "double3" 11.222433225153219 -28.040620010901346 1.1418187531091182 ; + setAttr ".r" -type "double3" 5.8484943948547619 9.9768879508742643 54.111347352878354 ; + setAttr ".s" -type "double3" 2.6320983106786122 2.6320983106786016 2.6320983106786091 ; createNode nurbsCurve -n "finger_L1_crvShape" -p "finger_L1_crv"; - rename -uid "E328CA72-436C-03A8-86E0-1094B75AE997"; + rename -uid "026E55F7-477A-80BD-52A9-BAA05ECE7689"; setAttr -k off ".v"; setAttr -s 4 ".iog[0].og"; setAttr ".tw" yes; createNode nurbsCurve -n "finger_L1_crvShapeOrig" -p "finger_L1_crv"; - rename -uid "99C9D10C-4326-602A-EE72-B7B5A92BF200"; + rename -uid "F3171980-49A0-84C7-EB19-29A6CE1C78BD"; setAttr -k off ".v"; setAttr ".io" yes; setAttr ".cc" -type "nurbsCurve" @@ -3661,7 +3645,7 @@ createNode nurbsCurve -n "finger_L1_crvShapeOrig" -p "finger_L1_crv"; 0 0 0 ; createNode transform -n "meta_L0_blade" -p "meta_L0_root"; - rename -uid "922DE496-42FD-2D76-BBC1-048691808D56"; + rename -uid "CDB7EC57-4A43-F40A-3C6D-37BC1C021665"; addAttr -ci true -k true -sn "bladeRollOffset" -ln "bladeRollOffset" -at "float"; setAttr -l on -k off -cb on ".v"; setAttr -k off -cb on ".tx"; @@ -3671,13 +3655,13 @@ createNode transform -n "meta_L0_blade" -p "meta_L0_root"; setAttr -k off -cb on ".ry"; setAttr -k off -cb on ".rz"; setAttr -cb on ".ro"; - setAttr ".s" -type "double3" 0.999999999999999 0.99999999999999956 0.99999999999999878 ; + setAttr ".s" -type "double3" 0.99999999999999911 0.99999999999999956 0.99999999999999878 ; setAttr -l on -k off -cb on ".sx"; setAttr -l on -k off -cb on ".sy"; setAttr -l on -k off -cb on ".sz"; setAttr -k on ".bladeRollOffset"; createNode nurbsCurve -n "meta_L0_bladeShape" -p "meta_L0_blade"; - rename -uid "D0DC799F-4EC9-DB04-AB0B-DBA93701C3CC"; + rename -uid "699FB832-4934-4C70-1FF1-679BF365BDAE"; setAttr ".ihi" 0; setAttr -k off ".v"; setAttr ".ove" yes; @@ -3687,12 +3671,12 @@ createNode nurbsCurve -n "meta_L0_bladeShape" -p "meta_L0_blade"; 4 0 1 2 3 4 0 0 0 - 0.18503232649030155 0 0 - 0 0.061677442163433849 0 + 0.1850323264903016 0 0 + 0 0.06167744216343387 0 0 0 0 ; -createNode aimConstraint -n "meta_L0_blade_aimConstraint9" -p "meta_L0_blade"; - rename -uid "4B498A97-4CCB-5721-1641-5CA425346D7B"; +createNode aimConstraint -n "meta_L0_blade_aimConstraint10" -p "meta_L0_blade"; + rename -uid "DC966F8E-4599-C5FD-B4FB-1DAFAFEA4BB5"; addAttr -dcb 0 -ci true -sn "w0" -ln "meta_L0_0_locW0" -dv 1 -at "double"; setAttr -k on ".nds"; setAttr -k off ".v"; @@ -3708,8 +3692,8 @@ createNode aimConstraint -n "meta_L0_blade_aimConstraint9" -p "meta_L0_blade"; setAttr ".erp" yes; setAttr ".wut" 2; setAttr -k on ".w0"; -createNode pointConstraint -n "meta_L0_blade_pointConstraint9" -p "meta_L0_blade"; - rename -uid "1FECAEEF-4161-BEC9-E047-99BDCA1F7B31"; +createNode pointConstraint -n "meta_L0_blade_pointConstraint10" -p "meta_L0_blade"; + rename -uid "42680D6C-4B21-16CB-E1A4-49AAEC8470FE"; addAttr -dcb 0 -ci true -k true -sn "w0" -ln "meta_L0_rootW0" -dv 1 -min 0 -at "double"; setAttr -k on ".nds"; setAttr -k off ".v"; @@ -3723,22 +3707,22 @@ createNode pointConstraint -n "meta_L0_blade_pointConstraint9" -p "meta_L0_blade setAttr -k off ".sy"; setAttr -k off ".sz"; setAttr ".erp" yes; - setAttr ".rst" -type "double3" 8.8817841970012523e-016 7.1054273576010019e-015 3.5527136788005009e-015 ; + setAttr ".rst" -type "double3" 4.4408920985006262e-016 7.1054273576010019e-015 3.5527136788005009e-015 ; setAttr -k on ".w0"; createNode transform -n "meta_L0_crv" -p "meta_L0_root"; - rename -uid "1DD468D6-44A4-0954-2D60-249B49286D3C"; + rename -uid "0CB4B827-4A4C-1E95-2AC0-37B3FE6D0D64"; setAttr ".ovdt" 1; setAttr ".ove" yes; - setAttr ".t" -type "double3" 3.8070066058400576 -38.076493243285029 11.714163621936251 ; - setAttr ".r" -type "double3" -81.595645682431496 -44.654258545702959 89.275820115296384 ; - setAttr ".s" -type "double3" 3.403215794704129 3.4032157947041144 3.4032157947041237 ; + setAttr ".t" -type "double3" 3.8070066058400549 -38.076493243284943 11.714163621936518 ; + setAttr ".r" -type "double3" -81.59564568243151 -44.654258545702575 89.275820115296355 ; + setAttr ".s" -type "double3" 3.4032157947041286 3.4032157947041144 3.4032157947041233 ; createNode nurbsCurve -n "meta_L0_crvShape" -p "meta_L0_crv"; - rename -uid "45FFC00A-43D9-C53A-26E9-34BF46689BB3"; + rename -uid "27800BDA-42CB-8210-A5F6-6795EDC64001"; setAttr -k off ".v"; setAttr -s 4 ".iog[0].og"; setAttr ".tw" yes; createNode nurbsCurve -n "meta_L0_crvShapeOrig" -p "meta_L0_crv"; - rename -uid "16CA42B1-430C-4D4B-BA41-AC874D1E38BC"; + rename -uid "EA47BFC2-409D-1966-B843-5BB4A3D3967D"; setAttr -k off ".v"; setAttr ".io" yes; setAttr ".cc" -type "nurbsCurve" @@ -3751,7 +3735,7 @@ createNode nurbsCurve -n "meta_L0_crvShapeOrig" -p "meta_L0_crv"; 0 0 0 ; createNode transform -n "finger_L0_root" -p "meta_L0_root"; - rename -uid "22885AB1-4F5B-8106-DCAC-D98DAB2C5AFC"; + rename -uid "62978EF3-446E-5E22-88BE-6C857ECD38F6"; addAttr -ci true -sn "isGearGuide" -ln "isGearGuide" -dv 1 -min 0 -max 1 -at "bool"; addAttr -ci true -sn "comp_type" -ln "comp_type" -dt "string"; addAttr -ci true -sn "comp_name" -ln "comp_name" -dt "string"; @@ -3761,22 +3745,22 @@ createNode transform -n "finger_L0_root" -p "meta_L0_root"; addAttr -ci true -sn "ui_host" -ln "ui_host" -dt "string"; addAttr -ci true -sn "ctlGrp" -ln "ctlGrp" -dt "string"; addAttr -ci true -sn "mode" -ln "mode" -min 0 -at "long"; - addAttr -ci true -sn "blend" -ln "blend" -min 0 -max 1 -at "double"; - addAttr -ci true -sn "neutralpose" -ln "neutralpose" -min 0 -max 1 -at "bool"; + addAttr -ci true -sn "blend" -ln "blend" -dv 1 -min 0 -max 1 -at "double"; + addAttr -ci true -sn "neutralpose" -ln "neutralpose" -dv 1 -min 0 -max 1 -at "bool"; addAttr -ci true -sn "ikrefarray" -ln "ikrefarray" -dt "string"; addAttr -ci true -sn "useIndex" -ln "useIndex" -min 0 -max 1 -at "bool"; - addAttr -ci true -sn "parentJointIndex" -ln "parentJointIndex" -at "long"; + addAttr -ci true -sn "parentJointIndex" -ln "parentJointIndex" -dv -1 -at "long"; setAttr -k off -cb on ".v"; - setAttr ".t" -type "double3" -0.18403723679762996 -0.30586006047049352 2.7614233959505619 ; + setAttr ".t" -type "double3" -0.18403723679763084 -0.3058600604704651 2.7614233959505619 ; setAttr -k off -cb on ".tx"; setAttr -k off -cb on ".ty"; setAttr -k off -cb on ".tz"; - setAttr ".r" -type "double3" 150.01356893808432 -71.60667945009736 -133.79382708613258 ; + setAttr ".r" -type "double3" 150.01356893808463 -71.606679450097616 -133.7938270861334 ; setAttr -k off -cb on ".rx"; setAttr -k off -cb on ".ry"; setAttr -k off -cb on ".rz"; setAttr -cb on ".ro"; - setAttr ".s" -type "double3" 1.2929668245661794 1.2929668245661798 1.292966824566181 ; + setAttr ".s" -type "double3" 1.2929668245661792 1.2929668245661798 1.2929668245661807 ; setAttr -k off -cb on ".sx"; setAttr -k off -cb on ".sy"; setAttr -k off -cb on ".sz"; @@ -3786,12 +3770,9 @@ createNode transform -n "finger_L0_root" -p "meta_L0_root"; setAttr ".connector" -type "string" "standard"; setAttr ".ui_host" -type "string" ""; setAttr ".ctlGrp" -type "string" ""; - setAttr ".blend" 1; - setAttr ".neutralpose" yes; setAttr ".ikrefarray" -type "string" ""; - setAttr ".parentJointIndex" -1; createNode nurbsCurve -n "finger_L0_rootShape" -p "finger_L0_root"; - rename -uid "64732ED2-4E27-8677-7198-209DB9381700"; + rename -uid "5A6AA596-4603-1158-0E2D-C598C41C1CC5"; setAttr ".ihi" 0; setAttr -k off ".v"; setAttr ".ove" yes; @@ -3803,8 +3784,8 @@ createNode nurbsCurve -n "finger_L0_rootShape" -p "finger_L0_root"; 0.25 0 0 -0.25 0 0 ; -createNode nurbsCurve -n "finger_L0_root25Shape" -p "finger_L0_root"; - rename -uid "06A3774D-441D-C2E0-A60F-A3BFFAA6A8D5"; +createNode nurbsCurve -n "finger_L0_root28Shape" -p "finger_L0_root"; + rename -uid "838DFE9A-4D64-79A8-3664-03BBDC4B6B09"; setAttr ".ihi" 0; setAttr -k off ".v"; setAttr ".ove" yes; @@ -3816,8 +3797,8 @@ createNode nurbsCurve -n "finger_L0_root25Shape" -p "finger_L0_root"; 0 0.25 0 0 -0.25 0 ; -createNode nurbsCurve -n "finger_L0_root26Shape" -p "finger_L0_root"; - rename -uid "8C42C813-488E-709C-8163-C1BD2838288B"; +createNode nurbsCurve -n "finger_L0_root29Shape" -p "finger_L0_root"; + rename -uid "A7F38F7F-40FC-0761-B4B1-C18F9143AA66"; setAttr ".ihi" 0; setAttr -k off ".v"; setAttr ".ove" yes; @@ -3829,8 +3810,8 @@ createNode nurbsCurve -n "finger_L0_root26Shape" -p "finger_L0_root"; 0 0 0.25 0 0 -0.25 ; -createNode nurbsCurve -n "finger_L0_root27Shape" -p "finger_L0_root"; - rename -uid "3F4FBE85-4062-BAB2-E794-8F8FCB306F92"; +createNode nurbsCurve -n "finger_L0_root30Shape" -p "finger_L0_root"; + rename -uid "478AA95E-4F22-21D4-CCF5-7AB0DEFEC649"; setAttr ".ihi" 0; setAttr -k off ".v"; setAttr ".ove" yes; @@ -3857,10 +3838,10 @@ createNode nurbsCurve -n "finger_L0_root27Shape" -p "finger_L0_root"; -0.125 -0.125 -0.125 ; createNode transform -n "finger_L0_0_loc" -p "finger_L0_root"; - rename -uid "082D4BD0-40E2-CC91-F61C-BA8FEBFCCCDD"; + rename -uid "11B8034C-40D1-45EC-D9D4-749BEEE123E6"; addAttr -ci true -sn "isGearGuide" -ln "isGearGuide" -dv 1 -min 0 -max 1 -at "bool"; setAttr -k off -cb on ".v"; - setAttr ".t" -type "double3" 1 -3.5527136788005009e-015 6.6613381477509392e-015 ; + setAttr ".t" -type "double3" 1.0000000000000018 -7.1054273576010019e-015 6.6613381477509392e-015 ; setAttr -k off -cb on ".tx"; setAttr -k off -cb on ".ty"; setAttr -k off -cb on ".tz"; @@ -3868,12 +3849,12 @@ createNode transform -n "finger_L0_0_loc" -p "finger_L0_root"; setAttr -k off -cb on ".ry"; setAttr -k off -cb on ".rz"; setAttr -cb on ".ro"; - setAttr ".s" -type "double3" 0.99999999999999911 0.999999999999999 0.99999999999999933 ; + setAttr ".s" -type "double3" 0.99999999999999944 0.99999999999999889 0.99999999999999933 ; setAttr -k off -cb on ".sx"; setAttr -k off -cb on ".sy"; setAttr -k off -cb on ".sz"; createNode nurbsCurve -n "finger_L0_0_locShape" -p "finger_L0_0_loc"; - rename -uid "9A75FAF5-447C-9BB1-34C4-719F34ED4BC4"; + rename -uid "852A603E-492C-7D20-AD5B-0F9B8DC98B75"; setAttr ".ihi" 0; setAttr -k off ".v"; setAttr ".ove" yes; @@ -3885,8 +3866,8 @@ createNode nurbsCurve -n "finger_L0_0_locShape" -p "finger_L0_0_loc"; 0.25 0 0 -0.25 0 0 ; -createNode nurbsCurve -n "finger_L0_0_loc25Shape" -p "finger_L0_0_loc"; - rename -uid "7FC09433-4E09-BAFD-6A68-07ADA599BF4B"; +createNode nurbsCurve -n "finger_L0_0_loc28Shape" -p "finger_L0_0_loc"; + rename -uid "8AD6D44B-4D13-A6EE-2154-ECB3CF9CA2BF"; setAttr ".ihi" 0; setAttr -k off ".v"; setAttr ".ove" yes; @@ -3898,8 +3879,8 @@ createNode nurbsCurve -n "finger_L0_0_loc25Shape" -p "finger_L0_0_loc"; 0 0.25 0 0 -0.25 0 ; -createNode nurbsCurve -n "finger_L0_0_loc26Shape" -p "finger_L0_0_loc"; - rename -uid "3F05C3FA-4137-DE96-6035-9992211EB922"; +createNode nurbsCurve -n "finger_L0_0_loc29Shape" -p "finger_L0_0_loc"; + rename -uid "C19919C8-48B0-4627-7D00-D288E31B142A"; setAttr ".ihi" 0; setAttr -k off ".v"; setAttr ".ove" yes; @@ -3911,8 +3892,8 @@ createNode nurbsCurve -n "finger_L0_0_loc26Shape" -p "finger_L0_0_loc"; 0 0 0.25 0 0 -0.25 ; -createNode nurbsCurve -n "finger_L0_0_loc27Shape" -p "finger_L0_0_loc"; - rename -uid "83E7F9BB-47D7-E3DB-5885-D68DDF7EE1B0"; +createNode nurbsCurve -n "finger_L0_0_loc30Shape" -p "finger_L0_0_loc"; + rename -uid "899FA033-4E8E-01C5-41E9-CEBCDFC00A50"; setAttr ".ihi" 0; setAttr -k off ".v"; setAttr ".ove" yes; @@ -3929,8 +3910,8 @@ createNode nurbsCurve -n "finger_L0_0_loc27Shape" -p "finger_L0_0_loc"; 0 -0.1875 0 -0.1875 0 0 ; -createNode nurbsCurve -n "finger_L0_0_loc27_0crvShape" -p "finger_L0_0_loc"; - rename -uid "46A2A72E-4D67-2DC1-CF01-3C92C9694550"; +createNode nurbsCurve -n "finger_L0_0_loc30_0crvShape" -p "finger_L0_0_loc"; + rename -uid "67A64DC9-4CD9-4C64-40F8-01A8BE24AEC7"; setAttr ".ihi" 0; setAttr -k off ".v"; setAttr ".ove" yes; @@ -3947,8 +3928,8 @@ createNode nurbsCurve -n "finger_L0_0_loc27_0crvShape" -p "finger_L0_0_loc"; 0 0 -0.1875 -0.1875 0 0 ; -createNode nurbsCurve -n "finger_L0_0_loc27_1crvShape" -p "finger_L0_0_loc"; - rename -uid "888B61D7-4757-EF73-22FB-2F8694E96009"; +createNode nurbsCurve -n "finger_L0_0_loc30_1crvShape" -p "finger_L0_0_loc"; + rename -uid "8CAAD295-4F76-1D06-1CA0-6CB991046947"; setAttr ".ihi" 0; setAttr -k off ".v"; setAttr ".ove" yes; @@ -3966,10 +3947,10 @@ createNode nurbsCurve -n "finger_L0_0_loc27_1crvShape" -p "finger_L0_0_loc"; 0 0 -0.1875 ; createNode transform -n "finger_L0_1_loc" -p "finger_L0_0_loc"; - rename -uid "928559FF-4A21-CD44-984E-418D69B33CBB"; + rename -uid "2552A075-4DCD-06DF-276F-9F9B4DA3DC6B"; addAttr -ci true -sn "isGearGuide" -ln "isGearGuide" -dv 1 -min 0 -max 1 -at "bool"; setAttr -k off -cb on ".v"; - setAttr ".t" -type "double3" 0.8044200808092814 -7.1054273576010019e-015 -1.3322676295501878e-015 ; + setAttr ".t" -type "double3" 0.80442008080927785 -1.7763568394002505e-014 1.7763568394002505e-015 ; setAttr -k off -cb on ".tx"; setAttr -k off -cb on ".ty"; setAttr -k off -cb on ".tz"; @@ -3982,7 +3963,7 @@ createNode transform -n "finger_L0_1_loc" -p "finger_L0_0_loc"; setAttr -k off -cb on ".sy"; setAttr -k off -cb on ".sz"; createNode nurbsCurve -n "finger_L0_1_locShape" -p "finger_L0_1_loc"; - rename -uid "F5A86DC3-4ADB-4734-43DE-1E80825E3FFF"; + rename -uid "D34C0DF1-4239-C1A2-86F3-888E9B1BAF03"; setAttr ".ihi" 0; setAttr -k off ".v"; setAttr ".ove" yes; @@ -3994,8 +3975,8 @@ createNode nurbsCurve -n "finger_L0_1_locShape" -p "finger_L0_1_loc"; 0.25 0 0 -0.25 0 0 ; -createNode nurbsCurve -n "finger_L0_1_loc25Shape" -p "finger_L0_1_loc"; - rename -uid "6AE43F93-43AF-1C3B-F197-908E3F88C9F1"; +createNode nurbsCurve -n "finger_L0_1_loc28Shape" -p "finger_L0_1_loc"; + rename -uid "2D77368E-4706-E62C-4B00-5CAB2B968870"; setAttr ".ihi" 0; setAttr -k off ".v"; setAttr ".ove" yes; @@ -4007,8 +3988,8 @@ createNode nurbsCurve -n "finger_L0_1_loc25Shape" -p "finger_L0_1_loc"; 0 0.25 0 0 -0.25 0 ; -createNode nurbsCurve -n "finger_L0_1_loc26Shape" -p "finger_L0_1_loc"; - rename -uid "39DBDF61-475B-8A4A-07CE-43AB8A1C8DEF"; +createNode nurbsCurve -n "finger_L0_1_loc29Shape" -p "finger_L0_1_loc"; + rename -uid "9D5C41E7-4623-7251-C991-BB80D734CFD6"; setAttr ".ihi" 0; setAttr -k off ".v"; setAttr ".ove" yes; @@ -4020,8 +4001,8 @@ createNode nurbsCurve -n "finger_L0_1_loc26Shape" -p "finger_L0_1_loc"; 0 0 0.25 0 0 -0.25 ; -createNode nurbsCurve -n "finger_L0_1_loc27Shape" -p "finger_L0_1_loc"; - rename -uid "ED6C7F39-447A-4595-18B6-F28317795076"; +createNode nurbsCurve -n "finger_L0_1_loc30Shape" -p "finger_L0_1_loc"; + rename -uid "9FA0C7B4-4DCD-367A-C1CB-B8BF724ABAFA"; setAttr ".ihi" 0; setAttr -k off ".v"; setAttr ".ove" yes; @@ -4038,8 +4019,8 @@ createNode nurbsCurve -n "finger_L0_1_loc27Shape" -p "finger_L0_1_loc"; 0 -0.1875 0 -0.1875 0 0 ; -createNode nurbsCurve -n "finger_L0_1_loc27_0crvShape" -p "finger_L0_1_loc"; - rename -uid "32267432-4EB6-EC24-6131-638E0471CAA8"; +createNode nurbsCurve -n "finger_L0_1_loc30_0crvShape" -p "finger_L0_1_loc"; + rename -uid "FE764952-4EAC-2CB8-6101-32A3BAE47000"; setAttr ".ihi" 0; setAttr -k off ".v"; setAttr ".ove" yes; @@ -4056,8 +4037,8 @@ createNode nurbsCurve -n "finger_L0_1_loc27_0crvShape" -p "finger_L0_1_loc"; 0 0 -0.1875 -0.1875 0 0 ; -createNode nurbsCurve -n "finger_L0_1_loc27_1crvShape" -p "finger_L0_1_loc"; - rename -uid "21C06269-44A1-7FA5-CB6E-269BFEF5E1BF"; +createNode nurbsCurve -n "finger_L0_1_loc30_1crvShape" -p "finger_L0_1_loc"; + rename -uid "0D5FA66B-4B58-48BC-FAD6-F0811512F230"; setAttr ".ihi" 0; setAttr -k off ".v"; setAttr ".ove" yes; @@ -4075,10 +4056,10 @@ createNode nurbsCurve -n "finger_L0_1_loc27_1crvShape" -p "finger_L0_1_loc"; 0 0 -0.1875 ; createNode transform -n "finger_L0_2_loc" -p "finger_L0_1_loc"; - rename -uid "C1A72BD3-49CB-2018-8C27-1EB9BC40CD8E"; + rename -uid "39101F5E-43E6-656C-F247-539BDBE1A072"; addAttr -ci true -sn "isGearGuide" -ln "isGearGuide" -dv 1 -min 0 -max 1 -at "bool"; setAttr -k off -cb on ".v"; - setAttr ".t" -type "double3" 0.58431370392367654 2.1316282072803006e-014 -2.6645352591003757e-015 ; + setAttr ".t" -type "double3" 0.58431370392367832 2.4868995751603507e-014 -4.4408920985006262e-015 ; setAttr -k off -cb on ".tx"; setAttr -k off -cb on ".ty"; setAttr -k off -cb on ".tz"; @@ -4086,12 +4067,12 @@ createNode transform -n "finger_L0_2_loc" -p "finger_L0_1_loc"; setAttr -k off -cb on ".ry"; setAttr -k off -cb on ".rz"; setAttr -cb on ".ro"; - setAttr ".s" -type "double3" 0.99999999999999956 1 1 ; + setAttr ".s" -type "double3" 0.99999999999999933 1 1 ; setAttr -k off -cb on ".sx"; setAttr -k off -cb on ".sy"; setAttr -k off -cb on ".sz"; createNode nurbsCurve -n "finger_L0_2_locShape" -p "finger_L0_2_loc"; - rename -uid "9C445A5D-4A07-C219-382C-BABB3C251301"; + rename -uid "86F80F96-467C-626B-2B7C-F384B8579057"; setAttr ".ihi" 0; setAttr -k off ".v"; setAttr ".ove" yes; @@ -4103,8 +4084,8 @@ createNode nurbsCurve -n "finger_L0_2_locShape" -p "finger_L0_2_loc"; 0.25 0 0 -0.25 0 0 ; -createNode nurbsCurve -n "finger_L0_2_loc25Shape" -p "finger_L0_2_loc"; - rename -uid "C7696955-473E-8B23-2C25-F990B152EABF"; +createNode nurbsCurve -n "finger_L0_2_loc28Shape" -p "finger_L0_2_loc"; + rename -uid "51713412-49FA-6A1A-EB57-39BF5D10DCBA"; setAttr ".ihi" 0; setAttr -k off ".v"; setAttr ".ove" yes; @@ -4116,8 +4097,8 @@ createNode nurbsCurve -n "finger_L0_2_loc25Shape" -p "finger_L0_2_loc"; 0 0.25 0 0 -0.25 0 ; -createNode nurbsCurve -n "finger_L0_2_loc26Shape" -p "finger_L0_2_loc"; - rename -uid "55A98F08-40BD-E4A7-E9E6-288C4AAC24FC"; +createNode nurbsCurve -n "finger_L0_2_loc29Shape" -p "finger_L0_2_loc"; + rename -uid "AE08FCD4-4DED-F437-52B5-7F903D8142C7"; setAttr ".ihi" 0; setAttr -k off ".v"; setAttr ".ove" yes; @@ -4129,8 +4110,8 @@ createNode nurbsCurve -n "finger_L0_2_loc26Shape" -p "finger_L0_2_loc"; 0 0 0.25 0 0 -0.25 ; -createNode nurbsCurve -n "finger_L0_2_loc27Shape" -p "finger_L0_2_loc"; - rename -uid "DDF1E2C9-4B6E-E9E4-36A9-908E6D5ADEE2"; +createNode nurbsCurve -n "finger_L0_2_loc30Shape" -p "finger_L0_2_loc"; + rename -uid "D9A642BA-46F8-C18E-C574-28B69F6E77D7"; setAttr ".ihi" 0; setAttr -k off ".v"; setAttr ".ove" yes; @@ -4147,8 +4128,8 @@ createNode nurbsCurve -n "finger_L0_2_loc27Shape" -p "finger_L0_2_loc"; 0 -0.1875 0 -0.1875 0 0 ; -createNode nurbsCurve -n "finger_L0_2_loc27_0crvShape" -p "finger_L0_2_loc"; - rename -uid "7E7CCD1C-4060-0DB4-3A27-6C8D88EFE3AD"; +createNode nurbsCurve -n "finger_L0_2_loc30_0crvShape" -p "finger_L0_2_loc"; + rename -uid "AD1203B7-4443-5072-EC12-65AF6576749F"; setAttr ".ihi" 0; setAttr -k off ".v"; setAttr ".ove" yes; @@ -4165,8 +4146,8 @@ createNode nurbsCurve -n "finger_L0_2_loc27_0crvShape" -p "finger_L0_2_loc"; 0 0 -0.1875 -0.1875 0 0 ; -createNode nurbsCurve -n "finger_L0_2_loc27_1crvShape" -p "finger_L0_2_loc"; - rename -uid "23F1A20C-4F74-9EE4-9911-DABC7E7284E9"; +createNode nurbsCurve -n "finger_L0_2_loc30_1crvShape" -p "finger_L0_2_loc"; + rename -uid "A593EEBB-47E4-60A4-28B0-938052D5BD7D"; setAttr ".ihi" 0; setAttr -k off ".v"; setAttr ".ove" yes; @@ -4184,7 +4165,7 @@ createNode nurbsCurve -n "finger_L0_2_loc27_1crvShape" -p "finger_L0_2_loc"; 0 0 -0.1875 ; createNode transform -n "finger_L0_blade" -p "finger_L0_root"; - rename -uid "04A857C2-4FFF-36AE-6E0E-AD80AB30EDF6"; + rename -uid "049B1532-4F86-7AD3-25A9-C59377345B73"; addAttr -ci true -k true -sn "bladeRollOffset" -ln "bladeRollOffset" -at "float"; setAttr -l on -k off -cb on ".v"; setAttr -k off -cb on ".tx"; @@ -4194,13 +4175,13 @@ createNode transform -n "finger_L0_blade" -p "finger_L0_root"; setAttr -k off -cb on ".ry"; setAttr -k off -cb on ".rz"; setAttr -cb on ".ro"; - setAttr ".s" -type "double3" 0.99999999999999911 0.999999999999999 0.99999999999999933 ; + setAttr ".s" -type "double3" 0.99999999999999944 0.99999999999999889 0.99999999999999933 ; setAttr -l on -k off -cb on ".sx"; setAttr -l on -k off -cb on ".sy"; setAttr -l on -k off -cb on ".sz"; setAttr -k on ".bladeRollOffset"; createNode nurbsCurve -n "finger_L0_bladeShape" -p "finger_L0_blade"; - rename -uid "918CB6E6-4E5F-9788-6011-B5A1496C892D"; + rename -uid "9F317629-4088-8380-B52F-6C947534746E"; setAttr ".ihi" 0; setAttr -k off ".v"; setAttr ".ove" yes; @@ -4210,12 +4191,12 @@ createNode nurbsCurve -n "finger_L0_bladeShape" -p "finger_L0_blade"; 4 0 1 2 3 4 0 0 0 - 0.77578009473970766 0 0 - 0 0.25859336491323587 0 + 0.77578009473970744 0 0 + 0 0.25859336491323581 0 0 0 0 ; -createNode aimConstraint -n "finger_L0_blade_aimConstraint9" -p "finger_L0_blade"; - rename -uid "CB0C1BA6-42D1-6210-3DB7-D1A0735F62D4"; +createNode aimConstraint -n "finger_L0_blade_aimConstraint10" -p "finger_L0_blade"; + rename -uid "402FFE37-4FE7-4BAF-ABE0-7AADEDA34B8F"; addAttr -dcb 0 -ci true -sn "w0" -ln "finger_L0_0_locW0" -dv 1 -at "double"; setAttr -k on ".nds"; setAttr -k off ".v"; @@ -4231,8 +4212,8 @@ createNode aimConstraint -n "finger_L0_blade_aimConstraint9" -p "finger_L0_blade setAttr ".erp" yes; setAttr ".wut" 2; setAttr -k on ".w0"; -createNode pointConstraint -n "finger_L0_blade_pointConstraint9" -p "finger_L0_blade"; - rename -uid "15B1054B-4867-2EA2-0706-9F918C4E4CCF"; +createNode pointConstraint -n "finger_L0_blade_pointConstraint10" -p "finger_L0_blade"; + rename -uid "18A83D25-47CE-7603-0536-E580E637915C"; addAttr -dcb 0 -ci true -k true -sn "w0" -ln "finger_L0_rootW0" -dv 1 -min 0 -at "double"; setAttr -k on ".nds"; setAttr -k off ".v"; @@ -4246,23 +4227,22 @@ createNode pointConstraint -n "finger_L0_blade_pointConstraint9" -p "finger_L0_b setAttr -k off ".sy"; setAttr -k off ".sz"; setAttr ".erp" yes; - setAttr ".rst" -type "double3" -3.5527136788005009e-015 -3.5527136788005009e-015 - 0 ; + setAttr ".rst" -type "double3" 5.3290705182007514e-015 3.5527136788005009e-015 -1.7763568394002505e-015 ; setAttr -k on ".w0"; createNode transform -n "finger_L0_crv" -p "finger_L0_root"; - rename -uid "CD9C955A-4E22-C583-7D63-6A950E53BA03"; + rename -uid "EEAA1DC4-4C5C-0BD1-32A8-20A8B42D86BA"; setAttr ".ovdt" 1; setAttr ".ove" yes; - setAttr ".t" -type "double3" 12.549990763713115 -27.336008057181125 2.4648652761305296 ; - setAttr ".r" -type "double3" 9.1654334880180617 22.111176212556721 57.120615095544899 ; - setAttr ".s" -type "double3" 2.6320983106786096 2.6320983106785993 2.6320983106786042 ; + setAttr ".t" -type "double3" 12.549990763713129 -27.33600805718115 2.4648652761302503 ; + setAttr ".r" -type "double3" 9.1654334880184116 22.111176212556234 57.120615095545027 ; + setAttr ".s" -type "double3" 2.63209831067861 2.6320983106786002 2.6320983106786047 ; createNode nurbsCurve -n "finger_L0_crvShape" -p "finger_L0_crv"; - rename -uid "585A73A7-4071-CDB7-A6C5-E2BA60A66848"; + rename -uid "2AF8F7E6-40BB-4BBE-6462-7D8779CE676F"; setAttr -k off ".v"; setAttr -s 4 ".iog[0].og"; setAttr ".tw" yes; createNode nurbsCurve -n "finger_L0_crvShapeOrig" -p "finger_L0_crv"; - rename -uid "BB731634-4071-B93E-B595-A58B71FA5C7C"; + rename -uid "CCCC1B8E-4174-9438-5701-A7B993781878"; setAttr -k off ".v"; setAttr ".io" yes; setAttr ".cc" -type "nurbsCurve" @@ -4275,7 +4255,7 @@ createNode nurbsCurve -n "finger_L0_crvShapeOrig" -p "finger_L0_crv"; 0 0 0 ; createNode transform -n "thumbRoll_L0_root" -p "meta_L0_root"; - rename -uid "64E77E44-46A0-501F-63C5-20871C283EC6"; + rename -uid "56F0734C-4AAE-211C-7C6D-18B8834F0BC6"; addAttr -ci true -sn "isGearGuide" -ln "isGearGuide" -dv 1 -min 0 -max 1 -at "bool"; addAttr -ci true -sn "comp_type" -ln "comp_type" -dt "string"; addAttr -ci true -sn "comp_name" -ln "comp_name" -dt "string"; @@ -4288,32 +4268,33 @@ createNode transform -n "thumbRoll_L0_root" -p "meta_L0_root"; addAttr -ci true -sn "ikrefarray" -ln "ikrefarray" -dt "string"; addAttr -ci true -sn "joint" -ln "joint" -min 0 -max 1 -at "bool"; addAttr -ci true -sn "uniScale" -ln "uniScale" -min 0 -max 1 -at "bool"; - addAttr -ci true -sn "k_tx" -ln "k_tx" -min 0 -max 1 -at "bool"; - addAttr -ci true -sn "k_ty" -ln "k_ty" -min 0 -max 1 -at "bool"; - addAttr -ci true -sn "k_tz" -ln "k_tz" -min 0 -max 1 -at "bool"; - addAttr -ci true -sn "k_ro" -ln "k_ro" -min 0 -max 1 -at "bool"; - addAttr -ci true -sn "k_rx" -ln "k_rx" -min 0 -max 1 -at "bool"; - addAttr -ci true -sn "k_ry" -ln "k_ry" -min 0 -max 1 -at "bool"; - addAttr -ci true -sn "k_rz" -ln "k_rz" -min 0 -max 1 -at "bool"; - addAttr -ci true -sn "k_sx" -ln "k_sx" -min 0 -max 1 -at "bool"; - addAttr -ci true -sn "k_sy" -ln "k_sy" -min 0 -max 1 -at "bool"; - addAttr -ci true -sn "k_sz" -ln "k_sz" -min 0 -max 1 -at "bool"; + addAttr -ci true -sn "k_tx" -ln "k_tx" -dv 1 -min 0 -max 1 -at "bool"; + addAttr -ci true -sn "k_ty" -ln "k_ty" -dv 1 -min 0 -max 1 -at "bool"; + addAttr -ci true -sn "k_tz" -ln "k_tz" -dv 1 -min 0 -max 1 -at "bool"; + addAttr -ci true -sn "k_ro" -ln "k_ro" -dv 1 -min 0 -max 1 -at "bool"; + addAttr -ci true -sn "k_rx" -ln "k_rx" -dv 1 -min 0 -max 1 -at "bool"; + addAttr -ci true -sn "k_ry" -ln "k_ry" -dv 1 -min 0 -max 1 -at "bool"; + addAttr -ci true -sn "k_rz" -ln "k_rz" -dv 1 -min 0 -max 1 -at "bool"; + addAttr -ci true -sn "k_sx" -ln "k_sx" -dv 1 -min 0 -max 1 -at "bool"; + addAttr -ci true -sn "k_sy" -ln "k_sy" -dv 1 -min 0 -max 1 -at "bool"; + addAttr -ci true -sn "k_sz" -ln "k_sz" -dv 1 -min 0 -max 1 -at "bool"; addAttr -ci true -sn "default_rotorder" -ln "default_rotorder" -min 0 -max 5 -at "long"; addAttr -ci true -sn "neutralRotation" -ln "neutralRotation" -min 0 -max 1 -at "bool"; - addAttr -ci true -sn "ctlSize" -ln "ctlSize" -at "double"; + addAttr -ci true -sn "mirrorBehaviour" -ln "mirrorBehaviour" -min 0 -max 1 -at "bool"; + addAttr -ci true -sn "ctlSize" -ln "ctlSize" -dv 0.7 -at "double"; addAttr -ci true -sn "useIndex" -ln "useIndex" -min 0 -max 1 -at "bool"; - addAttr -ci true -sn "parentJointIndex" -ln "parentJointIndex" -at "long"; + addAttr -ci true -sn "parentJointIndex" -ln "parentJointIndex" -dv -1 -at "long"; setAttr -k off -cb on ".v"; - setAttr ".t" -type "double3" 0.21303623709073616 -0.22489125789798692 0.1307033745215378 ; + setAttr ".t" -type "double3" 0.2130362370907366 -0.22489125789797981 0.13070337452153957 ; setAttr -k off -cb on ".tx"; setAttr -k off -cb on ".ty"; setAttr -k off -cb on ".tz"; - setAttr ".r" -type "double3" -5.7735227848273638 -84.00156352323107 11.009204406906205 ; + setAttr ".r" -type "double3" -5.773522784831 -84.001563523230999 11.009204406909584 ; setAttr -k off -cb on ".rx"; setAttr -k off -cb on ".ry"; setAttr -k off -cb on ".rz"; setAttr -cb on ".ro"; - setAttr ".s" -type "double3" 3.4032157947041286 3.4032157947041166 3.4032157947041224 ; + setAttr ".s" -type "double3" 3.4032157947041286 3.4032157947041157 3.4032157947041219 ; setAttr -k off -cb on ".sx"; setAttr -k off -cb on ".sy"; setAttr -k off -cb on ".sz"; @@ -4325,20 +4306,8 @@ createNode transform -n "thumbRoll_L0_root" -p "meta_L0_root"; setAttr ".ctlGrp" -type "string" ""; setAttr ".icon" -type "string" "sphere"; setAttr ".ikrefarray" -type "string" ""; - setAttr ".k_tx" yes; - setAttr ".k_ty" yes; - setAttr ".k_tz" yes; - setAttr ".k_ro" yes; - setAttr ".k_rx" yes; - setAttr ".k_ry" yes; - setAttr ".k_rz" yes; - setAttr ".k_sx" yes; - setAttr ".k_sy" yes; - setAttr ".k_sz" yes; - setAttr ".ctlSize" 0.7; - setAttr ".parentJointIndex" -1; createNode nurbsCurve -n "thumbRoll_L0_rootShape" -p "thumbRoll_L0_root"; - rename -uid "9BB32D7D-44F5-71CA-A973-95B74FA83782"; + rename -uid "AFB2EF7B-443D-F9A6-AA20-FA8FD6A61FDC"; setAttr ".ihi" 0; setAttr -k off ".v"; setAttr ".ove" yes; @@ -4350,8 +4319,8 @@ createNode nurbsCurve -n "thumbRoll_L0_rootShape" -p "thumbRoll_L0_root"; 0.25 0 0 -0.25 0 0 ; -createNode nurbsCurve -n "thumbRoll_L0_root16Shape" -p "thumbRoll_L0_root"; - rename -uid "E99C768E-4A05-A27D-E7CD-35BFDB5F88F5"; +createNode nurbsCurve -n "thumbRoll_L0_root19Shape" -p "thumbRoll_L0_root"; + rename -uid "CBB388FB-4546-B6D8-38A3-C4B843350EC9"; setAttr ".ihi" 0; setAttr -k off ".v"; setAttr ".ove" yes; @@ -4363,8 +4332,8 @@ createNode nurbsCurve -n "thumbRoll_L0_root16Shape" -p "thumbRoll_L0_root"; 0 0.25 0 0 -0.25 0 ; -createNode nurbsCurve -n "thumbRoll_L0_root17Shape" -p "thumbRoll_L0_root"; - rename -uid "2278F785-4936-F3AA-52E5-7C8A5EFADFC9"; +createNode nurbsCurve -n "thumbRoll_L0_root20Shape" -p "thumbRoll_L0_root"; + rename -uid "1B2DBC0E-4FE2-0875-1188-DEBC970E85DD"; setAttr ".ihi" 0; setAttr -k off ".v"; setAttr ".ove" yes; @@ -4376,8 +4345,8 @@ createNode nurbsCurve -n "thumbRoll_L0_root17Shape" -p "thumbRoll_L0_root"; 0 0 0.25 0 0 -0.25 ; -createNode nurbsCurve -n "thumbRoll_L0_root18Shape" -p "thumbRoll_L0_root"; - rename -uid "608C1610-473F-2B75-1E5E-4A90A92D994A"; +createNode nurbsCurve -n "thumbRoll_L0_root21Shape" -p "thumbRoll_L0_root"; + rename -uid "941625C0-436B-D98F-75C1-A696FDEA10F2"; setAttr ".ihi" 0; setAttr -k off ".v"; setAttr ".ove" yes; @@ -4404,24 +4373,24 @@ createNode nurbsCurve -n "thumbRoll_L0_root18Shape" -p "thumbRoll_L0_root"; -0.125 -0.125 -0.125 ; createNode transform -n "thumbRoll_L0_sizeRef" -p "thumbRoll_L0_root"; - rename -uid "C7729B7F-4C0C-7835-93D3-8E8C470A9106"; + rename -uid "40C1EDC7-456D-4F66-FBD1-F39748112732"; addAttr -ci true -sn "isGearGuide" -ln "isGearGuide" -dv 1 -min 0 -max 1 -at "bool"; setAttr -k off -cb on ".v"; - setAttr ".t" -type "double3" 8.8817841970012523e-016 3.907985046680551e-014 1.0000000000000007 ; + setAttr ".t" -type "double3" -1.3322676295501878e-015 3.5527136788005009e-014 1.0000000000000007 ; setAttr -k off -cb on ".tx"; setAttr -k off -cb on ".ty"; setAttr -k off -cb on ".tz"; - setAttr ".r" -type "double3" 0 0 44.430829212205673 ; + setAttr ".r" -type "double3" 0 0 44.43082921220573 ; setAttr -k off -cb on ".rx"; setAttr -k off -cb on ".ry"; setAttr -k off -cb on ".rz"; setAttr -cb on ".ro"; - setAttr ".s" -type "double3" 1.0000000000000018 0.99999999999999767 1.0000000000000007 ; + setAttr ".s" -type "double3" 1.0000000000000018 0.99999999999999756 1.0000000000000004 ; setAttr -k off -cb on ".sx"; setAttr -k off -cb on ".sy"; setAttr -k off -cb on ".sz"; createNode transform -n "thumb_L0_root" -p "thumbRoll_L0_root"; - rename -uid "01C1AF1D-47CF-B7A7-1074-08A3F27BA6E0"; + rename -uid "C5AB0929-4738-3785-69BD-28A62669F366"; addAttr -ci true -sn "isGearGuide" -ln "isGearGuide" -dv 1 -min 0 -max 1 -at "bool"; addAttr -ci true -sn "comp_type" -ln "comp_type" -dt "string"; addAttr -ci true -sn "comp_name" -ln "comp_name" -dt "string"; @@ -4431,22 +4400,22 @@ createNode transform -n "thumb_L0_root" -p "thumbRoll_L0_root"; addAttr -ci true -sn "ui_host" -ln "ui_host" -dt "string"; addAttr -ci true -sn "ctlGrp" -ln "ctlGrp" -dt "string"; addAttr -ci true -sn "mode" -ln "mode" -min 0 -at "long"; - addAttr -ci true -sn "blend" -ln "blend" -min 0 -max 1 -at "double"; - addAttr -ci true -sn "neutralpose" -ln "neutralpose" -min 0 -max 1 -at "bool"; + addAttr -ci true -sn "blend" -ln "blend" -dv 1 -min 0 -max 1 -at "double"; + addAttr -ci true -sn "neutralpose" -ln "neutralpose" -dv 1 -min 0 -max 1 -at "bool"; addAttr -ci true -sn "ikrefarray" -ln "ikrefarray" -dt "string"; addAttr -ci true -sn "useIndex" -ln "useIndex" -min 0 -max 1 -at "bool"; - addAttr -ci true -sn "parentJointIndex" -ln "parentJointIndex" -at "long"; + addAttr -ci true -sn "parentJointIndex" -ln "parentJointIndex" -dv -1 -at "long"; setAttr -k off -cb on ".v"; - setAttr ".t" -type "double3" 1.3322676295501878e-015 -1.7763568394002505e-015 7.2164496600635175e-016 ; + setAttr ".t" -type "double3" -8.8817841970012523e-016 -1.7763568394002505e-015 9.9920072216264089e-016 ; setAttr -k off -cb on ".tx"; setAttr -k off -cb on ".ty"; setAttr -k off -cb on ".tz"; - setAttr ".r" -type "double3" 110.8010863191306 -43.900240512232479 -37.623269198287744 ; + setAttr ".r" -type "double3" 110.80108631913085 -43.900240512232322 -37.6232691982879 ; setAttr -k off -cb on ".rx"; setAttr -k off -cb on ".ry"; setAttr -k off -cb on ".rz"; setAttr -cb on ".ro"; - setAttr ".s" -type "double3" 0.48936434703511106 0.48936434703511011 0.48936434703511167 ; + setAttr ".s" -type "double3" 0.48936434703511095 0.48936434703511011 0.48936434703511161 ; setAttr -k off -cb on ".sx"; setAttr -k off -cb on ".sy"; setAttr -k off -cb on ".sz"; @@ -4456,12 +4425,9 @@ createNode transform -n "thumb_L0_root" -p "thumbRoll_L0_root"; setAttr ".connector" -type "string" "standard"; setAttr ".ui_host" -type "string" ""; setAttr ".ctlGrp" -type "string" ""; - setAttr ".blend" 1; - setAttr ".neutralpose" yes; setAttr ".ikrefarray" -type "string" ""; - setAttr ".parentJointIndex" -1; createNode nurbsCurve -n "thumb_L0_rootShape" -p "thumb_L0_root"; - rename -uid "7E15F295-4440-1992-AF38-7E96E3192FBC"; + rename -uid "DED516A7-4EEE-040F-377F-71893EE01F21"; setAttr ".ihi" 0; setAttr -k off ".v"; setAttr ".ove" yes; @@ -4473,8 +4439,8 @@ createNode nurbsCurve -n "thumb_L0_rootShape" -p "thumb_L0_root"; 0.25 0 0 -0.25 0 0 ; -createNode nurbsCurve -n "thumb_L0_root25Shape" -p "thumb_L0_root"; - rename -uid "03A0B975-4DE5-9C81-CFDF-0491CBADE547"; +createNode nurbsCurve -n "thumb_L0_root28Shape" -p "thumb_L0_root"; + rename -uid "B9A799BC-4A8A-4E03-16FF-C28192582122"; setAttr ".ihi" 0; setAttr -k off ".v"; setAttr ".ove" yes; @@ -4486,8 +4452,8 @@ createNode nurbsCurve -n "thumb_L0_root25Shape" -p "thumb_L0_root"; 0 0.25 0 0 -0.25 0 ; -createNode nurbsCurve -n "thumb_L0_root26Shape" -p "thumb_L0_root"; - rename -uid "D03CA2AB-48F6-4A3C-8BD5-2C832A85E68D"; +createNode nurbsCurve -n "thumb_L0_root29Shape" -p "thumb_L0_root"; + rename -uid "45E9DC20-46E3-F51C-B7B1-88B790B9D12F"; setAttr ".ihi" 0; setAttr -k off ".v"; setAttr ".ove" yes; @@ -4499,8 +4465,8 @@ createNode nurbsCurve -n "thumb_L0_root26Shape" -p "thumb_L0_root"; 0 0 0.25 0 0 -0.25 ; -createNode nurbsCurve -n "thumb_L0_root27Shape" -p "thumb_L0_root"; - rename -uid "155A496D-4CDD-4BA9-06E4-2CB41BA9D277"; +createNode nurbsCurve -n "thumb_L0_root30Shape" -p "thumb_L0_root"; + rename -uid "75A9BA71-4260-65F8-936C-2BB28E6744C7"; setAttr ".ihi" 0; setAttr -k off ".v"; setAttr ".ove" yes; @@ -4527,24 +4493,24 @@ createNode nurbsCurve -n "thumb_L0_root27Shape" -p "thumb_L0_root"; -0.125 -0.125 -0.125 ; createNode transform -n "thumb_L0_0_loc" -p "thumb_L0_root"; - rename -uid "053BA957-4B4B-2E03-17E2-1799182E761D"; + rename -uid "E39CC9AF-47C0-1B99-EDFA-AAAF1CEF7659"; addAttr -ci true -sn "isGearGuide" -ln "isGearGuide" -dv 1 -min 0 -max 1 -at "bool"; setAttr -k off -cb on ".v"; - setAttr ".t" -type "double3" 0.86054350703470206 0.0024095775966985755 -1.0658141036401503e-014 ; + setAttr ".t" -type "double3" 0.86054350703470561 0.0024095775966950228 -7.1054273576010019e-015 ; setAttr -k off -cb on ".tx"; setAttr -k off -cb on ".ty"; setAttr -k off -cb on ".tz"; - setAttr ".r" -type "double3" 0 0 -4.2384257498060656 ; + setAttr ".r" -type "double3" 0 0 -4.2384257498060629 ; setAttr -k off -cb on ".rx"; setAttr -k off -cb on ".ry"; setAttr -k off -cb on ".rz"; setAttr -cb on ".ro"; - setAttr ".s" -type "double3" 0.999999999999999 0.99999999999999989 1.0000000000000007 ; + setAttr ".s" -type "double3" 0.999999999999999 0.99999999999999978 1.0000000000000011 ; setAttr -k off -cb on ".sx"; setAttr -k off -cb on ".sy"; setAttr -k off -cb on ".sz"; createNode nurbsCurve -n "thumb_L0_0_locShape" -p "thumb_L0_0_loc"; - rename -uid "8EF80DCE-47A7-3E8A-4E6B-E1BBAE717C92"; + rename -uid "C1DD1DF5-4074-F957-1E5C-EEADC2935C82"; setAttr ".ihi" 0; setAttr -k off ".v"; setAttr ".ove" yes; @@ -4556,8 +4522,8 @@ createNode nurbsCurve -n "thumb_L0_0_locShape" -p "thumb_L0_0_loc"; 0.25 0 0 -0.25 0 0 ; -createNode nurbsCurve -n "thumb_L0_0_loc25Shape" -p "thumb_L0_0_loc"; - rename -uid "C994EEFB-4185-10D4-5065-0E964AD8ED72"; +createNode nurbsCurve -n "thumb_L0_0_loc28Shape" -p "thumb_L0_0_loc"; + rename -uid "A90EB3B7-4B18-CA82-5B88-C5A63F6302AA"; setAttr ".ihi" 0; setAttr -k off ".v"; setAttr ".ove" yes; @@ -4569,8 +4535,8 @@ createNode nurbsCurve -n "thumb_L0_0_loc25Shape" -p "thumb_L0_0_loc"; 0 0.25 0 0 -0.25 0 ; -createNode nurbsCurve -n "thumb_L0_0_loc26Shape" -p "thumb_L0_0_loc"; - rename -uid "0802EF91-4D41-16EC-7E5C-75A05DFCBB77"; +createNode nurbsCurve -n "thumb_L0_0_loc29Shape" -p "thumb_L0_0_loc"; + rename -uid "00CDDF69-4184-6F25-E047-2E9511EFD739"; setAttr ".ihi" 0; setAttr -k off ".v"; setAttr ".ove" yes; @@ -4582,8 +4548,8 @@ createNode nurbsCurve -n "thumb_L0_0_loc26Shape" -p "thumb_L0_0_loc"; 0 0 0.25 0 0 -0.25 ; -createNode nurbsCurve -n "thumb_L0_0_loc27Shape" -p "thumb_L0_0_loc"; - rename -uid "A5B31980-40FC-EDB0-D523-9CBD2A67DAE8"; +createNode nurbsCurve -n "thumb_L0_0_loc30Shape" -p "thumb_L0_0_loc"; + rename -uid "379B0EA3-4E65-A635-237B-669EAD20A88C"; setAttr ".ihi" 0; setAttr -k off ".v"; setAttr ".ove" yes; @@ -4600,8 +4566,8 @@ createNode nurbsCurve -n "thumb_L0_0_loc27Shape" -p "thumb_L0_0_loc"; 0 -0.1875 0 -0.1875 0 0 ; -createNode nurbsCurve -n "thumb_L0_0_loc27_0crvShape" -p "thumb_L0_0_loc"; - rename -uid "4823A6B8-452B-29BC-3E5F-608409A9BD9A"; +createNode nurbsCurve -n "thumb_L0_0_loc30_0crvShape" -p "thumb_L0_0_loc"; + rename -uid "6711751A-408C-05DE-9883-2DACAA74CA06"; setAttr ".ihi" 0; setAttr -k off ".v"; setAttr ".ove" yes; @@ -4618,8 +4584,8 @@ createNode nurbsCurve -n "thumb_L0_0_loc27_0crvShape" -p "thumb_L0_0_loc"; 0 0 -0.1875 -0.1875 0 0 ; -createNode nurbsCurve -n "thumb_L0_0_loc27_1crvShape" -p "thumb_L0_0_loc"; - rename -uid "A83D962A-4EDE-80D8-FFC3-B9A60D221B24"; +createNode nurbsCurve -n "thumb_L0_0_loc30_1crvShape" -p "thumb_L0_0_loc"; + rename -uid "04951D39-4110-82F7-DF77-DD9AB1F643D5"; setAttr ".ihi" 0; setAttr -k off ".v"; setAttr ".ove" yes; @@ -4637,10 +4603,10 @@ createNode nurbsCurve -n "thumb_L0_0_loc27_1crvShape" -p "thumb_L0_0_loc"; 0 0 -0.1875 ; createNode transform -n "thumb_L0_1_loc" -p "thumb_L0_0_loc"; - rename -uid "DCA495EF-489B-E21E-EDA2-8AA54A417A6B"; + rename -uid "CB6E009A-4684-408C-4017-2B960D2669F1"; addAttr -ci true -sn "isGearGuide" -ln "isGearGuide" -dv 1 -min 0 -max 1 -at "bool"; setAttr -k off -cb on ".v"; - setAttr ".t" -type "double3" 0.76442580145521433 -2.6645352591003757e-015 2.8421709430404007e-014 ; + setAttr ".t" -type "double3" 0.7644258014552161 -3.5527136788005009e-015 2.8421709430404007e-014 ; setAttr -k off -cb on ".tx"; setAttr -k off -cb on ".ty"; setAttr -k off -cb on ".tz"; @@ -4648,12 +4614,12 @@ createNode transform -n "thumb_L0_1_loc" -p "thumb_L0_0_loc"; setAttr -k off -cb on ".ry"; setAttr -k off -cb on ".rz"; setAttr -cb on ".ro"; - setAttr ".s" -type "double3" 0.99999999999999956 0.99999999999999922 0.99999999999999989 ; + setAttr ".s" -type "double3" 0.99999999999999956 0.99999999999999889 0.99999999999999944 ; setAttr -k off -cb on ".sx"; setAttr -k off -cb on ".sy"; setAttr -k off -cb on ".sz"; createNode nurbsCurve -n "thumb_L0_1_locShape" -p "thumb_L0_1_loc"; - rename -uid "4604D555-4D25-6B33-45CF-FD87B365D3A4"; + rename -uid "074BB02C-40BB-4CFB-33EA-7E9E40434338"; setAttr ".ihi" 0; setAttr -k off ".v"; setAttr ".ove" yes; @@ -4665,8 +4631,8 @@ createNode nurbsCurve -n "thumb_L0_1_locShape" -p "thumb_L0_1_loc"; 0.25 0 0 -0.25 0 0 ; -createNode nurbsCurve -n "thumb_L0_1_loc25Shape" -p "thumb_L0_1_loc"; - rename -uid "8CCC05EE-4901-8BB7-833D-4696FFA1442F"; +createNode nurbsCurve -n "thumb_L0_1_loc28Shape" -p "thumb_L0_1_loc"; + rename -uid "63DC77E2-4EA0-CE23-8603-F3A5EE602574"; setAttr ".ihi" 0; setAttr -k off ".v"; setAttr ".ove" yes; @@ -4678,8 +4644,8 @@ createNode nurbsCurve -n "thumb_L0_1_loc25Shape" -p "thumb_L0_1_loc"; 0 0.25 0 0 -0.25 0 ; -createNode nurbsCurve -n "thumb_L0_1_loc26Shape" -p "thumb_L0_1_loc"; - rename -uid "CE834660-4EDA-A894-9B02-08B8CA9F1D1C"; +createNode nurbsCurve -n "thumb_L0_1_loc29Shape" -p "thumb_L0_1_loc"; + rename -uid "A7313799-476B-CC9F-8F70-E9B1E024281C"; setAttr ".ihi" 0; setAttr -k off ".v"; setAttr ".ove" yes; @@ -4691,8 +4657,8 @@ createNode nurbsCurve -n "thumb_L0_1_loc26Shape" -p "thumb_L0_1_loc"; 0 0 0.25 0 0 -0.25 ; -createNode nurbsCurve -n "thumb_L0_1_loc27Shape" -p "thumb_L0_1_loc"; - rename -uid "7D49DBDF-444F-84C2-5590-3FB85E30896A"; +createNode nurbsCurve -n "thumb_L0_1_loc30Shape" -p "thumb_L0_1_loc"; + rename -uid "67531729-48DE-8B40-8D0A-9F8DEA92AF08"; setAttr ".ihi" 0; setAttr -k off ".v"; setAttr ".ove" yes; @@ -4709,8 +4675,8 @@ createNode nurbsCurve -n "thumb_L0_1_loc27Shape" -p "thumb_L0_1_loc"; 0 -0.1875 0 -0.1875 0 0 ; -createNode nurbsCurve -n "thumb_L0_1_loc27_0crvShape" -p "thumb_L0_1_loc"; - rename -uid "F29A108F-45B5-3BF2-0864-208647B6A45E"; +createNode nurbsCurve -n "thumb_L0_1_loc30_0crvShape" -p "thumb_L0_1_loc"; + rename -uid "3EB5C795-4CFC-7350-DE57-3D85CDEF72EB"; setAttr ".ihi" 0; setAttr -k off ".v"; setAttr ".ove" yes; @@ -4727,8 +4693,8 @@ createNode nurbsCurve -n "thumb_L0_1_loc27_0crvShape" -p "thumb_L0_1_loc"; 0 0 -0.1875 -0.1875 0 0 ; -createNode nurbsCurve -n "thumb_L0_1_loc27_1crvShape" -p "thumb_L0_1_loc"; - rename -uid "59F1D2C5-405F-9477-515C-35A559C89382"; +createNode nurbsCurve -n "thumb_L0_1_loc30_1crvShape" -p "thumb_L0_1_loc"; + rename -uid "1E8F3478-4EF9-17EC-4259-37BEC3D2AB9A"; setAttr ".ihi" 0; setAttr -k off ".v"; setAttr ".ove" yes; @@ -4746,10 +4712,10 @@ createNode nurbsCurve -n "thumb_L0_1_loc27_1crvShape" -p "thumb_L0_1_loc"; 0 0 -0.1875 ; createNode transform -n "thumb_L0_2_loc" -p "thumb_L0_1_loc"; - rename -uid "0B1EA30F-43DF-5A3D-61AA-23BB160CFD7F"; + rename -uid "DEAF4FB6-4F48-8CF4-5CF8-0B8DE8709639"; addAttr -ci true -sn "isGearGuide" -ln "isGearGuide" -dv 1 -min 0 -max 1 -at "bool"; setAttr -k off -cb on ".v"; - setAttr ".t" -type "double3" 0.5948211491551092 5.3290705182007514e-015 3.5527136788005009e-015 ; + setAttr ".t" -type "double3" 0.5948211491551092 7.1054273576010019e-015 3.5527136788005009e-015 ; setAttr -k off -cb on ".tx"; setAttr -k off -cb on ".ty"; setAttr -k off -cb on ".tz"; @@ -4757,12 +4723,12 @@ createNode transform -n "thumb_L0_2_loc" -p "thumb_L0_1_loc"; setAttr -k off -cb on ".ry"; setAttr -k off -cb on ".rz"; setAttr -cb on ".ro"; - setAttr ".s" -type "double3" 0.99999999999999989 1.0000000000000004 0.99999999999999989 ; + setAttr ".s" -type "double3" 1 1.0000000000000004 0.99999999999999956 ; setAttr -k off -cb on ".sx"; setAttr -k off -cb on ".sy"; setAttr -k off -cb on ".sz"; createNode nurbsCurve -n "thumb_L0_2_locShape" -p "thumb_L0_2_loc"; - rename -uid "20A5061C-4298-D9A6-BE03-A69759AD5C29"; + rename -uid "632FF905-4AE4-397D-FB66-87A04FDF20F6"; setAttr ".ihi" 0; setAttr -k off ".v"; setAttr ".ove" yes; @@ -4774,8 +4740,8 @@ createNode nurbsCurve -n "thumb_L0_2_locShape" -p "thumb_L0_2_loc"; 0.25 0 0 -0.25 0 0 ; -createNode nurbsCurve -n "thumb_L0_2_loc25Shape" -p "thumb_L0_2_loc"; - rename -uid "01354464-4A2F-B7A3-690B-40B496448002"; +createNode nurbsCurve -n "thumb_L0_2_loc28Shape" -p "thumb_L0_2_loc"; + rename -uid "3970E56B-4858-FF19-EA73-BB967991523E"; setAttr ".ihi" 0; setAttr -k off ".v"; setAttr ".ove" yes; @@ -4787,8 +4753,8 @@ createNode nurbsCurve -n "thumb_L0_2_loc25Shape" -p "thumb_L0_2_loc"; 0 0.25 0 0 -0.25 0 ; -createNode nurbsCurve -n "thumb_L0_2_loc26Shape" -p "thumb_L0_2_loc"; - rename -uid "3A656996-4C8C-11C5-F67F-05BABDD47D44"; +createNode nurbsCurve -n "thumb_L0_2_loc29Shape" -p "thumb_L0_2_loc"; + rename -uid "9AFF6097-4072-64E1-8EB8-4CA296059716"; setAttr ".ihi" 0; setAttr -k off ".v"; setAttr ".ove" yes; @@ -4800,8 +4766,8 @@ createNode nurbsCurve -n "thumb_L0_2_loc26Shape" -p "thumb_L0_2_loc"; 0 0 0.25 0 0 -0.25 ; -createNode nurbsCurve -n "thumb_L0_2_loc27Shape" -p "thumb_L0_2_loc"; - rename -uid "91A31CF1-4AED-9F7E-2334-7ABD908A5FE5"; +createNode nurbsCurve -n "thumb_L0_2_loc30Shape" -p "thumb_L0_2_loc"; + rename -uid "E304926F-4590-4E24-B7E5-93AC1104F076"; setAttr ".ihi" 0; setAttr -k off ".v"; setAttr ".ove" yes; @@ -4818,8 +4784,8 @@ createNode nurbsCurve -n "thumb_L0_2_loc27Shape" -p "thumb_L0_2_loc"; 0 -0.1875 0 -0.1875 0 0 ; -createNode nurbsCurve -n "thumb_L0_2_loc27_0crvShape" -p "thumb_L0_2_loc"; - rename -uid "254D4A1B-43DC-478A-2A52-B499307345A1"; +createNode nurbsCurve -n "thumb_L0_2_loc30_0crvShape" -p "thumb_L0_2_loc"; + rename -uid "B56B0E38-4910-B71D-3C9C-DE9993BB104D"; setAttr ".ihi" 0; setAttr -k off ".v"; setAttr ".ove" yes; @@ -4836,8 +4802,8 @@ createNode nurbsCurve -n "thumb_L0_2_loc27_0crvShape" -p "thumb_L0_2_loc"; 0 0 -0.1875 -0.1875 0 0 ; -createNode nurbsCurve -n "thumb_L0_2_loc27_1crvShape" -p "thumb_L0_2_loc"; - rename -uid "B61990C2-474C-992A-E6C2-03AEA8EB014C"; +createNode nurbsCurve -n "thumb_L0_2_loc30_1crvShape" -p "thumb_L0_2_loc"; + rename -uid "41E52D28-4CDB-8F79-23B0-F9B8BCC03EE5"; setAttr ".ihi" 0; setAttr -k off ".v"; setAttr ".ove" yes; @@ -4855,7 +4821,7 @@ createNode nurbsCurve -n "thumb_L0_2_loc27_1crvShape" -p "thumb_L0_2_loc"; 0 0 -0.1875 ; createNode transform -n "thumb_L0_blade" -p "thumb_L0_root"; - rename -uid "7508BD50-45CE-4A76-D18C-80854D1E80FC"; + rename -uid "0E6B6DF7-4134-6953-D8D3-029902A6D5D1"; addAttr -ci true -k true -sn "bladeRollOffset" -ln "bladeRollOffset" -at "float"; setAttr -l on -k off -cb on ".v"; setAttr -k off -cb on ".tx"; @@ -4865,13 +4831,13 @@ createNode transform -n "thumb_L0_blade" -p "thumb_L0_root"; setAttr -k off -cb on ".ry"; setAttr -k off -cb on ".rz"; setAttr -cb on ".ro"; - setAttr ".s" -type "double3" 0.99999999999999833 0.99999999999999856 0.99999999999999956 ; + setAttr ".s" -type "double3" 0.99999999999999833 0.99999999999999845 1 ; setAttr -l on -k off -cb on ".sx"; setAttr -l on -k off -cb on ".sy"; setAttr -l on -k off -cb on ".sz"; setAttr -k on ".bladeRollOffset"; createNode nurbsCurve -n "thumb_L0_bladeShape" -p "thumb_L0_blade"; - rename -uid "E732A533-4CD5-E65B-D848-8BA246004846"; + rename -uid "1E6A47A3-45DF-62D2-08E9-B1BA0E975799"; setAttr ".ihi" 0; setAttr -k off ".v"; setAttr ".ove" yes; @@ -4881,12 +4847,12 @@ createNode nurbsCurve -n "thumb_L0_bladeShape" -p "thumb_L0_blade"; 4 0 1 2 3 4 0 0 0 - 0.29361860822106661 0 0 - 0 0.097872869407022209 0 + 0.29361860822106656 0 0 + 0 0.097872869407022181 0 0 0 0 ; -createNode aimConstraint -n "thumb_L0_blade_aimConstraint9" -p "thumb_L0_blade"; - rename -uid "4FF70435-4E34-34DE-01CB-B79C768F0E7C"; +createNode aimConstraint -n "thumb_L0_blade_aimConstraint10" -p "thumb_L0_blade"; + rename -uid "F35B721A-48F9-35EA-5007-5DB9368D634D"; addAttr -dcb 0 -ci true -sn "w0" -ln "thumb_L0_0_locW0" -dv 1 -at "double"; setAttr -k on ".nds"; setAttr -k off ".v"; @@ -4901,11 +4867,10 @@ createNode aimConstraint -n "thumb_L0_blade_aimConstraint9" -p "thumb_L0_blade"; setAttr -k off ".sz"; setAttr ".erp" yes; setAttr ".wut" 2; - setAttr ".rsrr" -type "double3" 3.3116584830402002e-016 2.3654202254588611e-013 - 0.16043147704029556 ; + setAttr ".rsrr" -type "double3" 9.934975449124265e-016 7.0962606763791992e-013 0.16043147704029556 ; setAttr -k on ".w0"; -createNode pointConstraint -n "thumb_L0_blade_pointConstraint9" -p "thumb_L0_blade"; - rename -uid "A5CD6ADB-4EC1-055B-7BFB-DEA178461B24"; +createNode pointConstraint -n "thumb_L0_blade_pointConstraint10" -p "thumb_L0_blade"; + rename -uid "37EDD312-490B-EE63-EB8E-F082B82883D7"; addAttr -dcb 0 -ci true -k true -sn "w0" -ln "thumb_L0_rootW0" -dv 1 -min 0 -at "double"; setAttr -k on ".nds"; setAttr -k off ".v"; @@ -4919,22 +4884,23 @@ createNode pointConstraint -n "thumb_L0_blade_pointConstraint9" -p "thumb_L0_bla setAttr -k off ".sy"; setAttr -k off ".sz"; setAttr ".erp" yes; - setAttr ".rst" -type "double3" 0 8.8817841970012523e-016 -3.5527136788005009e-015 ; + setAttr ".rst" -type "double3" -1.7763568394002505e-015 -8.8817841970012523e-016 + 0 ; setAttr -k on ".w0"; createNode transform -n "thumb_L0_crv" -p "thumb_L0_root"; - rename -uid "64CF9549-4494-B8A3-AC7A-5CB710B9AAD9"; + rename -uid "64484089-4FD1-C20D-90A3-52960A6F8B67"; setAttr ".ovdt" 1; setAttr ".ove" yes; - setAttr ".t" -type "double3" 14.330153889042865 -7.0737929587543249 17.725867635512838 ; - setAttr ".r" -type "double3" -124.44302205362676 63.100734454449608 -77.28135416270166 ; - setAttr ".s" -type "double3" 2.0434672163157259 2.0434672163157197 2.0434672163157264 ; + setAttr ".t" -type "double3" 14.330153889042876 -7.0737929587543391 17.725867635512838 ; + setAttr ".r" -type "double3" -124.44302205362676 63.100734454449658 -77.281354162701689 ; + setAttr ".s" -type "double3" 2.0434672163157259 2.0434672163157197 2.0434672163157259 ; createNode nurbsCurve -n "thumb_L0_crvShape" -p "thumb_L0_crv"; - rename -uid "F84B895F-46D5-77E2-2C70-04AFA44E7FEF"; + rename -uid "8F2532CD-4CF7-9B1E-EDE4-3C9CE8C5CDAE"; setAttr -k off ".v"; setAttr -s 4 ".iog[0].og"; setAttr ".tw" yes; createNode nurbsCurve -n "thumb_L0_crvShapeOrig" -p "thumb_L0_crv"; - rename -uid "3AA3E6BC-4589-81C2-2EBA-F1A200325B0A"; + rename -uid "818E3ECC-420B-E1E1-1FE9-C9BB422C945E"; setAttr -k off ".v"; setAttr ".io" yes; setAttr ".cc" -type "nurbsCurve" @@ -4947,19 +4913,19 @@ createNode nurbsCurve -n "thumb_L0_crvShapeOrig" -p "thumb_L0_crv"; 0 0 0 ; createNode transform -n "arm_L0_crv" -p "arm_L0_root"; - rename -uid "CB6879AA-416C-3098-671A-5783E4C9DFFA"; + rename -uid "99BCA492-41E2-9E8B-169A-2D871CDD1B2D"; setAttr ".ovdt" 1; setAttr ".ove" yes; - setAttr ".t" -type "double3" 9.5792744434200454 -11.86206180747303 1.1564412205648533 ; - setAttr ".r" -type "double3" -2.1534408611045537 -4.1959370793367032 45.437740049298291 ; - setAttr ".s" -type "double3" 1.0495082267377438 1.0495082267377391 1.0495082267377407 ; + setAttr ".t" -type "double3" 9.5792744434200454 -11.862061807473028 1.1564412205648515 ; + setAttr ".r" -type "double3" -2.1534408611045492 -4.1959370793367148 45.437740049298291 ; + setAttr ".s" -type "double3" 1.0495082267377434 1.0495082267377394 1.0495082267377407 ; createNode nurbsCurve -n "arm_L0_crvShape" -p "arm_L0_crv"; - rename -uid "105C126C-4828-D62A-0989-CA98F185E283"; + rename -uid "9C0D86B0-4808-570E-E6B8-F699F9092036"; setAttr -k off ".v"; setAttr -s 4 ".iog[0].og"; setAttr ".tw" yes; createNode nurbsCurve -n "arm_L0_crvShapeOrig" -p "arm_L0_crv"; - rename -uid "5A551D2F-40F0-06ED-69A0-7997D2591466"; + rename -uid "685B06A5-499C-E560-180D-9191905AEDF0"; setAttr -k off ".v"; setAttr ".io" yes; setAttr ".cc" -type "nurbsCurve" @@ -4972,8 +4938,9 @@ createNode nurbsCurve -n "arm_L0_crvShapeOrig" -p "arm_L0_crv"; 0 0 0 ; createNode transform -n "shoulder_L0_blade" -p "shoulder_L0_root"; - rename -uid "92583A5D-4810-8125-2E2A-489DCA368838"; - addAttr -ci true -k true -sn "bladeRollOffset" -ln "bladeRollOffset" -at "float"; + rename -uid "B7056E43-423D-E3BA-3956-3DBF335E010D"; + addAttr -ci true -k true -sn "bladeRollOffset" -ln "bladeRollOffset" -dv 89.999999999999957 + -at "float"; setAttr -l on -k off -cb on ".v"; setAttr -k off -cb on ".tx"; setAttr -k off -cb on ".ty"; @@ -4982,13 +4949,13 @@ createNode transform -n "shoulder_L0_blade" -p "shoulder_L0_root"; setAttr -k off -cb on ".ry"; setAttr -k off -cb on ".rz"; setAttr -cb on ".ro"; - setAttr ".s" -type "double3" 0.99999999999999978 0.99999999999999656 0.99999999999999789 ; + setAttr ".s" -type "double3" 0.99999999999999944 0.99999999999999656 0.99999999999999778 ; setAttr -l on -k off -cb on ".sx"; setAttr -l on -k off -cb on ".sy"; setAttr -l on -k off -cb on ".sz"; - setAttr -k on ".bladeRollOffset" 90; + setAttr -k on ".bladeRollOffset"; createNode nurbsCurve -n "shoulder_L0_bladeShape" -p "shoulder_L0_blade"; - rename -uid "39C30DE9-4C19-A91C-06E5-95A3D36F94DE"; + rename -uid "DF60BC27-427B-43DB-6B60-9F985C7D5F64"; setAttr ".ihi" 0; setAttr -k off ".v"; setAttr ".ove" yes; @@ -4998,12 +4965,12 @@ createNode nurbsCurve -n "shoulder_L0_bladeShape" -p "shoulder_L0_blade"; 4 0 1 2 3 4 0 0 0 - 0.6000000000000012 0 0 - 0 0.2000000000000004 0 + 0.60000000000000131 0 0 + 0 0.20000000000000043 0 0 0 0 ; -createNode aimConstraint -n "shoulder_L0_blade_aimConstraint9" -p "shoulder_L0_blade"; - rename -uid "ACFD040C-4DD1-A543-CEC3-B38641E7F5E3"; +createNode aimConstraint -n "shoulder_L0_blade_aimConstraint10" -p "shoulder_L0_blade"; + rename -uid "1497BF7A-4FCA-DBFF-A106-B5865256E814"; addAttr -dcb 0 -ci true -sn "w0" -ln "shoulder_L0_tipW0" -dv 1 -at "double"; setAttr -k on ".nds"; setAttr -k off ".v"; @@ -5018,11 +4985,11 @@ createNode aimConstraint -n "shoulder_L0_blade_aimConstraint9" -p "shoulder_L0_b setAttr -k off ".sz"; setAttr ".erp" yes; setAttr ".wut" 2; - setAttr ".o" -type "double3" 90 179.99999999999957 180.00000000000017 ; - setAttr ".rsrr" -type "double3" 23.386262286473041 122.53864021838231 110.03040021520766 ; + setAttr ".o" -type "double3" 90 179.99999999999946 180.00000000000017 ; + setAttr ".rsrr" -type "double3" 23.386262286472864 122.53864021838226 110.03040021520748 ; setAttr -k on ".w0"; -createNode pointConstraint -n "shoulder_L0_blade_pointConstraint9" -p "shoulder_L0_blade"; - rename -uid "058819AB-44AB-F493-A327-1CAE82B96EB8"; +createNode pointConstraint -n "shoulder_L0_blade_pointConstraint10" -p "shoulder_L0_blade"; + rename -uid "A9C7A008-4125-1CFD-121C-CB8F1AFAC82F"; addAttr -dcb 0 -ci true -k true -sn "w0" -ln "shoulder_L0_rootW0" -dv 1 -min 0 -at "double"; setAttr -k on ".nds"; @@ -5037,22 +5004,22 @@ createNode pointConstraint -n "shoulder_L0_blade_pointConstraint9" -p "shoulder_ setAttr -k off ".sy"; setAttr -k off ".sz"; setAttr ".erp" yes; - setAttr ".rst" -type "double3" 0 5.2041704279304213e-018 1.3877787807814457e-017 ; + setAttr ".rst" -type "double3" 0 -3.4694469519536142e-018 0 ; setAttr -k on ".w0"; createNode transform -n "shoulder_L0_crv" -p "shoulder_L0_root"; - rename -uid "2BCEF109-45DF-A5AE-06BF-C5B5ACA7F0C1"; + rename -uid "B7121F34-467F-86D6-8EBB-588E3B3101E6"; setAttr ".ovdt" 1; setAttr ".ove" yes; - setAttr ".t" -type "double3" 15.507521470509833 0.009276189738275686 0.11673327753265018 ; + setAttr ".t" -type "double3" 15.507521470509833 0.0092761897382756774 0.11673327753265013 ; setAttr ".r" -type "double3" -90.803889228153793 89.999999999999986 0 ; - setAttr ".s" -type "double3" 1.0495082267377416 1.0495082267377367 1.0495082267377369 ; + setAttr ".s" -type "double3" 1.0495082267377411 1.0495082267377365 1.0495082267377365 ; createNode nurbsCurve -n "shoulder_L0_crvShape" -p "shoulder_L0_crv"; - rename -uid "4107DE1B-4209-44A8-DFC7-A5A7D217BDF6"; + rename -uid "B45BD63D-4285-7172-6C22-35AA79C3A602"; setAttr -k off ".v"; setAttr -s 4 ".iog[0].og"; setAttr ".tw" yes; createNode nurbsCurve -n "shoulder_L0_crvShapeOrig" -p "shoulder_L0_crv"; - rename -uid "27D971BF-4A35-9D68-6213-2887DA31F63D"; + rename -uid "556F7BF6-48CD-1D0D-AE10-7E9651E695D8"; setAttr -k off ".v"; setAttr ".io" yes; setAttr ".cc" -type "nurbsCurve" @@ -5063,7 +5030,7 @@ createNode nurbsCurve -n "shoulder_L0_crvShapeOrig" -p "shoulder_L0_crv"; 0 0 0 ; createNode transform -n "neck_C0_root" -p "spine_C0_eff"; - rename -uid "46D12DE5-4648-3557-1808-0292A8E6C21F"; + rename -uid "575C2E2B-43A1-DE1D-B608-B6A6DC98E647"; addAttr -ci true -sn "isGearGuide" -ln "isGearGuide" -dv 1 -min 0 -max 1 -at "bool"; addAttr -ci true -sn "comp_type" -ln "comp_type" -dt "string"; addAttr -ci true -sn "comp_name" -ln "comp_name" -dt "string"; @@ -5074,26 +5041,26 @@ createNode transform -n "neck_C0_root" -p "spine_C0_eff"; addAttr -ci true -sn "ctlGrp" -ln "ctlGrp" -dt "string"; addAttr -ci true -sn "headrefarray" -ln "headrefarray" -dt "string"; addAttr -ci true -sn "ikrefarray" -ln "ikrefarray" -dt "string"; - addAttr -ci true -sn "maxstretch" -ln "maxstretch" -dv 1 -min 1 -at "double"; - addAttr -ci true -sn "maxsquash" -ln "maxsquash" -min 0 -max 1 -at "double"; + addAttr -ci true -sn "maxstretch" -ln "maxstretch" -dv 1.5 -min 1 -at "double"; + addAttr -ci true -sn "maxsquash" -ln "maxsquash" -dv 0.5 -min 0 -max 1 -at "double"; addAttr -ci true -sn "softness" -ln "softness" -min 0 -max 1 -at "double"; addAttr -ci true -sn "division" -ln "division" -dv 3 -min 3 -at "long"; addAttr -ci true -sn "tangentControls" -ln "tangentControls" -min 0 -max 1 -at "bool"; addAttr -ci true -k true -sn "st_profile" -ln "st_profile" -at "double"; addAttr -ci true -k true -sn "sq_profile" -ln "sq_profile" -at "double"; addAttr -ci true -sn "useIndex" -ln "useIndex" -min 0 -max 1 -at "bool"; - addAttr -ci true -sn "parentJointIndex" -ln "parentJointIndex" -at "long"; + addAttr -ci true -sn "parentJointIndex" -ln "parentJointIndex" -dv -1 -at "long"; setAttr -k off -cb on ".v"; - setAttr ".t" -type "double3" 2.2667429610648462 0.5374818108556626 -4.2147015411630263e-016 ; + setAttr ".t" -type "double3" 2.266742961064848 0.5374818108556626 -4.2147015411630268e-016 ; setAttr -k off -cb on ".tx"; setAttr -k off -cb on ".ty"; setAttr -k off -cb on ".tz"; - setAttr ".r" -type "double3" 180 7.0622500768802529e-031 89.999999999999986 ; + setAttr ".r" -type "double3" 180 7.062250076880252e-031 89.999999999999986 ; setAttr -k off -cb on ".rx"; setAttr -k off -cb on ".ry"; setAttr -k off -cb on ".rz"; setAttr -cb on ".ro"; - setAttr ".s" -type "double3" 0.59839228104243614 0.59839228104243236 0.59839228104243236 ; + setAttr ".s" -type "double3" 0.59839228104243647 0.59839228104243258 0.59839228104243258 ; setAttr -k off -cb on ".sx"; setAttr -k off -cb on ".sy"; setAttr -k off -cb on ".sz"; @@ -5105,13 +5072,10 @@ createNode transform -n "neck_C0_root" -p "spine_C0_eff"; setAttr ".ctlGrp" -type "string" ""; setAttr ".headrefarray" -type "string" "spine_C0_eff,body_C0_root,local_C0_root,global_C0_root"; setAttr ".ikrefarray" -type "string" "spine_C0_eff,body_C0_root,local_C0_root,global_C0_root"; - setAttr ".maxstretch" 1.5; - setAttr ".maxsquash" 0.5; setAttr -k on ".st_profile"; setAttr -k on ".sq_profile"; - setAttr ".parentJointIndex" -1; createNode nurbsCurve -n "neck_C0_rootShape" -p "neck_C0_root"; - rename -uid "719D4E41-4647-B269-D183-309C11147117"; + rename -uid "0BDC3CFC-43E7-2A1D-5A43-68828F215582"; setAttr ".ihi" 0; setAttr -k off ".v"; setAttr ".ove" yes; @@ -5123,8 +5087,8 @@ createNode nurbsCurve -n "neck_C0_rootShape" -p "neck_C0_root"; 0.25 0 0 -0.25 0 0 ; -createNode nurbsCurve -n "neck_C0_root25Shape" -p "neck_C0_root"; - rename -uid "2BC35D86-4AC7-A3D8-2195-5C8727E473DB"; +createNode nurbsCurve -n "neck_C0_root28Shape" -p "neck_C0_root"; + rename -uid "467B5ECE-4687-A006-C686-6EB96345EED7"; setAttr ".ihi" 0; setAttr -k off ".v"; setAttr ".ove" yes; @@ -5136,8 +5100,8 @@ createNode nurbsCurve -n "neck_C0_root25Shape" -p "neck_C0_root"; 0 0.25 0 0 -0.25 0 ; -createNode nurbsCurve -n "neck_C0_root26Shape" -p "neck_C0_root"; - rename -uid "FA1F9AB3-47B6-2077-352E-D3A9B2A032A3"; +createNode nurbsCurve -n "neck_C0_root29Shape" -p "neck_C0_root"; + rename -uid "71E7C3C2-4C6A-9D49-1166-B8BAF5A9C69B"; setAttr ".ihi" 0; setAttr -k off ".v"; setAttr ".ove" yes; @@ -5149,8 +5113,8 @@ createNode nurbsCurve -n "neck_C0_root26Shape" -p "neck_C0_root"; 0 0 0.25 0 0 -0.25 ; -createNode nurbsCurve -n "neck_C0_root27Shape" -p "neck_C0_root"; - rename -uid "D1EA57F7-40E7-07BD-D788-0A858ECFE7B4"; +createNode nurbsCurve -n "neck_C0_root30Shape" -p "neck_C0_root"; + rename -uid "31CCEE41-402D-1044-4C24-F689B6411D27"; setAttr ".ihi" 0; setAttr -k off ".v"; setAttr ".ove" yes; @@ -5177,10 +5141,10 @@ createNode nurbsCurve -n "neck_C0_root27Shape" -p "neck_C0_root"; -0.125 -0.125 -0.125 ; createNode transform -n "neck_C0_neck" -p "neck_C0_root"; - rename -uid "13729CBF-485B-AF61-AEC0-31BF1B46FD5E"; + rename -uid "06825BF4-4ACB-736D-BDCE-2F8641F636CD"; addAttr -ci true -sn "isGearGuide" -ln "isGearGuide" -dv 1 -min 0 -max 1 -at "bool"; setAttr -k off -cb on ".v"; - setAttr ".t" -type "double3" -0.66811733981641108 2.4674946259577837 1.5382908879615304e-016 ; + setAttr ".t" -type "double3" -0.66811733981641075 2.4674946259577801 1.5382908879615225e-016 ; setAttr -k off -cb on ".tx"; setAttr -k off -cb on ".ty"; setAttr -k off -cb on ".tz"; @@ -5188,12 +5152,12 @@ createNode transform -n "neck_C0_neck" -p "neck_C0_root"; setAttr -k off -cb on ".ry"; setAttr -k off -cb on ".rz"; setAttr -cb on ".ro"; - setAttr ".s" -type "double3" 0.99999999999999645 0.99999999999999678 0.99999999999999956 ; + setAttr ".s" -type "double3" 0.999999999999996 0.99999999999999623 0.99999999999999956 ; setAttr -k off -cb on ".sx"; setAttr -k off -cb on ".sy"; setAttr -k off -cb on ".sz"; createNode nurbsCurve -n "neck_C0_neckShape" -p "neck_C0_neck"; - rename -uid "6BD6E103-4AEF-3237-6720-AB8F0431D08F"; + rename -uid "3FE8F192-49CE-B8DA-77EE-1AB2ABFF3313"; setAttr ".ihi" 0; setAttr -k off ".v"; setAttr ".ove" yes; @@ -5205,8 +5169,8 @@ createNode nurbsCurve -n "neck_C0_neckShape" -p "neck_C0_neck"; 0.25 0 0 -0.25 0 0 ; -createNode nurbsCurve -n "neck_C0_neck25Shape" -p "neck_C0_neck"; - rename -uid "2952B913-4D7F-5F5C-C9E9-F296DF143A91"; +createNode nurbsCurve -n "neck_C0_neck28Shape" -p "neck_C0_neck"; + rename -uid "919A9360-47CB-05DE-8E29-2C816B152444"; setAttr ".ihi" 0; setAttr -k off ".v"; setAttr ".ove" yes; @@ -5218,8 +5182,8 @@ createNode nurbsCurve -n "neck_C0_neck25Shape" -p "neck_C0_neck"; 0 0.25 0 0 -0.25 0 ; -createNode nurbsCurve -n "neck_C0_neck26Shape" -p "neck_C0_neck"; - rename -uid "D8FFEFD5-4F87-F729-1AFF-2DB43D30E13B"; +createNode nurbsCurve -n "neck_C0_neck29Shape" -p "neck_C0_neck"; + rename -uid "85DD472F-411D-1D13-44A6-449717B29995"; setAttr ".ihi" 0; setAttr -k off ".v"; setAttr ".ove" yes; @@ -5231,8 +5195,8 @@ createNode nurbsCurve -n "neck_C0_neck26Shape" -p "neck_C0_neck"; 0 0 0.25 0 0 -0.25 ; -createNode nurbsCurve -n "neck_C0_neck27Shape" -p "neck_C0_neck"; - rename -uid "B147BE02-4B26-CB39-F48A-3FB789DA59B7"; +createNode nurbsCurve -n "neck_C0_neck30Shape" -p "neck_C0_neck"; + rename -uid "D85AB108-4F5F-A87D-0DDC-DAA52C33772F"; setAttr ".ihi" 0; setAttr -k off ".v"; setAttr ".ove" yes; @@ -5249,8 +5213,8 @@ createNode nurbsCurve -n "neck_C0_neck27Shape" -p "neck_C0_neck"; 0 -0.1875 0 -0.1875 0 0 ; -createNode nurbsCurve -n "neck_C0_neck27_0crvShape" -p "neck_C0_neck"; - rename -uid "27111337-42E5-5354-D6FB-61B1B7866F8E"; +createNode nurbsCurve -n "neck_C0_neck30_0crvShape" -p "neck_C0_neck"; + rename -uid "99EC088F-4F5E-CBEF-E687-16AB873C83C3"; setAttr ".ihi" 0; setAttr -k off ".v"; setAttr ".ove" yes; @@ -5267,8 +5231,8 @@ createNode nurbsCurve -n "neck_C0_neck27_0crvShape" -p "neck_C0_neck"; 0 0 -0.1875 -0.1875 0 0 ; -createNode nurbsCurve -n "neck_C0_neck27_1crvShape" -p "neck_C0_neck"; - rename -uid "D64E90BA-4C9F-72B8-0869-42AB292E9404"; +createNode nurbsCurve -n "neck_C0_neck30_1crvShape" -p "neck_C0_neck"; + rename -uid "91C34788-4B05-E93B-9EE0-E18FF750D7D4"; setAttr ".ihi" 0; setAttr -k off ".v"; setAttr ".ove" yes; @@ -5286,10 +5250,10 @@ createNode nurbsCurve -n "neck_C0_neck27_1crvShape" -p "neck_C0_neck"; 0 0 -0.1875 ; createNode transform -n "neck_C0_head" -p "neck_C0_neck"; - rename -uid "9A42AEE6-4CF7-7CA6-ED93-12A43E19DC3D"; + rename -uid "2B959624-4CB2-C39A-B10A-8BB5483A8C4F"; addAttr -ci true -sn "isGearGuide" -ln "isGearGuide" -dv 1 -min 0 -max 1 -at "bool"; setAttr -k off -cb on ".v"; - setAttr ".t" -type "double3" 1.3877787807814457e-016 0.10000000000004405 1.2246467991476512e-017 ; + setAttr ".t" -type "double3" 5.5511151231257827e-017 0.10000000000005116 1.2246467991476512e-017 ; setAttr -k off -cb on ".tx"; setAttr -k off -cb on ".ty"; setAttr -k off -cb on ".tz"; @@ -5297,12 +5261,12 @@ createNode transform -n "neck_C0_head" -p "neck_C0_neck"; setAttr -k off -cb on ".ry"; setAttr -k off -cb on ".rz"; setAttr -cb on ".ro"; - setAttr ".s" -type "double3" 1.0000000000000002 1.0000000000000002 1.0000000000000018 ; + setAttr ".s" -type "double3" 1.0000000000000004 1.0000000000000002 1.0000000000000018 ; setAttr -k off -cb on ".sx"; setAttr -k off -cb on ".sy"; setAttr -k off -cb on ".sz"; createNode nurbsCurve -n "neck_C0_headShape" -p "neck_C0_head"; - rename -uid "FD168BAC-48D4-CDFD-5FD5-15893495E1B3"; + rename -uid "D09D91A8-4BD7-BF4D-AF64-8EABCF1B69D6"; setAttr ".ihi" 0; setAttr -k off ".v"; setAttr ".ove" yes; @@ -5314,8 +5278,8 @@ createNode nurbsCurve -n "neck_C0_headShape" -p "neck_C0_head"; 0.25 0 0 -0.25 0 0 ; -createNode nurbsCurve -n "neck_C0_head25Shape" -p "neck_C0_head"; - rename -uid "E8568B37-4452-31BB-D15D-E596041C72CD"; +createNode nurbsCurve -n "neck_C0_head28Shape" -p "neck_C0_head"; + rename -uid "C824DE8B-4F27-86AD-2D70-F7AC45CD6C0F"; setAttr ".ihi" 0; setAttr -k off ".v"; setAttr ".ove" yes; @@ -5327,8 +5291,8 @@ createNode nurbsCurve -n "neck_C0_head25Shape" -p "neck_C0_head"; 0 0.25 0 0 -0.25 0 ; -createNode nurbsCurve -n "neck_C0_head26Shape" -p "neck_C0_head"; - rename -uid "1D7026A9-47C9-2F86-1CAC-17953F6374F3"; +createNode nurbsCurve -n "neck_C0_head29Shape" -p "neck_C0_head"; + rename -uid "2B5EB522-408C-9D5D-6FF7-B4939577AC51"; setAttr ".ihi" 0; setAttr -k off ".v"; setAttr ".ove" yes; @@ -5340,8 +5304,8 @@ createNode nurbsCurve -n "neck_C0_head26Shape" -p "neck_C0_head"; 0 0 0.25 0 0 -0.25 ; -createNode nurbsCurve -n "neck_C0_head27Shape" -p "neck_C0_head"; - rename -uid "271501BF-4A27-A85A-3AAA-BBAEBC8833C7"; +createNode nurbsCurve -n "neck_C0_head30Shape" -p "neck_C0_head"; + rename -uid "71726667-4781-FC9D-BC25-A4A44EE7C0C7"; setAttr ".ihi" 0; setAttr -k off ".v"; setAttr ".ove" yes; @@ -5358,8 +5322,8 @@ createNode nurbsCurve -n "neck_C0_head27Shape" -p "neck_C0_head"; 0 -0.1875 0 -0.1875 0 0 ; -createNode nurbsCurve -n "neck_C0_head27_0crvShape" -p "neck_C0_head"; - rename -uid "459C1E4C-4A07-DEAB-CD53-ACBA02335EBE"; +createNode nurbsCurve -n "neck_C0_head30_0crvShape" -p "neck_C0_head"; + rename -uid "F7E2B8E3-4A55-F058-740C-12AE9C3D6FB8"; setAttr ".ihi" 0; setAttr -k off ".v"; setAttr ".ove" yes; @@ -5376,8 +5340,8 @@ createNode nurbsCurve -n "neck_C0_head27_0crvShape" -p "neck_C0_head"; 0 0 -0.1875 -0.1875 0 0 ; -createNode nurbsCurve -n "neck_C0_head27_1crvShape" -p "neck_C0_head"; - rename -uid "D36D2C15-41EA-DAD3-C759-DFAF49C1FC99"; +createNode nurbsCurve -n "neck_C0_head30_1crvShape" -p "neck_C0_head"; + rename -uid "8334F3E0-47E7-F094-BA05-D0A54CA3B365"; setAttr ".ihi" 0; setAttr -k off ".v"; setAttr ".ove" yes; @@ -5395,10 +5359,10 @@ createNode nurbsCurve -n "neck_C0_head27_1crvShape" -p "neck_C0_head"; 0 0 -0.1875 ; createNode transform -n "neck_C0_eff" -p "neck_C0_head"; - rename -uid "11C54A22-4C77-E907-0598-2DBFD5BD5ECA"; + rename -uid "4658178F-4EDF-9F4C-1940-C79998D2E3DF"; addAttr -ci true -sn "isGearGuide" -ln "isGearGuide" -dv 1 -min 0 -max 1 -at "bool"; setAttr -k off -cb on ".v"; - setAttr ".t" -type "double3" 1.1657341758564144e-015 3.0746209978281733 2.3592239273284103e-016 ; + setAttr ".t" -type "double3" 1.1796119636642288e-015 3.0746209978281662 2.3592239273284182e-016 ; setAttr -k off -cb on ".tx"; setAttr -k off -cb on ".ty"; setAttr -k off -cb on ".tz"; @@ -5406,12 +5370,12 @@ createNode transform -n "neck_C0_eff" -p "neck_C0_head"; setAttr -k off -cb on ".ry"; setAttr -k off -cb on ".rz"; setAttr -cb on ".ro"; - setAttr ".s" -type "double3" 1 0.99999999999999944 0.99999999999999856 ; + setAttr ".s" -type "double3" 1 0.99999999999999944 0.99999999999999867 ; setAttr -k off -cb on ".sx"; setAttr -k off -cb on ".sy"; setAttr -k off -cb on ".sz"; createNode nurbsCurve -n "neck_C0_effShape" -p "neck_C0_eff"; - rename -uid "CE660E0A-4D22-38B7-E97A-AC942D2561C7"; + rename -uid "428FAE81-48C6-5BBA-6824-24943579E314"; setAttr ".ihi" 0; setAttr -k off ".v"; setAttr ".ove" yes; @@ -5423,8 +5387,8 @@ createNode nurbsCurve -n "neck_C0_effShape" -p "neck_C0_eff"; 0.25 0 0 -0.25 0 0 ; -createNode nurbsCurve -n "neck_C0_eff25Shape" -p "neck_C0_eff"; - rename -uid "A71F25B7-445D-DCE6-7319-F0A0F8D7AA8E"; +createNode nurbsCurve -n "neck_C0_eff28Shape" -p "neck_C0_eff"; + rename -uid "D3D933DA-45AA-426C-6DC6-D7A232DB2261"; setAttr ".ihi" 0; setAttr -k off ".v"; setAttr ".ove" yes; @@ -5436,8 +5400,8 @@ createNode nurbsCurve -n "neck_C0_eff25Shape" -p "neck_C0_eff"; 0 0.25 0 0 -0.25 0 ; -createNode nurbsCurve -n "neck_C0_eff26Shape" -p "neck_C0_eff"; - rename -uid "F3CA62F5-4C22-6997-A6D4-52A493E59C2F"; +createNode nurbsCurve -n "neck_C0_eff29Shape" -p "neck_C0_eff"; + rename -uid "F57C9161-484B-F982-02F9-A4BAB282AA77"; setAttr ".ihi" 0; setAttr -k off ".v"; setAttr ".ove" yes; @@ -5449,8 +5413,8 @@ createNode nurbsCurve -n "neck_C0_eff26Shape" -p "neck_C0_eff"; 0 0 0.25 0 0 -0.25 ; -createNode nurbsCurve -n "neck_C0_eff27Shape" -p "neck_C0_eff"; - rename -uid "3FDE6F8B-4592-FDFA-16D0-7C99862AE459"; +createNode nurbsCurve -n "neck_C0_eff30Shape" -p "neck_C0_eff"; + rename -uid "37D7DFAD-4253-1A05-260A-358A32A6C192"; setAttr ".ihi" 0; setAttr -k off ".v"; setAttr ".ove" yes; @@ -5467,8 +5431,8 @@ createNode nurbsCurve -n "neck_C0_eff27Shape" -p "neck_C0_eff"; 0 -0.1875 0 -0.1875 0 0 ; -createNode nurbsCurve -n "neck_C0_eff27_0crvShape" -p "neck_C0_eff"; - rename -uid "AC4ABE45-40D7-E35A-A8B3-328534AC841D"; +createNode nurbsCurve -n "neck_C0_eff30_0crvShape" -p "neck_C0_eff"; + rename -uid "73867733-45E6-7FF3-14A4-A1B31CF50531"; setAttr ".ihi" 0; setAttr -k off ".v"; setAttr ".ove" yes; @@ -5485,8 +5449,8 @@ createNode nurbsCurve -n "neck_C0_eff27_0crvShape" -p "neck_C0_eff"; 0 0 -0.1875 -0.1875 0 0 ; -createNode nurbsCurve -n "neck_C0_eff27_1crvShape" -p "neck_C0_eff"; - rename -uid "44714B46-4A20-2CB1-C899-E2BC03709047"; +createNode nurbsCurve -n "neck_C0_eff30_1crvShape" -p "neck_C0_eff"; + rename -uid "148EE783-41CF-2C23-E9C7-168B7B763D57"; setAttr ".ihi" 0; setAttr -k off ".v"; setAttr ".ove" yes; @@ -5504,7 +5468,7 @@ createNode nurbsCurve -n "neck_C0_eff27_1crvShape" -p "neck_C0_eff"; 0 0 -0.1875 ; createNode transform -n "faceUI_C0_root" -p "neck_C0_eff"; - rename -uid "1F91A844-4CD2-6645-35C6-A1878386A984"; + rename -uid "1619DD78-440E-3C81-7D23-BAACABA84C66"; addAttr -ci true -sn "isGearGuide" -ln "isGearGuide" -dv 1 -min 0 -max 1 -at "bool"; addAttr -ci true -sn "comp_type" -ln "comp_type" -dt "string"; addAttr -ci true -sn "comp_name" -ln "comp_name" -dt "string"; @@ -5528,12 +5492,14 @@ createNode transform -n "faceUI_C0_root" -p "neck_C0_eff"; addAttr -ci true -sn "k_sy" -ln "k_sy" -min 0 -max 1 -at "bool"; addAttr -ci true -sn "k_sz" -ln "k_sz" -min 0 -max 1 -at "bool"; addAttr -ci true -sn "default_rotorder" -ln "default_rotorder" -min 0 -max 5 -at "long"; - addAttr -ci true -sn "neutralRotation" -ln "neutralRotation" -min 0 -max 1 -at "bool"; - addAttr -ci true -sn "ctlSize" -ln "ctlSize" -at "double"; + addAttr -ci true -sn "neutralRotation" -ln "neutralRotation" -dv 1 -min 0 -max 1 + -at "bool"; + addAttr -ci true -sn "mirrorBehaviour" -ln "mirrorBehaviour" -min 0 -max 1 -at "bool"; + addAttr -ci true -sn "ctlSize" -ln "ctlSize" -dv 1 -at "double"; addAttr -ci true -sn "useIndex" -ln "useIndex" -min 0 -max 1 -at "bool"; - addAttr -ci true -sn "parentJointIndex" -ln "parentJointIndex" -at "long"; + addAttr -ci true -sn "parentJointIndex" -ln "parentJointIndex" -dv -1 -at "long"; setAttr -k off -cb on ".v"; - setAttr ".t" -type "double3" 2.0261570199409107e-015 1.360468176387009 7.2046004192796409e-016 ; + setAttr ".t" -type "double3" 1.9984014443252818e-015 1.3604681763870019 7.204600419279633e-016 ; setAttr -k off -cb on ".tx"; setAttr -k off -cb on ".ty"; setAttr -k off -cb on ".tz"; @@ -5541,7 +5507,7 @@ createNode transform -n "faceUI_C0_root" -p "neck_C0_eff"; setAttr -k off -cb on ".ry"; setAttr -k off -cb on ".rz"; setAttr -cb on ".ro"; - setAttr ".s" -type "double3" 1 1.0000000000000002 1.0000000000000007 ; + setAttr ".s" -type "double3" 0.99999999999999989 0.99999999999999989 1.0000000000000004 ; setAttr -k off -cb on ".sx"; setAttr -k off -cb on ".sy"; setAttr -k off -cb on ".sz"; @@ -5553,11 +5519,8 @@ createNode transform -n "faceUI_C0_root" -p "neck_C0_eff"; setAttr ".ctlGrp" -type "string" ""; setAttr ".icon" -type "string" "cross"; setAttr ".ikrefarray" -type "string" ""; - setAttr ".neutralRotation" yes; - setAttr ".ctlSize" 1; - setAttr ".parentJointIndex" -1; createNode nurbsCurve -n "faceUI_C0_rootShape" -p "faceUI_C0_root"; - rename -uid "B435ABC2-4320-2ED7-00C6-E890E890CB6F"; + rename -uid "6066153E-4FA0-8338-618A-09927C885446"; setAttr ".ihi" 0; setAttr -k off ".v"; setAttr ".ove" yes; @@ -5569,8 +5532,8 @@ createNode nurbsCurve -n "faceUI_C0_rootShape" -p "faceUI_C0_root"; 0.25 0 0 -0.25 0 0 ; -createNode nurbsCurve -n "faceUI_C0_root25Shape" -p "faceUI_C0_root"; - rename -uid "119E7ADF-4318-22AD-8B06-D4AC26231F32"; +createNode nurbsCurve -n "faceUI_C0_root28Shape" -p "faceUI_C0_root"; + rename -uid "BC51B35B-4048-93CC-5840-BDB51F3F9B49"; setAttr ".ihi" 0; setAttr -k off ".v"; setAttr ".ove" yes; @@ -5582,8 +5545,8 @@ createNode nurbsCurve -n "faceUI_C0_root25Shape" -p "faceUI_C0_root"; 0 0.25 0 0 -0.25 0 ; -createNode nurbsCurve -n "faceUI_C0_root26Shape" -p "faceUI_C0_root"; - rename -uid "45292BDE-4698-D489-EFC1-C1BC683BE994"; +createNode nurbsCurve -n "faceUI_C0_root29Shape" -p "faceUI_C0_root"; + rename -uid "19BED195-462D-EF5D-647B-F7B3FB96D9A0"; setAttr ".ihi" 0; setAttr -k off ".v"; setAttr ".ove" yes; @@ -5595,8 +5558,8 @@ createNode nurbsCurve -n "faceUI_C0_root26Shape" -p "faceUI_C0_root"; 0 0 0.25 0 0 -0.25 ; -createNode nurbsCurve -n "faceUI_C0_root27Shape" -p "faceUI_C0_root"; - rename -uid "5DC834E7-4930-DC6C-8C58-14AD5DD13B89"; +createNode nurbsCurve -n "faceUI_C0_root30Shape" -p "faceUI_C0_root"; + rename -uid "7CA9E17A-4D0C-7F95-1D82-3B939F43271B"; setAttr ".ihi" 0; setAttr -k off ".v"; setAttr ".ove" yes; @@ -5623,10 +5586,10 @@ createNode nurbsCurve -n "faceUI_C0_root27Shape" -p "faceUI_C0_root"; -0.125 -0.125 -0.125 ; createNode transform -n "faceUI_C0_sizeRef" -p "faceUI_C0_root"; - rename -uid "1ADF29FD-426B-BB18-2945-9D8DF569E7B3"; + rename -uid "332A134D-4DA7-EC2A-D681-98AFD8D18840"; addAttr -ci true -sn "isGearGuide" -ln "isGearGuide" -dv 1 -min 0 -max 1 -at "bool"; setAttr -k off -cb on ".v"; - setAttr ".t" -type "double3" -1.7538799546502091 -7.1054273576010019e-015 -3.8943958161623829e-016 ; + setAttr ".t" -type "double3" -1.7538799546502091 0 -3.8943958161623671e-016 ; setAttr -k off -cb on ".tx"; setAttr -k off -cb on ".ty"; setAttr -k off -cb on ".tz"; @@ -5635,12 +5598,12 @@ createNode transform -n "faceUI_C0_sizeRef" -p "faceUI_C0_root"; setAttr -k off -cb on ".ry"; setAttr -k off -cb on ".rz"; setAttr -cb on ".ro"; - setAttr ".s" -type "double3" 1.753879954650216 1.7538799546502188 1.7538799546502091 ; + setAttr ".s" -type "double3" 1.7538799546502164 1.7538799546502193 1.7538799546502095 ; setAttr -k off -cb on ".sx"; setAttr -k off -cb on ".sy"; setAttr -k off -cb on ".sz"; createNode transform -n "mouth_C0_root" -p "neck_C0_head"; - rename -uid "98700D71-4297-99CD-13F1-B790AF9B0511"; + rename -uid "4C7AA725-48BF-E1DF-48F4-CD95D985FF41"; addAttr -ci true -sn "isGearGuide" -ln "isGearGuide" -dv 1 -min 0 -max 1 -at "bool"; addAttr -ci true -sn "comp_type" -ln "comp_type" -dt "string"; addAttr -ci true -sn "comp_name" -ln "comp_name" -dt "string"; @@ -5650,9 +5613,9 @@ createNode transform -n "mouth_C0_root" -p "neck_C0_head"; addAttr -ci true -sn "ui_host" -ln "ui_host" -dt "string"; addAttr -ci true -sn "ctlGrp" -ln "ctlGrp" -dt "string"; addAttr -ci true -sn "useIndex" -ln "useIndex" -min 0 -max 1 -at "bool"; - addAttr -ci true -sn "parentJointIndex" -ln "parentJointIndex" -at "long"; + addAttr -ci true -sn "parentJointIndex" -ln "parentJointIndex" -dv -1 -at "long"; setAttr -k off -cb on ".v"; - setAttr ".t" -type "double3" 8.7430063189231078e-016 -1.4210854715202004e-014 1.7723706024528312e-017 ; + setAttr ".t" -type "double3" 8.8817841970012523e-016 -2.1316282072803006e-014 1.7723706024530678e-017 ; setAttr -k off -cb on ".tx"; setAttr -k off -cb on ".ty"; setAttr -k off -cb on ".tz"; @@ -5661,7 +5624,7 @@ createNode transform -n "mouth_C0_root" -p "neck_C0_head"; setAttr -k off -cb on ".ry"; setAttr -k off -cb on ".rz"; setAttr -cb on ".ro"; - setAttr ".s" -type "double3" 0.95913545105009446 0.95913545105009301 0.95913545105009024 ; + setAttr ".s" -type "double3" 0.95913545105009468 0.95913545105009312 0.95913545105009024 ; setAttr -k off -cb on ".sx"; setAttr -k off -cb on ".sy"; setAttr -k off -cb on ".sz"; @@ -5671,9 +5634,8 @@ createNode transform -n "mouth_C0_root" -p "neck_C0_head"; setAttr ".connector" -type "string" "standard"; setAttr ".ui_host" -type "string" "faceUI_C0_root"; setAttr ".ctlGrp" -type "string" ""; - setAttr ".parentJointIndex" -1; createNode nurbsCurve -n "mouth_C0_rootShape" -p "mouth_C0_root"; - rename -uid "5E484762-45A8-AC75-0447-8BA85AE157E4"; + rename -uid "EB976A33-4E5F-2C82-9A8C-6DB7343B393C"; setAttr ".ihi" 0; setAttr -k off ".v"; setAttr ".ove" yes; @@ -5685,8 +5647,8 @@ createNode nurbsCurve -n "mouth_C0_rootShape" -p "mouth_C0_root"; 0.25 0 0 -0.25 0 0 ; -createNode nurbsCurve -n "mouth_C0_root25Shape" -p "mouth_C0_root"; - rename -uid "74DAFABD-45D1-81DE-3B5C-199858627524"; +createNode nurbsCurve -n "mouth_C0_root28Shape" -p "mouth_C0_root"; + rename -uid "B779541D-4178-08F9-2D29-EAAB811093F7"; setAttr ".ihi" 0; setAttr -k off ".v"; setAttr ".ove" yes; @@ -5698,8 +5660,8 @@ createNode nurbsCurve -n "mouth_C0_root25Shape" -p "mouth_C0_root"; 0 0.25 0 0 -0.25 0 ; -createNode nurbsCurve -n "mouth_C0_root26Shape" -p "mouth_C0_root"; - rename -uid "920238C5-4EF4-EE41-22B5-B1B79870C7D4"; +createNode nurbsCurve -n "mouth_C0_root29Shape" -p "mouth_C0_root"; + rename -uid "ACAC3D40-47DA-61D0-4945-22A921D70B55"; setAttr ".ihi" 0; setAttr -k off ".v"; setAttr ".ove" yes; @@ -5711,8 +5673,8 @@ createNode nurbsCurve -n "mouth_C0_root26Shape" -p "mouth_C0_root"; 0 0 0.25 0 0 -0.25 ; -createNode nurbsCurve -n "mouth_C0_root27Shape" -p "mouth_C0_root"; - rename -uid "8A3A2378-48AE-9965-F646-5B826BE38A72"; +createNode nurbsCurve -n "mouth_C0_root30Shape" -p "mouth_C0_root"; + rename -uid "7BDB1D95-44A3-E75C-D9FA-808C573A2827"; setAttr ".ihi" 0; setAttr -k off ".v"; setAttr ".ove" yes; @@ -5739,10 +5701,10 @@ createNode nurbsCurve -n "mouth_C0_root27Shape" -p "mouth_C0_root"; -0.125 -0.125 -0.125 ; createNode transform -n "mouth_C0_rotcenter" -p "mouth_C0_root"; - rename -uid "B92A0C5D-4BF6-F379-0A43-91AB8F69C594"; + rename -uid "30D93966-49B5-761F-283C-7A917E04AADE"; addAttr -ci true -sn "isGearGuide" -ln "isGearGuide" -dv 1 -min 0 -max 1 -at "bool"; setAttr -k off -cb on ".v"; - setAttr ".t" -type "double3" -8.7644326417193379e-016 -0.62123610319594391 1.8022590188867564 ; + setAttr ".t" -type "double3" -8.7644326417193498e-016 -0.62123610319594391 1.8022590188867562 ; setAttr -k off -cb on ".tx"; setAttr -k off -cb on ".ty"; setAttr -k off -cb on ".tz"; @@ -5750,12 +5712,12 @@ createNode transform -n "mouth_C0_rotcenter" -p "mouth_C0_root"; setAttr -k off -cb on ".ry"; setAttr -k off -cb on ".rz"; setAttr -cb on ".ro"; - setAttr ".s" -type "double3" 0.99999999999999722 0.99999999999999989 0.99999999999999745 ; + setAttr ".s" -type "double3" 0.99999999999999667 0.99999999999999978 0.99999999999999722 ; setAttr -k off -cb on ".sx"; setAttr -k off -cb on ".sy"; setAttr -k off -cb on ".sz"; createNode nurbsCurve -n "mouth_C0_rotcenterShape" -p "mouth_C0_rotcenter"; - rename -uid "CB1C4273-4286-3CE6-761D-6CB0C2B40172"; + rename -uid "F64B509A-4EFC-720F-4AF1-2180AAA48D32"; setAttr ".ihi" 0; setAttr -k off ".v"; setAttr ".ove" yes; @@ -5767,8 +5729,8 @@ createNode nurbsCurve -n "mouth_C0_rotcenterShape" -p "mouth_C0_rotcenter"; 0.25 0 0 -0.25 0 0 ; -createNode nurbsCurve -n "mouth_C0_rotcenter25Shape" -p "mouth_C0_rotcenter"; - rename -uid "18A96EA7-49B2-E95A-6473-04BE03EB4CAA"; +createNode nurbsCurve -n "mouth_C0_rotcenter28Shape" -p "mouth_C0_rotcenter"; + rename -uid "B75354F3-4B1D-0932-8058-849399062CFC"; setAttr ".ihi" 0; setAttr -k off ".v"; setAttr ".ove" yes; @@ -5780,8 +5742,8 @@ createNode nurbsCurve -n "mouth_C0_rotcenter25Shape" -p "mouth_C0_rotcenter"; 0 0.25 0 0 -0.25 0 ; -createNode nurbsCurve -n "mouth_C0_rotcenter26Shape" -p "mouth_C0_rotcenter"; - rename -uid "BB0CD606-4647-0CE9-D5A3-17B4F82678E8"; +createNode nurbsCurve -n "mouth_C0_rotcenter29Shape" -p "mouth_C0_rotcenter"; + rename -uid "E11DC3AB-4AF1-06BF-3C36-98914C898C21"; setAttr ".ihi" 0; setAttr -k off ".v"; setAttr ".ove" yes; @@ -5793,8 +5755,8 @@ createNode nurbsCurve -n "mouth_C0_rotcenter26Shape" -p "mouth_C0_rotcenter"; 0 0 0.25 0 0 -0.25 ; -createNode nurbsCurve -n "mouth_C0_rotcenter27Shape" -p "mouth_C0_rotcenter"; - rename -uid "D63C5189-4745-4A23-2AC4-55AD73A47B6F"; +createNode nurbsCurve -n "mouth_C0_rotcenter30Shape" -p "mouth_C0_rotcenter"; + rename -uid "949986FC-4FCB-B2B1-BF0C-E1990028C0D7"; setAttr ".ihi" 0; setAttr -k off ".v"; setAttr ".ove" yes; @@ -5811,8 +5773,8 @@ createNode nurbsCurve -n "mouth_C0_rotcenter27Shape" -p "mouth_C0_rotcenter"; 0 -0.1875 0 -0.1875 0 0 ; -createNode nurbsCurve -n "mouth_C0_rotcenter27_0crvShape" -p "mouth_C0_rotcenter"; - rename -uid "793B1192-47E3-8335-4B47-53B176C80946"; +createNode nurbsCurve -n "mouth_C0_rotcenter30_0crvShape" -p "mouth_C0_rotcenter"; + rename -uid "652B5EBB-43D0-94F4-E6A0-D2B34F62A4FD"; setAttr ".ihi" 0; setAttr -k off ".v"; setAttr ".ove" yes; @@ -5829,8 +5791,8 @@ createNode nurbsCurve -n "mouth_C0_rotcenter27_0crvShape" -p "mouth_C0_rotcenter 0 0 -0.1875 -0.1875 0 0 ; -createNode nurbsCurve -n "mouth_C0_rotcenter27_1crvShape" -p "mouth_C0_rotcenter"; - rename -uid "5004319B-4094-B845-D57E-5EA8606BA44C"; +createNode nurbsCurve -n "mouth_C0_rotcenter30_1crvShape" -p "mouth_C0_rotcenter"; + rename -uid "59355029-4357-6B9A-4915-82A0463C8E5B"; setAttr ".ihi" 0; setAttr -k off ".v"; setAttr ".ove" yes; @@ -5848,10 +5810,10 @@ createNode nurbsCurve -n "mouth_C0_rotcenter27_1crvShape" -p "mouth_C0_rotcenter 0 0 -0.1875 ; createNode transform -n "mouth_C0_lipup" -p "mouth_C0_rotcenter"; - rename -uid "87CDDAAE-4AF3-6749-134B-32B2DF2D6609"; + rename -uid "15662483-4A37-51A4-CD50-9889247F5E9F"; addAttr -ci true -sn "isGearGuide" -ln "isGearGuide" -dv 1 -min 0 -max 1 -at "bool"; setAttr -k off -cb on ".v"; - setAttr ".t" -type "double3" -8.9761536313416156e-017 0.12388352783449363 0.23628786867351526 ; + setAttr ".t" -type "double3" -8.9761536313416156e-017 0.12388352783449008 0.23628786867351503 ; setAttr -k off -cb on ".tx"; setAttr -k off -cb on ".ty"; setAttr -k off -cb on ".tz"; @@ -5859,12 +5821,12 @@ createNode transform -n "mouth_C0_lipup" -p "mouth_C0_rotcenter"; setAttr -k off -cb on ".ry"; setAttr -k off -cb on ".rz"; setAttr -cb on ".ro"; - setAttr ".s" -type "double3" 0.99999999999999933 0.99999999999999956 0.999999999999999 ; + setAttr ".s" -type "double3" 0.99999999999999933 0.99999999999999944 0.999999999999999 ; setAttr -k off -cb on ".sx"; setAttr -k off -cb on ".sy"; setAttr -k off -cb on ".sz"; createNode nurbsCurve -n "mouth_C0_lipupShape" -p "mouth_C0_lipup"; - rename -uid "BD1724DA-403F-74A0-9C19-6596759F69EC"; + rename -uid "7DD94BB6-4E5D-BD03-5230-9E8458BDEB3E"; setAttr ".ihi" 0; setAttr -k off ".v"; setAttr ".ove" yes; @@ -5876,8 +5838,8 @@ createNode nurbsCurve -n "mouth_C0_lipupShape" -p "mouth_C0_lipup"; 0.25 0 0 -0.25 0 0 ; -createNode nurbsCurve -n "mouth_C0_lipup25Shape" -p "mouth_C0_lipup"; - rename -uid "8FDCD360-4874-EFA3-C083-ACB4D7B5FC6B"; +createNode nurbsCurve -n "mouth_C0_lipup28Shape" -p "mouth_C0_lipup"; + rename -uid "CEFC6A6D-4592-338C-4E08-809FE54539FA"; setAttr ".ihi" 0; setAttr -k off ".v"; setAttr ".ove" yes; @@ -5889,8 +5851,8 @@ createNode nurbsCurve -n "mouth_C0_lipup25Shape" -p "mouth_C0_lipup"; 0 0.25 0 0 -0.25 0 ; -createNode nurbsCurve -n "mouth_C0_lipup26Shape" -p "mouth_C0_lipup"; - rename -uid "FD9DAB1C-4AC7-7B13-1B8E-64BE3F653DDF"; +createNode nurbsCurve -n "mouth_C0_lipup29Shape" -p "mouth_C0_lipup"; + rename -uid "7B3E26FD-4CD6-B9E3-5946-42A2D2C533E0"; setAttr ".ihi" 0; setAttr -k off ".v"; setAttr ".ove" yes; @@ -5902,8 +5864,8 @@ createNode nurbsCurve -n "mouth_C0_lipup26Shape" -p "mouth_C0_lipup"; 0 0 0.25 0 0 -0.25 ; -createNode nurbsCurve -n "mouth_C0_lipup27Shape" -p "mouth_C0_lipup"; - rename -uid "E4E427B1-49C8-8EE2-8AA8-A4A910B1B887"; +createNode nurbsCurve -n "mouth_C0_lipup30Shape" -p "mouth_C0_lipup"; + rename -uid "4805435F-46BE-7ACB-A34A-799D23AD1DC5"; setAttr ".ihi" 0; setAttr -k off ".v"; setAttr ".ove" yes; @@ -5920,8 +5882,8 @@ createNode nurbsCurve -n "mouth_C0_lipup27Shape" -p "mouth_C0_lipup"; 0 -0.1875 0 -0.1875 0 0 ; -createNode nurbsCurve -n "mouth_C0_lipup27_0crvShape" -p "mouth_C0_lipup"; - rename -uid "95752DFD-4062-42B6-DBF3-1D8E34B7AABB"; +createNode nurbsCurve -n "mouth_C0_lipup30_0crvShape" -p "mouth_C0_lipup"; + rename -uid "A8900DDF-4E0D-2833-FB1D-5189A13B4A6C"; setAttr ".ihi" 0; setAttr -k off ".v"; setAttr ".ove" yes; @@ -5938,8 +5900,8 @@ createNode nurbsCurve -n "mouth_C0_lipup27_0crvShape" -p "mouth_C0_lipup"; 0 0 -0.1875 -0.1875 0 0 ; -createNode nurbsCurve -n "mouth_C0_lipup27_1crvShape" -p "mouth_C0_lipup"; - rename -uid "D11A1808-4494-DDF9-F3E5-D3807007DC95"; +createNode nurbsCurve -n "mouth_C0_lipup30_1crvShape" -p "mouth_C0_lipup"; + rename -uid "AD782877-453E-24F6-CF0B-509F58635EBF"; setAttr ".ihi" 0; setAttr -k off ".v"; setAttr ".ove" yes; @@ -5957,18 +5919,18 @@ createNode nurbsCurve -n "mouth_C0_lipup27_1crvShape" -p "mouth_C0_lipup"; 0 0 -0.1875 ; createNode transform -n "mouth_C0_crv" -p "mouth_C0_lipup"; - rename -uid "DD138B31-44F8-44D6-4718-A9B884F48401"; + rename -uid "B90FCDFF-4712-68F8-D0A9-999F4052C2B8"; setAttr ".ovdt" 1; setAttr ".ove" yes; - setAttr ".t" -type "double3" -3.2860216724904479e-015 -30.115037669761499 -2.1322109539326486 ; - setAttr ".s" -type "double3" 1.8286050763007582 1.82860507630076 1.8286050763007613 ; + setAttr ".t" -type "double3" -3.2860216724904475e-015 -30.115037669761495 -2.1322109539326481 ; + setAttr ".s" -type "double3" 1.8286050763007577 1.8286050763007604 1.8286050763007606 ; createNode nurbsCurve -n "mouth_C0_crvShape" -p "|guide|global_C0_root|local_C0_root|body_C0_root|spine_C0_root|spine_C0_eff|neck_C0_root|neck_C0_neck|neck_C0_head|mouth_C0_root|mouth_C0_rotcenter|mouth_C0_lipup|mouth_C0_crv"; - rename -uid "534C2688-424E-36DE-BC8D-8CBF5DAD444B"; + rename -uid "4A61F6FF-44BF-5178-0A5F-4AA1094ADB7A"; setAttr -k off ".v"; setAttr -s 4 ".iog[0].og"; setAttr ".tw" yes; createNode nurbsCurve -n "mouth_C0_crvShapeOrig" -p "|guide|global_C0_root|local_C0_root|body_C0_root|spine_C0_root|spine_C0_eff|neck_C0_root|neck_C0_neck|neck_C0_head|mouth_C0_root|mouth_C0_rotcenter|mouth_C0_lipup|mouth_C0_crv"; - rename -uid "3CC96B22-4264-AB37-120F-4D9E69A31C09"; + rename -uid "8356F4A7-4387-88E5-3C51-A5B16EC62279"; setAttr -k off ".v"; setAttr ".io" yes; setAttr ".cc" -type "nurbsCurve" @@ -5979,10 +5941,10 @@ createNode nurbsCurve -n "mouth_C0_crvShapeOrig" -p "|guide|global_C0_root|local 0 0 0 ; createNode transform -n "mouth_C0_liplow" -p "mouth_C0_rotcenter"; - rename -uid "70495067-4F41-F179-8E51-C3AA53A644DA"; + rename -uid "FFFC39A4-4311-2A78-0909-CD8999D4DD2B"; addAttr -ci true -sn "isGearGuide" -ln "isGearGuide" -dv 1 -min 0 -max 1 -at "bool"; setAttr -k off -cb on ".v"; - setAttr ".t" -type "double3" -9.8775621283846274e-017 -0.1467824739346888 0.18194531820222393 ; + setAttr ".t" -type "double3" -9.8775621283846668e-017 -0.14678247393469235 0.1819453182022237 ; setAttr -k off -cb on ".tx"; setAttr -k off -cb on ".ty"; setAttr -k off -cb on ".tz"; @@ -5990,12 +5952,12 @@ createNode transform -n "mouth_C0_liplow" -p "mouth_C0_rotcenter"; setAttr -k off -cb on ".ry"; setAttr -k off -cb on ".rz"; setAttr -cb on ".ro"; - setAttr ".s" -type "double3" 0.99999999999999933 0.99999999999999956 0.999999999999999 ; + setAttr ".s" -type "double3" 0.99999999999999933 0.99999999999999944 0.999999999999999 ; setAttr -k off -cb on ".sx"; setAttr -k off -cb on ".sy"; setAttr -k off -cb on ".sz"; createNode nurbsCurve -n "mouth_C0_liplowShape" -p "mouth_C0_liplow"; - rename -uid "01E68488-40E1-409F-400F-21ACFC9DB832"; + rename -uid "89E62080-43F4-5EC0-7B84-2B88D0291E9B"; setAttr ".ihi" 0; setAttr -k off ".v"; setAttr ".ove" yes; @@ -6007,8 +5969,8 @@ createNode nurbsCurve -n "mouth_C0_liplowShape" -p "mouth_C0_liplow"; 0.25 0 0 -0.25 0 0 ; -createNode nurbsCurve -n "mouth_C0_liplow25Shape" -p "mouth_C0_liplow"; - rename -uid "F0881345-4A08-41B0-FCBA-B3AA36B9F243"; +createNode nurbsCurve -n "mouth_C0_liplow28Shape" -p "mouth_C0_liplow"; + rename -uid "DB7C5573-42AF-4FEA-8ED7-10B16B41634F"; setAttr ".ihi" 0; setAttr -k off ".v"; setAttr ".ove" yes; @@ -6020,8 +5982,8 @@ createNode nurbsCurve -n "mouth_C0_liplow25Shape" -p "mouth_C0_liplow"; 0 0.25 0 0 -0.25 0 ; -createNode nurbsCurve -n "mouth_C0_liplow26Shape" -p "mouth_C0_liplow"; - rename -uid "C7C7F34C-422C-FF66-1630-3E940C44018D"; +createNode nurbsCurve -n "mouth_C0_liplow29Shape" -p "mouth_C0_liplow"; + rename -uid "C31C3A0C-4F55-649C-990F-90B7E8F1B3B5"; setAttr ".ihi" 0; setAttr -k off ".v"; setAttr ".ove" yes; @@ -6033,8 +5995,8 @@ createNode nurbsCurve -n "mouth_C0_liplow26Shape" -p "mouth_C0_liplow"; 0 0 0.25 0 0 -0.25 ; -createNode nurbsCurve -n "mouth_C0_liplow27Shape" -p "mouth_C0_liplow"; - rename -uid "B8A828C5-4DE6-5504-24D0-FEBB61A85DBE"; +createNode nurbsCurve -n "mouth_C0_liplow30Shape" -p "mouth_C0_liplow"; + rename -uid "8E39D662-4680-5C81-8AAF-1BAE79D9A928"; setAttr ".ihi" 0; setAttr -k off ".v"; setAttr ".ove" yes; @@ -6051,8 +6013,8 @@ createNode nurbsCurve -n "mouth_C0_liplow27Shape" -p "mouth_C0_liplow"; 0 -0.1875 0 -0.1875 0 0 ; -createNode nurbsCurve -n "mouth_C0_liplow27_0crvShape" -p "mouth_C0_liplow"; - rename -uid "71E92BE5-413C-5BBD-9F19-D1A034570A7E"; +createNode nurbsCurve -n "mouth_C0_liplow30_0crvShape" -p "mouth_C0_liplow"; + rename -uid "39F4949F-4F36-3245-1B5A-A4975120BAC1"; setAttr ".ihi" 0; setAttr -k off ".v"; setAttr ".ove" yes; @@ -6069,8 +6031,8 @@ createNode nurbsCurve -n "mouth_C0_liplow27_0crvShape" -p "mouth_C0_liplow"; 0 0 -0.1875 -0.1875 0 0 ; -createNode nurbsCurve -n "mouth_C0_liplow27_1crvShape" -p "mouth_C0_liplow"; - rename -uid "E860C9AB-447C-5BB8-9368-02BD67255399"; +createNode nurbsCurve -n "mouth_C0_liplow30_1crvShape" -p "mouth_C0_liplow"; + rename -uid "9197E6FB-45B2-A40D-F7B9-3C92E4D22421"; setAttr ".ihi" 0; setAttr -k off ".v"; setAttr ".ove" yes; @@ -6088,18 +6050,18 @@ createNode nurbsCurve -n "mouth_C0_liplow27_1crvShape" -p "mouth_C0_liplow"; 0 0 -0.1875 ; createNode transform -n "mouth_C0_crv" -p "mouth_C0_liplow"; - rename -uid "7D279E83-4D7E-1E12-BDED-8CBF45D02697"; + rename -uid "0386D929-44B1-B8CB-8758-F1996B42C571"; setAttr ".ovdt" 1; setAttr ".ove" yes; - setAttr ".t" -type "double3" -3.2770075875200178e-015 -29.844371667992313 -2.0778684034613573 ; - setAttr ".s" -type "double3" 1.8286050763007582 1.82860507630076 1.8286050763007613 ; + setAttr ".t" -type "double3" -3.2770075875200162e-015 -29.844371667992309 -2.0778684034613568 ; + setAttr ".s" -type "double3" 1.8286050763007577 1.8286050763007604 1.8286050763007606 ; createNode nurbsCurve -n "mouth_C0_crvShape" -p "|guide|global_C0_root|local_C0_root|body_C0_root|spine_C0_root|spine_C0_eff|neck_C0_root|neck_C0_neck|neck_C0_head|mouth_C0_root|mouth_C0_rotcenter|mouth_C0_liplow|mouth_C0_crv"; - rename -uid "6CF2E8C6-4D37-10E4-916B-23B07C8BAB66"; + rename -uid "59708543-4F43-EC8E-FDA7-779C1CCA8ADC"; setAttr -k off ".v"; setAttr -s 4 ".iog[0].og"; setAttr ".tw" yes; createNode nurbsCurve -n "mouth_C0_crvShapeOrig" -p "|guide|global_C0_root|local_C0_root|body_C0_root|spine_C0_root|spine_C0_eff|neck_C0_root|neck_C0_neck|neck_C0_head|mouth_C0_root|mouth_C0_rotcenter|mouth_C0_liplow|mouth_C0_crv"; - rename -uid "AA49FF8E-4867-656C-49A5-18806B7D5C5D"; + rename -uid "A5EA3B9D-45C1-6AAE-6FB9-BD888156A9B9"; setAttr -k off ".v"; setAttr ".io" yes; setAttr ".cc" -type "nurbsCurve" @@ -6110,10 +6072,10 @@ createNode nurbsCurve -n "mouth_C0_crvShapeOrig" -p "|guide|global_C0_root|local 0 0 0 ; createNode transform -n "mouth_C0_jaw" -p "mouth_C0_root"; - rename -uid "568949F5-4441-7918-D776-0181D6E3D95D"; + rename -uid "0462D737-4EFF-8CEF-451A-F486301E5112"; addAttr -ci true -sn "isGearGuide" -ln "isGearGuide" -dv 1 -min 0 -max 1 -at "bool"; setAttr -k off -cb on ".v"; - setAttr ".t" -type "double3" -1.0917243463457493e-015 -1.4111110000775078 2.0692083234973273 ; + setAttr ".t" -type "double3" -1.0917243463457505e-015 -1.4111110000775113 2.0692083234973264 ; setAttr -k off -cb on ".tx"; setAttr -k off -cb on ".ty"; setAttr -k off -cb on ".tz"; @@ -6121,12 +6083,12 @@ createNode transform -n "mouth_C0_jaw" -p "mouth_C0_root"; setAttr -k off -cb on ".ry"; setAttr -k off -cb on ".rz"; setAttr -cb on ".ro"; - setAttr ".s" -type "double3" 0.99999999999999722 0.99999999999999989 0.99999999999999745 ; + setAttr ".s" -type "double3" 0.99999999999999667 0.99999999999999978 0.99999999999999722 ; setAttr -k off -cb on ".sx"; setAttr -k off -cb on ".sy"; setAttr -k off -cb on ".sz"; createNode nurbsCurve -n "mouth_C0_jawShape" -p "mouth_C0_jaw"; - rename -uid "480C3BC1-423B-57B8-E626-D09D308B3C3C"; + rename -uid "74B91E1C-4211-9B72-E2AD-D1B12DF8829F"; setAttr ".ihi" 0; setAttr -k off ".v"; setAttr ".ove" yes; @@ -6138,8 +6100,8 @@ createNode nurbsCurve -n "mouth_C0_jawShape" -p "mouth_C0_jaw"; 0.25 0 0 -0.25 0 0 ; -createNode nurbsCurve -n "mouth_C0_jaw25Shape" -p "mouth_C0_jaw"; - rename -uid "BABB8434-4352-4DFB-A9B9-8EA4E244F973"; +createNode nurbsCurve -n "mouth_C0_jaw28Shape" -p "mouth_C0_jaw"; + rename -uid "D61CB066-4B97-2D74-3D57-6EA7E4C946FB"; setAttr ".ihi" 0; setAttr -k off ".v"; setAttr ".ove" yes; @@ -6151,8 +6113,8 @@ createNode nurbsCurve -n "mouth_C0_jaw25Shape" -p "mouth_C0_jaw"; 0 0.25 0 0 -0.25 0 ; -createNode nurbsCurve -n "mouth_C0_jaw26Shape" -p "mouth_C0_jaw"; - rename -uid "FC5E6847-45D7-54E0-9FCB-F49C2E34CC1B"; +createNode nurbsCurve -n "mouth_C0_jaw29Shape" -p "mouth_C0_jaw"; + rename -uid "80F50ED9-4CDE-8CC3-A2FA-C1902D42D397"; setAttr ".ihi" 0; setAttr -k off ".v"; setAttr ".ove" yes; @@ -6164,8 +6126,8 @@ createNode nurbsCurve -n "mouth_C0_jaw26Shape" -p "mouth_C0_jaw"; 0 0 0.25 0 0 -0.25 ; -createNode nurbsCurve -n "mouth_C0_jaw27Shape" -p "mouth_C0_jaw"; - rename -uid "6A7ACD86-40F5-2CC8-A3D1-509289E3D88A"; +createNode nurbsCurve -n "mouth_C0_jaw30Shape" -p "mouth_C0_jaw"; + rename -uid "18C70BAD-416B-77AA-CE39-1C9429819686"; setAttr ".ihi" 0; setAttr -k off ".v"; setAttr ".ove" yes; @@ -6182,8 +6144,8 @@ createNode nurbsCurve -n "mouth_C0_jaw27Shape" -p "mouth_C0_jaw"; 0 -0.1875 0 -0.1875 0 0 ; -createNode nurbsCurve -n "mouth_C0_jaw27_0crvShape" -p "mouth_C0_jaw"; - rename -uid "4D31BAA3-4A4A-064D-C162-429C2A5BC7D6"; +createNode nurbsCurve -n "mouth_C0_jaw30_0crvShape" -p "mouth_C0_jaw"; + rename -uid "D17424BB-4BC3-3768-FBEC-80AF9538D4C4"; setAttr ".ihi" 0; setAttr -k off ".v"; setAttr ".ove" yes; @@ -6200,8 +6162,8 @@ createNode nurbsCurve -n "mouth_C0_jaw27_0crvShape" -p "mouth_C0_jaw"; 0 0 -0.1875 -0.1875 0 0 ; -createNode nurbsCurve -n "mouth_C0_jaw27_1crvShape" -p "mouth_C0_jaw"; - rename -uid "C0743B6D-4ACF-80FE-D7C7-9890FE5A5801"; +createNode nurbsCurve -n "mouth_C0_jaw30_1crvShape" -p "mouth_C0_jaw"; + rename -uid "A388E7B6-4A75-FF4B-5F59-6D898FE0BD07"; setAttr ".ihi" 0; setAttr -k off ".v"; setAttr ".ove" yes; @@ -6219,7 +6181,7 @@ createNode nurbsCurve -n "mouth_C0_jaw27_1crvShape" -p "mouth_C0_jaw"; 0 0 -0.1875 ; createNode transform -n "tongue_C0_root" -p "mouth_C0_jaw"; - rename -uid "1DE02928-4B83-B40F-F8B2-B6BB09A32671"; + rename -uid "D4F1382D-423E-9708-240B-34A303DC6439"; addAttr -ci true -sn "isGearGuide" -ln "isGearGuide" -dv 1 -min 0 -max 1 -at "bool"; addAttr -ci true -sn "comp_type" -ln "comp_type" -dt "string"; addAttr -ci true -sn "comp_name" -ln "comp_name" -dt "string"; @@ -6229,13 +6191,13 @@ createNode transform -n "tongue_C0_root" -p "mouth_C0_jaw"; addAttr -ci true -sn "ui_host" -ln "ui_host" -dt "string"; addAttr -ci true -sn "ctlGrp" -ln "ctlGrp" -dt "string"; addAttr -ci true -sn "mode" -ln "mode" -min 0 -at "long"; - addAttr -ci true -sn "blend" -ln "blend" -min 0 -max 1 -at "double"; - addAttr -ci true -sn "neutralpose" -ln "neutralpose" -min 0 -max 1 -at "bool"; + addAttr -ci true -sn "blend" -ln "blend" -dv 1 -min 0 -max 1 -at "double"; + addAttr -ci true -sn "neutralpose" -ln "neutralpose" -dv 1 -min 0 -max 1 -at "bool"; addAttr -ci true -sn "ikrefarray" -ln "ikrefarray" -dt "string"; addAttr -ci true -sn "useIndex" -ln "useIndex" -min 0 -max 1 -at "bool"; - addAttr -ci true -sn "parentJointIndex" -ln "parentJointIndex" -at "long"; + addAttr -ci true -sn "parentJointIndex" -ln "parentJointIndex" -dv -1 -at "long"; setAttr -k off -cb on ".v"; - setAttr ".t" -type "double3" 8.2909663197643836e-016 0.86108709817294127 -1.6295011454214565 ; + setAttr ".t" -type "double3" 8.2909663197643875e-016 0.86108709817294482 -1.6295011454214561 ; setAttr -k off -cb on ".tx"; setAttr -k off -cb on ".ty"; setAttr -k off -cb on ".tz"; @@ -6243,7 +6205,7 @@ createNode transform -n "tongue_C0_root" -p "mouth_C0_jaw"; setAttr -k off -cb on ".ry"; setAttr -k off -cb on ".rz"; setAttr -cb on ".ro"; - setAttr ".s" -type "double3" 0.17172273903700594 0.17172273903700591 0.17172273903700599 ; + setAttr ".s" -type "double3" 0.17172273903700594 0.17172273903700588 0.17172273903700599 ; setAttr -k off -cb on ".sx"; setAttr -k off -cb on ".sy"; setAttr -k off -cb on ".sz"; @@ -6253,12 +6215,9 @@ createNode transform -n "tongue_C0_root" -p "mouth_C0_jaw"; setAttr ".connector" -type "string" "standard"; setAttr ".ui_host" -type "string" ""; setAttr ".ctlGrp" -type "string" ""; - setAttr ".blend" 1; - setAttr ".neutralpose" yes; setAttr ".ikrefarray" -type "string" ""; - setAttr ".parentJointIndex" -1; createNode nurbsCurve -n "tongue_C0_rootShape" -p "tongue_C0_root"; - rename -uid "287F82A7-4A42-4A8E-2E3E-548D595087B9"; + rename -uid "944BB210-40B0-453A-7346-BDB39A32F980"; setAttr ".ihi" 0; setAttr -k off ".v"; setAttr ".ove" yes; @@ -6270,8 +6229,8 @@ createNode nurbsCurve -n "tongue_C0_rootShape" -p "tongue_C0_root"; 0.25 0 0 -0.25 0 0 ; -createNode nurbsCurve -n "tongue_C0_root25Shape" -p "tongue_C0_root"; - rename -uid "E694E79A-447A-D8FC-C67D-C9AEFE914A14"; +createNode nurbsCurve -n "tongue_C0_root28Shape" -p "tongue_C0_root"; + rename -uid "2D03AC14-49D8-1422-A361-7584565F3761"; setAttr ".ihi" 0; setAttr -k off ".v"; setAttr ".ove" yes; @@ -6283,8 +6242,8 @@ createNode nurbsCurve -n "tongue_C0_root25Shape" -p "tongue_C0_root"; 0 0.25 0 0 -0.25 0 ; -createNode nurbsCurve -n "tongue_C0_root26Shape" -p "tongue_C0_root"; - rename -uid "05A6135A-4BDE-F89E-F596-DDBCEF4A336A"; +createNode nurbsCurve -n "tongue_C0_root29Shape" -p "tongue_C0_root"; + rename -uid "659D9A24-40B4-E9F0-D434-38964E4B26FE"; setAttr ".ihi" 0; setAttr -k off ".v"; setAttr ".ove" yes; @@ -6296,8 +6255,8 @@ createNode nurbsCurve -n "tongue_C0_root26Shape" -p "tongue_C0_root"; 0 0 0.25 0 0 -0.25 ; -createNode nurbsCurve -n "tongue_C0_root27Shape" -p "tongue_C0_root"; - rename -uid "299C7571-4D42-F7C6-08F2-CF8174DC0EFB"; +createNode nurbsCurve -n "tongue_C0_root30Shape" -p "tongue_C0_root"; + rename -uid "D8F59BAE-4A4F-CED4-4220-B09DD293CC5A"; setAttr ".ihi" 0; setAttr -k off ".v"; setAttr ".ove" yes; @@ -6324,7 +6283,7 @@ createNode nurbsCurve -n "tongue_C0_root27Shape" -p "tongue_C0_root"; -0.125 -0.125 -0.125 ; createNode transform -n "tongue_C0_0_loc" -p "tongue_C0_root"; - rename -uid "1687E187-4F12-304D-92EA-E98F503EFE23"; + rename -uid "3B98908F-4948-D04A-3230-11BF1FB6D2BB"; addAttr -ci true -sn "isGearGuide" -ln "isGearGuide" -dv 1 -min 0 -max 1 -at "bool"; setAttr -k off -cb on ".v"; setAttr ".t" -type "double3" -7.0143079180640854e-016 -2.8421709430404007e-014 1.5794817263027459 ; @@ -6335,12 +6294,12 @@ createNode transform -n "tongue_C0_0_loc" -p "tongue_C0_root"; setAttr -k off -cb on ".ry"; setAttr -k off -cb on ".rz"; setAttr -cb on ".ro"; - setAttr ".s" -type "double3" 1.0000000000000002 1.0000000000000013 1.0000000000000016 ; + setAttr ".s" -type "double3" 1.0000000000000002 1.0000000000000016 1.0000000000000016 ; setAttr -k off -cb on ".sx"; setAttr -k off -cb on ".sy"; setAttr -k off -cb on ".sz"; createNode nurbsCurve -n "tongue_C0_0_locShape" -p "tongue_C0_0_loc"; - rename -uid "D5D0EC35-46CC-F4C1-75FE-6FBCD1AD22D7"; + rename -uid "EC273AD5-49AB-9282-A6F9-66BED6041229"; setAttr ".ihi" 0; setAttr -k off ".v"; setAttr ".ove" yes; @@ -6352,8 +6311,8 @@ createNode nurbsCurve -n "tongue_C0_0_locShape" -p "tongue_C0_0_loc"; 0.25 0 0 -0.25 0 0 ; -createNode nurbsCurve -n "tongue_C0_0_loc25Shape" -p "tongue_C0_0_loc"; - rename -uid "D3882193-45E0-FDF3-F449-EBA1D77F3835"; +createNode nurbsCurve -n "tongue_C0_0_loc28Shape" -p "tongue_C0_0_loc"; + rename -uid "5243FF57-4450-3C37-B5E3-5B9DC54CE08D"; setAttr ".ihi" 0; setAttr -k off ".v"; setAttr ".ove" yes; @@ -6365,8 +6324,8 @@ createNode nurbsCurve -n "tongue_C0_0_loc25Shape" -p "tongue_C0_0_loc"; 0 0.25 0 0 -0.25 0 ; -createNode nurbsCurve -n "tongue_C0_0_loc26Shape" -p "tongue_C0_0_loc"; - rename -uid "5D165E13-4A70-602A-BBD5-26B288164237"; +createNode nurbsCurve -n "tongue_C0_0_loc29Shape" -p "tongue_C0_0_loc"; + rename -uid "C5B692AF-4AE1-35F6-65E3-34A9064B3494"; setAttr ".ihi" 0; setAttr -k off ".v"; setAttr ".ove" yes; @@ -6378,8 +6337,8 @@ createNode nurbsCurve -n "tongue_C0_0_loc26Shape" -p "tongue_C0_0_loc"; 0 0 0.25 0 0 -0.25 ; -createNode nurbsCurve -n "tongue_C0_0_loc27Shape" -p "tongue_C0_0_loc"; - rename -uid "F479B86B-43DE-894C-038D-7E83151C5D5F"; +createNode nurbsCurve -n "tongue_C0_0_loc30Shape" -p "tongue_C0_0_loc"; + rename -uid "F70B94D1-49EB-FFE8-3AC8-D199A60200B4"; setAttr ".ihi" 0; setAttr -k off ".v"; setAttr ".ove" yes; @@ -6396,8 +6355,8 @@ createNode nurbsCurve -n "tongue_C0_0_loc27Shape" -p "tongue_C0_0_loc"; 0 -0.1875 0 -0.1875 0 0 ; -createNode nurbsCurve -n "tongue_C0_0_loc27_0crvShape" -p "tongue_C0_0_loc"; - rename -uid "86A2E779-40C7-2384-A39F-808A51CCFA83"; +createNode nurbsCurve -n "tongue_C0_0_loc30_0crvShape" -p "tongue_C0_0_loc"; + rename -uid "1ABFA281-4814-D284-A842-418106CF9340"; setAttr ".ihi" 0; setAttr -k off ".v"; setAttr ".ove" yes; @@ -6414,8 +6373,8 @@ createNode nurbsCurve -n "tongue_C0_0_loc27_0crvShape" -p "tongue_C0_0_loc"; 0 0 -0.1875 -0.1875 0 0 ; -createNode nurbsCurve -n "tongue_C0_0_loc27_1crvShape" -p "tongue_C0_0_loc"; - rename -uid "CB960ED7-4070-E10C-ED82-F6B0B348D488"; +createNode nurbsCurve -n "tongue_C0_0_loc30_1crvShape" -p "tongue_C0_0_loc"; + rename -uid "84C7C041-4854-625B-629F-C8999438B71F"; setAttr ".ihi" 0; setAttr -k off ".v"; setAttr ".ove" yes; @@ -6433,10 +6392,10 @@ createNode nurbsCurve -n "tongue_C0_0_loc27_1crvShape" -p "tongue_C0_0_loc"; 0 0 -0.1875 ; createNode transform -n "tongue_C0_1_loc" -p "tongue_C0_0_loc"; - rename -uid "45793F78-495F-920C-D646-838EE0287B57"; + rename -uid "37EA9547-45C8-80F3-D0B8-3E886469AF7C"; addAttr -ci true -sn "isGearGuide" -ln "isGearGuide" -dv 1 -min 0 -max 1 -at "bool"; setAttr -k off -cb on ".v"; - setAttr ".t" -type "double3" -7.2170680441439722e-016 -0.16556620751518381 1.5794817263027454 ; + setAttr ".t" -type "double3" -7.2170680441440353e-016 -0.16556620751518381 1.5794817263027454 ; setAttr -k off -cb on ".tx"; setAttr -k off -cb on ".ty"; setAttr -k off -cb on ".tz"; @@ -6444,12 +6403,12 @@ createNode transform -n "tongue_C0_1_loc" -p "tongue_C0_0_loc"; setAttr -k off -cb on ".ry"; setAttr -k off -cb on ".rz"; setAttr -cb on ".ro"; - setAttr ".s" -type "double3" 1.0000000000000002 0.99999999999999944 1.0000000000000002 ; + setAttr ".s" -type "double3" 1.0000000000000002 0.99999999999999922 1.0000000000000002 ; setAttr -k off -cb on ".sx"; setAttr -k off -cb on ".sy"; setAttr -k off -cb on ".sz"; createNode nurbsCurve -n "tongue_C0_1_locShape" -p "tongue_C0_1_loc"; - rename -uid "4C54A550-494F-BC8B-DFAC-0AA175353817"; + rename -uid "5448DFE7-4A56-9B75-E73F-25A9F70DCF4A"; setAttr ".ihi" 0; setAttr -k off ".v"; setAttr ".ove" yes; @@ -6461,8 +6420,8 @@ createNode nurbsCurve -n "tongue_C0_1_locShape" -p "tongue_C0_1_loc"; 0.25 0 0 -0.25 0 0 ; -createNode nurbsCurve -n "tongue_C0_1_loc25Shape" -p "tongue_C0_1_loc"; - rename -uid "7D0D30C2-4BFF-4C19-2A34-1EA58BDF46A4"; +createNode nurbsCurve -n "tongue_C0_1_loc28Shape" -p "tongue_C0_1_loc"; + rename -uid "6456C675-4EAB-044C-2707-B6AF67367998"; setAttr ".ihi" 0; setAttr -k off ".v"; setAttr ".ove" yes; @@ -6474,8 +6433,8 @@ createNode nurbsCurve -n "tongue_C0_1_loc25Shape" -p "tongue_C0_1_loc"; 0 0.25 0 0 -0.25 0 ; -createNode nurbsCurve -n "tongue_C0_1_loc26Shape" -p "tongue_C0_1_loc"; - rename -uid "1A9F6E75-4AF2-E1A3-C8C8-F0AF35DCC9FA"; +createNode nurbsCurve -n "tongue_C0_1_loc29Shape" -p "tongue_C0_1_loc"; + rename -uid "3491DE44-4480-BAB0-EF3E-30A078B12530"; setAttr ".ihi" 0; setAttr -k off ".v"; setAttr ".ove" yes; @@ -6487,8 +6446,8 @@ createNode nurbsCurve -n "tongue_C0_1_loc26Shape" -p "tongue_C0_1_loc"; 0 0 0.25 0 0 -0.25 ; -createNode nurbsCurve -n "tongue_C0_1_loc27Shape" -p "tongue_C0_1_loc"; - rename -uid "8BE26D67-43A8-44FA-33D2-ED96BEC115F4"; +createNode nurbsCurve -n "tongue_C0_1_loc30Shape" -p "tongue_C0_1_loc"; + rename -uid "A42B14B6-4B51-6916-C794-4F868E94039E"; setAttr ".ihi" 0; setAttr -k off ".v"; setAttr ".ove" yes; @@ -6505,8 +6464,8 @@ createNode nurbsCurve -n "tongue_C0_1_loc27Shape" -p "tongue_C0_1_loc"; 0 -0.1875 0 -0.1875 0 0 ; -createNode nurbsCurve -n "tongue_C0_1_loc27_0crvShape" -p "tongue_C0_1_loc"; - rename -uid "9B56376D-46FA-701F-51AB-BA8095D72AB0"; +createNode nurbsCurve -n "tongue_C0_1_loc30_0crvShape" -p "tongue_C0_1_loc"; + rename -uid "CAB734F7-409D-AFC3-537D-BA9AF1243D0E"; setAttr ".ihi" 0; setAttr -k off ".v"; setAttr ".ove" yes; @@ -6523,8 +6482,8 @@ createNode nurbsCurve -n "tongue_C0_1_loc27_0crvShape" -p "tongue_C0_1_loc"; 0 0 -0.1875 -0.1875 0 0 ; -createNode nurbsCurve -n "tongue_C0_1_loc27_1crvShape" -p "tongue_C0_1_loc"; - rename -uid "BE2E32C5-4269-E8C4-6A45-80B33E48B1FF"; +createNode nurbsCurve -n "tongue_C0_1_loc30_1crvShape" -p "tongue_C0_1_loc"; + rename -uid "957D7797-4028-B7D2-C2C3-58B67D5D1859"; setAttr ".ihi" 0; setAttr -k off ".v"; setAttr ".ove" yes; @@ -6542,10 +6501,10 @@ createNode nurbsCurve -n "tongue_C0_1_loc27_1crvShape" -p "tongue_C0_1_loc"; 0 0 -0.1875 ; createNode transform -n "tongue_C0_2_loc" -p "tongue_C0_1_loc"; - rename -uid "63C7A16D-4499-5E6D-CABC-9B9E6910C7BC"; + rename -uid "FE9559AC-446F-51D3-AE68-6FBD399DB402"; addAttr -ci true -sn "isGearGuide" -ln "isGearGuide" -dv 1 -min 0 -max 1 -at "bool"; setAttr -k off -cb on ".v"; - setAttr ".t" -type "double3" -7.3944831544645201e-016 -0.31043663909051133 1.5794817263027401 ; + setAttr ".t" -type "double3" -7.3944831544645516e-016 -0.31043663909051133 1.5794817263027401 ; setAttr -k off -cb on ".tx"; setAttr -k off -cb on ".ty"; setAttr -k off -cb on ".tz"; @@ -6558,7 +6517,7 @@ createNode transform -n "tongue_C0_2_loc" -p "tongue_C0_1_loc"; setAttr -k off -cb on ".sy"; setAttr -k off -cb on ".sz"; createNode nurbsCurve -n "tongue_C0_2_locShape" -p "tongue_C0_2_loc"; - rename -uid "EFF6ACD4-4504-4F97-116A-A29E0158386A"; + rename -uid "C7EFB747-45CE-4FBE-6C33-9194825DFF08"; setAttr ".ihi" 0; setAttr -k off ".v"; setAttr ".ove" yes; @@ -6570,8 +6529,8 @@ createNode nurbsCurve -n "tongue_C0_2_locShape" -p "tongue_C0_2_loc"; 0.25 0 0 -0.25 0 0 ; -createNode nurbsCurve -n "tongue_C0_2_loc25Shape" -p "tongue_C0_2_loc"; - rename -uid "AB9C7363-4D90-1408-4EDC-DFBB78215CDB"; +createNode nurbsCurve -n "tongue_C0_2_loc28Shape" -p "tongue_C0_2_loc"; + rename -uid "9380BA52-4FA1-4ED8-48AA-3EB905250AA8"; setAttr ".ihi" 0; setAttr -k off ".v"; setAttr ".ove" yes; @@ -6583,8 +6542,8 @@ createNode nurbsCurve -n "tongue_C0_2_loc25Shape" -p "tongue_C0_2_loc"; 0 0.25 0 0 -0.25 0 ; -createNode nurbsCurve -n "tongue_C0_2_loc26Shape" -p "tongue_C0_2_loc"; - rename -uid "9BF78ECD-485C-D597-7411-FD9A21B79C06"; +createNode nurbsCurve -n "tongue_C0_2_loc29Shape" -p "tongue_C0_2_loc"; + rename -uid "7219454A-4A46-5B48-C440-98BC24E587DB"; setAttr ".ihi" 0; setAttr -k off ".v"; setAttr ".ove" yes; @@ -6596,8 +6555,8 @@ createNode nurbsCurve -n "tongue_C0_2_loc26Shape" -p "tongue_C0_2_loc"; 0 0 0.25 0 0 -0.25 ; -createNode nurbsCurve -n "tongue_C0_2_loc27Shape" -p "tongue_C0_2_loc"; - rename -uid "F021CD0F-4CB8-1CBB-8465-1791A31135E3"; +createNode nurbsCurve -n "tongue_C0_2_loc30Shape" -p "tongue_C0_2_loc"; + rename -uid "9A7B646C-49B1-7969-7B9F-D582F16C85C6"; setAttr ".ihi" 0; setAttr -k off ".v"; setAttr ".ove" yes; @@ -6614,8 +6573,8 @@ createNode nurbsCurve -n "tongue_C0_2_loc27Shape" -p "tongue_C0_2_loc"; 0 -0.1875 0 -0.1875 0 0 ; -createNode nurbsCurve -n "tongue_C0_2_loc27_0crvShape" -p "tongue_C0_2_loc"; - rename -uid "9B256196-416F-78BC-C16D-DDB2CB230493"; +createNode nurbsCurve -n "tongue_C0_2_loc30_0crvShape" -p "tongue_C0_2_loc"; + rename -uid "BD2B5C20-4F6C-6A89-18F0-D2997899486D"; setAttr ".ihi" 0; setAttr -k off ".v"; setAttr ".ove" yes; @@ -6632,8 +6591,8 @@ createNode nurbsCurve -n "tongue_C0_2_loc27_0crvShape" -p "tongue_C0_2_loc"; 0 0 -0.1875 -0.1875 0 0 ; -createNode nurbsCurve -n "tongue_C0_2_loc27_1crvShape" -p "tongue_C0_2_loc"; - rename -uid "5BEA8907-4137-0D19-5971-58BC16444D51"; +createNode nurbsCurve -n "tongue_C0_2_loc30_1crvShape" -p "tongue_C0_2_loc"; + rename -uid "D75AC879-4F90-3B3E-4B3E-9F83D447FB0D"; setAttr ".ihi" 0; setAttr -k off ".v"; setAttr ".ove" yes; @@ -6651,10 +6610,10 @@ createNode nurbsCurve -n "tongue_C0_2_loc27_1crvShape" -p "tongue_C0_2_loc"; 0 0 -0.1875 ; createNode transform -n "tongue_C0_3_loc" -p "tongue_C0_2_loc"; - rename -uid "9FFE10B6-4135-9DF5-8076-66957DCE3D52"; + rename -uid "76976970-4081-7E73-7F5D-A6B9FB582E9C"; addAttr -ci true -sn "isGearGuide" -ln "isGearGuide" -dv 1 -min 0 -max 1 -at "bool"; setAttr -k off -cb on ".v"; - setAttr ".t" -type "double3" -7.0903429653441218e-016 -0.062087327818261429 1.5794817263027481 ; + setAttr ".t" -type "double3" -7.0903429653440587e-016 -0.06208732781828985 1.579481726302749 ; setAttr -k off -cb on ".tx"; setAttr -k off -cb on ".ty"; setAttr -k off -cb on ".tz"; @@ -6662,12 +6621,12 @@ createNode transform -n "tongue_C0_3_loc" -p "tongue_C0_2_loc"; setAttr -k off -cb on ".ry"; setAttr -k off -cb on ".rz"; setAttr -cb on ".ro"; - setAttr ".s" -type "double3" 0.99999999999999944 0.999999999999999 0.99999999999999922 ; + setAttr ".s" -type "double3" 0.99999999999999944 0.999999999999999 0.99999999999999944 ; setAttr -k off -cb on ".sx"; setAttr -k off -cb on ".sy"; setAttr -k off -cb on ".sz"; createNode nurbsCurve -n "tongue_C0_3_locShape" -p "tongue_C0_3_loc"; - rename -uid "8F0DBE88-4DCD-3CFF-1FF3-088BD68A5098"; + rename -uid "504BFDA8-40C1-2988-8BC5-4DA21E45B1F9"; setAttr ".ihi" 0; setAttr -k off ".v"; setAttr ".ove" yes; @@ -6679,8 +6638,8 @@ createNode nurbsCurve -n "tongue_C0_3_locShape" -p "tongue_C0_3_loc"; 0.25 0 0 -0.25 0 0 ; -createNode nurbsCurve -n "tongue_C0_3_loc25Shape" -p "tongue_C0_3_loc"; - rename -uid "DA882A9C-43F6-E863-3D37-C2AEFCBF3069"; +createNode nurbsCurve -n "tongue_C0_3_loc28Shape" -p "tongue_C0_3_loc"; + rename -uid "1487E921-4A4C-2C09-8AB9-7B84672E9B35"; setAttr ".ihi" 0; setAttr -k off ".v"; setAttr ".ove" yes; @@ -6692,8 +6651,8 @@ createNode nurbsCurve -n "tongue_C0_3_loc25Shape" -p "tongue_C0_3_loc"; 0 0.25 0 0 -0.25 0 ; -createNode nurbsCurve -n "tongue_C0_3_loc26Shape" -p "tongue_C0_3_loc"; - rename -uid "52049516-40AF-3652-0B1D-78B270BE8F27"; +createNode nurbsCurve -n "tongue_C0_3_loc29Shape" -p "tongue_C0_3_loc"; + rename -uid "29408C29-4A5A-217E-66E9-758300C9BB0D"; setAttr ".ihi" 0; setAttr -k off ".v"; setAttr ".ove" yes; @@ -6705,8 +6664,8 @@ createNode nurbsCurve -n "tongue_C0_3_loc26Shape" -p "tongue_C0_3_loc"; 0 0 0.25 0 0 -0.25 ; -createNode nurbsCurve -n "tongue_C0_3_loc27Shape" -p "tongue_C0_3_loc"; - rename -uid "F647097E-4912-78AA-0FB7-3EBA205D65A8"; +createNode nurbsCurve -n "tongue_C0_3_loc30Shape" -p "tongue_C0_3_loc"; + rename -uid "48984B67-4CE7-E5FB-3778-489FB7C146A5"; setAttr ".ihi" 0; setAttr -k off ".v"; setAttr ".ove" yes; @@ -6723,8 +6682,8 @@ createNode nurbsCurve -n "tongue_C0_3_loc27Shape" -p "tongue_C0_3_loc"; 0 -0.1875 0 -0.1875 0 0 ; -createNode nurbsCurve -n "tongue_C0_3_loc27_0crvShape" -p "tongue_C0_3_loc"; - rename -uid "0BE7CFAF-4D97-C457-4B7A-29A28CA6AC4D"; +createNode nurbsCurve -n "tongue_C0_3_loc30_0crvShape" -p "tongue_C0_3_loc"; + rename -uid "7C834444-49A1-5BA1-4D58-A5911E6D0F03"; setAttr ".ihi" 0; setAttr -k off ".v"; setAttr ".ove" yes; @@ -6741,8 +6700,8 @@ createNode nurbsCurve -n "tongue_C0_3_loc27_0crvShape" -p "tongue_C0_3_loc"; 0 0 -0.1875 -0.1875 0 0 ; -createNode nurbsCurve -n "tongue_C0_3_loc27_1crvShape" -p "tongue_C0_3_loc"; - rename -uid "1B4B19DD-4BFF-A914-AB6C-05A30E698E88"; +createNode nurbsCurve -n "tongue_C0_3_loc30_1crvShape" -p "tongue_C0_3_loc"; + rename -uid "86A2B3F2-46F7-62EB-3139-63B11E507596"; setAttr ".ihi" 0; setAttr -k off ".v"; setAttr ".ove" yes; @@ -6760,7 +6719,7 @@ createNode nurbsCurve -n "tongue_C0_3_loc27_1crvShape" -p "tongue_C0_3_loc"; 0 0 -0.1875 ; createNode transform -n "tongue_C0_blade" -p "tongue_C0_root"; - rename -uid "30EA069F-40A2-C6A8-3149-DEA628320B67"; + rename -uid "177086F2-4229-9FF2-289E-1DA8C14FD075"; addAttr -ci true -k true -sn "bladeRollOffset" -ln "bladeRollOffset" -at "float"; setAttr -l on -k off -cb on ".v"; setAttr -k off -cb on ".tx"; @@ -6770,13 +6729,13 @@ createNode transform -n "tongue_C0_blade" -p "tongue_C0_root"; setAttr -k off -cb on ".ry"; setAttr -k off -cb on ".rz"; setAttr -cb on ".ro"; - setAttr ".s" -type "double3" 1.0000000000000024 1.0000000000000013 1.0000000000000013 ; + setAttr ".s" -type "double3" 1.0000000000000024 1.0000000000000016 1.0000000000000013 ; setAttr -l on -k off -cb on ".sx"; setAttr -l on -k off -cb on ".sy"; setAttr -l on -k off -cb on ".sz"; setAttr -k on ".bladeRollOffset"; createNode nurbsCurve -n "tongue_C0_bladeShape" -p "tongue_C0_blade"; - rename -uid "6E5F9DBF-4433-3D4A-AA2B-259E66CEBF2B"; + rename -uid "AB03CA26-474C-5C8E-1C7C-AE8188C819F9"; setAttr ".ihi" 0; setAttr -k off ".v"; setAttr ".ove" yes; @@ -6790,8 +6749,8 @@ createNode nurbsCurve -n "tongue_C0_bladeShape" -p "tongue_C0_blade"; 0 0.034344547807401184 0 0 0 0 ; -createNode aimConstraint -n "tongue_C0_blade_aimConstraint9" -p "tongue_C0_blade"; - rename -uid "8568FD21-4E7C-AFE2-8DD0-C7BAFCA69202"; +createNode aimConstraint -n "tongue_C0_blade_aimConstraint10" -p "tongue_C0_blade"; + rename -uid "3D0E469A-4210-528C-3AAD-50AA6338BAF0"; addAttr -dcb 0 -ci true -sn "w0" -ln "tongue_C0_0_locW0" -dv 1 -at "double"; setAttr -k on ".nds"; setAttr -k off ".v"; @@ -6806,10 +6765,10 @@ createNode aimConstraint -n "tongue_C0_blade_aimConstraint9" -p "tongue_C0_blade setAttr -k off ".sz"; setAttr ".erp" yes; setAttr ".wut" 2; - setAttr ".rsrr" -type "double3" -3.0929968415421635e-012 -89.999999999996902 0 ; + setAttr ".rsrr" -type "double3" -1.030998947180722e-012 -89.999999999998963 0 ; setAttr -k on ".w0"; -createNode pointConstraint -n "tongue_C0_blade_pointConstraint9" -p "tongue_C0_blade"; - rename -uid "25E891A1-44D5-3CD6-B278-0781BB75872B"; +createNode pointConstraint -n "tongue_C0_blade_pointConstraint10" -p "tongue_C0_blade"; + rename -uid "027C676F-47BE-539B-3669-7EB31E69677D"; addAttr -dcb 0 -ci true -k true -sn "w0" -ln "tongue_C0_rootW0" -dv 1 -min 0 -at "double"; setAttr -k on ".nds"; setAttr -k off ".v"; @@ -6823,21 +6782,21 @@ createNode pointConstraint -n "tongue_C0_blade_pointConstraint9" -p "tongue_C0_b setAttr -k off ".sy"; setAttr -k off ".sz"; setAttr ".erp" yes; - setAttr ".rst" -type "double3" -6.3108872417680944e-030 0 -4.4408920985006262e-016 ; + setAttr ".rst" -type "double3" 3.1554436208840472e-030 0 0 ; setAttr -k on ".w0"; createNode transform -n "tongue_C0_crv" -p "tongue_C0_root"; - rename -uid "27F237C2-428B-68CD-EBEE-38AFC81531A6"; + rename -uid "314009AD-4223-2330-90B8-CC93843CA9FF"; setAttr ".ovdt" 1; setAttr ".ove" yes; - setAttr ".t" -type "double3" -2.3232792471046793e-014 -175.06339877760735 -3.1060024283289889 ; - setAttr ".s" -type "double3" 10.648590201596399 10.648590201596415 10.648590201596409 ; + setAttr ".t" -type "double3" -2.3232792471046787e-014 -175.06339877760738 -3.1060024283289889 ; + setAttr ".s" -type "double3" 10.648590201596397 10.648590201596416 10.648590201596406 ; createNode nurbsCurve -n "tongue_C0_crvShape" -p "tongue_C0_crv"; - rename -uid "6D50E28A-43B5-1B01-57DC-5F93E628FE86"; + rename -uid "2C7D1F1C-41C0-0BB2-A767-FDBDF0CFF1D1"; setAttr -k off ".v"; setAttr -s 4 ".iog[0].og"; setAttr ".tw" yes; createNode nurbsCurve -n "tongue_C0_crvShapeOrig" -p "tongue_C0_crv"; - rename -uid "3B513234-4A9C-C36F-F85C-7EAE5DF6F93B"; + rename -uid "19DBC66C-4FFE-1501-3947-87B256841BFE"; setAttr -k off ".v"; setAttr ".io" yes; setAttr ".cc" -type "nurbsCurve" @@ -6851,18 +6810,18 @@ createNode nurbsCurve -n "tongue_C0_crvShapeOrig" -p "tongue_C0_crv"; 0 0 0 ; createNode transform -n "mouth_C0_crv" -p "mouth_C0_root"; - rename -uid "3A55B852-4016-EC23-4961-D58A9DC7D62C"; + rename -uid "226A4047-4659-F66D-B776-B48640B4D18B"; setAttr ".ovdt" 1; setAttr ".ove" yes; - setAttr ".t" -type "double3" -4.2522264729757852e-015 -30.612390245122924 -0.093664066372369681 ; - setAttr ".s" -type "double3" 1.828605076300752 1.8286050763007591 1.8286050763007546 ; + setAttr ".t" -type "double3" -4.2522264729757852e-015 -30.612390245122928 -0.093664066372369612 ; + setAttr ".s" -type "double3" 1.8286050763007506 1.8286050763007589 1.8286050763007538 ; createNode nurbsCurve -n "mouth_C0_crvShape" -p "|guide|global_C0_root|local_C0_root|body_C0_root|spine_C0_root|spine_C0_eff|neck_C0_root|neck_C0_neck|neck_C0_head|mouth_C0_root|mouth_C0_crv"; - rename -uid "D2167D7B-4A25-0EC8-7927-958F26C41B48"; + rename -uid "6B9598EB-4B4C-56F4-3DE1-73B8505B7331"; setAttr -k off ".v"; setAttr -s 4 ".iog[0].og"; setAttr ".tw" yes; createNode nurbsCurve -n "mouth_C0_crvShapeOrig" -p "|guide|global_C0_root|local_C0_root|body_C0_root|spine_C0_root|spine_C0_eff|neck_C0_root|neck_C0_neck|neck_C0_head|mouth_C0_root|mouth_C0_crv"; - rename -uid "54739CA3-4B83-3943-3190-1FB6A6772F81"; + rename -uid "279E82F2-486D-FB20-9A9A-F38DBDF51C64"; setAttr -k off ".v"; setAttr ".io" yes; setAttr ".cc" -type "nurbsCurve" @@ -6872,19 +6831,19 @@ createNode nurbsCurve -n "mouth_C0_crvShapeOrig" -p "|guide|global_C0_root|local 0 0 0 0 0 0 ; -createNode transform -n "mouth_C0_crv9" -p "mouth_C0_root"; - rename -uid "465F9BBA-46BC-BBCA-7559-438DFA251F95"; +createNode transform -n "mouth_C0_crv10" -p "mouth_C0_root"; + rename -uid "A8E8A3F1-4A27-1E70-F01A-D1B179476AB8"; setAttr ".ovdt" 1; setAttr ".ove" yes; - setAttr ".t" -type "double3" -4.2522264729757852e-015 -30.612390245122924 -0.093664066372369681 ; - setAttr ".s" -type "double3" 1.828605076300752 1.8286050763007591 1.8286050763007546 ; -createNode nurbsCurve -n "mouth_C0_crv9Shape" -p "mouth_C0_crv9"; - rename -uid "380BF091-4C5D-1EF2-D2DB-AA8363157231"; + setAttr ".t" -type "double3" -4.2522264729757852e-015 -30.612390245122928 -0.093664066372369612 ; + setAttr ".s" -type "double3" 1.8286050763007506 1.8286050763007589 1.8286050763007538 ; +createNode nurbsCurve -n "mouth_C0_crv10Shape" -p "mouth_C0_crv10"; + rename -uid "0B5AECC3-46CD-4D88-7130-7296DFDB4AD0"; setAttr -k off ".v"; setAttr -s 4 ".iog[0].og"; setAttr ".tw" yes; -createNode nurbsCurve -n "mouth_C0_crv9ShapeOrig" -p "mouth_C0_crv9"; - rename -uid "22D0DE9F-4CD0-58F1-8DE8-ABBE42C079E9"; +createNode nurbsCurve -n "mouth_C0_crv10ShapeOrig" -p "mouth_C0_crv10"; + rename -uid "30704DDA-4665-CF9F-FD40-C8A37A1D1152"; setAttr -k off ".v"; setAttr ".io" yes; setAttr ".cc" -type "nurbsCurve" @@ -6895,7 +6854,7 @@ createNode nurbsCurve -n "mouth_C0_crv9ShapeOrig" -p "mouth_C0_crv9"; 0 0 0 ; createNode transform -n "eyeslook_C0_root" -p "neck_C0_head"; - rename -uid "D00A6710-4443-4B35-DABA-808CF8F478D6"; + rename -uid "1DDAC81C-403E-2C7F-D8AF-70A0004295FB"; addAttr -ci true -sn "isGearGuide" -ln "isGearGuide" -dv 1 -min 0 -max 1 -at "bool"; addAttr -ci true -sn "comp_type" -ln "comp_type" -dt "string"; addAttr -ci true -sn "comp_name" -ln "comp_name" -dt "string"; @@ -6908,23 +6867,25 @@ createNode transform -n "eyeslook_C0_root" -p "neck_C0_head"; addAttr -ci true -sn "ikrefarray" -ln "ikrefarray" -dt "string"; addAttr -ci true -sn "joint" -ln "joint" -min 0 -max 1 -at "bool"; addAttr -ci true -sn "uniScale" -ln "uniScale" -min 0 -max 1 -at "bool"; - addAttr -ci true -sn "k_tx" -ln "k_tx" -min 0 -max 1 -at "bool"; - addAttr -ci true -sn "k_ty" -ln "k_ty" -min 0 -max 1 -at "bool"; - addAttr -ci true -sn "k_tz" -ln "k_tz" -min 0 -max 1 -at "bool"; - addAttr -ci true -sn "k_ro" -ln "k_ro" -min 0 -max 1 -at "bool"; - addAttr -ci true -sn "k_rx" -ln "k_rx" -min 0 -max 1 -at "bool"; - addAttr -ci true -sn "k_ry" -ln "k_ry" -min 0 -max 1 -at "bool"; - addAttr -ci true -sn "k_rz" -ln "k_rz" -min 0 -max 1 -at "bool"; - addAttr -ci true -sn "k_sx" -ln "k_sx" -min 0 -max 1 -at "bool"; - addAttr -ci true -sn "k_sy" -ln "k_sy" -min 0 -max 1 -at "bool"; - addAttr -ci true -sn "k_sz" -ln "k_sz" -min 0 -max 1 -at "bool"; + addAttr -ci true -sn "k_tx" -ln "k_tx" -dv 1 -min 0 -max 1 -at "bool"; + addAttr -ci true -sn "k_ty" -ln "k_ty" -dv 1 -min 0 -max 1 -at "bool"; + addAttr -ci true -sn "k_tz" -ln "k_tz" -dv 1 -min 0 -max 1 -at "bool"; + addAttr -ci true -sn "k_ro" -ln "k_ro" -dv 1 -min 0 -max 1 -at "bool"; + addAttr -ci true -sn "k_rx" -ln "k_rx" -dv 1 -min 0 -max 1 -at "bool"; + addAttr -ci true -sn "k_ry" -ln "k_ry" -dv 1 -min 0 -max 1 -at "bool"; + addAttr -ci true -sn "k_rz" -ln "k_rz" -dv 1 -min 0 -max 1 -at "bool"; + addAttr -ci true -sn "k_sx" -ln "k_sx" -dv 1 -min 0 -max 1 -at "bool"; + addAttr -ci true -sn "k_sy" -ln "k_sy" -dv 1 -min 0 -max 1 -at "bool"; + addAttr -ci true -sn "k_sz" -ln "k_sz" -dv 1 -min 0 -max 1 -at "bool"; addAttr -ci true -sn "default_rotorder" -ln "default_rotorder" -min 0 -max 5 -at "long"; - addAttr -ci true -sn "neutralRotation" -ln "neutralRotation" -min 0 -max 1 -at "bool"; - addAttr -ci true -sn "ctlSize" -ln "ctlSize" -at "double"; + addAttr -ci true -sn "neutralRotation" -ln "neutralRotation" -dv 1 -min 0 -max 1 + -at "bool"; + addAttr -ci true -sn "mirrorBehaviour" -ln "mirrorBehaviour" -min 0 -max 1 -at "bool"; + addAttr -ci true -sn "ctlSize" -ln "ctlSize" -dv 1 -at "double"; addAttr -ci true -sn "useIndex" -ln "useIndex" -min 0 -max 1 -at "bool"; - addAttr -ci true -sn "parentJointIndex" -ln "parentJointIndex" -at "long"; + addAttr -ci true -sn "parentJointIndex" -ln "parentJointIndex" -dv -1 -at "long"; setAttr -k off -cb on ".v"; - setAttr ".t" -type "double3" -5.2613992666289553 0.71045535901633627 -3.3130608822386209e-015 ; + setAttr ".t" -type "double3" -5.2613992666289535 0.71045535901632917 -3.3130608822386185e-015 ; setAttr -k off -cb on ".tx"; setAttr -k off -cb on ".ty"; setAttr -k off -cb on ".tz"; @@ -6933,7 +6894,7 @@ createNode transform -n "eyeslook_C0_root" -p "neck_C0_head"; setAttr -k off -cb on ".ry"; setAttr -k off -cb on ".rz"; setAttr -cb on ".ro"; - setAttr ".s" -type "double3" 1.6711445512932588 1.6711445512932537 1.6711445512932512 ; + setAttr ".s" -type "double3" 1.671144551293259 1.6711445512932537 1.6711445512932515 ; setAttr -k off -cb on ".sx"; setAttr -k off -cb on ".sy"; setAttr -k off -cb on ".sz"; @@ -6945,21 +6906,8 @@ createNode transform -n "eyeslook_C0_root" -p "neck_C0_head"; setAttr ".ctlGrp" -type "string" ""; setAttr ".icon" -type "string" "square"; setAttr ".ikrefarray" -type "string" "neck_C0_head,local_C0_root,body_C0_root,spine_C0_eff"; - setAttr ".k_tx" yes; - setAttr ".k_ty" yes; - setAttr ".k_tz" yes; - setAttr ".k_ro" yes; - setAttr ".k_rx" yes; - setAttr ".k_ry" yes; - setAttr ".k_rz" yes; - setAttr ".k_sx" yes; - setAttr ".k_sy" yes; - setAttr ".k_sz" yes; - setAttr ".neutralRotation" yes; - setAttr ".ctlSize" 1; - setAttr ".parentJointIndex" -1; createNode nurbsCurve -n "eyeslook_C0_rootShape" -p "eyeslook_C0_root"; - rename -uid "139D11EC-4727-AE0B-2428-5F81C059F92B"; + rename -uid "E55E0856-462C-EF85-68E2-0C88197CFD7A"; setAttr ".ihi" 0; setAttr -k off ".v"; setAttr ".ove" yes; @@ -6971,8 +6919,8 @@ createNode nurbsCurve -n "eyeslook_C0_rootShape" -p "eyeslook_C0_root"; 0.25 0 0 -0.25 0 0 ; -createNode nurbsCurve -n "eyeslook_C0_root25Shape" -p "eyeslook_C0_root"; - rename -uid "76A07E18-494D-8D60-6B0C-65A0A024845C"; +createNode nurbsCurve -n "eyeslook_C0_root28Shape" -p "eyeslook_C0_root"; + rename -uid "947777DE-43E5-F88A-55CE-A3A4D730021B"; setAttr ".ihi" 0; setAttr -k off ".v"; setAttr ".ove" yes; @@ -6984,8 +6932,8 @@ createNode nurbsCurve -n "eyeslook_C0_root25Shape" -p "eyeslook_C0_root"; 0 0.25 0 0 -0.25 0 ; -createNode nurbsCurve -n "eyeslook_C0_root26Shape" -p "eyeslook_C0_root"; - rename -uid "B584E5DD-4C55-9D08-BB10-25A1E1AD66C1"; +createNode nurbsCurve -n "eyeslook_C0_root29Shape" -p "eyeslook_C0_root"; + rename -uid "DACB4333-458D-7A5D-8601-F5BB43009F4F"; setAttr ".ihi" 0; setAttr -k off ".v"; setAttr ".ove" yes; @@ -6997,8 +6945,8 @@ createNode nurbsCurve -n "eyeslook_C0_root26Shape" -p "eyeslook_C0_root"; 0 0 0.25 0 0 -0.25 ; -createNode nurbsCurve -n "eyeslook_C0_root27Shape" -p "eyeslook_C0_root"; - rename -uid "44768BCF-4D81-F2B3-B2FA-6097493097E5"; +createNode nurbsCurve -n "eyeslook_C0_root30Shape" -p "eyeslook_C0_root"; + rename -uid "84B14C87-41A4-3852-4E5C-E3B5B6E1C92D"; setAttr ".ihi" 0; setAttr -k off ".v"; setAttr ".ove" yes; @@ -7025,10 +6973,10 @@ createNode nurbsCurve -n "eyeslook_C0_root27Shape" -p "eyeslook_C0_root"; -0.125 -0.125 -0.125 ; createNode transform -n "eyeslook_C0_sizeRef" -p "eyeslook_C0_root"; - rename -uid "25636A12-4683-2C02-55B0-2893780DED50"; + rename -uid "BEA2E5DC-4010-A520-DC2E-368C959A7BD3"; addAttr -ci true -sn "isGearGuide" -ln "isGearGuide" -dv 1 -min 0 -max 1 -at "bool"; setAttr -k off -cb on ".v"; - setAttr ".t" -type "double3" -4.6607527914310037e-016 0 1.049508226737736 ; + setAttr ".t" -type "double3" -4.6607527914310057e-016 3.5527136788005009e-015 1.0495082267377356 ; setAttr -k off -cb on ".tx"; setAttr -k off -cb on ".ty"; setAttr -k off -cb on ".tz"; @@ -7036,12 +6984,12 @@ createNode transform -n "eyeslook_C0_sizeRef" -p "eyeslook_C0_root"; setAttr -k off -cb on ".ry"; setAttr -k off -cb on ".rz"; setAttr -cb on ".ro"; - setAttr ".s" -type "double3" 1.0495082267377338 1.0495082267377396 1.0495082267377354 ; + setAttr ".s" -type "double3" 1.0495082267377336 1.0495082267377394 1.0495082267377349 ; setAttr -k off -cb on ".sx"; setAttr -k off -cb on ".sy"; setAttr -k off -cb on ".sz"; createNode transform -n "eye_R0_root" -p "neck_C0_head"; - rename -uid "EBE956C6-49E9-0C94-BE9A-00BDCED9945F"; + rename -uid "C969A6A6-444F-EF88-9641-04ACC11D9DDD"; addAttr -ci true -sn "isGearGuide" -ln "isGearGuide" -dv 1 -min 0 -max 1 -at "bool"; addAttr -ci true -sn "comp_type" -ln "comp_type" -dt "string"; addAttr -ci true -sn "comp_name" -ln "comp_name" -dt "string"; @@ -7054,9 +7002,9 @@ createNode transform -n "eye_R0_root" -p "neck_C0_head"; -max 2 -en "X:Y:Z" -at "enum"; addAttr -ci true -sn "ikrefarray" -ln "ikrefarray" -dt "string"; addAttr -ci true -sn "useIndex" -ln "useIndex" -min 0 -max 1 -at "bool"; - addAttr -ci true -sn "parentJointIndex" -ln "parentJointIndex" -at "long"; + addAttr -ci true -sn "parentJointIndex" -ln "parentJointIndex" -dv -1 -at "long"; setAttr -k off -cb on ".v"; - setAttr ".t" -type "double3" -1.4961368484464241 0.70921581084615326 -0.51425464314724334 ; + setAttr ".t" -type "double3" -1.4961368484464239 0.70921581084614616 -0.51425464314724323 ; setAttr -k off -cb on ".tx"; setAttr -k off -cb on ".ty"; setAttr -k off -cb on ".tz"; @@ -7065,7 +7013,7 @@ createNode transform -n "eye_R0_root" -p "neck_C0_head"; setAttr -k off -cb on ".ry"; setAttr -k off -cb on ".rz"; setAttr -cb on ".ro"; - setAttr ".s" -type "double3" 0.99999999999999778 0.99999999999999933 -0.99999999999999867 ; + setAttr ".s" -type "double3" 0.99999999999999778 0.99999999999999944 -0.99999999999999845 ; setAttr -k off -cb on ".sx"; setAttr -k off -cb on ".sy"; setAttr -k off -cb on ".sz"; @@ -7077,9 +7025,8 @@ createNode transform -n "eye_R0_root" -p "neck_C0_head"; setAttr ".ctlGrp" -type "string" ""; setAttr -k on ".upVectorDirection" 1; setAttr ".ikrefarray" -type "string" "eyeslook_C0_root"; - setAttr ".parentJointIndex" -1; createNode nurbsCurve -n "eye_R0_rootShape" -p "eye_R0_root"; - rename -uid "69EB1A5E-4A30-966E-704F-7A8D8574F43F"; + rename -uid "6FE787A0-49AD-5B47-4E1F-AAAC5FC4C5EF"; setAttr ".ihi" 0; setAttr -k off ".v"; setAttr ".ove" yes; @@ -7091,8 +7038,8 @@ createNode nurbsCurve -n "eye_R0_rootShape" -p "eye_R0_root"; 0.25 0 0 -0.25 0 0 ; -createNode nurbsCurve -n "eye_R0_root25Shape" -p "eye_R0_root"; - rename -uid "3F6A4367-47C4-0AE6-608F-9C9B6251F775"; +createNode nurbsCurve -n "eye_R0_root28Shape" -p "eye_R0_root"; + rename -uid "4243ECD9-4752-2A11-C55C-259D6982F4A2"; setAttr ".ihi" 0; setAttr -k off ".v"; setAttr ".ove" yes; @@ -7104,8 +7051,8 @@ createNode nurbsCurve -n "eye_R0_root25Shape" -p "eye_R0_root"; 0 0.25 0 0 -0.25 0 ; -createNode nurbsCurve -n "eye_R0_root26Shape" -p "eye_R0_root"; - rename -uid "3039CA06-4A61-8ECE-688C-898F83B3479C"; +createNode nurbsCurve -n "eye_R0_root29Shape" -p "eye_R0_root"; + rename -uid "C2CB86ED-4E8F-735B-CFCE-629F3AD656C0"; setAttr ".ihi" 0; setAttr -k off ".v"; setAttr ".ove" yes; @@ -7117,8 +7064,8 @@ createNode nurbsCurve -n "eye_R0_root26Shape" -p "eye_R0_root"; 0 0 0.25 0 0 -0.25 ; -createNode nurbsCurve -n "eye_R0_root27Shape" -p "eye_R0_root"; - rename -uid "FF943FDA-4870-5BE1-B4F0-D396FBE1F510"; +createNode nurbsCurve -n "eye_R0_root30Shape" -p "eye_R0_root"; + rename -uid "B9631821-403C-F0E2-71F7-06915F45AE7B"; setAttr ".ihi" 0; setAttr -k off ".v"; setAttr ".ove" yes; @@ -7145,10 +7092,10 @@ createNode nurbsCurve -n "eye_R0_root27Shape" -p "eye_R0_root"; -0.125 -0.125 -0.125 ; createNode transform -n "eye_R0_look" -p "eye_R0_root"; - rename -uid "1DE16E12-4B1B-F386-EB4B-FC9C63640368"; + rename -uid "E0652A61-41C0-B4EF-B860-9EA1A9E1101C"; addAttr -ci true -sn "isGearGuide" -ln "isGearGuide" -dv 1 -min 0 -max 1 -at "bool"; setAttr -k off -cb on ".v"; - setAttr ".t" -type "double3" -4.4408920985006262e-016 -1.0658141036401503e-014 3.7697842257179222 ; + setAttr ".t" -type "double3" -4.4408920985006262e-016 -1.0658141036401503e-014 3.769784225717923 ; setAttr -k off -cb on ".tx"; setAttr -k off -cb on ".ty"; setAttr -k off -cb on ".tz"; @@ -7156,12 +7103,12 @@ createNode transform -n "eye_R0_look" -p "eye_R0_root"; setAttr -k off -cb on ".ry"; setAttr -k off -cb on ".rz"; setAttr -cb on ".ro"; - setAttr ".s" -type "double3" 0.99999999999999878 0.99999999999999978 0.99999999999999944 ; + setAttr ".s" -type "double3" 0.99999999999999856 0.99999999999999978 0.99999999999999944 ; setAttr -k off -cb on ".sx"; setAttr -k off -cb on ".sy"; setAttr -k off -cb on ".sz"; createNode nurbsCurve -n "eye_R0_lookShape" -p "eye_R0_look"; - rename -uid "A85DA388-44A0-50C8-44F1-B087E9646E06"; + rename -uid "0E0D8FE2-4906-A32F-AAA8-2DAD4C5F866D"; setAttr ".ihi" 0; setAttr -k off ".v"; setAttr ".ove" yes; @@ -7173,8 +7120,8 @@ createNode nurbsCurve -n "eye_R0_lookShape" -p "eye_R0_look"; 0.25 0 0 -0.25 0 0 ; -createNode nurbsCurve -n "eye_R0_look25Shape" -p "eye_R0_look"; - rename -uid "68A4ACB1-4053-A9CD-5B2C-06954C3895C4"; +createNode nurbsCurve -n "eye_R0_look28Shape" -p "eye_R0_look"; + rename -uid "27EFCC86-4545-9EB3-E5B7-B8AB6CB561B5"; setAttr ".ihi" 0; setAttr -k off ".v"; setAttr ".ove" yes; @@ -7186,8 +7133,8 @@ createNode nurbsCurve -n "eye_R0_look25Shape" -p "eye_R0_look"; 0 0.25 0 0 -0.25 0 ; -createNode nurbsCurve -n "eye_R0_look26Shape" -p "eye_R0_look"; - rename -uid "556D8521-4238-1DF1-8DFF-93835308DA05"; +createNode nurbsCurve -n "eye_R0_look29Shape" -p "eye_R0_look"; + rename -uid "DB3FEDE8-4AE2-7971-C0C0-A9B79A552573"; setAttr ".ihi" 0; setAttr -k off ".v"; setAttr ".ove" yes; @@ -7199,8 +7146,8 @@ createNode nurbsCurve -n "eye_R0_look26Shape" -p "eye_R0_look"; 0 0 0.25 0 0 -0.25 ; -createNode nurbsCurve -n "eye_R0_look27Shape" -p "eye_R0_look"; - rename -uid "E54288A4-4AFB-88D5-E8FA-75889DE53BD7"; +createNode nurbsCurve -n "eye_R0_look30Shape" -p "eye_R0_look"; + rename -uid "D22D63CF-412A-1F92-C612-979B264BF65B"; setAttr ".ihi" 0; setAttr -k off ".v"; setAttr ".ove" yes; @@ -7217,8 +7164,8 @@ createNode nurbsCurve -n "eye_R0_look27Shape" -p "eye_R0_look"; 0 -0.1875 0 -0.1875 0 0 ; -createNode nurbsCurve -n "eye_R0_look27_0crvShape" -p "eye_R0_look"; - rename -uid "1998F2B7-4D94-A412-3231-0FAC6BD047D6"; +createNode nurbsCurve -n "eye_R0_look30_0crvShape" -p "eye_R0_look"; + rename -uid "B78C4C39-47ED-5F54-CDB7-C5BB6BD1CD76"; setAttr ".ihi" 0; setAttr -k off ".v"; setAttr ".ove" yes; @@ -7235,8 +7182,8 @@ createNode nurbsCurve -n "eye_R0_look27_0crvShape" -p "eye_R0_look"; 0 0 -0.1875 -0.1875 0 0 ; -createNode nurbsCurve -n "eye_R0_look27_1crvShape" -p "eye_R0_look"; - rename -uid "70EA3CA9-4FD1-4AA3-EE5D-5BA5459EF8FE"; +createNode nurbsCurve -n "eye_R0_look30_1crvShape" -p "eye_R0_look"; + rename -uid "96AE0AA2-4DCD-331B-3DF8-FC8F6A0B0BF0"; setAttr ".ihi" 0; setAttr -k off ".v"; setAttr ".ove" yes; @@ -7254,19 +7201,19 @@ createNode nurbsCurve -n "eye_R0_look27_1crvShape" -p "eye_R0_look"; 0 0 -0.1875 ; createNode transform -n "eye_R0_crv" -p "eye_R0_root"; - rename -uid "559F2BF4-49B5-3595-5A4D-319231921232"; + rename -uid "E8824A92-433A-3EE1-23AE-3F97B6F69B74"; setAttr ".ovdt" 1; setAttr ".ove" yes; - setAttr ".t" -type "double3" -0.51425464314723923 -30.070644536323631 -1.585973374993676 ; + setAttr ".t" -type "double3" -0.51425464314723912 -30.070644536323631 -1.585973374993676 ; setAttr ".r" -type "double3" 0 179.99999999999997 0 ; - setAttr ".s" -type "double3" 1.7538799546502182 1.7538799546502193 -1.7538799546502115 ; + setAttr ".s" -type "double3" 1.7538799546502175 1.7538799546502193 -1.7538799546502111 ; createNode nurbsCurve -n "eye_R0_crvShape" -p "eye_R0_crv"; - rename -uid "61C17E23-40ED-ADF5-7A14-A49D82176EAE"; + rename -uid "7C6EBD7B-451B-AC95-2A73-E3BF1D41529A"; setAttr -k off ".v"; setAttr -s 4 ".iog[0].og"; setAttr ".tw" yes; createNode nurbsCurve -n "eye_R0_crvShapeOrig" -p "eye_R0_crv"; - rename -uid "80001035-4060-8B22-CC4C-1D865063EEC4"; + rename -uid "2C4C5F8F-48D5-E770-8B67-1EA329BBFF1F"; setAttr -k off ".v"; setAttr ".io" yes; setAttr ".cc" -type "nurbsCurve" @@ -7277,7 +7224,7 @@ createNode nurbsCurve -n "eye_R0_crvShapeOrig" -p "eye_R0_crv"; 0 0 0 ; createNode transform -n "eye_L0_root" -p "neck_C0_head"; - rename -uid "DE4D24E4-4A9A-F116-550D-F680A87EBD36"; + rename -uid "EDA094F8-4D77-4F5E-32B9-E88D3C2226CB"; addAttr -ci true -sn "isGearGuide" -ln "isGearGuide" -dv 1 -min 0 -max 1 -at "bool"; addAttr -ci true -sn "comp_type" -ln "comp_type" -dt "string"; addAttr -ci true -sn "comp_name" -ln "comp_name" -dt "string"; @@ -7290,9 +7237,9 @@ createNode transform -n "eye_L0_root" -p "neck_C0_head"; -max 2 -en "X:Y:Z" -at "enum"; addAttr -ci true -sn "ikrefarray" -ln "ikrefarray" -dt "string"; addAttr -ci true -sn "useIndex" -ln "useIndex" -min 0 -max 1 -at "bool"; - addAttr -ci true -sn "parentJointIndex" -ln "parentJointIndex" -at "long"; + addAttr -ci true -sn "parentJointIndex" -ln "parentJointIndex" -dv -1 -at "long"; setAttr -k off -cb on ".v"; - setAttr ".t" -type "double3" -1.4961368484464233 0.70921581084615326 0.51425464314724123 ; + setAttr ".t" -type "double3" -1.4961368484464228 0.70921581084614616 0.51425464314724112 ; setAttr -k off -cb on ".tx"; setAttr -k off -cb on ".ty"; setAttr -k off -cb on ".tz"; @@ -7301,7 +7248,7 @@ createNode transform -n "eye_L0_root" -p "neck_C0_head"; setAttr -k off -cb on ".ry"; setAttr -k off -cb on ".rz"; setAttr -cb on ".ro"; - setAttr ".s" -type "double3" 0.99999999999999911 0.99999999999999933 1 ; + setAttr ".s" -type "double3" 0.99999999999999933 0.99999999999999944 1 ; setAttr -k off -cb on ".sx"; setAttr -k off -cb on ".sy"; setAttr -k off -cb on ".sz"; @@ -7313,9 +7260,8 @@ createNode transform -n "eye_L0_root" -p "neck_C0_head"; setAttr ".ctlGrp" -type "string" ""; setAttr -k on ".upVectorDirection" 1; setAttr ".ikrefarray" -type "string" "eyeslook_C0_root"; - setAttr ".parentJointIndex" -1; createNode nurbsCurve -n "eye_L0_rootShape" -p "eye_L0_root"; - rename -uid "C7EFC431-4297-4A76-0F91-BC8770C6D264"; + rename -uid "F0CDA6E8-4E57-C408-6EC7-7AA3FF73FFC2"; setAttr ".ihi" 0; setAttr -k off ".v"; setAttr ".ove" yes; @@ -7327,8 +7273,8 @@ createNode nurbsCurve -n "eye_L0_rootShape" -p "eye_L0_root"; 0.25 0 0 -0.25 0 0 ; -createNode nurbsCurve -n "eye_L0_root25Shape" -p "eye_L0_root"; - rename -uid "7B73CCAE-4D52-2571-566B-97B8D85C19BC"; +createNode nurbsCurve -n "eye_L0_root28Shape" -p "eye_L0_root"; + rename -uid "4DED7A65-4AEB-839D-B1C7-04AC75272E7A"; setAttr ".ihi" 0; setAttr -k off ".v"; setAttr ".ove" yes; @@ -7340,8 +7286,8 @@ createNode nurbsCurve -n "eye_L0_root25Shape" -p "eye_L0_root"; 0 0.25 0 0 -0.25 0 ; -createNode nurbsCurve -n "eye_L0_root26Shape" -p "eye_L0_root"; - rename -uid "61D72841-432B-4A85-5B9A-48A8B651C83C"; +createNode nurbsCurve -n "eye_L0_root29Shape" -p "eye_L0_root"; + rename -uid "F2B05F02-4137-EBD9-2AD0-B4BFD9D4142D"; setAttr ".ihi" 0; setAttr -k off ".v"; setAttr ".ove" yes; @@ -7353,8 +7299,8 @@ createNode nurbsCurve -n "eye_L0_root26Shape" -p "eye_L0_root"; 0 0 0.25 0 0 -0.25 ; -createNode nurbsCurve -n "eye_L0_root27Shape" -p "eye_L0_root"; - rename -uid "405378DE-43CF-C473-1341-5D82EB9F6486"; +createNode nurbsCurve -n "eye_L0_root30Shape" -p "eye_L0_root"; + rename -uid "664F5D65-4540-53D5-5FF5-03BE0B90FE0C"; setAttr ".ihi" 0; setAttr -k off ".v"; setAttr ".ove" yes; @@ -7381,10 +7327,10 @@ createNode nurbsCurve -n "eye_L0_root27Shape" -p "eye_L0_root"; -0.125 -0.125 -0.125 ; createNode transform -n "eye_L0_look" -p "eye_L0_root"; - rename -uid "F3A99926-4C63-E520-1E3B-B19A2EFB37BD"; + rename -uid "7FD4FDC2-4E60-C518-9884-688DA2C441E0"; addAttr -ci true -sn "isGearGuide" -ln "isGearGuide" -dv 1 -min 0 -max 1 -at "bool"; setAttr -k off -cb on ".v"; - setAttr ".t" -type "double3" 1.1102230246251565e-016 -1.7763568394002505e-014 3.7697842257179146 ; + setAttr ".t" -type "double3" 1.1102230246251565e-016 -1.7763568394002505e-014 3.7697842257179142 ; setAttr -k off -cb on ".tx"; setAttr -k off -cb on ".ty"; setAttr -k off -cb on ".tz"; @@ -7392,12 +7338,12 @@ createNode transform -n "eye_L0_look" -p "eye_L0_root"; setAttr -k off -cb on ".ry"; setAttr -k off -cb on ".rz"; setAttr -cb on ".ro"; - setAttr ".s" -type "double3" 0.99999999999999689 0.99999999999999944 0.99999999999999745 ; + setAttr ".s" -type "double3" 0.99999999999999645 0.99999999999999944 0.99999999999999722 ; setAttr -k off -cb on ".sx"; setAttr -k off -cb on ".sy"; setAttr -k off -cb on ".sz"; createNode nurbsCurve -n "eye_L0_lookShape" -p "eye_L0_look"; - rename -uid "26F5A2B9-4A4A-A9A6-942C-9E86D058313B"; + rename -uid "4D766FEE-4B7B-1921-74C5-4D9D06036010"; setAttr ".ihi" 0; setAttr -k off ".v"; setAttr ".ove" yes; @@ -7409,8 +7355,8 @@ createNode nurbsCurve -n "eye_L0_lookShape" -p "eye_L0_look"; 0.25 0 0 -0.25 0 0 ; -createNode nurbsCurve -n "eye_L0_look25Shape" -p "eye_L0_look"; - rename -uid "B4CC0B5A-42B3-F266-DF9D-F1B52B325C32"; +createNode nurbsCurve -n "eye_L0_look28Shape" -p "eye_L0_look"; + rename -uid "8CA44C0A-48FF-3F70-1F9C-81843DADB9CC"; setAttr ".ihi" 0; setAttr -k off ".v"; setAttr ".ove" yes; @@ -7422,8 +7368,8 @@ createNode nurbsCurve -n "eye_L0_look25Shape" -p "eye_L0_look"; 0 0.25 0 0 -0.25 0 ; -createNode nurbsCurve -n "eye_L0_look26Shape" -p "eye_L0_look"; - rename -uid "88F2F1AA-4FE1-B948-A70C-83B9FCC67013"; +createNode nurbsCurve -n "eye_L0_look29Shape" -p "eye_L0_look"; + rename -uid "4D00E227-4613-E47C-CAD0-119765347F40"; setAttr ".ihi" 0; setAttr -k off ".v"; setAttr ".ove" yes; @@ -7435,8 +7381,8 @@ createNode nurbsCurve -n "eye_L0_look26Shape" -p "eye_L0_look"; 0 0 0.25 0 0 -0.25 ; -createNode nurbsCurve -n "eye_L0_look27Shape" -p "eye_L0_look"; - rename -uid "23744931-4B38-F395-5267-A68521D06E5A"; +createNode nurbsCurve -n "eye_L0_look30Shape" -p "eye_L0_look"; + rename -uid "E73479A6-4484-E4F0-46BB-DF8183FC38AD"; setAttr ".ihi" 0; setAttr -k off ".v"; setAttr ".ove" yes; @@ -7453,8 +7399,8 @@ createNode nurbsCurve -n "eye_L0_look27Shape" -p "eye_L0_look"; 0 -0.1875 0 -0.1875 0 0 ; -createNode nurbsCurve -n "eye_L0_look27_0crvShape" -p "eye_L0_look"; - rename -uid "0D1EC593-4AFE-21C2-AA88-A9A49B7C0975"; +createNode nurbsCurve -n "eye_L0_look30_0crvShape" -p "eye_L0_look"; + rename -uid "16C4173F-4C43-5342-C2FF-B0BD408CD1EF"; setAttr ".ihi" 0; setAttr -k off ".v"; setAttr ".ove" yes; @@ -7471,8 +7417,8 @@ createNode nurbsCurve -n "eye_L0_look27_0crvShape" -p "eye_L0_look"; 0 0 -0.1875 -0.1875 0 0 ; -createNode nurbsCurve -n "eye_L0_look27_1crvShape" -p "eye_L0_look"; - rename -uid "7AA214E3-40BC-12F3-E9A6-B7BA2CF46AB5"; +createNode nurbsCurve -n "eye_L0_look30_1crvShape" -p "eye_L0_look"; + rename -uid "C2E6AF09-43DA-304F-C2CE-16BDD12902A5"; setAttr ".ihi" 0; setAttr -k off ".v"; setAttr ".ove" yes; @@ -7490,18 +7436,18 @@ createNode nurbsCurve -n "eye_L0_look27_1crvShape" -p "eye_L0_look"; 0 0 -0.1875 ; createNode transform -n "eye_L0_crv" -p "eye_L0_root"; - rename -uid "34CD863D-40B9-99CF-4C49-9AB042451179"; + rename -uid "0710EAD5-4CBF-B059-6762-44B8B1B63150"; setAttr ".ovdt" 1; setAttr ".ove" yes; - setAttr ".t" -type "double3" -0.51425464314724534 -30.070644536323631 -1.5859733749936722 ; - setAttr ".s" -type "double3" 1.7538799546502155 1.7538799546502193 1.7538799546502086 ; + setAttr ".t" -type "double3" -0.51425464314724501 -30.070644536323631 -1.5859733749936715 ; + setAttr ".s" -type "double3" 1.7538799546502144 1.7538799546502193 1.753879954650208 ; createNode nurbsCurve -n "eye_L0_crvShape" -p "eye_L0_crv"; - rename -uid "2F7439F7-4E51-190C-DD95-B39D88DBB8C1"; + rename -uid "7FF1F799-4598-EA6C-FCB4-2088527B8461"; setAttr -k off ".v"; setAttr -s 4 ".iog[0].og"; setAttr ".tw" yes; createNode nurbsCurve -n "eye_L0_crvShapeOrig" -p "eye_L0_crv"; - rename -uid "8D7F6464-487C-1731-DE44-8899BDF49C4A"; + rename -uid "D59DB5DA-49A1-572C-673B-2A843358BA13"; setAttr -k off ".v"; setAttr ".io" yes; setAttr ".cc" -type "nurbsCurve" @@ -7512,10 +7458,10 @@ createNode nurbsCurve -n "eye_L0_crvShapeOrig" -p "eye_L0_crv"; 0 0 0 ; createNode transform -n "neck_C0_tan1" -p "neck_C0_neck"; - rename -uid "0DC6F0A8-4001-3187-66BB-F6A2D19FC1E3"; + rename -uid "F0121DBB-49A5-C22F-DC46-329325A80A5F"; addAttr -ci true -sn "isGearGuide" -ln "isGearGuide" -dv 1 -min 0 -max 1 -at "bool"; setAttr -k off -cb on ".v"; - setAttr ".t" -type "double3" 0.09787009621156309 -0.34322132772767233 -2.0300963192813322e-017 ; + setAttr ".t" -type "double3" 0.097870096211563007 -0.34322132772766523 -2.0300963192813322e-017 ; setAttr -k off -cb on ".tx"; setAttr -k off -cb on ".ty"; setAttr -k off -cb on ".tz"; @@ -7523,12 +7469,12 @@ createNode transform -n "neck_C0_tan1" -p "neck_C0_neck"; setAttr -k off -cb on ".ry"; setAttr -k off -cb on ".rz"; setAttr -cb on ".ro"; - setAttr ".s" -type "double3" 1.0000000000000002 1.0000000000000002 1.0000000000000018 ; + setAttr ".s" -type "double3" 1.0000000000000004 1.0000000000000002 1.0000000000000018 ; setAttr -k off -cb on ".sx"; setAttr -k off -cb on ".sy"; setAttr -k off -cb on ".sz"; createNode nurbsCurve -n "neck_C0_tanShape1" -p "neck_C0_tan1"; - rename -uid "97F823CA-40AD-AC8F-9586-AA8189F0B571"; + rename -uid "58BF6E9E-4BB5-92D9-59BB-998F95B6F1F9"; setAttr ".ihi" 0; setAttr -k off ".v"; setAttr ".ove" yes; @@ -7540,8 +7486,8 @@ createNode nurbsCurve -n "neck_C0_tanShape1" -p "neck_C0_tan1"; 0.25 0 0 -0.25 0 0 ; -createNode nurbsCurve -n "neck_C0_tanShape4" -p "neck_C0_tan1"; - rename -uid "1F7F3AC3-4E1F-966E-5240-4B94ED8DB15F"; +createNode nurbsCurve -n "neck_C0_tanShape20" -p "neck_C0_tan1"; + rename -uid "09EAF420-4E4A-4A15-96F1-818CB75322ED"; setAttr ".ihi" 0; setAttr -k off ".v"; setAttr ".ove" yes; @@ -7553,8 +7499,8 @@ createNode nurbsCurve -n "neck_C0_tanShape4" -p "neck_C0_tan1"; 0 0.25 0 0 -0.25 0 ; -createNode nurbsCurve -n "neck_C0_tanShape5" -p "neck_C0_tan1"; - rename -uid "E944631C-4255-05D2-C6A4-B1B32BA02EF4"; +createNode nurbsCurve -n "neck_C0_tanShape21" -p "neck_C0_tan1"; + rename -uid "8C95E0A1-4C5E-2BA7-6FEC-43A35131EFF3"; setAttr ".ihi" 0; setAttr -k off ".v"; setAttr ".ove" yes; @@ -7566,8 +7512,8 @@ createNode nurbsCurve -n "neck_C0_tanShape5" -p "neck_C0_tan1"; 0 0 0.25 0 0 -0.25 ; -createNode nurbsCurve -n "neck_C0_tanShape6" -p "neck_C0_tan1"; - rename -uid "3A277631-4DB2-2897-65FE-EFA64E6C4088"; +createNode nurbsCurve -n "neck_C0_tanShape22" -p "neck_C0_tan1"; + rename -uid "5EE996D4-491B-725D-9E08-3C9694954819"; setAttr ".ihi" 0; setAttr -k off ".v"; setAttr ".ove" yes; @@ -7584,8 +7530,8 @@ createNode nurbsCurve -n "neck_C0_tanShape6" -p "neck_C0_tan1"; 0 -0.1875 0 -0.1875 0 0 ; -createNode nurbsCurve -n "neck_C0_tan18_0crvShape" -p "neck_C0_tan1"; - rename -uid "A7055370-4D75-E138-B63C-C2A8D4A2CA77"; +createNode nurbsCurve -n "neck_C0_tan20_0crvShape" -p "neck_C0_tan1"; + rename -uid "3B2F4A47-4924-9B2E-076C-518E62385F79"; setAttr ".ihi" 0; setAttr -k off ".v"; setAttr ".ove" yes; @@ -7602,8 +7548,8 @@ createNode nurbsCurve -n "neck_C0_tan18_0crvShape" -p "neck_C0_tan1"; 0 0 -0.1875 -0.1875 0 0 ; -createNode nurbsCurve -n "neck_C0_tan18_1crvShape" -p "neck_C0_tan1"; - rename -uid "2602A11E-46F5-B83E-2756-30ABD691BBDB"; +createNode nurbsCurve -n "neck_C0_tan20_1crvShape" -p "neck_C0_tan1"; + rename -uid "5AE2BFA7-4B13-1732-4F6B-2CB9919ADA48"; setAttr ".ihi" 0; setAttr -k off ".v"; setAttr ".ove" yes; @@ -7621,19 +7567,19 @@ createNode nurbsCurve -n "neck_C0_tan18_1crvShape" -p "neck_C0_tan1"; 0 0 -0.1875 ; createNode transform -n "neck_C0_head_crv" -p "neck_C0_neck"; - rename -uid "C3CFB100-4146-0F51-D6D6-77844212D5E0"; + rename -uid "0654AE50-4535-0C92-C868-2081C527B5AE"; setAttr ".ovdt" 1; setAttr ".ove" yes; - setAttr ".t" -type "double3" 0.08983652654724944 -29.261428725477426 -4.0684386981538073e-015 ; + setAttr ".t" -type "double3" 0.089836526547249329 -29.261428725477415 -4.0684386981538041e-015 ; setAttr ".r" -type "double3" 0 -89.999999999999986 0 ; - setAttr ".s" -type "double3" 1.753879954650218 1.7538799546502188 1.7538799546502095 ; + setAttr ".s" -type "double3" 1.7538799546502168 1.7538799546502186 1.7538799546502091 ; createNode nurbsCurve -n "neck_C0_head_crvShape" -p "neck_C0_head_crv"; - rename -uid "BFBEB0CD-431F-2113-75D7-11952C8CDD81"; + rename -uid "25ABB189-4BB4-EF41-C281-F9A6E92FB623"; setAttr -k off ".v"; setAttr -s 4 ".iog[0].og"; setAttr ".tw" yes; createNode nurbsCurve -n "neck_C0_head_crvShapeOrig" -p "neck_C0_head_crv"; - rename -uid "EF7191B4-4324-82F3-7685-3C8281DCEEE6"; + rename -uid "D921A649-41CC-7629-48CC-27AF008B1670"; setAttr -k off ".v"; setAttr ".io" yes; setAttr ".cc" -type "nurbsCurve" @@ -7645,10 +7591,10 @@ createNode nurbsCurve -n "neck_C0_head_crvShapeOrig" -p "neck_C0_head_crv"; 0 0 0 ; createNode transform -n "neck_C0_tan0" -p "neck_C0_root"; - rename -uid "C3C830E0-45A2-E501-EDE8-E489D631739A"; + rename -uid "D44527DB-49EF-E254-B033-E6A2BD9ACCB0"; addAttr -ci true -sn "isGearGuide" -ln "isGearGuide" -dv 1 -min 0 -max 1 -at "bool"; setAttr -k off -cb on ".v"; - setAttr ".t" -type "double3" -0.076579783198171825 0.45329667709497912 3.850870476136893e-017 ; + setAttr ".t" -type "double3" -0.076579783198171825 0.45329667709497912 3.8508704761368141e-017 ; setAttr -k off -cb on ".tx"; setAttr -k off -cb on ".ty"; setAttr -k off -cb on ".tz"; @@ -7656,12 +7602,12 @@ createNode transform -n "neck_C0_tan0" -p "neck_C0_root"; setAttr -k off -cb on ".ry"; setAttr -k off -cb on ".rz"; setAttr -cb on ".ro"; - setAttr ".s" -type "double3" 0.99999999999999645 0.99999999999999678 0.99999999999999956 ; + setAttr ".s" -type "double3" 0.999999999999996 0.99999999999999623 0.99999999999999956 ; setAttr -k off -cb on ".sx"; setAttr -k off -cb on ".sy"; setAttr -k off -cb on ".sz"; createNode nurbsCurve -n "neck_C0_tanShape0" -p "neck_C0_tan0"; - rename -uid "CBFD340A-4B3C-505E-9A06-31A36E275572"; + rename -uid "910E5454-4588-B969-0C66-C4AFE319EA88"; setAttr ".ihi" 0; setAttr -k off ".v"; setAttr ".ove" yes; @@ -7673,8 +7619,8 @@ createNode nurbsCurve -n "neck_C0_tanShape0" -p "neck_C0_tan0"; 0.25 0 0 -0.25 0 0 ; -createNode nurbsCurve -n "neck_C0_tanShape1" -p "neck_C0_tan0"; - rename -uid "F5581949-4F97-1E37-696B-2DB31186F903"; +createNode nurbsCurve -n "neck_C0_tanShape19" -p "neck_C0_tan0"; + rename -uid "926AB24F-4E81-3384-1823-249E8CBE6D1E"; setAttr ".ihi" 0; setAttr -k off ".v"; setAttr ".ove" yes; @@ -7686,8 +7632,8 @@ createNode nurbsCurve -n "neck_C0_tanShape1" -p "neck_C0_tan0"; 0 0.25 0 0 -0.25 0 ; -createNode nurbsCurve -n "neck_C0_tanShape2" -p "neck_C0_tan0"; - rename -uid "C92D2E41-46E4-BD1C-D2FD-42B0B40513E1"; +createNode nurbsCurve -n "neck_C0_tanShape20" -p "neck_C0_tan0"; + rename -uid "37E434CC-48ED-4D72-0AAD-CFA5BE476453"; setAttr ".ihi" 0; setAttr -k off ".v"; setAttr ".ove" yes; @@ -7699,8 +7645,8 @@ createNode nurbsCurve -n "neck_C0_tanShape2" -p "neck_C0_tan0"; 0 0 0.25 0 0 -0.25 ; -createNode nurbsCurve -n "neck_C0_tanShape3" -p "neck_C0_tan0"; - rename -uid "73725F34-4C0B-1BB1-E76C-C09D175CD801"; +createNode nurbsCurve -n "neck_C0_tanShape21" -p "neck_C0_tan0"; + rename -uid "71371F31-4E74-DF26-B155-52BCFAC02E47"; setAttr ".ihi" 0; setAttr -k off ".v"; setAttr ".ove" yes; @@ -7717,8 +7663,8 @@ createNode nurbsCurve -n "neck_C0_tanShape3" -p "neck_C0_tan0"; 0 -0.1875 0 -0.1875 0 0 ; -createNode nurbsCurve -n "neck_C0_tan17_0crvShape0" -p "neck_C0_tan0"; - rename -uid "3F31F080-4E66-DE82-AEEF-D4B991686F24"; +createNode nurbsCurve -n "neck_C0_tan19_0crvShape" -p "neck_C0_tan0"; + rename -uid "94E5732C-415A-688E-D751-B4BBD318FC5B"; setAttr ".ihi" 0; setAttr -k off ".v"; setAttr ".ove" yes; @@ -7735,8 +7681,8 @@ createNode nurbsCurve -n "neck_C0_tan17_0crvShape0" -p "neck_C0_tan0"; 0 0 -0.1875 -0.1875 0 0 ; -createNode nurbsCurve -n "neck_C0_tan17_1crvShape0" -p "neck_C0_tan0"; - rename -uid "EE545354-47C0-6F1C-1067-65B09883B096"; +createNode nurbsCurve -n "neck_C0_tan19_1crvShape" -p "neck_C0_tan0"; + rename -uid "2C837AA3-46BD-8BDE-3AD5-E4B5C93A6309"; setAttr ".ihi" 0; setAttr -k off ".v"; setAttr ".ove" yes; @@ -7754,8 +7700,8 @@ createNode nurbsCurve -n "neck_C0_tan17_1crvShape0" -p "neck_C0_tan0"; 0 0 -0.1875 ; createNode transform -n "neck_C0_blade" -p "neck_C0_root"; - rename -uid "92C988AB-4528-9601-E5B0-DE9293804EAF"; - addAttr -ci true -k true -sn "bladeRollOffset" -ln "bladeRollOffset" -at "float"; + rename -uid "DC717246-432F-EE6C-BDD6-938AD66365A3"; + addAttr -ci true -k true -sn "bladeRollOffset" -ln "bladeRollOffset" -dv 360 -at "float"; setAttr -l on -k off -cb on ".v"; setAttr -k off -cb on ".tx"; setAttr -k off -cb on ".ty"; @@ -7764,13 +7710,13 @@ createNode transform -n "neck_C0_blade" -p "neck_C0_root"; setAttr -k off -cb on ".ry"; setAttr -k off -cb on ".rz"; setAttr -cb on ".ro"; - setAttr ".s" -type "double3" 1.6711445512932508 1.6711445512932459 1.6711445512932432 ; + setAttr ".s" -type "double3" 1.6711445512932501 1.671144551293245 1.6711445512932428 ; setAttr -l on -k off -cb on ".sx"; setAttr -l on -k off -cb on ".sy"; setAttr -l on -k off -cb on ".sz"; - setAttr -k on ".bladeRollOffset" 360; + setAttr -k on ".bladeRollOffset"; createNode nurbsCurve -n "neck_C0_bladeShape" -p "neck_C0_blade"; - rename -uid "EDE0BEEC-4887-B887-D64C-1C9777C2D67F"; + rename -uid "21658D5F-4454-0036-0682-AF9D5DCFFFD0"; setAttr ".ihi" 0; setAttr -k off ".v"; setAttr ".ove" yes; @@ -7780,12 +7726,12 @@ createNode nurbsCurve -n "neck_C0_bladeShape" -p "neck_C0_blade"; 4 0 1 2 3 4 0 0 0 - 0.35903536862546165 0 0 - 0 0.11967845620848722 0 + 0.35903536862546187 0 0 + 0 0.11967845620848729 0 0 0 0 ; -createNode aimConstraint -n "neck_C0_blade_aimConstraint9" -p "neck_C0_blade"; - rename -uid "7C07A2C2-433D-5BD0-E462-5F909810E43E"; +createNode aimConstraint -n "neck_C0_blade_aimConstraint10" -p "neck_C0_blade"; + rename -uid "DCDAC093-4E74-2047-5057-FD8F24F20956"; addAttr -dcb 0 -ci true -sn "w0" -ln "neck_C0_tan0W0" -dv 1 -at "double"; setAttr -k on ".nds"; setAttr -k off ".v"; @@ -7800,11 +7746,11 @@ createNode aimConstraint -n "neck_C0_blade_aimConstraint9" -p "neck_C0_blade"; setAttr -k off ".sz"; setAttr ".erp" yes; setAttr ".wut" 2; - setAttr ".o" -type "double3" 360 0 359.99999999999977 ; - setAttr ".rsrr" -type "double3" 540 2.5424100276768916e-029 459.5889880226357 ; + setAttr ".o" -type "double3" 360 0 359.9999999999996 ; + setAttr ".rsrr" -type "double3" 540 5.2260650568913885e-029 459.58898802263559 ; setAttr -k on ".w0"; -createNode pointConstraint -n "neck_C0_blade_pointConstraint9" -p "neck_C0_blade"; - rename -uid "9A4DF24D-4B54-724E-0926-B4BD63827A18"; +createNode pointConstraint -n "neck_C0_blade_pointConstraint10" -p "neck_C0_blade"; + rename -uid "0766E5B3-40F1-B6B9-9673-4C930E0656D3"; addAttr -dcb 0 -ci true -k true -sn "w0" -ln "neck_C0_rootW0" -dv 1 -min 0 -at "double"; setAttr -k on ".nds"; setAttr -k off ".v"; @@ -7818,22 +7764,22 @@ createNode pointConstraint -n "neck_C0_blade_pointConstraint9" -p "neck_C0_blade setAttr -k off ".sy"; setAttr -k off ".sz"; setAttr ".erp" yes; - setAttr ".rst" -type "double3" 0 -3.5527136788005009e-015 0 ; + setAttr ".rst" -type "double3" 1.1102230246251565e-016 3.5527136788005009e-015 0 ; setAttr -k on ".w0"; createNode transform -n "neck_C0_neck_crv" -p "neck_C0_root"; - rename -uid "9C45F6CD-4DDC-F944-3C2A-06B6A76B3F07"; + rename -uid "D7CA43FE-4C66-D72C-C9B2-3CBAE3FE0EE3"; setAttr ".ovdt" 1; setAttr ".ove" yes; - setAttr ".t" -type "double3" -0.57828081326916192 -26.793934099519543 -3.9146096093576519e-015 ; + setAttr ".t" -type "double3" -0.5782808132691617 -26.793934099519529 -3.9146096093576503e-015 ; setAttr ".r" -type "double3" 0 -89.999999999999986 0 ; - setAttr ".s" -type "double3" 1.7538799546502168 1.7538799546502126 1.7538799546502031 ; + setAttr ".s" -type "double3" 1.7538799546502162 1.753879954650212 1.7538799546502017 ; createNode nurbsCurve -n "neck_C0_neck_crvShape" -p "neck_C0_neck_crv"; - rename -uid "A12AABDA-41D0-4CF8-10F4-31BFDD7AF857"; + rename -uid "B495D211-4560-B45D-B8A9-818CFC9E72E3"; setAttr -k off ".v"; setAttr -s 4 ".iog[0].og"; setAttr ".tw" yes; createNode nurbsCurve -n "neck_C0_neck_crvShapeOrig" -p "neck_C0_neck_crv"; - rename -uid "6ED20CF1-4A81-0CE1-A795-E88AAE9560A5"; + rename -uid "F77F6A54-4A5D-32C7-61CC-A9AE1A29EADC"; setAttr -k off ".v"; setAttr ".io" yes; setAttr ".cc" -type "nurbsCurve" @@ -7846,7 +7792,7 @@ createNode nurbsCurve -n "neck_C0_neck_crvShapeOrig" -p "neck_C0_neck_crv"; 0 0 0 ; createNode transform -n "shoulder_R0_root" -p "spine_C0_eff"; - rename -uid "23F761FE-4FBD-E1F5-9D83-168AB720C405"; + rename -uid "BABED455-4A07-D0A3-901E-7EB7C2272278"; addAttr -ci true -sn "isGearGuide" -ln "isGearGuide" -dv 1 -min 0 -max 1 -at "bool"; addAttr -ci true -sn "comp_type" -ln "comp_type" -dt "string"; addAttr -ci true -sn "comp_name" -ln "comp_name" -dt "string"; @@ -7857,9 +7803,9 @@ createNode transform -n "shoulder_R0_root" -p "spine_C0_eff"; addAttr -ci true -sn "ctlGrp" -ln "ctlGrp" -dt "string"; addAttr -ci true -sn "refArray" -ln "refArray" -dt "string"; addAttr -ci true -sn "useIndex" -ln "useIndex" -min 0 -max 1 -at "bool"; - addAttr -ci true -sn "parentJointIndex" -ln "parentJointIndex" -at "long"; + addAttr -ci true -sn "parentJointIndex" -ln "parentJointIndex" -dv -1 -at "long"; setAttr -k off -cb on ".v"; - setAttr ".t" -type "double3" 1.7395848890977366 -0.01685304366100332 0.11673327753265017 ; + setAttr ".t" -type "double3" 1.7395848890977383 -0.016853043661003375 0.1167332775326502 ; setAttr -k off -cb on ".tx"; setAttr -k off -cb on ".ty"; setAttr -k off -cb on ".tz"; @@ -7868,7 +7814,7 @@ createNode transform -n "shoulder_R0_root" -p "spine_C0_eff"; setAttr -k off -cb on ".ry"; setAttr -k off -cb on ".rz"; setAttr -cb on ".ro"; - setAttr ".s" -type "double3" 1.0000000000000018 1.0000000000000027 -0.99999999999999933 ; + setAttr ".s" -type "double3" 1.0000000000000022 1.0000000000000029 -0.99999999999999956 ; setAttr -k off -cb on ".sx"; setAttr -k off -cb on ".sy"; setAttr -k off -cb on ".sz"; @@ -7879,9 +7825,8 @@ createNode transform -n "shoulder_R0_root" -p "spine_C0_eff"; setAttr ".ui_host" -type "string" "armUI_R0_root"; setAttr ".ctlGrp" -type "string" ""; setAttr ".refArray" -type "string" "shoulder_R0_root,local_C0_root,body_C0_root,spine_C0_eff,global_C0_root"; - setAttr ".parentJointIndex" -1; createNode nurbsCurve -n "shoulder_R0_rootShape" -p "shoulder_R0_root"; - rename -uid "701C6D6A-46AB-4A92-950C-ADB7E20AB16B"; + rename -uid "297CEB26-4D2F-AC1F-521C-92A307991DAD"; setAttr ".ihi" 0; setAttr -k off ".v"; setAttr ".ove" yes; @@ -7893,8 +7838,8 @@ createNode nurbsCurve -n "shoulder_R0_rootShape" -p "shoulder_R0_root"; 0.25 0 0 -0.25 0 0 ; -createNode nurbsCurve -n "shoulder_R0_root1Shape" -p "shoulder_R0_root"; - rename -uid "9D189CF1-4BC5-7E1B-BB0B-72BD81D901B1"; +createNode nurbsCurve -n "shoulder_R0_root4Shape" -p "shoulder_R0_root"; + rename -uid "24E326F4-40E6-E5D4-6763-968EE57984E2"; setAttr ".ihi" 0; setAttr -k off ".v"; setAttr ".ove" yes; @@ -7906,8 +7851,8 @@ createNode nurbsCurve -n "shoulder_R0_root1Shape" -p "shoulder_R0_root"; 0 0.25 0 0 -0.25 0 ; -createNode nurbsCurve -n "shoulder_R0_root2Shape" -p "shoulder_R0_root"; - rename -uid "63A3520A-4EC0-E199-B4BB-E58FE07A2514"; +createNode nurbsCurve -n "shoulder_R0_root5Shape" -p "shoulder_R0_root"; + rename -uid "DC1779D0-4A1F-2DE0-176F-BEBF89CAC3D1"; setAttr ".ihi" 0; setAttr -k off ".v"; setAttr ".ove" yes; @@ -7919,8 +7864,8 @@ createNode nurbsCurve -n "shoulder_R0_root2Shape" -p "shoulder_R0_root"; 0 0 0.25 0 0 -0.25 ; -createNode nurbsCurve -n "shoulder_R0_root3Shape" -p "shoulder_R0_root"; - rename -uid "6CE9BA31-487A-FFC4-8341-B084347E9990"; +createNode nurbsCurve -n "shoulder_R0_root6Shape" -p "shoulder_R0_root"; + rename -uid "BFBCC216-4D29-8FCE-A197-45AF668354DB"; setAttr ".ihi" 0; setAttr -k off ".v"; setAttr ".ove" yes; @@ -7947,10 +7892,10 @@ createNode nurbsCurve -n "shoulder_R0_root3Shape" -p "shoulder_R0_root"; -0.125 -0.125 -0.125 ; createNode transform -n "shoulder_R0_tip" -p "shoulder_R0_root"; - rename -uid "7751FB3A-4868-AE6D-1222-56BB1C8C4036"; + rename -uid "C0337023-4C65-22F4-40E5-46920F3EF77C"; addAttr -ci true -sn "isGearGuide" -ln "isGearGuide" -dv 1 -min 0 -max 1 -at "bool"; setAttr -k off -cb on ".v"; - setAttr ".t" -type "double3" 0.33303929285645495 -0.91350954729966949 -1.5239746815175859 ; + setAttr ".t" -type "double3" 0.33303929285645495 -0.91350954729966938 -1.5239746815175856 ; setAttr -k off -cb on ".tx"; setAttr -k off -cb on ".ty"; setAttr -k off -cb on ".tz"; @@ -7958,12 +7903,12 @@ createNode transform -n "shoulder_R0_tip" -p "shoulder_R0_root"; setAttr -k off -cb on ".ry"; setAttr -k off -cb on ".rz"; setAttr -cb on ".ro"; - setAttr ".s" -type "double3" 0.99999999999999856 0.99999999999999611 0.99999999999999889 ; + setAttr ".s" -type "double3" 0.99999999999999845 0.99999999999999589 0.99999999999999878 ; setAttr -k off -cb on ".sx"; setAttr -k off -cb on ".sy"; setAttr -k off -cb on ".sz"; createNode nurbsCurve -n "shoulder_R0_tipShape" -p "shoulder_R0_tip"; - rename -uid "36597589-4503-1853-2E5A-0392F0063D8C"; + rename -uid "0E3CF373-4FBB-BAC4-320C-2D9E0304F4CA"; setAttr ".ihi" 0; setAttr -k off ".v"; setAttr ".ove" yes; @@ -7975,8 +7920,8 @@ createNode nurbsCurve -n "shoulder_R0_tipShape" -p "shoulder_R0_tip"; 0.25 0 0 -0.25 0 0 ; -createNode nurbsCurve -n "shoulder_R0_tip1Shape" -p "shoulder_R0_tip"; - rename -uid "6BB516A1-403E-ABCB-F6DC-9E8D4149AF2C"; +createNode nurbsCurve -n "shoulder_R0_tip4Shape" -p "shoulder_R0_tip"; + rename -uid "08F44BA0-468F-65A2-C4FA-339E265ADB9D"; setAttr ".ihi" 0; setAttr -k off ".v"; setAttr ".ove" yes; @@ -7988,8 +7933,8 @@ createNode nurbsCurve -n "shoulder_R0_tip1Shape" -p "shoulder_R0_tip"; 0 0.25 0 0 -0.25 0 ; -createNode nurbsCurve -n "shoulder_R0_tip2Shape" -p "shoulder_R0_tip"; - rename -uid "960A5C48-434C-E8F7-88C4-8B99326C8917"; +createNode nurbsCurve -n "shoulder_R0_tip5Shape" -p "shoulder_R0_tip"; + rename -uid "F14BB49D-4875-A8BF-0022-B59B8CAF15C5"; setAttr ".ihi" 0; setAttr -k off ".v"; setAttr ".ove" yes; @@ -8001,8 +7946,8 @@ createNode nurbsCurve -n "shoulder_R0_tip2Shape" -p "shoulder_R0_tip"; 0 0 0.25 0 0 -0.25 ; -createNode nurbsCurve -n "shoulder_R0_tip3Shape" -p "shoulder_R0_tip"; - rename -uid "384BFE80-4193-A87F-235E-D1A67C6EE269"; +createNode nurbsCurve -n "shoulder_R0_tip6Shape" -p "shoulder_R0_tip"; + rename -uid "47796A86-4153-15F5-9736-DA866FB99F9F"; setAttr ".ihi" 0; setAttr -k off ".v"; setAttr ".ove" yes; @@ -8019,8 +7964,8 @@ createNode nurbsCurve -n "shoulder_R0_tip3Shape" -p "shoulder_R0_tip"; 0 -0.1875 0 -0.1875 0 0 ; -createNode nurbsCurve -n "shoulder_R0_tip3_0crvShape" -p "shoulder_R0_tip"; - rename -uid "E1C63C87-4341-B94C-AC0B-9FAC39AF7368"; +createNode nurbsCurve -n "shoulder_R0_tip6_0crvShape" -p "shoulder_R0_tip"; + rename -uid "C599754E-448E-FEB8-8549-938B6315F7C9"; setAttr ".ihi" 0; setAttr -k off ".v"; setAttr ".ove" yes; @@ -8037,8 +7982,8 @@ createNode nurbsCurve -n "shoulder_R0_tip3_0crvShape" -p "shoulder_R0_tip"; 0 0 -0.1875 -0.1875 0 0 ; -createNode nurbsCurve -n "shoulder_R0_tip3_1crvShape" -p "shoulder_R0_tip"; - rename -uid "3D112D3C-452D-F515-C365-58B341BB0ABC"; +createNode nurbsCurve -n "shoulder_R0_tip6_1crvShape" -p "shoulder_R0_tip"; + rename -uid "D590A9EE-40E5-A504-A1CC-09BE5E2624B5"; setAttr ".ihi" 0; setAttr -k off ".v"; setAttr ".ove" yes; @@ -8056,7 +8001,7 @@ createNode nurbsCurve -n "shoulder_R0_tip3_1crvShape" -p "shoulder_R0_tip"; 0 0 -0.1875 ; createNode transform -n "arm_R0_root" -p "shoulder_R0_tip"; - rename -uid "83547327-4491-A88F-401B-3D8BC02A1D2A"; + rename -uid "8A7FF4CF-420E-31D4-C79F-17A9CAE1779E"; addAttr -ci true -sn "isGearGuide" -ln "isGearGuide" -dv 1 -min 0 -max 1 -at "bool"; addAttr -ci true -sn "comp_type" -ln "comp_type" -dt "string"; addAttr -ci true -sn "comp_name" -ln "comp_name" -dt "string"; @@ -8069,49 +8014,43 @@ createNode transform -n "arm_R0_root" -p "shoulder_R0_tip"; addAttr -ci true -sn "ikrefarray" -ln "ikrefarray" -dt "string"; addAttr -ci true -sn "upvrefarray" -ln "upvrefarray" -dt "string"; addAttr -ci true -sn "pinrefarray" -ln "pinrefarray" -dt "string"; - addAttr -ci true -sn "maxstretch" -ln "maxstretch" -dv 1 -min 1 -at "double"; - addAttr -ci true -sn "ikTR" -ln "ikTR" -min 0 -max 1 -at "bool"; - addAttr -ci true -sn "mirrorMid" -ln "mirrorMid" -min 0 -max 1 -at "bool"; + addAttr -ci true -sn "maxstretch" -ln "maxstretch" -dv 1.5 -min 1 -at "double"; + addAttr -ci true -sn "ikTR" -ln "ikTR" -dv 1 -min 0 -max 1 -at "bool"; + addAttr -ci true -sn "mirrorMid" -ln "mirrorMid" -dv 1 -min 0 -max 1 -at "bool"; addAttr -ci true -sn "mirrorIK" -ln "mirrorIK" -min 0 -max 1 -at "bool"; - addAttr -ci true -sn "div0" -ln "div0" -dv 1 -min 1 -at "long"; - addAttr -ci true -sn "div1" -ln "div1" -dv 1 -min 1 -at "long"; + addAttr -ci true -sn "div0" -ln "div0" -dv 2 -min 1 -at "long"; + addAttr -ci true -sn "div1" -ln "div1" -dv 2 -min 1 -at "long"; addAttr -ci true -k true -sn "st_profile" -ln "st_profile" -at "double"; addAttr -ci true -k true -sn "sq_profile" -ln "sq_profile" -at "double"; addAttr -ci true -sn "useIndex" -ln "useIndex" -min 0 -max 1 -at "bool"; - addAttr -ci true -sn "parentJointIndex" -ln "parentJointIndex" -at "long"; + addAttr -ci true -sn "parentJointIndex" -ln "parentJointIndex" -dv -1 -at "long"; setAttr -k off -cb on ".v"; - setAttr ".t" -type "double3" 1.2434497875801753e-014 4.4408920985006262e-016 -8.8817841970012523e-016 ; + setAttr ".t" -type "double3" 1.4210854715202004e-014 4.4408920985006262e-016 -1.5543122344752192e-015 ; setAttr -k off -cb on ".tx"; setAttr -k off -cb on ".ty"; setAttr -k off -cb on ".tz"; - setAttr ".r" -type "double3" -95.878962023386961 44.41121298317988 -5.4710434405384811 ; + setAttr ".r" -type "double3" -95.878962023386919 44.41121298317988 -5.4710434405384891 ; setAttr -k off -cb on ".rx"; setAttr -k off -cb on ".ry"; setAttr -k off -cb on ".rz"; setAttr -cb on ".ro"; - setAttr ".s" -type "double3" 1 0.99999999999999845 1.0000000000000002 ; + setAttr ".s" -type "double3" 1.0000000000000002 0.99999999999999833 1.0000000000000004 ; setAttr -k off -cb on ".sx"; setAttr -k off -cb on ".sy"; setAttr -k off -cb on ".sz"; setAttr ".comp_type" -type "string" "arm_2jnt_01"; setAttr ".comp_name" -type "string" "arm"; setAttr ".comp_side" -type "string" "R"; - setAttr ".connector" -type "string" "standard"; + setAttr ".connector" -type "string" "shoulder_01"; setAttr ".ui_host" -type "string" "armUI_R0_root"; setAttr ".ctlGrp" -type "string" ""; setAttr ".ikrefarray" -type "string" "shoulder_R0_tip,local_C0_root,body_C0_root,spine_C0_eff,spine_C0_root,global_C0_root"; setAttr ".upvrefarray" -type "string" "shoulder_R0_tip,local_C0_root,body_C0_root,spine_C0_eff,spine_C0_root,global_C0_root"; setAttr ".pinrefarray" -type "string" "shoulder_R0_tip,local_C0_root,body_C0_root,spine_C0_eff,spine_C0_root,global_C0_root"; - setAttr ".maxstretch" 1.5; - setAttr ".ikTR" yes; - setAttr ".mirrorMid" yes; - setAttr ".div0" 2; - setAttr ".div1" 2; setAttr -k on ".st_profile"; setAttr -k on ".sq_profile"; - setAttr ".parentJointIndex" -1; createNode nurbsCurve -n "arm_R0_rootShape" -p "arm_R0_root"; - rename -uid "3BAB6587-4175-80C8-EB51-508EDBE2F8FA"; + rename -uid "C1DC4267-4B97-5D9B-A199-F391020E6739"; setAttr ".ihi" 0; setAttr -k off ".v"; setAttr ".ove" yes; @@ -8123,8 +8062,8 @@ createNode nurbsCurve -n "arm_R0_rootShape" -p "arm_R0_root"; 0.25 0 0 -0.25 0 0 ; -createNode nurbsCurve -n "arm_R0_root1Shape" -p "arm_R0_root"; - rename -uid "235FE289-46CF-44A4-A6DD-76BBE60594F0"; +createNode nurbsCurve -n "arm_R0_root4Shape" -p "arm_R0_root"; + rename -uid "32DD88BD-4218-9D14-212B-C38CB5CEEC65"; setAttr ".ihi" 0; setAttr -k off ".v"; setAttr ".ove" yes; @@ -8136,8 +8075,8 @@ createNode nurbsCurve -n "arm_R0_root1Shape" -p "arm_R0_root"; 0 0.25 0 0 -0.25 0 ; -createNode nurbsCurve -n "arm_R0_root2Shape" -p "arm_R0_root"; - rename -uid "6B0B3CE2-4DC8-C0B1-8950-41A8CD8C0537"; +createNode nurbsCurve -n "arm_R0_root5Shape" -p "arm_R0_root"; + rename -uid "B333549D-44EA-B1E2-B9D1-B7A43266A27A"; setAttr ".ihi" 0; setAttr -k off ".v"; setAttr ".ove" yes; @@ -8149,8 +8088,8 @@ createNode nurbsCurve -n "arm_R0_root2Shape" -p "arm_R0_root"; 0 0 0.25 0 0 -0.25 ; -createNode nurbsCurve -n "arm_R0_root3Shape" -p "arm_R0_root"; - rename -uid "D61CA210-4A01-C034-C8AC-5F9A7CEA3D54"; +createNode nurbsCurve -n "arm_R0_root6Shape" -p "arm_R0_root"; + rename -uid "5C44A207-4322-B817-1084-71B0BAA6C4FF"; setAttr ".ihi" 0; setAttr -k off ".v"; setAttr ".ove" yes; @@ -8177,24 +8116,24 @@ createNode nurbsCurve -n "arm_R0_root3Shape" -p "arm_R0_root"; -0.125 -0.125 -0.125 ; createNode transform -n "arm_R0_elbow" -p "arm_R0_root"; - rename -uid "828F536B-42BD-C4E2-F29D-2E9C0B5DB3F3"; + rename -uid "D777A6BB-470F-52A9-0262-6883D7F5800D"; addAttr -ci true -sn "isGearGuide" -ln "isGearGuide" -dv 1 -min 0 -max 1 -at "bool"; setAttr -k off -cb on ".v"; - setAttr ".t" -type "double3" 2.8283335982323274 7.1054273576010019e-015 0.078976790252910156 ; + setAttr ".t" -type "double3" 2.8283335982323248 7.1054273576010019e-015 0.078976790252910378 ; setAttr -k off -cb on ".tx"; setAttr -k off -cb on ".ty"; setAttr -k off -cb on ".tz"; - setAttr ".r" -type "double3" 0 -10.688700162784276 0 ; + setAttr ".r" -type "double3" 0 -10.688700162784281 0 ; setAttr -k off -cb on ".rx"; setAttr -k off -cb on ".ry"; setAttr -k off -cb on ".rz"; setAttr -cb on ".ro"; - setAttr ".s" -type "double3" 0.99999999999999933 0.99999999999999922 0.999999999999999 ; + setAttr ".s" -type "double3" 0.99999999999999822 0.99999999999999845 0.99999999999999845 ; setAttr -k off -cb on ".sx"; setAttr -k off -cb on ".sy"; setAttr -k off -cb on ".sz"; createNode nurbsCurve -n "arm_R0_elbowShape" -p "arm_R0_elbow"; - rename -uid "F983784B-42DE-C235-191E-C9A58FBB07A6"; + rename -uid "E46DEF72-49E9-0378-9235-CDAEE1888E8C"; setAttr ".ihi" 0; setAttr -k off ".v"; setAttr ".ove" yes; @@ -8206,8 +8145,8 @@ createNode nurbsCurve -n "arm_R0_elbowShape" -p "arm_R0_elbow"; 0.25 0 0 -0.25 0 0 ; -createNode nurbsCurve -n "arm_R0_elbow1Shape" -p "arm_R0_elbow"; - rename -uid "1564750B-464B-0AFC-E706-A28259E4A847"; +createNode nurbsCurve -n "arm_R0_elbow4Shape" -p "arm_R0_elbow"; + rename -uid "5F38415C-489A-ED25-6F57-9289AF0A7771"; setAttr ".ihi" 0; setAttr -k off ".v"; setAttr ".ove" yes; @@ -8219,8 +8158,8 @@ createNode nurbsCurve -n "arm_R0_elbow1Shape" -p "arm_R0_elbow"; 0 0.25 0 0 -0.25 0 ; -createNode nurbsCurve -n "arm_R0_elbow2Shape" -p "arm_R0_elbow"; - rename -uid "60916525-491F-BA92-182E-37A907317C1D"; +createNode nurbsCurve -n "arm_R0_elbow5Shape" -p "arm_R0_elbow"; + rename -uid "A333E810-4659-876C-BA72-39B24511FABD"; setAttr ".ihi" 0; setAttr -k off ".v"; setAttr ".ove" yes; @@ -8232,8 +8171,8 @@ createNode nurbsCurve -n "arm_R0_elbow2Shape" -p "arm_R0_elbow"; 0 0 0.25 0 0 -0.25 ; -createNode nurbsCurve -n "arm_R0_elbow3Shape" -p "arm_R0_elbow"; - rename -uid "17076F5C-4547-4936-DC0E-1383848E570E"; +createNode nurbsCurve -n "arm_R0_elbow6Shape" -p "arm_R0_elbow"; + rename -uid "7F09BF4C-41C1-476B-2DF2-B3ACAF382539"; setAttr ".ihi" 0; setAttr -k off ".v"; setAttr ".ove" yes; @@ -8250,8 +8189,8 @@ createNode nurbsCurve -n "arm_R0_elbow3Shape" -p "arm_R0_elbow"; 0 -0.1875 0 -0.1875 0 0 ; -createNode nurbsCurve -n "arm_R0_elbow3_0crvShape" -p "arm_R0_elbow"; - rename -uid "99A5A104-4BCD-C492-D319-FEA2C663AF07"; +createNode nurbsCurve -n "arm_R0_elbow6_0crvShape" -p "arm_R0_elbow"; + rename -uid "684C9420-44BE-922E-A303-23B9830E8841"; setAttr ".ihi" 0; setAttr -k off ".v"; setAttr ".ove" yes; @@ -8268,8 +8207,8 @@ createNode nurbsCurve -n "arm_R0_elbow3_0crvShape" -p "arm_R0_elbow"; 0 0 -0.1875 -0.1875 0 0 ; -createNode nurbsCurve -n "arm_R0_elbow3_1crvShape" -p "arm_R0_elbow"; - rename -uid "7DD64E9F-472B-A5E9-0FB1-30977E63D680"; +createNode nurbsCurve -n "arm_R0_elbow6_1crvShape" -p "arm_R0_elbow"; + rename -uid "4FB6AFBA-4133-F7E3-EB53-279922B84F26"; setAttr ".ihi" 0; setAttr -k off ".v"; setAttr ".ove" yes; @@ -8287,10 +8226,10 @@ createNode nurbsCurve -n "arm_R0_elbow3_1crvShape" -p "arm_R0_elbow"; 0 0 -0.1875 ; createNode transform -n "arm_R0_wrist" -p "arm_R0_elbow"; - rename -uid "EF142F0B-449E-EC29-375B-7B9AFBDA1D29"; + rename -uid "93E37CDC-4ED0-E734-955D-C4B26FAC9116"; addAttr -ci true -sn "isGearGuide" -ln "isGearGuide" -dv 1 -min 0 -max 1 -at "bool"; setAttr -k off -cb on ".v"; - setAttr ".t" -type "double3" 2.9351547891496979 -1.7763568394002505e-015 -0.11960611218230635 ; + setAttr ".t" -type "double3" 2.9351547891497014 -1.7763568394002505e-015 -0.11960611218230607 ; setAttr -k off -cb on ".tx"; setAttr -k off -cb on ".ty"; setAttr -k off -cb on ".tz"; @@ -8298,12 +8237,12 @@ createNode transform -n "arm_R0_wrist" -p "arm_R0_elbow"; setAttr -k off -cb on ".ry"; setAttr -k off -cb on ".rz"; setAttr -cb on ".ro"; - setAttr ".s" -type "double3" 1.0000000000000002 1.0000000000000018 1.0000000000000009 ; + setAttr ".s" -type "double3" 1.0000000000000011 1.0000000000000022 1.0000000000000016 ; setAttr -k off -cb on ".sx"; setAttr -k off -cb on ".sy"; setAttr -k off -cb on ".sz"; createNode nurbsCurve -n "arm_R0_wristShape" -p "arm_R0_wrist"; - rename -uid "2D45C579-48AC-6AFA-7100-2385B62D47F5"; + rename -uid "841D9686-4FED-C071-4FAD-68952224A795"; setAttr ".ihi" 0; setAttr -k off ".v"; setAttr ".ove" yes; @@ -8315,8 +8254,8 @@ createNode nurbsCurve -n "arm_R0_wristShape" -p "arm_R0_wrist"; 0.25 0 0 -0.25 0 0 ; -createNode nurbsCurve -n "arm_R0_wrist1Shape" -p "arm_R0_wrist"; - rename -uid "1DB36C33-4851-D900-EC78-3A91DD79A138"; +createNode nurbsCurve -n "arm_R0_wrist4Shape" -p "arm_R0_wrist"; + rename -uid "F8778ECC-4792-4B69-8214-44A35445543B"; setAttr ".ihi" 0; setAttr -k off ".v"; setAttr ".ove" yes; @@ -8328,8 +8267,8 @@ createNode nurbsCurve -n "arm_R0_wrist1Shape" -p "arm_R0_wrist"; 0 0.25 0 0 -0.25 0 ; -createNode nurbsCurve -n "arm_R0_wrist2Shape" -p "arm_R0_wrist"; - rename -uid "C32E5E19-4149-A4A4-E28D-EB94E2024717"; +createNode nurbsCurve -n "arm_R0_wrist5Shape" -p "arm_R0_wrist"; + rename -uid "64A23620-4CFC-5F72-AD9C-068BD2999CC0"; setAttr ".ihi" 0; setAttr -k off ".v"; setAttr ".ove" yes; @@ -8341,8 +8280,8 @@ createNode nurbsCurve -n "arm_R0_wrist2Shape" -p "arm_R0_wrist"; 0 0 0.25 0 0 -0.25 ; -createNode nurbsCurve -n "arm_R0_wrist3Shape" -p "arm_R0_wrist"; - rename -uid "02288A60-486E-B031-1CCA-27A71EEC028A"; +createNode nurbsCurve -n "arm_R0_wrist6Shape" -p "arm_R0_wrist"; + rename -uid "175483C2-4137-818B-B4F4-E7B6F3E971AE"; setAttr ".ihi" 0; setAttr -k off ".v"; setAttr ".ove" yes; @@ -8359,8 +8298,8 @@ createNode nurbsCurve -n "arm_R0_wrist3Shape" -p "arm_R0_wrist"; 0 -0.1875 0 -0.1875 0 0 ; -createNode nurbsCurve -n "arm_R0_wrist3_0crvShape" -p "arm_R0_wrist"; - rename -uid "960FBA34-48F6-8F8C-C06F-05B84E2DF6E4"; +createNode nurbsCurve -n "arm_R0_wrist6_0crvShape" -p "arm_R0_wrist"; + rename -uid "826AB5AD-4570-D290-2FAE-B48711F1CB47"; setAttr ".ihi" 0; setAttr -k off ".v"; setAttr ".ove" yes; @@ -8377,8 +8316,8 @@ createNode nurbsCurve -n "arm_R0_wrist3_0crvShape" -p "arm_R0_wrist"; 0 0 -0.1875 -0.1875 0 0 ; -createNode nurbsCurve -n "arm_R0_wrist3_1crvShape" -p "arm_R0_wrist"; - rename -uid "94023B4C-49A5-0A11-12CE-A790C73FD410"; +createNode nurbsCurve -n "arm_R0_wrist6_1crvShape" -p "arm_R0_wrist"; + rename -uid "4BAA9601-4D79-8C3A-57EC-7FB1F43E578E"; setAttr ".ihi" 0; setAttr -k off ".v"; setAttr ".ove" yes; @@ -8396,10 +8335,10 @@ createNode nurbsCurve -n "arm_R0_wrist3_1crvShape" -p "arm_R0_wrist"; 0 0 -0.1875 ; createNode transform -n "arm_R0_eff" -p "arm_R0_wrist"; - rename -uid "619C7F32-492E-D775-8D60-A981276C5DE9"; + rename -uid "DE7DEE0C-4EAC-A3D4-C630-AC850E9A3F3B"; addAttr -ci true -sn "isGearGuide" -ln "isGearGuide" -dv 1 -min 0 -max 1 -at "bool"; setAttr -k off -cb on ".v"; - setAttr ".t" -type "double3" 1.3207237066308184 5.3290705182007514e-015 8.8817841970012523e-016 ; + setAttr ".t" -type "double3" 1.3207237066308193 1.7763568394002505e-015 4.4408920985006262e-016 ; setAttr -k off -cb on ".tx"; setAttr -k off -cb on ".ty"; setAttr -k off -cb on ".tz"; @@ -8407,12 +8346,12 @@ createNode transform -n "arm_R0_eff" -p "arm_R0_wrist"; setAttr -k off -cb on ".ry"; setAttr -k off -cb on ".rz"; setAttr -cb on ".ro"; - setAttr ".s" -type "double3" 1.0000000000000011 1 0.99999999999999989 ; + setAttr ".s" -type "double3" 1.0000000000000009 1 0.99999999999999978 ; setAttr -k off -cb on ".sx"; setAttr -k off -cb on ".sy"; setAttr -k off -cb on ".sz"; createNode nurbsCurve -n "arm_R0_effShape" -p "arm_R0_eff"; - rename -uid "B15ACC99-4B3D-7032-86A3-E4AD959816DA"; + rename -uid "6C1E0597-4DBF-D56F-07BE-4294790434FB"; setAttr ".ihi" 0; setAttr -k off ".v"; setAttr ".ove" yes; @@ -8424,8 +8363,8 @@ createNode nurbsCurve -n "arm_R0_effShape" -p "arm_R0_eff"; 0.25 0 0 -0.25 0 0 ; -createNode nurbsCurve -n "arm_R0_eff1Shape" -p "arm_R0_eff"; - rename -uid "3DBDC1AF-4977-87D7-7317-5CA7E6A7F072"; +createNode nurbsCurve -n "arm_R0_eff4Shape" -p "arm_R0_eff"; + rename -uid "5CE5418F-429D-D6EC-1A6C-279305AE53A6"; setAttr ".ihi" 0; setAttr -k off ".v"; setAttr ".ove" yes; @@ -8437,8 +8376,8 @@ createNode nurbsCurve -n "arm_R0_eff1Shape" -p "arm_R0_eff"; 0 0.25 0 0 -0.25 0 ; -createNode nurbsCurve -n "arm_R0_eff2Shape" -p "arm_R0_eff"; - rename -uid "CE57D860-4A43-BEA9-B16F-02ACE02E0D47"; +createNode nurbsCurve -n "arm_R0_eff5Shape" -p "arm_R0_eff"; + rename -uid "32F96BEE-49AC-D690-54BA-51BD3F90A8AF"; setAttr ".ihi" 0; setAttr -k off ".v"; setAttr ".ove" yes; @@ -8450,8 +8389,8 @@ createNode nurbsCurve -n "arm_R0_eff2Shape" -p "arm_R0_eff"; 0 0 0.25 0 0 -0.25 ; -createNode nurbsCurve -n "arm_R0_eff3Shape" -p "arm_R0_eff"; - rename -uid "B223585D-432C-E393-43F4-49AA2EB2D4DB"; +createNode nurbsCurve -n "arm_R0_eff6Shape" -p "arm_R0_eff"; + rename -uid "370867A7-4117-3B53-E6E6-03BE08216392"; setAttr ".ihi" 0; setAttr -k off ".v"; setAttr ".ove" yes; @@ -8468,8 +8407,8 @@ createNode nurbsCurve -n "arm_R0_eff3Shape" -p "arm_R0_eff"; 0 -0.1875 0 -0.1875 0 0 ; -createNode nurbsCurve -n "arm_R0_eff3_0crvShape" -p "arm_R0_eff"; - rename -uid "60B834D1-4BB1-D07B-AFE7-B49DCBAB9BDA"; +createNode nurbsCurve -n "arm_R0_eff6_0crvShape" -p "arm_R0_eff"; + rename -uid "1397F1B8-4C48-4CB5-1EFF-67AF9368D152"; setAttr ".ihi" 0; setAttr -k off ".v"; setAttr ".ove" yes; @@ -8486,8 +8425,8 @@ createNode nurbsCurve -n "arm_R0_eff3_0crvShape" -p "arm_R0_eff"; 0 0 -0.1875 -0.1875 0 0 ; -createNode nurbsCurve -n "arm_R0_eff3_1crvShape" -p "arm_R0_eff"; - rename -uid "59C292E8-4F20-D9B5-A3AD-C5AEECCE75BC"; +createNode nurbsCurve -n "arm_R0_eff6_1crvShape" -p "arm_R0_eff"; + rename -uid "DA291FBB-408F-1C8B-948E-F7B2FDF83C42"; setAttr ".ihi" 0; setAttr -k off ".v"; setAttr ".ove" yes; @@ -8505,7 +8444,7 @@ createNode nurbsCurve -n "arm_R0_eff3_1crvShape" -p "arm_R0_eff"; 0 0 -0.1875 ; createNode transform -n "armUI_R0_root" -p "arm_R0_eff"; - rename -uid "024CA370-43A9-FF73-FA09-A79906554BBE"; + rename -uid "58E53DD5-47FA-6B88-8066-979B7D0F5809"; addAttr -ci true -sn "isGearGuide" -ln "isGearGuide" -dv 1 -min 0 -max 1 -at "bool"; addAttr -ci true -sn "comp_type" -ln "comp_type" -dt "string"; addAttr -ci true -sn "comp_name" -ln "comp_name" -dt "string"; @@ -8529,12 +8468,14 @@ createNode transform -n "armUI_R0_root" -p "arm_R0_eff"; addAttr -ci true -sn "k_sy" -ln "k_sy" -min 0 -max 1 -at "bool"; addAttr -ci true -sn "k_sz" -ln "k_sz" -min 0 -max 1 -at "bool"; addAttr -ci true -sn "default_rotorder" -ln "default_rotorder" -min 0 -max 5 -at "long"; - addAttr -ci true -sn "neutralRotation" -ln "neutralRotation" -min 0 -max 1 -at "bool"; - addAttr -ci true -sn "ctlSize" -ln "ctlSize" -at "double"; + addAttr -ci true -sn "neutralRotation" -ln "neutralRotation" -dv 1 -min 0 -max 1 + -at "bool"; + addAttr -ci true -sn "mirrorBehaviour" -ln "mirrorBehaviour" -min 0 -max 1 -at "bool"; + addAttr -ci true -sn "ctlSize" -ln "ctlSize" -dv 1 -at "double"; addAttr -ci true -sn "useIndex" -ln "useIndex" -min 0 -max 1 -at "bool"; - addAttr -ci true -sn "parentJointIndex" -ln "parentJointIndex" -at "long"; + addAttr -ci true -sn "parentJointIndex" -ln "parentJointIndex" -dv -1 -at "long"; setAttr -k off -cb on ".v"; - setAttr ".t" -type "double3" -1.2124561875008082 0.56073114764518017 -0.29276117198398899 ; + setAttr ".t" -type "double3" -1.2124561875008064 0.5607311476451784 -0.29276117198398954 ; setAttr -k off -cb on ".tx"; setAttr -k off -cb on ".ty"; setAttr -k off -cb on ".tz"; @@ -8542,7 +8483,7 @@ createNode transform -n "armUI_R0_root" -p "arm_R0_eff"; setAttr -k off -cb on ".ry"; setAttr -k off -cb on ".rz"; setAttr -cb on ".ro"; - setAttr ".s" -type "double3" 1.0000000000000007 1.0000000000000002 1.0000000000000011 ; + setAttr ".s" -type "double3" 1.0000000000000004 1.0000000000000002 1.0000000000000011 ; setAttr -k off -cb on ".sx"; setAttr -k off -cb on ".sy"; setAttr -k off -cb on ".sz"; @@ -8554,11 +8495,8 @@ createNode transform -n "armUI_R0_root" -p "arm_R0_eff"; setAttr ".ctlGrp" -type "string" ""; setAttr ".icon" -type "string" "cross"; setAttr ".ikrefarray" -type "string" ""; - setAttr ".neutralRotation" yes; - setAttr ".ctlSize" 1; - setAttr ".parentJointIndex" -1; createNode nurbsCurve -n "armUI_R0_rootShape" -p "armUI_R0_root"; - rename -uid "C976F8F1-444B-663D-F302-EE859FE09AE2"; + rename -uid "059A3C31-4893-DD92-5E9F-E79B35E4C528"; setAttr ".ihi" 0; setAttr -k off ".v"; setAttr ".ove" yes; @@ -8570,8 +8508,8 @@ createNode nurbsCurve -n "armUI_R0_rootShape" -p "armUI_R0_root"; 0.25 0 0 -0.25 0 0 ; -createNode nurbsCurve -n "armUI_R0_root1Shape" -p "armUI_R0_root"; - rename -uid "C235AA3D-4ED7-14D5-095D-04895E3C8E2E"; +createNode nurbsCurve -n "armUI_R0_root4Shape" -p "armUI_R0_root"; + rename -uid "F5F1E962-4E6C-5B50-F50C-64A2C5AED75A"; setAttr ".ihi" 0; setAttr -k off ".v"; setAttr ".ove" yes; @@ -8583,8 +8521,8 @@ createNode nurbsCurve -n "armUI_R0_root1Shape" -p "armUI_R0_root"; 0 0.25 0 0 -0.25 0 ; -createNode nurbsCurve -n "armUI_R0_root2Shape" -p "armUI_R0_root"; - rename -uid "180EEFAD-4C0D-739C-0B23-8F8D9C14F0DD"; +createNode nurbsCurve -n "armUI_R0_root5Shape" -p "armUI_R0_root"; + rename -uid "07319F72-45D5-7F99-D787-DD81E459CBB4"; setAttr ".ihi" 0; setAttr -k off ".v"; setAttr ".ove" yes; @@ -8596,8 +8534,8 @@ createNode nurbsCurve -n "armUI_R0_root2Shape" -p "armUI_R0_root"; 0 0 0.25 0 0 -0.25 ; -createNode nurbsCurve -n "armUI_R0_root3Shape" -p "armUI_R0_root"; - rename -uid "86FB1B57-49A7-6D87-CBB0-6792036E744B"; +createNode nurbsCurve -n "armUI_R0_root6Shape" -p "armUI_R0_root"; + rename -uid "A77E2C43-4BC8-931D-3FE9-2D9CAA1C6CC3"; setAttr ".ihi" 0; setAttr -k off ".v"; setAttr ".ove" yes; @@ -8624,24 +8562,24 @@ createNode nurbsCurve -n "armUI_R0_root3Shape" -p "armUI_R0_root"; -0.125 -0.125 -0.125 ; createNode transform -n "armUI_R0_sizeRef" -p "armUI_R0_root"; - rename -uid "84C5C054-49F1-5392-C728-8CA298E2F522"; + rename -uid "5CB715CB-4723-090B-663C-B7AE6EF40CC4"; addAttr -ci true -sn "isGearGuide" -ln "isGearGuide" -dv 1 -min 0 -max 1 -at "bool"; setAttr -k off -cb on ".v"; - setAttr ".t" -type "double3" 0.113476230858093 -0.027001577630489493 1.0430060296210659 ; + setAttr ".t" -type "double3" 0.11347623085809122 -0.027001577630489493 1.0430060296210659 ; setAttr -k off -cb on ".tx"; setAttr -k off -cb on ".ty"; setAttr -k off -cb on ".tz"; - setAttr ".r" -type "double3" 5.4530840145881951 3.3190804973695962 45.379324150247719 ; + setAttr ".r" -type "double3" 5.4530840145881605 3.3190804973696189 45.37932415024774 ; setAttr -k off -cb on ".rx"; setAttr -k off -cb on ".ry"; setAttr -k off -cb on ".rz"; setAttr -cb on ".ro"; - setAttr ".s" -type "double3" 1.0495082267377429 1.0495082267377378 1.0495082267377398 ; + setAttr ".s" -type "double3" 1.0495082267377429 1.0495082267377378 1.0495082267377394 ; setAttr -k off -cb on ".sx"; setAttr -k off -cb on ".sy"; setAttr -k off -cb on ".sz"; createNode transform -n "meta_R0_root" -p "arm_R0_eff"; - rename -uid "A1485F64-4AA8-405F-C55C-589C96FD0059"; + rename -uid "4BC9E70A-4AE6-D495-47F9-0EB1823774D0"; addAttr -ci true -sn "isGearGuide" -ln "isGearGuide" -dv 1 -min 0 -max 1 -at "bool"; addAttr -ci true -sn "comp_type" -ln "comp_type" -dt "string"; addAttr -ci true -sn "comp_name" -ln "comp_name" -dt "string"; @@ -8650,22 +8588,22 @@ createNode transform -n "meta_R0_root" -p "arm_R0_eff"; addAttr -ci true -sn "connector" -ln "connector" -dt "string"; addAttr -ci true -sn "ui_host" -ln "ui_host" -dt "string"; addAttr -ci true -sn "ctlGrp" -ln "ctlGrp" -dt "string"; - addAttr -ci true -sn "intScale" -ln "intScale" -min 0 -max 1 -at "bool"; - addAttr -ci true -sn "intRotation" -ln "intRotation" -min 0 -max 1 -at "bool"; - addAttr -ci true -sn "intTranslation" -ln "intTranslation" -min 0 -max 1 -at "bool"; + addAttr -ci true -sn "intScale" -ln "intScale" -dv 1 -min 0 -max 1 -at "bool"; + addAttr -ci true -sn "intRotation" -ln "intRotation" -dv 1 -min 0 -max 1 -at "bool"; + addAttr -ci true -sn "intTranslation" -ln "intTranslation" -dv 1 -min 0 -max 1 -at "bool"; addAttr -ci true -sn "useIndex" -ln "useIndex" -min 0 -max 1 -at "bool"; - addAttr -ci true -sn "parentJointIndex" -ln "parentJointIndex" -at "long"; + addAttr -ci true -sn "parentJointIndex" -ln "parentJointIndex" -dv -1 -at "long"; setAttr -k off -cb on ".v"; - setAttr ".t" -type "double3" -1.0556240028445689 -0.075350553640973317 0.35296225288850258 ; + setAttr ".t" -type "double3" -1.055624002844568 -0.075350553640975093 0.3529622528885023 ; setAttr -k off -cb on ".tx"; setAttr -k off -cb on ".ty"; setAttr -k off -cb on ".tz"; - setAttr ".r" -type "double3" 86.350349008866942 93.717381466937226 86.467960127478506 ; + setAttr ".r" -type "double3" 86.350349008866772 93.71738146693724 86.467960127478321 ; setAttr -k off -cb on ".rx"; setAttr -k off -cb on ".ry"; setAttr -k off -cb on ".rz"; setAttr -cb on ".ro"; - setAttr ".s" -type "double3" 0.30838721081716924 0.30838721081716935 0.30838721081716952 ; + setAttr ".s" -type "double3" 0.30838721081716924 0.30838721081716941 0.30838721081716963 ; setAttr -k off -cb on ".sx"; setAttr -k off -cb on ".sy"; setAttr -k off -cb on ".sz"; @@ -8675,12 +8613,8 @@ createNode transform -n "meta_R0_root" -p "arm_R0_eff"; setAttr ".connector" -type "string" "standard"; setAttr ".ui_host" -type "string" ""; setAttr ".ctlGrp" -type "string" ""; - setAttr ".intScale" yes; - setAttr ".intRotation" yes; - setAttr ".intTranslation" yes; - setAttr ".parentJointIndex" -1; createNode nurbsCurve -n "meta_R0_rootShape" -p "meta_R0_root"; - rename -uid "C7E71249-4F2D-931B-DDE9-D39C0897F0B3"; + rename -uid "3970A0AB-4BE4-4684-7A8E-668B4C05EB0A"; setAttr ".ihi" 0; setAttr -k off ".v"; setAttr ".ove" yes; @@ -8692,8 +8626,8 @@ createNode nurbsCurve -n "meta_R0_rootShape" -p "meta_R0_root"; 0.25 0 0 -0.25 0 0 ; -createNode nurbsCurve -n "meta_R0_root1Shape" -p "meta_R0_root"; - rename -uid "C765E849-4D92-A610-9442-949B52752973"; +createNode nurbsCurve -n "meta_R0_root4Shape" -p "meta_R0_root"; + rename -uid "8BC6228B-4F94-1BD7-9C5A-E1B5974C0447"; setAttr ".ihi" 0; setAttr -k off ".v"; setAttr ".ove" yes; @@ -8705,8 +8639,8 @@ createNode nurbsCurve -n "meta_R0_root1Shape" -p "meta_R0_root"; 0 0.25 0 0 -0.25 0 ; -createNode nurbsCurve -n "meta_R0_root2Shape" -p "meta_R0_root"; - rename -uid "E58E22A2-46C9-F51B-A32C-CDBA1A83049F"; +createNode nurbsCurve -n "meta_R0_root5Shape" -p "meta_R0_root"; + rename -uid "B3BD0860-450F-D1AA-F868-66A03BE7BEA7"; setAttr ".ihi" 0; setAttr -k off ".v"; setAttr ".ove" yes; @@ -8718,8 +8652,8 @@ createNode nurbsCurve -n "meta_R0_root2Shape" -p "meta_R0_root"; 0 0 0.25 0 0 -0.25 ; -createNode nurbsCurve -n "meta_R0_root3Shape" -p "meta_R0_root"; - rename -uid "949C8EF9-4CFD-FE3C-CE50-CB9078AA33D5"; +createNode nurbsCurve -n "meta_R0_root6Shape" -p "meta_R0_root"; + rename -uid "0495BDB8-45ED-7258-5A76-7C814B2F7D3B"; setAttr ".ihi" 0; setAttr -k off ".v"; setAttr ".ove" yes; @@ -8746,10 +8680,10 @@ createNode nurbsCurve -n "meta_R0_root3Shape" -p "meta_R0_root"; -0.125 -0.125 -0.125 ; createNode transform -n "meta_R0_0_loc" -p "meta_R0_root"; - rename -uid "16377A0D-4F0F-1DB5-B41E-DC88BD41D6EC"; + rename -uid "CBE6345D-4209-F451-998A-8AB173108E4F"; addAttr -ci true -sn "isGearGuide" -ln "isGearGuide" -dv 1 -min 0 -max 1 -at "bool"; setAttr -k off -cb on ".v"; - setAttr ".t" -type "double3" 0.66320847353617252 1.4210854715202004e-014 -2.8421709430404007e-014 ; + setAttr ".t" -type "double3" 0.66320847353617252 2.1316282072803006e-014 -3.0198066269804258e-014 ; setAttr -k off -cb on ".tx"; setAttr -k off -cb on ".ty"; setAttr -k off -cb on ".tz"; @@ -8757,12 +8691,12 @@ createNode transform -n "meta_R0_0_loc" -p "meta_R0_root"; setAttr -k off -cb on ".ry"; setAttr -k off -cb on ".rz"; setAttr -cb on ".ro"; - setAttr ".s" -type "double3" 0.99999999999999922 0.99999999999999944 0.99999999999999856 ; + setAttr ".s" -type "double3" 0.99999999999999967 0.99999999999999956 0.99999999999999833 ; setAttr -k off -cb on ".sx"; setAttr -k off -cb on ".sy"; setAttr -k off -cb on ".sz"; createNode nurbsCurve -n "meta_R0_0_locShape" -p "meta_R0_0_loc"; - rename -uid "8CD7B551-4A9A-882F-EAC2-47A5890FB2A6"; + rename -uid "4A0ADDC7-4D3C-28D7-23F1-5283E36FC02C"; setAttr ".ihi" 0; setAttr -k off ".v"; setAttr ".ove" yes; @@ -8774,8 +8708,8 @@ createNode nurbsCurve -n "meta_R0_0_locShape" -p "meta_R0_0_loc"; 0.25 0 0 -0.25 0 0 ; -createNode nurbsCurve -n "meta_R0_0_loc1Shape" -p "meta_R0_0_loc"; - rename -uid "D0D3DE5E-45E9-8CCF-F229-349FF49031FC"; +createNode nurbsCurve -n "meta_R0_0_loc4Shape" -p "meta_R0_0_loc"; + rename -uid "B81D9EF3-4E06-F5DD-3E9A-118C30C2546C"; setAttr ".ihi" 0; setAttr -k off ".v"; setAttr ".ove" yes; @@ -8787,8 +8721,8 @@ createNode nurbsCurve -n "meta_R0_0_loc1Shape" -p "meta_R0_0_loc"; 0 0.25 0 0 -0.25 0 ; -createNode nurbsCurve -n "meta_R0_0_loc2Shape" -p "meta_R0_0_loc"; - rename -uid "1DEBB17A-4EBA-6870-8A50-47B0640961F7"; +createNode nurbsCurve -n "meta_R0_0_loc5Shape" -p "meta_R0_0_loc"; + rename -uid "1E243561-41B5-4843-C341-15A4EFBACD1C"; setAttr ".ihi" 0; setAttr -k off ".v"; setAttr ".ove" yes; @@ -8800,8 +8734,8 @@ createNode nurbsCurve -n "meta_R0_0_loc2Shape" -p "meta_R0_0_loc"; 0 0 0.25 0 0 -0.25 ; -createNode nurbsCurve -n "meta_R0_0_loc3Shape" -p "meta_R0_0_loc"; - rename -uid "2DA418A7-4117-879C-C5D6-90B3842F78CA"; +createNode nurbsCurve -n "meta_R0_0_loc6Shape" -p "meta_R0_0_loc"; + rename -uid "D4F0A3E1-4032-F4C0-2AC8-95AD8F713C98"; setAttr ".ihi" 0; setAttr -k off ".v"; setAttr ".ove" yes; @@ -8818,8 +8752,8 @@ createNode nurbsCurve -n "meta_R0_0_loc3Shape" -p "meta_R0_0_loc"; 0 -0.1875 0 -0.1875 0 0 ; -createNode nurbsCurve -n "meta_R0_0_loc3_0crvShape" -p "meta_R0_0_loc"; - rename -uid "7A84B413-4E24-06EA-A3FF-5CBA89200FCB"; +createNode nurbsCurve -n "meta_R0_0_loc6_0crvShape" -p "meta_R0_0_loc"; + rename -uid "89875F7F-44B1-1EF9-6EA2-70BDCAF20B62"; setAttr ".ihi" 0; setAttr -k off ".v"; setAttr ".ove" yes; @@ -8836,8 +8770,8 @@ createNode nurbsCurve -n "meta_R0_0_loc3_0crvShape" -p "meta_R0_0_loc"; 0 0 -0.1875 -0.1875 0 0 ; -createNode nurbsCurve -n "meta_R0_0_loc3_1crvShape" -p "meta_R0_0_loc"; - rename -uid "5008D06C-4CD4-E293-DA69-77BA310583F1"; +createNode nurbsCurve -n "meta_R0_0_loc6_1crvShape" -p "meta_R0_0_loc"; + rename -uid "80F4B257-441C-9DE4-C8D9-BDB21446BD1A"; setAttr ".ihi" 0; setAttr -k off ".v"; setAttr ".ove" yes; @@ -8855,10 +8789,10 @@ createNode nurbsCurve -n "meta_R0_0_loc3_1crvShape" -p "meta_R0_0_loc"; 0 0 -0.1875 ; createNode transform -n "meta_R0_1_loc" -p "meta_R0_0_loc"; - rename -uid "3410FAE8-45D1-DBBE-2567-04ACE61A2995"; + rename -uid "6C16C35A-496C-AB06-0F1D-F58000B227B0"; addAttr -ci true -sn "isGearGuide" -ln "isGearGuide" -dv 1 -min 0 -max 1 -at "bool"; setAttr -k off -cb on ".v"; - setAttr ".t" -type "double3" 0.66320847353618451 0 1.2434497875801753e-014 ; + setAttr ".t" -type "double3" 0.66320847353618362 -7.1054273576010019e-015 1.0658141036401503e-014 ; setAttr -k off -cb on ".tx"; setAttr -k off -cb on ".ty"; setAttr -k off -cb on ".tz"; @@ -8866,12 +8800,12 @@ createNode transform -n "meta_R0_1_loc" -p "meta_R0_0_loc"; setAttr -k off -cb on ".ry"; setAttr -k off -cb on ".rz"; setAttr -cb on ".ro"; - setAttr ".s" -type "double3" 1 1.0000000000000004 1.0000000000000007 ; + setAttr ".s" -type "double3" 0.99999999999999978 1.0000000000000002 1.0000000000000007 ; setAttr -k off -cb on ".sx"; setAttr -k off -cb on ".sy"; setAttr -k off -cb on ".sz"; createNode nurbsCurve -n "meta_R0_1_locShape" -p "meta_R0_1_loc"; - rename -uid "4493D072-4021-82C8-7D59-C6A6C0540C8A"; + rename -uid "F65FEDD6-4D77-0E85-DB06-8683A969B46F"; setAttr ".ihi" 0; setAttr -k off ".v"; setAttr ".ove" yes; @@ -8883,8 +8817,8 @@ createNode nurbsCurve -n "meta_R0_1_locShape" -p "meta_R0_1_loc"; 0.25 0 0 -0.25 0 0 ; -createNode nurbsCurve -n "meta_R0_1_loc1Shape" -p "meta_R0_1_loc"; - rename -uid "1D6D3C32-498C-0D74-3117-B6AE20CADFCB"; +createNode nurbsCurve -n "meta_R0_1_loc4Shape" -p "meta_R0_1_loc"; + rename -uid "96AA0D7E-464B-6DD5-7E1A-2E9020809277"; setAttr ".ihi" 0; setAttr -k off ".v"; setAttr ".ove" yes; @@ -8896,8 +8830,8 @@ createNode nurbsCurve -n "meta_R0_1_loc1Shape" -p "meta_R0_1_loc"; 0 0.25 0 0 -0.25 0 ; -createNode nurbsCurve -n "meta_R0_1_loc2Shape" -p "meta_R0_1_loc"; - rename -uid "A1AF53F4-4BB7-DDF6-26D9-60B8EBDE3DF7"; +createNode nurbsCurve -n "meta_R0_1_loc5Shape" -p "meta_R0_1_loc"; + rename -uid "295F19B4-4170-F4D2-EB9D-EBA8320411C1"; setAttr ".ihi" 0; setAttr -k off ".v"; setAttr ".ove" yes; @@ -8909,8 +8843,8 @@ createNode nurbsCurve -n "meta_R0_1_loc2Shape" -p "meta_R0_1_loc"; 0 0 0.25 0 0 -0.25 ; -createNode nurbsCurve -n "meta_R0_1_loc3Shape" -p "meta_R0_1_loc"; - rename -uid "AE3FA393-4507-4D31-3771-3F8C58459001"; +createNode nurbsCurve -n "meta_R0_1_loc6Shape" -p "meta_R0_1_loc"; + rename -uid "E06A1752-4A55-26F6-605B-BBA4633866B3"; setAttr ".ihi" 0; setAttr -k off ".v"; setAttr ".ove" yes; @@ -8927,8 +8861,8 @@ createNode nurbsCurve -n "meta_R0_1_loc3Shape" -p "meta_R0_1_loc"; 0 -0.1875 0 -0.1875 0 0 ; -createNode nurbsCurve -n "meta_R0_1_loc3_0crvShape" -p "meta_R0_1_loc"; - rename -uid "504424C0-4E2F-28CF-1B3D-77BC3F4D44A4"; +createNode nurbsCurve -n "meta_R0_1_loc6_0crvShape" -p "meta_R0_1_loc"; + rename -uid "C2AED62B-4EB3-0022-5C35-70B8FD90D385"; setAttr ".ihi" 0; setAttr -k off ".v"; setAttr ".ove" yes; @@ -8945,8 +8879,8 @@ createNode nurbsCurve -n "meta_R0_1_loc3_0crvShape" -p "meta_R0_1_loc"; 0 0 -0.1875 -0.1875 0 0 ; -createNode nurbsCurve -n "meta_R0_1_loc3_1crvShape" -p "meta_R0_1_loc"; - rename -uid "AF811F8D-40AE-0A08-75C9-16B31C648FF6"; +createNode nurbsCurve -n "meta_R0_1_loc6_1crvShape" -p "meta_R0_1_loc"; + rename -uid "0361B981-49A4-4929-0CC7-A98531B5D75C"; setAttr ".ihi" 0; setAttr -k off ".v"; setAttr ".ove" yes; @@ -8964,10 +8898,10 @@ createNode nurbsCurve -n "meta_R0_1_loc3_1crvShape" -p "meta_R0_1_loc"; 0 0 -0.1875 ; createNode transform -n "meta_R0_2_loc" -p "meta_R0_1_loc"; - rename -uid "9A8F6AD7-4D9E-6689-A7EA-099B5EEE33A0"; + rename -uid "88299E7F-4E94-45AC-8B2E-C48137698367"; addAttr -ci true -sn "isGearGuide" -ln "isGearGuide" -dv 1 -min 0 -max 1 -at "bool"; setAttr -k off -cb on ".v"; - setAttr ".t" -type "double3" 0.66320847353618317 1.4210854715202004e-014 -2.6645352591003757e-014 ; + setAttr ".t" -type "double3" 0.66320847353618229 1.4210854715202004e-014 -3.0198066269804258e-014 ; setAttr -k off -cb on ".tx"; setAttr -k off -cb on ".ty"; setAttr -k off -cb on ".tz"; @@ -8975,12 +8909,12 @@ createNode transform -n "meta_R0_2_loc" -p "meta_R0_1_loc"; setAttr -k off -cb on ".ry"; setAttr -k off -cb on ".rz"; setAttr -cb on ".ro"; - setAttr ".s" -type "double3" 0.99999999999999967 0.99999999999999944 0.99999999999999867 ; + setAttr ".s" -type "double3" 0.99999999999999944 0.999999999999999 0.99999999999999867 ; setAttr -k off -cb on ".sx"; setAttr -k off -cb on ".sy"; setAttr -k off -cb on ".sz"; createNode nurbsCurve -n "meta_R0_2_locShape" -p "meta_R0_2_loc"; - rename -uid "528F6120-4BAD-EBA4-634F-BA9985CC3B50"; + rename -uid "2868A4AB-4A66-AF06-DCAE-2CBC80FAE59D"; setAttr ".ihi" 0; setAttr -k off ".v"; setAttr ".ove" yes; @@ -8992,8 +8926,8 @@ createNode nurbsCurve -n "meta_R0_2_locShape" -p "meta_R0_2_loc"; 0.25 0 0 -0.25 0 0 ; -createNode nurbsCurve -n "meta_R0_2_loc1Shape" -p "meta_R0_2_loc"; - rename -uid "56E52CEB-4B0E-5F33-3F29-44822B2A90B4"; +createNode nurbsCurve -n "meta_R0_2_loc4Shape" -p "meta_R0_2_loc"; + rename -uid "03FEA0B9-4009-0B27-E287-B8A8F1E65EA8"; setAttr ".ihi" 0; setAttr -k off ".v"; setAttr ".ove" yes; @@ -9005,8 +8939,8 @@ createNode nurbsCurve -n "meta_R0_2_loc1Shape" -p "meta_R0_2_loc"; 0 0.25 0 0 -0.25 0 ; -createNode nurbsCurve -n "meta_R0_2_loc2Shape" -p "meta_R0_2_loc"; - rename -uid "B86651D4-47DC-4DF7-EC88-27A4D3283E15"; +createNode nurbsCurve -n "meta_R0_2_loc5Shape" -p "meta_R0_2_loc"; + rename -uid "5CFBFADA-4D62-D3F3-A2BD-98B89742A12C"; setAttr ".ihi" 0; setAttr -k off ".v"; setAttr ".ove" yes; @@ -9018,8 +8952,8 @@ createNode nurbsCurve -n "meta_R0_2_loc2Shape" -p "meta_R0_2_loc"; 0 0 0.25 0 0 -0.25 ; -createNode nurbsCurve -n "meta_R0_2_loc3Shape" -p "meta_R0_2_loc"; - rename -uid "72406A52-491A-2C1D-C6E7-6188E4F9AB23"; +createNode nurbsCurve -n "meta_R0_2_loc6Shape" -p "meta_R0_2_loc"; + rename -uid "F46B5AE1-41BC-3E66-4FF2-D59BE51FCC27"; setAttr ".ihi" 0; setAttr -k off ".v"; setAttr ".ove" yes; @@ -9036,8 +8970,8 @@ createNode nurbsCurve -n "meta_R0_2_loc3Shape" -p "meta_R0_2_loc"; 0 -0.1875 0 -0.1875 0 0 ; -createNode nurbsCurve -n "meta_R0_2_loc3_0crvShape" -p "meta_R0_2_loc"; - rename -uid "2E334FB8-4592-6580-9B44-138B767D5A02"; +createNode nurbsCurve -n "meta_R0_2_loc6_0crvShape" -p "meta_R0_2_loc"; + rename -uid "AA9FFBB5-4FC9-CA42-501B-1FA777577FD5"; setAttr ".ihi" 0; setAttr -k off ".v"; setAttr ".ove" yes; @@ -9054,8 +8988,8 @@ createNode nurbsCurve -n "meta_R0_2_loc3_0crvShape" -p "meta_R0_2_loc"; 0 0 -0.1875 -0.1875 0 0 ; -createNode nurbsCurve -n "meta_R0_2_loc3_1crvShape" -p "meta_R0_2_loc"; - rename -uid "C133ACFB-4373-C06D-06A2-1095AD36C008"; +createNode nurbsCurve -n "meta_R0_2_loc6_1crvShape" -p "meta_R0_2_loc"; + rename -uid "D5C815CB-4917-B408-73FC-E0B23B91784E"; setAttr ".ihi" 0; setAttr -k off ".v"; setAttr ".ove" yes; @@ -9073,48 +9007,44 @@ createNode nurbsCurve -n "meta_R0_2_loc3_1crvShape" -p "meta_R0_2_loc"; 0 0 -0.1875 ; createNode transform -n "finger_R3_root" -p "meta_R0_2_loc"; - rename -uid "F19967AE-4A3F-4542-47C3-36A4ECBABE29"; + rename -uid "0F9DB48B-4A2D-05E4-EC2F-36986D495EFA"; addAttr -ci true -sn "isGearGuide" -ln "isGearGuide" -dv 1 -min 0 -max 1 -at "bool"; addAttr -ci true -sn "comp_type" -ln "comp_type" -dt "string"; addAttr -ci true -sn "comp_name" -ln "comp_name" -dt "string"; addAttr -ci true -sn "comp_side" -ln "comp_side" -dt "string"; - addAttr -ci true -sn "comp_index" -ln "comp_index" -min 0 -at "long"; + addAttr -ci true -sn "comp_index" -ln "comp_index" -dv 3 -min 0 -at "long"; addAttr -ci true -sn "connector" -ln "connector" -dt "string"; addAttr -ci true -sn "ui_host" -ln "ui_host" -dt "string"; addAttr -ci true -sn "ctlGrp" -ln "ctlGrp" -dt "string"; addAttr -ci true -sn "mode" -ln "mode" -min 0 -at "long"; - addAttr -ci true -sn "blend" -ln "blend" -min 0 -max 1 -at "double"; - addAttr -ci true -sn "neutralpose" -ln "neutralpose" -min 0 -max 1 -at "bool"; + addAttr -ci true -sn "blend" -ln "blend" -dv 1 -min 0 -max 1 -at "double"; + addAttr -ci true -sn "neutralpose" -ln "neutralpose" -dv 1 -min 0 -max 1 -at "bool"; addAttr -ci true -sn "ikrefarray" -ln "ikrefarray" -dt "string"; addAttr -ci true -sn "useIndex" -ln "useIndex" -min 0 -max 1 -at "bool"; - addAttr -ci true -sn "parentJointIndex" -ln "parentJointIndex" -at "long"; + addAttr -ci true -sn "parentJointIndex" -ln "parentJointIndex" -dv -1 -at "long"; setAttr -k off -cb on ".v"; - setAttr ".t" -type "double3" 0.27518484001103438 -0.17360051577779245 2.494679934179052 ; + setAttr ".t" -type "double3" 0.2751848400110346 -0.17360051577778535 2.4946799341790573 ; setAttr -k off -cb on ".tx"; setAttr -k off -cb on ".ty"; setAttr -k off -cb on ".tz"; - setAttr ".r" -type "double3" 5.4173319878591917 -68.587073855452445 -5.8163374181200611 ; + setAttr ".r" -type "double3" 5.4173319878599075 -68.587073855452473 -5.8163374181201082 ; setAttr -k off -cb on ".rx"; setAttr -k off -cb on ".ry"; setAttr -k off -cb on ".rz"; setAttr -cb on ".ro"; - setAttr ".s" -type "double3" 1.2929668245661805 1.292966824566179 1.2929668245661805 ; + setAttr ".s" -type "double3" 1.2929668245661803 1.2929668245661792 1.292966824566181 ; setAttr -k off -cb on ".sx"; setAttr -k off -cb on ".sy"; setAttr -k off -cb on ".sz"; setAttr ".comp_type" -type "string" "chain_01"; setAttr ".comp_name" -type "string" "finger"; setAttr ".comp_side" -type "string" "R"; - setAttr ".comp_index" 3; setAttr ".connector" -type "string" "standard"; setAttr ".ui_host" -type "string" ""; setAttr ".ctlGrp" -type "string" ""; - setAttr ".blend" 1; - setAttr ".neutralpose" yes; setAttr ".ikrefarray" -type "string" ""; - setAttr ".parentJointIndex" -1; createNode nurbsCurve -n "finger_R3_rootShape" -p "finger_R3_root"; - rename -uid "C256E0FB-419C-D5E6-A3D5-2DA57D240DD0"; + rename -uid "0B67E883-4E1B-22DC-A0C6-8CBFC2CBE083"; setAttr ".ihi" 0; setAttr -k off ".v"; setAttr ".ove" yes; @@ -9126,8 +9056,8 @@ createNode nurbsCurve -n "finger_R3_rootShape" -p "finger_R3_root"; 0.25 0 0 -0.25 0 0 ; -createNode nurbsCurve -n "finger_R3_root1Shape" -p "finger_R3_root"; - rename -uid "7D46B728-4AF7-57CA-3826-94BA3D59B0ED"; +createNode nurbsCurve -n "finger_R3_root4Shape" -p "finger_R3_root"; + rename -uid "49579A6C-4531-8138-FA8D-39B7F0357982"; setAttr ".ihi" 0; setAttr -k off ".v"; setAttr ".ove" yes; @@ -9139,8 +9069,8 @@ createNode nurbsCurve -n "finger_R3_root1Shape" -p "finger_R3_root"; 0 0.25 0 0 -0.25 0 ; -createNode nurbsCurve -n "finger_R3_root2Shape" -p "finger_R3_root"; - rename -uid "818A8679-4C95-5EB7-9A01-2EA0599BAA76"; +createNode nurbsCurve -n "finger_R3_root5Shape" -p "finger_R3_root"; + rename -uid "9611491D-4A3B-C66F-DCE9-7CB4EB0CAC11"; setAttr ".ihi" 0; setAttr -k off ".v"; setAttr ".ove" yes; @@ -9152,8 +9082,8 @@ createNode nurbsCurve -n "finger_R3_root2Shape" -p "finger_R3_root"; 0 0 0.25 0 0 -0.25 ; -createNode nurbsCurve -n "finger_R3_root3Shape" -p "finger_R3_root"; - rename -uid "7643BB39-4735-B5B3-5329-2489FD8B4500"; +createNode nurbsCurve -n "finger_R3_root6Shape" -p "finger_R3_root"; + rename -uid "8E875A67-4FA8-E734-CFB2-14A5BCBC1C37"; setAttr ".ihi" 0; setAttr -k off ".v"; setAttr ".ove" yes; @@ -9180,10 +9110,10 @@ createNode nurbsCurve -n "finger_R3_root3Shape" -p "finger_R3_root"; -0.125 -0.125 -0.125 ; createNode transform -n "finger_R3_0_loc" -p "finger_R3_root"; - rename -uid "F08F9F7E-4DE8-1FDB-4461-21AB6529BD84"; + rename -uid "ADD7E061-4F81-9FD5-042C-3EB45606A74D"; addAttr -ci true -sn "isGearGuide" -ln "isGearGuide" -dv 1 -min 0 -max 1 -at "bool"; setAttr -k off -cb on ".v"; - setAttr ".t" -type "double3" 0.84766209830561756 2.1316282072803006e-014 -4.4408920985006262e-015 ; + setAttr ".t" -type "double3" 0.84766209830561312 2.8421709430404007e-014 -3.5527136788005009e-015 ; setAttr -k off -cb on ".tx"; setAttr -k off -cb on ".ty"; setAttr -k off -cb on ".tz"; @@ -9191,11 +9121,12 @@ createNode transform -n "finger_R3_0_loc" -p "finger_R3_root"; setAttr -k off -cb on ".ry"; setAttr -k off -cb on ".rz"; setAttr -cb on ".ro"; + setAttr ".s" -type "double3" 1 1.0000000000000002 1 ; setAttr -k off -cb on ".sx"; setAttr -k off -cb on ".sy"; setAttr -k off -cb on ".sz"; createNode nurbsCurve -n "finger_R3_0_locShape" -p "finger_R3_0_loc"; - rename -uid "6B56ACDF-443F-0E24-4221-25B98E2FC248"; + rename -uid "4F6393F1-4760-6609-F8CC-42BAC6818FA5"; setAttr ".ihi" 0; setAttr -k off ".v"; setAttr ".ove" yes; @@ -9207,8 +9138,8 @@ createNode nurbsCurve -n "finger_R3_0_locShape" -p "finger_R3_0_loc"; 0.25 0 0 -0.25 0 0 ; -createNode nurbsCurve -n "finger_R3_0_loc1Shape" -p "finger_R3_0_loc"; - rename -uid "1428CEA8-41C1-1C13-8020-8ABC40F73280"; +createNode nurbsCurve -n "finger_R3_0_loc4Shape" -p "finger_R3_0_loc"; + rename -uid "6D926D25-442C-958C-A943-CC88F86A5109"; setAttr ".ihi" 0; setAttr -k off ".v"; setAttr ".ove" yes; @@ -9220,8 +9151,8 @@ createNode nurbsCurve -n "finger_R3_0_loc1Shape" -p "finger_R3_0_loc"; 0 0.25 0 0 -0.25 0 ; -createNode nurbsCurve -n "finger_R3_0_loc2Shape" -p "finger_R3_0_loc"; - rename -uid "B2DD461C-415F-B06E-C381-FFB6AFAE15CF"; +createNode nurbsCurve -n "finger_R3_0_loc5Shape" -p "finger_R3_0_loc"; + rename -uid "7064B1FB-4981-C27C-E283-489BB35BC403"; setAttr ".ihi" 0; setAttr -k off ".v"; setAttr ".ove" yes; @@ -9233,8 +9164,8 @@ createNode nurbsCurve -n "finger_R3_0_loc2Shape" -p "finger_R3_0_loc"; 0 0 0.25 0 0 -0.25 ; -createNode nurbsCurve -n "finger_R3_0_loc3Shape" -p "finger_R3_0_loc"; - rename -uid "CE7CA5D8-4B8F-7BDD-EAEB-4AACA8CF0CFC"; +createNode nurbsCurve -n "finger_R3_0_loc6Shape" -p "finger_R3_0_loc"; + rename -uid "87AFC775-4099-D7F9-8BFF-86B34F45D69A"; setAttr ".ihi" 0; setAttr -k off ".v"; setAttr ".ove" yes; @@ -9251,8 +9182,8 @@ createNode nurbsCurve -n "finger_R3_0_loc3Shape" -p "finger_R3_0_loc"; 0 -0.1875 0 -0.1875 0 0 ; -createNode nurbsCurve -n "finger_R3_0_loc3_0crvShape" -p "finger_R3_0_loc"; - rename -uid "C22BCEE9-40C0-352B-E9DA-19B25979CE92"; +createNode nurbsCurve -n "finger_R3_0_loc6_0crvShape" -p "finger_R3_0_loc"; + rename -uid "A1C03AAC-4399-B438-331A-F9A3B60F0715"; setAttr ".ihi" 0; setAttr -k off ".v"; setAttr ".ove" yes; @@ -9269,8 +9200,8 @@ createNode nurbsCurve -n "finger_R3_0_loc3_0crvShape" -p "finger_R3_0_loc"; 0 0 -0.1875 -0.1875 0 0 ; -createNode nurbsCurve -n "finger_R3_0_loc3_1crvShape" -p "finger_R3_0_loc"; - rename -uid "CDDFA705-4DA2-E058-3E90-AD9991D88582"; +createNode nurbsCurve -n "finger_R3_0_loc6_1crvShape" -p "finger_R3_0_loc"; + rename -uid "35106F48-4AA3-B395-B342-8DA7E8EF2CC9"; setAttr ".ihi" 0; setAttr -k off ".v"; setAttr ".ove" yes; @@ -9288,10 +9219,10 @@ createNode nurbsCurve -n "finger_R3_0_loc3_1crvShape" -p "finger_R3_0_loc"; 0 0 -0.1875 ; createNode transform -n "finger_R3_1_loc" -p "finger_R3_0_loc"; - rename -uid "8F013ED6-460E-6181-152E-498AD0A01CFE"; + rename -uid "8A448344-457A-503A-BD92-C1BB8D4083C8"; addAttr -ci true -sn "isGearGuide" -ln "isGearGuide" -dv 1 -min 0 -max 1 -at "bool"; setAttr -k off -cb on ".v"; - setAttr ".t" -type "double3" 0.57524361070876662 -2.1316282072803006e-014 -2.2204460492503131e-016 ; + setAttr ".t" -type "double3" 0.57524361070876928 -2.1316282072803006e-014 -2.2204460492503131e-015 ; setAttr -k off -cb on ".tx"; setAttr -k off -cb on ".ty"; setAttr -k off -cb on ".tz"; @@ -9299,12 +9230,12 @@ createNode transform -n "finger_R3_1_loc" -p "finger_R3_0_loc"; setAttr -k off -cb on ".ry"; setAttr -k off -cb on ".rz"; setAttr -cb on ".ro"; - setAttr ".s" -type "double3" 1 0.99999999999999933 1.0000000000000002 ; + setAttr ".s" -type "double3" 1.0000000000000002 0.99999999999999944 1.0000000000000002 ; setAttr -k off -cb on ".sx"; setAttr -k off -cb on ".sy"; setAttr -k off -cb on ".sz"; createNode nurbsCurve -n "finger_R3_1_locShape" -p "finger_R3_1_loc"; - rename -uid "48BD07E2-4382-32D6-AE28-259C03C78A81"; + rename -uid "81916267-44E7-D8F5-B925-FBB316FCAE95"; setAttr ".ihi" 0; setAttr -k off ".v"; setAttr ".ove" yes; @@ -9316,8 +9247,8 @@ createNode nurbsCurve -n "finger_R3_1_locShape" -p "finger_R3_1_loc"; 0.25 0 0 -0.25 0 0 ; -createNode nurbsCurve -n "finger_R3_1_loc1Shape" -p "finger_R3_1_loc"; - rename -uid "8AAF8940-4595-495F-65B6-5BBD21D7A66B"; +createNode nurbsCurve -n "finger_R3_1_loc4Shape" -p "finger_R3_1_loc"; + rename -uid "5D2DC5C7-4C2E-3B64-EB28-C583133324F1"; setAttr ".ihi" 0; setAttr -k off ".v"; setAttr ".ove" yes; @@ -9329,8 +9260,8 @@ createNode nurbsCurve -n "finger_R3_1_loc1Shape" -p "finger_R3_1_loc"; 0 0.25 0 0 -0.25 0 ; -createNode nurbsCurve -n "finger_R3_1_loc2Shape" -p "finger_R3_1_loc"; - rename -uid "22B035F8-4B34-1E22-C90C-0CBA3B76D811"; +createNode nurbsCurve -n "finger_R3_1_loc5Shape" -p "finger_R3_1_loc"; + rename -uid "F054A5B3-41CC-F313-2748-209D5CAF4709"; setAttr ".ihi" 0; setAttr -k off ".v"; setAttr ".ove" yes; @@ -9342,8 +9273,8 @@ createNode nurbsCurve -n "finger_R3_1_loc2Shape" -p "finger_R3_1_loc"; 0 0 0.25 0 0 -0.25 ; -createNode nurbsCurve -n "finger_R3_1_loc3Shape" -p "finger_R3_1_loc"; - rename -uid "C035B198-4369-2D53-985A-ABA4EE59A5B3"; +createNode nurbsCurve -n "finger_R3_1_loc6Shape" -p "finger_R3_1_loc"; + rename -uid "27AB33BC-4115-D1AB-7AA3-1F8CE23A6768"; setAttr ".ihi" 0; setAttr -k off ".v"; setAttr ".ove" yes; @@ -9360,8 +9291,8 @@ createNode nurbsCurve -n "finger_R3_1_loc3Shape" -p "finger_R3_1_loc"; 0 -0.1875 0 -0.1875 0 0 ; -createNode nurbsCurve -n "finger_R3_1_loc3_0crvShape" -p "finger_R3_1_loc"; - rename -uid "8F40B3B2-4FA1-EA73-2128-1FBA9FB45445"; +createNode nurbsCurve -n "finger_R3_1_loc6_0crvShape" -p "finger_R3_1_loc"; + rename -uid "CF62549A-4B1F-1A9B-B2F9-BDBFB0A111B1"; setAttr ".ihi" 0; setAttr -k off ".v"; setAttr ".ove" yes; @@ -9378,8 +9309,8 @@ createNode nurbsCurve -n "finger_R3_1_loc3_0crvShape" -p "finger_R3_1_loc"; 0 0 -0.1875 -0.1875 0 0 ; -createNode nurbsCurve -n "finger_R3_1_loc3_1crvShape" -p "finger_R3_1_loc"; - rename -uid "CE053136-4DAE-0375-F929-8E96E5F2D1C4"; +createNode nurbsCurve -n "finger_R3_1_loc6_1crvShape" -p "finger_R3_1_loc"; + rename -uid "5D47F2A8-4A65-0C39-92AE-2FBAA0B487CA"; setAttr ".ihi" 0; setAttr -k off ".v"; setAttr ".ove" yes; @@ -9397,10 +9328,10 @@ createNode nurbsCurve -n "finger_R3_1_loc3_1crvShape" -p "finger_R3_1_loc"; 0 0 -0.1875 ; createNode transform -n "finger_R3_2_loc" -p "finger_R3_1_loc"; - rename -uid "E8873F63-4740-3638-8829-D19E9B0379C5"; + rename -uid "F940BD21-4BFA-9187-5EDC-C784685C917C"; addAttr -ci true -sn "isGearGuide" -ln "isGearGuide" -dv 1 -min 0 -max 1 -at "bool"; setAttr -k off -cb on ".v"; - setAttr ".t" -type "double3" 0.31616177259193545 0 0 ; + setAttr ".t" -type "double3" 0.31616177259193279 3.5527136788005009e-015 1.3322676295501878e-015 ; setAttr -k off -cb on ".tx"; setAttr -k off -cb on ".ty"; setAttr -k off -cb on ".tz"; @@ -9408,12 +9339,12 @@ createNode transform -n "finger_R3_2_loc" -p "finger_R3_1_loc"; setAttr -k off -cb on ".ry"; setAttr -k off -cb on ".rz"; setAttr -cb on ".ro"; - setAttr ".s" -type "double3" 0.99999999999999956 1.0000000000000018 1.0000000000000004 ; + setAttr ".s" -type "double3" 0.99999999999999956 1.000000000000002 1.0000000000000004 ; setAttr -k off -cb on ".sx"; setAttr -k off -cb on ".sy"; setAttr -k off -cb on ".sz"; createNode nurbsCurve -n "finger_R3_2_locShape" -p "finger_R3_2_loc"; - rename -uid "F83E85A5-49CD-6C0F-45E6-E58E390DB3EF"; + rename -uid "92A01921-4DD1-7954-D53C-06BBB8E53193"; setAttr ".ihi" 0; setAttr -k off ".v"; setAttr ".ove" yes; @@ -9425,8 +9356,8 @@ createNode nurbsCurve -n "finger_R3_2_locShape" -p "finger_R3_2_loc"; 0.25 0 0 -0.25 0 0 ; -createNode nurbsCurve -n "finger_R3_2_loc1Shape" -p "finger_R3_2_loc"; - rename -uid "B8BD9840-4E29-2647-A850-B881A2E4424F"; +createNode nurbsCurve -n "finger_R3_2_loc4Shape" -p "finger_R3_2_loc"; + rename -uid "A423738D-47B7-38B0-3CB4-14A1000EA314"; setAttr ".ihi" 0; setAttr -k off ".v"; setAttr ".ove" yes; @@ -9438,8 +9369,8 @@ createNode nurbsCurve -n "finger_R3_2_loc1Shape" -p "finger_R3_2_loc"; 0 0.25 0 0 -0.25 0 ; -createNode nurbsCurve -n "finger_R3_2_loc2Shape" -p "finger_R3_2_loc"; - rename -uid "032CC153-4AC2-C534-76B3-9A8969D9768F"; +createNode nurbsCurve -n "finger_R3_2_loc5Shape" -p "finger_R3_2_loc"; + rename -uid "E0D81BD6-4B61-613D-E063-66A450900808"; setAttr ".ihi" 0; setAttr -k off ".v"; setAttr ".ove" yes; @@ -9451,8 +9382,8 @@ createNode nurbsCurve -n "finger_R3_2_loc2Shape" -p "finger_R3_2_loc"; 0 0 0.25 0 0 -0.25 ; -createNode nurbsCurve -n "finger_R3_2_loc3Shape" -p "finger_R3_2_loc"; - rename -uid "FF6B0303-42EC-E0D3-5621-2BAF2C3733F8"; +createNode nurbsCurve -n "finger_R3_2_loc6Shape" -p "finger_R3_2_loc"; + rename -uid "BDE8C67A-4D29-5318-6E7D-A6ABF0E821D8"; setAttr ".ihi" 0; setAttr -k off ".v"; setAttr ".ove" yes; @@ -9469,8 +9400,8 @@ createNode nurbsCurve -n "finger_R3_2_loc3Shape" -p "finger_R3_2_loc"; 0 -0.1875 0 -0.1875 0 0 ; -createNode nurbsCurve -n "finger_R3_2_loc3_0crvShape" -p "finger_R3_2_loc"; - rename -uid "35028EF3-43FF-1D95-B066-00A82CE1BF1C"; +createNode nurbsCurve -n "finger_R3_2_loc6_0crvShape" -p "finger_R3_2_loc"; + rename -uid "6EB75CCF-43B5-1DBF-73F1-769860A9AB8A"; setAttr ".ihi" 0; setAttr -k off ".v"; setAttr ".ove" yes; @@ -9487,8 +9418,8 @@ createNode nurbsCurve -n "finger_R3_2_loc3_0crvShape" -p "finger_R3_2_loc"; 0 0 -0.1875 -0.1875 0 0 ; -createNode nurbsCurve -n "finger_R3_2_loc3_1crvShape" -p "finger_R3_2_loc"; - rename -uid "8B2F5D71-4A5D-0496-B3BE-0D8909E16A16"; +createNode nurbsCurve -n "finger_R3_2_loc6_1crvShape" -p "finger_R3_2_loc"; + rename -uid "36C61695-4F98-6A09-F884-FBA35A3E20CA"; setAttr ".ihi" 0; setAttr -k off ".v"; setAttr ".ove" yes; @@ -9506,7 +9437,7 @@ createNode nurbsCurve -n "finger_R3_2_loc3_1crvShape" -p "finger_R3_2_loc"; 0 0 -0.1875 ; createNode transform -n "finger_R3_blade" -p "finger_R3_root"; - rename -uid "1003E04C-4513-E677-F3FA-17896D811405"; + rename -uid "95CEF167-4D23-0588-82CA-DFBC5448A90A"; addAttr -ci true -k true -sn "bladeRollOffset" -ln "bladeRollOffset" -at "float"; setAttr -l on -k off -cb on ".v"; setAttr -k off -cb on ".tx"; @@ -9516,12 +9447,13 @@ createNode transform -n "finger_R3_blade" -p "finger_R3_root"; setAttr -k off -cb on ".ry"; setAttr -k off -cb on ".rz"; setAttr -cb on ".ro"; + setAttr ".s" -type "double3" 1 1.0000000000000002 1 ; setAttr -l on -k off -cb on ".sx"; setAttr -l on -k off -cb on ".sy"; setAttr -l on -k off -cb on ".sz"; setAttr -k on ".bladeRollOffset"; createNode nurbsCurve -n "finger_R3_bladeShape" -p "finger_R3_blade"; - rename -uid "6F090738-4763-9846-23C1-CB9CB5303B7E"; + rename -uid "24ED18EE-4B9B-76E5-B2DC-99969D29149E"; setAttr ".ihi" 0; setAttr -k off ".v"; setAttr ".ove" yes; @@ -9531,12 +9463,12 @@ createNode nurbsCurve -n "finger_R3_bladeShape" -p "finger_R3_blade"; 4 0 1 2 3 4 0 0 0 - 0.77578009473970833 0 0 - 0 0.25859336491323609 0 + 0.7757800947397081 0 0 + 0 0.25859336491323603 0 0 0 0 ; -createNode aimConstraint -n "finger_R3_blade_aimConstraint1" -p "finger_R3_blade"; - rename -uid "1867BDF2-4423-27A8-9A61-E49D39E52DE1"; +createNode aimConstraint -n "finger_R3_blade_aimConstraint2" -p "finger_R3_blade"; + rename -uid "FCE53984-41CD-860A-8561-13985B753EA4"; addAttr -dcb 0 -ci true -sn "w0" -ln "finger_R3_0_locW0" -dv 1 -at "double"; setAttr -k on ".nds"; setAttr -k off ".v"; @@ -9552,8 +9484,8 @@ createNode aimConstraint -n "finger_R3_blade_aimConstraint1" -p "finger_R3_blade setAttr ".erp" yes; setAttr ".wut" 2; setAttr -k on ".w0"; -createNode pointConstraint -n "finger_R3_blade_pointConstraint1" -p "finger_R3_blade"; - rename -uid "FC169F02-40F6-FBF6-2800-9097818DCF41"; +createNode pointConstraint -n "finger_R3_blade_pointConstraint2" -p "finger_R3_blade"; + rename -uid "D60795D2-43E4-672A-0F07-AEACC6B9F59A"; addAttr -dcb 0 -ci true -k true -sn "w0" -ln "finger_R3_rootW0" -dv 1 -min 0 -at "double"; setAttr -k on ".nds"; setAttr -k off ".v"; @@ -9567,22 +9499,22 @@ createNode pointConstraint -n "finger_R3_blade_pointConstraint1" -p "finger_R3_b setAttr -k off ".sy"; setAttr -k off ".sz"; setAttr ".erp" yes; - setAttr ".rst" -type "double3" 1.7763568394002505e-015 3.5527136788005009e-015 4.4408920985006262e-016 ; + setAttr ".rst" -type "double3" -1.7763568394002505e-015 0 4.4408920985006262e-016 ; setAttr -k on ".w0"; createNode transform -n "finger_R3_crv" -p "finger_R3_root"; - rename -uid "3CDF3969-49B5-AAC9-C922-0C80D76BB59C"; + rename -uid "B80D7D18-4E79-644B-7A1C-FEB947E407F3"; setAttr ".ovdt" 1; setAttr ".ove" yes; - setAttr ".t" -type "double3" 8.1560938646754479 -29.032786855763447 1.4804327725048685 ; - setAttr ".r" -type "double3" 7.5791665394145138 165.69575562109918 49.348303523761878 ; - setAttr ".s" -type "double3" 2.632098310678614 2.6320983106786016 -2.6320983106786078 ; + setAttr ".t" -type "double3" 8.1560938646754462 -29.03278685576344 1.4804327725052238 ; + setAttr ".r" -type "double3" 7.579166539414997 165.69575562109972 49.348303523762006 ; + setAttr ".s" -type "double3" 2.6320983106786136 2.6320983106786024 -2.6320983106786064 ; createNode nurbsCurve -n "finger_R3_crvShape" -p "finger_R3_crv"; - rename -uid "82EEB436-48A9-9859-1715-5E888349E41F"; + rename -uid "2A58F4C9-445B-FDF0-EBDF-128F4CFBD242"; setAttr -k off ".v"; setAttr -s 4 ".iog[0].og"; setAttr ".tw" yes; createNode nurbsCurve -n "finger_R3_crvShapeOrig" -p "finger_R3_crv"; - rename -uid "B5F2554F-4E3F-92ED-5906-F28FA2246C3E"; + rename -uid "77899D4E-464C-39AF-1634-929B3994958B"; setAttr -k off ".v"; setAttr ".io" yes; setAttr ".cc" -type "nurbsCurve" @@ -9595,48 +9527,44 @@ createNode nurbsCurve -n "finger_R3_crvShapeOrig" -p "finger_R3_crv"; 0 0 0 ; createNode transform -n "finger_R2_root" -p "meta_R0_1_loc"; - rename -uid "D80A5A88-4211-7031-22C4-6FB9B8C52671"; + rename -uid "A6D94801-4DB5-0F92-6C8B-929E1D7A1D1C"; addAttr -ci true -sn "isGearGuide" -ln "isGearGuide" -dv 1 -min 0 -max 1 -at "bool"; addAttr -ci true -sn "comp_type" -ln "comp_type" -dt "string"; addAttr -ci true -sn "comp_name" -ln "comp_name" -dt "string"; addAttr -ci true -sn "comp_side" -ln "comp_side" -dt "string"; - addAttr -ci true -sn "comp_index" -ln "comp_index" -min 0 -at "long"; + addAttr -ci true -sn "comp_index" -ln "comp_index" -dv 2 -min 0 -at "long"; addAttr -ci true -sn "connector" -ln "connector" -dt "string"; addAttr -ci true -sn "ui_host" -ln "ui_host" -dt "string"; addAttr -ci true -sn "ctlGrp" -ln "ctlGrp" -dt "string"; addAttr -ci true -sn "mode" -ln "mode" -min 0 -at "long"; - addAttr -ci true -sn "blend" -ln "blend" -min 0 -max 1 -at "double"; - addAttr -ci true -sn "neutralpose" -ln "neutralpose" -min 0 -max 1 -at "bool"; + addAttr -ci true -sn "blend" -ln "blend" -dv 1 -min 0 -max 1 -at "double"; + addAttr -ci true -sn "neutralpose" -ln "neutralpose" -dv 1 -min 0 -max 1 -at "bool"; addAttr -ci true -sn "ikrefarray" -ln "ikrefarray" -dt "string"; addAttr -ci true -sn "useIndex" -ln "useIndex" -min 0 -max 1 -at "bool"; - addAttr -ci true -sn "parentJointIndex" -ln "parentJointIndex" -at "long"; + addAttr -ci true -sn "parentJointIndex" -ln "parentJointIndex" -dv -1 -at "long"; setAttr -k off -cb on ".v"; - setAttr ".t" -type "double3" 0.21404201232122322 -0.17620518664705287 2.8414845756647278 ; + setAttr ".t" -type "double3" 0.21404201232122189 -0.17620518664705287 2.8414845756647278 ; setAttr -k off -cb on ".tx"; setAttr -k off -cb on ".ty"; setAttr -k off -cb on ".tz"; - setAttr ".r" -type "double3" 19.114415121375906 -82.086889237978653 -14.829711404956601 ; + setAttr ".r" -type "double3" 19.114415121377579 -82.086889237978667 -14.829711404956637 ; setAttr -k off -cb on ".rx"; setAttr -k off -cb on ".ry"; setAttr -k off -cb on ".rz"; setAttr -cb on ".ro"; - setAttr ".s" -type "double3" 1.292966824566179 1.2929668245661785 1.2929668245661796 ; + setAttr ".s" -type "double3" 1.2929668245661796 1.2929668245661781 1.2929668245661798 ; setAttr -k off -cb on ".sx"; setAttr -k off -cb on ".sy"; setAttr -k off -cb on ".sz"; setAttr ".comp_type" -type "string" "chain_01"; setAttr ".comp_name" -type "string" "finger"; setAttr ".comp_side" -type "string" "R"; - setAttr ".comp_index" 2; setAttr ".connector" -type "string" "standard"; setAttr ".ui_host" -type "string" ""; setAttr ".ctlGrp" -type "string" ""; - setAttr ".blend" 1; - setAttr ".neutralpose" yes; setAttr ".ikrefarray" -type "string" ""; - setAttr ".parentJointIndex" -1; createNode nurbsCurve -n "finger_R2_rootShape" -p "finger_R2_root"; - rename -uid "73EA0D0A-4AB7-1528-9412-3BB9AEC88392"; + rename -uid "5A49D250-431F-DB03-14F7-828DB6690AEC"; setAttr ".ihi" 0; setAttr -k off ".v"; setAttr ".ove" yes; @@ -9648,8 +9576,8 @@ createNode nurbsCurve -n "finger_R2_rootShape" -p "finger_R2_root"; 0.25 0 0 -0.25 0 0 ; -createNode nurbsCurve -n "finger_R2_root1Shape" -p "finger_R2_root"; - rename -uid "AA6E83C8-433E-3D88-9BBB-B397C00B0171"; +createNode nurbsCurve -n "finger_R2_root4Shape" -p "finger_R2_root"; + rename -uid "B9EB42C8-4748-CA48-FF3C-68AB72FB0236"; setAttr ".ihi" 0; setAttr -k off ".v"; setAttr ".ove" yes; @@ -9661,8 +9589,8 @@ createNode nurbsCurve -n "finger_R2_root1Shape" -p "finger_R2_root"; 0 0.25 0 0 -0.25 0 ; -createNode nurbsCurve -n "finger_R2_root2Shape" -p "finger_R2_root"; - rename -uid "57BC1887-4A79-CE15-6033-FAAABFB1CC57"; +createNode nurbsCurve -n "finger_R2_root5Shape" -p "finger_R2_root"; + rename -uid "C7C85716-42DA-3EB0-7294-638BBFBEC8C5"; setAttr ".ihi" 0; setAttr -k off ".v"; setAttr ".ove" yes; @@ -9674,8 +9602,8 @@ createNode nurbsCurve -n "finger_R2_root2Shape" -p "finger_R2_root"; 0 0 0.25 0 0 -0.25 ; -createNode nurbsCurve -n "finger_R2_root3Shape" -p "finger_R2_root"; - rename -uid "992D5119-4B27-2B93-0909-37920BA8268E"; +createNode nurbsCurve -n "finger_R2_root6Shape" -p "finger_R2_root"; + rename -uid "62F41753-4AE4-4B7C-741A-EF82271F63B8"; setAttr ".ihi" 0; setAttr -k off ".v"; setAttr ".ove" yes; @@ -9702,10 +9630,10 @@ createNode nurbsCurve -n "finger_R2_root3Shape" -p "finger_R2_root"; -0.125 -0.125 -0.125 ; createNode transform -n "finger_R2_0_loc" -p "finger_R2_root"; - rename -uid "BB622FF6-4645-00D3-7EED-EBABF8BCC145"; + rename -uid "1C002435-4A78-BA21-F276-6BABFEC460B0"; addAttr -ci true -sn "isGearGuide" -ln "isGearGuide" -dv 1 -min 0 -max 1 -at "bool"; setAttr -k off -cb on ".v"; - setAttr ".t" -type "double3" 0.9450138721740764 -2.1316282072803006e-014 3.5527136788005009e-015 ; + setAttr ".t" -type "double3" 0.94501387217407817 -1.4210854715202004e-014 2.886579864025407e-015 ; setAttr -k off -cb on ".tx"; setAttr -k off -cb on ".ty"; setAttr -k off -cb on ".tz"; @@ -9713,12 +9641,12 @@ createNode transform -n "finger_R2_0_loc" -p "finger_R2_root"; setAttr -k off -cb on ".ry"; setAttr -k off -cb on ".rz"; setAttr -cb on ".ro"; - setAttr ".s" -type "double3" 1.0000000000000004 1.0000000000000009 1.0000000000000007 ; + setAttr ".s" -type "double3" 1.0000000000000002 1.0000000000000011 1.0000000000000007 ; setAttr -k off -cb on ".sx"; setAttr -k off -cb on ".sy"; setAttr -k off -cb on ".sz"; createNode nurbsCurve -n "finger_R2_0_locShape" -p "finger_R2_0_loc"; - rename -uid "6FD4EB1A-47E8-07C2-9530-E1B02B10E4FA"; + rename -uid "0588D26D-4BA9-AB82-3A14-4297EEAB2151"; setAttr ".ihi" 0; setAttr -k off ".v"; setAttr ".ove" yes; @@ -9730,8 +9658,8 @@ createNode nurbsCurve -n "finger_R2_0_locShape" -p "finger_R2_0_loc"; 0.25 0 0 -0.25 0 0 ; -createNode nurbsCurve -n "finger_R2_0_loc1Shape" -p "finger_R2_0_loc"; - rename -uid "0F8755AE-464A-88DE-CA0A-D0BAC0D3D0DD"; +createNode nurbsCurve -n "finger_R2_0_loc4Shape" -p "finger_R2_0_loc"; + rename -uid "D7711F29-4446-EE10-C1C1-F7B55EBB2459"; setAttr ".ihi" 0; setAttr -k off ".v"; setAttr ".ove" yes; @@ -9743,8 +9671,8 @@ createNode nurbsCurve -n "finger_R2_0_loc1Shape" -p "finger_R2_0_loc"; 0 0.25 0 0 -0.25 0 ; -createNode nurbsCurve -n "finger_R2_0_loc2Shape" -p "finger_R2_0_loc"; - rename -uid "BD2BF688-42DF-6EAB-E1C0-1FBD3B7C1DAC"; +createNode nurbsCurve -n "finger_R2_0_loc5Shape" -p "finger_R2_0_loc"; + rename -uid "425B1BF5-4549-4A01-26C8-708794A7AAB7"; setAttr ".ihi" 0; setAttr -k off ".v"; setAttr ".ove" yes; @@ -9756,8 +9684,8 @@ createNode nurbsCurve -n "finger_R2_0_loc2Shape" -p "finger_R2_0_loc"; 0 0 0.25 0 0 -0.25 ; -createNode nurbsCurve -n "finger_R2_0_loc3Shape" -p "finger_R2_0_loc"; - rename -uid "5E072793-46C8-0F6A-63F6-4D96DCED19C1"; +createNode nurbsCurve -n "finger_R2_0_loc6Shape" -p "finger_R2_0_loc"; + rename -uid "205E131C-4ECE-0E2A-83E9-B3A597BFAE74"; setAttr ".ihi" 0; setAttr -k off ".v"; setAttr ".ove" yes; @@ -9774,8 +9702,8 @@ createNode nurbsCurve -n "finger_R2_0_loc3Shape" -p "finger_R2_0_loc"; 0 -0.1875 0 -0.1875 0 0 ; -createNode nurbsCurve -n "finger_R2_0_loc3_0crvShape" -p "finger_R2_0_loc"; - rename -uid "5B9EC0A1-46C6-696C-6F0F-919B372A8CF5"; +createNode nurbsCurve -n "finger_R2_0_loc6_0crvShape" -p "finger_R2_0_loc"; + rename -uid "21E508F1-4683-0A37-F273-F49FFD9B69E8"; setAttr ".ihi" 0; setAttr -k off ".v"; setAttr ".ove" yes; @@ -9792,8 +9720,8 @@ createNode nurbsCurve -n "finger_R2_0_loc3_0crvShape" -p "finger_R2_0_loc"; 0 0 -0.1875 -0.1875 0 0 ; -createNode nurbsCurve -n "finger_R2_0_loc3_1crvShape" -p "finger_R2_0_loc"; - rename -uid "566AF89F-495B-9E9E-5FB8-54AF2F7280D8"; +createNode nurbsCurve -n "finger_R2_0_loc6_1crvShape" -p "finger_R2_0_loc"; + rename -uid "26E28634-4B53-E790-AEDD-C6973076E8C5"; setAttr ".ihi" 0; setAttr -k off ".v"; setAttr ".ove" yes; @@ -9811,10 +9739,10 @@ createNode nurbsCurve -n "finger_R2_0_loc3_1crvShape" -p "finger_R2_0_loc"; 0 0 -0.1875 ; createNode transform -n "finger_R2_1_loc" -p "finger_R2_0_loc"; - rename -uid "B9BC7598-4ABF-F6A3-08EC-FE909E8B1C82"; + rename -uid "11B3449A-493B-C049-03AE-01B1448EBCAC"; addAttr -ci true -sn "isGearGuide" -ln "isGearGuide" -dv 1 -min 0 -max 1 -at "bool"; setAttr -k off -cb on ".v"; - setAttr ".t" -type "double3" 0.76775488587174934 2.1316282072803006e-014 0 ; + setAttr ".t" -type "double3" 0.76775488587174223 2.1316282072803006e-014 0 ; setAttr -k off -cb on ".tx"; setAttr -k off -cb on ".ty"; setAttr -k off -cb on ".tz"; @@ -9822,12 +9750,12 @@ createNode transform -n "finger_R2_1_loc" -p "finger_R2_0_loc"; setAttr -k off -cb on ".ry"; setAttr -k off -cb on ".rz"; setAttr -cb on ".ro"; - setAttr ".s" -type "double3" 0.99999999999999967 0.99999999999999967 0.99999999999999922 ; + setAttr ".s" -type "double3" 0.99999999999999944 0.99999999999999944 0.99999999999999944 ; setAttr -k off -cb on ".sx"; setAttr -k off -cb on ".sy"; setAttr -k off -cb on ".sz"; createNode nurbsCurve -n "finger_R2_1_locShape" -p "finger_R2_1_loc"; - rename -uid "2C209874-45AF-1ADF-0865-29924F25ED40"; + rename -uid "20AA3D6A-4C58-CA77-4E7F-F9AA50648EB6"; setAttr ".ihi" 0; setAttr -k off ".v"; setAttr ".ove" yes; @@ -9839,8 +9767,8 @@ createNode nurbsCurve -n "finger_R2_1_locShape" -p "finger_R2_1_loc"; 0.25 0 0 -0.25 0 0 ; -createNode nurbsCurve -n "finger_R2_1_loc1Shape" -p "finger_R2_1_loc"; - rename -uid "A20665C2-4A85-5955-8F3B-D19B0AAF9DDC"; +createNode nurbsCurve -n "finger_R2_1_loc4Shape" -p "finger_R2_1_loc"; + rename -uid "629AA319-4975-BC72-5B95-37905FEEA73D"; setAttr ".ihi" 0; setAttr -k off ".v"; setAttr ".ove" yes; @@ -9852,8 +9780,8 @@ createNode nurbsCurve -n "finger_R2_1_loc1Shape" -p "finger_R2_1_loc"; 0 0.25 0 0 -0.25 0 ; -createNode nurbsCurve -n "finger_R2_1_loc2Shape" -p "finger_R2_1_loc"; - rename -uid "D28C723A-4FD8-6E45-5787-608E896A0E14"; +createNode nurbsCurve -n "finger_R2_1_loc5Shape" -p "finger_R2_1_loc"; + rename -uid "CEE38772-4C8E-8CDE-A47B-9CA8661C41C2"; setAttr ".ihi" 0; setAttr -k off ".v"; setAttr ".ove" yes; @@ -9865,8 +9793,8 @@ createNode nurbsCurve -n "finger_R2_1_loc2Shape" -p "finger_R2_1_loc"; 0 0 0.25 0 0 -0.25 ; -createNode nurbsCurve -n "finger_R2_1_loc3Shape" -p "finger_R2_1_loc"; - rename -uid "C812BC36-4515-3414-6858-929F03422957"; +createNode nurbsCurve -n "finger_R2_1_loc6Shape" -p "finger_R2_1_loc"; + rename -uid "A7AFA673-4139-0DEE-80EA-75BE48745529"; setAttr ".ihi" 0; setAttr -k off ".v"; setAttr ".ove" yes; @@ -9883,8 +9811,8 @@ createNode nurbsCurve -n "finger_R2_1_loc3Shape" -p "finger_R2_1_loc"; 0 -0.1875 0 -0.1875 0 0 ; -createNode nurbsCurve -n "finger_R2_1_loc3_0crvShape" -p "finger_R2_1_loc"; - rename -uid "4898BEA2-46DD-DBAF-4827-8596A329FB06"; +createNode nurbsCurve -n "finger_R2_1_loc6_0crvShape" -p "finger_R2_1_loc"; + rename -uid "4BC265BF-49E1-4A33-4391-3883F38B50FB"; setAttr ".ihi" 0; setAttr -k off ".v"; setAttr ".ove" yes; @@ -9901,8 +9829,8 @@ createNode nurbsCurve -n "finger_R2_1_loc3_0crvShape" -p "finger_R2_1_loc"; 0 0 -0.1875 -0.1875 0 0 ; -createNode nurbsCurve -n "finger_R2_1_loc3_1crvShape" -p "finger_R2_1_loc"; - rename -uid "77F46FD1-41CF-715B-9F81-A689EB7CA942"; +createNode nurbsCurve -n "finger_R2_1_loc6_1crvShape" -p "finger_R2_1_loc"; + rename -uid "423B7B5D-4B44-D4F7-E4E5-89B143C04D8E"; setAttr ".ihi" 0; setAttr -k off ".v"; setAttr ".ove" yes; @@ -9920,10 +9848,10 @@ createNode nurbsCurve -n "finger_R2_1_loc3_1crvShape" -p "finger_R2_1_loc"; 0 0 -0.1875 ; createNode transform -n "finger_R2_2_loc" -p "finger_R2_1_loc"; - rename -uid "84832F55-45F7-B232-8AB1-288E34F0E663"; + rename -uid "678AB6E8-4473-CD44-CE59-F79966C4FE31"; addAttr -ci true -sn "isGearGuide" -ln "isGearGuide" -dv 1 -min 0 -max 1 -at "bool"; setAttr -k off -cb on ".v"; - setAttr ".t" -type "double3" 0.67457026674915621 -2.1316282072803006e-014 -8.8817841970012523e-016 ; + setAttr ".t" -type "double3" 0.67457026674915888 -2.1316282072803006e-014 -8.8817841970012523e-016 ; setAttr -k off -cb on ".tx"; setAttr -k off -cb on ".ty"; setAttr -k off -cb on ".tz"; @@ -9936,7 +9864,7 @@ createNode transform -n "finger_R2_2_loc" -p "finger_R2_1_loc"; setAttr -k off -cb on ".sy"; setAttr -k off -cb on ".sz"; createNode nurbsCurve -n "finger_R2_2_locShape" -p "finger_R2_2_loc"; - rename -uid "4ED6D0B1-4027-EBC5-5685-94B377964C55"; + rename -uid "30273841-43F7-939D-3D42-0FA9475783BE"; setAttr ".ihi" 0; setAttr -k off ".v"; setAttr ".ove" yes; @@ -9948,8 +9876,8 @@ createNode nurbsCurve -n "finger_R2_2_locShape" -p "finger_R2_2_loc"; 0.25 0 0 -0.25 0 0 ; -createNode nurbsCurve -n "finger_R2_2_loc1Shape" -p "finger_R2_2_loc"; - rename -uid "42C600CE-46F0-BE76-3EA0-D58A76289966"; +createNode nurbsCurve -n "finger_R2_2_loc4Shape" -p "finger_R2_2_loc"; + rename -uid "E32E99FF-4343-9EC2-E4F5-06AB356D957D"; setAttr ".ihi" 0; setAttr -k off ".v"; setAttr ".ove" yes; @@ -9961,8 +9889,8 @@ createNode nurbsCurve -n "finger_R2_2_loc1Shape" -p "finger_R2_2_loc"; 0 0.25 0 0 -0.25 0 ; -createNode nurbsCurve -n "finger_R2_2_loc2Shape" -p "finger_R2_2_loc"; - rename -uid "C0C7B415-42D5-552E-712D-C2B70C57D78B"; +createNode nurbsCurve -n "finger_R2_2_loc5Shape" -p "finger_R2_2_loc"; + rename -uid "35B65788-484A-14DE-424F-FB8E572DDE30"; setAttr ".ihi" 0; setAttr -k off ".v"; setAttr ".ove" yes; @@ -9974,8 +9902,8 @@ createNode nurbsCurve -n "finger_R2_2_loc2Shape" -p "finger_R2_2_loc"; 0 0 0.25 0 0 -0.25 ; -createNode nurbsCurve -n "finger_R2_2_loc3Shape" -p "finger_R2_2_loc"; - rename -uid "F5FF1EEB-44BE-D845-5F22-8883D573C9F3"; +createNode nurbsCurve -n "finger_R2_2_loc6Shape" -p "finger_R2_2_loc"; + rename -uid "8444E6B6-4A74-45F1-8E51-3C95C75DFD98"; setAttr ".ihi" 0; setAttr -k off ".v"; setAttr ".ove" yes; @@ -9992,8 +9920,8 @@ createNode nurbsCurve -n "finger_R2_2_loc3Shape" -p "finger_R2_2_loc"; 0 -0.1875 0 -0.1875 0 0 ; -createNode nurbsCurve -n "finger_R2_2_loc3_0crvShape" -p "finger_R2_2_loc"; - rename -uid "DE8569DF-4B98-91C8-75DA-22ABB754C76C"; +createNode nurbsCurve -n "finger_R2_2_loc6_0crvShape" -p "finger_R2_2_loc"; + rename -uid "0FC6023C-4815-978E-68B1-9EB5F2626094"; setAttr ".ihi" 0; setAttr -k off ".v"; setAttr ".ove" yes; @@ -10010,8 +9938,8 @@ createNode nurbsCurve -n "finger_R2_2_loc3_0crvShape" -p "finger_R2_2_loc"; 0 0 -0.1875 -0.1875 0 0 ; -createNode nurbsCurve -n "finger_R2_2_loc3_1crvShape" -p "finger_R2_2_loc"; - rename -uid "92058E32-4C1B-88A4-5EF5-2DB9A76FD8E3"; +createNode nurbsCurve -n "finger_R2_2_loc6_1crvShape" -p "finger_R2_2_loc"; + rename -uid "6BDB2CB8-4EBC-E4AD-349F-2AA27C71D6F6"; setAttr ".ihi" 0; setAttr -k off ".v"; setAttr ".ove" yes; @@ -10029,7 +9957,7 @@ createNode nurbsCurve -n "finger_R2_2_loc3_1crvShape" -p "finger_R2_2_loc"; 0 0 -0.1875 ; createNode transform -n "finger_R2_blade" -p "finger_R2_root"; - rename -uid "4942FE1D-4791-10BB-EB65-44B3BA0C1844"; + rename -uid "786BFF57-41F6-EA48-6510-8787F513DB22"; addAttr -ci true -k true -sn "bladeRollOffset" -ln "bladeRollOffset" -at "float"; setAttr -l on -k off -cb on ".v"; setAttr -k off -cb on ".tx"; @@ -10039,13 +9967,13 @@ createNode transform -n "finger_R2_blade" -p "finger_R2_root"; setAttr -k off -cb on ".ry"; setAttr -k off -cb on ".rz"; setAttr -cb on ".ro"; - setAttr ".s" -type "double3" 1.0000000000000004 1.0000000000000009 1.0000000000000007 ; + setAttr ".s" -type "double3" 1.0000000000000002 1.0000000000000011 1.0000000000000007 ; setAttr -l on -k off -cb on ".sx"; setAttr -l on -k off -cb on ".sy"; setAttr -l on -k off -cb on ".sz"; setAttr -k on ".bladeRollOffset"; createNode nurbsCurve -n "finger_R2_bladeShape" -p "finger_R2_blade"; - rename -uid "85BD0342-4861-A018-57DD-2BAE04402EB0"; + rename -uid "6F48DFB1-41A1-0766-9552-E7821DA06A1B"; setAttr ".ihi" 0; setAttr -k off ".v"; setAttr ".ove" yes; @@ -10055,12 +9983,12 @@ createNode nurbsCurve -n "finger_R2_bladeShape" -p "finger_R2_blade"; 4 0 1 2 3 4 0 0 0 - 0.77578009473970733 0 0 - 0 0.25859336491323576 0 + 0.77578009473970777 0 0 + 0 0.25859336491323592 0 0 0 0 ; -createNode aimConstraint -n "finger_R2_blade_aimConstraint1" -p "finger_R2_blade"; - rename -uid "E483E394-4046-83B8-2862-A59D4582892B"; +createNode aimConstraint -n "finger_R2_blade_aimConstraint2" -p "finger_R2_blade"; + rename -uid "F7B13D37-45F0-D37D-A4FD-5490758402FA"; addAttr -dcb 0 -ci true -sn "w0" -ln "finger_R2_0_locW0" -dv 1 -at "double"; setAttr -k on ".nds"; setAttr -k off ".v"; @@ -10076,8 +10004,8 @@ createNode aimConstraint -n "finger_R2_blade_aimConstraint1" -p "finger_R2_blade setAttr ".erp" yes; setAttr ".wut" 2; setAttr -k on ".w0"; -createNode pointConstraint -n "finger_R2_blade_pointConstraint1" -p "finger_R2_blade"; - rename -uid "EB481E0A-48B9-F2A2-7A0B-A7A485261B80"; +createNode pointConstraint -n "finger_R2_blade_pointConstraint2" -p "finger_R2_blade"; + rename -uid "1E118FA7-44BB-57A0-611C-EFA56626C4CD"; addAttr -dcb 0 -ci true -k true -sn "w0" -ln "finger_R2_rootW0" -dv 1 -min 0 -at "double"; setAttr -k on ".nds"; setAttr -k off ".v"; @@ -10091,22 +10019,23 @@ createNode pointConstraint -n "finger_R2_blade_pointConstraint1" -p "finger_R2_b setAttr -k off ".sy"; setAttr -k off ".sz"; setAttr ".erp" yes; - setAttr ".rst" -type "double3" 1.7763568394002505e-015 0 2.2204460492503131e-016 ; + setAttr ".rst" -type "double3" 1.7763568394002505e-015 -3.5527136788005009e-015 + -2.2204460492503131e-016 ; setAttr -k on ".w0"; createNode transform -n "finger_R2_crv" -p "finger_R2_root"; - rename -uid "6B419E28-4AD2-7842-D5EF-09982A78A2B6"; + rename -uid "4DA97A72-452D-502D-9A49-B5B2E9727D57"; setAttr ".ovdt" 1; setAttr ".ove" yes; - setAttr ".t" -type "double3" 8.0630938931309277 -29.023661369441573 1.4173349723079784 ; - setAttr ".r" -type "double3" 0.54140613099002932 178.40951950034903 47.737641631363914 ; - setAttr ".s" -type "double3" 2.632098310678614 2.6320983106786007 -2.6320983106786087 ; + setAttr ".t" -type "double3" 8.0630938931309224 -29.023661369441538 1.4173349723088247 ; + setAttr ".r" -type "double3" 0.54140613099114887 178.40951950035029 47.737641631363964 ; + setAttr ".s" -type "double3" 2.6320983106786127 2.6320983106786011 -2.6320983106786069 ; createNode nurbsCurve -n "finger_R2_crvShape" -p "finger_R2_crv"; - rename -uid "B053EDDA-44A5-41B6-0DAE-6688FB6001EE"; + rename -uid "D51751CD-40AE-1011-092C-FE8AC4AFBD41"; setAttr -k off ".v"; setAttr -s 4 ".iog[0].og"; setAttr ".tw" yes; createNode nurbsCurve -n "finger_R2_crvShapeOrig" -p "finger_R2_crv"; - rename -uid "28038A63-4A12-ABCD-CD41-8EA5DACBB420"; + rename -uid "74263412-428D-7895-8879-D49797B30F6E"; setAttr -k off ".v"; setAttr ".io" yes; setAttr ".cc" -type "nurbsCurve" @@ -10119,48 +10048,44 @@ createNode nurbsCurve -n "finger_R2_crvShapeOrig" -p "finger_R2_crv"; 0 0 0 ; createNode transform -n "finger_R1_root" -p "meta_R0_0_loc"; - rename -uid "7FF593EF-4932-B8D5-065A-35B5EFDC1C41"; + rename -uid "B970E890-4DAF-B0C8-B61F-F68058FEEEDC"; addAttr -ci true -sn "isGearGuide" -ln "isGearGuide" -dv 1 -min 0 -max 1 -at "bool"; addAttr -ci true -sn "comp_type" -ln "comp_type" -dt "string"; addAttr -ci true -sn "comp_name" -ln "comp_name" -dt "string"; addAttr -ci true -sn "comp_side" -ln "comp_side" -dt "string"; - addAttr -ci true -sn "comp_index" -ln "comp_index" -min 0 -at "long"; + addAttr -ci true -sn "comp_index" -ln "comp_index" -dv 1 -min 0 -at "long"; addAttr -ci true -sn "connector" -ln "connector" -dt "string"; addAttr -ci true -sn "ui_host" -ln "ui_host" -dt "string"; addAttr -ci true -sn "ctlGrp" -ln "ctlGrp" -dt "string"; addAttr -ci true -sn "mode" -ln "mode" -min 0 -at "long"; - addAttr -ci true -sn "blend" -ln "blend" -min 0 -max 1 -at "double"; - addAttr -ci true -sn "neutralpose" -ln "neutralpose" -min 0 -max 1 -at "bool"; + addAttr -ci true -sn "blend" -ln "blend" -dv 1 -min 0 -max 1 -at "double"; + addAttr -ci true -sn "neutralpose" -ln "neutralpose" -dv 1 -min 0 -max 1 -at "bool"; addAttr -ci true -sn "ikrefarray" -ln "ikrefarray" -dt "string"; addAttr -ci true -sn "useIndex" -ln "useIndex" -min 0 -max 1 -at "bool"; - addAttr -ci true -sn "parentJointIndex" -ln "parentJointIndex" -at "long"; + addAttr -ci true -sn "parentJointIndex" -ln "parentJointIndex" -dv -1 -at "long"; setAttr -k off -cb on ".v"; - setAttr ".t" -type "double3" -0.0077643969605958318 -0.12358406696714042 2.9483952421545805 ; + setAttr ".t" -type "double3" -0.0077643969605971641 -0.12358406696714752 2.9483952421545823 ; setAttr -k off -cb on ".tx"; setAttr -k off -cb on ".ty"; setAttr -k off -cb on ".tz"; - setAttr ".r" -type "double3" 121.34021398870114 -79.977014017422945 -112.77222628638475 ; + setAttr ".r" -type "double3" 121.34021398870063 -79.977014017422931 -112.77222628638486 ; setAttr -k off -cb on ".rx"; setAttr -k off -cb on ".ry"; setAttr -k off -cb on ".rz"; setAttr -cb on ".ro"; - setAttr ".s" -type "double3" 1.2929668245661787 1.2929668245661796 1.2929668245661794 ; + setAttr ".s" -type "double3" 1.2929668245661785 1.2929668245661794 1.2929668245661787 ; setAttr -k off -cb on ".sx"; setAttr -k off -cb on ".sy"; setAttr -k off -cb on ".sz"; setAttr ".comp_type" -type "string" "chain_01"; setAttr ".comp_name" -type "string" "finger"; setAttr ".comp_side" -type "string" "R"; - setAttr ".comp_index" 1; setAttr ".connector" -type "string" "standard"; setAttr ".ui_host" -type "string" ""; setAttr ".ctlGrp" -type "string" ""; - setAttr ".blend" 1; - setAttr ".neutralpose" yes; setAttr ".ikrefarray" -type "string" ""; - setAttr ".parentJointIndex" -1; createNode nurbsCurve -n "finger_R1_rootShape" -p "finger_R1_root"; - rename -uid "F8FC2823-48AF-689F-31C4-D28BF4C8212A"; + rename -uid "00F14569-40B7-2DA5-4040-A3A3342E47AA"; setAttr ".ihi" 0; setAttr -k off ".v"; setAttr ".ove" yes; @@ -10172,8 +10097,8 @@ createNode nurbsCurve -n "finger_R1_rootShape" -p "finger_R1_root"; 0.25 0 0 -0.25 0 0 ; -createNode nurbsCurve -n "finger_R1_root1Shape" -p "finger_R1_root"; - rename -uid "CCD03E76-4D4A-8B6E-567D-9FA42106C077"; +createNode nurbsCurve -n "finger_R1_root4Shape" -p "finger_R1_root"; + rename -uid "56D330F2-4FB6-D1A8-8C3E-4DA5191B29A8"; setAttr ".ihi" 0; setAttr -k off ".v"; setAttr ".ove" yes; @@ -10185,8 +10110,8 @@ createNode nurbsCurve -n "finger_R1_root1Shape" -p "finger_R1_root"; 0 0.25 0 0 -0.25 0 ; -createNode nurbsCurve -n "finger_R1_root2Shape" -p "finger_R1_root"; - rename -uid "A28BB270-4E4B-A58B-9DE2-86B5A54E5517"; +createNode nurbsCurve -n "finger_R1_root5Shape" -p "finger_R1_root"; + rename -uid "6661540C-4A8F-ACA3-05B4-728EA4E4CF1D"; setAttr ".ihi" 0; setAttr -k off ".v"; setAttr ".ove" yes; @@ -10198,8 +10123,8 @@ createNode nurbsCurve -n "finger_R1_root2Shape" -p "finger_R1_root"; 0 0 0.25 0 0 -0.25 ; -createNode nurbsCurve -n "finger_R1_root3Shape" -p "finger_R1_root"; - rename -uid "7174874B-4569-BEDF-86E6-769783E607E1"; +createNode nurbsCurve -n "finger_R1_root6Shape" -p "finger_R1_root"; + rename -uid "71AF5DC3-4D3D-C1C4-68C1-5F8DD4720EBA"; setAttr ".ihi" 0; setAttr -k off ".v"; setAttr ".ove" yes; @@ -10226,10 +10151,10 @@ createNode nurbsCurve -n "finger_R1_root3Shape" -p "finger_R1_root"; -0.125 -0.125 -0.125 ; createNode transform -n "finger_R1_0_loc" -p "finger_R1_root"; - rename -uid "41167DC2-48AE-7C0E-032A-7687FB04FDC3"; + rename -uid "24680FE6-40EF-CA60-E067-14865E3E065C"; addAttr -ci true -sn "isGearGuide" -ln "isGearGuide" -dv 1 -min 0 -max 1 -at "bool"; setAttr -k off -cb on ".v"; - setAttr ".t" -type "double3" 0.99999999999998224 1.7763568394002505e-014 -8.8817841970012523e-016 ; + setAttr ".t" -type "double3" 0.99999999999998224 2.1316282072803006e-014 -1.9984014443252818e-015 ; setAttr -k off -cb on ".tx"; setAttr -k off -cb on ".ty"; setAttr -k off -cb on ".tz"; @@ -10237,12 +10162,12 @@ createNode transform -n "finger_R1_0_loc" -p "finger_R1_root"; setAttr -k off -cb on ".ry"; setAttr -k off -cb on ".rz"; setAttr -cb on ".ro"; - setAttr ".s" -type "double3" 1 0.99999999999999989 1.0000000000000002 ; + setAttr ".s" -type "double3" 1 0.99999999999999967 1.0000000000000002 ; setAttr -k off -cb on ".sx"; setAttr -k off -cb on ".sy"; setAttr -k off -cb on ".sz"; createNode nurbsCurve -n "finger_R1_0_locShape" -p "finger_R1_0_loc"; - rename -uid "D8B4F5BD-44E0-B1DA-749A-E080DA6C3CAA"; + rename -uid "B95534DC-41D3-28F3-78D4-3FB9556AE112"; setAttr ".ihi" 0; setAttr -k off ".v"; setAttr ".ove" yes; @@ -10254,8 +10179,8 @@ createNode nurbsCurve -n "finger_R1_0_locShape" -p "finger_R1_0_loc"; 0.25 0 0 -0.25 0 0 ; -createNode nurbsCurve -n "finger_R1_0_loc1Shape" -p "finger_R1_0_loc"; - rename -uid "4AACE68A-4077-7CBF-4F16-018F94551834"; +createNode nurbsCurve -n "finger_R1_0_loc4Shape" -p "finger_R1_0_loc"; + rename -uid "E481359B-40AE-45E3-A89D-068C743DC689"; setAttr ".ihi" 0; setAttr -k off ".v"; setAttr ".ove" yes; @@ -10267,8 +10192,8 @@ createNode nurbsCurve -n "finger_R1_0_loc1Shape" -p "finger_R1_0_loc"; 0 0.25 0 0 -0.25 0 ; -createNode nurbsCurve -n "finger_R1_0_loc2Shape" -p "finger_R1_0_loc"; - rename -uid "18DBF289-44F7-119D-7383-8AABF92BB434"; +createNode nurbsCurve -n "finger_R1_0_loc5Shape" -p "finger_R1_0_loc"; + rename -uid "B7BE7D7D-450B-6BE5-4B13-C6BA96836E08"; setAttr ".ihi" 0; setAttr -k off ".v"; setAttr ".ove" yes; @@ -10280,8 +10205,8 @@ createNode nurbsCurve -n "finger_R1_0_loc2Shape" -p "finger_R1_0_loc"; 0 0 0.25 0 0 -0.25 ; -createNode nurbsCurve -n "finger_R1_0_loc3Shape" -p "finger_R1_0_loc"; - rename -uid "BC5ADD36-4B74-E9B6-6305-489A37922FA6"; +createNode nurbsCurve -n "finger_R1_0_loc6Shape" -p "finger_R1_0_loc"; + rename -uid "66F0AED0-468E-7898-50EF-62A7AEF59879"; setAttr ".ihi" 0; setAttr -k off ".v"; setAttr ".ove" yes; @@ -10298,8 +10223,8 @@ createNode nurbsCurve -n "finger_R1_0_loc3Shape" -p "finger_R1_0_loc"; 0 -0.1875 0 -0.1875 0 0 ; -createNode nurbsCurve -n "finger_R1_0_loc3_0crvShape" -p "finger_R1_0_loc"; - rename -uid "9AD76975-41A7-3A24-2BB6-3497A2090B49"; +createNode nurbsCurve -n "finger_R1_0_loc6_0crvShape" -p "finger_R1_0_loc"; + rename -uid "BFC4DF61-4704-477F-E38D-C38E73CFB558"; setAttr ".ihi" 0; setAttr -k off ".v"; setAttr ".ove" yes; @@ -10316,8 +10241,8 @@ createNode nurbsCurve -n "finger_R1_0_loc3_0crvShape" -p "finger_R1_0_loc"; 0 0 -0.1875 -0.1875 0 0 ; -createNode nurbsCurve -n "finger_R1_0_loc3_1crvShape" -p "finger_R1_0_loc"; - rename -uid "48D3E9AA-44B4-A735-2252-E598F37F3B7B"; +createNode nurbsCurve -n "finger_R1_0_loc6_1crvShape" -p "finger_R1_0_loc"; + rename -uid "E847BF3C-445D-6A30-F65F-7A9E297A3D35"; setAttr ".ihi" 0; setAttr -k off ".v"; setAttr ".ove" yes; @@ -10335,10 +10260,10 @@ createNode nurbsCurve -n "finger_R1_0_loc3_1crvShape" -p "finger_R1_0_loc"; 0 0 -0.1875 ; createNode transform -n "finger_R1_1_loc" -p "finger_R1_0_loc"; - rename -uid "4BE24712-4DC5-BF3D-FCE9-44A569F648F8"; + rename -uid "3322E38C-49DE-920D-4F3C-5DB3524C8D5B"; addAttr -ci true -sn "isGearGuide" -ln "isGearGuide" -dv 1 -min 0 -max 1 -at "bool"; setAttr -k off -cb on ".v"; - setAttr ".t" -type "double3" 0.96412528414018794 1.0658141036401503e-014 -4.4408920985006262e-016 ; + setAttr ".t" -type "double3" 0.96412528414018972 1.4210854715202004e-014 -1.3322676295501878e-015 ; setAttr -k off -cb on ".tx"; setAttr -k off -cb on ".ty"; setAttr -k off -cb on ".tz"; @@ -10346,12 +10271,12 @@ createNode transform -n "finger_R1_1_loc" -p "finger_R1_0_loc"; setAttr -k off -cb on ".ry"; setAttr -k off -cb on ".rz"; setAttr -cb on ".ro"; - setAttr ".s" -type "double3" 1.0000000000000002 0.99999999999999944 1.0000000000000002 ; + setAttr ".s" -type "double3" 1.0000000000000004 0.99999999999999956 1.0000000000000002 ; setAttr -k off -cb on ".sx"; setAttr -k off -cb on ".sy"; setAttr -k off -cb on ".sz"; createNode nurbsCurve -n "finger_R1_1_locShape" -p "finger_R1_1_loc"; - rename -uid "70CBFCB1-4EA3-7EA3-3740-EAB39672054C"; + rename -uid "37E51D64-4818-BEF8-0BDE-46BD3107978A"; setAttr ".ihi" 0; setAttr -k off ".v"; setAttr ".ove" yes; @@ -10363,8 +10288,8 @@ createNode nurbsCurve -n "finger_R1_1_locShape" -p "finger_R1_1_loc"; 0.25 0 0 -0.25 0 0 ; -createNode nurbsCurve -n "finger_R1_1_loc1Shape" -p "finger_R1_1_loc"; - rename -uid "11A1D5A6-4C22-FFA6-F84F-1B9CBD5D3A31"; +createNode nurbsCurve -n "finger_R1_1_loc4Shape" -p "finger_R1_1_loc"; + rename -uid "84A7A96E-44F0-E818-B5A1-73A0C7CAB303"; setAttr ".ihi" 0; setAttr -k off ".v"; setAttr ".ove" yes; @@ -10376,8 +10301,8 @@ createNode nurbsCurve -n "finger_R1_1_loc1Shape" -p "finger_R1_1_loc"; 0 0.25 0 0 -0.25 0 ; -createNode nurbsCurve -n "finger_R1_1_loc2Shape" -p "finger_R1_1_loc"; - rename -uid "8F70FBBA-4060-D5B9-F565-61B8A20494AC"; +createNode nurbsCurve -n "finger_R1_1_loc5Shape" -p "finger_R1_1_loc"; + rename -uid "0FF9D158-4349-12FD-A00C-59A3EE0A2398"; setAttr ".ihi" 0; setAttr -k off ".v"; setAttr ".ove" yes; @@ -10389,8 +10314,8 @@ createNode nurbsCurve -n "finger_R1_1_loc2Shape" -p "finger_R1_1_loc"; 0 0 0.25 0 0 -0.25 ; -createNode nurbsCurve -n "finger_R1_1_loc3Shape" -p "finger_R1_1_loc"; - rename -uid "1D0D300A-4F75-9B80-146B-7C96FE0229CD"; +createNode nurbsCurve -n "finger_R1_1_loc6Shape" -p "finger_R1_1_loc"; + rename -uid "E10F16F7-4B2E-ADEE-BB5F-D68A1158E35D"; setAttr ".ihi" 0; setAttr -k off ".v"; setAttr ".ove" yes; @@ -10407,8 +10332,8 @@ createNode nurbsCurve -n "finger_R1_1_loc3Shape" -p "finger_R1_1_loc"; 0 -0.1875 0 -0.1875 0 0 ; -createNode nurbsCurve -n "finger_R1_1_loc3_0crvShape" -p "finger_R1_1_loc"; - rename -uid "0A415F88-4995-B429-9D83-8587C66DFAF3"; +createNode nurbsCurve -n "finger_R1_1_loc6_0crvShape" -p "finger_R1_1_loc"; + rename -uid "A6BD7E9A-4175-FA60-C5B5-20B212F8BF59"; setAttr ".ihi" 0; setAttr -k off ".v"; setAttr ".ove" yes; @@ -10425,8 +10350,8 @@ createNode nurbsCurve -n "finger_R1_1_loc3_0crvShape" -p "finger_R1_1_loc"; 0 0 -0.1875 -0.1875 0 0 ; -createNode nurbsCurve -n "finger_R1_1_loc3_1crvShape" -p "finger_R1_1_loc"; - rename -uid "568C4B5B-4130-6805-66C5-21804749898A"; +createNode nurbsCurve -n "finger_R1_1_loc6_1crvShape" -p "finger_R1_1_loc"; + rename -uid "B9E7CD42-4309-C1D1-6F61-15BC756FCFBE"; setAttr ".ihi" 0; setAttr -k off ".v"; setAttr ".ove" yes; @@ -10444,10 +10369,10 @@ createNode nurbsCurve -n "finger_R1_1_loc3_1crvShape" -p "finger_R1_1_loc"; 0 0 -0.1875 ; createNode transform -n "finger_R1_2_loc" -p "finger_R1_1_loc"; - rename -uid "0C563E9D-4756-AD42-77A6-EC8140C5781E"; + rename -uid "54B73F0B-4B21-370E-F52A-F28E00CAD7F5"; addAttr -ci true -sn "isGearGuide" -ln "isGearGuide" -dv 1 -min 0 -max 1 -at "bool"; setAttr -k off -cb on ".v"; - setAttr ".t" -type "double3" 0.58017281549590471 -1.7763568394002505e-014 2.2204460492503131e-016 ; + setAttr ".t" -type "double3" 0.58017281549590116 -1.7763568394002505e-014 2.2204460492503131e-016 ; setAttr -k off -cb on ".tx"; setAttr -k off -cb on ".ty"; setAttr -k off -cb on ".tz"; @@ -10455,11 +10380,12 @@ createNode transform -n "finger_R1_2_loc" -p "finger_R1_1_loc"; setAttr -k off -cb on ".ry"; setAttr -k off -cb on ".rz"; setAttr -cb on ".ro"; + setAttr ".s" -type "double3" 0.99999999999999989 0.99999999999999978 1 ; setAttr -k off -cb on ".sx"; setAttr -k off -cb on ".sy"; setAttr -k off -cb on ".sz"; createNode nurbsCurve -n "finger_R1_2_locShape" -p "finger_R1_2_loc"; - rename -uid "72AF1FB1-48D6-5BB5-3695-8EBFB396A115"; + rename -uid "8006D1B6-436F-D285-4E64-CDA97F4CC4CA"; setAttr ".ihi" 0; setAttr -k off ".v"; setAttr ".ove" yes; @@ -10471,8 +10397,8 @@ createNode nurbsCurve -n "finger_R1_2_locShape" -p "finger_R1_2_loc"; 0.25 0 0 -0.25 0 0 ; -createNode nurbsCurve -n "finger_R1_2_loc1Shape" -p "finger_R1_2_loc"; - rename -uid "B7873390-4D01-AA0C-4278-438489E48C7A"; +createNode nurbsCurve -n "finger_R1_2_loc4Shape" -p "finger_R1_2_loc"; + rename -uid "17AD3A24-41A6-99FC-511C-C894AB61AA08"; setAttr ".ihi" 0; setAttr -k off ".v"; setAttr ".ove" yes; @@ -10484,8 +10410,8 @@ createNode nurbsCurve -n "finger_R1_2_loc1Shape" -p "finger_R1_2_loc"; 0 0.25 0 0 -0.25 0 ; -createNode nurbsCurve -n "finger_R1_2_loc2Shape" -p "finger_R1_2_loc"; - rename -uid "E01B941D-445F-4EDE-3426-1388E8000093"; +createNode nurbsCurve -n "finger_R1_2_loc5Shape" -p "finger_R1_2_loc"; + rename -uid "955A2A13-4BE8-126C-4DD7-95A1FD7601E3"; setAttr ".ihi" 0; setAttr -k off ".v"; setAttr ".ove" yes; @@ -10497,8 +10423,8 @@ createNode nurbsCurve -n "finger_R1_2_loc2Shape" -p "finger_R1_2_loc"; 0 0 0.25 0 0 -0.25 ; -createNode nurbsCurve -n "finger_R1_2_loc3Shape" -p "finger_R1_2_loc"; - rename -uid "51B48216-4E4D-7B47-8070-96B9A24A42AA"; +createNode nurbsCurve -n "finger_R1_2_loc6Shape" -p "finger_R1_2_loc"; + rename -uid "BBB6D02C-44F4-26C4-27D0-CB9D11699D60"; setAttr ".ihi" 0; setAttr -k off ".v"; setAttr ".ove" yes; @@ -10515,8 +10441,8 @@ createNode nurbsCurve -n "finger_R1_2_loc3Shape" -p "finger_R1_2_loc"; 0 -0.1875 0 -0.1875 0 0 ; -createNode nurbsCurve -n "finger_R1_2_loc3_0crvShape" -p "finger_R1_2_loc"; - rename -uid "868E8A63-42CA-AA09-CFBA-3AA8F89101AB"; +createNode nurbsCurve -n "finger_R1_2_loc6_0crvShape" -p "finger_R1_2_loc"; + rename -uid "2A8B7E1E-4EAC-5826-8346-A3919C59CC0C"; setAttr ".ihi" 0; setAttr -k off ".v"; setAttr ".ove" yes; @@ -10533,8 +10459,8 @@ createNode nurbsCurve -n "finger_R1_2_loc3_0crvShape" -p "finger_R1_2_loc"; 0 0 -0.1875 -0.1875 0 0 ; -createNode nurbsCurve -n "finger_R1_2_loc3_1crvShape" -p "finger_R1_2_loc"; - rename -uid "BDD83E6B-46F9-166A-8D0E-4D853BEFDAD4"; +createNode nurbsCurve -n "finger_R1_2_loc6_1crvShape" -p "finger_R1_2_loc"; + rename -uid "DAA5BE6A-4C06-B0CE-BC07-2CAF074B9410"; setAttr ".ihi" 0; setAttr -k off ".v"; setAttr ".ove" yes; @@ -10552,7 +10478,7 @@ createNode nurbsCurve -n "finger_R1_2_loc3_1crvShape" -p "finger_R1_2_loc"; 0 0 -0.1875 ; createNode transform -n "finger_R1_blade" -p "finger_R1_root"; - rename -uid "615AE278-4AA2-B634-760B-BF9EC4E4AC68"; + rename -uid "5C29EAA8-4AF4-8EC5-BDE6-F08904615876"; addAttr -ci true -k true -sn "bladeRollOffset" -ln "bladeRollOffset" -at "float"; setAttr -l on -k off -cb on ".v"; setAttr -k off -cb on ".tx"; @@ -10562,13 +10488,13 @@ createNode transform -n "finger_R1_blade" -p "finger_R1_root"; setAttr -k off -cb on ".ry"; setAttr -k off -cb on ".rz"; setAttr -cb on ".ro"; - setAttr ".s" -type "double3" 1 0.99999999999999989 1.0000000000000002 ; + setAttr ".s" -type "double3" 1 0.99999999999999967 1.0000000000000002 ; setAttr -l on -k off -cb on ".sx"; setAttr -l on -k off -cb on ".sy"; setAttr -l on -k off -cb on ".sz"; setAttr -k on ".bladeRollOffset"; createNode nurbsCurve -n "finger_R1_bladeShape" -p "finger_R1_blade"; - rename -uid "CBB45D7D-47D9-8EF3-2B49-B69F77EC26D1"; + rename -uid "1047D88B-46CC-8D88-6E8C-1CA773453EEF"; setAttr ".ihi" 0; setAttr -k off ".v"; setAttr ".ove" yes; @@ -10578,12 +10504,12 @@ createNode nurbsCurve -n "finger_R1_bladeShape" -p "finger_R1_blade"; 4 0 1 2 3 4 0 0 0 - 0.77578009473970722 0 0 - 0 0.25859336491323576 0 + 0.7757800947397071 0 0 + 0 0.2585933649132357 0 0 0 0 ; -createNode aimConstraint -n "finger_R1_blade_aimConstraint1" -p "finger_R1_blade"; - rename -uid "5C53B649-4AC1-2AC4-4925-AE8F82DDDDCD"; +createNode aimConstraint -n "finger_R1_blade_aimConstraint2" -p "finger_R1_blade"; + rename -uid "08EAAFA1-4340-3E96-7E98-ABABB1500FB3"; addAttr -dcb 0 -ci true -sn "w0" -ln "finger_R1_0_locW0" -dv 1 -at "double"; setAttr -k on ".nds"; setAttr -k off ".v"; @@ -10599,8 +10525,8 @@ createNode aimConstraint -n "finger_R1_blade_aimConstraint1" -p "finger_R1_blade setAttr ".erp" yes; setAttr ".wut" 2; setAttr -k on ".w0"; -createNode pointConstraint -n "finger_R1_blade_pointConstraint1" -p "finger_R1_blade"; - rename -uid "FA3EC8A5-4265-A2F0-DD28-E8A33F75423D"; +createNode pointConstraint -n "finger_R1_blade_pointConstraint2" -p "finger_R1_blade"; + rename -uid "1EF44F14-46C8-E41D-EA6E-5A8EF755AA13"; addAttr -dcb 0 -ci true -k true -sn "w0" -ln "finger_R1_rootW0" -dv 1 -min 0 -at "double"; setAttr -k on ".nds"; setAttr -k off ".v"; @@ -10614,22 +10540,22 @@ createNode pointConstraint -n "finger_R1_blade_pointConstraint1" -p "finger_R1_b setAttr -k off ".sy"; setAttr -k off ".sz"; setAttr ".erp" yes; - setAttr ".rst" -type "double3" 1.7763568394002505e-015 0 4.4408920985006262e-016 ; + setAttr ".rst" -type "double3" -1.7763568394002505e-015 0 0 ; setAttr -k on ".w0"; createNode transform -n "finger_R1_crv" -p "finger_R1_root"; - rename -uid "4107F02D-4091-9736-5887-44BAC8401C67"; + rename -uid "69BE8723-42E9-769A-DAA8-048110CBA924"; setAttr ".ovdt" 1; setAttr ".ove" yes; - setAttr ".t" -type "double3" 11.222433225153212 -28.040620010901346 1.1418187531090593 ; - setAttr ".r" -type "double3" 174.15150560514519 -9.9768879508741506 -125.88865264712166 ; - setAttr ".s" -type "double3" 2.6320983106786131 2.632098310678602 -2.63209831067861 ; + setAttr ".t" -type "double3" 11.222433225153221 -28.040620010901357 1.1418187531087722 ; + setAttr ".r" -type "double3" 174.15150560514482 -9.9768879508736816 -125.88865264712157 ; + setAttr ".s" -type "double3" 2.6320983106786127 2.6320983106786024 -2.6320983106786091 ; createNode nurbsCurve -n "finger_R1_crvShape" -p "finger_R1_crv"; - rename -uid "D17ADC15-4AEA-2E74-A4CF-D6BD53FAAAB0"; + rename -uid "AFAD804A-45B0-B53F-24EF-4ABDDC918E56"; setAttr -k off ".v"; setAttr -s 4 ".iog[0].og"; setAttr ".tw" yes; createNode nurbsCurve -n "finger_R1_crvShapeOrig" -p "finger_R1_crv"; - rename -uid "4BF1FA11-4C0B-C8C5-C54A-BB976B251117"; + rename -uid "8280A8EC-4E07-2F63-8E08-50B29162F2FB"; setAttr -k off ".v"; setAttr ".io" yes; setAttr ".cc" -type "nurbsCurve" @@ -10642,7 +10568,7 @@ createNode nurbsCurve -n "finger_R1_crvShapeOrig" -p "finger_R1_crv"; 0 0 0 ; createNode transform -n "meta_R0_blade" -p "meta_R0_root"; - rename -uid "25682EBC-465D-7111-9EAB-DF9278E72063"; + rename -uid "B72E4043-48A0-A9B6-F62F-299E73520FF4"; addAttr -ci true -k true -sn "bladeRollOffset" -ln "bladeRollOffset" -at "float"; setAttr -l on -k off -cb on ".v"; setAttr -k off -cb on ".tx"; @@ -10652,13 +10578,13 @@ createNode transform -n "meta_R0_blade" -p "meta_R0_root"; setAttr -k off -cb on ".ry"; setAttr -k off -cb on ".rz"; setAttr -cb on ".ro"; - setAttr ".s" -type "double3" 0.99999999999999922 0.99999999999999944 0.99999999999999856 ; + setAttr ".s" -type "double3" 0.99999999999999967 0.99999999999999956 0.99999999999999833 ; setAttr -l on -k off -cb on ".sx"; setAttr -l on -k off -cb on ".sy"; setAttr -l on -k off -cb on ".sz"; setAttr -k on ".bladeRollOffset"; createNode nurbsCurve -n "meta_R0_bladeShape" -p "meta_R0_blade"; - rename -uid "41EC5FBD-4358-CB26-CBE1-B19A3BA50A41"; + rename -uid "DA66C139-46FA-A17D-2471-16890ADE9123"; setAttr ".ihi" 0; setAttr -k off ".v"; setAttr ".ove" yes; @@ -10672,8 +10598,8 @@ createNode nurbsCurve -n "meta_R0_bladeShape" -p "meta_R0_blade"; 0 0.061677442163433849 0 0 0 0 ; -createNode aimConstraint -n "meta_R0_blade_aimConstraint1" -p "meta_R0_blade"; - rename -uid "6DD4E4F8-4000-6FC4-700A-1A847FE91B07"; +createNode aimConstraint -n "meta_R0_blade_aimConstraint2" -p "meta_R0_blade"; + rename -uid "EFA7C40A-48BC-62FE-6CB4-F6AED963AA4E"; addAttr -dcb 0 -ci true -sn "w0" -ln "meta_R0_0_locW0" -dv 1 -at "double"; setAttr -k on ".nds"; setAttr -k off ".v"; @@ -10689,8 +10615,8 @@ createNode aimConstraint -n "meta_R0_blade_aimConstraint1" -p "meta_R0_blade"; setAttr ".erp" yes; setAttr ".wut" 2; setAttr -k on ".w0"; -createNode pointConstraint -n "meta_R0_blade_pointConstraint1" -p "meta_R0_blade"; - rename -uid "8148ECA7-44D5-E115-E095-DCA9C7187B1C"; +createNode pointConstraint -n "meta_R0_blade_pointConstraint2" -p "meta_R0_blade"; + rename -uid "08B060FC-4887-E960-7E6F-269BCAB099AD"; addAttr -dcb 0 -ci true -k true -sn "w0" -ln "meta_R0_rootW0" -dv 1 -min 0 -at "double"; setAttr -k on ".nds"; setAttr -k off ".v"; @@ -10704,22 +10630,22 @@ createNode pointConstraint -n "meta_R0_blade_pointConstraint1" -p "meta_R0_blade setAttr -k off ".sy"; setAttr -k off ".sz"; setAttr ".erp" yes; - setAttr ".rst" -type "double3" -4.4408920985006262e-016 0 -3.5527136788005009e-015 ; + setAttr ".rst" -type "double3" 0 7.1054273576010019e-015 -3.5527136788005009e-015 ; setAttr -k on ".w0"; createNode transform -n "meta_R0_crv" -p "meta_R0_root"; - rename -uid "D7BE8D6B-418C-A599-27C9-B7A887C76BA8"; + rename -uid "9D50BA4B-4D4D-E3A4-C7B9-B9BFD4A4FBE1"; setAttr ".ovdt" 1; setAttr ".ove" yes; - setAttr ".t" -type "double3" 3.8070066058400269 -38.076493243284943 11.714163621936502 ; - setAttr ".r" -type "double3" -98.404354317568462 44.654258545702575 -90.724179884703659 ; - setAttr ".s" -type "double3" 3.403215794704129 3.4032157947041131 -3.4032157947041246 ; + setAttr ".t" -type "double3" 3.8070066058400012 -38.076493243284936 11.7141636219365 ; + setAttr ".r" -type "double3" -98.404354317568405 44.654258545702575 -90.724179884703659 ; + setAttr ".s" -type "double3" 3.4032157947041273 3.4032157947041131 -3.4032157947041233 ; createNode nurbsCurve -n "meta_R0_crvShape" -p "meta_R0_crv"; - rename -uid "EE4EE08C-4CEF-6F71-0EF3-E6B92D648C20"; + rename -uid "60F60E37-4C0E-0D22-1280-C1BB5376240F"; setAttr -k off ".v"; setAttr -s 4 ".iog[0].og"; setAttr ".tw" yes; createNode nurbsCurve -n "meta_R0_crvShapeOrig" -p "meta_R0_crv"; - rename -uid "23BC45AD-4DF5-D067-6E34-1E8CD60C2232"; + rename -uid "0D533335-499D-CBBA-D03B-FDA7E5AC7A70"; setAttr -k off ".v"; setAttr ".io" yes; setAttr ".cc" -type "nurbsCurve" @@ -10732,7 +10658,7 @@ createNode nurbsCurve -n "meta_R0_crvShapeOrig" -p "meta_R0_crv"; 0 0 0 ; createNode transform -n "finger_R0_root" -p "meta_R0_root"; - rename -uid "C39C8F12-4274-C3D0-D501-109F87EAC8C1"; + rename -uid "AAE23DCA-49F7-CF54-3E82-DBB6E0106F82"; addAttr -ci true -sn "isGearGuide" -ln "isGearGuide" -dv 1 -min 0 -max 1 -at "bool"; addAttr -ci true -sn "comp_type" -ln "comp_type" -dt "string"; addAttr -ci true -sn "comp_name" -ln "comp_name" -dt "string"; @@ -10742,22 +10668,22 @@ createNode transform -n "finger_R0_root" -p "meta_R0_root"; addAttr -ci true -sn "ui_host" -ln "ui_host" -dt "string"; addAttr -ci true -sn "ctlGrp" -ln "ctlGrp" -dt "string"; addAttr -ci true -sn "mode" -ln "mode" -min 0 -at "long"; - addAttr -ci true -sn "blend" -ln "blend" -min 0 -max 1 -at "double"; - addAttr -ci true -sn "neutralpose" -ln "neutralpose" -min 0 -max 1 -at "bool"; + addAttr -ci true -sn "blend" -ln "blend" -dv 1 -min 0 -max 1 -at "double"; + addAttr -ci true -sn "neutralpose" -ln "neutralpose" -dv 1 -min 0 -max 1 -at "bool"; addAttr -ci true -sn "ikrefarray" -ln "ikrefarray" -dt "string"; addAttr -ci true -sn "useIndex" -ln "useIndex" -min 0 -max 1 -at "bool"; - addAttr -ci true -sn "parentJointIndex" -ln "parentJointIndex" -at "long"; + addAttr -ci true -sn "parentJointIndex" -ln "parentJointIndex" -dv -1 -at "long"; setAttr -k off -cb on ".v"; - setAttr ".t" -type "double3" -0.18403723679763129 -0.30586006047047221 2.7614233959505565 ; + setAttr ".t" -type "double3" -0.18403723679763262 -0.3058600604704651 2.7614233959505476 ; setAttr -k off -cb on ".tx"; setAttr -k off -cb on ".ty"; setAttr -k off -cb on ".tz"; - setAttr ".r" -type "double3" 150.01356893808457 -71.60667945009763 -133.79382708613355 ; + setAttr ".r" -type "double3" 150.01356893808409 -71.60667945009763 -133.79382708613363 ; setAttr -k off -cb on ".rx"; setAttr -k off -cb on ".ry"; setAttr -k off -cb on ".rz"; setAttr -cb on ".ro"; - setAttr ".s" -type "double3" 1.292966824566179 1.2929668245661796 1.2929668245661814 ; + setAttr ".s" -type "double3" 1.2929668245661787 1.2929668245661794 1.2929668245661818 ; setAttr -k off -cb on ".sx"; setAttr -k off -cb on ".sy"; setAttr -k off -cb on ".sz"; @@ -10767,12 +10693,9 @@ createNode transform -n "finger_R0_root" -p "meta_R0_root"; setAttr ".connector" -type "string" "standard"; setAttr ".ui_host" -type "string" ""; setAttr ".ctlGrp" -type "string" ""; - setAttr ".blend" 1; - setAttr ".neutralpose" yes; setAttr ".ikrefarray" -type "string" ""; - setAttr ".parentJointIndex" -1; createNode nurbsCurve -n "finger_R0_rootShape" -p "finger_R0_root"; - rename -uid "A2146491-403D-6277-CD13-F5B482791555"; + rename -uid "6D92965C-4203-CA9D-FC57-7889757C5626"; setAttr ".ihi" 0; setAttr -k off ".v"; setAttr ".ove" yes; @@ -10784,8 +10707,8 @@ createNode nurbsCurve -n "finger_R0_rootShape" -p "finger_R0_root"; 0.25 0 0 -0.25 0 0 ; -createNode nurbsCurve -n "finger_R0_root1Shape" -p "finger_R0_root"; - rename -uid "BE4A53D6-464A-0C4E-6CA3-85AE6D6D8A01"; +createNode nurbsCurve -n "finger_R0_root4Shape" -p "finger_R0_root"; + rename -uid "528C7771-47C2-E1C2-A05B-FA8B75CB1370"; setAttr ".ihi" 0; setAttr -k off ".v"; setAttr ".ove" yes; @@ -10797,8 +10720,8 @@ createNode nurbsCurve -n "finger_R0_root1Shape" -p "finger_R0_root"; 0 0.25 0 0 -0.25 0 ; -createNode nurbsCurve -n "finger_R0_root2Shape" -p "finger_R0_root"; - rename -uid "515A5263-465D-40C6-BDA5-5C9D4A01E674"; +createNode nurbsCurve -n "finger_R0_root5Shape" -p "finger_R0_root"; + rename -uid "A25C7465-4CD7-10C9-E6D4-2090A87C4909"; setAttr ".ihi" 0; setAttr -k off ".v"; setAttr ".ove" yes; @@ -10810,8 +10733,8 @@ createNode nurbsCurve -n "finger_R0_root2Shape" -p "finger_R0_root"; 0 0 0.25 0 0 -0.25 ; -createNode nurbsCurve -n "finger_R0_root3Shape" -p "finger_R0_root"; - rename -uid "1DC19448-4EC5-D74C-3573-EAAFAB88769E"; +createNode nurbsCurve -n "finger_R0_root6Shape" -p "finger_R0_root"; + rename -uid "8B6F4D6A-47F0-1311-1646-5DACE25EF60F"; setAttr ".ihi" 0; setAttr -k off ".v"; setAttr ".ove" yes; @@ -10838,10 +10761,10 @@ createNode nurbsCurve -n "finger_R0_root3Shape" -p "finger_R0_root"; -0.125 -0.125 -0.125 ; createNode transform -n "finger_R0_0_loc" -p "finger_R0_root"; - rename -uid "5454E769-4BFA-E660-8E95-4D8D0C1DBA65"; + rename -uid "AC9DD948-4860-3D8C-F109-9082C77819E7"; addAttr -ci true -sn "isGearGuide" -ln "isGearGuide" -dv 1 -min 0 -max 1 -at "bool"; setAttr -k off -cb on ".v"; - setAttr ".t" -type "double3" 1.0000000000000036 -3.5527136788005009e-015 5.3290705182007514e-015 ; + setAttr ".t" -type "double3" 1.0000000000000053 -3.5527136788005009e-015 4.4408920985006262e-015 ; setAttr -k off -cb on ".tx"; setAttr -k off -cb on ".ty"; setAttr -k off -cb on ".tz"; @@ -10849,12 +10772,12 @@ createNode transform -n "finger_R0_0_loc" -p "finger_R0_root"; setAttr -k off -cb on ".ry"; setAttr -k off -cb on ".rz"; setAttr -cb on ".ro"; - setAttr ".s" -type "double3" 0.99999999999999856 0.99999999999999889 0.99999999999999867 ; + setAttr ".s" -type "double3" 0.99999999999999833 0.99999999999999889 0.99999999999999867 ; setAttr -k off -cb on ".sx"; setAttr -k off -cb on ".sy"; setAttr -k off -cb on ".sz"; createNode nurbsCurve -n "finger_R0_0_locShape" -p "finger_R0_0_loc"; - rename -uid "68F0EC12-49E3-1FC2-0967-EC868FDD060B"; + rename -uid "01B7DA7F-4034-5B39-AA65-3A8E2CF3B38F"; setAttr ".ihi" 0; setAttr -k off ".v"; setAttr ".ove" yes; @@ -10866,8 +10789,8 @@ createNode nurbsCurve -n "finger_R0_0_locShape" -p "finger_R0_0_loc"; 0.25 0 0 -0.25 0 0 ; -createNode nurbsCurve -n "finger_R0_0_loc1Shape" -p "finger_R0_0_loc"; - rename -uid "0DD80979-4F73-1B3A-05A6-15A7BCDD1842"; +createNode nurbsCurve -n "finger_R0_0_loc4Shape" -p "finger_R0_0_loc"; + rename -uid "A4F47940-4D0B-7CA1-8AB5-949671E6FFAD"; setAttr ".ihi" 0; setAttr -k off ".v"; setAttr ".ove" yes; @@ -10879,8 +10802,8 @@ createNode nurbsCurve -n "finger_R0_0_loc1Shape" -p "finger_R0_0_loc"; 0 0.25 0 0 -0.25 0 ; -createNode nurbsCurve -n "finger_R0_0_loc2Shape" -p "finger_R0_0_loc"; - rename -uid "A77B96A3-458A-A984-8C66-DCB8E478FD85"; +createNode nurbsCurve -n "finger_R0_0_loc5Shape" -p "finger_R0_0_loc"; + rename -uid "650F1FA0-41BA-87FE-E8FA-3D98A3051041"; setAttr ".ihi" 0; setAttr -k off ".v"; setAttr ".ove" yes; @@ -10892,8 +10815,8 @@ createNode nurbsCurve -n "finger_R0_0_loc2Shape" -p "finger_R0_0_loc"; 0 0 0.25 0 0 -0.25 ; -createNode nurbsCurve -n "finger_R0_0_loc3Shape" -p "finger_R0_0_loc"; - rename -uid "F6532829-4339-4D57-3291-DDAE808BADD1"; +createNode nurbsCurve -n "finger_R0_0_loc6Shape" -p "finger_R0_0_loc"; + rename -uid "7F30C39B-46CF-F8B4-52CB-4791BF016713"; setAttr ".ihi" 0; setAttr -k off ".v"; setAttr ".ove" yes; @@ -10910,8 +10833,8 @@ createNode nurbsCurve -n "finger_R0_0_loc3Shape" -p "finger_R0_0_loc"; 0 -0.1875 0 -0.1875 0 0 ; -createNode nurbsCurve -n "finger_R0_0_loc3_0crvShape" -p "finger_R0_0_loc"; - rename -uid "494EC9BD-441A-23D6-E9C7-92820493F0A0"; +createNode nurbsCurve -n "finger_R0_0_loc6_0crvShape" -p "finger_R0_0_loc"; + rename -uid "51D20020-4206-2517-B071-939C399EDBB2"; setAttr ".ihi" 0; setAttr -k off ".v"; setAttr ".ove" yes; @@ -10928,8 +10851,8 @@ createNode nurbsCurve -n "finger_R0_0_loc3_0crvShape" -p "finger_R0_0_loc"; 0 0 -0.1875 -0.1875 0 0 ; -createNode nurbsCurve -n "finger_R0_0_loc3_1crvShape" -p "finger_R0_0_loc"; - rename -uid "100BE8F4-48F0-D713-BE20-D7ADB4044476"; +createNode nurbsCurve -n "finger_R0_0_loc6_1crvShape" -p "finger_R0_0_loc"; + rename -uid "65CAD3DD-45BE-90BC-C6F8-958A0E3A8D05"; setAttr ".ihi" 0; setAttr -k off ".v"; setAttr ".ove" yes; @@ -10947,10 +10870,10 @@ createNode nurbsCurve -n "finger_R0_0_loc3_1crvShape" -p "finger_R0_0_loc"; 0 0 -0.1875 ; createNode transform -n "finger_R0_1_loc" -p "finger_R0_0_loc"; - rename -uid "CA67FD2C-4A06-5506-3F00-C3B18FB42697"; + rename -uid "D00CE33A-4B34-D4E4-F7E9-D2B5E56DEDBD"; addAttr -ci true -sn "isGearGuide" -ln "isGearGuide" -dv 1 -min 0 -max 1 -at "bool"; setAttr -k off -cb on ".v"; - setAttr ".t" -type "double3" 0.80442008080927963 -7.1054273576010019e-015 4.4408920985006262e-016 ; + setAttr ".t" -type "double3" 0.80442008080928318 -7.1054273576010019e-015 8.8817841970012523e-016 ; setAttr -k off -cb on ".tx"; setAttr -k off -cb on ".ty"; setAttr -k off -cb on ".tz"; @@ -10958,12 +10881,12 @@ createNode transform -n "finger_R0_1_loc" -p "finger_R0_0_loc"; setAttr -k off -cb on ".ry"; setAttr -k off -cb on ".rz"; setAttr -cb on ".ro"; - setAttr ".s" -type "double3" 1.0000000000000013 1.0000000000000007 1.0000000000000004 ; + setAttr ".s" -type "double3" 1.0000000000000016 1.0000000000000009 1.0000000000000002 ; setAttr -k off -cb on ".sx"; setAttr -k off -cb on ".sy"; setAttr -k off -cb on ".sz"; createNode nurbsCurve -n "finger_R0_1_locShape" -p "finger_R0_1_loc"; - rename -uid "782D7272-4044-0376-0C67-2986CCBD16FA"; + rename -uid "7C62E544-436E-FA0A-8E25-ADA181AE4FB9"; setAttr ".ihi" 0; setAttr -k off ".v"; setAttr ".ove" yes; @@ -10975,8 +10898,8 @@ createNode nurbsCurve -n "finger_R0_1_locShape" -p "finger_R0_1_loc"; 0.25 0 0 -0.25 0 0 ; -createNode nurbsCurve -n "finger_R0_1_loc1Shape" -p "finger_R0_1_loc"; - rename -uid "CFEF9961-4E73-EE1D-AC67-51A407173629"; +createNode nurbsCurve -n "finger_R0_1_loc4Shape" -p "finger_R0_1_loc"; + rename -uid "A8949E6C-42D7-3468-1B40-BEA0DA557D79"; setAttr ".ihi" 0; setAttr -k off ".v"; setAttr ".ove" yes; @@ -10988,8 +10911,8 @@ createNode nurbsCurve -n "finger_R0_1_loc1Shape" -p "finger_R0_1_loc"; 0 0.25 0 0 -0.25 0 ; -createNode nurbsCurve -n "finger_R0_1_loc2Shape" -p "finger_R0_1_loc"; - rename -uid "954D868E-40E9-5FE6-B269-1A9A63F8F018"; +createNode nurbsCurve -n "finger_R0_1_loc5Shape" -p "finger_R0_1_loc"; + rename -uid "77C637D0-4A70-2B90-E40A-52920EE55330"; setAttr ".ihi" 0; setAttr -k off ".v"; setAttr ".ove" yes; @@ -11001,8 +10924,8 @@ createNode nurbsCurve -n "finger_R0_1_loc2Shape" -p "finger_R0_1_loc"; 0 0 0.25 0 0 -0.25 ; -createNode nurbsCurve -n "finger_R0_1_loc3Shape" -p "finger_R0_1_loc"; - rename -uid "7994E6A8-4718-2002-D7EF-DDBDE191B1A2"; +createNode nurbsCurve -n "finger_R0_1_loc6Shape" -p "finger_R0_1_loc"; + rename -uid "1CDA2E15-4E89-B910-AC2E-C28082E2954E"; setAttr ".ihi" 0; setAttr -k off ".v"; setAttr ".ove" yes; @@ -11019,8 +10942,8 @@ createNode nurbsCurve -n "finger_R0_1_loc3Shape" -p "finger_R0_1_loc"; 0 -0.1875 0 -0.1875 0 0 ; -createNode nurbsCurve -n "finger_R0_1_loc3_0crvShape" -p "finger_R0_1_loc"; - rename -uid "FBD3C2B0-40C9-0B8C-649C-5FB3609C9A3C"; +createNode nurbsCurve -n "finger_R0_1_loc6_0crvShape" -p "finger_R0_1_loc"; + rename -uid "C5D944E9-4738-472C-1AAD-0AAF8A8428C9"; setAttr ".ihi" 0; setAttr -k off ".v"; setAttr ".ove" yes; @@ -11037,8 +10960,8 @@ createNode nurbsCurve -n "finger_R0_1_loc3_0crvShape" -p "finger_R0_1_loc"; 0 0 -0.1875 -0.1875 0 0 ; -createNode nurbsCurve -n "finger_R0_1_loc3_1crvShape" -p "finger_R0_1_loc"; - rename -uid "453E47DB-420F-C2EC-68A1-D4BEFDD90A77"; +createNode nurbsCurve -n "finger_R0_1_loc6_1crvShape" -p "finger_R0_1_loc"; + rename -uid "276B1B89-4E91-0F89-763D-9484878D4655"; setAttr ".ihi" 0; setAttr -k off ".v"; setAttr ".ove" yes; @@ -11056,10 +10979,10 @@ createNode nurbsCurve -n "finger_R0_1_loc3_1crvShape" -p "finger_R0_1_loc"; 0 0 -0.1875 ; createNode transform -n "finger_R0_2_loc" -p "finger_R0_1_loc"; - rename -uid "168D5293-4BC0-1536-268F-1C94859A316D"; + rename -uid "93FF5B87-4176-0728-DA2B-B198BADEB30F"; addAttr -ci true -sn "isGearGuide" -ln "isGearGuide" -dv 1 -min 0 -max 1 -at "bool"; setAttr -k off -cb on ".v"; - setAttr ".t" -type "double3" 0.58431370392368365 2.1316282072803006e-014 -4.8849813083506888e-015 ; + setAttr ".t" -type "double3" 0.58431370392367654 2.1316282072803006e-014 -3.9968028886505635e-015 ; setAttr -k off -cb on ".tx"; setAttr -k off -cb on ".ty"; setAttr -k off -cb on ".tz"; @@ -11067,12 +10990,12 @@ createNode transform -n "finger_R0_2_loc" -p "finger_R0_1_loc"; setAttr -k off -cb on ".ry"; setAttr -k off -cb on ".rz"; setAttr -cb on ".ro"; - setAttr ".s" -type "double3" 0.99999999999999967 1 0.99999999999999956 ; + setAttr ".s" -type "double3" 0.99999999999999922 1 0.99999999999999978 ; setAttr -k off -cb on ".sx"; setAttr -k off -cb on ".sy"; setAttr -k off -cb on ".sz"; createNode nurbsCurve -n "finger_R0_2_locShape" -p "finger_R0_2_loc"; - rename -uid "01EF065D-476E-2CE7-4D77-508CB6681ADF"; + rename -uid "B86AB01F-4B48-A0CF-25A1-F594ACEC07E4"; setAttr ".ihi" 0; setAttr -k off ".v"; setAttr ".ove" yes; @@ -11084,8 +11007,8 @@ createNode nurbsCurve -n "finger_R0_2_locShape" -p "finger_R0_2_loc"; 0.25 0 0 -0.25 0 0 ; -createNode nurbsCurve -n "finger_R0_2_loc1Shape" -p "finger_R0_2_loc"; - rename -uid "356156B3-496F-0AAB-933C-0CA92B3E5CAE"; +createNode nurbsCurve -n "finger_R0_2_loc4Shape" -p "finger_R0_2_loc"; + rename -uid "BCD5588F-44AB-CDF6-C0FF-AA9F73EA40BC"; setAttr ".ihi" 0; setAttr -k off ".v"; setAttr ".ove" yes; @@ -11097,8 +11020,8 @@ createNode nurbsCurve -n "finger_R0_2_loc1Shape" -p "finger_R0_2_loc"; 0 0.25 0 0 -0.25 0 ; -createNode nurbsCurve -n "finger_R0_2_loc2Shape" -p "finger_R0_2_loc"; - rename -uid "F277496E-4B9B-1BCD-E0AD-E5B51EB99BBD"; +createNode nurbsCurve -n "finger_R0_2_loc5Shape" -p "finger_R0_2_loc"; + rename -uid "6AC607F4-4ACC-14FB-24F9-DBB0D02F4C06"; setAttr ".ihi" 0; setAttr -k off ".v"; setAttr ".ove" yes; @@ -11110,8 +11033,8 @@ createNode nurbsCurve -n "finger_R0_2_loc2Shape" -p "finger_R0_2_loc"; 0 0 0.25 0 0 -0.25 ; -createNode nurbsCurve -n "finger_R0_2_loc3Shape" -p "finger_R0_2_loc"; - rename -uid "B03A48BC-486F-4CB3-293F-8FA62738866E"; +createNode nurbsCurve -n "finger_R0_2_loc6Shape" -p "finger_R0_2_loc"; + rename -uid "E619F236-4FDC-D2B4-0313-84A6D2A5FDFC"; setAttr ".ihi" 0; setAttr -k off ".v"; setAttr ".ove" yes; @@ -11128,8 +11051,8 @@ createNode nurbsCurve -n "finger_R0_2_loc3Shape" -p "finger_R0_2_loc"; 0 -0.1875 0 -0.1875 0 0 ; -createNode nurbsCurve -n "finger_R0_2_loc3_0crvShape" -p "finger_R0_2_loc"; - rename -uid "513EC5E3-4B76-49F8-1047-60A5EF90B9FA"; +createNode nurbsCurve -n "finger_R0_2_loc6_0crvShape" -p "finger_R0_2_loc"; + rename -uid "D6CBA392-4923-69B4-6DC1-188679D8C8C1"; setAttr ".ihi" 0; setAttr -k off ".v"; setAttr ".ove" yes; @@ -11146,8 +11069,8 @@ createNode nurbsCurve -n "finger_R0_2_loc3_0crvShape" -p "finger_R0_2_loc"; 0 0 -0.1875 -0.1875 0 0 ; -createNode nurbsCurve -n "finger_R0_2_loc3_1crvShape" -p "finger_R0_2_loc"; - rename -uid "65A7249C-4A8C-B6FE-B9EE-A08F53EE29E9"; +createNode nurbsCurve -n "finger_R0_2_loc6_1crvShape" -p "finger_R0_2_loc"; + rename -uid "6348317F-4E0F-EF4C-6DCD-629AE397F4EA"; setAttr ".ihi" 0; setAttr -k off ".v"; setAttr ".ove" yes; @@ -11165,7 +11088,7 @@ createNode nurbsCurve -n "finger_R0_2_loc3_1crvShape" -p "finger_R0_2_loc"; 0 0 -0.1875 ; createNode transform -n "finger_R0_blade" -p "finger_R0_root"; - rename -uid "7FEAEB34-49B3-C32B-E1FD-B092313C2F74"; + rename -uid "FA7586A4-4897-E26C-CC10-15A6F602D3E4"; addAttr -ci true -k true -sn "bladeRollOffset" -ln "bladeRollOffset" -at "float"; setAttr -l on -k off -cb on ".v"; setAttr -k off -cb on ".tx"; @@ -11175,13 +11098,13 @@ createNode transform -n "finger_R0_blade" -p "finger_R0_root"; setAttr -k off -cb on ".ry"; setAttr -k off -cb on ".rz"; setAttr -cb on ".ro"; - setAttr ".s" -type "double3" 0.99999999999999856 0.99999999999999889 0.99999999999999867 ; + setAttr ".s" -type "double3" 0.99999999999999833 0.99999999999999889 0.99999999999999867 ; setAttr -l on -k off -cb on ".sx"; setAttr -l on -k off -cb on ".sy"; setAttr -l on -k off -cb on ".sz"; setAttr -k on ".bladeRollOffset"; createNode nurbsCurve -n "finger_R0_bladeShape" -p "finger_R0_blade"; - rename -uid "D982D430-43BD-B9AD-88CC-A499E07E43E4"; + rename -uid "13C6030A-4E6E-CFF8-6D66-C2BE7E53C27E"; setAttr ".ihi" 0; setAttr -k off ".v"; setAttr ".ove" yes; @@ -11191,12 +11114,12 @@ createNode nurbsCurve -n "finger_R0_bladeShape" -p "finger_R0_blade"; 4 0 1 2 3 4 0 0 0 - 0.77578009473970733 0 0 + 0.77578009473970722 0 0 0 0.25859336491323576 0 0 0 0 ; -createNode aimConstraint -n "finger_R0_blade_aimConstraint1" -p "finger_R0_blade"; - rename -uid "DF901967-41BE-8E0D-B183-35AAE86100E7"; +createNode aimConstraint -n "finger_R0_blade_aimConstraint2" -p "finger_R0_blade"; + rename -uid "E66015EC-4D42-78B0-1DD6-038302A413BD"; addAttr -dcb 0 -ci true -sn "w0" -ln "finger_R0_0_locW0" -dv 1 -at "double"; setAttr -k on ".nds"; setAttr -k off ".v"; @@ -11212,8 +11135,8 @@ createNode aimConstraint -n "finger_R0_blade_aimConstraint1" -p "finger_R0_blade setAttr ".erp" yes; setAttr ".wut" 2; setAttr -k on ".w0"; -createNode pointConstraint -n "finger_R0_blade_pointConstraint1" -p "finger_R0_blade"; - rename -uid "E7B7DAEF-4D18-B0E4-8AED-AF86B33740F2"; +createNode pointConstraint -n "finger_R0_blade_pointConstraint2" -p "finger_R0_blade"; + rename -uid "002C036A-473F-657E-1E62-0189EBBCA5A4"; addAttr -dcb 0 -ci true -k true -sn "w0" -ln "finger_R0_rootW0" -dv 1 -min 0 -at "double"; setAttr -k on ".nds"; setAttr -k off ".v"; @@ -11227,22 +11150,22 @@ createNode pointConstraint -n "finger_R0_blade_pointConstraint1" -p "finger_R0_b setAttr -k off ".sy"; setAttr -k off ".sz"; setAttr ".erp" yes; - setAttr ".rst" -type "double3" 1.7763568394002505e-015 0 8.8817841970012523e-016 ; + setAttr ".rst" -type "double3" 1.7763568394002505e-015 3.5527136788005009e-015 -4.4408920985006262e-016 ; setAttr -k on ".w0"; createNode transform -n "finger_R0_crv" -p "finger_R0_root"; - rename -uid "004DF35B-479F-18C6-07F5-2CB85EAB8ECD"; + rename -uid "32F1EB11-4F4C-EB35-87AC-2787473096E5"; setAttr ".ovdt" 1; setAttr ".ove" yes; - setAttr ".t" -type "double3" 12.549990763713105 -27.336008057181164 2.464865276130185 ; - setAttr ".r" -type "double3" 170.83456651198151 -22.111176212556099 -122.87938490445499 ; - setAttr ".s" -type "double3" 2.63209831067861 2.6320983106785989 -2.6320983106786033 ; + setAttr ".t" -type "double3" 12.549990763713105 -27.336008057181196 2.4648652761299221 ; + setAttr ".r" -type "double3" 170.83456651198122 -22.111176212555637 -122.87938490445489 ; + setAttr ".s" -type "double3" 2.6320983106786091 2.6320983106785993 -2.632098310678602 ; createNode nurbsCurve -n "finger_R0_crvShape" -p "finger_R0_crv"; - rename -uid "A838721B-4E0B-924A-ADA1-51A16C2BAAD7"; + rename -uid "A21D815D-45D6-8F33-CB59-EF8AD4031525"; setAttr -k off ".v"; setAttr -s 4 ".iog[0].og"; setAttr ".tw" yes; createNode nurbsCurve -n "finger_R0_crvShapeOrig" -p "finger_R0_crv"; - rename -uid "2EF32146-4D1C-F24D-D200-0F9019E44D83"; + rename -uid "8A07BAAC-4EEA-BC3B-E8EC-64901999684A"; setAttr -k off ".v"; setAttr ".io" yes; setAttr ".cc" -type "nurbsCurve" @@ -11255,7 +11178,7 @@ createNode nurbsCurve -n "finger_R0_crvShapeOrig" -p "finger_R0_crv"; 0 0 0 ; createNode transform -n "thumbRoll_R0_root" -p "meta_R0_root"; - rename -uid "24816EEF-4D8D-9AE8-9905-2C931B3FFE01"; + rename -uid "6E1DDE1E-440A-D87E-CE58-C6A1812668E6"; addAttr -ci true -sn "isGearGuide" -ln "isGearGuide" -dv 1 -min 0 -max 1 -at "bool"; addAttr -ci true -sn "comp_type" -ln "comp_type" -dt "string"; addAttr -ci true -sn "comp_name" -ln "comp_name" -dt "string"; @@ -11268,32 +11191,33 @@ createNode transform -n "thumbRoll_R0_root" -p "meta_R0_root"; addAttr -ci true -sn "ikrefarray" -ln "ikrefarray" -dt "string"; addAttr -ci true -sn "joint" -ln "joint" -min 0 -max 1 -at "bool"; addAttr -ci true -sn "uniScale" -ln "uniScale" -min 0 -max 1 -at "bool"; - addAttr -ci true -sn "k_tx" -ln "k_tx" -min 0 -max 1 -at "bool"; - addAttr -ci true -sn "k_ty" -ln "k_ty" -min 0 -max 1 -at "bool"; - addAttr -ci true -sn "k_tz" -ln "k_tz" -min 0 -max 1 -at "bool"; - addAttr -ci true -sn "k_ro" -ln "k_ro" -min 0 -max 1 -at "bool"; - addAttr -ci true -sn "k_rx" -ln "k_rx" -min 0 -max 1 -at "bool"; - addAttr -ci true -sn "k_ry" -ln "k_ry" -min 0 -max 1 -at "bool"; - addAttr -ci true -sn "k_rz" -ln "k_rz" -min 0 -max 1 -at "bool"; - addAttr -ci true -sn "k_sx" -ln "k_sx" -min 0 -max 1 -at "bool"; - addAttr -ci true -sn "k_sy" -ln "k_sy" -min 0 -max 1 -at "bool"; - addAttr -ci true -sn "k_sz" -ln "k_sz" -min 0 -max 1 -at "bool"; + addAttr -ci true -sn "k_tx" -ln "k_tx" -dv 1 -min 0 -max 1 -at "bool"; + addAttr -ci true -sn "k_ty" -ln "k_ty" -dv 1 -min 0 -max 1 -at "bool"; + addAttr -ci true -sn "k_tz" -ln "k_tz" -dv 1 -min 0 -max 1 -at "bool"; + addAttr -ci true -sn "k_ro" -ln "k_ro" -dv 1 -min 0 -max 1 -at "bool"; + addAttr -ci true -sn "k_rx" -ln "k_rx" -dv 1 -min 0 -max 1 -at "bool"; + addAttr -ci true -sn "k_ry" -ln "k_ry" -dv 1 -min 0 -max 1 -at "bool"; + addAttr -ci true -sn "k_rz" -ln "k_rz" -dv 1 -min 0 -max 1 -at "bool"; + addAttr -ci true -sn "k_sx" -ln "k_sx" -dv 1 -min 0 -max 1 -at "bool"; + addAttr -ci true -sn "k_sy" -ln "k_sy" -dv 1 -min 0 -max 1 -at "bool"; + addAttr -ci true -sn "k_sz" -ln "k_sz" -dv 1 -min 0 -max 1 -at "bool"; addAttr -ci true -sn "default_rotorder" -ln "default_rotorder" -min 0 -max 5 -at "long"; addAttr -ci true -sn "neutralRotation" -ln "neutralRotation" -min 0 -max 1 -at "bool"; - addAttr -ci true -sn "ctlSize" -ln "ctlSize" -at "double"; + addAttr -ci true -sn "mirrorBehaviour" -ln "mirrorBehaviour" -min 0 -max 1 -at "bool"; + addAttr -ci true -sn "ctlSize" -ln "ctlSize" -dv 0.7 -at "double"; addAttr -ci true -sn "useIndex" -ln "useIndex" -min 0 -max 1 -at "bool"; - addAttr -ci true -sn "parentJointIndex" -ln "parentJointIndex" -at "long"; + addAttr -ci true -sn "parentJointIndex" -ln "parentJointIndex" -dv -1 -at "long"; setAttr -k off -cb on ".v"; - setAttr ".t" -type "double3" 0.21303623709073571 -0.22489125789799402 0.1307033745215378 ; + setAttr ".t" -type "double3" 0.21303623709073394 -0.22489125789798692 0.13070337452153069 ; setAttr -k off -cb on ".tx"; setAttr -k off -cb on ".ty"; setAttr -k off -cb on ".tz"; - setAttr ".r" -type "double3" -5.77352278483104 -84.001563523230999 11.009204406909994 ; + setAttr ".r" -type "double3" -5.7735227848313926 -84.001563523231013 11.009204406910072 ; setAttr -k off -cb on ".rx"; setAttr -k off -cb on ".ry"; setAttr -k off -cb on ".rz"; setAttr -cb on ".ro"; - setAttr ".s" -type "double3" 3.4032157947041268 3.4032157947041157 3.4032157947041228 ; + setAttr ".s" -type "double3" 3.4032157947041268 3.4032157947041157 3.4032157947041233 ; setAttr -k off -cb on ".sx"; setAttr -k off -cb on ".sy"; setAttr -k off -cb on ".sz"; @@ -11305,20 +11229,8 @@ createNode transform -n "thumbRoll_R0_root" -p "meta_R0_root"; setAttr ".ctlGrp" -type "string" ""; setAttr ".icon" -type "string" "sphere"; setAttr ".ikrefarray" -type "string" ""; - setAttr ".k_tx" yes; - setAttr ".k_ty" yes; - setAttr ".k_tz" yes; - setAttr ".k_ro" yes; - setAttr ".k_rx" yes; - setAttr ".k_ry" yes; - setAttr ".k_rz" yes; - setAttr ".k_sx" yes; - setAttr ".k_sy" yes; - setAttr ".k_sz" yes; - setAttr ".ctlSize" 0.7; - setAttr ".parentJointIndex" -1; createNode nurbsCurve -n "thumbRoll_R0_rootShape" -p "thumbRoll_R0_root"; - rename -uid "65493F68-46ED-0EBB-517F-FDAA552329DC"; + rename -uid "3ED4F6C5-42A0-929B-708E-AA86B2579A8C"; setAttr ".ihi" 0; setAttr -k off ".v"; setAttr ".ove" yes; @@ -11330,8 +11242,8 @@ createNode nurbsCurve -n "thumbRoll_R0_rootShape" -p "thumbRoll_R0_root"; 0.25 0 0 -0.25 0 0 ; -createNode nurbsCurve -n "thumbRoll_R0_root1Shape" -p "thumbRoll_R0_root"; - rename -uid "91D8125C-41F8-4D32-32E9-E9B828FD828E"; +createNode nurbsCurve -n "thumbRoll_R0_root4Shape" -p "thumbRoll_R0_root"; + rename -uid "1E16621D-44B1-8B53-D5AC-4BB56215FE35"; setAttr ".ihi" 0; setAttr -k off ".v"; setAttr ".ove" yes; @@ -11343,8 +11255,8 @@ createNode nurbsCurve -n "thumbRoll_R0_root1Shape" -p "thumbRoll_R0_root"; 0 0.25 0 0 -0.25 0 ; -createNode nurbsCurve -n "thumbRoll_R0_root2Shape" -p "thumbRoll_R0_root"; - rename -uid "0D29AAA8-439A-EB05-107B-C3872074097F"; +createNode nurbsCurve -n "thumbRoll_R0_root5Shape" -p "thumbRoll_R0_root"; + rename -uid "DBBD629F-4E8E-2CDB-3C95-38BEEF9D05BC"; setAttr ".ihi" 0; setAttr -k off ".v"; setAttr ".ove" yes; @@ -11356,8 +11268,8 @@ createNode nurbsCurve -n "thumbRoll_R0_root2Shape" -p "thumbRoll_R0_root"; 0 0 0.25 0 0 -0.25 ; -createNode nurbsCurve -n "thumbRoll_R0_root3Shape" -p "thumbRoll_R0_root"; - rename -uid "894412AE-4EB6-68F7-D3B2-82A2A72ACCC0"; +createNode nurbsCurve -n "thumbRoll_R0_root6Shape" -p "thumbRoll_R0_root"; + rename -uid "093BA305-4181-46C5-934B-C692C529BC39"; setAttr ".ihi" 0; setAttr -k off ".v"; setAttr ".ove" yes; @@ -11384,10 +11296,10 @@ createNode nurbsCurve -n "thumbRoll_R0_root3Shape" -p "thumbRoll_R0_root"; -0.125 -0.125 -0.125 ; createNode transform -n "thumbRoll_R0_sizeRef" -p "thumbRoll_R0_root"; - rename -uid "BE449C1C-48B2-79DC-7D58-61BC7AD17976"; + rename -uid "6FE82DD8-4831-548A-24DF-09AE91D6B976"; addAttr -ci true -sn "isGearGuide" -ln "isGearGuide" -dv 1 -min 0 -max 1 -at "bool"; setAttr -k off -cb on ".v"; - setAttr ".t" -type "double3" 8.8817841970012523e-016 4.4408920985006262e-014 0.99999999999999978 ; + setAttr ".t" -type "double3" 2.2204460492503131e-015 4.0856207306205761e-014 0.99999999999999956 ; setAttr -k off -cb on ".tx"; setAttr -k off -cb on ".ty"; setAttr -k off -cb on ".tz"; @@ -11396,12 +11308,12 @@ createNode transform -n "thumbRoll_R0_sizeRef" -p "thumbRoll_R0_root"; setAttr -k off -cb on ".ry"; setAttr -k off -cb on ".rz"; setAttr -cb on ".ro"; - setAttr ".s" -type "double3" 1.0000000000000018 0.99999999999999745 1.0000000000000002 ; + setAttr ".s" -type "double3" 1.0000000000000013 0.99999999999999745 1 ; setAttr -k off -cb on ".sx"; setAttr -k off -cb on ".sy"; setAttr -k off -cb on ".sz"; createNode transform -n "thumb_R0_root" -p "thumbRoll_R0_root"; - rename -uid "91276550-4C2D-28B9-1C84-089D0D3BA159"; + rename -uid "25A6DC43-4A26-0DC6-96E9-51BD4B9BD15E"; addAttr -ci true -sn "isGearGuide" -ln "isGearGuide" -dv 1 -min 0 -max 1 -at "bool"; addAttr -ci true -sn "comp_type" -ln "comp_type" -dt "string"; addAttr -ci true -sn "comp_name" -ln "comp_name" -dt "string"; @@ -11411,22 +11323,22 @@ createNode transform -n "thumb_R0_root" -p "thumbRoll_R0_root"; addAttr -ci true -sn "ui_host" -ln "ui_host" -dt "string"; addAttr -ci true -sn "ctlGrp" -ln "ctlGrp" -dt "string"; addAttr -ci true -sn "mode" -ln "mode" -min 0 -at "long"; - addAttr -ci true -sn "blend" -ln "blend" -min 0 -max 1 -at "double"; - addAttr -ci true -sn "neutralpose" -ln "neutralpose" -min 0 -max 1 -at "bool"; + addAttr -ci true -sn "blend" -ln "blend" -dv 1 -min 0 -max 1 -at "double"; + addAttr -ci true -sn "neutralpose" -ln "neutralpose" -dv 1 -min 0 -max 1 -at "bool"; addAttr -ci true -sn "ikrefarray" -ln "ikrefarray" -dt "string"; addAttr -ci true -sn "useIndex" -ln "useIndex" -min 0 -max 1 -at "bool"; - addAttr -ci true -sn "parentJointIndex" -ln "parentJointIndex" -at "long"; + addAttr -ci true -sn "parentJointIndex" -ln "parentJointIndex" -dv -1 -at "long"; setAttr -k off -cb on ".v"; - setAttr ".t" -type "double3" 1.7763568394002505e-015 0 4.4408920985006262e-016 ; + setAttr ".t" -type "double3" 2.6645352591003757e-015 0 3.8857805861880479e-016 ; setAttr -k off -cb on ".tx"; setAttr -k off -cb on ".ty"; setAttr -k off -cb on ".tz"; - setAttr ".r" -type "double3" 110.80108631913045 -43.900240512232578 -37.623269198287652 ; + setAttr ".r" -type "double3" 110.80108631913072 -43.900240512232436 -37.623269198287858 ; setAttr -k off -cb on ".rx"; setAttr -k off -cb on ".ry"; setAttr -k off -cb on ".rz"; setAttr -cb on ".ro"; - setAttr ".s" -type "double3" 0.48936434703511095 0.48936434703511 0.48936434703511156 ; + setAttr ".s" -type "double3" 0.48936434703511078 0.48936434703510989 0.48936434703511139 ; setAttr -k off -cb on ".sx"; setAttr -k off -cb on ".sy"; setAttr -k off -cb on ".sz"; @@ -11436,12 +11348,9 @@ createNode transform -n "thumb_R0_root" -p "thumbRoll_R0_root"; setAttr ".connector" -type "string" "standard"; setAttr ".ui_host" -type "string" ""; setAttr ".ctlGrp" -type "string" ""; - setAttr ".blend" 1; - setAttr ".neutralpose" yes; setAttr ".ikrefarray" -type "string" ""; - setAttr ".parentJointIndex" -1; createNode nurbsCurve -n "thumb_R0_rootShape" -p "thumb_R0_root"; - rename -uid "7163DCB8-4F7D-7A5D-574C-EBB43FF1027B"; + rename -uid "766ECEC5-48FF-B526-ACC2-BB949AC2D0EE"; setAttr ".ihi" 0; setAttr -k off ".v"; setAttr ".ove" yes; @@ -11453,8 +11362,8 @@ createNode nurbsCurve -n "thumb_R0_rootShape" -p "thumb_R0_root"; 0.25 0 0 -0.25 0 0 ; -createNode nurbsCurve -n "thumb_R0_root1Shape" -p "thumb_R0_root"; - rename -uid "12D480E2-4BAB-9B03-7544-E1913E4313B7"; +createNode nurbsCurve -n "thumb_R0_root4Shape" -p "thumb_R0_root"; + rename -uid "3A881A6F-4B46-0CC9-F580-54A08EEA922A"; setAttr ".ihi" 0; setAttr -k off ".v"; setAttr ".ove" yes; @@ -11466,8 +11375,8 @@ createNode nurbsCurve -n "thumb_R0_root1Shape" -p "thumb_R0_root"; 0 0.25 0 0 -0.25 0 ; -createNode nurbsCurve -n "thumb_R0_root2Shape" -p "thumb_R0_root"; - rename -uid "F4EC9374-42F7-E4B9-D97D-13B3FB3DD849"; +createNode nurbsCurve -n "thumb_R0_root5Shape" -p "thumb_R0_root"; + rename -uid "6D48528B-4C73-F253-C54C-B2BB4839F3E1"; setAttr ".ihi" 0; setAttr -k off ".v"; setAttr ".ove" yes; @@ -11479,8 +11388,8 @@ createNode nurbsCurve -n "thumb_R0_root2Shape" -p "thumb_R0_root"; 0 0 0.25 0 0 -0.25 ; -createNode nurbsCurve -n "thumb_R0_root3Shape" -p "thumb_R0_root"; - rename -uid "AD731237-41D0-5B7F-AA2A-CC90E6EB025F"; +createNode nurbsCurve -n "thumb_R0_root6Shape" -p "thumb_R0_root"; + rename -uid "781F571D-44B8-E5AA-1DA4-2B87BC3897BB"; setAttr ".ihi" 0; setAttr -k off ".v"; setAttr ".ove" yes; @@ -11507,24 +11416,24 @@ createNode nurbsCurve -n "thumb_R0_root3Shape" -p "thumb_R0_root"; -0.125 -0.125 -0.125 ; createNode transform -n "thumb_R0_0_loc" -p "thumb_R0_root"; - rename -uid "B45350C2-4243-8515-A7E3-1395E1240EEE"; + rename -uid "747C3445-4961-75D2-C3C1-82A37FA07BA2"; addAttr -ci true -sn "isGearGuide" -ln "isGearGuide" -dv 1 -min 0 -max 1 -at "bool"; setAttr -k off -cb on ".v"; - setAttr ".t" -type "double3" 0.86054350703470028 0.0024095775966985755 -1.0658141036401503e-014 ; + setAttr ".t" -type "double3" 0.86054350703470206 0.002409577596695911 -7.1054273576010019e-015 ; setAttr -k off -cb on ".tx"; setAttr -k off -cb on ".ty"; setAttr -k off -cb on ".tz"; - setAttr ".r" -type "double3" 0 0 -4.2384257498060718 ; + setAttr ".r" -type "double3" 0 0 -4.2384257498060656 ; setAttr -k off -cb on ".rx"; setAttr -k off -cb on ".ry"; setAttr -k off -cb on ".rz"; setAttr -cb on ".ro"; - setAttr ".s" -type "double3" 0.99999999999999922 0.99999999999999978 1.0000000000000007 ; + setAttr ".s" -type "double3" 0.999999999999999 0.99999999999999978 1.0000000000000007 ; setAttr -k off -cb on ".sx"; setAttr -k off -cb on ".sy"; setAttr -k off -cb on ".sz"; createNode nurbsCurve -n "thumb_R0_0_locShape" -p "thumb_R0_0_loc"; - rename -uid "3F85E77E-4B02-AA1B-9081-A18CFEFF81CC"; + rename -uid "8641E949-4C90-B6AA-0B9A-9DB77F178468"; setAttr ".ihi" 0; setAttr -k off ".v"; setAttr ".ove" yes; @@ -11536,8 +11445,8 @@ createNode nurbsCurve -n "thumb_R0_0_locShape" -p "thumb_R0_0_loc"; 0.25 0 0 -0.25 0 0 ; -createNode nurbsCurve -n "thumb_R0_0_loc1Shape" -p "thumb_R0_0_loc"; - rename -uid "257230E3-433F-41D2-8937-1287E512115D"; +createNode nurbsCurve -n "thumb_R0_0_loc4Shape" -p "thumb_R0_0_loc"; + rename -uid "8DE8C2FE-4630-CCBD-70E4-C8A570469097"; setAttr ".ihi" 0; setAttr -k off ".v"; setAttr ".ove" yes; @@ -11549,8 +11458,8 @@ createNode nurbsCurve -n "thumb_R0_0_loc1Shape" -p "thumb_R0_0_loc"; 0 0.25 0 0 -0.25 0 ; -createNode nurbsCurve -n "thumb_R0_0_loc2Shape" -p "thumb_R0_0_loc"; - rename -uid "0D25C0B1-4450-68F8-5488-FC8D3D99F579"; +createNode nurbsCurve -n "thumb_R0_0_loc5Shape" -p "thumb_R0_0_loc"; + rename -uid "EB8FDE87-4B53-434E-60E9-13BEE085F138"; setAttr ".ihi" 0; setAttr -k off ".v"; setAttr ".ove" yes; @@ -11562,8 +11471,8 @@ createNode nurbsCurve -n "thumb_R0_0_loc2Shape" -p "thumb_R0_0_loc"; 0 0 0.25 0 0 -0.25 ; -createNode nurbsCurve -n "thumb_R0_0_loc3Shape" -p "thumb_R0_0_loc"; - rename -uid "68D8B66D-46FF-ADDC-5390-978C4A8C4DCD"; +createNode nurbsCurve -n "thumb_R0_0_loc6Shape" -p "thumb_R0_0_loc"; + rename -uid "8394A900-4413-B6F1-4C5C-9DA06105ED44"; setAttr ".ihi" 0; setAttr -k off ".v"; setAttr ".ove" yes; @@ -11580,8 +11489,8 @@ createNode nurbsCurve -n "thumb_R0_0_loc3Shape" -p "thumb_R0_0_loc"; 0 -0.1875 0 -0.1875 0 0 ; -createNode nurbsCurve -n "thumb_R0_0_loc3_0crvShape" -p "thumb_R0_0_loc"; - rename -uid "A1B0FED7-4D2F-1E55-A610-D5AD62523B64"; +createNode nurbsCurve -n "thumb_R0_0_loc6_0crvShape" -p "thumb_R0_0_loc"; + rename -uid "E32346FB-4EBB-F90B-2F41-64956AADC2E8"; setAttr ".ihi" 0; setAttr -k off ".v"; setAttr ".ove" yes; @@ -11598,8 +11507,8 @@ createNode nurbsCurve -n "thumb_R0_0_loc3_0crvShape" -p "thumb_R0_0_loc"; 0 0 -0.1875 -0.1875 0 0 ; -createNode nurbsCurve -n "thumb_R0_0_loc3_1crvShape" -p "thumb_R0_0_loc"; - rename -uid "29DCE6C5-45D4-F9DA-E00D-7B87882B924C"; +createNode nurbsCurve -n "thumb_R0_0_loc6_1crvShape" -p "thumb_R0_0_loc"; + rename -uid "7087149B-4E57-81C0-D2E1-C68B8A41B67B"; setAttr ".ihi" 0; setAttr -k off ".v"; setAttr ".ove" yes; @@ -11617,10 +11526,10 @@ createNode nurbsCurve -n "thumb_R0_0_loc3_1crvShape" -p "thumb_R0_0_loc"; 0 0 -0.1875 ; createNode transform -n "thumb_R0_1_loc" -p "thumb_R0_0_loc"; - rename -uid "74B33B7D-4887-2365-295B-FFA90843345B"; + rename -uid "3718944B-4FE5-729A-2109-249C73B279FB"; addAttr -ci true -sn "isGearGuide" -ln "isGearGuide" -dv 1 -min 0 -max 1 -at "bool"; setAttr -k off -cb on ".v"; - setAttr ".t" -type "double3" 0.76442580145521255 -1.7763568394002505e-015 2.4868995751603507e-014 ; + setAttr ".t" -type "double3" 0.764425801455209 1.7763568394002505e-015 2.1316282072803006e-014 ; setAttr -k off -cb on ".tx"; setAttr -k off -cb on ".ty"; setAttr -k off -cb on ".tz"; @@ -11628,12 +11537,12 @@ createNode transform -n "thumb_R0_1_loc" -p "thumb_R0_0_loc"; setAttr -k off -cb on ".ry"; setAttr -k off -cb on ".rz"; setAttr -cb on ".ro"; - setAttr ".s" -type "double3" 0.99999999999999933 0.99999999999999889 0.99999999999999989 ; + setAttr ".s" -type "double3" 0.99999999999999956 0.99999999999999911 1 ; setAttr -k off -cb on ".sx"; setAttr -k off -cb on ".sy"; setAttr -k off -cb on ".sz"; createNode nurbsCurve -n "thumb_R0_1_locShape" -p "thumb_R0_1_loc"; - rename -uid "632A9D8D-44D5-B7FB-5D31-0EBBD0C354ED"; + rename -uid "AA6E99E8-42B5-EB38-8D13-80B19E697CF4"; setAttr ".ihi" 0; setAttr -k off ".v"; setAttr ".ove" yes; @@ -11645,8 +11554,8 @@ createNode nurbsCurve -n "thumb_R0_1_locShape" -p "thumb_R0_1_loc"; 0.25 0 0 -0.25 0 0 ; -createNode nurbsCurve -n "thumb_R0_1_loc1Shape" -p "thumb_R0_1_loc"; - rename -uid "D00264ED-4997-AACF-DFE5-D8B3200F3975"; +createNode nurbsCurve -n "thumb_R0_1_loc4Shape" -p "thumb_R0_1_loc"; + rename -uid "27F47601-4402-B838-A90E-8F903196D751"; setAttr ".ihi" 0; setAttr -k off ".v"; setAttr ".ove" yes; @@ -11658,8 +11567,8 @@ createNode nurbsCurve -n "thumb_R0_1_loc1Shape" -p "thumb_R0_1_loc"; 0 0.25 0 0 -0.25 0 ; -createNode nurbsCurve -n "thumb_R0_1_loc2Shape" -p "thumb_R0_1_loc"; - rename -uid "7D70256B-4FA0-D604-E351-979F5D9C0C6E"; +createNode nurbsCurve -n "thumb_R0_1_loc5Shape" -p "thumb_R0_1_loc"; + rename -uid "A83E5E22-43BF-D7AD-A9B2-99979AF00E8E"; setAttr ".ihi" 0; setAttr -k off ".v"; setAttr ".ove" yes; @@ -11671,8 +11580,8 @@ createNode nurbsCurve -n "thumb_R0_1_loc2Shape" -p "thumb_R0_1_loc"; 0 0 0.25 0 0 -0.25 ; -createNode nurbsCurve -n "thumb_R0_1_loc3Shape" -p "thumb_R0_1_loc"; - rename -uid "BD85CF9A-468B-80A8-8017-8492D5747A9E"; +createNode nurbsCurve -n "thumb_R0_1_loc6Shape" -p "thumb_R0_1_loc"; + rename -uid "BBAAC151-4DFB-A5F4-7FA7-FCAEE06F2462"; setAttr ".ihi" 0; setAttr -k off ".v"; setAttr ".ove" yes; @@ -11689,8 +11598,8 @@ createNode nurbsCurve -n "thumb_R0_1_loc3Shape" -p "thumb_R0_1_loc"; 0 -0.1875 0 -0.1875 0 0 ; -createNode nurbsCurve -n "thumb_R0_1_loc3_0crvShape" -p "thumb_R0_1_loc"; - rename -uid "1B5887D1-426D-AAE5-DF80-E39F5DDA8C04"; +createNode nurbsCurve -n "thumb_R0_1_loc6_0crvShape" -p "thumb_R0_1_loc"; + rename -uid "C50D5C3C-4113-1E53-CD68-5482A09FA2F2"; setAttr ".ihi" 0; setAttr -k off ".v"; setAttr ".ove" yes; @@ -11707,8 +11616,8 @@ createNode nurbsCurve -n "thumb_R0_1_loc3_0crvShape" -p "thumb_R0_1_loc"; 0 0 -0.1875 -0.1875 0 0 ; -createNode nurbsCurve -n "thumb_R0_1_loc3_1crvShape" -p "thumb_R0_1_loc"; - rename -uid "E0929390-4A1D-D2A1-667E-FDBE51BF8E26"; +createNode nurbsCurve -n "thumb_R0_1_loc6_1crvShape" -p "thumb_R0_1_loc"; + rename -uid "615371A2-4C23-B9C5-FE7F-E7BAF01F651C"; setAttr ".ihi" 0; setAttr -k off ".v"; setAttr ".ove" yes; @@ -11726,10 +11635,10 @@ createNode nurbsCurve -n "thumb_R0_1_loc3_1crvShape" -p "thumb_R0_1_loc"; 0 0 -0.1875 ; createNode transform -n "thumb_R0_2_loc" -p "thumb_R0_1_loc"; - rename -uid "D8C43DD3-4CD5-D744-DE28-CD8E433A22D4"; + rename -uid "E8D70256-450E-5C67-767D-D48FB11A2647"; addAttr -ci true -sn "isGearGuide" -ln "isGearGuide" -dv 1 -min 0 -max 1 -at "bool"; setAttr -k off -cb on ".v"; - setAttr ".t" -type "double3" 0.5948211491551092 6.2172489379008766e-015 3.5527136788005009e-015 ; + setAttr ".t" -type "double3" 0.59482114915510742 6.2172489379008766e-015 3.5527136788005009e-015 ; setAttr -k off -cb on ".tx"; setAttr -k off -cb on ".ty"; setAttr -k off -cb on ".tz"; @@ -11737,12 +11646,12 @@ createNode transform -n "thumb_R0_2_loc" -p "thumb_R0_1_loc"; setAttr -k off -cb on ".ry"; setAttr -k off -cb on ".rz"; setAttr -cb on ".ro"; - setAttr ".s" -type "double3" 1 1.0000000000000004 0.99999999999999978 ; + setAttr ".s" -type "double3" 1 1.0000000000000002 0.99999999999999978 ; setAttr -k off -cb on ".sx"; setAttr -k off -cb on ".sy"; setAttr -k off -cb on ".sz"; createNode nurbsCurve -n "thumb_R0_2_locShape" -p "thumb_R0_2_loc"; - rename -uid "61C4FEB4-4CF8-C3D0-9931-75BE9E72070B"; + rename -uid "1FD06FA8-4857-E0D8-DBD7-4AA97DAB7A7A"; setAttr ".ihi" 0; setAttr -k off ".v"; setAttr ".ove" yes; @@ -11754,8 +11663,8 @@ createNode nurbsCurve -n "thumb_R0_2_locShape" -p "thumb_R0_2_loc"; 0.25 0 0 -0.25 0 0 ; -createNode nurbsCurve -n "thumb_R0_2_loc1Shape" -p "thumb_R0_2_loc"; - rename -uid "D06F8C2E-4AFC-95AC-6D3B-40B34767F769"; +createNode nurbsCurve -n "thumb_R0_2_loc4Shape" -p "thumb_R0_2_loc"; + rename -uid "C670F9D1-43D8-BC38-A5A4-F28A8EE564FB"; setAttr ".ihi" 0; setAttr -k off ".v"; setAttr ".ove" yes; @@ -11767,8 +11676,8 @@ createNode nurbsCurve -n "thumb_R0_2_loc1Shape" -p "thumb_R0_2_loc"; 0 0.25 0 0 -0.25 0 ; -createNode nurbsCurve -n "thumb_R0_2_loc2Shape" -p "thumb_R0_2_loc"; - rename -uid "FB89C178-45A0-CE66-8898-D6BDE4816557"; +createNode nurbsCurve -n "thumb_R0_2_loc5Shape" -p "thumb_R0_2_loc"; + rename -uid "A02B31B7-4910-0177-3F51-BE8780B893E4"; setAttr ".ihi" 0; setAttr -k off ".v"; setAttr ".ove" yes; @@ -11780,8 +11689,8 @@ createNode nurbsCurve -n "thumb_R0_2_loc2Shape" -p "thumb_R0_2_loc"; 0 0 0.25 0 0 -0.25 ; -createNode nurbsCurve -n "thumb_R0_2_loc3Shape" -p "thumb_R0_2_loc"; - rename -uid "D10CCD56-41A1-C3C3-83FB-E88302D91816"; +createNode nurbsCurve -n "thumb_R0_2_loc6Shape" -p "thumb_R0_2_loc"; + rename -uid "FD33CE21-47DB-AA69-2638-0E8478865545"; setAttr ".ihi" 0; setAttr -k off ".v"; setAttr ".ove" yes; @@ -11798,8 +11707,8 @@ createNode nurbsCurve -n "thumb_R0_2_loc3Shape" -p "thumb_R0_2_loc"; 0 -0.1875 0 -0.1875 0 0 ; -createNode nurbsCurve -n "thumb_R0_2_loc3_0crvShape" -p "thumb_R0_2_loc"; - rename -uid "F18A52DC-4BEB-972C-D743-8B91451E7805"; +createNode nurbsCurve -n "thumb_R0_2_loc6_0crvShape" -p "thumb_R0_2_loc"; + rename -uid "8CBF8B54-4C43-5204-CF91-E8A2073E40E5"; setAttr ".ihi" 0; setAttr -k off ".v"; setAttr ".ove" yes; @@ -11816,8 +11725,8 @@ createNode nurbsCurve -n "thumb_R0_2_loc3_0crvShape" -p "thumb_R0_2_loc"; 0 0 -0.1875 -0.1875 0 0 ; -createNode nurbsCurve -n "thumb_R0_2_loc3_1crvShape" -p "thumb_R0_2_loc"; - rename -uid "6A7CDDDF-4408-C90D-5B37-C996451D4D70"; +createNode nurbsCurve -n "thumb_R0_2_loc6_1crvShape" -p "thumb_R0_2_loc"; + rename -uid "F750D7ED-4B03-0CB8-0388-4988DB851487"; setAttr ".ihi" 0; setAttr -k off ".v"; setAttr ".ove" yes; @@ -11835,7 +11744,7 @@ createNode nurbsCurve -n "thumb_R0_2_loc3_1crvShape" -p "thumb_R0_2_loc"; 0 0 -0.1875 ; createNode transform -n "thumb_R0_blade" -p "thumb_R0_root"; - rename -uid "13DDE89F-481E-6FAC-5C87-CB8E37AEA9C7"; + rename -uid "1CB395C4-4C72-7866-77F8-DDA2DB4AFF4F"; addAttr -ci true -k true -sn "bladeRollOffset" -ln "bladeRollOffset" -at "float"; setAttr -l on -k off -cb on ".v"; setAttr -k off -cb on ".tx"; @@ -11845,13 +11754,13 @@ createNode transform -n "thumb_R0_blade" -p "thumb_R0_root"; setAttr -k off -cb on ".ry"; setAttr -k off -cb on ".rz"; setAttr -cb on ".ro"; - setAttr ".s" -type "double3" 0.99999999999999833 0.99999999999999822 0.99999999999999933 ; + setAttr ".s" -type "double3" 0.99999999999999856 0.99999999999999822 0.99999999999999978 ; setAttr -l on -k off -cb on ".sx"; setAttr -l on -k off -cb on ".sy"; setAttr -l on -k off -cb on ".sz"; setAttr -k on ".bladeRollOffset"; createNode nurbsCurve -n "thumb_R0_bladeShape" -p "thumb_R0_blade"; - rename -uid "C440EB17-4444-1B53-DF74-2581728A8FD8"; + rename -uid "C578AA88-473E-A932-7B93-9F9CBCCE5782"; setAttr ".ihi" 0; setAttr -k off ".v"; setAttr ".ove" yes; @@ -11861,12 +11770,12 @@ createNode nurbsCurve -n "thumb_R0_bladeShape" -p "thumb_R0_blade"; 4 0 1 2 3 4 0 0 0 - 0.29361860822106656 0 0 - 0 0.097872869407022181 0 + 0.29361860822106645 0 0 + 0 0.097872869407022153 0 0 0 0 ; -createNode aimConstraint -n "thumb_R0_blade_aimConstraint1" -p "thumb_R0_blade"; - rename -uid "DD75F73D-4488-6EB5-2DD1-F3BDF8741046"; +createNode aimConstraint -n "thumb_R0_blade_aimConstraint2" -p "thumb_R0_blade"; + rename -uid "0F863B04-4EB6-282B-6E28-1F83BEA12B24"; addAttr -dcb 0 -ci true -sn "w0" -ln "thumb_R0_0_locW0" -dv 1 -at "double"; setAttr -k on ".nds"; setAttr -k off ".v"; @@ -11881,10 +11790,11 @@ createNode aimConstraint -n "thumb_R0_blade_aimConstraint1" -p "thumb_R0_blade"; setAttr -k off ".sz"; setAttr ".erp" yes; setAttr ".wut" 2; - setAttr ".rsrr" -type "double3" 9.934975449124265e-016 7.0962606763791992e-013 0.16043147704029556 ; + setAttr ".rsrr" -type "double3" 6.6233169660877251e-016 4.7308404509229538e-013 + 0.16043147704029556 ; setAttr -k on ".w0"; -createNode pointConstraint -n "thumb_R0_blade_pointConstraint1" -p "thumb_R0_blade"; - rename -uid "C3D9B721-404A-DC7B-21B7-4F961DE25EF2"; +createNode pointConstraint -n "thumb_R0_blade_pointConstraint2" -p "thumb_R0_blade"; + rename -uid "E6BCA4A0-4320-8704-4A0E-A19346F085CD"; addAttr -dcb 0 -ci true -k true -sn "w0" -ln "thumb_R0_rootW0" -dv 1 -min 0 -at "double"; setAttr -k on ".nds"; setAttr -k off ".v"; @@ -11898,23 +11808,22 @@ createNode pointConstraint -n "thumb_R0_blade_pointConstraint1" -p "thumb_R0_bla setAttr -k off ".sy"; setAttr -k off ".sz"; setAttr ".erp" yes; - setAttr ".rst" -type "double3" -1.7763568394002505e-015 1.7763568394002505e-015 - 0 ; + setAttr ".rst" -type "double3" 0 -8.8817841970012523e-016 0 ; setAttr -k on ".w0"; createNode transform -n "thumb_R0_crv" -p "thumb_R0_root"; - rename -uid "3A2053EF-4389-D0CB-F55A-FD811A5B3108"; + rename -uid "34B5642F-4689-C0E1-82EE-1BA3A7CF18A4"; setAttr ".ovdt" 1; setAttr ".ove" yes; - setAttr ".t" -type "double3" 14.330153889042874 -7.0737929587543205 17.725867635512831 ; - setAttr ".r" -type "double3" -55.556977946373188 -63.100734454449608 102.71864583729831 ; - setAttr ".s" -type "double3" 2.0434672163157268 2.0434672163157197 -2.0434672163157255 ; + setAttr ".t" -type "double3" 14.330153889042872 -7.0737929587543267 17.725867635512838 ; + setAttr ".r" -type "double3" -55.556977946373252 -63.100734454449608 102.71864583729831 ; + setAttr ".s" -type "double3" 2.0434672163157264 2.0434672163157197 -2.0434672163157255 ; createNode nurbsCurve -n "thumb_R0_crvShape" -p "thumb_R0_crv"; - rename -uid "35577138-4F2D-2518-EA73-968BB37C0244"; + rename -uid "2CF2C629-4C66-D4D2-764C-B6809E0FD00D"; setAttr -k off ".v"; setAttr -s 4 ".iog[0].og"; setAttr ".tw" yes; createNode nurbsCurve -n "thumb_R0_crvShapeOrig" -p "thumb_R0_crv"; - rename -uid "9070D187-4770-846D-20E1-D783FE8D061F"; + rename -uid "4A29B0C4-4465-A009-FCD4-7A80CFF86F7B"; setAttr -k off ".v"; setAttr ".io" yes; setAttr ".cc" -type "nurbsCurve" @@ -11927,19 +11836,19 @@ createNode nurbsCurve -n "thumb_R0_crvShapeOrig" -p "thumb_R0_crv"; 0 0 0 ; createNode transform -n "arm_R0_crv" -p "arm_R0_root"; - rename -uid "46C05DF5-4392-1F43-BDAD-6AA1725690D7"; + rename -uid "43A62435-471C-7F61-A05F-EB8D9B56E175"; setAttr ".ovdt" 1; setAttr ".ove" yes; - setAttr ".t" -type "double3" 9.5792744434200294 -11.862061807473017 1.1564412205648611 ; - setAttr ".r" -type "double3" 2.1534408611045781 175.80406292066331 45.437740049298284 ; - setAttr ".s" -type "double3" 1.0495082267377442 1.049508226737738 -1.0495082267377405 ; + setAttr ".t" -type "double3" 9.5792744434200294 -11.862061807473022 1.1564412205648698 ; + setAttr ".r" -type "double3" 2.1534408611046039 175.80406292066331 45.437740049298235 ; + setAttr ".s" -type "double3" 1.0495082267377431 1.0495082267377382 -1.04950822673774 ; createNode nurbsCurve -n "arm_R0_crvShape" -p "arm_R0_crv"; - rename -uid "35849586-42EF-8722-CFFD-A4A08D71E460"; + rename -uid "4210867A-483E-7D62-0350-F3857C3292AD"; setAttr -k off ".v"; setAttr -s 4 ".iog[0].og"; setAttr ".tw" yes; createNode nurbsCurve -n "arm_R0_crvShapeOrig" -p "arm_R0_crv"; - rename -uid "369DFBFE-4CF3-B890-36AD-1DAC4D975C4C"; + rename -uid "E5D589E0-4E59-6E10-2F94-4181CD3C0163"; setAttr -k off ".v"; setAttr ".io" yes; setAttr ".cc" -type "nurbsCurve" @@ -11952,8 +11861,9 @@ createNode nurbsCurve -n "arm_R0_crvShapeOrig" -p "arm_R0_crv"; 0 0 0 ; createNode transform -n "shoulder_R0_blade" -p "shoulder_R0_root"; - rename -uid "F33A4CF8-49E2-C126-EE00-DA89A5C8F912"; - addAttr -ci true -k true -sn "bladeRollOffset" -ln "bladeRollOffset" -at "float"; + rename -uid "12C73153-4D89-6BE4-57EB-FB8D1CAB7CAF"; + addAttr -ci true -k true -sn "bladeRollOffset" -ln "bladeRollOffset" -dv 89.999999999999986 + -at "float"; setAttr -l on -k off -cb on ".v"; setAttr -k off -cb on ".tx"; setAttr -k off -cb on ".ty"; @@ -11962,13 +11872,13 @@ createNode transform -n "shoulder_R0_blade" -p "shoulder_R0_root"; setAttr -k off -cb on ".ry"; setAttr -k off -cb on ".rz"; setAttr -cb on ".ro"; - setAttr ".s" -type "double3" 0.99999999999999989 0.999999999999997 0.999999999999998 ; + setAttr ".s" -type "double3" 0.99999999999999978 0.99999999999999689 0.99999999999999778 ; setAttr -l on -k off -cb on ".sx"; setAttr -l on -k off -cb on ".sy"; setAttr -l on -k off -cb on ".sz"; - setAttr -k on ".bladeRollOffset" 90; + setAttr -k on ".bladeRollOffset"; createNode nurbsCurve -n "shoulder_R0_bladeShape" -p "shoulder_R0_blade"; - rename -uid "B651C082-4288-917A-9AB4-149514FE8450"; + rename -uid "EDF8D81B-4906-9435-3C16-608F4BD47355"; setAttr ".ihi" 0; setAttr -k off ".v"; setAttr ".ove" yes; @@ -11978,12 +11888,12 @@ createNode nurbsCurve -n "shoulder_R0_bladeShape" -p "shoulder_R0_blade"; 4 0 1 2 3 4 0 0 0 - 0.60000000000000109 0 0 - 0 0.20000000000000037 0 + 0.60000000000000131 0 0 + 0 0.20000000000000043 0 0 0 0 ; -createNode aimConstraint -n "shoulder_R0_blade_aimConstraint1" -p "shoulder_R0_blade"; - rename -uid "2BACFE67-444F-1F5E-235C-8B9791487A8E"; +createNode aimConstraint -n "shoulder_R0_blade_aimConstraint2" -p "shoulder_R0_blade"; + rename -uid "EF988694-4424-D358-D76D-F6B83DB880F7"; addAttr -dcb 0 -ci true -sn "w0" -ln "shoulder_R0_tipW0" -dv 1 -at "double"; setAttr -k on ".nds"; setAttr -k off ".v"; @@ -11998,11 +11908,11 @@ createNode aimConstraint -n "shoulder_R0_blade_aimConstraint1" -p "shoulder_R0_b setAttr -k off ".sz"; setAttr ".erp" yes; setAttr ".wut" 2; - setAttr ".o" -type "double3" 90 179.99999999999957 180.00000000000017 ; - setAttr ".rsrr" -type "double3" 23.386262286472864 122.53864021838231 110.03040021520752 ; + setAttr ".o" -type "double3" 90 179.9999999999996 180.00000000000017 ; + setAttr ".rsrr" -type "double3" 23.386262286472839 122.53864021838231 110.03040021520752 ; setAttr -k on ".w0"; -createNode pointConstraint -n "shoulder_R0_blade_pointConstraint1" -p "shoulder_R0_blade"; - rename -uid "9D137017-4C2F-67A2-D51C-CDB7D82E39F5"; +createNode pointConstraint -n "shoulder_R0_blade_pointConstraint2" -p "shoulder_R0_blade"; + rename -uid "C3DF093D-4D84-C4F7-B535-38A5795098A7"; addAttr -dcb 0 -ci true -k true -sn "w0" -ln "shoulder_R0_rootW0" -dv 1 -min 0 -at "double"; setAttr -k on ".nds"; @@ -12017,22 +11927,23 @@ createNode pointConstraint -n "shoulder_R0_blade_pointConstraint1" -p "shoulder_ setAttr -k off ".sy"; setAttr -k off ".sz"; setAttr ".erp" yes; - setAttr ".rst" -type "double3" 0 -2.2551405187698492e-017 0 ; + setAttr ".rst" -type "double3" -1.7763568394002505e-015 -2.6020852139652106e-017 + 0 ; setAttr -k on ".w0"; createNode transform -n "shoulder_R0_crv" -p "shoulder_R0_root"; - rename -uid "224F71DD-4491-6D1C-6D6C-29829DD048AF"; + rename -uid "FAACBF9B-47AF-3284-142F-6F89309FA883"; setAttr ".ovdt" 1; setAttr ".ove" yes; - setAttr ".t" -type "double3" 15.507521470509836 0.009276189738275686 0.1167332775326503 ; + setAttr ".t" -type "double3" 15.507521470509833 0.0092761897382757381 0.1167332775326503 ; setAttr ".r" -type "double3" 90.803889228153793 -89.999999999999986 0 ; - setAttr ".s" -type "double3" 1.0495082267377418 1.0495082267377369 -1.0495082267377369 ; + setAttr ".s" -type "double3" 1.0495082267377416 1.0495082267377367 -1.0495082267377365 ; createNode nurbsCurve -n "shoulder_R0_crvShape" -p "shoulder_R0_crv"; - rename -uid "E84EF6EB-4389-606B-AB17-15AAA94A7D56"; + rename -uid "A1ED4CBF-4B0E-9A01-BC53-868AF0CBB011"; setAttr -k off ".v"; setAttr -s 4 ".iog[0].og"; setAttr ".tw" yes; createNode nurbsCurve -n "shoulder_R0_crvShapeOrig" -p "shoulder_R0_crv"; - rename -uid "E2B9F091-41AF-4630-A6C6-A8B23611E1CD"; + rename -uid "E517D413-4844-8E6E-EF60-C685437AADA5"; setAttr -k off ".v"; setAttr ".io" yes; setAttr ".cc" -type "nurbsCurve" @@ -12043,7 +11954,7 @@ createNode nurbsCurve -n "shoulder_R0_crvShapeOrig" -p "shoulder_R0_crv"; 0 0 0 ; createNode transform -n "spine_C0_blade" -p "spine_C0_root"; - rename -uid "C4748D35-494C-0F0A-D9A1-05AC660BCB3C"; + rename -uid "C9FD6E77-415F-F0C6-6D65-A8A132484303"; addAttr -ci true -k true -sn "bladeRollOffset" -ln "bladeRollOffset" -at "float"; setAttr -l on -k off -cb on ".v"; setAttr -k off -cb on ".tx"; @@ -12053,13 +11964,13 @@ createNode transform -n "spine_C0_blade" -p "spine_C0_root"; setAttr -k off -cb on ".ry"; setAttr -k off -cb on ".rz"; setAttr -cb on ".ro"; - setAttr ".s" -type "double3" 1.0000000000000013 0.99999999999999956 0.99999999999999833 ; + setAttr ".s" -type "double3" 1.0000000000000011 0.99999999999999967 0.99999999999999845 ; setAttr -l on -k off -cb on ".sx"; setAttr -l on -k off -cb on ".sy"; setAttr -l on -k off -cb on ".sz"; setAttr -k on ".bladeRollOffset"; createNode nurbsCurve -n "spine_C0_bladeShape" -p "spine_C0_blade"; - rename -uid "CE8E0A54-4319-69E6-8954-D696E76D9DFA"; + rename -uid "F6A7542E-4CF6-66B8-FEDA-F9A72E6DFF9C"; setAttr ".ihi" 0; setAttr -k off ".v"; setAttr ".ove" yes; @@ -12073,8 +11984,8 @@ createNode nurbsCurve -n "spine_C0_bladeShape" -p "spine_C0_blade"; 0 0.10237829928482099 0 0 0 0 ; -createNode aimConstraint -n "spine_C0_blade_aimConstraint9" -p "spine_C0_blade"; - rename -uid "D67A33CA-445D-921B-350F-92BCB257431D"; +createNode aimConstraint -n "spine_C0_blade_aimConstraint10" -p "spine_C0_blade"; + rename -uid "AF458BF5-42E3-79E7-A51B-E299916EB72F"; addAttr -dcb 0 -ci true -sn "w0" -ln "spine_C0_effW0" -dv 1 -at "double"; setAttr -k on ".nds"; setAttr -k off ".v"; @@ -12090,8 +12001,8 @@ createNode aimConstraint -n "spine_C0_blade_aimConstraint9" -p "spine_C0_blade"; setAttr ".erp" yes; setAttr ".wut" 2; setAttr -k on ".w0"; -createNode pointConstraint -n "spine_C0_blade_pointConstraint9" -p "spine_C0_blade"; - rename -uid "A6B1B695-4357-214A-F3EE-8B8DB9C36EAC"; +createNode pointConstraint -n "spine_C0_blade_pointConstraint10" -p "spine_C0_blade"; + rename -uid "A97C1C48-443E-1882-02BF-31A199443356"; addAttr -dcb 0 -ci true -k true -sn "w0" -ln "spine_C0_rootW0" -dv 1 -min 0 -at "double"; setAttr -k on ".nds"; setAttr -k off ".v"; @@ -12105,22 +12016,22 @@ createNode pointConstraint -n "spine_C0_blade_pointConstraint9" -p "spine_C0_bla setAttr -k off ".sy"; setAttr -k off ".sz"; setAttr ".erp" yes; - setAttr ".rst" -type "double3" 0 5.5511151231257827e-017 -6.1629758220391547e-033 ; + setAttr ".rst" -type "double3" 0 2.7755575615628914e-017 -6.1629758220391547e-033 ; setAttr -k on ".w0"; createNode transform -n "spine_C0_crv" -p "spine_C0_root"; - rename -uid "ED1A9FCF-4629-F737-A18A-A3BFEEA21731"; + rename -uid "AFC419DD-4C0F-5ACD-8B23-9BBF67DDB8A4"; setAttr ".ovdt" 1; setAttr ".ove" yes; - setAttr ".t" -type "double3" -11.390533694690752 0.19144303592045889 -4.2508893276606347e-017 ; + setAttr ".t" -type "double3" -11.390533694690751 0.19144303592045883 -4.2508893276606341e-017 ; setAttr ".r" -type "double3" 90.000000000000014 89.999999999999986 0 ; - setAttr ".s" -type "double3" 1.0495082267377405 1.0495082267377402 1.0495082267377389 ; + setAttr ".s" -type "double3" 1.0495082267377405 1.04950822673774 1.0495082267377389 ; createNode nurbsCurve -n "spine_C0_crvShape" -p "spine_C0_crv"; - rename -uid "B01EB818-4379-6A3C-B685-E1B36C989856"; + rename -uid "D18FE64B-4233-5364-D4E2-20B55631DB59"; setAttr -k off ".v"; setAttr -s 4 ".iog[0].og"; setAttr ".tw" yes; createNode nurbsCurve -n "spine_C0_crvShapeOrig" -p "spine_C0_crv"; - rename -uid "15E35F93-4486-FF5D-96BA-50BFFAA2FA7F"; + rename -uid "312FED03-45DD-9A4C-D2FD-639E5AD08883"; setAttr -k off ".v"; setAttr ".io" yes; setAttr ".cc" -type "nurbsCurve" @@ -12131,7 +12042,7 @@ createNode nurbsCurve -n "spine_C0_crvShapeOrig" -p "spine_C0_crv"; 0 0 0 ; createNode transform -n "leg_L0_root" -p "spine_C0_root"; - rename -uid "A6B1914A-41D3-9EC2-0226-268567DBF824"; + rename -uid "40161BF3-4B29-2CFD-148E-20808C8A13AF"; addAttr -ci true -sn "isGearGuide" -ln "isGearGuide" -dv 1 -min 0 -max 1 -at "bool"; addAttr -ci true -sn "comp_type" -ln "comp_type" -dt "string"; addAttr -ci true -sn "comp_name" -ln "comp_name" -dt "string"; @@ -12140,29 +12051,29 @@ createNode transform -n "leg_L0_root" -p "spine_C0_root"; addAttr -ci true -sn "connector" -ln "connector" -dt "string"; addAttr -ci true -sn "ui_host" -ln "ui_host" -dt "string"; addAttr -ci true -sn "ctlGrp" -ln "ctlGrp" -dt "string"; - addAttr -ci true -sn "blend" -ln "blend" -min 0 -max 1 -at "double"; + addAttr -ci true -sn "blend" -ln "blend" -dv 1 -min 0 -max 1 -at "double"; addAttr -ci true -sn "ikrefarray" -ln "ikrefarray" -dt "string"; addAttr -ci true -sn "upvrefarray" -ln "upvrefarray" -dt "string"; addAttr -ci true -sn "pinrefarray" -ln "pinrefarray" -dt "string"; - addAttr -ci true -sn "maxstretch" -ln "maxstretch" -dv 1 -min 1 -at "double"; + addAttr -ci true -sn "maxstretch" -ln "maxstretch" -dv 1.5 -min 1 -at "double"; addAttr -ci true -sn "mirrorMid" -ln "mirrorMid" -min 0 -max 1 -at "bool"; - addAttr -ci true -sn "div0" -ln "div0" -dv 1 -min 1 -at "long"; - addAttr -ci true -sn "div1" -ln "div1" -dv 1 -min 1 -at "long"; + addAttr -ci true -sn "div0" -ln "div0" -dv 2 -min 1 -at "long"; + addAttr -ci true -sn "div1" -ln "div1" -dv 2 -min 1 -at "long"; addAttr -ci true -k true -sn "st_profile" -ln "st_profile" -at "double"; addAttr -ci true -k true -sn "sq_profile" -ln "sq_profile" -at "double"; addAttr -ci true -sn "useIndex" -ln "useIndex" -min 0 -max 1 -at "bool"; - addAttr -ci true -sn "parentJointIndex" -ln "parentJointIndex" -at "long"; + addAttr -ci true -sn "parentJointIndex" -ln "parentJointIndex" -dv -1 -at "long"; setAttr -k off -cb on ".v"; - setAttr ".t" -type "double3" -1.1814583394588016 2.2204460492503131e-016 -1.0212680564255745 ; + setAttr ".t" -type "double3" -1.1814583394588016 1.9428902930940239e-016 -1.0212680564255745 ; setAttr -k off -cb on ".tx"; setAttr -k off -cb on ".ty"; setAttr -k off -cb on ".tz"; - setAttr ".r" -type "double3" 0 0.29314386227018274 0 ; + setAttr ".r" -type "double3" 0 0.2931438622701828 0 ; setAttr -k off -cb on ".rx"; setAttr -k off -cb on ".ry"; setAttr -k off -cb on ".rz"; setAttr -cb on ".ro"; - setAttr ".s" -type "double3" 1.0000000000000024 0.99999999999999822 1 ; + setAttr ".s" -type "double3" 1.0000000000000022 0.99999999999999833 1.0000000000000002 ; setAttr -k off -cb on ".sx"; setAttr -k off -cb on ".sy"; setAttr -k off -cb on ".sz"; @@ -12172,18 +12083,13 @@ createNode transform -n "leg_L0_root" -p "spine_C0_root"; setAttr ".connector" -type "string" "standard"; setAttr ".ui_host" -type "string" "legUI_L0_root"; setAttr ".ctlGrp" -type "string" ""; - setAttr ".blend" 1; setAttr ".ikrefarray" -type "string" "local_C0_root,global_C0_root"; setAttr ".upvrefarray" -type "string" "local_C0_root,global_C0_root"; setAttr ".pinrefarray" -type "string" "local_C0_root,global_C0_root"; - setAttr ".maxstretch" 1.5; - setAttr ".div0" 2; - setAttr ".div1" 2; setAttr -k on ".st_profile"; setAttr -k on ".sq_profile"; - setAttr ".parentJointIndex" -1; createNode nurbsCurve -n "leg_L0_rootShape" -p "leg_L0_root"; - rename -uid "95A5142C-48D7-FDCE-1874-26AF53AA6A7D"; + rename -uid "98CAB11C-4F19-B71B-241B-1A9D9105D5BD"; setAttr ".ihi" 0; setAttr -k off ".v"; setAttr ".ove" yes; @@ -12195,8 +12101,8 @@ createNode nurbsCurve -n "leg_L0_rootShape" -p "leg_L0_root"; 0.25 0 0 -0.25 0 0 ; -createNode nurbsCurve -n "leg_L0_root25Shape" -p "leg_L0_root"; - rename -uid "B8840B16-479C-06E1-2CC6-F6AB6108A03D"; +createNode nurbsCurve -n "leg_L0_root28Shape" -p "leg_L0_root"; + rename -uid "4CDF9AB3-4066-95A1-1659-E5A30B1BBB99"; setAttr ".ihi" 0; setAttr -k off ".v"; setAttr ".ove" yes; @@ -12208,8 +12114,8 @@ createNode nurbsCurve -n "leg_L0_root25Shape" -p "leg_L0_root"; 0 0.25 0 0 -0.25 0 ; -createNode nurbsCurve -n "leg_L0_root26Shape" -p "leg_L0_root"; - rename -uid "ECB6766C-420F-7263-94C9-6F9D8C489784"; +createNode nurbsCurve -n "leg_L0_root29Shape" -p "leg_L0_root"; + rename -uid "B17787ED-4FD8-901D-CD21-7F8D27FE4A87"; setAttr ".ihi" 0; setAttr -k off ".v"; setAttr ".ove" yes; @@ -12221,8 +12127,8 @@ createNode nurbsCurve -n "leg_L0_root26Shape" -p "leg_L0_root"; 0 0 0.25 0 0 -0.25 ; -createNode nurbsCurve -n "leg_L0_root27Shape" -p "leg_L0_root"; - rename -uid "658E7D9A-47F1-1892-F7E3-3B936F0F9CE2"; +createNode nurbsCurve -n "leg_L0_root30Shape" -p "leg_L0_root"; + rename -uid "3E6AE3A4-44FD-CD34-3BB1-39BF229A6534"; setAttr ".ihi" 0; setAttr -k off ".v"; setAttr ".ove" yes; @@ -12249,10 +12155,10 @@ createNode nurbsCurve -n "leg_L0_root27Shape" -p "leg_L0_root"; -0.125 -0.125 -0.125 ; createNode transform -n "leg_L0_knee" -p "leg_L0_root"; - rename -uid "923BA23D-420A-4D63-2DEB-F6B9B405E6EF"; + rename -uid "780A4FBA-4CBD-2BF2-7507-73B77D1C1775"; addAttr -ci true -sn "isGearGuide" -ln "isGearGuide" -dv 1 -min 0 -max 1 -at "bool"; setAttr -k off -cb on ".v"; - setAttr ".t" -type "double3" -4.3795369772304023 0.38838644346805862 -2.4424906541753444e-015 ; + setAttr ".t" -type "double3" -4.3795369772304014 0.38838644346805862 -2.55351295663786e-015 ; setAttr -k off -cb on ".tx"; setAttr -k off -cb on ".ty"; setAttr -k off -cb on ".tz"; @@ -12261,12 +12167,12 @@ createNode transform -n "leg_L0_knee" -p "leg_L0_root"; setAttr -k off -cb on ".ry"; setAttr -k off -cb on ".rz"; setAttr -cb on ".ro"; - setAttr ".s" -type "double3" 1.0000000000000011 0.99999999999999956 1.0000000000000018 ; + setAttr ".s" -type "double3" 1.0000000000000013 1 1.0000000000000018 ; setAttr -k off -cb on ".sx"; setAttr -k off -cb on ".sy"; setAttr -k off -cb on ".sz"; createNode nurbsCurve -n "leg_L0_kneeShape" -p "leg_L0_knee"; - rename -uid "DD074F3D-45D2-BE16-343D-349BF42413F7"; + rename -uid "9A912E87-41FB-455F-B0A6-778FFE39BE75"; setAttr ".ihi" 0; setAttr -k off ".v"; setAttr ".ove" yes; @@ -12278,8 +12184,8 @@ createNode nurbsCurve -n "leg_L0_kneeShape" -p "leg_L0_knee"; 0.25 0 0 -0.25 0 0 ; -createNode nurbsCurve -n "leg_L0_knee25Shape" -p "leg_L0_knee"; - rename -uid "E3D41F3E-40D1-7C9E-BF64-F4B50F20348C"; +createNode nurbsCurve -n "leg_L0_knee28Shape" -p "leg_L0_knee"; + rename -uid "2F92185E-44D1-BFCA-342E-F1A5CAD55C16"; setAttr ".ihi" 0; setAttr -k off ".v"; setAttr ".ove" yes; @@ -12291,8 +12197,8 @@ createNode nurbsCurve -n "leg_L0_knee25Shape" -p "leg_L0_knee"; 0 0.25 0 0 -0.25 0 ; -createNode nurbsCurve -n "leg_L0_knee26Shape" -p "leg_L0_knee"; - rename -uid "DCC110EA-4999-6F28-6D48-70A7CC83DE7A"; +createNode nurbsCurve -n "leg_L0_knee29Shape" -p "leg_L0_knee"; + rename -uid "CB3F0E8F-4266-C8EF-8E6D-5EA1AB52D7B1"; setAttr ".ihi" 0; setAttr -k off ".v"; setAttr ".ove" yes; @@ -12304,8 +12210,8 @@ createNode nurbsCurve -n "leg_L0_knee26Shape" -p "leg_L0_knee"; 0 0 0.25 0 0 -0.25 ; -createNode nurbsCurve -n "leg_L0_knee27Shape" -p "leg_L0_knee"; - rename -uid "056CBBD0-47B7-A946-E3A7-3E83B29F621A"; +createNode nurbsCurve -n "leg_L0_knee30Shape" -p "leg_L0_knee"; + rename -uid "1225309E-46BC-9F98-3E4C-22A1A21C7E84"; setAttr ".ihi" 0; setAttr -k off ".v"; setAttr ".ove" yes; @@ -12322,8 +12228,8 @@ createNode nurbsCurve -n "leg_L0_knee27Shape" -p "leg_L0_knee"; 0 -0.1875 0 -0.1875 0 0 ; -createNode nurbsCurve -n "leg_L0_knee27_0crvShape" -p "leg_L0_knee"; - rename -uid "C92A1CF3-49BF-893C-7585-DE865B4CA1C4"; +createNode nurbsCurve -n "leg_L0_knee30_0crvShape" -p "leg_L0_knee"; + rename -uid "0DCA6E9F-46AB-B87A-F6ED-77A3983E6BCA"; setAttr ".ihi" 0; setAttr -k off ".v"; setAttr ".ove" yes; @@ -12340,8 +12246,8 @@ createNode nurbsCurve -n "leg_L0_knee27_0crvShape" -p "leg_L0_knee"; 0 0 -0.1875 -0.1875 0 0 ; -createNode nurbsCurve -n "leg_L0_knee27_1crvShape" -p "leg_L0_knee"; - rename -uid "84A01020-414D-77B1-4735-28BF4C7BE28A"; +createNode nurbsCurve -n "leg_L0_knee30_1crvShape" -p "leg_L0_knee"; + rename -uid "C7AD79B2-494D-BC29-2F56-09BD055EF664"; setAttr ".ihi" 0; setAttr -k off ".v"; setAttr ".ove" yes; @@ -12359,10 +12265,10 @@ createNode nurbsCurve -n "leg_L0_knee27_1crvShape" -p "leg_L0_knee"; 0 0 -0.1875 ; createNode transform -n "leg_L0_ankle" -p "leg_L0_knee"; - rename -uid "AAE86E00-49E2-29D2-CDD1-758FB4E978A7"; + rename -uid "8EA2C2C9-4A41-57B8-40A1-26A700D50FB7"; addAttr -ci true -sn "isGearGuide" -ln "isGearGuide" -dv 1 -min 0 -max 1 -at "bool"; setAttr -k off -cb on ".v"; - setAttr ".t" -type "double3" 8.8817841970012523e-016 -4.5414075240554164 -0.74630601922779805 ; + setAttr ".t" -type "double3" 1.1102230246251565e-015 -4.5414075240554173 -0.74630601922779805 ; setAttr -k off -cb on ".tx"; setAttr -k off -cb on ".ty"; setAttr -k off -cb on ".tz"; @@ -12370,12 +12276,12 @@ createNode transform -n "leg_L0_ankle" -p "leg_L0_knee"; setAttr -k off -cb on ".ry"; setAttr -k off -cb on ".rz"; setAttr -cb on ".ro"; - setAttr ".s" -type "double3" 1.0000000000000007 0.99999999999999989 0.99999999999999867 ; + setAttr ".s" -type "double3" 1.0000000000000009 0.99999999999999967 0.99999999999999878 ; setAttr -k off -cb on ".sx"; setAttr -k off -cb on ".sy"; setAttr -k off -cb on ".sz"; createNode nurbsCurve -n "leg_L0_ankleShape" -p "leg_L0_ankle"; - rename -uid "4D4C8304-4938-D77D-F602-19B2B805BEE0"; + rename -uid "738889D4-4065-5B3D-2685-13A62C534317"; setAttr ".ihi" 0; setAttr -k off ".v"; setAttr ".ove" yes; @@ -12387,8 +12293,8 @@ createNode nurbsCurve -n "leg_L0_ankleShape" -p "leg_L0_ankle"; 0.25 0 0 -0.25 0 0 ; -createNode nurbsCurve -n "leg_L0_ankle25Shape" -p "leg_L0_ankle"; - rename -uid "061309F7-416A-4AA3-54FE-C9A2A0D3CA30"; +createNode nurbsCurve -n "leg_L0_ankle28Shape" -p "leg_L0_ankle"; + rename -uid "C1BF62B0-43DA-41E4-ED13-49B628E00353"; setAttr ".ihi" 0; setAttr -k off ".v"; setAttr ".ove" yes; @@ -12400,8 +12306,8 @@ createNode nurbsCurve -n "leg_L0_ankle25Shape" -p "leg_L0_ankle"; 0 0.25 0 0 -0.25 0 ; -createNode nurbsCurve -n "leg_L0_ankle26Shape" -p "leg_L0_ankle"; - rename -uid "86BCC08C-439F-EE4C-3371-0CA893362130"; +createNode nurbsCurve -n "leg_L0_ankle29Shape" -p "leg_L0_ankle"; + rename -uid "128F5014-4DE4-5859-AD11-65A6333272D5"; setAttr ".ihi" 0; setAttr -k off ".v"; setAttr ".ove" yes; @@ -12413,8 +12319,8 @@ createNode nurbsCurve -n "leg_L0_ankle26Shape" -p "leg_L0_ankle"; 0 0 0.25 0 0 -0.25 ; -createNode nurbsCurve -n "leg_L0_ankle27Shape" -p "leg_L0_ankle"; - rename -uid "8A708312-4068-2209-CC8A-33B01B007F8E"; +createNode nurbsCurve -n "leg_L0_ankle30Shape" -p "leg_L0_ankle"; + rename -uid "1206EA32-4235-E4A4-ED27-C7AB3185F1C9"; setAttr ".ihi" 0; setAttr -k off ".v"; setAttr ".ove" yes; @@ -12431,8 +12337,8 @@ createNode nurbsCurve -n "leg_L0_ankle27Shape" -p "leg_L0_ankle"; 0 -0.1875 0 -0.1875 0 0 ; -createNode nurbsCurve -n "leg_L0_ankle27_0crvShape" -p "leg_L0_ankle"; - rename -uid "B3287BF3-4A69-8583-544C-E09028DEB457"; +createNode nurbsCurve -n "leg_L0_ankle30_0crvShape" -p "leg_L0_ankle"; + rename -uid "FAD0AC4B-499E-EAF5-38B8-FCAA859131D5"; setAttr ".ihi" 0; setAttr -k off ".v"; setAttr ".ove" yes; @@ -12449,8 +12355,8 @@ createNode nurbsCurve -n "leg_L0_ankle27_0crvShape" -p "leg_L0_ankle"; 0 0 -0.1875 -0.1875 0 0 ; -createNode nurbsCurve -n "leg_L0_ankle27_1crvShape" -p "leg_L0_ankle"; - rename -uid "0AC27DCA-42BA-64A4-E988-97B63CD2ED88"; +createNode nurbsCurve -n "leg_L0_ankle30_1crvShape" -p "leg_L0_ankle"; + rename -uid "7FC407D9-46ED-DDBA-18CE-D3A16F3C6640"; setAttr ".ihi" 0; setAttr -k off ".v"; setAttr ".ove" yes; @@ -12468,10 +12374,10 @@ createNode nurbsCurve -n "leg_L0_ankle27_1crvShape" -p "leg_L0_ankle"; 0 0 -0.1875 ; createNode transform -n "leg_L0_eff" -p "leg_L0_ankle"; - rename -uid "FF17A6BD-4697-141E-9F48-0FA8E3EE2A93"; + rename -uid "7B86FE10-4D23-F6E9-920E-7BAB03653372"; addAttr -ci true -sn "isGearGuide" -ln "isGearGuide" -dv 1 -min 0 -max 1 -at "bool"; setAttr -k off -cb on ".v"; - setAttr ".t" -type "double3" 0 2.886579864025407e-015 2.1377206638691333 ; + setAttr ".t" -type "double3" -2.2204460492503131e-016 3.9968028886505635e-015 2.1377206638691328 ; setAttr -k off -cb on ".tx"; setAttr -k off -cb on ".ty"; setAttr -k off -cb on ".tz"; @@ -12480,12 +12386,12 @@ createNode transform -n "leg_L0_eff" -p "leg_L0_ankle"; setAttr -k off -cb on ".ry"; setAttr -k off -cb on ".rz"; setAttr -cb on ".ro"; - setAttr ".s" -type "double3" 1.0000000000000038 0.99999999999999878 1.0000000000000029 ; + setAttr ".s" -type "double3" 1.000000000000004 0.999999999999999 1.0000000000000029 ; setAttr -k off -cb on ".sx"; setAttr -k off -cb on ".sy"; setAttr -k off -cb on ".sz"; createNode nurbsCurve -n "leg_L0_effShape" -p "leg_L0_eff"; - rename -uid "B4F4ED0F-4C2A-1822-1891-95A4AC9449FB"; + rename -uid "0D11E0E6-4CDB-A213-F070-A38B7B4E9173"; setAttr ".ihi" 0; setAttr -k off ".v"; setAttr ".ove" yes; @@ -12497,8 +12403,8 @@ createNode nurbsCurve -n "leg_L0_effShape" -p "leg_L0_eff"; 0.25 0 0 -0.25 0 0 ; -createNode nurbsCurve -n "leg_L0_eff25Shape" -p "leg_L0_eff"; - rename -uid "A1F2FAE4-4F1D-7BDC-0387-67BF44725973"; +createNode nurbsCurve -n "leg_L0_eff28Shape" -p "leg_L0_eff"; + rename -uid "4066F7DC-405A-5A86-249A-02AF11E5327E"; setAttr ".ihi" 0; setAttr -k off ".v"; setAttr ".ove" yes; @@ -12510,8 +12416,8 @@ createNode nurbsCurve -n "leg_L0_eff25Shape" -p "leg_L0_eff"; 0 0.25 0 0 -0.25 0 ; -createNode nurbsCurve -n "leg_L0_eff26Shape" -p "leg_L0_eff"; - rename -uid "7456022A-418B-1285-C322-77827A6FCAAD"; +createNode nurbsCurve -n "leg_L0_eff29Shape" -p "leg_L0_eff"; + rename -uid "D15CEA1A-4731-3BC5-6AA6-A1914994579B"; setAttr ".ihi" 0; setAttr -k off ".v"; setAttr ".ove" yes; @@ -12523,8 +12429,8 @@ createNode nurbsCurve -n "leg_L0_eff26Shape" -p "leg_L0_eff"; 0 0 0.25 0 0 -0.25 ; -createNode nurbsCurve -n "leg_L0_eff27Shape" -p "leg_L0_eff"; - rename -uid "0F5F4BFB-475F-183D-5EAD-4990F471F1C0"; +createNode nurbsCurve -n "leg_L0_eff30Shape" -p "leg_L0_eff"; + rename -uid "0069116B-4E13-3F0D-2F1E-6DB0F4BEA9A0"; setAttr ".ihi" 0; setAttr -k off ".v"; setAttr ".ove" yes; @@ -12541,8 +12447,8 @@ createNode nurbsCurve -n "leg_L0_eff27Shape" -p "leg_L0_eff"; 0 -0.1875 0 -0.1875 0 0 ; -createNode nurbsCurve -n "leg_L0_eff27_0crvShape" -p "leg_L0_eff"; - rename -uid "A129E9B9-425A-306D-6C06-0FB4578B1113"; +createNode nurbsCurve -n "leg_L0_eff30_0crvShape" -p "leg_L0_eff"; + rename -uid "584BF469-42AF-B56F-1A7E-578F62424E9D"; setAttr ".ihi" 0; setAttr -k off ".v"; setAttr ".ove" yes; @@ -12559,8 +12465,8 @@ createNode nurbsCurve -n "leg_L0_eff27_0crvShape" -p "leg_L0_eff"; 0 0 -0.1875 -0.1875 0 0 ; -createNode nurbsCurve -n "leg_L0_eff27_1crvShape" -p "leg_L0_eff"; - rename -uid "88D87585-4C38-2AC5-D3B7-DE8C90302A17"; +createNode nurbsCurve -n "leg_L0_eff30_1crvShape" -p "leg_L0_eff"; + rename -uid "F497C158-43E4-27B8-EE25-96BCE2F9542B"; setAttr ".ihi" 0; setAttr -k off ".v"; setAttr ".ove" yes; @@ -12578,7 +12484,7 @@ createNode nurbsCurve -n "leg_L0_eff27_1crvShape" -p "leg_L0_eff"; 0 0 -0.1875 ; createNode transform -n "foot_L0_root" -p "leg_L0_ankle"; - rename -uid "3F57ED83-438E-D562-D784-E8AA42103FC0"; + rename -uid "B99FFBE9-4CD6-A868-1347-619DBD154032"; addAttr -ci true -sn "isGearGuide" -ln "isGearGuide" -dv 1 -min 0 -max 1 -at "bool"; addAttr -ci true -sn "comp_type" -ln "comp_type" -dt "string"; addAttr -ci true -sn "comp_name" -ln "comp_name" -dt "string"; @@ -12587,20 +12493,20 @@ createNode transform -n "foot_L0_root" -p "leg_L0_ankle"; addAttr -ci true -sn "connector" -ln "connector" -dt "string"; addAttr -ci true -sn "ui_host" -ln "ui_host" -dt "string"; addAttr -ci true -sn "ctlGrp" -ln "ctlGrp" -dt "string"; - addAttr -ci true -sn "useRollCtl" -ln "useRollCtl" -min 0 -max 1 -at "bool"; + addAttr -ci true -sn "useRollCtl" -ln "useRollCtl" -dv 1 -min 0 -max 1 -at "bool"; addAttr -ci true -sn "useIndex" -ln "useIndex" -min 0 -max 1 -at "bool"; - addAttr -ci true -sn "parentJointIndex" -ln "parentJointIndex" -at "long"; + addAttr -ci true -sn "parentJointIndex" -ln "parentJointIndex" -dv -1 -at "long"; setAttr -k off -cb on ".v"; - setAttr ".t" -type "double3" 4.4408920985006262e-016 1.7763568394002505e-015 0 ; + setAttr ".t" -type "double3" 2.2204460492503131e-016 2.886579864025407e-015 -1.1102230246251565e-016 ; setAttr -k off -cb on ".tx"; setAttr -k off -cb on ".ty"; setAttr -k off -cb on ".tz"; - setAttr ".r" -type "double3" 0 -84.230890510426093 0 ; + setAttr ".r" -type "double3" 0 -84.230890510426107 0 ; setAttr -k off -cb on ".rx"; setAttr -k off -cb on ".ry"; setAttr -k off -cb on ".rz"; setAttr -cb on ".ro"; - setAttr ".s" -type "double3" 0.9997975226851844 0.99979752268518263 0.99979752268518174 ; + setAttr ".s" -type "double3" 0.9997975226851844 0.99979752268518252 0.99979752268518129 ; setAttr -k off -cb on ".sx"; setAttr -k off -cb on ".sy"; setAttr -k off -cb on ".sz"; @@ -12610,10 +12516,8 @@ createNode transform -n "foot_L0_root" -p "leg_L0_ankle"; setAttr ".connector" -type "string" "leg_2jnt_01"; setAttr ".ui_host" -type "string" "legUI_L0_root"; setAttr ".ctlGrp" -type "string" ""; - setAttr ".useRollCtl" yes; - setAttr ".parentJointIndex" -1; createNode nurbsCurve -n "foot_L0_rootShape" -p "foot_L0_root"; - rename -uid "A13F22E1-49A0-171B-83D1-1EA7A152E28E"; + rename -uid "C2F8836D-4E83-14BE-C01F-8FA85ED1D3A4"; setAttr ".ihi" 0; setAttr -k off ".v"; setAttr ".ove" yes; @@ -12625,8 +12529,8 @@ createNode nurbsCurve -n "foot_L0_rootShape" -p "foot_L0_root"; 0.25 0 0 -0.25 0 0 ; -createNode nurbsCurve -n "foot_L0_root25Shape" -p "foot_L0_root"; - rename -uid "423ECD57-4120-F9EC-EFAE-8DB0A1666B6C"; +createNode nurbsCurve -n "foot_L0_root28Shape" -p "foot_L0_root"; + rename -uid "32C35BAA-47FC-818E-2CA9-42BA2931BBA6"; setAttr ".ihi" 0; setAttr -k off ".v"; setAttr ".ove" yes; @@ -12638,8 +12542,8 @@ createNode nurbsCurve -n "foot_L0_root25Shape" -p "foot_L0_root"; 0 0.25 0 0 -0.25 0 ; -createNode nurbsCurve -n "foot_L0_root26Shape" -p "foot_L0_root"; - rename -uid "E00BBA34-47EA-6796-C9BD-B5B29EA990AA"; +createNode nurbsCurve -n "foot_L0_root29Shape" -p "foot_L0_root"; + rename -uid "B0F25CC2-4B99-31BC-DF58-49AFA29C3D55"; setAttr ".ihi" 0; setAttr -k off ".v"; setAttr ".ove" yes; @@ -12651,8 +12555,8 @@ createNode nurbsCurve -n "foot_L0_root26Shape" -p "foot_L0_root"; 0 0 0.25 0 0 -0.25 ; -createNode nurbsCurve -n "foot_L0_root27Shape" -p "foot_L0_root"; - rename -uid "F586D6DF-4C49-D7B8-8ABD-A2A4BB2044DA"; +createNode nurbsCurve -n "foot_L0_root30Shape" -p "foot_L0_root"; + rename -uid "0C49319B-48A5-D4FA-F78C-CD88F2DEBEDC"; setAttr ".ihi" 0; setAttr -k off ".v"; setAttr ".ove" yes; @@ -12679,10 +12583,10 @@ createNode nurbsCurve -n "foot_L0_root27Shape" -p "foot_L0_root"; -0.125 -0.125 -0.125 ; createNode transform -n "foot_L0_0_loc" -p "foot_L0_root"; - rename -uid "C422F798-4957-435B-6C74-D1872B962B0F"; + rename -uid "4074EE60-4838-63A3-4AB7-148E18F59DE4"; addAttr -ci true -sn "isGearGuide" -ln "isGearGuide" -dv 1 -min 0 -max 1 -at "bool"; setAttr -k off -cb on ".v"; - setAttr ".t" -type "double3" 1.3903626031763237 -0.77423199221117356 -0.00087398468478294689 ; + setAttr ".t" -type "double3" 1.3903626031763232 -0.77423199221117334 -0.00087398468478339097 ; setAttr -k off -cb on ".tx"; setAttr -k off -cb on ".ty"; setAttr -k off -cb on ".tz"; @@ -12691,12 +12595,12 @@ createNode transform -n "foot_L0_0_loc" -p "foot_L0_root"; setAttr -k off -cb on ".ry"; setAttr -k off -cb on ".rz"; setAttr -cb on ".ro"; - setAttr ".s" -type "double3" 0.99999999999999933 0.99999999999999967 1.0000000000000009 ; + setAttr ".s" -type "double3" 0.99999999999999878 0.99999999999999956 1.0000000000000007 ; setAttr -k off -cb on ".sx"; setAttr -k off -cb on ".sy"; setAttr -k off -cb on ".sz"; createNode nurbsCurve -n "foot_L0_0_locShape" -p "foot_L0_0_loc"; - rename -uid "53F6EC9F-4220-BC88-5F17-CDA41DD2FA54"; + rename -uid "64E91A18-4F4B-3151-484A-D9A9BDF1C57A"; setAttr ".ihi" 0; setAttr -k off ".v"; setAttr ".ove" yes; @@ -12708,8 +12612,8 @@ createNode nurbsCurve -n "foot_L0_0_locShape" -p "foot_L0_0_loc"; 0.25 0 0 -0.25 0 0 ; -createNode nurbsCurve -n "foot_L0_0_loc25Shape" -p "foot_L0_0_loc"; - rename -uid "2F9F4D65-4BA5-6486-5B6C-4AA716C4C660"; +createNode nurbsCurve -n "foot_L0_0_loc28Shape" -p "foot_L0_0_loc"; + rename -uid "4DA67256-463B-2205-0797-F582681E8BD5"; setAttr ".ihi" 0; setAttr -k off ".v"; setAttr ".ove" yes; @@ -12721,8 +12625,8 @@ createNode nurbsCurve -n "foot_L0_0_loc25Shape" -p "foot_L0_0_loc"; 0 0.25 0 0 -0.25 0 ; -createNode nurbsCurve -n "foot_L0_0_loc26Shape" -p "foot_L0_0_loc"; - rename -uid "0A680F42-439B-712F-27AC-BE8FCC4F6C0F"; +createNode nurbsCurve -n "foot_L0_0_loc29Shape" -p "foot_L0_0_loc"; + rename -uid "C5E0CA0E-4DF0-36EE-A4EE-69A0F485604C"; setAttr ".ihi" 0; setAttr -k off ".v"; setAttr ".ove" yes; @@ -12734,8 +12638,8 @@ createNode nurbsCurve -n "foot_L0_0_loc26Shape" -p "foot_L0_0_loc"; 0 0 0.25 0 0 -0.25 ; -createNode nurbsCurve -n "foot_L0_0_loc27Shape" -p "foot_L0_0_loc"; - rename -uid "4573EFA4-4C07-6094-3D96-07BB19D867F4"; +createNode nurbsCurve -n "foot_L0_0_loc30Shape" -p "foot_L0_0_loc"; + rename -uid "929AAAF9-42D6-2ACC-7FA0-3BA041BFDDFD"; setAttr ".ihi" 0; setAttr -k off ".v"; setAttr ".ove" yes; @@ -12752,8 +12656,8 @@ createNode nurbsCurve -n "foot_L0_0_loc27Shape" -p "foot_L0_0_loc"; 0 -0.1875 0 -0.1875 0 0 ; -createNode nurbsCurve -n "foot_L0_0_loc27_0crvShape" -p "foot_L0_0_loc"; - rename -uid "61AFE7DB-47EE-A119-859F-6FB54EFB8DCD"; +createNode nurbsCurve -n "foot_L0_0_loc30_0crvShape" -p "foot_L0_0_loc"; + rename -uid "993EB147-4A62-6AF2-8861-2E8442045205"; setAttr ".ihi" 0; setAttr -k off ".v"; setAttr ".ove" yes; @@ -12770,8 +12674,8 @@ createNode nurbsCurve -n "foot_L0_0_loc27_0crvShape" -p "foot_L0_0_loc"; 0 0 -0.1875 -0.1875 0 0 ; -createNode nurbsCurve -n "foot_L0_0_loc27_1crvShape" -p "foot_L0_0_loc"; - rename -uid "699811F0-4EF3-9036-2216-52A88ABCC752"; +createNode nurbsCurve -n "foot_L0_0_loc30_1crvShape" -p "foot_L0_0_loc"; + rename -uid "94106918-4D6C-C68C-CC69-068B2C2622B4"; setAttr ".ihi" 0; setAttr -k off ".v"; setAttr ".ove" yes; @@ -12789,10 +12693,10 @@ createNode nurbsCurve -n "foot_L0_0_loc27_1crvShape" -p "foot_L0_0_loc"; 0 0 -0.1875 ; createNode transform -n "foot_L0_1_loc" -p "foot_L0_0_loc"; - rename -uid "1DE16A91-47D0-FE8B-9937-12A6478A52C6"; + rename -uid "73F916C7-4575-2D36-BA53-C88DD70AA8B0"; addAttr -ci true -sn "isGearGuide" -ln "isGearGuide" -dv 1 -min 0 -max 1 -at "bool"; setAttr -k off -cb on ".v"; - setAttr ".t" -type "double3" 0.57241624162444471 0.052400542543840967 0.00053566803260851614 ; + setAttr ".t" -type "double3" 0.57241624162444493 0.052400542543840745 0.00053566803260851614 ; setAttr -k off -cb on ".tx"; setAttr -k off -cb on ".ty"; setAttr -k off -cb on ".tz"; @@ -12801,12 +12705,12 @@ createNode transform -n "foot_L0_1_loc" -p "foot_L0_0_loc"; setAttr -k off -cb on ".ry"; setAttr -k off -cb on ".rz"; setAttr -cb on ".ro"; - setAttr ".s" -type "double3" 1.0000000000000004 1 0.999999999999999 ; + setAttr ".s" -type "double3" 1.0000000000000004 1.0000000000000002 0.99999999999999911 ; setAttr -k off -cb on ".sx"; setAttr -k off -cb on ".sy"; setAttr -k off -cb on ".sz"; createNode nurbsCurve -n "foot_L0_1_locShape" -p "foot_L0_1_loc"; - rename -uid "B0FDFE80-4100-5A99-54B8-ADA5231E81DF"; + rename -uid "8ECA5A7C-4E19-9EF7-F34D-D784B8B1EC52"; setAttr ".ihi" 0; setAttr -k off ".v"; setAttr ".ove" yes; @@ -12818,8 +12722,8 @@ createNode nurbsCurve -n "foot_L0_1_locShape" -p "foot_L0_1_loc"; 0.25 0 0 -0.25 0 0 ; -createNode nurbsCurve -n "foot_L0_1_loc25Shape" -p "foot_L0_1_loc"; - rename -uid "DE209C0F-4E0B-A62C-4A03-3096CD4765E4"; +createNode nurbsCurve -n "foot_L0_1_loc28Shape" -p "foot_L0_1_loc"; + rename -uid "E4533DAF-433F-6534-AE67-07BCBA5C7975"; setAttr ".ihi" 0; setAttr -k off ".v"; setAttr ".ove" yes; @@ -12831,8 +12735,8 @@ createNode nurbsCurve -n "foot_L0_1_loc25Shape" -p "foot_L0_1_loc"; 0 0.25 0 0 -0.25 0 ; -createNode nurbsCurve -n "foot_L0_1_loc26Shape" -p "foot_L0_1_loc"; - rename -uid "E792E176-4026-F486-6598-9A9D99EB14CE"; +createNode nurbsCurve -n "foot_L0_1_loc29Shape" -p "foot_L0_1_loc"; + rename -uid "6EA0A721-4115-E4F7-4136-7487FE96D42B"; setAttr ".ihi" 0; setAttr -k off ".v"; setAttr ".ove" yes; @@ -12844,8 +12748,8 @@ createNode nurbsCurve -n "foot_L0_1_loc26Shape" -p "foot_L0_1_loc"; 0 0 0.25 0 0 -0.25 ; -createNode nurbsCurve -n "foot_L0_1_loc27Shape" -p "foot_L0_1_loc"; - rename -uid "C96C86CA-4AC2-AE17-DF55-6582E9F1AED3"; +createNode nurbsCurve -n "foot_L0_1_loc30Shape" -p "foot_L0_1_loc"; + rename -uid "D25FCDDE-427E-78C5-AECD-DDB06FE3622E"; setAttr ".ihi" 0; setAttr -k off ".v"; setAttr ".ove" yes; @@ -12862,8 +12766,8 @@ createNode nurbsCurve -n "foot_L0_1_loc27Shape" -p "foot_L0_1_loc"; 0 -0.1875 0 -0.1875 0 0 ; -createNode nurbsCurve -n "foot_L0_1_loc27_0crvShape" -p "foot_L0_1_loc"; - rename -uid "2E35E74B-4D34-3229-A2E8-7E9A9107C7DE"; +createNode nurbsCurve -n "foot_L0_1_loc30_0crvShape" -p "foot_L0_1_loc"; + rename -uid "E3D8FAC5-4B36-1B99-EC87-02A1C4795EE4"; setAttr ".ihi" 0; setAttr -k off ".v"; setAttr ".ove" yes; @@ -12880,8 +12784,8 @@ createNode nurbsCurve -n "foot_L0_1_loc27_0crvShape" -p "foot_L0_1_loc"; 0 0 -0.1875 -0.1875 0 0 ; -createNode nurbsCurve -n "foot_L0_1_loc27_1crvShape" -p "foot_L0_1_loc"; - rename -uid "E1B6B5FA-490F-E9CC-6577-E0BE32C5865C"; +createNode nurbsCurve -n "foot_L0_1_loc30_1crvShape" -p "foot_L0_1_loc"; + rename -uid "71FD686B-43CC-0A70-3833-1FB6E806799C"; setAttr ".ihi" 0; setAttr -k off ".v"; setAttr ".ove" yes; @@ -12899,14 +12803,14 @@ createNode nurbsCurve -n "foot_L0_1_loc27_1crvShape" -p "foot_L0_1_loc"; 0 0 -0.1875 ; createNode transform -n "foot_L0_2_loc" -p "foot_L0_1_loc"; - rename -uid "7CFBE210-44A3-E709-07A7-43BD31A546B9"; + rename -uid "C792DAA1-4D6B-18C2-D44A-A9A512E952F1"; addAttr -ci true -sn "isGearGuide" -ln "isGearGuide" -dv 1 -min 0 -max 1 -at "bool"; setAttr -k off -cb on ".v"; - setAttr ".t" -type "double3" 0.34999482654518399 -0.34355031336095371 -0.0018389437992678559 ; + setAttr ".t" -type "double3" 0.34999482654518399 -0.34355031336095382 -0.0018389437992676338 ; setAttr -k off -cb on ".tx"; setAttr -k off -cb on ".ty"; setAttr -k off -cb on ".tz"; - setAttr ".r" -type "double3" 0 89.999999999999972 0 ; + setAttr ".r" -type "double3" 0 89.999999999999986 0 ; setAttr -k off -cb on ".rx"; setAttr -k off -cb on ".ry"; setAttr -k off -cb on ".rz"; @@ -12916,7 +12820,7 @@ createNode transform -n "foot_L0_2_loc" -p "foot_L0_1_loc"; setAttr -k off -cb on ".sy"; setAttr -k off -cb on ".sz"; createNode nurbsCurve -n "foot_L0_2_locShape" -p "foot_L0_2_loc"; - rename -uid "43613493-423C-D5CB-C53D-759427094750"; + rename -uid "96AD9173-45D6-13D6-94E3-28B883C759ED"; setAttr ".ihi" 0; setAttr -k off ".v"; setAttr ".ove" yes; @@ -12928,8 +12832,8 @@ createNode nurbsCurve -n "foot_L0_2_locShape" -p "foot_L0_2_loc"; 0.25 0 0 -0.25 0 0 ; -createNode nurbsCurve -n "foot_L0_2_loc25Shape" -p "foot_L0_2_loc"; - rename -uid "0BD574EF-4E38-78CC-A04A-19B410A2ECA3"; +createNode nurbsCurve -n "foot_L0_2_loc28Shape" -p "foot_L0_2_loc"; + rename -uid "1B42C33E-4C11-E444-7583-25BEA19AF15B"; setAttr ".ihi" 0; setAttr -k off ".v"; setAttr ".ove" yes; @@ -12941,8 +12845,8 @@ createNode nurbsCurve -n "foot_L0_2_loc25Shape" -p "foot_L0_2_loc"; 0 0.25 0 0 -0.25 0 ; -createNode nurbsCurve -n "foot_L0_2_loc26Shape" -p "foot_L0_2_loc"; - rename -uid "F5A2456E-4A14-7407-5A81-B1B0D17EA60E"; +createNode nurbsCurve -n "foot_L0_2_loc29Shape" -p "foot_L0_2_loc"; + rename -uid "CB6887E8-43BE-72F8-0507-78AF69B9A2CF"; setAttr ".ihi" 0; setAttr -k off ".v"; setAttr ".ove" yes; @@ -12954,8 +12858,8 @@ createNode nurbsCurve -n "foot_L0_2_loc26Shape" -p "foot_L0_2_loc"; 0 0 0.25 0 0 -0.25 ; -createNode nurbsCurve -n "foot_L0_2_loc27Shape" -p "foot_L0_2_loc"; - rename -uid "FEA67B40-4B48-660C-59D7-9CA3E575920D"; +createNode nurbsCurve -n "foot_L0_2_loc30Shape" -p "foot_L0_2_loc"; + rename -uid "DA8445F6-43A2-1E7D-AB32-6C84D73AA005"; setAttr ".ihi" 0; setAttr -k off ".v"; setAttr ".ove" yes; @@ -12972,8 +12876,8 @@ createNode nurbsCurve -n "foot_L0_2_loc27Shape" -p "foot_L0_2_loc"; 0 -0.1875 0 -0.1875 0 0 ; -createNode nurbsCurve -n "foot_L0_2_loc27_0crvShape" -p "foot_L0_2_loc"; - rename -uid "68A0ECF3-44AD-D861-732F-1C8520E09FCE"; +createNode nurbsCurve -n "foot_L0_2_loc30_0crvShape" -p "foot_L0_2_loc"; + rename -uid "3D01B6FD-4A3E-BB04-D210-3488390C4389"; setAttr ".ihi" 0; setAttr -k off ".v"; setAttr ".ove" yes; @@ -12990,8 +12894,8 @@ createNode nurbsCurve -n "foot_L0_2_loc27_0crvShape" -p "foot_L0_2_loc"; 0 0 -0.1875 -0.1875 0 0 ; -createNode nurbsCurve -n "foot_L0_2_loc27_1crvShape" -p "foot_L0_2_loc"; - rename -uid "8274755C-4A89-E8B4-8818-04918A1B67B1"; +createNode nurbsCurve -n "foot_L0_2_loc30_1crvShape" -p "foot_L0_2_loc"; + rename -uid "10175C4B-4F48-73D1-BDEB-BEB69F6BB232"; setAttr ".ihi" 0; setAttr -k off ".v"; setAttr ".ove" yes; @@ -13009,19 +12913,19 @@ createNode nurbsCurve -n "foot_L0_2_loc27_1crvShape" -p "foot_L0_2_loc"; 0 0 -0.1875 ; createNode transform -n "foot_L0_crv" -p "foot_L0_root"; - rename -uid "9C572993-46B1-787F-9992-019C22A0D2CC"; + rename -uid "96E27369-4905-47EF-0CD7-FFA4C30CECC2"; setAttr ".ovdt" 1; setAttr ".ove" yes; - setAttr ".t" -type "double3" 0.84123625248687084 -1.2934842521415504 1.0591437062861182 ; - setAttr ".r" -type "double3" 2.8990169397258381 84.223472754416591 2.9137877746396712 ; - setAttr ".s" -type "double3" 1.0497207713808367 1.0497207713808354 1.0497207713808356 ; + setAttr ".t" -type "double3" 0.84123625248687106 -1.2934842521415504 1.059143706286118 ; + setAttr ".r" -type "double3" 2.8990169397258461 84.223472754416619 2.9137877746396836 ; + setAttr ".s" -type "double3" 1.0497207713808365 1.0497207713808354 1.0497207713808352 ; createNode nurbsCurve -n "foot_L0_crvShape" -p "foot_L0_crv"; - rename -uid "9ABDFD9F-44D4-908C-14DB-1BBFA2D7C724"; + rename -uid "C4D1DAF0-4617-A3B1-D229-7EB884503C24"; setAttr -k off ".v"; setAttr -s 4 ".iog[0].og"; setAttr ".tw" yes; createNode nurbsCurve -n "foot_L0_crvShapeOrig" -p "foot_L0_crv"; - rename -uid "E7C6FCBF-4A71-C3EE-3EAA-2BAD92FD909D"; + rename -uid "C1D89C98-4020-63DA-E3F5-3FA71362824F"; setAttr -k off ".v"; setAttr ".io" yes; setAttr ".cc" -type "nurbsCurve" @@ -13034,10 +12938,10 @@ createNode nurbsCurve -n "foot_L0_crvShapeOrig" -p "foot_L0_crv"; 0 0 0 ; createNode transform -n "foot_L0_heel" -p "foot_L0_root"; - rename -uid "DFD5BE67-4EAF-6ABD-1D92-83AD4B77A341"; + rename -uid "04B7B98D-4BD2-32C2-39C6-EA8B43F44151"; addAttr -ci true -sn "isGearGuide" -ln "isGearGuide" -dv 1 -min 0 -max 1 -at "bool"; setAttr -k off -cb on ".v"; - setAttr ".t" -type "double3" -0.51442201408343324 -1.2883323665462261 -0.0019628851482431653 ; + setAttr ".t" -type "double3" -0.5144220140834328 -1.2883323665462258 -0.0019628851482431653 ; setAttr -k off -cb on ".tx"; setAttr -k off -cb on ".ty"; setAttr -k off -cb on ".tz"; @@ -13045,12 +12949,12 @@ createNode transform -n "foot_L0_heel" -p "foot_L0_root"; setAttr -k off -cb on ".ry"; setAttr -k off -cb on ".rz"; setAttr -cb on ".ro"; - setAttr ".s" -type "double3" 0.99999999999999944 1 0.99999999999999989 ; + setAttr ".s" -type "double3" 0.999999999999999 1 0.99999999999999978 ; setAttr -k off -cb on ".sx"; setAttr -k off -cb on ".sy"; setAttr -k off -cb on ".sz"; createNode nurbsCurve -n "foot_L0_heelShape" -p "foot_L0_heel"; - rename -uid "B0261CDC-42EE-DF28-B67B-BB8193D4FF21"; + rename -uid "EFFE0AE9-417B-C25A-38D3-3A820373D659"; setAttr ".ihi" 0; setAttr -k off ".v"; setAttr ".ove" yes; @@ -13062,8 +12966,8 @@ createNode nurbsCurve -n "foot_L0_heelShape" -p "foot_L0_heel"; 0.25 0 0 -0.25 0 0 ; -createNode nurbsCurve -n "foot_L0_heel25Shape" -p "foot_L0_heel"; - rename -uid "34A946D7-41C5-5CF2-3C9E-6D8298355218"; +createNode nurbsCurve -n "foot_L0_heel28Shape" -p "foot_L0_heel"; + rename -uid "3C2F4B12-4D30-96C5-9AC4-A9BF1DEFAEF8"; setAttr ".ihi" 0; setAttr -k off ".v"; setAttr ".ove" yes; @@ -13075,8 +12979,8 @@ createNode nurbsCurve -n "foot_L0_heel25Shape" -p "foot_L0_heel"; 0 0.25 0 0 -0.25 0 ; -createNode nurbsCurve -n "foot_L0_heel26Shape" -p "foot_L0_heel"; - rename -uid "FDD8049C-4305-F0C0-6273-F1BA32CBAFC6"; +createNode nurbsCurve -n "foot_L0_heel29Shape" -p "foot_L0_heel"; + rename -uid "7AE9F6A8-445A-E5C1-E7BA-608715DEBB45"; setAttr ".ihi" 0; setAttr -k off ".v"; setAttr ".ove" yes; @@ -13088,8 +12992,8 @@ createNode nurbsCurve -n "foot_L0_heel26Shape" -p "foot_L0_heel"; 0 0 0.25 0 0 -0.25 ; -createNode nurbsCurve -n "foot_L0_heel27Shape" -p "foot_L0_heel"; - rename -uid "C4ED2E5E-4802-C2E7-47F9-9E93A915F30F"; +createNode nurbsCurve -n "foot_L0_heel30Shape" -p "foot_L0_heel"; + rename -uid "EEDA2EB5-43DD-8EAE-FEB6-2C85A7E913D2"; setAttr ".ihi" 0; setAttr -k off ".v"; setAttr ".ove" yes; @@ -13106,8 +13010,8 @@ createNode nurbsCurve -n "foot_L0_heel27Shape" -p "foot_L0_heel"; 0 -0.1875 0 -0.1875 0 0 ; -createNode nurbsCurve -n "foot_L0_heel27_0crvShape" -p "foot_L0_heel"; - rename -uid "6D0EA831-49E7-EB05-8779-579697B0A98A"; +createNode nurbsCurve -n "foot_L0_heel30_0crvShape" -p "foot_L0_heel"; + rename -uid "F2B34FAD-4E88-2C7E-E71A-0F95311D909D"; setAttr ".ihi" 0; setAttr -k off ".v"; setAttr ".ove" yes; @@ -13124,8 +13028,8 @@ createNode nurbsCurve -n "foot_L0_heel27_0crvShape" -p "foot_L0_heel"; 0 0 -0.1875 -0.1875 0 0 ; -createNode nurbsCurve -n "foot_L0_heel27_1crvShape" -p "foot_L0_heel"; - rename -uid "08262644-43D7-C344-0565-109CC65F67EF"; +createNode nurbsCurve -n "foot_L0_heel30_1crvShape" -p "foot_L0_heel"; + rename -uid "D1CABA29-4665-9CBE-215B-64ACC91A7124"; setAttr ".ihi" 0; setAttr -k off ".v"; setAttr ".ove" yes; @@ -13143,10 +13047,10 @@ createNode nurbsCurve -n "foot_L0_heel27_1crvShape" -p "foot_L0_heel"; 0 0 -0.1875 ; createNode transform -n "foot_L0_outpivot" -p "foot_L0_root"; - rename -uid "01535471-4314-3306-E093-0F89591F39E9"; + rename -uid "FF24CD9D-4585-27FF-05CF-42B6A9AD67B3"; addAttr -ci true -sn "isGearGuide" -ln "isGearGuide" -dv 1 -min 0 -max 1 -at "bool"; setAttr -k off -cb on ".v"; - setAttr ".t" -type "double3" 1.3551807145991015 -1.2852474767223829 -0.54483578923279818 ; + setAttr ".t" -type "double3" 1.3551807145991011 -1.2852474767223827 -0.54483578923279863 ; setAttr -k off -cb on ".tx"; setAttr -k off -cb on ".ty"; setAttr -k off -cb on ".tz"; @@ -13154,12 +13058,12 @@ createNode transform -n "foot_L0_outpivot" -p "foot_L0_root"; setAttr -k off -cb on ".ry"; setAttr -k off -cb on ".rz"; setAttr -cb on ".ro"; - setAttr ".s" -type "double3" 0.99999999999999944 1 0.99999999999999989 ; + setAttr ".s" -type "double3" 0.999999999999999 1 0.99999999999999978 ; setAttr -k off -cb on ".sx"; setAttr -k off -cb on ".sy"; setAttr -k off -cb on ".sz"; createNode nurbsCurve -n "foot_L0_outpivotShape" -p "foot_L0_outpivot"; - rename -uid "B7EE9456-4B87-619F-8382-51BFF56F97EE"; + rename -uid "1E964282-4535-6070-9FA3-A2B83D55B388"; setAttr ".ihi" 0; setAttr -k off ".v"; setAttr ".ove" yes; @@ -13171,8 +13075,8 @@ createNode nurbsCurve -n "foot_L0_outpivotShape" -p "foot_L0_outpivot"; 0.25 0 0 -0.25 0 0 ; -createNode nurbsCurve -n "foot_L0_outpivot25Shape" -p "foot_L0_outpivot"; - rename -uid "DFB7AD06-4419-D064-397C-3CAD856CFE0B"; +createNode nurbsCurve -n "foot_L0_outpivot28Shape" -p "foot_L0_outpivot"; + rename -uid "7B8CDCDA-4E0E-EDD7-9F8F-4BA25AC036D9"; setAttr ".ihi" 0; setAttr -k off ".v"; setAttr ".ove" yes; @@ -13184,8 +13088,8 @@ createNode nurbsCurve -n "foot_L0_outpivot25Shape" -p "foot_L0_outpivot"; 0 0.25 0 0 -0.25 0 ; -createNode nurbsCurve -n "foot_L0_outpivot26Shape" -p "foot_L0_outpivot"; - rename -uid "4D5705B1-4331-586C-5B97-E6B7C1C6FDAD"; +createNode nurbsCurve -n "foot_L0_outpivot29Shape" -p "foot_L0_outpivot"; + rename -uid "EE7BB27A-471F-ED1D-F32F-DE83FA14CB28"; setAttr ".ihi" 0; setAttr -k off ".v"; setAttr ".ove" yes; @@ -13197,8 +13101,8 @@ createNode nurbsCurve -n "foot_L0_outpivot26Shape" -p "foot_L0_outpivot"; 0 0 0.25 0 0 -0.25 ; -createNode nurbsCurve -n "foot_L0_outpivot27Shape" -p "foot_L0_outpivot"; - rename -uid "633996D5-478C-848C-AD9F-9484DA41E922"; +createNode nurbsCurve -n "foot_L0_outpivot30Shape" -p "foot_L0_outpivot"; + rename -uid "DFEBCF28-4F85-FFF9-60B0-8892636C93D2"; setAttr ".ihi" 0; setAttr -k off ".v"; setAttr ".ove" yes; @@ -13215,8 +13119,8 @@ createNode nurbsCurve -n "foot_L0_outpivot27Shape" -p "foot_L0_outpivot"; 0 -0.1875 0 -0.1875 0 0 ; -createNode nurbsCurve -n "foot_L0_outpivot27_0crvShape" -p "foot_L0_outpivot"; - rename -uid "56F87ACB-4145-057D-922A-C3A59CB52C78"; +createNode nurbsCurve -n "foot_L0_outpivot30_0crvShape" -p "foot_L0_outpivot"; + rename -uid "8E2B41E9-42FD-2AD9-9792-218272548154"; setAttr ".ihi" 0; setAttr -k off ".v"; setAttr ".ove" yes; @@ -13233,8 +13137,8 @@ createNode nurbsCurve -n "foot_L0_outpivot27_0crvShape" -p "foot_L0_outpivot"; 0 0 -0.1875 -0.1875 0 0 ; -createNode nurbsCurve -n "foot_L0_outpivot27_1crvShape" -p "foot_L0_outpivot"; - rename -uid "4415AD58-435C-B450-F73C-AF9343147D7A"; +createNode nurbsCurve -n "foot_L0_outpivot30_1crvShape" -p "foot_L0_outpivot"; + rename -uid "2805BAAC-4166-5CBB-51FD-C7BE6847B077"; setAttr ".ihi" 0; setAttr -k off ".v"; setAttr ".ove" yes; @@ -13252,10 +13156,10 @@ createNode nurbsCurve -n "foot_L0_outpivot27_1crvShape" -p "foot_L0_outpivot"; 0 0 -0.1875 ; createNode transform -n "foot_L0_inpivot" -p "foot_L0_root"; - rename -uid "C9E560E6-49C9-6317-F923-7CA8183F5B96"; + rename -uid "65871AD8-4B29-7380-6A79-E4BC6D7E868D"; addAttr -ci true -sn "isGearGuide" -ln "isGearGuide" -dv 1 -min 0 -max 1 -at "bool"; setAttr -k off -cb on ".v"; - setAttr ".t" -type "double3" 1.3551807145991013 -1.2905939540073492 0.6523426983376851 ; + setAttr ".t" -type "double3" 1.3551807145991011 -1.290593954007349 0.65234269833768466 ; setAttr -k off -cb on ".tx"; setAttr -k off -cb on ".ty"; setAttr -k off -cb on ".tz"; @@ -13263,12 +13167,12 @@ createNode transform -n "foot_L0_inpivot" -p "foot_L0_root"; setAttr -k off -cb on ".ry"; setAttr -k off -cb on ".rz"; setAttr -cb on ".ro"; - setAttr ".s" -type "double3" 0.99999999999999944 1 0.99999999999999989 ; + setAttr ".s" -type "double3" 0.999999999999999 1 0.99999999999999978 ; setAttr -k off -cb on ".sx"; setAttr -k off -cb on ".sy"; setAttr -k off -cb on ".sz"; createNode nurbsCurve -n "foot_L0_inpivotShape" -p "foot_L0_inpivot"; - rename -uid "C1889674-4020-94D2-6348-E7BB8B1DA6ED"; + rename -uid "14BD0651-4D66-E31C-602E-5980123C4B1E"; setAttr ".ihi" 0; setAttr -k off ".v"; setAttr ".ove" yes; @@ -13280,8 +13184,8 @@ createNode nurbsCurve -n "foot_L0_inpivotShape" -p "foot_L0_inpivot"; 0.25 0 0 -0.25 0 0 ; -createNode nurbsCurve -n "foot_L0_inpivot25Shape" -p "foot_L0_inpivot"; - rename -uid "986496C8-41B6-9941-B428-B6B6A852897C"; +createNode nurbsCurve -n "foot_L0_inpivot28Shape" -p "foot_L0_inpivot"; + rename -uid "02BBA7EE-4276-2DDC-636A-49B821F91710"; setAttr ".ihi" 0; setAttr -k off ".v"; setAttr ".ove" yes; @@ -13293,8 +13197,8 @@ createNode nurbsCurve -n "foot_L0_inpivot25Shape" -p "foot_L0_inpivot"; 0 0.25 0 0 -0.25 0 ; -createNode nurbsCurve -n "foot_L0_inpivot26Shape" -p "foot_L0_inpivot"; - rename -uid "6F672F5A-440D-053A-BCA1-1BB0F359CC85"; +createNode nurbsCurve -n "foot_L0_inpivot29Shape" -p "foot_L0_inpivot"; + rename -uid "F59E6983-4835-9A7C-40C2-779AA655DE36"; setAttr ".ihi" 0; setAttr -k off ".v"; setAttr ".ove" yes; @@ -13306,8 +13210,8 @@ createNode nurbsCurve -n "foot_L0_inpivot26Shape" -p "foot_L0_inpivot"; 0 0 0.25 0 0 -0.25 ; -createNode nurbsCurve -n "foot_L0_inpivot27Shape" -p "foot_L0_inpivot"; - rename -uid "7E222341-4AC2-AEC4-A173-D28BF5AA0027"; +createNode nurbsCurve -n "foot_L0_inpivot30Shape" -p "foot_L0_inpivot"; + rename -uid "C9E8BFB3-414E-A7E8-3839-028DA05084FC"; setAttr ".ihi" 0; setAttr -k off ".v"; setAttr ".ove" yes; @@ -13324,8 +13228,8 @@ createNode nurbsCurve -n "foot_L0_inpivot27Shape" -p "foot_L0_inpivot"; 0 -0.1875 0 -0.1875 0 0 ; -createNode nurbsCurve -n "foot_L0_inpivot27_0crvShape" -p "foot_L0_inpivot"; - rename -uid "6DEDEB77-4E61-D8C7-9830-7F887101D5B5"; +createNode nurbsCurve -n "foot_L0_inpivot30_0crvShape" -p "foot_L0_inpivot"; + rename -uid "B04A0802-4D3F-6F5F-4683-50BD1F92E041"; setAttr ".ihi" 0; setAttr -k off ".v"; setAttr ".ove" yes; @@ -13342,8 +13246,8 @@ createNode nurbsCurve -n "foot_L0_inpivot27_0crvShape" -p "foot_L0_inpivot"; 0 0 -0.1875 -0.1875 0 0 ; -createNode nurbsCurve -n "foot_L0_inpivot27_1crvShape" -p "foot_L0_inpivot"; - rename -uid "5A4D1529-4D29-6BE5-A6E0-48B5C37872CC"; +createNode nurbsCurve -n "foot_L0_inpivot30_1crvShape" -p "foot_L0_inpivot"; + rename -uid "A1C92A6F-4EB8-ECDE-B4E1-1D817E286478"; setAttr ".ihi" 0; setAttr -k off ".v"; setAttr ".ove" yes; @@ -13361,19 +13265,19 @@ createNode nurbsCurve -n "foot_L0_inpivot27_1crvShape" -p "foot_L0_inpivot"; 0 0 -0.1875 ; createNode transform -n "foot_L0_1" -p "foot_L0_root"; - rename -uid "A7502590-4F1F-E2C6-A34F-74BC827C3FDF"; + rename -uid "4DED4A7F-4310-369F-D841-309880F9BA10"; setAttr ".ovdt" 1; setAttr ".ove" yes; - setAttr ".t" -type "double3" 0.84123625248687084 -1.2934842521415504 1.0591437062861182 ; - setAttr ".r" -type "double3" 2.8990169397258381 84.223472754416591 2.9137877746396712 ; - setAttr ".s" -type "double3" 1.0497207713808367 1.0497207713808354 1.0497207713808356 ; + setAttr ".t" -type "double3" 0.84123625248687106 -1.2934842521415504 1.059143706286118 ; + setAttr ".r" -type "double3" 2.8990169397258461 84.223472754416619 2.9137877746396836 ; + setAttr ".s" -type "double3" 1.0497207713808365 1.0497207713808354 1.0497207713808352 ; createNode nurbsCurve -n "foot_L0_Shape1" -p "foot_L0_1"; - rename -uid "BF2C4845-4D98-DAE5-CB05-1EACD82455CF"; + rename -uid "390C28C4-4D91-BBA6-3A2D-129F1DA37855"; setAttr -k off ".v"; setAttr -s 4 ".iog[0].og"; setAttr ".tw" yes; -createNode nurbsCurve -n "foot_L0_Shape1Orig1" -p "foot_L0_1"; - rename -uid "DD7CFCBC-4A15-D6EC-C8AD-E4B052BB54EB"; +createNode nurbsCurve -n "foot_L0_Shape1Orig" -p "foot_L0_1"; + rename -uid "F75BF762-4139-A512-639E-27AD33E27424"; setAttr -k off ".v"; setAttr ".io" yes; setAttr ".cc" -type "nurbsCurve" @@ -13387,7 +13291,7 @@ createNode nurbsCurve -n "foot_L0_Shape1Orig1" -p "foot_L0_1"; 0 0 0 ; createNode transform -n "legUI_L0_root" -p "foot_L0_root"; - rename -uid "489B9BE9-4F24-4B24-3CF6-EBA46EF16BC5"; + rename -uid "C3290E5D-4057-5E15-271D-87AB92554BA3"; addAttr -ci true -sn "isGearGuide" -ln "isGearGuide" -dv 1 -min 0 -max 1 -at "bool"; addAttr -ci true -sn "comp_type" -ln "comp_type" -dt "string"; addAttr -ci true -sn "comp_name" -ln "comp_name" -dt "string"; @@ -13411,21 +13315,23 @@ createNode transform -n "legUI_L0_root" -p "foot_L0_root"; addAttr -ci true -sn "k_sy" -ln "k_sy" -min 0 -max 1 -at "bool"; addAttr -ci true -sn "k_sz" -ln "k_sz" -min 0 -max 1 -at "bool"; addAttr -ci true -sn "default_rotorder" -ln "default_rotorder" -min 0 -max 5 -at "long"; - addAttr -ci true -sn "neutralRotation" -ln "neutralRotation" -min 0 -max 1 -at "bool"; - addAttr -ci true -sn "ctlSize" -ln "ctlSize" -at "double"; + addAttr -ci true -sn "neutralRotation" -ln "neutralRotation" -dv 1 -min 0 -max 1 + -at "bool"; + addAttr -ci true -sn "mirrorBehaviour" -ln "mirrorBehaviour" -min 0 -max 1 -at "bool"; + addAttr -ci true -sn "ctlSize" -ln "ctlSize" -dv 1 -at "double"; addAttr -ci true -sn "useIndex" -ln "useIndex" -min 0 -max 1 -at "bool"; - addAttr -ci true -sn "parentJointIndex" -ln "parentJointIndex" -at "long"; + addAttr -ci true -sn "parentJointIndex" -ln "parentJointIndex" -dv -1 -at "long"; setAttr -k off -cb on ".v"; - setAttr ".t" -type "double3" 0.5990855265032945 0.51029795172993664 -1.4395512694570036 ; + setAttr ".t" -type "double3" 0.59908552650329416 0.51029795172993664 -1.4395512694570038 ; setAttr -k off -cb on ".tx"; setAttr -k off -cb on ".ty"; setAttr -k off -cb on ".tz"; - setAttr ".r" -type "double3" 0 89.999999999999972 0 ; + setAttr ".r" -type "double3" 0 89.999999999999986 0 ; setAttr -k off -cb on ".rx"; setAttr -k off -cb on ".ry"; setAttr -k off -cb on ".rz"; setAttr -cb on ".ro"; - setAttr ".s" -type "double3" 1.0000000000000011 1 0.99999999999999845 ; + setAttr ".s" -type "double3" 1.0000000000000009 1 0.999999999999998 ; setAttr -k off -cb on ".sx"; setAttr -k off -cb on ".sy"; setAttr -k off -cb on ".sz"; @@ -13437,11 +13343,8 @@ createNode transform -n "legUI_L0_root" -p "foot_L0_root"; setAttr ".ctlGrp" -type "string" ""; setAttr ".icon" -type "string" "cross"; setAttr ".ikrefarray" -type "string" ""; - setAttr ".neutralRotation" yes; - setAttr ".ctlSize" 1; - setAttr ".parentJointIndex" -1; createNode nurbsCurve -n "legUI_L0_rootShape" -p "legUI_L0_root"; - rename -uid "E23DC3E9-4519-6029-9CC3-50B95C5211F8"; + rename -uid "3BA185E4-491B-A24D-84F0-D7AFE6A0328D"; setAttr ".ihi" 0; setAttr -k off ".v"; setAttr ".ove" yes; @@ -13453,8 +13356,8 @@ createNode nurbsCurve -n "legUI_L0_rootShape" -p "legUI_L0_root"; 0.25 0 0 -0.25 0 0 ; -createNode nurbsCurve -n "legUI_L0_root25Shape" -p "legUI_L0_root"; - rename -uid "BCE00028-43F9-32B2-D942-F9B0CB7F964D"; +createNode nurbsCurve -n "legUI_L0_root28Shape" -p "legUI_L0_root"; + rename -uid "A6DB2133-4F38-D6DA-5105-0CBEA4ADB266"; setAttr ".ihi" 0; setAttr -k off ".v"; setAttr ".ove" yes; @@ -13466,8 +13369,8 @@ createNode nurbsCurve -n "legUI_L0_root25Shape" -p "legUI_L0_root"; 0 0.25 0 0 -0.25 0 ; -createNode nurbsCurve -n "legUI_L0_root26Shape" -p "legUI_L0_root"; - rename -uid "B5634D0C-4504-808B-54C6-1CB9FEB77289"; +createNode nurbsCurve -n "legUI_L0_root29Shape" -p "legUI_L0_root"; + rename -uid "DBE2A310-44DE-2758-009B-A69EAB318848"; setAttr ".ihi" 0; setAttr -k off ".v"; setAttr ".ove" yes; @@ -13479,8 +13382,8 @@ createNode nurbsCurve -n "legUI_L0_root26Shape" -p "legUI_L0_root"; 0 0 0.25 0 0 -0.25 ; -createNode nurbsCurve -n "legUI_L0_root27Shape" -p "legUI_L0_root"; - rename -uid "15278C6A-4B48-330D-A73F-D2986F1FAF81"; +createNode nurbsCurve -n "legUI_L0_root30Shape" -p "legUI_L0_root"; + rename -uid "E74C16A7-4727-1FD6-4ACC-2C99BDCA4660"; setAttr ".ihi" 0; setAttr -k off ".v"; setAttr ".ove" yes; @@ -13507,36 +13410,36 @@ createNode nurbsCurve -n "legUI_L0_root27Shape" -p "legUI_L0_root"; -0.125 -0.125 -0.125 ; createNode transform -n "legUI_L0_sizeRef" -p "legUI_L0_root"; - rename -uid "D6888AE3-4FF1-5D28-2436-10B772A7245C"; + rename -uid "E287E6A6-40B2-1BB8-FD2E-9B89D601BCED"; addAttr -ci true -sn "isGearGuide" -ln "isGearGuide" -dv 1 -min 0 -max 1 -at "bool"; setAttr -k off -cb on ".v"; - setAttr ".t" -type "double3" -0.10551782846565061 2.2204460492503131e-016 1.0444039858906486 ; + setAttr ".t" -type "double3" -0.10551782846565105 -2.2204460492503131e-016 1.0444039858906484 ; setAttr -k off -cb on ".tx"; setAttr -k off -cb on ".ty"; setAttr -k off -cb on ".tz"; - setAttr ".r" -type "double3" -0.029616667963981724 -5.7690337251489909 0.29463615418735922 ; + setAttr ".r" -type "double3" -0.029616667963981717 -5.7690337251489883 0.29463615418735928 ; setAttr -k off -cb on ".rx"; setAttr -k off -cb on ".ry"; setAttr -k off -cb on ".rz"; setAttr -cb on ".ro"; - setAttr ".s" -type "double3" 1.0497207713808359 1.0497207713808356 1.0497207713808374 ; + setAttr ".s" -type "double3" 1.0497207713808356 1.0497207713808356 1.0497207713808374 ; setAttr -k off -cb on ".sx"; setAttr -k off -cb on ".sy"; setAttr -k off -cb on ".sz"; createNode transform -n "leg_L0_crv" -p "leg_L0_root"; - rename -uid "215C8C7A-43AE-5F0E-C880-519C0F999DB8"; + rename -uid "585220C3-4323-4AD0-ED8C-EA9D3EB401A2"; setAttr ".ovdt" 1; setAttr ".ove" yes; - setAttr ".t" -type "double3" -10.214166852209233 0.19144303592045905 0.9690219642037361 ; + setAttr ".t" -type "double3" -10.214166852209233 0.19144303592045897 0.96902196420373599 ; setAttr ".r" -type "double3" 89.999999999998764 89.706856137729844 0 ; - setAttr ".s" -type "double3" 1.0495082267377407 1.0495082267377378 1.0495082267377411 ; + setAttr ".s" -type "double3" 1.0495082267377405 1.049508226737738 1.0495082267377407 ; createNode nurbsCurve -n "leg_L0_crvShape" -p "leg_L0_crv"; - rename -uid "5F078BF9-41C5-1429-8923-4B92BA9C2495"; + rename -uid "2CC9AD70-4929-54CE-6BD9-65A76D8EF680"; setAttr -k off ".v"; setAttr -s 4 ".iog[0].og"; setAttr ".tw" yes; createNode nurbsCurve -n "leg_L0_crvShapeOrig" -p "leg_L0_crv"; - rename -uid "3A13B1F2-4B30-29DA-AB2D-9EB9CB373C65"; + rename -uid "792B7C41-423A-891A-C74D-30869924F1FF"; setAttr -k off ".v"; setAttr ".io" yes; setAttr ".cc" -type "nurbsCurve" @@ -13549,7 +13452,7 @@ createNode nurbsCurve -n "leg_L0_crvShapeOrig" -p "leg_L0_crv"; 0 0 0 ; createNode transform -n "leg_R0_root" -p "spine_C0_root"; - rename -uid "21A535F6-428C-6E42-024B-818159991327"; + rename -uid "E9F3FF50-403F-CA4C-8FCA-CEB552B554AF"; addAttr -ci true -sn "isGearGuide" -ln "isGearGuide" -dv 1 -min 0 -max 1 -at "bool"; addAttr -ci true -sn "comp_type" -ln "comp_type" -dt "string"; addAttr -ci true -sn "comp_name" -ln "comp_name" -dt "string"; @@ -13558,29 +13461,29 @@ createNode transform -n "leg_R0_root" -p "spine_C0_root"; addAttr -ci true -sn "connector" -ln "connector" -dt "string"; addAttr -ci true -sn "ui_host" -ln "ui_host" -dt "string"; addAttr -ci true -sn "ctlGrp" -ln "ctlGrp" -dt "string"; - addAttr -ci true -sn "blend" -ln "blend" -min 0 -max 1 -at "double"; + addAttr -ci true -sn "blend" -ln "blend" -dv 1 -min 0 -max 1 -at "double"; addAttr -ci true -sn "ikrefarray" -ln "ikrefarray" -dt "string"; addAttr -ci true -sn "upvrefarray" -ln "upvrefarray" -dt "string"; addAttr -ci true -sn "pinrefarray" -ln "pinrefarray" -dt "string"; - addAttr -ci true -sn "maxstretch" -ln "maxstretch" -dv 1 -min 1 -at "double"; + addAttr -ci true -sn "maxstretch" -ln "maxstretch" -dv 1.5 -min 1 -at "double"; addAttr -ci true -sn "mirrorMid" -ln "mirrorMid" -min 0 -max 1 -at "bool"; - addAttr -ci true -sn "div0" -ln "div0" -dv 1 -min 1 -at "long"; - addAttr -ci true -sn "div1" -ln "div1" -dv 1 -min 1 -at "long"; + addAttr -ci true -sn "div0" -ln "div0" -dv 2 -min 1 -at "long"; + addAttr -ci true -sn "div1" -ln "div1" -dv 2 -min 1 -at "long"; addAttr -ci true -k true -sn "st_profile" -ln "st_profile" -at "double"; addAttr -ci true -k true -sn "sq_profile" -ln "sq_profile" -at "double"; addAttr -ci true -sn "useIndex" -ln "useIndex" -min 0 -max 1 -at "bool"; - addAttr -ci true -sn "parentJointIndex" -ln "parentJointIndex" -at "long"; + addAttr -ci true -sn "parentJointIndex" -ln "parentJointIndex" -dv -1 -at "long"; setAttr -k off -cb on ".v"; - setAttr ".t" -type "double3" -1.1814583394588016 8.0491169285323849e-016 1.0212680564255743 ; + setAttr ".t" -type "double3" -1.1814583394588016 7.7715611723760958e-016 1.0212680564255743 ; setAttr -k off -cb on ".tx"; setAttr -k off -cb on ".ty"; setAttr -k off -cb on ".tz"; - setAttr ".r" -type "double3" 0 -0.29314386227019545 0 ; + setAttr ".r" -type "double3" 0 -0.29314386227019557 0 ; setAttr -k off -cb on ".rx"; setAttr -k off -cb on ".ry"; setAttr -k off -cb on ".rz"; setAttr -cb on ".ro"; - setAttr ".s" -type "double3" 1.0000000000000024 0.99999999999999811 -1 ; + setAttr ".s" -type "double3" 1.0000000000000022 0.99999999999999822 -1 ; setAttr -k off -cb on ".sx"; setAttr -k off -cb on ".sy"; setAttr -k off -cb on ".sz"; @@ -13590,18 +13493,13 @@ createNode transform -n "leg_R0_root" -p "spine_C0_root"; setAttr ".connector" -type "string" "standard"; setAttr ".ui_host" -type "string" "legUI_R0_root"; setAttr ".ctlGrp" -type "string" ""; - setAttr ".blend" 1; setAttr ".ikrefarray" -type "string" "local_C0_root,global_C0_root"; setAttr ".upvrefarray" -type "string" "local_C0_root,global_C0_root"; setAttr ".pinrefarray" -type "string" "local_C0_root,global_C0_root"; - setAttr ".maxstretch" 1.5; - setAttr ".div0" 2; - setAttr ".div1" 2; setAttr -k on ".st_profile"; setAttr -k on ".sq_profile"; - setAttr ".parentJointIndex" -1; createNode nurbsCurve -n "leg_R0_rootShape" -p "leg_R0_root"; - rename -uid "AB5C81EE-4116-579F-DE88-1895CE84A2FE"; + rename -uid "0C2D60C3-452C-EFA0-CADC-C9A6DE2124DC"; setAttr ".ihi" 0; setAttr -k off ".v"; setAttr ".ove" yes; @@ -13613,8 +13511,8 @@ createNode nurbsCurve -n "leg_R0_rootShape" -p "leg_R0_root"; 0.25 0 0 -0.25 0 0 ; -createNode nurbsCurve -n "leg_R0_root1Shape" -p "leg_R0_root"; - rename -uid "FC732526-4A05-9808-454C-2E87C069C4C9"; +createNode nurbsCurve -n "leg_R0_root4Shape" -p "leg_R0_root"; + rename -uid "BD348ED9-41BC-7495-B25D-559CCD872405"; setAttr ".ihi" 0; setAttr -k off ".v"; setAttr ".ove" yes; @@ -13626,8 +13524,8 @@ createNode nurbsCurve -n "leg_R0_root1Shape" -p "leg_R0_root"; 0 0.25 0 0 -0.25 0 ; -createNode nurbsCurve -n "leg_R0_root2Shape" -p "leg_R0_root"; - rename -uid "171ADB4B-4E04-B325-E5B9-079FDBC8ED74"; +createNode nurbsCurve -n "leg_R0_root5Shape" -p "leg_R0_root"; + rename -uid "FA0D7DC2-41B3-3925-9EC9-A6AEDC03969E"; setAttr ".ihi" 0; setAttr -k off ".v"; setAttr ".ove" yes; @@ -13639,8 +13537,8 @@ createNode nurbsCurve -n "leg_R0_root2Shape" -p "leg_R0_root"; 0 0 0.25 0 0 -0.25 ; -createNode nurbsCurve -n "leg_R0_root3Shape" -p "leg_R0_root"; - rename -uid "1DB8F011-41A0-6964-95DE-0CB0AD47BDFA"; +createNode nurbsCurve -n "leg_R0_root6Shape" -p "leg_R0_root"; + rename -uid "5EA45749-4BE0-38DC-9EED-9691E7A83746"; setAttr ".ihi" 0; setAttr -k off ".v"; setAttr ".ove" yes; @@ -13667,10 +13565,10 @@ createNode nurbsCurve -n "leg_R0_root3Shape" -p "leg_R0_root"; -0.125 -0.125 -0.125 ; createNode transform -n "leg_R0_knee" -p "leg_R0_root"; - rename -uid "BBC64F8C-4B6F-4853-49CF-B6AE317DB38D"; + rename -uid "A7C0872D-4A34-8005-718C-898149D97704"; addAttr -ci true -sn "isGearGuide" -ln "isGearGuide" -dv 1 -min 0 -max 1 -at "bool"; setAttr -k off -cb on ".v"; - setAttr ".t" -type "double3" -4.3795369772304023 0.38838644346805862 -3.5527136788005009e-015 ; + setAttr ".t" -type "double3" -4.3795369772304023 0.38838644346805862 -3.7747582837255322e-015 ; setAttr -k off -cb on ".tx"; setAttr -k off -cb on ".ty"; setAttr -k off -cb on ".tz"; @@ -13679,12 +13577,12 @@ createNode transform -n "leg_R0_knee" -p "leg_R0_root"; setAttr -k off -cb on ".ry"; setAttr -k off -cb on ".rz"; setAttr -cb on ".ro"; - setAttr ".s" -type "double3" 1.0000000000000011 0.99999999999999967 1.0000000000000018 ; + setAttr ".s" -type "double3" 1.0000000000000011 1 1.0000000000000018 ; setAttr -k off -cb on ".sx"; setAttr -k off -cb on ".sy"; setAttr -k off -cb on ".sz"; createNode nurbsCurve -n "leg_R0_kneeShape" -p "leg_R0_knee"; - rename -uid "C81DFBE2-4E08-61CA-E90D-6F8B27D7D88D"; + rename -uid "D5003133-4D3C-12F9-AA37-C49EBBBF1761"; setAttr ".ihi" 0; setAttr -k off ".v"; setAttr ".ove" yes; @@ -13696,8 +13594,8 @@ createNode nurbsCurve -n "leg_R0_kneeShape" -p "leg_R0_knee"; 0.25 0 0 -0.25 0 0 ; -createNode nurbsCurve -n "leg_R0_knee1Shape" -p "leg_R0_knee"; - rename -uid "32518551-4FFB-CB08-FA85-1AB115D56CF4"; +createNode nurbsCurve -n "leg_R0_knee4Shape" -p "leg_R0_knee"; + rename -uid "6A415001-45AB-1311-3CFE-7BBEEB2E9B1A"; setAttr ".ihi" 0; setAttr -k off ".v"; setAttr ".ove" yes; @@ -13709,8 +13607,8 @@ createNode nurbsCurve -n "leg_R0_knee1Shape" -p "leg_R0_knee"; 0 0.25 0 0 -0.25 0 ; -createNode nurbsCurve -n "leg_R0_knee2Shape" -p "leg_R0_knee"; - rename -uid "9B444E39-4763-062D-EB9E-7F9F8CADAA51"; +createNode nurbsCurve -n "leg_R0_knee5Shape" -p "leg_R0_knee"; + rename -uid "F028A3EA-4FA3-6468-0786-428B793ACEA0"; setAttr ".ihi" 0; setAttr -k off ".v"; setAttr ".ove" yes; @@ -13722,8 +13620,8 @@ createNode nurbsCurve -n "leg_R0_knee2Shape" -p "leg_R0_knee"; 0 0 0.25 0 0 -0.25 ; -createNode nurbsCurve -n "leg_R0_knee3Shape" -p "leg_R0_knee"; - rename -uid "E68D9BD7-4197-240B-6109-1ABAD84E7766"; +createNode nurbsCurve -n "leg_R0_knee6Shape" -p "leg_R0_knee"; + rename -uid "ABA11490-4465-7411-A54C-A7AEB48B97FC"; setAttr ".ihi" 0; setAttr -k off ".v"; setAttr ".ove" yes; @@ -13740,8 +13638,8 @@ createNode nurbsCurve -n "leg_R0_knee3Shape" -p "leg_R0_knee"; 0 -0.1875 0 -0.1875 0 0 ; -createNode nurbsCurve -n "leg_R0_knee3_0crvShape" -p "leg_R0_knee"; - rename -uid "F6CC52C1-4579-0970-102C-B891E66D187A"; +createNode nurbsCurve -n "leg_R0_knee6_0crvShape" -p "leg_R0_knee"; + rename -uid "27797664-4C6D-B922-EC60-0A8D3DBBEF69"; setAttr ".ihi" 0; setAttr -k off ".v"; setAttr ".ove" yes; @@ -13758,8 +13656,8 @@ createNode nurbsCurve -n "leg_R0_knee3_0crvShape" -p "leg_R0_knee"; 0 0 -0.1875 -0.1875 0 0 ; -createNode nurbsCurve -n "leg_R0_knee3_1crvShape" -p "leg_R0_knee"; - rename -uid "06E508FA-4132-6D46-B1C2-BAAF21A3C9E7"; +createNode nurbsCurve -n "leg_R0_knee6_1crvShape" -p "leg_R0_knee"; + rename -uid "C8C6F2FD-40E6-837B-6B90-828295640CBE"; setAttr ".ihi" 0; setAttr -k off ".v"; setAttr ".ove" yes; @@ -13777,10 +13675,10 @@ createNode nurbsCurve -n "leg_R0_knee3_1crvShape" -p "leg_R0_knee"; 0 0 -0.1875 ; createNode transform -n "leg_R0_ankle" -p "leg_R0_knee"; - rename -uid "4A3504DE-4539-C6D0-72BD-0DA3B450FA8B"; + rename -uid "C7658E00-448E-0656-C085-5CAF065A51E3"; addAttr -ci true -sn "isGearGuide" -ln "isGearGuide" -dv 1 -min 0 -max 1 -at "bool"; setAttr -k off -cb on ".v"; - setAttr ".t" -type "double3" -4.4408920985006262e-016 -4.5414075240554155 -0.74630601922780015 ; + setAttr ".t" -type "double3" -6.6613381477509392e-016 -4.5414075240554155 -0.74630601922780004 ; setAttr -k off -cb on ".tx"; setAttr -k off -cb on ".ty"; setAttr -k off -cb on ".tz"; @@ -13788,12 +13686,12 @@ createNode transform -n "leg_R0_ankle" -p "leg_R0_knee"; setAttr -k off -cb on ".ry"; setAttr -k off -cb on ".rz"; setAttr -cb on ".ro"; - setAttr ".s" -type "double3" 1.0000000000000011 0.99999999999999989 0.99999999999999878 ; + setAttr ".s" -type "double3" 1.0000000000000016 0.99999999999999989 0.99999999999999878 ; setAttr -k off -cb on ".sx"; setAttr -k off -cb on ".sy"; setAttr -k off -cb on ".sz"; createNode nurbsCurve -n "leg_R0_ankleShape" -p "leg_R0_ankle"; - rename -uid "FFCB4993-4D21-939A-68BF-9EBB2C25B1C3"; + rename -uid "D9F1987C-4691-2118-32A1-BBA508DCB5E7"; setAttr ".ihi" 0; setAttr -k off ".v"; setAttr ".ove" yes; @@ -13805,8 +13703,8 @@ createNode nurbsCurve -n "leg_R0_ankleShape" -p "leg_R0_ankle"; 0.25 0 0 -0.25 0 0 ; -createNode nurbsCurve -n "leg_R0_ankle1Shape" -p "leg_R0_ankle"; - rename -uid "2361C197-41C8-17D3-6F7D-C9B38844AE58"; +createNode nurbsCurve -n "leg_R0_ankle4Shape" -p "leg_R0_ankle"; + rename -uid "D82525FD-4457-A31B-8417-C48C00AE8464"; setAttr ".ihi" 0; setAttr -k off ".v"; setAttr ".ove" yes; @@ -13818,8 +13716,8 @@ createNode nurbsCurve -n "leg_R0_ankle1Shape" -p "leg_R0_ankle"; 0 0.25 0 0 -0.25 0 ; -createNode nurbsCurve -n "leg_R0_ankle2Shape" -p "leg_R0_ankle"; - rename -uid "DC2389DE-4157-6743-E69D-D3901AA28057"; +createNode nurbsCurve -n "leg_R0_ankle5Shape" -p "leg_R0_ankle"; + rename -uid "DFA4AE6B-41E8-9301-DBA4-4FB871B8C2B3"; setAttr ".ihi" 0; setAttr -k off ".v"; setAttr ".ove" yes; @@ -13831,8 +13729,8 @@ createNode nurbsCurve -n "leg_R0_ankle2Shape" -p "leg_R0_ankle"; 0 0 0.25 0 0 -0.25 ; -createNode nurbsCurve -n "leg_R0_ankle3Shape" -p "leg_R0_ankle"; - rename -uid "D3B9B392-46B5-F7D4-FD87-EB8483A15EBE"; +createNode nurbsCurve -n "leg_R0_ankle6Shape" -p "leg_R0_ankle"; + rename -uid "17332D19-4C45-047E-804B-E5B8BF89B40D"; setAttr ".ihi" 0; setAttr -k off ".v"; setAttr ".ove" yes; @@ -13849,8 +13747,8 @@ createNode nurbsCurve -n "leg_R0_ankle3Shape" -p "leg_R0_ankle"; 0 -0.1875 0 -0.1875 0 0 ; -createNode nurbsCurve -n "leg_R0_ankle3_0crvShape" -p "leg_R0_ankle"; - rename -uid "4B9B84D6-4E86-30CB-AE83-29AF97B24A56"; +createNode nurbsCurve -n "leg_R0_ankle6_0crvShape" -p "leg_R0_ankle"; + rename -uid "0E0D00B8-4DB6-108C-6B6F-0AA74C71F480"; setAttr ".ihi" 0; setAttr -k off ".v"; setAttr ".ove" yes; @@ -13867,8 +13765,8 @@ createNode nurbsCurve -n "leg_R0_ankle3_0crvShape" -p "leg_R0_ankle"; 0 0 -0.1875 -0.1875 0 0 ; -createNode nurbsCurve -n "leg_R0_ankle3_1crvShape" -p "leg_R0_ankle"; - rename -uid "77BAED00-47CD-02B9-725F-BDAE2054F52E"; +createNode nurbsCurve -n "leg_R0_ankle6_1crvShape" -p "leg_R0_ankle"; + rename -uid "7FCC3DAB-4F9D-0A84-2E75-569EA63285D8"; setAttr ".ihi" 0; setAttr -k off ".v"; setAttr ".ove" yes; @@ -13886,10 +13784,10 @@ createNode nurbsCurve -n "leg_R0_ankle3_1crvShape" -p "leg_R0_ankle"; 0 0 -0.1875 ; createNode transform -n "leg_R0_eff" -p "leg_R0_ankle"; - rename -uid "222B292F-44FC-7606-CD80-BCA1AEE8DB59"; + rename -uid "BC21A577-4691-A92A-710C-DDA175232B39"; addAttr -ci true -sn "isGearGuide" -ln "isGearGuide" -dv 1 -min 0 -max 1 -at "bool"; setAttr -k off -cb on ".v"; - setAttr ".t" -type "double3" 1.4432899320127035e-015 2.4424906541753444e-015 2.1377206638691333 ; + setAttr ".t" -type "double3" 1.5543122344752192e-015 2.4424906541753444e-015 2.1377206638691337 ; setAttr -k off -cb on ".tx"; setAttr -k off -cb on ".ty"; setAttr -k off -cb on ".tz"; @@ -13898,12 +13796,12 @@ createNode transform -n "leg_R0_eff" -p "leg_R0_ankle"; setAttr -k off -cb on ".ry"; setAttr -k off -cb on ".rz"; setAttr -cb on ".ro"; - setAttr ".s" -type "double3" 1.000000000000004 0.999999999999999 1.0000000000000031 ; + setAttr ".s" -type "double3" 1.0000000000000042 0.99999999999999878 1.0000000000000031 ; setAttr -k off -cb on ".sx"; setAttr -k off -cb on ".sy"; setAttr -k off -cb on ".sz"; createNode nurbsCurve -n "leg_R0_effShape" -p "leg_R0_eff"; - rename -uid "D6E389CC-4393-4803-317D-8D95DFACF97B"; + rename -uid "8EF35C6F-4634-C731-AD38-DE81BE6F4480"; setAttr ".ihi" 0; setAttr -k off ".v"; setAttr ".ove" yes; @@ -13915,8 +13813,8 @@ createNode nurbsCurve -n "leg_R0_effShape" -p "leg_R0_eff"; 0.25 0 0 -0.25 0 0 ; -createNode nurbsCurve -n "leg_R0_eff1Shape" -p "leg_R0_eff"; - rename -uid "658AEAC5-4F67-EDD0-74D3-BEB77065ED0D"; +createNode nurbsCurve -n "leg_R0_eff4Shape" -p "leg_R0_eff"; + rename -uid "01114149-44B9-F5B9-2F9B-F1B78DC92271"; setAttr ".ihi" 0; setAttr -k off ".v"; setAttr ".ove" yes; @@ -13928,8 +13826,8 @@ createNode nurbsCurve -n "leg_R0_eff1Shape" -p "leg_R0_eff"; 0 0.25 0 0 -0.25 0 ; -createNode nurbsCurve -n "leg_R0_eff2Shape" -p "leg_R0_eff"; - rename -uid "7D1CDC6B-41D4-AC14-3070-F6A35B806F3C"; +createNode nurbsCurve -n "leg_R0_eff5Shape" -p "leg_R0_eff"; + rename -uid "D32620EB-4E19-B8BE-29CC-D8B2635D060F"; setAttr ".ihi" 0; setAttr -k off ".v"; setAttr ".ove" yes; @@ -13941,8 +13839,8 @@ createNode nurbsCurve -n "leg_R0_eff2Shape" -p "leg_R0_eff"; 0 0 0.25 0 0 -0.25 ; -createNode nurbsCurve -n "leg_R0_eff3Shape" -p "leg_R0_eff"; - rename -uid "E083588D-4BB2-CA9F-9A6D-B882020FA162"; +createNode nurbsCurve -n "leg_R0_eff6Shape" -p "leg_R0_eff"; + rename -uid "134A21A0-433C-83AF-E5A6-388FEEAB19A4"; setAttr ".ihi" 0; setAttr -k off ".v"; setAttr ".ove" yes; @@ -13959,8 +13857,8 @@ createNode nurbsCurve -n "leg_R0_eff3Shape" -p "leg_R0_eff"; 0 -0.1875 0 -0.1875 0 0 ; -createNode nurbsCurve -n "leg_R0_eff3_0crvShape" -p "leg_R0_eff"; - rename -uid "6D44A850-4019-6902-58B9-19A99256B98E"; +createNode nurbsCurve -n "leg_R0_eff6_0crvShape" -p "leg_R0_eff"; + rename -uid "46B5D75E-402D-8198-E6DD-9697E2C94EA3"; setAttr ".ihi" 0; setAttr -k off ".v"; setAttr ".ove" yes; @@ -13977,8 +13875,8 @@ createNode nurbsCurve -n "leg_R0_eff3_0crvShape" -p "leg_R0_eff"; 0 0 -0.1875 -0.1875 0 0 ; -createNode nurbsCurve -n "leg_R0_eff3_1crvShape" -p "leg_R0_eff"; - rename -uid "57464A7D-4164-F550-3732-D0AB17DC5FBC"; +createNode nurbsCurve -n "leg_R0_eff6_1crvShape" -p "leg_R0_eff"; + rename -uid "4B2BE4BD-4419-6783-7BFA-1AA9E9A56FC1"; setAttr ".ihi" 0; setAttr -k off ".v"; setAttr ".ove" yes; @@ -13996,7 +13894,7 @@ createNode nurbsCurve -n "leg_R0_eff3_1crvShape" -p "leg_R0_eff"; 0 0 -0.1875 ; createNode transform -n "foot_R0_root" -p "leg_R0_ankle"; - rename -uid "3734072D-4659-F2DA-248D-E6BD559B7676"; + rename -uid "F81A4DA7-4C6C-7492-BC0C-E98E4BB42F79"; addAttr -ci true -sn "isGearGuide" -ln "isGearGuide" -dv 1 -min 0 -max 1 -at "bool"; addAttr -ci true -sn "comp_type" -ln "comp_type" -dt "string"; addAttr -ci true -sn "comp_name" -ln "comp_name" -dt "string"; @@ -14005,11 +13903,11 @@ createNode transform -n "foot_R0_root" -p "leg_R0_ankle"; addAttr -ci true -sn "connector" -ln "connector" -dt "string"; addAttr -ci true -sn "ui_host" -ln "ui_host" -dt "string"; addAttr -ci true -sn "ctlGrp" -ln "ctlGrp" -dt "string"; - addAttr -ci true -sn "useRollCtl" -ln "useRollCtl" -min 0 -max 1 -at "bool"; + addAttr -ci true -sn "useRollCtl" -ln "useRollCtl" -dv 1 -min 0 -max 1 -at "bool"; addAttr -ci true -sn "useIndex" -ln "useIndex" -min 0 -max 1 -at "bool"; - addAttr -ci true -sn "parentJointIndex" -ln "parentJointIndex" -at "long"; + addAttr -ci true -sn "parentJointIndex" -ln "parentJointIndex" -dv -1 -at "long"; setAttr -k off -cb on ".v"; - setAttr ".t" -type "double3" 4.4408920985006262e-016 1.7763568394002505e-015 -1.1102230246251565e-016 ; + setAttr ".t" -type "double3" 5.5511151231257827e-016 1.7763568394002505e-015 0 ; setAttr -k off -cb on ".tx"; setAttr -k off -cb on ".ty"; setAttr -k off -cb on ".tz"; @@ -14018,7 +13916,7 @@ createNode transform -n "foot_R0_root" -p "leg_R0_ankle"; setAttr -k off -cb on ".ry"; setAttr -k off -cb on ".rz"; setAttr -cb on ".ro"; - setAttr ".s" -type "double3" 0.99979752268518463 0.99979752268518252 0.99979752268518163 ; + setAttr ".s" -type "double3" 0.99979752268518485 0.99979752268518218 0.99979752268518141 ; setAttr -k off -cb on ".sx"; setAttr -k off -cb on ".sy"; setAttr -k off -cb on ".sz"; @@ -14028,10 +13926,8 @@ createNode transform -n "foot_R0_root" -p "leg_R0_ankle"; setAttr ".connector" -type "string" "leg_2jnt_01"; setAttr ".ui_host" -type "string" "legUI_R0_root"; setAttr ".ctlGrp" -type "string" ""; - setAttr ".useRollCtl" yes; - setAttr ".parentJointIndex" -1; createNode nurbsCurve -n "foot_R0_rootShape" -p "foot_R0_root"; - rename -uid "6BE76887-49E1-46E5-B59B-48A492C85F18"; + rename -uid "939DDADE-48F7-8905-DA5A-F48F25CAF3CF"; setAttr ".ihi" 0; setAttr -k off ".v"; setAttr ".ove" yes; @@ -14043,8 +13939,8 @@ createNode nurbsCurve -n "foot_R0_rootShape" -p "foot_R0_root"; 0.25 0 0 -0.25 0 0 ; -createNode nurbsCurve -n "foot_R0_root1Shape" -p "foot_R0_root"; - rename -uid "AFB17D81-410A-2D0E-F332-A4857DFD956A"; +createNode nurbsCurve -n "foot_R0_root4Shape" -p "foot_R0_root"; + rename -uid "F83B0205-44B9-CFEB-28E4-8A8F3CECCE7C"; setAttr ".ihi" 0; setAttr -k off ".v"; setAttr ".ove" yes; @@ -14056,8 +13952,8 @@ createNode nurbsCurve -n "foot_R0_root1Shape" -p "foot_R0_root"; 0 0.25 0 0 -0.25 0 ; -createNode nurbsCurve -n "foot_R0_root2Shape" -p "foot_R0_root"; - rename -uid "A94C784C-40A7-FAC2-8096-73A8E410460D"; +createNode nurbsCurve -n "foot_R0_root5Shape" -p "foot_R0_root"; + rename -uid "549E319F-4F1A-1DED-0BA5-BCAAD83FB163"; setAttr ".ihi" 0; setAttr -k off ".v"; setAttr ".ove" yes; @@ -14069,8 +13965,8 @@ createNode nurbsCurve -n "foot_R0_root2Shape" -p "foot_R0_root"; 0 0 0.25 0 0 -0.25 ; -createNode nurbsCurve -n "foot_R0_root3Shape" -p "foot_R0_root"; - rename -uid "13E284A7-4DA2-31D1-CB7B-CE93641583B7"; +createNode nurbsCurve -n "foot_R0_root6Shape" -p "foot_R0_root"; + rename -uid "CF66E927-468B-7802-08AC-76877021EC3C"; setAttr ".ihi" 0; setAttr -k off ".v"; setAttr ".ove" yes; @@ -14097,24 +13993,24 @@ createNode nurbsCurve -n "foot_R0_root3Shape" -p "foot_R0_root"; -0.125 -0.125 -0.125 ; createNode transform -n "foot_R0_0_loc" -p "foot_R0_root"; - rename -uid "D353235B-4DDD-58AC-B85C-D490D38728DE"; + rename -uid "4A8FFE71-46E9-8B5A-B47C-BEB18092B6C5"; addAttr -ci true -sn "isGearGuide" -ln "isGearGuide" -dv 1 -min 0 -max 1 -at "bool"; setAttr -k off -cb on ".v"; - setAttr ".t" -type "double3" 1.3903626031763228 -0.77423199221117389 -0.00087398468478205871 ; + setAttr ".t" -type "double3" 1.3903626031763223 -0.77423199221117389 -0.00087398468478183666 ; setAttr -k off -cb on ".tx"; setAttr -k off -cb on ".ty"; setAttr -k off -cb on ".tz"; - setAttr ".r" -type "double3" 0 0 -22.490244653448059 ; + setAttr ".r" -type "double3" 0 0 -22.490244653448066 ; setAttr -k off -cb on ".rx"; setAttr -k off -cb on ".ry"; setAttr -k off -cb on ".rz"; setAttr -cb on ".ro"; - setAttr ".s" -type "double3" 0.99999999999999867 0.99999999999999956 1.0000000000000009 ; + setAttr ".s" -type "double3" 0.99999999999999845 0.99999999999999956 1.0000000000000011 ; setAttr -k off -cb on ".sx"; setAttr -k off -cb on ".sy"; setAttr -k off -cb on ".sz"; createNode nurbsCurve -n "foot_R0_0_locShape" -p "foot_R0_0_loc"; - rename -uid "FC8A81D1-49CF-52C6-A9E9-9FA3CD3FD8E5"; + rename -uid "88B52614-44A3-B8CF-6B77-96AF68489843"; setAttr ".ihi" 0; setAttr -k off ".v"; setAttr ".ove" yes; @@ -14126,8 +14022,8 @@ createNode nurbsCurve -n "foot_R0_0_locShape" -p "foot_R0_0_loc"; 0.25 0 0 -0.25 0 0 ; -createNode nurbsCurve -n "foot_R0_0_loc1Shape" -p "foot_R0_0_loc"; - rename -uid "767B5B4A-4404-BB23-2942-9681AB20F15D"; +createNode nurbsCurve -n "foot_R0_0_loc4Shape" -p "foot_R0_0_loc"; + rename -uid "287D9699-45BA-B250-0765-C3A30E596711"; setAttr ".ihi" 0; setAttr -k off ".v"; setAttr ".ove" yes; @@ -14139,8 +14035,8 @@ createNode nurbsCurve -n "foot_R0_0_loc1Shape" -p "foot_R0_0_loc"; 0 0.25 0 0 -0.25 0 ; -createNode nurbsCurve -n "foot_R0_0_loc2Shape" -p "foot_R0_0_loc"; - rename -uid "7C6CD542-47D9-6C07-5B7F-69B09DBBDD71"; +createNode nurbsCurve -n "foot_R0_0_loc5Shape" -p "foot_R0_0_loc"; + rename -uid "591828FE-4CE3-2159-A3E1-F8BF68DFBCE7"; setAttr ".ihi" 0; setAttr -k off ".v"; setAttr ".ove" yes; @@ -14152,8 +14048,8 @@ createNode nurbsCurve -n "foot_R0_0_loc2Shape" -p "foot_R0_0_loc"; 0 0 0.25 0 0 -0.25 ; -createNode nurbsCurve -n "foot_R0_0_loc3Shape" -p "foot_R0_0_loc"; - rename -uid "3ACBA2E2-43C7-12DD-CA20-69929CA8911F"; +createNode nurbsCurve -n "foot_R0_0_loc6Shape" -p "foot_R0_0_loc"; + rename -uid "9EDFE4E8-4D1E-EFF9-A276-C0AEE435636A"; setAttr ".ihi" 0; setAttr -k off ".v"; setAttr ".ove" yes; @@ -14170,8 +14066,8 @@ createNode nurbsCurve -n "foot_R0_0_loc3Shape" -p "foot_R0_0_loc"; 0 -0.1875 0 -0.1875 0 0 ; -createNode nurbsCurve -n "foot_R0_0_loc3_0crvShape" -p "foot_R0_0_loc"; - rename -uid "5A787437-4346-7CAB-3F1B-34A6719B13B3"; +createNode nurbsCurve -n "foot_R0_0_loc6_0crvShape" -p "foot_R0_0_loc"; + rename -uid "A70BFF6B-4DDE-7FE8-C1AC-E7A44FFA8F11"; setAttr ".ihi" 0; setAttr -k off ".v"; setAttr ".ove" yes; @@ -14188,8 +14084,8 @@ createNode nurbsCurve -n "foot_R0_0_loc3_0crvShape" -p "foot_R0_0_loc"; 0 0 -0.1875 -0.1875 0 0 ; -createNode nurbsCurve -n "foot_R0_0_loc3_1crvShape" -p "foot_R0_0_loc"; - rename -uid "A82AA2CA-453E-89B2-4185-EAA4B0B4AF74"; +createNode nurbsCurve -n "foot_R0_0_loc6_1crvShape" -p "foot_R0_0_loc"; + rename -uid "B744348F-45BE-73D2-5483-AE9B2DE9EA0E"; setAttr ".ihi" 0; setAttr -k off ".v"; setAttr ".ove" yes; @@ -14207,10 +14103,10 @@ createNode nurbsCurve -n "foot_R0_0_loc3_1crvShape" -p "foot_R0_0_loc"; 0 0 -0.1875 ; createNode transform -n "foot_R0_1_loc" -p "foot_R0_0_loc"; - rename -uid "099E25A7-449A-51F5-EB3D-5F88CC79B620"; + rename -uid "F063FDCD-4FE2-4124-C150-B9B786DAAEFE"; addAttr -ci true -sn "isGearGuide" -ln "isGearGuide" -dv 1 -min 0 -max 1 -at "bool"; setAttr -k off -cb on ".v"; - setAttr ".t" -type "double3" 0.57241624162444504 0.052400542543841189 0.00053566803260851614 ; + setAttr ".t" -type "double3" 0.57241624162444515 0.0524005425438413 0.0005356680326082941 ; setAttr -k off -cb on ".tx"; setAttr -k off -cb on ".ty"; setAttr -k off -cb on ".tz"; @@ -14219,12 +14115,12 @@ createNode transform -n "foot_R0_1_loc" -p "foot_R0_0_loc"; setAttr -k off -cb on ".ry"; setAttr -k off -cb on ".rz"; setAttr -cb on ".ro"; - setAttr ".s" -type "double3" 1.0000000000000007 0.99999999999999989 0.999999999999999 ; + setAttr ".s" -type "double3" 1.0000000000000009 1 0.99999999999999911 ; setAttr -k off -cb on ".sx"; setAttr -k off -cb on ".sy"; setAttr -k off -cb on ".sz"; createNode nurbsCurve -n "foot_R0_1_locShape" -p "foot_R0_1_loc"; - rename -uid "9C55A29E-4E30-4109-78BB-60BDDD6F427E"; + rename -uid "DCB57212-4E1B-2986-0881-71BC78110964"; setAttr ".ihi" 0; setAttr -k off ".v"; setAttr ".ove" yes; @@ -14236,8 +14132,8 @@ createNode nurbsCurve -n "foot_R0_1_locShape" -p "foot_R0_1_loc"; 0.25 0 0 -0.25 0 0 ; -createNode nurbsCurve -n "foot_R0_1_loc1Shape" -p "foot_R0_1_loc"; - rename -uid "6AD67446-488B-CDCA-26C3-A3A662C481EA"; +createNode nurbsCurve -n "foot_R0_1_loc4Shape" -p "foot_R0_1_loc"; + rename -uid "59176BCF-407E-13EB-0BA1-3C8631A968BD"; setAttr ".ihi" 0; setAttr -k off ".v"; setAttr ".ove" yes; @@ -14249,8 +14145,8 @@ createNode nurbsCurve -n "foot_R0_1_loc1Shape" -p "foot_R0_1_loc"; 0 0.25 0 0 -0.25 0 ; -createNode nurbsCurve -n "foot_R0_1_loc2Shape" -p "foot_R0_1_loc"; - rename -uid "1B51556C-433A-4B7B-FB5E-299B07060F5B"; +createNode nurbsCurve -n "foot_R0_1_loc5Shape" -p "foot_R0_1_loc"; + rename -uid "A80D3149-4166-E52F-ECD7-D7B2083B8DDF"; setAttr ".ihi" 0; setAttr -k off ".v"; setAttr ".ove" yes; @@ -14262,8 +14158,8 @@ createNode nurbsCurve -n "foot_R0_1_loc2Shape" -p "foot_R0_1_loc"; 0 0 0.25 0 0 -0.25 ; -createNode nurbsCurve -n "foot_R0_1_loc3Shape" -p "foot_R0_1_loc"; - rename -uid "3CE175FF-427D-C9F2-6B66-F4879B08CD0D"; +createNode nurbsCurve -n "foot_R0_1_loc6Shape" -p "foot_R0_1_loc"; + rename -uid "23412282-4232-BBA6-0B80-49BF02CD9538"; setAttr ".ihi" 0; setAttr -k off ".v"; setAttr ".ove" yes; @@ -14280,8 +14176,8 @@ createNode nurbsCurve -n "foot_R0_1_loc3Shape" -p "foot_R0_1_loc"; 0 -0.1875 0 -0.1875 0 0 ; -createNode nurbsCurve -n "foot_R0_1_loc3_0crvShape" -p "foot_R0_1_loc"; - rename -uid "AD8D309D-46CA-AF5B-6606-E59ACE79E46F"; +createNode nurbsCurve -n "foot_R0_1_loc6_0crvShape" -p "foot_R0_1_loc"; + rename -uid "A9977BE5-44F6-A0CA-823E-06A1828628E3"; setAttr ".ihi" 0; setAttr -k off ".v"; setAttr ".ove" yes; @@ -14298,8 +14194,8 @@ createNode nurbsCurve -n "foot_R0_1_loc3_0crvShape" -p "foot_R0_1_loc"; 0 0 -0.1875 -0.1875 0 0 ; -createNode nurbsCurve -n "foot_R0_1_loc3_1crvShape" -p "foot_R0_1_loc"; - rename -uid "DDD80DC6-4CCD-3B74-B722-24A88BF2EF3F"; +createNode nurbsCurve -n "foot_R0_1_loc6_1crvShape" -p "foot_R0_1_loc"; + rename -uid "AC69BD81-45FC-4312-15B7-9AB33F91AD4B"; setAttr ".ihi" 0; setAttr -k off ".v"; setAttr ".ove" yes; @@ -14317,10 +14213,10 @@ createNode nurbsCurve -n "foot_R0_1_loc3_1crvShape" -p "foot_R0_1_loc"; 0 0 -0.1875 ; createNode transform -n "foot_R0_2_loc" -p "foot_R0_1_loc"; - rename -uid "375AC2CA-479F-F25B-553F-E9A967B2A46C"; + rename -uid "1BC0ACC5-4A4D-2250-95D6-C9ACA96FB806"; addAttr -ci true -sn "isGearGuide" -ln "isGearGuide" -dv 1 -min 0 -max 1 -at "bool"; setAttr -k off -cb on ".v"; - setAttr ".t" -type "double3" 0.34999482654518332 -0.34355031336095387 -0.0018389437992669677 ; + setAttr ".t" -type "double3" 0.3499948265451831 -0.34355031336095398 -0.0018389437992665236 ; setAttr -k off -cb on ".tx"; setAttr -k off -cb on ".ty"; setAttr -k off -cb on ".tz"; @@ -14329,12 +14225,12 @@ createNode transform -n "foot_R0_2_loc" -p "foot_R0_1_loc"; setAttr -k off -cb on ".ry"; setAttr -k off -cb on ".rz"; setAttr -cb on ".ro"; - setAttr ".s" -type "double3" 1 1.0000000000000016 0.99999999999999833 ; + setAttr ".s" -type "double3" 0.99999999999999967 1.0000000000000013 0.99999999999999811 ; setAttr -k off -cb on ".sx"; setAttr -k off -cb on ".sy"; setAttr -k off -cb on ".sz"; createNode nurbsCurve -n "foot_R0_2_locShape" -p "foot_R0_2_loc"; - rename -uid "CA43A168-4E6E-62C0-F171-50A6951858B5"; + rename -uid "260A65A9-4AA4-860C-14CF-61B8D870FB34"; setAttr ".ihi" 0; setAttr -k off ".v"; setAttr ".ove" yes; @@ -14346,8 +14242,8 @@ createNode nurbsCurve -n "foot_R0_2_locShape" -p "foot_R0_2_loc"; 0.25 0 0 -0.25 0 0 ; -createNode nurbsCurve -n "foot_R0_2_loc1Shape" -p "foot_R0_2_loc"; - rename -uid "06E6F672-4CE3-5C58-2003-47BE8E2A0C5D"; +createNode nurbsCurve -n "foot_R0_2_loc4Shape" -p "foot_R0_2_loc"; + rename -uid "64FF479D-477E-3CEC-6E71-64A1F9DB8188"; setAttr ".ihi" 0; setAttr -k off ".v"; setAttr ".ove" yes; @@ -14359,8 +14255,8 @@ createNode nurbsCurve -n "foot_R0_2_loc1Shape" -p "foot_R0_2_loc"; 0 0.25 0 0 -0.25 0 ; -createNode nurbsCurve -n "foot_R0_2_loc2Shape" -p "foot_R0_2_loc"; - rename -uid "DA8F363A-49F4-63E5-92D7-D7A16B8010A6"; +createNode nurbsCurve -n "foot_R0_2_loc5Shape" -p "foot_R0_2_loc"; + rename -uid "04195C99-49FF-74AE-4BCD-69A0F3D8AAAE"; setAttr ".ihi" 0; setAttr -k off ".v"; setAttr ".ove" yes; @@ -14372,8 +14268,8 @@ createNode nurbsCurve -n "foot_R0_2_loc2Shape" -p "foot_R0_2_loc"; 0 0 0.25 0 0 -0.25 ; -createNode nurbsCurve -n "foot_R0_2_loc3Shape" -p "foot_R0_2_loc"; - rename -uid "D377CD1F-4F98-C194-806A-34B9DBB78DE1"; +createNode nurbsCurve -n "foot_R0_2_loc6Shape" -p "foot_R0_2_loc"; + rename -uid "BEFE9C42-4677-D01B-CFAD-4C9C67B4B7B0"; setAttr ".ihi" 0; setAttr -k off ".v"; setAttr ".ove" yes; @@ -14390,8 +14286,8 @@ createNode nurbsCurve -n "foot_R0_2_loc3Shape" -p "foot_R0_2_loc"; 0 -0.1875 0 -0.1875 0 0 ; -createNode nurbsCurve -n "foot_R0_2_loc3_0crvShape" -p "foot_R0_2_loc"; - rename -uid "B5AA3748-427D-A798-CAC6-20A84D0E1F48"; +createNode nurbsCurve -n "foot_R0_2_loc6_0crvShape" -p "foot_R0_2_loc"; + rename -uid "47CC2FA6-409D-998F-6BE1-A0961C474E53"; setAttr ".ihi" 0; setAttr -k off ".v"; setAttr ".ove" yes; @@ -14408,8 +14304,8 @@ createNode nurbsCurve -n "foot_R0_2_loc3_0crvShape" -p "foot_R0_2_loc"; 0 0 -0.1875 -0.1875 0 0 ; -createNode nurbsCurve -n "foot_R0_2_loc3_1crvShape" -p "foot_R0_2_loc"; - rename -uid "7613615A-4C75-8810-9136-B0B70A4C81FF"; +createNode nurbsCurve -n "foot_R0_2_loc6_1crvShape" -p "foot_R0_2_loc"; + rename -uid "30E6C64C-485C-C75C-8CD2-33AD2036BD5E"; setAttr ".ihi" 0; setAttr -k off ".v"; setAttr ".ove" yes; @@ -14427,19 +14323,19 @@ createNode nurbsCurve -n "foot_R0_2_loc3_1crvShape" -p "foot_R0_2_loc"; 0 0 -0.1875 ; createNode transform -n "foot_R0_crv" -p "foot_R0_root"; - rename -uid "2EF2B095-4C6F-230F-9B39-5782A4E9B22D"; + rename -uid "E2D09470-4A08-0E15-886B-8C83ED8C40AF"; setAttr ".ovdt" 1; setAttr ".ove" yes; - setAttr ".t" -type "double3" 0.8412362524868694 -1.2934842521415504 1.0591437062861189 ; - setAttr ".r" -type "double3" 177.10098306027425 -84.223472754416505 -177.08621222536055 ; - setAttr ".s" -type "double3" 1.0497207713808367 1.0497207713808354 -1.0497207713808354 ; + setAttr ".t" -type "double3" 0.84123625248686917 -1.2934842521415504 1.0591437062861191 ; + setAttr ".r" -type "double3" 177.1009830602743 -84.223472754416505 -177.08621222536055 ; + setAttr ".s" -type "double3" 1.0497207713808365 1.0497207713808354 -1.049720771380835 ; createNode nurbsCurve -n "foot_R0_crvShape" -p "foot_R0_crv"; - rename -uid "B5242A2C-4422-758B-9CDE-C6B6CA71D0A3"; + rename -uid "430A07DB-42B0-8221-07F6-98A3C6498E58"; setAttr -k off ".v"; setAttr -s 4 ".iog[0].og"; setAttr ".tw" yes; createNode nurbsCurve -n "foot_R0_crvShapeOrig" -p "foot_R0_crv"; - rename -uid "BE51C499-4515-D3EA-CD28-46B38F3A5E27"; + rename -uid "F0D0C716-468C-84D9-D6CC-82B81CA891B7"; setAttr -k off ".v"; setAttr ".io" yes; setAttr ".cc" -type "nurbsCurve" @@ -14452,10 +14348,10 @@ createNode nurbsCurve -n "foot_R0_crvShapeOrig" -p "foot_R0_crv"; 0 0 0 ; createNode transform -n "foot_R0_heel" -p "foot_R0_root"; - rename -uid "FEBBE305-485A-EE16-5629-6B90E8E79918"; + rename -uid "3991BDBE-452A-88AB-7557-A6AB4D83A76F"; addAttr -ci true -sn "isGearGuide" -ln "isGearGuide" -dv 1 -min 0 -max 1 -at "bool"; setAttr -k off -cb on ".v"; - setAttr ".t" -type "double3" -0.51442201408343358 -1.2883323665462258 -0.0019628851482433873 ; + setAttr ".t" -type "double3" -0.51442201408343335 -1.2883323665462258 -0.0019628851482431653 ; setAttr -k off -cb on ".tx"; setAttr -k off -cb on ".ty"; setAttr -k off -cb on ".tz"; @@ -14463,12 +14359,12 @@ createNode transform -n "foot_R0_heel" -p "foot_R0_root"; setAttr -k off -cb on ".ry"; setAttr -k off -cb on ".rz"; setAttr -cb on ".ro"; - setAttr ".s" -type "double3" 0.99999999999999922 1 1 ; + setAttr ".s" -type "double3" 0.99999999999999911 1 1.0000000000000004 ; setAttr -k off -cb on ".sx"; setAttr -k off -cb on ".sy"; setAttr -k off -cb on ".sz"; createNode nurbsCurve -n "foot_R0_heelShape" -p "foot_R0_heel"; - rename -uid "2C9CA606-47E9-3976-0412-CAB6E7642EBD"; + rename -uid "0FED76BA-447D-8106-CAF4-7AA592DC9175"; setAttr ".ihi" 0; setAttr -k off ".v"; setAttr ".ove" yes; @@ -14480,8 +14376,8 @@ createNode nurbsCurve -n "foot_R0_heelShape" -p "foot_R0_heel"; 0.25 0 0 -0.25 0 0 ; -createNode nurbsCurve -n "foot_R0_heel1Shape" -p "foot_R0_heel"; - rename -uid "B9BB4283-4E29-D490-7EF8-3FBCD99DA767"; +createNode nurbsCurve -n "foot_R0_heel4Shape" -p "foot_R0_heel"; + rename -uid "F69BDAC3-4BE4-52DD-D6F1-0DADD20DC1B0"; setAttr ".ihi" 0; setAttr -k off ".v"; setAttr ".ove" yes; @@ -14493,8 +14389,8 @@ createNode nurbsCurve -n "foot_R0_heel1Shape" -p "foot_R0_heel"; 0 0.25 0 0 -0.25 0 ; -createNode nurbsCurve -n "foot_R0_heel2Shape" -p "foot_R0_heel"; - rename -uid "365E4A79-498E-9EB3-EBE3-9180EE7A44DA"; +createNode nurbsCurve -n "foot_R0_heel5Shape" -p "foot_R0_heel"; + rename -uid "5C42B95D-41DA-D0B6-05A5-3DB81C7DB81D"; setAttr ".ihi" 0; setAttr -k off ".v"; setAttr ".ove" yes; @@ -14506,8 +14402,8 @@ createNode nurbsCurve -n "foot_R0_heel2Shape" -p "foot_R0_heel"; 0 0 0.25 0 0 -0.25 ; -createNode nurbsCurve -n "foot_R0_heel3Shape" -p "foot_R0_heel"; - rename -uid "B0EE7408-4CBF-B300-E9FF-75B3B5F6ADF9"; +createNode nurbsCurve -n "foot_R0_heel6Shape" -p "foot_R0_heel"; + rename -uid "79695443-4F0A-E370-5B4A-C5BDA22F21B7"; setAttr ".ihi" 0; setAttr -k off ".v"; setAttr ".ove" yes; @@ -14524,8 +14420,8 @@ createNode nurbsCurve -n "foot_R0_heel3Shape" -p "foot_R0_heel"; 0 -0.1875 0 -0.1875 0 0 ; -createNode nurbsCurve -n "foot_R0_heel3_0crvShape" -p "foot_R0_heel"; - rename -uid "C67B34B9-4EBE-FD9C-8DB7-4DA422A43424"; +createNode nurbsCurve -n "foot_R0_heel6_0crvShape" -p "foot_R0_heel"; + rename -uid "F3A974A4-48F5-5376-A58C-1B858A11B739"; setAttr ".ihi" 0; setAttr -k off ".v"; setAttr ".ove" yes; @@ -14542,8 +14438,8 @@ createNode nurbsCurve -n "foot_R0_heel3_0crvShape" -p "foot_R0_heel"; 0 0 -0.1875 -0.1875 0 0 ; -createNode nurbsCurve -n "foot_R0_heel3_1crvShape" -p "foot_R0_heel"; - rename -uid "B485D291-4C5A-7D29-3A09-C3A9FA6BB850"; +createNode nurbsCurve -n "foot_R0_heel6_1crvShape" -p "foot_R0_heel"; + rename -uid "8553C637-42B7-8939-869C-7A8A764839FF"; setAttr ".ihi" 0; setAttr -k off ".v"; setAttr ".ove" yes; @@ -14561,10 +14457,10 @@ createNode nurbsCurve -n "foot_R0_heel3_1crvShape" -p "foot_R0_heel"; 0 0 -0.1875 ; createNode transform -n "foot_R0_outpivot" -p "foot_R0_root"; - rename -uid "7C927E83-45BB-A4AC-2A49-A7AD7FE1FEEF"; + rename -uid "D3949A08-4689-25CB-75BD-988FCCABA4B7"; addAttr -ci true -sn "isGearGuide" -ln "isGearGuide" -dv 1 -min 0 -max 1 -at "bool"; setAttr -k off -cb on ".v"; - setAttr ".t" -type "double3" 1.3551807145991011 -1.2852474767223834 -0.5448357892327973 ; + setAttr ".t" -type "double3" 1.3551807145991006 -1.2852474767223834 -0.54483578923279752 ; setAttr -k off -cb on ".tx"; setAttr -k off -cb on ".ty"; setAttr -k off -cb on ".tz"; @@ -14572,12 +14468,12 @@ createNode transform -n "foot_R0_outpivot" -p "foot_R0_root"; setAttr -k off -cb on ".ry"; setAttr -k off -cb on ".rz"; setAttr -cb on ".ro"; - setAttr ".s" -type "double3" 0.99999999999999922 1 1 ; + setAttr ".s" -type "double3" 0.99999999999999911 1 1.0000000000000004 ; setAttr -k off -cb on ".sx"; setAttr -k off -cb on ".sy"; setAttr -k off -cb on ".sz"; createNode nurbsCurve -n "foot_R0_outpivotShape" -p "foot_R0_outpivot"; - rename -uid "B11CAED6-4903-2978-4DA3-758A93AE925C"; + rename -uid "4B462151-444B-A4E5-0DBD-B4A76F03E50B"; setAttr ".ihi" 0; setAttr -k off ".v"; setAttr ".ove" yes; @@ -14589,8 +14485,8 @@ createNode nurbsCurve -n "foot_R0_outpivotShape" -p "foot_R0_outpivot"; 0.25 0 0 -0.25 0 0 ; -createNode nurbsCurve -n "foot_R0_outpivot1Shape" -p "foot_R0_outpivot"; - rename -uid "AE5E578D-4400-C2F5-7CFB-F695F824FD04"; +createNode nurbsCurve -n "foot_R0_outpivot4Shape" -p "foot_R0_outpivot"; + rename -uid "7F7278E9-4966-43B2-F92F-90A773E3A036"; setAttr ".ihi" 0; setAttr -k off ".v"; setAttr ".ove" yes; @@ -14602,8 +14498,8 @@ createNode nurbsCurve -n "foot_R0_outpivot1Shape" -p "foot_R0_outpivot"; 0 0.25 0 0 -0.25 0 ; -createNode nurbsCurve -n "foot_R0_outpivot2Shape" -p "foot_R0_outpivot"; - rename -uid "9D3DA7FF-4270-80BF-EC3D-929E06027500"; +createNode nurbsCurve -n "foot_R0_outpivot5Shape" -p "foot_R0_outpivot"; + rename -uid "4DF6E19E-4EE7-3728-356A-0A9CE2D11536"; setAttr ".ihi" 0; setAttr -k off ".v"; setAttr ".ove" yes; @@ -14615,8 +14511,8 @@ createNode nurbsCurve -n "foot_R0_outpivot2Shape" -p "foot_R0_outpivot"; 0 0 0.25 0 0 -0.25 ; -createNode nurbsCurve -n "foot_R0_outpivot3Shape" -p "foot_R0_outpivot"; - rename -uid "E67452EF-4E5B-0D47-B519-A89FCE4E7F83"; +createNode nurbsCurve -n "foot_R0_outpivot6Shape" -p "foot_R0_outpivot"; + rename -uid "DAAA926E-4387-4FD6-D778-078879CCED82"; setAttr ".ihi" 0; setAttr -k off ".v"; setAttr ".ove" yes; @@ -14633,8 +14529,8 @@ createNode nurbsCurve -n "foot_R0_outpivot3Shape" -p "foot_R0_outpivot"; 0 -0.1875 0 -0.1875 0 0 ; -createNode nurbsCurve -n "foot_R0_outpivot3_0crvShape" -p "foot_R0_outpivot"; - rename -uid "B302F911-4C76-E517-C228-30B63F5314AA"; +createNode nurbsCurve -n "foot_R0_outpivot6_0crvShape" -p "foot_R0_outpivot"; + rename -uid "8BCF9C02-416E-72ED-0F97-89A983D4148B"; setAttr ".ihi" 0; setAttr -k off ".v"; setAttr ".ove" yes; @@ -14651,8 +14547,8 @@ createNode nurbsCurve -n "foot_R0_outpivot3_0crvShape" -p "foot_R0_outpivot"; 0 0 -0.1875 -0.1875 0 0 ; -createNode nurbsCurve -n "foot_R0_outpivot3_1crvShape" -p "foot_R0_outpivot"; - rename -uid "3F205C07-4DDD-0245-3BBE-7B958A334515"; +createNode nurbsCurve -n "foot_R0_outpivot6_1crvShape" -p "foot_R0_outpivot"; + rename -uid "FAC02D99-437E-5BDD-346B-EF9FF7EBAA36"; setAttr ".ihi" 0; setAttr -k off ".v"; setAttr ".ove" yes; @@ -14670,10 +14566,10 @@ createNode nurbsCurve -n "foot_R0_outpivot3_1crvShape" -p "foot_R0_outpivot"; 0 0 -0.1875 ; createNode transform -n "foot_R0_inpivot" -p "foot_R0_root"; - rename -uid "1A1EFBCA-486D-9C20-A215-7388D867D28D"; + rename -uid "0ADF1F26-4160-392F-8178-4483F1145626"; addAttr -ci true -sn "isGearGuide" -ln "isGearGuide" -dv 1 -min 0 -max 1 -at "bool"; setAttr -k off -cb on ".v"; - setAttr ".t" -type "double3" 1.3551807145990997 -1.2905939540073492 0.65234269833768588 ; + setAttr ".t" -type "double3" 1.3551807145990993 -1.2905939540073492 0.6523426983376861 ; setAttr -k off -cb on ".tx"; setAttr -k off -cb on ".ty"; setAttr -k off -cb on ".tz"; @@ -14681,12 +14577,12 @@ createNode transform -n "foot_R0_inpivot" -p "foot_R0_root"; setAttr -k off -cb on ".ry"; setAttr -k off -cb on ".rz"; setAttr -cb on ".ro"; - setAttr ".s" -type "double3" 0.99999999999999922 1 1 ; + setAttr ".s" -type "double3" 0.99999999999999911 1 1.0000000000000004 ; setAttr -k off -cb on ".sx"; setAttr -k off -cb on ".sy"; setAttr -k off -cb on ".sz"; createNode nurbsCurve -n "foot_R0_inpivotShape" -p "foot_R0_inpivot"; - rename -uid "79590ED2-410F-8AE3-51CE-C8B0DB7D3AC0"; + rename -uid "B1ECD9C5-47F9-00DF-D146-64BA1E275FBE"; setAttr ".ihi" 0; setAttr -k off ".v"; setAttr ".ove" yes; @@ -14698,8 +14594,8 @@ createNode nurbsCurve -n "foot_R0_inpivotShape" -p "foot_R0_inpivot"; 0.25 0 0 -0.25 0 0 ; -createNode nurbsCurve -n "foot_R0_inpivot1Shape" -p "foot_R0_inpivot"; - rename -uid "60FFD2F2-4DD1-1883-C3E5-9E8EDA24135D"; +createNode nurbsCurve -n "foot_R0_inpivot4Shape" -p "foot_R0_inpivot"; + rename -uid "E96F3F2F-44F6-36A0-A103-49B48BE4D4DE"; setAttr ".ihi" 0; setAttr -k off ".v"; setAttr ".ove" yes; @@ -14711,8 +14607,8 @@ createNode nurbsCurve -n "foot_R0_inpivot1Shape" -p "foot_R0_inpivot"; 0 0.25 0 0 -0.25 0 ; -createNode nurbsCurve -n "foot_R0_inpivot2Shape" -p "foot_R0_inpivot"; - rename -uid "65DD7E85-4A12-F8D4-E061-1CADFF0C3E07"; +createNode nurbsCurve -n "foot_R0_inpivot5Shape" -p "foot_R0_inpivot"; + rename -uid "61651EF3-431B-4A69-E0F2-D8897BDB1021"; setAttr ".ihi" 0; setAttr -k off ".v"; setAttr ".ove" yes; @@ -14724,8 +14620,8 @@ createNode nurbsCurve -n "foot_R0_inpivot2Shape" -p "foot_R0_inpivot"; 0 0 0.25 0 0 -0.25 ; -createNode nurbsCurve -n "foot_R0_inpivot3Shape" -p "foot_R0_inpivot"; - rename -uid "5B932B4A-4605-F909-D389-6BA113266463"; +createNode nurbsCurve -n "foot_R0_inpivot6Shape" -p "foot_R0_inpivot"; + rename -uid "67878FB5-40A6-6316-5B03-47BE3B2A31A0"; setAttr ".ihi" 0; setAttr -k off ".v"; setAttr ".ove" yes; @@ -14742,8 +14638,8 @@ createNode nurbsCurve -n "foot_R0_inpivot3Shape" -p "foot_R0_inpivot"; 0 -0.1875 0 -0.1875 0 0 ; -createNode nurbsCurve -n "foot_R0_inpivot3_0crvShape" -p "foot_R0_inpivot"; - rename -uid "8FE09C94-4077-E114-9234-96A0E936EB27"; +createNode nurbsCurve -n "foot_R0_inpivot6_0crvShape" -p "foot_R0_inpivot"; + rename -uid "95229D44-4C65-FC39-181E-7387B6CC2F80"; setAttr ".ihi" 0; setAttr -k off ".v"; setAttr ".ove" yes; @@ -14760,8 +14656,8 @@ createNode nurbsCurve -n "foot_R0_inpivot3_0crvShape" -p "foot_R0_inpivot"; 0 0 -0.1875 -0.1875 0 0 ; -createNode nurbsCurve -n "foot_R0_inpivot3_1crvShape" -p "foot_R0_inpivot"; - rename -uid "64F431CE-4A1E-45ED-BD1E-37A87CD888A0"; +createNode nurbsCurve -n "foot_R0_inpivot6_1crvShape" -p "foot_R0_inpivot"; + rename -uid "B3E91446-413E-EF7A-1F43-1DB8009D39D8"; setAttr ".ihi" 0; setAttr -k off ".v"; setAttr ".ove" yes; @@ -14779,19 +14675,19 @@ createNode nurbsCurve -n "foot_R0_inpivot3_1crvShape" -p "foot_R0_inpivot"; 0 0 -0.1875 ; createNode transform -n "foot_R0_1" -p "foot_R0_root"; - rename -uid "94291B69-49FA-0E04-4391-4E94C97DC09B"; + rename -uid "F9221D09-4E19-8EFF-5B2B-6FBF476AF05E"; setAttr ".ovdt" 1; setAttr ".ove" yes; - setAttr ".t" -type "double3" 0.8412362524868694 -1.2934842521415504 1.0591437062861189 ; - setAttr ".r" -type "double3" 177.10098306027425 -84.223472754416505 -177.08621222536055 ; - setAttr ".s" -type "double3" 1.0497207713808367 1.0497207713808354 -1.0497207713808354 ; + setAttr ".t" -type "double3" 0.84123625248686917 -1.2934842521415504 1.0591437062861191 ; + setAttr ".r" -type "double3" 177.1009830602743 -84.223472754416505 -177.08621222536055 ; + setAttr ".s" -type "double3" 1.0497207713808365 1.0497207713808354 -1.049720771380835 ; createNode nurbsCurve -n "foot_R0_Shape1" -p "foot_R0_1"; - rename -uid "8C13C95D-496C-A22D-8F10-AF89006DE0B8"; + rename -uid "7799FFF4-482A-ABEF-3877-11840F072704"; setAttr -k off ".v"; setAttr -s 4 ".iog[0].og"; setAttr ".tw" yes; createNode nurbsCurve -n "foot_R0_Shape1Orig" -p "foot_R0_1"; - rename -uid "1C8CA5CC-4E3D-9965-4934-A396646D44FD"; + rename -uid "C747E92B-45D1-27A4-8CC7-7EAD07D3E8A3"; setAttr -k off ".v"; setAttr ".io" yes; setAttr ".cc" -type "nurbsCurve" @@ -14805,7 +14701,7 @@ createNode nurbsCurve -n "foot_R0_Shape1Orig" -p "foot_R0_1"; 0 0 0 ; createNode transform -n "legUI_R0_root" -p "foot_R0_root"; - rename -uid "448E5974-4452-AE2B-3D1C-B4AABA0EF0F8"; + rename -uid "B6A1BA3D-4F84-C45D-176E-BF9F89277509"; addAttr -ci true -sn "isGearGuide" -ln "isGearGuide" -dv 1 -min 0 -max 1 -at "bool"; addAttr -ci true -sn "comp_type" -ln "comp_type" -dt "string"; addAttr -ci true -sn "comp_name" -ln "comp_name" -dt "string"; @@ -14829,12 +14725,14 @@ createNode transform -n "legUI_R0_root" -p "foot_R0_root"; addAttr -ci true -sn "k_sy" -ln "k_sy" -min 0 -max 1 -at "bool"; addAttr -ci true -sn "k_sz" -ln "k_sz" -min 0 -max 1 -at "bool"; addAttr -ci true -sn "default_rotorder" -ln "default_rotorder" -min 0 -max 5 -at "long"; - addAttr -ci true -sn "neutralRotation" -ln "neutralRotation" -min 0 -max 1 -at "bool"; - addAttr -ci true -sn "ctlSize" -ln "ctlSize" -at "double"; + addAttr -ci true -sn "neutralRotation" -ln "neutralRotation" -dv 1 -min 0 -max 1 + -at "bool"; + addAttr -ci true -sn "mirrorBehaviour" -ln "mirrorBehaviour" -min 0 -max 1 -at "bool"; + addAttr -ci true -sn "ctlSize" -ln "ctlSize" -dv 1 -at "double"; addAttr -ci true -sn "useIndex" -ln "useIndex" -min 0 -max 1 -at "bool"; - addAttr -ci true -sn "parentJointIndex" -ln "parentJointIndex" -at "long"; + addAttr -ci true -sn "parentJointIndex" -ln "parentJointIndex" -dv -1 -at "long"; setAttr -k off -cb on ".v"; - setAttr ".t" -type "double3" 0.59908552650329583 0.51029795172993597 -1.4395512694570034 ; + setAttr ".t" -type "double3" 0.59908552650329572 0.51029795172993597 -1.4395512694570041 ; setAttr -k off -cb on ".tx"; setAttr -k off -cb on ".ty"; setAttr -k off -cb on ".tz"; @@ -14843,7 +14741,7 @@ createNode transform -n "legUI_R0_root" -p "foot_R0_root"; setAttr -k off -cb on ".ry"; setAttr -k off -cb on ".rz"; setAttr -cb on ".ro"; - setAttr ".s" -type "double3" 1.0000000000000009 1 0.999999999999998 ; + setAttr ".s" -type "double3" 1.0000000000000009 1 0.99999999999999778 ; setAttr -k off -cb on ".sx"; setAttr -k off -cb on ".sy"; setAttr -k off -cb on ".sz"; @@ -14855,11 +14753,8 @@ createNode transform -n "legUI_R0_root" -p "foot_R0_root"; setAttr ".ctlGrp" -type "string" ""; setAttr ".icon" -type "string" "cross"; setAttr ".ikrefarray" -type "string" ""; - setAttr ".neutralRotation" yes; - setAttr ".ctlSize" 1; - setAttr ".parentJointIndex" -1; createNode nurbsCurve -n "legUI_R0_rootShape" -p "legUI_R0_root"; - rename -uid "E93ADB80-4359-6320-F03B-3AACAC06CB2D"; + rename -uid "0730A00A-48AE-FF7D-00F7-70BDA4B86BFC"; setAttr ".ihi" 0; setAttr -k off ".v"; setAttr ".ove" yes; @@ -14871,8 +14766,8 @@ createNode nurbsCurve -n "legUI_R0_rootShape" -p "legUI_R0_root"; 0.25 0 0 -0.25 0 0 ; -createNode nurbsCurve -n "legUI_R0_root1Shape" -p "legUI_R0_root"; - rename -uid "3DEE63A5-4A9F-B1CB-591E-69AD7530105F"; +createNode nurbsCurve -n "legUI_R0_root4Shape" -p "legUI_R0_root"; + rename -uid "E5816228-4B7C-048F-ECDE-FEA87DAA0348"; setAttr ".ihi" 0; setAttr -k off ".v"; setAttr ".ove" yes; @@ -14884,8 +14779,8 @@ createNode nurbsCurve -n "legUI_R0_root1Shape" -p "legUI_R0_root"; 0 0.25 0 0 -0.25 0 ; -createNode nurbsCurve -n "legUI_R0_root2Shape" -p "legUI_R0_root"; - rename -uid "261E111E-4883-6299-AB28-C5A09672C48F"; +createNode nurbsCurve -n "legUI_R0_root5Shape" -p "legUI_R0_root"; + rename -uid "5A30FFB7-4908-F874-ABAC-DDAA99E837F3"; setAttr ".ihi" 0; setAttr -k off ".v"; setAttr ".ove" yes; @@ -14897,8 +14792,8 @@ createNode nurbsCurve -n "legUI_R0_root2Shape" -p "legUI_R0_root"; 0 0 0.25 0 0 -0.25 ; -createNode nurbsCurve -n "legUI_R0_root3Shape" -p "legUI_R0_root"; - rename -uid "F344CF27-4CD8-A546-C767-8681537B8D88"; +createNode nurbsCurve -n "legUI_R0_root6Shape" -p "legUI_R0_root"; + rename -uid "F0766BC1-44E6-2187-9E66-9EBAF584BEBD"; setAttr ".ihi" 0; setAttr -k off ".v"; setAttr ".ove" yes; @@ -14925,14 +14820,14 @@ createNode nurbsCurve -n "legUI_R0_root3Shape" -p "legUI_R0_root"; -0.125 -0.125 -0.125 ; createNode transform -n "legUI_R0_sizeRef" -p "legUI_R0_root"; - rename -uid "1F0CC778-43A5-B5DE-5003-25A2FB6292A1"; + rename -uid "E36D6DB5-4661-F097-832B-3D859469B186"; addAttr -ci true -sn "isGearGuide" -ln "isGearGuide" -dv 1 -min 0 -max 1 -at "bool"; setAttr -k off -cb on ".v"; - setAttr ".t" -type "double3" -0.10551782846565105 -4.4408920985006262e-016 1.0444039858906486 ; + setAttr ".t" -type "double3" -0.1055178284656515 -2.2204460492503131e-016 1.0444039858906486 ; setAttr -k off -cb on ".tx"; setAttr -k off -cb on ".ty"; setAttr -k off -cb on ".tz"; - setAttr ".r" -type "double3" -0.029616667963955585 -5.7690337251490096 0.29463615418733258 ; + setAttr ".r" -type "double3" -0.029616667963955585 -5.7690337251490096 0.29463615418734485 ; setAttr -k off -cb on ".rx"; setAttr -k off -cb on ".ry"; setAttr -k off -cb on ".rz"; @@ -14942,19 +14837,19 @@ createNode transform -n "legUI_R0_sizeRef" -p "legUI_R0_root"; setAttr -k off -cb on ".sy"; setAttr -k off -cb on ".sz"; createNode transform -n "leg_R0_crv" -p "leg_R0_root"; - rename -uid "D1BEBCFF-4907-1F0E-68AA-4AA1C2AEF90F"; + rename -uid "2C44ADB9-4C1E-18B4-F19F-ADAFA4CDB87E"; setAttr ".ovdt" 1; setAttr ".ove" yes; - setAttr ".t" -type "double3" -10.214166852209232 0.19144303592045842 0.96902196420373343 ; + setAttr ".t" -type "double3" -10.214166852209233 0.19144303592045839 0.96902196420373365 ; setAttr ".r" -type "double3" 90 -89.706856137729801 -179.99999999999815 ; - setAttr ".s" -type "double3" 1.0495082267377405 1.0495082267377376 -1.0495082267377409 ; + setAttr ".s" -type "double3" 1.0495082267377405 1.0495082267377378 -1.0495082267377407 ; createNode nurbsCurve -n "leg_R0_crvShape" -p "leg_R0_crv"; - rename -uid "736A4E80-4CDD-A787-20E9-5994DB9F0C3C"; + rename -uid "23638CBD-4C7E-6A12-3A87-2CA2495BFCB4"; setAttr -k off ".v"; setAttr -s 4 ".iog[0].og"; setAttr ".tw" yes; createNode nurbsCurve -n "leg_R0_crvShapeOrig" -p "leg_R0_crv"; - rename -uid "26C67394-444A-BFA4-D346-598B732EA618"; + rename -uid "E3FF2F23-4490-C1DD-CEE8-DFB01946E39E"; setAttr -k off ".v"; setAttr ".io" yes; setAttr ".cc" -type "nurbsCurve" @@ -14966,981 +14861,1078 @@ createNode nurbsCurve -n "leg_R0_crvShapeOrig" -p "leg_R0_crv"; 0 0 0 0 0 0 ; -createNode animCurveUU -n "spine_C0_root_st_profile1"; - rename -uid "1C375BB6-4B5C-9323-FC8E-8EADEC371827"; +createNode lightLinker -s -n "lightLinker1"; + rename -uid "E93B7F2B-4182-4655-73A4-31956CE931F8"; + setAttr -s 2 ".lnk"; + setAttr -s 2 ".slnk"; +createNode shapeEditorManager -n "shapeEditorManager"; + rename -uid "D463EFA9-41CF-7A30-AEBF-959FF840F298"; +createNode poseInterpolatorManager -n "poseInterpolatorManager"; + rename -uid "72FCE104-4D89-DD3A-EDC5-12AB4F97F675"; +createNode displayLayerManager -n "layerManager"; + rename -uid "3474FF24-4C39-B59D-18D5-A6BAB78F10E1"; +createNode displayLayer -n "defaultLayer"; + rename -uid "273B9BD5-4D88-1B5C-4F57-11BF27B01E55"; +createNode renderLayerManager -n "renderLayerManager"; + rename -uid "241A89AA-45BE-799F-24D0-A4AD59163B33"; +createNode renderLayer -n "defaultRenderLayer"; + rename -uid "2AA7D889-4DAD-320F-7FA9-0D8BACEC1D23"; + setAttr ".g" yes; +createNode animCurveUU -n "spine_C0_root_st_profile"; + rename -uid "AE390B45-44BA-56AD-10BF-DCBE7E6810B2"; setAttr ".tan" 18; setAttr ".wgt" no; setAttr -s 3 ".ktv[0:2]" 0 0 0.5 -1 1 0; -createNode animCurveUU -n "spine_C0_root_sq_profile1"; - rename -uid "DF48412F-47E4-14DD-40F1-3FB80B9B0E0B"; +createNode animCurveUU -n "spine_C0_root_sq_profile"; + rename -uid "632EAF81-414C-D806-C45A-2E9D276885D9"; setAttr ".tan" 18; setAttr ".wgt" no; setAttr -s 3 ".ktv[0:2]" 0 0 0.5 1 1 0; -createNode animCurveUU -n "arm_L0_root_st_profile1"; - rename -uid "71DAF6BC-4774-A2D8-14EA-A3BEB38EAEBC"; - setAttr ".tan" 18; - setAttr ".wgt" no; - setAttr -s 3 ".ktv[0:2]" 0 0 0.5 -0.5 1 0; -createNode animCurveUU -n "arm_L0_root_sq_profile1"; - rename -uid "D6F8FB05-4D40-C318-6610-F4B34BE4EE25"; - setAttr ".tan" 18; - setAttr ".wgt" no; - setAttr -s 3 ".ktv[0:2]" 0 0 0.5 0.5 1 0; -createNode unitConversion -n "unitConversion134"; - rename -uid "632D3490-4E4A-951C-F26D-9A9D4808FFE8"; +createNode unitConversion -n "unitConversion148"; + rename -uid "7EC11F4E-4C7A-130A-2C64-C4BBBD99C7A1"; setAttr ".cf" 0.017453292519943295; -createNode mgear_curveCns -n "mgear_curveCns415"; - rename -uid "BEFCFBB6-4A63-A948-2D28-54B0ED9A42F6"; - setAttr -s 4 ".inputs"; -createNode objectSet -n "mgear_curveCns415Set"; - rename -uid "C6E5AFC2-4F54-9447-2110-6DA1E80A95F2"; +createNode mgear_curveCns -n "mgear_curveCns451"; + rename -uid "2127668B-4C22-D9AD-253A-76B78AF64FED"; + setAttr -s 2 ".inputs"; +createNode tweak -n "tweak599"; + rename -uid "CB1CB3E6-4C14-CF68-316B-0E8B7C3E2D9C"; +createNode objectSet -n "mgear_curveCns451Set"; + rename -uid "91190971-4476-CD58-54AA-69866D80DD00"; setAttr ".ihi" 0; setAttr ".vo" yes; -createNode groupId -n "mgear_curveCns415GroupId"; - rename -uid "E57212BB-45B7-4D78-F6C5-4D80B715C5F7"; +createNode groupId -n "mgear_curveCns451GroupId"; + rename -uid "3711B6F5-485D-B278-64A5-CA9C7A6AD2EC"; setAttr ".ihi" 0; -createNode groupParts -n "mgear_curveCns415GroupParts"; - rename -uid "5375566E-4162-D716-35DB-F698C624B1C8"; +createNode groupParts -n "mgear_curveCns451GroupParts"; + rename -uid "79E0EC20-4773-8C97-60CE-77935145A077"; setAttr ".ihi" 0; setAttr ".ic" -type "componentList" 1 "cv[*]"; -createNode tweak -n "tweak563"; - rename -uid "CB6B71B4-406D-B708-D390-5198E221FBDE"; -createNode objectSet -n "tweakSet563"; - rename -uid "F6CBAD34-4E48-5AA7-B5B4-E197C2A57FCB"; +createNode objectSet -n "tweakSet599"; + rename -uid "1281F6F8-4BBA-B4F7-1BE0-9082EEE0DC1B"; setAttr ".ihi" 0; setAttr ".vo" yes; -createNode groupId -n "groupId8695"; - rename -uid "06E0CBC8-45D2-1EBA-0B80-0086F13D40F9"; +createNode groupId -n "groupId8767"; + rename -uid "28EDE5E5-410D-FEFC-7BC4-6A8AB760501F"; setAttr ".ihi" 0; -createNode groupParts -n "groupParts1126"; - rename -uid "87A6458B-4554-E555-2192-94B1AD94AADF"; +createNode groupParts -n "groupParts1198"; + rename -uid "E0AC32DC-4345-A14A-6CAF-9F84818CAFF2"; setAttr ".ihi" 0; setAttr ".ic" -type "componentList" 1 "cv[*]"; -createNode unitConversion -n "unitConversion135"; - rename -uid "9E75BC36-4DF1-5B34-2619-70AA667DE448"; +createNode unitConversion -n "unitConversion149"; + rename -uid "0AE3CEE6-4A4B-B865-BD43-9B8D64F40155"; setAttr ".cf" 0.017453292519943295; -createNode mgear_curveCns -n "mgear_curveCns416"; - rename -uid "85BDED8E-4C70-7C48-28D8-0EA7D5C00BFD"; - setAttr -s 4 ".inputs"; -createNode objectSet -n "mgear_curveCns416Set"; - rename -uid "8E054827-4102-1BA2-9E67-09A56CA81621"; +createNode mgear_curveCns -n "mgear_curveCns452"; + rename -uid "DC51E475-4F7B-31D8-D62E-CA9642157C59"; + setAttr -s 2 ".inputs"; +createNode tweak -n "tweak600"; + rename -uid "1485F214-4ACA-2AA7-CFEE-FAAF8AEF9541"; +createNode objectSet -n "mgear_curveCns452Set"; + rename -uid "ABA3B672-4426-C320-9B89-9C96BAA0B3F9"; setAttr ".ihi" 0; setAttr ".vo" yes; -createNode groupId -n "mgear_curveCns416GroupId"; - rename -uid "767B48B2-420E-FBD4-67C4-52BB6567C94E"; +createNode groupId -n "mgear_curveCns452GroupId"; + rename -uid "4AD73B69-4538-14B9-F9AA-8CA138EF5740"; setAttr ".ihi" 0; -createNode groupParts -n "mgear_curveCns416GroupParts"; - rename -uid "762C6E15-4243-95F2-77B3-DDA4515ED74A"; +createNode groupParts -n "mgear_curveCns452GroupParts"; + rename -uid "891D9EA2-46CA-876E-6EBC-CABB68430CB2"; setAttr ".ihi" 0; setAttr ".ic" -type "componentList" 1 "cv[*]"; -createNode tweak -n "tweak564"; - rename -uid "36A8B594-4FB8-8C76-042A-5FB45C007152"; -createNode objectSet -n "tweakSet564"; - rename -uid "390318EC-4EA4-4DF4-F277-2B930C1A67AC"; +createNode objectSet -n "tweakSet600"; + rename -uid "595D1665-46CE-3E03-268B-32BF5BA4CE94"; setAttr ".ihi" 0; setAttr ".vo" yes; -createNode groupId -n "groupId8697"; - rename -uid "B0C2ECA3-4BB4-3BB6-0E34-BD9829625BB2"; +createNode groupId -n "groupId8769"; + rename -uid "62053CB1-4F44-541E-3F42-7FADEA39B5EE"; setAttr ".ihi" 0; -createNode groupParts -n "groupParts1128"; - rename -uid "964A3D2A-4278-5005-D875-23A718FFF443"; +createNode groupParts -n "groupParts1200"; + rename -uid "08253CCA-42B5-76C1-CA66-24B1ECFBF522"; setAttr ".ihi" 0; setAttr ".ic" -type "componentList" 1 "cv[*]"; -createNode unitConversion -n "unitConversion136"; - rename -uid "69C17C04-4B1F-9382-8F89-DF97EAD43BF0"; - setAttr ".cf" 0.017453292519943295; -createNode mgear_curveCns -n "mgear_curveCns417"; - rename -uid "0D5A0CB1-41EA-52D7-AA2B-C7AC1C9A000D"; +createNode animCurveUU -n "arm_L0_root_st_profile"; + rename -uid "9CAF819C-4ECC-37DE-59F0-B48F4E30CCC8"; + setAttr ".tan" 18; + setAttr ".wgt" no; + setAttr -s 3 ".ktv[0:2]" 0 0 0.5 -0.5 1 0; +createNode animCurveUU -n "arm_L0_root_sq_profile"; + rename -uid "D20A66CF-400A-6213-FC04-189E15B9761B"; + setAttr ".tan" 18; + setAttr ".wgt" no; + setAttr -s 3 ".ktv[0:2]" 0 0 0.5 0.5 1 0; +createNode mgear_curveCns -n "mgear_curveCns453"; + rename -uid "93E766E5-483C-45FB-AB10-638C4E21475D"; setAttr -s 4 ".inputs"; -createNode objectSet -n "mgear_curveCns417Set"; - rename -uid "711E8ABE-41C3-1876-C465-B3ACF6DCED6E"; +createNode tweak -n "tweak601"; + rename -uid "8D47EFAA-4FBC-7A9C-8454-01BE382AD7F6"; +createNode objectSet -n "mgear_curveCns453Set"; + rename -uid "7E8E55A1-460A-96C8-0DC4-6AAA5524837D"; setAttr ".ihi" 0; setAttr ".vo" yes; -createNode groupId -n "mgear_curveCns417GroupId"; - rename -uid "28ADB55B-4DEE-2DFD-EFC0-DC841D375453"; +createNode groupId -n "mgear_curveCns453GroupId"; + rename -uid "385C7A71-4488-5D6E-92A5-9EBA812F0E07"; setAttr ".ihi" 0; -createNode groupParts -n "mgear_curveCns417GroupParts"; - rename -uid "399E5368-4DF7-7448-0B18-98B016065BE6"; +createNode groupParts -n "mgear_curveCns453GroupParts"; + rename -uid "84C57C03-4811-8015-2868-9C8D9FD53B62"; setAttr ".ihi" 0; setAttr ".ic" -type "componentList" 1 "cv[*]"; -createNode tweak -n "tweak565"; - rename -uid "004699EF-471C-D9FC-AACD-969EA064A857"; -createNode objectSet -n "tweakSet565"; - rename -uid "46AA46AA-451A-4901-70C8-C2A2ED97D965"; +createNode objectSet -n "tweakSet601"; + rename -uid "80149292-4FBB-AC84-8400-95A1732A072C"; setAttr ".ihi" 0; setAttr ".vo" yes; -createNode groupId -n "groupId8699"; - rename -uid "0657C16D-47DA-9719-707F-3A97B826CAFB"; +createNode groupId -n "groupId8771"; + rename -uid "71DAE1EE-4360-0BFD-8955-4397C1222714"; setAttr ".ihi" 0; -createNode groupParts -n "groupParts1130"; - rename -uid "7B65D516-43A3-1DE9-1220-91B235BC82B3"; +createNode groupParts -n "groupParts1202"; + rename -uid "069C92DE-4C6A-3328-0539-68B3BA38C5DA"; setAttr ".ihi" 0; setAttr ".ic" -type "componentList" 1 "cv[*]"; -createNode unitConversion -n "unitConversion133"; - rename -uid "8DEC9DCD-469E-5D37-DC4D-678BA848044D"; +createNode unitConversion -n "unitConversion150"; + rename -uid "231DAEFE-431A-400E-B3BB-749ACDB3DEDE"; setAttr ".cf" 0.017453292519943295; -createNode mgear_curveCns -n "mgear_curveCns414"; - rename -uid "7A4A35B1-4552-3F29-8E7D-D6AC44BBAC47"; +createNode mgear_curveCns -n "mgear_curveCns454"; + rename -uid "3337B501-409A-628C-3BE4-A2BF7AC33813"; setAttr -s 4 ".inputs"; -createNode objectSet -n "mgear_curveCns414Set"; - rename -uid "15C55C78-48AC-E926-CF47-5ABD92C36183"; +createNode tweak -n "tweak602"; + rename -uid "1F69B8D2-450D-9774-6879-C981015C2EF6"; +createNode objectSet -n "mgear_curveCns454Set"; + rename -uid "617AF949-4DD1-1165-0247-C1979250A424"; setAttr ".ihi" 0; setAttr ".vo" yes; -createNode groupId -n "mgear_curveCns414GroupId"; - rename -uid "632E3846-4013-15C1-CB20-F0B20A506420"; +createNode groupId -n "mgear_curveCns454GroupId"; + rename -uid "FE396ECA-4C74-2C0F-9BA6-3DB4F19531AC"; setAttr ".ihi" 0; -createNode groupParts -n "mgear_curveCns414GroupParts"; - rename -uid "799630A2-4B31-57A1-5E25-B7886B0ADBC2"; +createNode groupParts -n "mgear_curveCns454GroupParts"; + rename -uid "58A874A1-44D6-E56A-BE8C-3A943CC47DA9"; setAttr ".ihi" 0; setAttr ".ic" -type "componentList" 1 "cv[*]"; -createNode tweak -n "tweak562"; - rename -uid "44472A0A-4B08-EF60-9752-4B89FA7C3F3A"; -createNode objectSet -n "tweakSet562"; - rename -uid "B611AB71-4430-8C2F-79CA-7A9F0C3AFD2C"; +createNode objectSet -n "tweakSet602"; + rename -uid "0441E7BC-4D3B-A74B-601E-7C9F96823479"; setAttr ".ihi" 0; setAttr ".vo" yes; -createNode groupId -n "groupId8693"; - rename -uid "D1910CB3-4058-4D6E-3C8F-509DD59B7F79"; +createNode groupId -n "groupId8773"; + rename -uid "9B1646C0-49C8-BABA-7207-9193DD8DF746"; setAttr ".ihi" 0; -createNode groupParts -n "groupParts1124"; - rename -uid "24D0C828-402B-5C75-EA9D-1C9578D16FE5"; +createNode groupParts -n "groupParts1204"; + rename -uid "E57BD2BD-4AEA-3C98-2DE4-009681545A5D"; setAttr ".ihi" 0; setAttr ".ic" -type "componentList" 1 "cv[*]"; -createNode unitConversion -n "unitConversion137"; - rename -uid "3AE3D66D-4AB9-2001-6742-4CB097DC8E2A"; +createNode unitConversion -n "unitConversion151"; + rename -uid "3858583B-44B1-965C-EB86-59B97D35D806"; setAttr ".cf" 0.017453292519943295; -createNode mgear_curveCns -n "mgear_curveCns418"; - rename -uid "139932BC-4B00-3F13-D881-378EB9BC4D04"; +createNode mgear_curveCns -n "mgear_curveCns455"; + rename -uid "F2C6F76F-4D9A-6BAA-4E24-54AFCEE2E5BB"; setAttr -s 4 ".inputs"; -createNode objectSet -n "mgear_curveCns418Set"; - rename -uid "1B0CA033-4964-6BCB-B476-9985F9C8A9B4"; +createNode tweak -n "tweak603"; + rename -uid "65447CE5-4A6E-ECDD-9AB5-BEA0FADFB3AA"; +createNode objectSet -n "mgear_curveCns455Set"; + rename -uid "EEC3D671-4F0E-01E7-EFF4-0C9DBCB16F1D"; setAttr ".ihi" 0; setAttr ".vo" yes; -createNode groupId -n "mgear_curveCns418GroupId"; - rename -uid "0D44B01A-49BF-EFD5-BE7B-E89C99037E15"; +createNode groupId -n "mgear_curveCns455GroupId"; + rename -uid "EEE4256E-41E8-12AF-0650-F49386F82AD1"; setAttr ".ihi" 0; -createNode groupParts -n "mgear_curveCns418GroupParts"; - rename -uid "087CA585-4D32-3F2B-C11A-DCBCF3EC734E"; +createNode groupParts -n "mgear_curveCns455GroupParts"; + rename -uid "914F4A53-4DC9-0389-944F-D49DE81DC51B"; setAttr ".ihi" 0; setAttr ".ic" -type "componentList" 1 "cv[*]"; -createNode tweak -n "tweak566"; - rename -uid "C5AA12AC-4D4A-5CA4-F361-5E88CE53074E"; -createNode objectSet -n "tweakSet566"; - rename -uid "262E27E2-404F-E0A4-241F-5E841CEACE0B"; +createNode objectSet -n "tweakSet603"; + rename -uid "8C9EE0D2-4548-FFAE-121F-7A9993B4E2DD"; setAttr ".ihi" 0; setAttr ".vo" yes; -createNode groupId -n "groupId8701"; - rename -uid "CFEE3D5F-448D-3A79-974C-B28279666365"; +createNode groupId -n "groupId8775"; + rename -uid "CE4FC7DD-4566-1FE4-2A0E-D08FA85C3BB1"; setAttr ".ihi" 0; -createNode groupParts -n "groupParts1132"; - rename -uid "45E7FE2B-429A-E29E-605A-E7B896155217"; +createNode groupParts -n "groupParts1206"; + rename -uid "B0A83B8C-4EB7-31B1-16CE-CDA050B67D79"; setAttr ".ihi" 0; setAttr ".ic" -type "componentList" 1 "cv[*]"; -createNode unitConversion -n "unitConversion138"; - rename -uid "D95D91E1-48D2-F7B9-E7F6-FDB09254EB45"; +createNode unitConversion -n "unitConversion152"; + rename -uid "10621F09-46E9-9638-EE55-7CB52A6C43E5"; setAttr ".cf" 0.017453292519943295; -createNode mgear_curveCns -n "mgear_curveCns419"; - rename -uid "D60703EA-4B9E-902B-8A56-C397B15B9A89"; +createNode mgear_curveCns -n "mgear_curveCns456"; + rename -uid "0065608D-4415-C742-A57D-B5B18CE339DF"; setAttr -s 4 ".inputs"; -createNode objectSet -n "mgear_curveCns419Set"; - rename -uid "2E5927DF-4DE7-7163-A621-15AB86B74476"; +createNode tweak -n "tweak604"; + rename -uid "79C924F5-47D1-4A0E-6188-A0BCD65D9879"; +createNode objectSet -n "mgear_curveCns456Set"; + rename -uid "D0DD5625-4D89-8F47-6723-72AA82CB9A72"; setAttr ".ihi" 0; setAttr ".vo" yes; -createNode groupId -n "mgear_curveCns419GroupId"; - rename -uid "F34988E5-4B12-2A34-86E7-318F22C6BD7B"; +createNode groupId -n "mgear_curveCns456GroupId"; + rename -uid "62F42DB3-4A48-311F-C40C-8B921E0B1EB4"; setAttr ".ihi" 0; -createNode groupParts -n "mgear_curveCns419GroupParts"; - rename -uid "10530789-463F-2584-9F63-339D18F5E10A"; +createNode groupParts -n "mgear_curveCns456GroupParts"; + rename -uid "F579346B-411C-D3F6-A01F-B5B6484BCAE5"; setAttr ".ihi" 0; setAttr ".ic" -type "componentList" 1 "cv[*]"; -createNode tweak -n "tweak567"; - rename -uid "5BF9E88E-4EB0-C6B8-7BD5-9991728F02BB"; -createNode objectSet -n "tweakSet567"; - rename -uid "B118E5A4-4F03-B5D4-1DDC-759912323837"; +createNode objectSet -n "tweakSet604"; + rename -uid "8280B28B-4249-B7FB-F65B-86BC614A47D7"; setAttr ".ihi" 0; setAttr ".vo" yes; -createNode groupId -n "groupId8703"; - rename -uid "4112B7A1-40DF-6E64-3211-AFB0E870E0CE"; +createNode groupId -n "groupId8777"; + rename -uid "6D921188-407E-4934-493E-49974817B35D"; setAttr ".ihi" 0; -createNode groupParts -n "groupParts1134"; - rename -uid "C40D5442-4DC3-724E-75A3-D18BDA0BF575"; +createNode groupParts -n "groupParts1208"; + rename -uid "5D471672-4667-5B01-F8DF-338E20A17181"; setAttr ".ihi" 0; setAttr ".ic" -type "componentList" 1 "cv[*]"; -createNode mgear_curveCns -n "mgear_curveCns413"; - rename -uid "D18598B3-410D-8719-FF98-ECA32C20F174"; +createNode unitConversion -n "unitConversion153"; + rename -uid "F1033AF7-49B1-142F-2493-A18C42B7770B"; + setAttr ".cf" 0.017453292519943295; +createNode mgear_curveCns -n "mgear_curveCns457"; + rename -uid "B7BF2B6C-4A31-4E58-B462-15B584818690"; setAttr -s 4 ".inputs"; -createNode objectSet -n "mgear_curveCns413Set"; - rename -uid "31BB82A8-46AD-C7B2-E616-EF99017CD06D"; +createNode tweak -n "tweak605"; + rename -uid "01DAF145-4579-9A06-8C55-F998EBF72005"; +createNode objectSet -n "mgear_curveCns457Set"; + rename -uid "8FB14802-4CBE-1B28-B72A-749594929604"; setAttr ".ihi" 0; setAttr ".vo" yes; -createNode groupId -n "mgear_curveCns413GroupId"; - rename -uid "D95C2E4D-4BEA-F136-4586-73AEE6822240"; +createNode groupId -n "mgear_curveCns457GroupId"; + rename -uid "91EF8BA0-4813-EBAD-D8D6-828725D8B43A"; setAttr ".ihi" 0; -createNode groupParts -n "mgear_curveCns413GroupParts"; - rename -uid "2BE1656F-4988-0598-D694-E0BDC89733A1"; +createNode groupParts -n "mgear_curveCns457GroupParts"; + rename -uid "6723A0BA-4953-20D6-463A-DC822E3DBBDF"; setAttr ".ihi" 0; setAttr ".ic" -type "componentList" 1 "cv[*]"; -createNode tweak -n "tweak561"; - rename -uid "1BC13DDF-45EF-3324-40FE-FB8582915AA6"; -createNode objectSet -n "tweakSet561"; - rename -uid "52FA9EA1-46C3-ACDC-7D68-0096802E7262"; +createNode objectSet -n "tweakSet605"; + rename -uid "48CDCAFB-4367-7F1D-42B4-1189A01B6F12"; setAttr ".ihi" 0; setAttr ".vo" yes; -createNode groupId -n "groupId8691"; - rename -uid "339A60D9-4E00-454E-8D18-48B88217BEF6"; +createNode groupId -n "groupId8779"; + rename -uid "31B4E5FC-4A07-E030-C330-BCB9B3134838"; setAttr ".ihi" 0; -createNode groupParts -n "groupParts1122"; - rename -uid "DD284309-4F5F-1F39-B590-FB9B13C3BA51"; +createNode groupParts -n "groupParts1210"; + rename -uid "1AEBC5E8-4D16-ACDF-8AA9-DE81AE06CF7A"; setAttr ".ihi" 0; setAttr ".ic" -type "componentList" 1 "cv[*]"; -createNode unitConversion -n "unitConversion132"; - rename -uid "142B6387-44B6-197E-3F07-DFB5A832E605"; +createNode unitConversion -n "unitConversion154"; + rename -uid "6AE00A2B-41C5-DA00-1AAB-8B91C3990B0A"; setAttr ".cf" 0.017453292519943295; -createNode mgear_curveCns -n "mgear_curveCns412"; - rename -uid "33F6780C-4129-9C7B-BDE0-E282E270D34E"; - setAttr -s 2 ".inputs"; -createNode objectSet -n "mgear_curveCns412Set"; - rename -uid "23A5941A-49CD-7347-759F-0E987AFD3092"; +createNode mgear_curveCns -n "mgear_curveCns458"; + rename -uid "29CD0224-486B-A66A-0B1C-F5AE39682F6B"; + setAttr -s 4 ".inputs"; +createNode tweak -n "tweak606"; + rename -uid "392C92DE-4184-6CDC-9495-39B2C62F36BC"; +createNode objectSet -n "mgear_curveCns458Set"; + rename -uid "CBA1A5C2-4D36-B3DC-301B-1AB786AB076D"; setAttr ".ihi" 0; setAttr ".vo" yes; -createNode groupId -n "mgear_curveCns412GroupId"; - rename -uid "7C2A7D03-402D-C633-CE13-6BB499604D73"; +createNode groupId -n "mgear_curveCns458GroupId"; + rename -uid "2FD1E05F-4FD1-53A0-289F-A38C4AF14272"; setAttr ".ihi" 0; -createNode groupParts -n "mgear_curveCns412GroupParts"; - rename -uid "A85113C1-4664-A94C-1C43-DEB19E137671"; +createNode groupParts -n "mgear_curveCns458GroupParts"; + rename -uid "2604A46D-432A-BF3E-991F-4CACC759C0BA"; setAttr ".ihi" 0; setAttr ".ic" -type "componentList" 1 "cv[*]"; -createNode tweak -n "tweak560"; - rename -uid "01468970-4ED4-3514-20FF-459C1AE170A4"; -createNode objectSet -n "tweakSet560"; - rename -uid "1379BEA9-4964-FA59-DCAA-DEA9D8A695AF"; +createNode objectSet -n "tweakSet606"; + rename -uid "F6ED9315-4A3F-1700-A160-5DA48D91A3C4"; setAttr ".ihi" 0; setAttr ".vo" yes; -createNode groupId -n "groupId8689"; - rename -uid "9B582210-4923-B4A5-C2F4-08A9B2F518FA"; +createNode groupId -n "groupId8781"; + rename -uid "8C4B65E9-4D35-CF2C-153C-8385190B1415"; setAttr ".ihi" 0; -createNode groupParts -n "groupParts1120"; - rename -uid "31EFDB91-48F9-EEA8-ED2B-FE99CDB2F5BC"; +createNode groupParts -n "groupParts1212"; + rename -uid "A6233C2D-459F-6B4D-2BEB-219EF100D436"; setAttr ".ihi" 0; setAttr ".ic" -type "componentList" 1 "cv[*]"; -createNode animCurveUU -n "neck_C0_root_st_profile1"; - rename -uid "2ADAF464-4750-6366-7AA5-2A8D6B3E7E37"; - setAttr ".tan" 18; - setAttr ".wgt" no; - setAttr -s 3 ".ktv[0:2]" 0 0 0.5 -1 1 0; -createNode animCurveUU -n "neck_C0_root_sq_profile1"; - rename -uid "496A54C9-44CE-E37B-DEBC-5D89CE0BEF78"; - setAttr ".tan" 18; - setAttr ".wgt" no; - setAttr -s 3 ".ktv[0:2]" 0 0 0.5 1 1 0; -createNode mgear_curveCns -n "mgear_curveCns423"; - rename -uid "B0C67591-425B-30BC-D499-B493064DA2CF"; - setAttr -s 2 ".inputs"; -createNode objectSet -n "mgear_curveCns423Set"; - rename -uid "22E51D34-4159-9F53-0193-BF8E05E95BBC"; +createNode unitConversion -n "unitConversion155"; + rename -uid "5D71898E-4E62-142A-E5D6-669E6DB9D8D8"; + setAttr ".cf" 0.017453292519943295; +createNode mgear_curveCns -n "mgear_curveCns459"; + rename -uid "002CC421-4990-C3E7-7F03-8FA9B53786C9"; + setAttr -s 4 ".inputs"; +createNode tweak -n "tweak607"; + rename -uid "B0A8F85B-47E8-E7CD-904C-D1BE64AE6BCA"; +createNode objectSet -n "mgear_curveCns459Set"; + rename -uid "6F20A5E3-4452-D6F8-9097-2AB177415CD7"; setAttr ".ihi" 0; setAttr ".vo" yes; -createNode groupId -n "mgear_curveCns423GroupId"; - rename -uid "1B36F7DA-4161-6342-F080-818C6736718C"; +createNode groupId -n "mgear_curveCns459GroupId"; + rename -uid "9A0FF802-4C47-0914-4359-D1B0ED0EDB9C"; setAttr ".ihi" 0; -createNode groupParts -n "mgear_curveCns423GroupParts"; - rename -uid "305DE62C-4DED-169A-5D8D-8C99265AD920"; +createNode groupParts -n "mgear_curveCns459GroupParts"; + rename -uid "EA4851CB-4771-F472-EB5E-2E97E47F8FB8"; setAttr ".ihi" 0; setAttr ".ic" -type "componentList" 1 "cv[*]"; -createNode tweak -n "tweak571"; - rename -uid "DC200C92-4140-C8F3-F2B3-FA87A20BC20C"; -createNode objectSet -n "tweakSet571"; - rename -uid "66158F7B-4A0C-E207-F5E2-CC9C1B497AF1"; +createNode objectSet -n "tweakSet607"; + rename -uid "2BAB2339-40FB-EAB6-1E2F-8782D03D215F"; setAttr ".ihi" 0; setAttr ".vo" yes; -createNode groupId -n "groupId8711"; - rename -uid "4E6F0F1D-40AA-A803-062C-65A9F6205CE6"; +createNode groupId -n "groupId8783"; + rename -uid "5B29ECE0-43C5-3814-8DBB-04BD7F3F7164"; setAttr ".ihi" 0; -createNode groupParts -n "groupParts1142"; - rename -uid "03B3618B-46FE-DB86-89B5-6C9C65EF30D3"; +createNode groupParts -n "groupParts1214"; + rename -uid "69FF4185-41C3-67BB-A58E-76A0E749DA4F"; setAttr ".ihi" 0; setAttr ".ic" -type "componentList" 1 "cv[*]"; -createNode mgear_curveCns -n "mgear_curveCns424"; - rename -uid "AA513B8E-4600-8823-C105-869902AC291F"; - setAttr -s 2 ".inputs"; -createNode objectSet -n "mgear_curveCns424Set"; - rename -uid "30604B93-4488-1D89-2E15-9097EB247629"; +createNode animCurveUU -n "neck_C0_root_st_profile"; + rename -uid "9C1E6810-4C8A-C3A0-FFE7-8DBE4AA30D77"; + setAttr ".tan" 18; + setAttr ".wgt" no; + setAttr -s 3 ".ktv[0:2]" 0 0 0.5 -1 1 0; +createNode animCurveUU -n "neck_C0_root_sq_profile"; + rename -uid "1C1D864E-4A37-786D-4073-28B05775F84D"; + setAttr ".tan" 18; + setAttr ".wgt" no; + setAttr -s 3 ".ktv[0:2]" 0 0 0.5 1 1 0; +createNode unitConversion -n "unitConversion156"; + rename -uid "9A76F984-4A94-893A-04AA-AD97519DAE43"; + setAttr ".cf" 0.017453292519943295; +createNode mgear_curveCns -n "mgear_curveCns460"; + rename -uid "B323E41A-477A-C7E5-3165-2F9FEB65C529"; + setAttr -s 4 ".inputs"; +createNode tweak -n "tweak608"; + rename -uid "3A8A55BF-4254-CBB6-0E5D-2D8DCD660744"; +createNode objectSet -n "mgear_curveCns460Set"; + rename -uid "F53781B7-470C-88D5-8271-00A09BE96EF1"; setAttr ".ihi" 0; setAttr ".vo" yes; -createNode groupId -n "mgear_curveCns424GroupId"; - rename -uid "322768D9-4E6D-AB92-9673-109D85F2EBDD"; +createNode groupId -n "mgear_curveCns460GroupId"; + rename -uid "E3C42E4A-4C76-307E-4C54-678AB3A5151F"; setAttr ".ihi" 0; -createNode groupParts -n "mgear_curveCns424GroupParts"; - rename -uid "8B8E33CD-44EB-F707-E9F1-E59EE75DCDFB"; +createNode groupParts -n "mgear_curveCns460GroupParts"; + rename -uid "E6F16595-4D9E-8303-9D37-EC9F9D5A7A56"; setAttr ".ihi" 0; setAttr ".ic" -type "componentList" 1 "cv[*]"; -createNode tweak -n "tweak572"; - rename -uid "448566A3-4963-927A-570C-2FA1977C6BE5"; -createNode objectSet -n "tweakSet572"; - rename -uid "C908185A-4956-4CD4-D0C5-B0816F2EE928"; +createNode objectSet -n "tweakSet608"; + rename -uid "697B50C1-4B97-5E66-7C3F-5C8974B6FB37"; setAttr ".ihi" 0; setAttr ".vo" yes; -createNode groupId -n "groupId8713"; - rename -uid "6977BAE0-4FD3-7E0C-5963-CFAF072BB2B0"; +createNode groupId -n "groupId8785"; + rename -uid "5BA3CA7F-4ADC-894D-236B-A79C75034560"; setAttr ".ihi" 0; -createNode groupParts -n "groupParts1144"; - rename -uid "977DB811-40A4-8E92-DA53-BAA42D422AD7"; +createNode groupParts -n "groupParts1216"; + rename -uid "176439E7-44E0-A437-2593-D3829D328308"; setAttr ".ihi" 0; setAttr ".ic" -type "componentList" 1 "cv[*]"; -createNode unitConversion -n "unitConversion140"; - rename -uid "84DB524E-4B69-4E1E-1709-849821CFEABC"; - setAttr ".cf" 0.017453292519943295; -createNode mgear_curveCns -n "mgear_curveCns426"; - rename -uid "9A65CDF7-4A4A-1755-DBD7-129E0A48000E"; - setAttr -s 5 ".inputs"; -createNode objectSet -n "mgear_curveCns426Set"; - rename -uid "BBFAEA5D-4335-8732-CAA1-22849225CA14"; +createNode mgear_curveCns -n "mgear_curveCns461"; + rename -uid "E28824AE-4DD8-957A-07EF-6AA8B74C3D42"; + setAttr -s 3 ".inputs"; +createNode tweak -n "tweak609"; + rename -uid "97648F76-4BF8-0A71-D480-4E913F12EB4A"; +createNode objectSet -n "mgear_curveCns461Set"; + rename -uid "E186DC90-4B66-4118-E789-339D7B0B9531"; setAttr ".ihi" 0; setAttr ".vo" yes; -createNode groupId -n "mgear_curveCns426GroupId"; - rename -uid "5E9B9F44-4097-6C03-AF86-39B435450952"; +createNode groupId -n "mgear_curveCns461GroupId"; + rename -uid "DC418B68-4FEB-846D-6E55-8AB77CCAE0B5"; setAttr ".ihi" 0; -createNode groupParts -n "mgear_curveCns426GroupParts"; - rename -uid "A993371C-4082-A030-944D-A3B588B56A69"; +createNode groupParts -n "mgear_curveCns461GroupParts"; + rename -uid "970DAD91-49A3-6A2D-D191-598AB14314FB"; setAttr ".ihi" 0; setAttr ".ic" -type "componentList" 1 "cv[*]"; -createNode tweak -n "tweak574"; - rename -uid "9DF7B108-481C-E7C2-A6A5-61ADEC52A594"; -createNode objectSet -n "tweakSet574"; - rename -uid "E28DC328-46B7-6564-4D83-E98382A18159"; +createNode objectSet -n "tweakSet609"; + rename -uid "39EC5F2C-43B6-5377-E013-E48F2A9D437E"; setAttr ".ihi" 0; setAttr ".vo" yes; -createNode groupId -n "groupId8717"; - rename -uid "EFB93C8A-4E9E-5B84-56FC-B392EA5B60BC"; +createNode groupId -n "groupId8787"; + rename -uid "01D20DDF-494B-FDAA-7E54-7A9809DA02B7"; setAttr ".ihi" 0; -createNode groupParts -n "groupParts1148"; - rename -uid "68C1221E-433E-E821-B0E2-4EAB9586233C"; +createNode groupParts -n "groupParts1218"; + rename -uid "CB37CCD7-4DE0-18B9-AEB4-68ACC47CF1CF"; setAttr ".ihi" 0; setAttr ".ic" -type "componentList" 1 "cv[*]"; -createNode mgear_curveCns -n "mgear_curveCns422"; - rename -uid "2CEC8943-49B6-E662-E238-988AFDE4DD1A"; +createNode mgear_curveCns -n "mgear_curveCns462"; + rename -uid "48A1F673-4D35-6C43-FCFA-6EB3A2FCCCB1"; setAttr -s 2 ".inputs"; -createNode objectSet -n "mgear_curveCns422Set"; - rename -uid "33CD17F0-4CD6-26EA-3583-05875A50EB38"; +createNode tweak -n "tweak610"; + rename -uid "801067A6-43DB-1D12-328F-5F96FE9D7B54"; +createNode objectSet -n "mgear_curveCns462Set"; + rename -uid "C0B5EFEB-4DE9-294D-713B-D59E54A48542"; setAttr ".ihi" 0; setAttr ".vo" yes; -createNode groupId -n "mgear_curveCns422GroupId"; - rename -uid "A458D400-44B4-DA30-B649-F4A4FD2A9B15"; +createNode groupId -n "mgear_curveCns462GroupId"; + rename -uid "BFDBB55E-4DA8-F332-1E61-4DB3D92D69D6"; setAttr ".ihi" 0; -createNode groupParts -n "mgear_curveCns422GroupParts"; - rename -uid "3B38DECC-43C8-58C6-B35B-8B8D196F1E39"; +createNode groupParts -n "mgear_curveCns462GroupParts"; + rename -uid "83D2D426-4E29-89CF-B66B-54A9B0947BA7"; setAttr ".ihi" 0; setAttr ".ic" -type "componentList" 1 "cv[*]"; -createNode tweak -n "tweak570"; - rename -uid "0DF2F414-4D96-F371-6578-FB83D1A48721"; -createNode objectSet -n "tweakSet570"; - rename -uid "C2B3B8BD-4AD6-9004-F990-53AE0C503980"; +createNode objectSet -n "tweakSet610"; + rename -uid "817C6ADB-4FF6-E7D7-62EF-35867E8F59CF"; setAttr ".ihi" 0; setAttr ".vo" yes; -createNode groupId -n "groupId8709"; - rename -uid "542D96AD-418C-1A44-B8AB-2D8F87B9F958"; +createNode groupId -n "groupId8789"; + rename -uid "EC8A65E2-4105-B825-6676-82BBD46FB6B5"; setAttr ".ihi" 0; -createNode groupParts -n "groupParts1140"; - rename -uid "49F0223D-4A15-A53A-3EEE-F4A8F7993878"; +createNode groupParts -n "groupParts1220"; + rename -uid "F45BBE38-4247-6FFE-D3D9-9D871075A2AF"; setAttr ".ihi" 0; setAttr ".ic" -type "componentList" 1 "cv[*]"; -createNode mgear_curveCns -n "mgear_curveCns425"; - rename -uid "200865EF-486E-C9A9-2048-9B988A51A3B1"; +createNode mgear_curveCns -n "mgear_curveCns463"; + rename -uid "309F9A94-4DE1-F39A-5005-21A055FAD37D"; setAttr -s 2 ".inputs"; -createNode objectSet -n "mgear_curveCns425Set"; - rename -uid "1B44F1B1-4839-C985-2E16-659E2512D5BD"; +createNode tweak -n "tweak611"; + rename -uid "F960157E-4E9C-5839-0DD8-4E96C7FBE287"; +createNode objectSet -n "mgear_curveCns463Set"; + rename -uid "45C9405A-4C0E-2A1C-0BA4-C299C3B40F99"; setAttr ".ihi" 0; setAttr ".vo" yes; -createNode groupId -n "mgear_curveCns425GroupId"; - rename -uid "D9368D8E-47BB-70A9-22E7-028FC68B6B29"; +createNode groupId -n "mgear_curveCns463GroupId"; + rename -uid "82061475-4A8D-6316-6E18-AC949131424C"; setAttr ".ihi" 0; -createNode groupParts -n "mgear_curveCns425GroupParts"; - rename -uid "B03AC915-4E5F-9E94-C2E0-C29DF1062D43"; +createNode groupParts -n "mgear_curveCns463GroupParts"; + rename -uid "5658644D-4A0C-3AC0-9567-1DB74F39A8D6"; setAttr ".ihi" 0; setAttr ".ic" -type "componentList" 1 "cv[*]"; -createNode tweak -n "tweak573"; - rename -uid "F54192A7-41BF-7617-7543-84A7E154EBB3"; -createNode objectSet -n "tweakSet573"; - rename -uid "64D937F5-407D-195F-DA24-CC9CDEC44DBA"; +createNode objectSet -n "tweakSet611"; + rename -uid "D45829D3-4A2A-19F0-1769-56AC031F051C"; setAttr ".ihi" 0; setAttr ".vo" yes; -createNode groupId -n "groupId8715"; - rename -uid "80BEB2B8-4C0B-6F0E-E610-7B9C02A7642F"; +createNode groupId -n "groupId8791"; + rename -uid "13DF1C2E-4A94-B8B0-3B80-19A147A70F13"; setAttr ".ihi" 0; -createNode groupParts -n "groupParts1146"; - rename -uid "2941A893-403B-758D-9CEE-B281209BA89C"; +createNode groupParts -n "groupParts1222"; + rename -uid "714203C6-48AF-D71A-204B-99938A921C96"; setAttr ".ihi" 0; setAttr ".ic" -type "componentList" 1 "cv[*]"; -createNode mgear_curveCns -n "mgear_curveCns427"; - rename -uid "18D127E6-4D26-D936-8F9D-12A70AF73CD9"; +createNode mgear_curveCns -n "mgear_curveCns464"; + rename -uid "A2D170DD-420D-7E95-F6F8-579F7AF405C2"; setAttr -s 2 ".inputs"; -createNode objectSet -n "mgear_curveCns427Set"; - rename -uid "A3E81AB6-4837-1D81-A24E-73B3E5BBFD11"; +createNode tweak -n "tweak612"; + rename -uid "C31FFEFD-4EA9-5D5A-B144-689F7C029999"; +createNode objectSet -n "mgear_curveCns464Set"; + rename -uid "ADB2C4B0-46C8-5B01-BBE8-F8ABADB59F62"; setAttr ".ihi" 0; setAttr ".vo" yes; -createNode groupId -n "mgear_curveCns427GroupId"; - rename -uid "ED85C373-4A07-BBD3-4E8C-DF8F8EAB971D"; +createNode groupId -n "mgear_curveCns464GroupId"; + rename -uid "FD9ED851-4302-75A5-5D7D-7987B27734A5"; setAttr ".ihi" 0; -createNode groupParts -n "mgear_curveCns427GroupParts"; - rename -uid "587D6AEC-42D4-333C-5F94-B9A02E8CECFA"; +createNode groupParts -n "mgear_curveCns464GroupParts"; + rename -uid "C093F8B9-4F51-5F6C-1359-6788490B61B9"; setAttr ".ihi" 0; setAttr ".ic" -type "componentList" 1 "cv[*]"; -createNode tweak -n "tweak575"; - rename -uid "3308AA9F-4392-F37D-FB9B-2F82954D25A2"; -createNode objectSet -n "tweakSet575"; - rename -uid "8FF6E50A-4160-4CA2-255A-F388CE6FF81D"; +createNode objectSet -n "tweakSet612"; + rename -uid "206D5F5E-4587-49C4-ECDE-31971C5B6901"; setAttr ".ihi" 0; setAttr ".vo" yes; -createNode groupId -n "groupId8719"; - rename -uid "775D9DF3-479F-8647-ADE1-278A042DCB61"; +createNode groupId -n "groupId8793"; + rename -uid "314FB0D2-468A-2060-FAEF-E4B962514DBC"; setAttr ".ihi" 0; -createNode groupParts -n "groupParts1150"; - rename -uid "D5B3ED0F-449C-4155-18C3-EC81800ECAEE"; +createNode groupParts -n "groupParts1224"; + rename -uid "E90D550D-49F4-0F5A-DAC9-988D6F428E76"; setAttr ".ihi" 0; setAttr ".ic" -type "componentList" 1 "cv[*]"; -createNode mgear_curveCns -n "mgear_curveCns428"; - rename -uid "56BBAE1E-45C9-6644-7529-78A0552651B7"; +createNode mgear_curveCns -n "mgear_curveCns465"; + rename -uid "ACC7AF7E-4402-92AC-8CA5-99820366E4D2"; setAttr -s 2 ".inputs"; -createNode objectSet -n "mgear_curveCns428Set"; - rename -uid "5B6E12E4-4DF1-1217-4FB9-C8AE2D4744B6"; +createNode tweak -n "tweak613"; + rename -uid "7DE88B75-4CC2-5554-C789-2BA338478BD3"; +createNode objectSet -n "mgear_curveCns465Set"; + rename -uid "98E33397-47C5-ADC9-EACD-DABB3BAF7146"; setAttr ".ihi" 0; setAttr ".vo" yes; -createNode groupId -n "mgear_curveCns428GroupId"; - rename -uid "EFC9C992-49B5-388A-0798-819540E9806E"; +createNode groupId -n "mgear_curveCns465GroupId"; + rename -uid "5AAE1F42-4AEB-239D-3549-DE84C5106C0C"; setAttr ".ihi" 0; -createNode groupParts -n "mgear_curveCns428GroupParts"; - rename -uid "D1A80227-4B36-023B-DDB9-5F9C0AD73B17"; +createNode groupParts -n "mgear_curveCns465GroupParts"; + rename -uid "A4D2E7AF-4766-C74F-9179-039C32DD09B4"; setAttr ".ihi" 0; setAttr ".ic" -type "componentList" 1 "cv[*]"; -createNode tweak -n "tweak576"; - rename -uid "084A93E1-417B-722D-08EE-CE87F3D895A6"; -createNode objectSet -n "tweakSet576"; - rename -uid "B97FB95C-4503-C770-D381-07A044BADA09"; +createNode objectSet -n "tweakSet613"; + rename -uid "80DE07FA-4A07-96D9-B161-E6AF9D600981"; setAttr ".ihi" 0; setAttr ".vo" yes; -createNode groupId -n "groupId8721"; - rename -uid "A14868A6-4AED-D6EB-AE3D-05BB470B80A4"; +createNode groupId -n "groupId8795"; + rename -uid "6CC0D58D-414F-53E0-7558-C0B1D7EF1651"; setAttr ".ihi" 0; -createNode groupParts -n "groupParts1152"; - rename -uid "9E1334F5-4867-CB32-16AC-FC9F71869966"; +createNode groupParts -n "groupParts1226"; + rename -uid "02916AC0-40C5-3AF2-3BF8-34B7773A01FE"; setAttr ".ihi" 0; setAttr ".ic" -type "componentList" 1 "cv[*]"; -createNode mgear_curveCns -n "mgear_curveCns421"; - rename -uid "1CA1440C-4F52-931E-15FC-A0B190C6551A"; - setAttr -s 3 ".inputs"; -createNode objectSet -n "mgear_curveCns421Set"; - rename -uid "5812A808-4583-7E82-1F13-41B41C5688AE"; +createNode unitConversion -n "unitConversion157"; + rename -uid "18CBC48D-48E2-4952-2DD3-A594AF4C4F67"; + setAttr ".cf" 0.017453292519943295; +createNode mgear_curveCns -n "mgear_curveCns466"; + rename -uid "3D01B5BE-4081-EFBC-2599-FA90D28C2147"; + setAttr -s 5 ".inputs"; +createNode tweak -n "tweak614"; + rename -uid "BFCD49F5-4423-5B09-EA45-7980CB220A03"; +createNode objectSet -n "mgear_curveCns466Set"; + rename -uid "E1712865-4EEF-F697-821E-288DB5DDF66A"; setAttr ".ihi" 0; setAttr ".vo" yes; -createNode groupId -n "mgear_curveCns421GroupId"; - rename -uid "E1A0C3AB-4B48-FA2C-F00C-459F32651C25"; +createNode groupId -n "mgear_curveCns466GroupId"; + rename -uid "4950E3E0-4258-7DF9-024E-87925A38F9EC"; setAttr ".ihi" 0; -createNode groupParts -n "mgear_curveCns421GroupParts"; - rename -uid "50F32738-49F3-6946-06E7-C3B1628B5BCF"; +createNode groupParts -n "mgear_curveCns466GroupParts"; + rename -uid "F77AC12E-4B0F-5B6B-E815-94B30BE8A679"; setAttr ".ihi" 0; setAttr ".ic" -type "componentList" 1 "cv[*]"; -createNode tweak -n "tweak569"; - rename -uid "D2C5A0BD-4340-3097-AA7C-7EB65EABEFAF"; -createNode objectSet -n "tweakSet569"; - rename -uid "F3610B16-492C-D00D-E42C-D6BB583DC345"; +createNode objectSet -n "tweakSet614"; + rename -uid "EB644380-4667-F502-ACDF-81984E039108"; setAttr ".ihi" 0; setAttr ".vo" yes; -createNode groupId -n "groupId8707"; - rename -uid "4845CEF9-4C75-7DCC-6B26-5EA0AA5564E5"; +createNode groupId -n "groupId8797"; + rename -uid "21F23092-4D96-9A39-BB7D-B79D2EE6D2E6"; setAttr ".ihi" 0; -createNode groupParts -n "groupParts1138"; - rename -uid "434FA5FF-4493-0814-9F21-CFA8DCB76961"; +createNode groupParts -n "groupParts1228"; + rename -uid "8C66EB2E-4153-97AD-620A-CF86C51DF580"; setAttr ".ihi" 0; setAttr ".ic" -type "componentList" 1 "cv[*]"; -createNode unitConversion -n "unitConversion139"; - rename -uid "55B0A675-4AC2-7F1D-0511-479F0D26CF02"; - setAttr ".cf" 0.017453292519943295; -createNode mgear_curveCns -n "mgear_curveCns420"; - rename -uid "32DECA05-46BC-F144-CEB0-67AA1A21C97F"; - setAttr -s 4 ".inputs"; -createNode objectSet -n "mgear_curveCns420Set"; - rename -uid "30D601DB-4B9F-E349-FA78-77BCC0F94F62"; +createNode mgear_curveCns -n "mgear_curveCns467"; + rename -uid "A5D991A1-4C03-5978-4C9C-F6B45DF01966"; + setAttr -s 2 ".inputs"; +createNode tweak -n "tweak615"; + rename -uid "533D1F6C-41E0-F37A-A2C0-4EB90C632D3E"; +createNode objectSet -n "mgear_curveCns467Set"; + rename -uid "1337549A-4C45-C58C-2C8A-078793ECA05E"; setAttr ".ihi" 0; setAttr ".vo" yes; -createNode groupId -n "mgear_curveCns420GroupId"; - rename -uid "9C57A4D1-42FF-F814-76C3-5A976750DB04"; +createNode groupId -n "mgear_curveCns467GroupId"; + rename -uid "410E1FDC-4F6E-8ED3-464E-22B1B51363A4"; setAttr ".ihi" 0; -createNode groupParts -n "mgear_curveCns420GroupParts"; - rename -uid "32695D5D-4FAA-F308-B6FC-C09591F29BE1"; +createNode groupParts -n "mgear_curveCns467GroupParts"; + rename -uid "4142E735-4566-66AD-DA0F-9E8A8C76BA5A"; setAttr ".ihi" 0; setAttr ".ic" -type "componentList" 1 "cv[*]"; -createNode tweak -n "tweak568"; - rename -uid "55272423-482B-9DA9-E81E-68B9BCA1ADB0"; -createNode objectSet -n "tweakSet568"; - rename -uid "17F6DA79-44A8-AF04-D34B-638ABB6E4A2F"; +createNode objectSet -n "tweakSet615"; + rename -uid "D82EAAEC-4FEC-64A6-5DBE-62AD76D0D386"; setAttr ".ihi" 0; setAttr ".vo" yes; -createNode groupId -n "groupId8705"; - rename -uid "22F41757-4BF7-0962-2961-02986B3E3E04"; +createNode groupId -n "groupId8799"; + rename -uid "E7A37DF3-4AD2-07FB-0A94-C1B2C9D31E83"; setAttr ".ihi" 0; -createNode groupParts -n "groupParts1136"; - rename -uid "5A2302E3-47FF-793D-F4FC-D18754B2FE16"; +createNode groupParts -n "groupParts1230"; + rename -uid "41209562-46D6-9D97-7536-72887479ECF4"; setAttr ".ihi" 0; setAttr ".ic" -type "componentList" 1 "cv[*]"; -createNode animCurveUU -n "arm_R0_root_st_profile"; - rename -uid "2DB12511-4175-7528-249A-919DA851A5CF"; - setAttr ".tan" 18; - setAttr ".wgt" no; - setAttr -s 3 ".ktv[0:2]" 0 0 0.5 -0.5 1 0; -createNode animCurveUU -n "arm_R0_root_sq_profile"; - rename -uid "CC41F5B6-44D9-DD0C-C8EB-409112451576"; - setAttr ".tan" 18; - setAttr ".wgt" no; - setAttr -s 3 ".ktv[0:2]" 0 0 0.5 0.5 1 0; -createNode unitConversion -n "unitConversion143"; - rename -uid "BFD5B953-4745-31FF-670F-10BE646EA802"; - setAttr ".cf" 0.017453292519943295; -createNode mgear_curveCns -n "mgear_curveCns443"; - rename -uid "30C53201-482D-13E1-37AF-BC8B9D97210F"; - setAttr -s 4 ".inputs"; -createNode objectSet -n "mgear_curveCns443Set"; - rename -uid "82820357-4E54-A53D-61BE-C3A9C67D4E97"; +createNode mgear_curveCns -n "mgear_curveCns468"; + rename -uid "5859750E-4F87-0110-812E-BFB58899EBDA"; + setAttr -s 2 ".inputs"; +createNode tweak -n "tweak616"; + rename -uid "E6D49D73-4911-061C-8AF8-AABCA9BD984D"; +createNode objectSet -n "mgear_curveCns468Set"; + rename -uid "B53F2DB6-476C-936F-F517-528E8B24953A"; setAttr ".ihi" 0; setAttr ".vo" yes; -createNode groupId -n "mgear_curveCns443GroupId"; - rename -uid "2F2623A5-4535-784B-4FE4-709F80BDA0CC"; +createNode groupId -n "mgear_curveCns468GroupId"; + rename -uid "1F420979-4385-853F-46EE-DDAD735C1806"; setAttr ".ihi" 0; -createNode groupParts -n "mgear_curveCns443GroupParts"; - rename -uid "5246773D-4FEC-FA20-B208-9C974B25A863"; +createNode groupParts -n "mgear_curveCns468GroupParts"; + rename -uid "84650683-47C6-8274-11A7-B095771A55B0"; setAttr ".ihi" 0; setAttr ".ic" -type "componentList" 1 "cv[*]"; -createNode tweak -n "tweak591"; - rename -uid "3C8BA120-4868-3FBA-13CA-33BEE2BB0A01"; -createNode objectSet -n "tweakSet591"; - rename -uid "9D5271AD-4C81-0956-55AF-38ABFFD0E36F"; +createNode objectSet -n "tweakSet616"; + rename -uid "09E353DA-4A64-7357-511A-6F911222E14C"; setAttr ".ihi" 0; setAttr ".vo" yes; -createNode groupId -n "groupId8751"; - rename -uid "8E9F52AB-428B-F491-7A5F-049837A7CE0A"; +createNode groupId -n "groupId8801"; + rename -uid "62127FD4-44A5-5F07-072D-84B4A2E797E9"; setAttr ".ihi" 0; -createNode groupParts -n "groupParts1182"; - rename -uid "6625F9D7-459D-847C-9BAE-93B9C7E90AF6"; +createNode groupParts -n "groupParts1232"; + rename -uid "E94A2A66-4954-1AFE-A02C-8680B8602AEF"; setAttr ".ihi" 0; setAttr ".ic" -type "componentList" 1 "cv[*]"; -createNode unitConversion -n "unitConversion144"; - rename -uid "380020B0-4095-010B-DA41-4E9293209FFA"; +createNode unitConversion -n "unitConversion158"; + rename -uid "0A0A18B0-4FD5-569D-824D-839B1088303D"; setAttr ".cf" 0.017453292519943295; -createNode mgear_curveCns -n "mgear_curveCns444"; - rename -uid "24590B8C-4C5B-F6E3-F913-DDBE740AA470"; - setAttr -s 4 ".inputs"; -createNode objectSet -n "mgear_curveCns444Set"; - rename -uid "6C0658D0-47DD-4404-61CE-13A615BC66F1"; +createNode mgear_curveCns -n "mgear_curveCns469"; + rename -uid "CC9AD703-42F5-D26B-7331-6C8AA2368A66"; + setAttr -s 2 ".inputs"; +createNode tweak -n "tweak617"; + rename -uid "0106F029-48D7-C194-865B-F388E5061812"; +createNode objectSet -n "mgear_curveCns469Set"; + rename -uid "CAEDC71A-4B42-B549-3152-67B214B36899"; setAttr ".ihi" 0; setAttr ".vo" yes; -createNode groupId -n "mgear_curveCns444GroupId"; - rename -uid "BDC30165-4A4E-659D-B433-1F82DB0912E1"; +createNode groupId -n "mgear_curveCns469GroupId"; + rename -uid "18E5A321-48BA-E5EA-A72B-C6AEEA4FE7FF"; setAttr ".ihi" 0; -createNode groupParts -n "mgear_curveCns444GroupParts"; - rename -uid "E00AFCA4-4E87-05E9-3CBD-E58ADBB72542"; +createNode groupParts -n "mgear_curveCns469GroupParts"; + rename -uid "4D1F56EF-4288-652E-CF75-B785C468F070"; setAttr ".ihi" 0; setAttr ".ic" -type "componentList" 1 "cv[*]"; -createNode tweak -n "tweak592"; - rename -uid "7829EDB6-443F-E3B2-295C-39A1CF7C0AE3"; -createNode objectSet -n "tweakSet592"; - rename -uid "93FA4287-4C7F-D85E-B6F3-7EBACA22A84B"; +createNode objectSet -n "tweakSet617"; + rename -uid "4DCC44F2-4724-7810-700E-36BEA4A101AC"; setAttr ".ihi" 0; setAttr ".vo" yes; -createNode groupId -n "groupId8753"; - rename -uid "98A506D2-4BE8-59E3-37AE-67ADFDE8E4DC"; +createNode groupId -n "groupId8803"; + rename -uid "1EDCBEE8-4151-1368-BCD9-629D96140C8A"; setAttr ".ihi" 0; -createNode groupParts -n "groupParts1184"; - rename -uid "23037226-4A27-C88E-06C7-46A691A8C18B"; +createNode groupParts -n "groupParts1234"; + rename -uid "BD0A674A-49A2-E2CF-86FA-CA91CF153094"; setAttr ".ihi" 0; setAttr ".ic" -type "componentList" 1 "cv[*]"; -createNode unitConversion -n "unitConversion145"; - rename -uid "9648D09A-4F5A-1A47-1B4F-C581A33D2D9D"; - setAttr ".cf" 0.017453292519943295; -createNode mgear_curveCns -n "mgear_curveCns445"; - rename -uid "AB4AF995-43AB-D65B-B46B-DA916C2A6BDA"; +createNode animCurveUU -n "arm_R0_root_st_profile1"; + rename -uid "B53705A1-4C87-1B9D-642D-C18E637E0F6E"; + setAttr ".tan" 18; + setAttr ".wgt" no; + setAttr -s 3 ".ktv[0:2]" 0 0 0.5 -0.5 1 0; +createNode animCurveUU -n "arm_R0_root_sq_profile1"; + rename -uid "E450F0A8-4C28-C4BD-44DE-2BBFACEE2327"; + setAttr ".tan" 18; + setAttr ".wgt" no; + setAttr -s 3 ".ktv[0:2]" 0 0 0.5 0.5 1 0; +createNode mgear_curveCns -n "mgear_curveCns470"; + rename -uid "8E262FDC-476A-BE97-92C5-7BBA30AB79CD"; setAttr -s 4 ".inputs"; -createNode objectSet -n "mgear_curveCns445Set"; - rename -uid "EF31AB96-4D67-EE31-D89A-BDB275ED566C"; +createNode tweak -n "tweak618"; + rename -uid "19152F01-44A9-3853-FBAD-6BB2D9F43026"; +createNode objectSet -n "mgear_curveCns470Set"; + rename -uid "188D0569-4859-1008-D799-D6B18193CC17"; setAttr ".ihi" 0; setAttr ".vo" yes; -createNode groupId -n "mgear_curveCns445GroupId"; - rename -uid "0CE3889B-4D7A-6A08-7104-B2A68492E02C"; +createNode groupId -n "mgear_curveCns470GroupId"; + rename -uid "9F4D4D56-47A4-6DEB-C5D0-E6AC7791B11D"; setAttr ".ihi" 0; -createNode groupParts -n "mgear_curveCns445GroupParts"; - rename -uid "21BC1621-4EED-D465-0FDA-02B928F2A4DB"; +createNode groupParts -n "mgear_curveCns470GroupParts"; + rename -uid "3F1CDD8D-4227-B125-E80F-14B8C059BE95"; setAttr ".ihi" 0; setAttr ".ic" -type "componentList" 1 "cv[*]"; -createNode tweak -n "tweak593"; - rename -uid "5847BCAC-49FF-B703-6144-ECAFC7A8291C"; -createNode objectSet -n "tweakSet593"; - rename -uid "4B33D7B5-4297-2FF3-0447-D9BF3DC758DB"; +createNode objectSet -n "tweakSet618"; + rename -uid "13EFCEFD-47F5-63A0-D17E-EFBCE2CA96F2"; setAttr ".ihi" 0; setAttr ".vo" yes; -createNode groupId -n "groupId8755"; - rename -uid "198FAA27-4A11-43E7-2480-7397425B36F1"; +createNode groupId -n "groupId8805"; + rename -uid "00AB8847-424C-DD04-61B4-3BA261BD096F"; setAttr ".ihi" 0; -createNode groupParts -n "groupParts1186"; - rename -uid "81891ED9-42E1-0C5B-78B3-05B60EAA09F5"; +createNode groupParts -n "groupParts1236"; + rename -uid "93A77A9D-4479-A33F-3010-59AE12232C98"; setAttr ".ihi" 0; setAttr ".ic" -type "componentList" 1 "cv[*]"; -createNode unitConversion -n "unitConversion142"; - rename -uid "14BEE0DB-431E-A5E5-25A7-618F12261533"; +createNode unitConversion -n "unitConversion159"; + rename -uid "D7F0E350-44FF-5EAD-C649-069A641BE144"; setAttr ".cf" 0.017453292519943295; -createNode mgear_curveCns -n "mgear_curveCns442"; - rename -uid "FEFD2E23-4AD9-0D93-B5C9-F6B04AFCA44C"; +createNode mgear_curveCns -n "mgear_curveCns471"; + rename -uid "29D64BE3-4038-1C5A-B99D-BAB1D148E700"; setAttr -s 4 ".inputs"; -createNode objectSet -n "mgear_curveCns442Set"; - rename -uid "64D32F2D-4317-99BB-11D6-79AB96C617B7"; +createNode tweak -n "tweak619"; + rename -uid "8359D8E0-474C-E1EB-B6E5-F083EA00B476"; +createNode objectSet -n "mgear_curveCns471Set"; + rename -uid "BFBB6845-4F64-0A98-B5CF-338528D69EB2"; setAttr ".ihi" 0; setAttr ".vo" yes; -createNode groupId -n "mgear_curveCns442GroupId"; - rename -uid "C6CC45F9-42C3-A02E-FBE4-4DA90C3B68AF"; +createNode groupId -n "mgear_curveCns471GroupId"; + rename -uid "C1C5B86D-48D1-0418-E2C6-D6BB7E7BA128"; setAttr ".ihi" 0; -createNode groupParts -n "mgear_curveCns442GroupParts"; - rename -uid "BD6FA755-407B-9677-9497-9896522962CF"; +createNode groupParts -n "mgear_curveCns471GroupParts"; + rename -uid "6DDA4919-4DDF-921D-8972-51863D093590"; setAttr ".ihi" 0; setAttr ".ic" -type "componentList" 1 "cv[*]"; -createNode tweak -n "tweak590"; - rename -uid "A565A1CC-4FC3-26C0-CC3E-ADA894857A5E"; -createNode objectSet -n "tweakSet590"; - rename -uid "087C36C9-448E-F368-D115-0EB6504E812F"; +createNode objectSet -n "tweakSet619"; + rename -uid "84449FED-4C05-7DB2-0899-12ADD910A60A"; setAttr ".ihi" 0; setAttr ".vo" yes; -createNode groupId -n "groupId8749"; - rename -uid "440CA677-4A1D-2200-8090-65BC55F821C1"; +createNode groupId -n "groupId8807"; + rename -uid "1A31BA0C-4FB8-9B68-A6DF-DCBB4CEA5BC2"; setAttr ".ihi" 0; -createNode groupParts -n "groupParts1180"; - rename -uid "2E440EE0-4F80-8039-A648-4C8C5E27077A"; +createNode groupParts -n "groupParts1238"; + rename -uid "CE1EAF23-4901-85D4-055E-909E7511D44F"; setAttr ".ihi" 0; setAttr ".ic" -type "componentList" 1 "cv[*]"; -createNode unitConversion -n "unitConversion146"; - rename -uid "B687F0B7-4707-22ED-3EBB-8385444CB7A6"; +createNode unitConversion -n "unitConversion160"; + rename -uid "E19EF50E-4A78-C245-9FF0-C6B6ACB4770A"; setAttr ".cf" 0.017453292519943295; -createNode mgear_curveCns -n "mgear_curveCns446"; - rename -uid "AAE05EEB-4E84-B369-E932-DD867786C006"; +createNode mgear_curveCns -n "mgear_curveCns472"; + rename -uid "BA4041E2-41B4-4354-2B3E-9198EEBD1DCC"; setAttr -s 4 ".inputs"; -createNode objectSet -n "mgear_curveCns446Set"; - rename -uid "A86E8DD0-4EDC-D3B6-4B02-09A57F70772A"; +createNode tweak -n "tweak620"; + rename -uid "319A8BA2-4730-8F34-4805-78BAF268400B"; +createNode objectSet -n "mgear_curveCns472Set"; + rename -uid "04D78997-4B79-0C81-BEAE-5C94825264A2"; setAttr ".ihi" 0; setAttr ".vo" yes; -createNode groupId -n "mgear_curveCns446GroupId"; - rename -uid "A9F25727-43B6-5DFB-13DF-9B8AAE35A852"; +createNode groupId -n "mgear_curveCns472GroupId"; + rename -uid "D22C116D-40FB-9450-A40F-6780C30CDC02"; setAttr ".ihi" 0; -createNode groupParts -n "mgear_curveCns446GroupParts"; - rename -uid "FC83433E-4260-A3CE-B513-9BBE3B38FA9D"; +createNode groupParts -n "mgear_curveCns472GroupParts"; + rename -uid "EDE49B73-46DC-1F34-1ED4-3AB33A3E2143"; setAttr ".ihi" 0; setAttr ".ic" -type "componentList" 1 "cv[*]"; -createNode tweak -n "tweak594"; - rename -uid "5F151F1F-41DE-EA55-152E-98ABA4C3F7BA"; -createNode objectSet -n "tweakSet594"; - rename -uid "129259D0-4358-2316-3233-97A97A3ADCB7"; +createNode objectSet -n "tweakSet620"; + rename -uid "4295DD3F-47DB-2974-C264-81A6CD856AC0"; setAttr ".ihi" 0; setAttr ".vo" yes; -createNode groupId -n "groupId8757"; - rename -uid "881AE4E7-477D-9EE7-09F6-C79350C3D51B"; +createNode groupId -n "groupId8809"; + rename -uid "6C662EE5-45F8-3C17-6384-8E9EE8944BEE"; setAttr ".ihi" 0; -createNode groupParts -n "groupParts1188"; - rename -uid "98ABF1FA-46A4-54F9-0CEC-0A89FFD95019"; +createNode groupParts -n "groupParts1240"; + rename -uid "72EE73C6-4480-0E33-812E-809D3E63FBEA"; setAttr ".ihi" 0; setAttr ".ic" -type "componentList" 1 "cv[*]"; -createNode unitConversion -n "unitConversion147"; - rename -uid "99896CFA-4ADD-4134-2EE1-EF8020040442"; +createNode unitConversion -n "unitConversion161"; + rename -uid "B3F14709-4E37-9878-5D49-4AACD486C344"; setAttr ".cf" 0.017453292519943295; -createNode mgear_curveCns -n "mgear_curveCns447"; - rename -uid "4CCC7548-4C43-DC81-DDD6-639BF4673B7C"; +createNode mgear_curveCns -n "mgear_curveCns473"; + rename -uid "796F265D-4363-A309-3941-94B5577F5FAF"; setAttr -s 4 ".inputs"; -createNode objectSet -n "mgear_curveCns447Set"; - rename -uid "B0BCA107-4FDD-0093-B33F-39903663D6AC"; +createNode tweak -n "tweak621"; + rename -uid "D2D0F15F-44D1-7E32-E7BD-0083021EC5FB"; +createNode objectSet -n "mgear_curveCns473Set"; + rename -uid "A65C0FF6-4DE3-A4DD-6BDB-62828B1EA085"; setAttr ".ihi" 0; setAttr ".vo" yes; -createNode groupId -n "mgear_curveCns447GroupId"; - rename -uid "587E570E-4D39-67DD-F9A2-5999AF2DC55E"; +createNode groupId -n "mgear_curveCns473GroupId"; + rename -uid "A9C8F405-4C06-5924-2D63-51AC45892DE7"; setAttr ".ihi" 0; -createNode groupParts -n "mgear_curveCns447GroupParts"; - rename -uid "575D9ECA-4780-1C3E-D251-778DDAB38A72"; +createNode groupParts -n "mgear_curveCns473GroupParts"; + rename -uid "87B8D26F-4378-1669-4293-55AC537ADA6C"; setAttr ".ihi" 0; setAttr ".ic" -type "componentList" 1 "cv[*]"; -createNode tweak -n "tweak595"; - rename -uid "F6A652BF-4318-E2ED-9A8F-15AC7C44582A"; -createNode objectSet -n "tweakSet595"; - rename -uid "CB057CFA-4790-BCA2-44F9-A1BC51730229"; +createNode objectSet -n "tweakSet621"; + rename -uid "6BFAA29C-4C61-CBCC-0267-0EB84B8281B5"; setAttr ".ihi" 0; setAttr ".vo" yes; -createNode groupId -n "groupId8759"; - rename -uid "E9504203-47E0-3AA4-2756-C7AC01F9C587"; +createNode groupId -n "groupId8811"; + rename -uid "7D11EF4C-42BF-2FD9-6B1E-EC99AB6ABAFA"; setAttr ".ihi" 0; -createNode groupParts -n "groupParts1190"; - rename -uid "B52ED559-48B9-BCE5-CA7C-D2826A588B93"; +createNode groupParts -n "groupParts1242"; + rename -uid "353F9E22-4993-5E6A-9EBD-2B8E3D7B0FDE"; setAttr ".ihi" 0; setAttr ".ic" -type "componentList" 1 "cv[*]"; -createNode mgear_curveCns -n "mgear_curveCns441"; - rename -uid "AEFDBD59-4115-7E19-3C92-68A238066C36"; +createNode unitConversion -n "unitConversion162"; + rename -uid "C0C76FE5-4293-F01D-C716-B5A002017585"; + setAttr ".cf" 0.017453292519943295; +createNode mgear_curveCns -n "mgear_curveCns474"; + rename -uid "68315F43-4894-496F-68E8-70948C2F7321"; setAttr -s 4 ".inputs"; -createNode objectSet -n "mgear_curveCns441Set"; - rename -uid "7CD7A3BF-4238-E99C-F31B-D2B0A9983D63"; +createNode tweak -n "tweak622"; + rename -uid "6662B9DA-4B9E-E7A0-E57F-FF966F53955D"; +createNode objectSet -n "mgear_curveCns474Set"; + rename -uid "CBD129C7-4B1B-B749-E1FF-60A0EB916A6A"; setAttr ".ihi" 0; setAttr ".vo" yes; -createNode groupId -n "mgear_curveCns441GroupId"; - rename -uid "E691CE4F-4B9F-9247-0DC5-57BE3E5DFF82"; +createNode groupId -n "mgear_curveCns474GroupId"; + rename -uid "1522CD8A-4627-EAE2-3274-78AC1C872A29"; setAttr ".ihi" 0; -createNode groupParts -n "mgear_curveCns441GroupParts"; - rename -uid "0237440D-4F19-DE2F-A0A9-F89F88D72B7B"; +createNode groupParts -n "mgear_curveCns474GroupParts"; + rename -uid "73A12010-4511-4FB7-6603-84958A5391D8"; setAttr ".ihi" 0; setAttr ".ic" -type "componentList" 1 "cv[*]"; -createNode tweak -n "tweak589"; - rename -uid "0790108A-4973-58B8-331A-F8AB95079B7C"; -createNode objectSet -n "tweakSet589"; - rename -uid "8F846CCF-4860-3CCD-4B3E-C7BCB7E95E26"; +createNode objectSet -n "tweakSet622"; + rename -uid "43923750-49C7-B42B-E2A7-51ABF2734D38"; setAttr ".ihi" 0; setAttr ".vo" yes; -createNode groupId -n "groupId8747"; - rename -uid "61E1804B-447E-B88A-F77A-9D83E46D5975"; +createNode groupId -n "groupId8813"; + rename -uid "28BA8B7B-4B3E-F5AD-6401-E68B7534CB6F"; setAttr ".ihi" 0; -createNode groupParts -n "groupParts1178"; - rename -uid "B5C1067B-42BF-8507-A142-5D94C6C82111"; +createNode groupParts -n "groupParts1244"; + rename -uid "8FBF3776-4042-0571-A965-5B8B868E39E6"; setAttr ".ihi" 0; setAttr ".ic" -type "componentList" 1 "cv[*]"; -createNode unitConversion -n "unitConversion141"; - rename -uid "CEF83599-4CCF-F0DB-1C89-80A6E9B41394"; +createNode unitConversion -n "unitConversion163"; + rename -uid "9EE6BF9E-49F2-8051-0145-14BF3BF8D888"; setAttr ".cf" 0.017453292519943295; -createNode mgear_curveCns -n "mgear_curveCns440"; - rename -uid "36E583FC-4FBB-D5AE-CE54-2FBF16606A61"; - setAttr -s 2 ".inputs"; -createNode objectSet -n "mgear_curveCns440Set"; - rename -uid "B3B051A5-40DC-4D7A-6BEF-A694C5B1E8B5"; +createNode mgear_curveCns -n "mgear_curveCns475"; + rename -uid "5A48258B-4712-387D-FF28-9C9AD42C4238"; + setAttr -s 4 ".inputs"; +createNode tweak -n "tweak623"; + rename -uid "FB0A96DB-4CF7-5DDE-1B29-D3A3A7458ED8"; +createNode objectSet -n "mgear_curveCns475Set"; + rename -uid "CDFF8B7A-4B93-129B-09B2-4F882F41E30C"; setAttr ".ihi" 0; setAttr ".vo" yes; -createNode groupId -n "mgear_curveCns440GroupId"; - rename -uid "9EE25E55-49EB-0E1E-EE1C-CA88476BCE7C"; +createNode groupId -n "mgear_curveCns475GroupId"; + rename -uid "C6396D2B-436F-04AA-84F8-AEBF17821200"; setAttr ".ihi" 0; -createNode groupParts -n "mgear_curveCns440GroupParts"; - rename -uid "2805B6F3-485C-9F09-B4E0-CFBFAD0DDA5A"; +createNode groupParts -n "mgear_curveCns475GroupParts"; + rename -uid "BA137669-4B49-D5DE-4D23-8EABB3A1EE72"; setAttr ".ihi" 0; setAttr ".ic" -type "componentList" 1 "cv[*]"; -createNode tweak -n "tweak588"; - rename -uid "C7FE40A8-42ED-668E-436A-7890B2494789"; -createNode objectSet -n "tweakSet588"; - rename -uid "385DE1FC-4761-EFEC-7CB3-F7B1EE487CF9"; +createNode objectSet -n "tweakSet623"; + rename -uid "D2DE9FA4-49CF-70DE-FD27-339B253F3FBB"; setAttr ".ihi" 0; setAttr ".vo" yes; -createNode groupId -n "groupId8745"; - rename -uid "0C0FC293-445B-C3D1-CC9F-62A7491B9F06"; +createNode groupId -n "groupId8815"; + rename -uid "CDC93E76-4B8F-B42A-A19E-D99C30E7454F"; setAttr ".ihi" 0; -createNode groupParts -n "groupParts1176"; - rename -uid "9FC7CC11-4348-038C-B218-8DBB8C1BA4E4"; +createNode groupParts -n "groupParts1246"; + rename -uid "9754CF7C-4196-A227-AE22-AA8F77276F2C"; setAttr ".ihi" 0; setAttr ".ic" -type "componentList" 1 "cv[*]"; -createNode unitConversion -n "unitConversion131"; - rename -uid "BBD1CB1C-4F62-4188-5A50-3686BB2374E2"; +createNode unitConversion -n "unitConversion164"; + rename -uid "38427B25-4F9E-6584-AFB4-F2B401B81112"; setAttr ".cf" 0.017453292519943295; -createNode mgear_curveCns -n "mgear_curveCns411"; - rename -uid "08F3E21F-4B06-0356-7D16-EEBE4134C543"; - setAttr -s 2 ".inputs"; -createNode objectSet -n "mgear_curveCns411Set"; - rename -uid "5A582EA6-4A3A-4B62-0F93-4C95656F5BB2"; +createNode mgear_curveCns -n "mgear_curveCns476"; + rename -uid "0026FA6F-442B-B3B5-104C-44A0E234E583"; + setAttr -s 4 ".inputs"; +createNode tweak -n "tweak624"; + rename -uid "075FEAEF-45C6-7403-70F0-8C9D72CB7E74"; +createNode objectSet -n "mgear_curveCns476Set"; + rename -uid "0176136F-4B2C-8C14-C5EF-A69D01EBFEBF"; setAttr ".ihi" 0; setAttr ".vo" yes; -createNode groupId -n "mgear_curveCns411GroupId"; - rename -uid "F5466900-4553-A4E5-B194-46BC61B6E316"; +createNode groupId -n "mgear_curveCns476GroupId"; + rename -uid "FA08E5B0-478C-F188-C05A-ABA8857A01E5"; setAttr ".ihi" 0; -createNode groupParts -n "mgear_curveCns411GroupParts"; - rename -uid "50667983-4418-661D-192A-5CAE90921C02"; +createNode groupParts -n "mgear_curveCns476GroupParts"; + rename -uid "3A367FA5-4765-AAAD-34DA-06ACA30BC676"; setAttr ".ihi" 0; setAttr ".ic" -type "componentList" 1 "cv[*]"; -createNode tweak -n "tweak559"; - rename -uid "C111B88C-44B1-50CD-D3A8-A58D51C6A560"; -createNode objectSet -n "tweakSet559"; - rename -uid "4F8A15D5-4D18-7ADE-C3B6-5595F9195D04"; +createNode objectSet -n "tweakSet624"; + rename -uid "3F6528C4-47EE-6E9E-D506-F883A67E6E68"; setAttr ".ihi" 0; setAttr ".vo" yes; -createNode groupId -n "groupId8687"; - rename -uid "D88A5970-4D84-0204-A654-49B38D533AA8"; +createNode groupId -n "groupId8817"; + rename -uid "B01A7C2F-4990-571C-AC01-FC89F45F89F0"; setAttr ".ihi" 0; -createNode groupParts -n "groupParts1118"; - rename -uid "362539CF-4339-BC58-D28A-4CB816F2E1B1"; +createNode groupParts -n "groupParts1248"; + rename -uid "D79B879F-4558-7602-4772-DCB01A972124"; setAttr ".ihi" 0; setAttr ".ic" -type "componentList" 1 "cv[*]"; -createNode animCurveUU -n "leg_L0_root_st_profile1"; - rename -uid "59D4CF91-420F-D345-78D8-848A28FA1649"; +createNode animCurveUU -n "leg_L0_root_st_profile"; + rename -uid "D51E85C4-4590-61A9-7428-A48DE3E96606"; setAttr ".tan" 18; setAttr ".wgt" no; setAttr -s 3 ".ktv[0:2]" 0 0 0.5 -1 1 0; -createNode animCurveUU -n "leg_L0_root_sq_profile1"; - rename -uid "4458A47B-42B8-8010-D527-D481ABB45F09"; +createNode animCurveUU -n "leg_L0_root_sq_profile"; + rename -uid "E1E9900B-4CD0-8B71-C356-B789C0788981"; setAttr ".tan" 18; setAttr ".wgt" no; setAttr -s 3 ".ktv[0:2]" 0 0 0.5 1 1 0; -createNode mgear_curveCns -n "mgear_curveCns438"; - rename -uid "13C86E04-4DF4-0A34-7474-4A9313DC5C8C"; +createNode mgear_curveCns -n "mgear_curveCns477"; + rename -uid "BBD17CCE-40E6-1C70-57A6-4380D0E7D024"; setAttr -s 4 ".inputs"; -createNode objectSet -n "mgear_curveCns438Set"; - rename -uid "3AE01A4E-4C10-0FC6-C5EB-12A2EA51CC43"; +createNode tweak -n "tweak625"; + rename -uid "02A57130-4859-EC06-D0AD-EFB0E94D45D8"; +createNode objectSet -n "mgear_curveCns477Set"; + rename -uid "57FB8F5E-4D58-9991-F0D8-958647307602"; setAttr ".ihi" 0; setAttr ".vo" yes; -createNode groupId -n "mgear_curveCns438GroupId"; - rename -uid "EE24DCEF-4EA4-7038-B427-6699D1C855E4"; +createNode groupId -n "mgear_curveCns477GroupId"; + rename -uid "6F76E598-438C-00CE-7C5F-E38970CEC2EB"; setAttr ".ihi" 0; -createNode groupParts -n "mgear_curveCns438GroupParts"; - rename -uid "5140C9DB-4A94-172D-FC5F-1D8170ADBA8C"; +createNode groupParts -n "mgear_curveCns477GroupParts"; + rename -uid "B57D3634-4740-5A86-5743-3EBF7F3F33A2"; setAttr ".ihi" 0; setAttr ".ic" -type "componentList" 1 "cv[*]"; -createNode tweak -n "tweak586"; - rename -uid "5F7CFDA9-41F3-E77B-AB5C-86AE692FF1BB"; -createNode objectSet -n "tweakSet586"; - rename -uid "9586CE03-47E0-3409-1F2F-1290C8DEEEAF"; +createNode objectSet -n "tweakSet625"; + rename -uid "F0CCDF29-4451-9E56-4E7B-A9BB88CB02A3"; setAttr ".ihi" 0; setAttr ".vo" yes; -createNode groupId -n "groupId8741"; - rename -uid "D0091B92-4D7C-99E7-B99A-B29118E24FD2"; +createNode groupId -n "groupId8819"; + rename -uid "40A82E62-423D-2DF7-738A-26B9AD09B8CE"; setAttr ".ihi" 0; -createNode groupParts -n "groupParts1172"; - rename -uid "8CAD272F-43FC-4D53-9DB5-BC99766A70AF"; +createNode groupParts -n "groupParts1250"; + rename -uid "30C20A11-4943-FD0D-323C-30875FFEBC62"; setAttr ".ihi" 0; setAttr ".ic" -type "componentList" 1 "cv[*]"; -createNode mgear_curveCns -n "mgear_curveCns439"; - rename -uid "F76C9672-41BC-CFDE-9E17-8FB1FF3B67DE"; - setAttr -s 5 ".inputs"; -createNode objectSet -n "mgear_curveCns439Set"; - rename -uid "9F3E9A1C-4955-C517-9845-1795874DF17D"; +createNode mgear_curveCns -n "mgear_curveCns478"; + rename -uid "0295FF8F-4209-C323-99EC-F99BD0CDA9D4"; + setAttr -s 4 ".inputs"; +createNode tweak -n "tweak626"; + rename -uid "D1922B21-4BF1-0921-E5EE-3893A91DF7D9"; +createNode objectSet -n "mgear_curveCns478Set"; + rename -uid "F0CAF722-4DF7-82BB-1FEB-2FB1E41144B3"; setAttr ".ihi" 0; setAttr ".vo" yes; -createNode groupId -n "mgear_curveCns439GroupId"; - rename -uid "55CD349A-4A0E-4D2F-018C-279113B9F6A6"; +createNode groupId -n "mgear_curveCns478GroupId"; + rename -uid "88B170D8-491D-2A76-BB68-05B32C26F734"; setAttr ".ihi" 0; -createNode groupParts -n "mgear_curveCns439GroupParts"; - rename -uid "3C5F0BED-4DA8-0E22-996B-659FEDD70D07"; +createNode groupParts -n "mgear_curveCns478GroupParts"; + rename -uid "D6573FAC-4494-4A47-E003-45999F0904E6"; setAttr ".ihi" 0; setAttr ".ic" -type "componentList" 1 "cv[*]"; -createNode tweak -n "tweak587"; - rename -uid "D90051B7-40D2-FC6B-533B-4A8BF036FE5C"; -createNode objectSet -n "tweakSet587"; - rename -uid "B271E63D-4082-5014-9A1D-51B2EB28F37B"; +createNode objectSet -n "tweakSet626"; + rename -uid "234E34B6-4D5F-8E69-3316-33BB82694E2F"; setAttr ".ihi" 0; setAttr ".vo" yes; -createNode groupId -n "groupId8743"; - rename -uid "66E1C800-4099-DEE0-53F8-EC81852230A2"; +createNode groupId -n "groupId8821"; + rename -uid "34B7548C-4970-2B4E-E6F6-00A12EB56439"; setAttr ".ihi" 0; -createNode groupParts -n "groupParts1174"; - rename -uid "19F9B247-469E-560E-0131-8EAE1A5B1E22"; +createNode groupParts -n "groupParts1252"; + rename -uid "4AB36852-478F-4651-C299-E58BA415FA19"; setAttr ".ihi" 0; setAttr ".ic" -type "componentList" 1 "cv[*]"; -createNode mgear_curveCns -n "mgear_curveCns437"; - rename -uid "1A4064EB-4759-7F66-ACB5-E19EC377718A"; - setAttr -s 4 ".inputs"; -createNode objectSet -n "mgear_curveCns437Set"; - rename -uid "2BAA369E-4B16-7751-231F-C2B3D552A91F"; +createNode mgear_curveCns -n "mgear_curveCns479"; + rename -uid "703DDCE5-4B51-AC7D-6592-C0BBA5E1920F"; + setAttr -s 5 ".inputs"; +createNode tweak -n "tweak627"; + rename -uid "137D2E7E-42C1-9DC7-F448-DFBB850A5F97"; +createNode objectSet -n "mgear_curveCns479Set"; + rename -uid "350F0E2F-42D9-FF91-F235-35B3BBB32164"; setAttr ".ihi" 0; setAttr ".vo" yes; -createNode groupId -n "mgear_curveCns437GroupId"; - rename -uid "A4224A04-402B-7DDB-5C66-0DA023058932"; +createNode groupId -n "mgear_curveCns479GroupId"; + rename -uid "AE52A70C-4687-8E5C-19F6-07A7DD6C9655"; setAttr ".ihi" 0; -createNode groupParts -n "mgear_curveCns437GroupParts"; - rename -uid "27FD7DED-440C-8012-D3EE-08BA5A6E1777"; +createNode groupParts -n "mgear_curveCns479GroupParts"; + rename -uid "695D90B3-4559-02B4-EF0D-CB91C32E196C"; setAttr ".ihi" 0; setAttr ".ic" -type "componentList" 1 "cv[*]"; -createNode tweak -n "tweak585"; - rename -uid "278A459E-4775-53D5-6293-47AF86BD0291"; -createNode objectSet -n "tweakSet585"; - rename -uid "03CE92A3-498D-6A55-0EBD-8A80BDC756DD"; +createNode objectSet -n "tweakSet627"; + rename -uid "84E9F1FE-4367-3EF8-2EC0-24846F403C75"; setAttr ".ihi" 0; setAttr ".vo" yes; -createNode groupId -n "groupId8739"; - rename -uid "AEFF13B1-48AC-02DA-16A4-E083A5B14C49"; +createNode groupId -n "groupId8823"; + rename -uid "CA62AE78-4BB0-9D4F-C29C-7EA663D689E9"; setAttr ".ihi" 0; -createNode groupParts -n "groupParts1170"; - rename -uid "2BA32F74-4303-416A-B7E1-408F4B34F6CB"; +createNode groupParts -n "groupParts1254"; + rename -uid "AAA54092-4F91-3FB1-8C9F-80965F9ED1AE"; setAttr ".ihi" 0; setAttr ".ic" -type "componentList" 1 "cv[*]"; -createNode animCurveUU -n "leg_R0_root_st_profile"; - rename -uid "9DDCC9D9-4FD2-7038-9CAB-1EB8796E0C03"; +createNode animCurveUU -n "leg_R0_root_st_profile1"; + rename -uid "554F7AC2-4738-77E1-EC96-10B0065F4CDF"; setAttr ".tan" 18; setAttr ".wgt" no; setAttr -s 3 ".ktv[0:2]" 0 0 0.5 -1 1 0; -createNode animCurveUU -n "leg_R0_root_sq_profile"; - rename -uid "B93CEEFB-49C9-DA56-0B5B-AE8724E1F3C0"; +createNode animCurveUU -n "leg_R0_root_sq_profile1"; + rename -uid "26E47BD8-41DA-2B00-3C58-0DBFC69D4CCD"; setAttr ".tan" 18; setAttr ".wgt" no; setAttr -s 3 ".ktv[0:2]" 0 0 0.5 1 1 0; -createNode mgear_curveCns -n "mgear_curveCns449"; - rename -uid "8E458E37-4AB0-66E7-BF66-28AF0B22E464"; +createNode mgear_curveCns -n "mgear_curveCns480"; + rename -uid "D95F15DE-4313-45CF-DAF8-C0835C8B695F"; setAttr -s 4 ".inputs"; -createNode objectSet -n "mgear_curveCns449Set"; - rename -uid "52F3C0A8-49C8-8F75-E85F-CF9A3E2E06E7"; +createNode tweak -n "tweak628"; + rename -uid "5D22EC37-41CA-2B13-8DE6-87BC812EC506"; +createNode objectSet -n "mgear_curveCns480Set"; + rename -uid "A6301360-4BBC-0E62-B66A-E9B0B77387FE"; setAttr ".ihi" 0; setAttr ".vo" yes; -createNode groupId -n "mgear_curveCns449GroupId"; - rename -uid "B68C6CF3-4D72-EA54-3055-89943CE08F03"; +createNode groupId -n "mgear_curveCns480GroupId"; + rename -uid "0E35D8AF-4000-4626-A791-029A324C978A"; setAttr ".ihi" 0; -createNode groupParts -n "mgear_curveCns449GroupParts"; - rename -uid "5925DD59-430F-2392-B30B-F59CF86E32A0"; +createNode groupParts -n "mgear_curveCns480GroupParts"; + rename -uid "3D02FC4E-47C9-4C85-D097-279E7E38ADCB"; setAttr ".ihi" 0; setAttr ".ic" -type "componentList" 1 "cv[*]"; -createNode tweak -n "tweak597"; - rename -uid "95CF7E65-49EA-0120-4DAA-BA968D2282F2"; -createNode objectSet -n "tweakSet597"; - rename -uid "098D353D-4291-68D7-1A1E-4DA0AE3DD51D"; +createNode objectSet -n "tweakSet628"; + rename -uid "4BF65396-41DD-7CA2-860D-15A99634926A"; setAttr ".ihi" 0; setAttr ".vo" yes; -createNode groupId -n "groupId8763"; - rename -uid "6472AC46-421F-312E-784F-CFADC62AB9BE"; +createNode groupId -n "groupId8825"; + rename -uid "82446721-499D-DEDF-C5D2-7F84AF44DA7F"; setAttr ".ihi" 0; -createNode groupParts -n "groupParts1194"; - rename -uid "3C8B6830-4F09-0029-29C3-DF949A12CEA2"; +createNode groupParts -n "groupParts1256"; + rename -uid "EB6CD083-4573-42BE-7162-53AB9EDDAE10"; setAttr ".ihi" 0; setAttr ".ic" -type "componentList" 1 "cv[*]"; -createNode mgear_curveCns -n "mgear_curveCns450"; - rename -uid "77E3E106-470A-EAAE-F07B-939FA1F9C0AA"; - setAttr -s 5 ".inputs"; -createNode objectSet -n "mgear_curveCns450Set"; - rename -uid "80712821-4315-A132-86CB-90986959A6D3"; +createNode mgear_curveCns -n "mgear_curveCns481"; + rename -uid "6E9E5D27-47B4-63A3-84A9-F2B8BF1F8D99"; + setAttr -s 4 ".inputs"; +createNode tweak -n "tweak629"; + rename -uid "2A9D62E0-4188-4A10-976F-A1A9079486E4"; +createNode objectSet -n "mgear_curveCns481Set"; + rename -uid "D0013EBB-4962-573F-0143-0A8BE8DDBAED"; setAttr ".ihi" 0; setAttr ".vo" yes; -createNode groupId -n "mgear_curveCns450GroupId"; - rename -uid "9639714E-43FE-D73A-53E2-C1B1C19E1B49"; +createNode groupId -n "mgear_curveCns481GroupId"; + rename -uid "7004F407-4F05-8CAC-EA72-2591B735038D"; setAttr ".ihi" 0; -createNode groupParts -n "mgear_curveCns450GroupParts"; - rename -uid "9E9D82EE-41D9-37C7-4033-0FA7EA984CB5"; +createNode groupParts -n "mgear_curveCns481GroupParts"; + rename -uid "8276EBCC-46F9-A737-DADB-0BA7369C96C1"; setAttr ".ihi" 0; setAttr ".ic" -type "componentList" 1 "cv[*]"; -createNode tweak -n "tweak598"; - rename -uid "CC5B69EF-45C1-9937-7249-58900D7C2088"; -createNode objectSet -n "tweakSet598"; - rename -uid "BB540FD5-449A-1E82-37C5-9F8852B71B0F"; +createNode objectSet -n "tweakSet629"; + rename -uid "805A2672-4639-8234-1301-E3A917CBE9CB"; setAttr ".ihi" 0; setAttr ".vo" yes; -createNode groupId -n "groupId8765"; - rename -uid "158D82D2-4060-618B-110A-C58988193903"; +createNode groupId -n "groupId8827"; + rename -uid "BF3BAD20-42BD-5473-AC06-4C90A8C0D879"; setAttr ".ihi" 0; -createNode groupParts -n "groupParts1196"; - rename -uid "AC296BDB-4FE0-D868-45B6-65A99A29F6E8"; +createNode groupParts -n "groupParts1258"; + rename -uid "3EDFEB1C-4ADB-A095-A47E-F1905B046FDF"; setAttr ".ihi" 0; setAttr ".ic" -type "componentList" 1 "cv[*]"; -createNode mgear_curveCns -n "mgear_curveCns448"; - rename -uid "19E0C624-4B56-536F-C71A-A590AE4AC34B"; - setAttr -s 4 ".inputs"; -createNode objectSet -n "mgear_curveCns448Set"; - rename -uid "A18DE6A4-4328-F0F9-49B9-58A8E66AF063"; +createNode mgear_curveCns -n "mgear_curveCns482"; + rename -uid "8F4194AC-45EF-44DE-6333-FD897C02E083"; + setAttr -s 5 ".inputs"; +createNode tweak -n "tweak630"; + rename -uid "1A08832E-4EAE-CFB0-1E55-9CAA138E61A8"; +createNode objectSet -n "mgear_curveCns482Set"; + rename -uid "9F78BC17-4647-E3E0-D603-D1AFA4E42EB4"; setAttr ".ihi" 0; setAttr ".vo" yes; -createNode groupId -n "mgear_curveCns448GroupId"; - rename -uid "C0E05451-4D2A-B5C8-2672-A4BFEB2A0742"; +createNode groupId -n "mgear_curveCns482GroupId"; + rename -uid "759C09B9-4B4D-A325-B4B3-CE931EC8F695"; setAttr ".ihi" 0; -createNode groupParts -n "mgear_curveCns448GroupParts"; - rename -uid "3E85FE8E-433C-27AA-96A3-D4B983413F06"; +createNode groupParts -n "mgear_curveCns482GroupParts"; + rename -uid "84520EC3-400F-1C86-548A-AABFE20C4A7D"; setAttr ".ihi" 0; setAttr ".ic" -type "componentList" 1 "cv[*]"; -createNode tweak -n "tweak596"; - rename -uid "B912DFD1-432E-2B9A-B894-AA9E2FCB9431"; -createNode objectSet -n "tweakSet596"; - rename -uid "2FA81C07-488D-23FD-A6CC-03A3011FF60B"; +createNode objectSet -n "tweakSet630"; + rename -uid "77EFBC8B-4483-A3E0-82FE-528897087E9D"; setAttr ".ihi" 0; setAttr ".vo" yes; -createNode groupId -n "groupId8761"; - rename -uid "01F20B11-4894-D1B8-09B2-FF9E4DF96CE7"; +createNode groupId -n "groupId8829"; + rename -uid "B53270CB-4B0C-9755-AAB9-7A93F38A33AE"; setAttr ".ihi" 0; -createNode groupParts -n "groupParts1192"; - rename -uid "B0B0BF58-4F9D-1DC1-6D7E-2CAC0937C53F"; +createNode groupParts -n "groupParts1260"; + rename -uid "D310D476-4B60-B45C-4C9B-4CA3ECDF6033"; setAttr ".ihi" 0; setAttr ".ic" -type "componentList" 1 "cv[*]"; +createNode script -n "uiConfigurationScriptNode"; + rename -uid "66D2A573-4BF1-BF2F-78B6-99BFF7141625"; + setAttr ".b" -type "string" ( + "// Maya Mel UI Configuration File.\n//\n// This script is machine generated. Edit at your own risk.\n//\n//\n\nglobal string $gMainPane;\nif (`paneLayout -exists $gMainPane`) {\n\n\tglobal int $gUseScenePanelConfig;\n\tint $useSceneConfig = $gUseScenePanelConfig;\n\tint $menusOkayInPanels = `optionVar -q allowMenusInPanels`;\tint $nVisPanes = `paneLayout -q -nvp $gMainPane`;\n\tint $nPanes = 0;\n\tstring $editorName;\n\tstring $panelName;\n\tstring $itemFilterName;\n\tstring $panelConfig;\n\n\t//\n\t// get current state of the UI\n\t//\n\tsceneUIReplacement -update $gMainPane;\n\n\t$panelName = `sceneUIReplacement -getNextPanel \"modelPanel\" (localizedPanelLabel(\"Top View\")) `;\n\tif (\"\" == $panelName) {\n\t\tif ($useSceneConfig) {\n\t\t\t$panelName = `modelPanel -unParent -l (localizedPanelLabel(\"Top View\")) -mbv $menusOkayInPanels `;\n\t\t\t$editorName = $panelName;\n modelEditor -e \n -camera \"top\" \n -useInteractiveMode 0\n -displayLights \"default\" \n -displayAppearance \"smoothShaded\" \n" + + " -activeOnly 0\n -ignorePanZoom 0\n -wireframeOnShaded 0\n -headsUpDisplay 1\n -holdOuts 1\n -selectionHiliteDisplay 1\n -useDefaultMaterial 0\n -bufferMode \"double\" \n -twoSidedLighting 0\n -backfaceCulling 0\n -xray 0\n -jointXray 0\n -activeComponentsXray 0\n -displayTextures 0\n -smoothWireframe 0\n -lineWidth 1\n -textureAnisotropic 0\n -textureHilight 1\n -textureSampling 2\n -textureDisplay \"modulate\" \n -textureMaxSize 32768\n -fogging 0\n -fogSource \"fragment\" \n -fogMode \"linear\" \n -fogStart 0\n -fogEnd 100\n -fogDensity 0.1\n -fogColor 0.5 0.5 0.5 1 \n -depthOfFieldPreview 1\n -maxConstantTransparency 1\n" + + " -rendererName \"vp2Renderer\" \n -objectFilterShowInHUD 1\n -isFiltered 0\n -colorResolution 256 256 \n -bumpResolution 512 512 \n -textureCompression 0\n -transparencyAlgorithm \"frontAndBackCull\" \n -transpInShadows 0\n -cullingOverride \"none\" \n -lowQualityLighting 0\n -maximumNumHardwareLights 1\n -occlusionCulling 0\n -shadingModel 0\n -useBaseRenderer 0\n -useReducedRenderer 0\n -smallObjectCulling 0\n -smallObjectThreshold -1 \n -interactiveDisableShadows 0\n -interactiveBackFaceCull 0\n -sortTransparent 1\n -nurbsCurves 1\n -nurbsSurfaces 1\n -polymeshes 1\n -subdivSurfaces 1\n -planes 1\n -lights 1\n -cameras 1\n -controlVertices 1\n" + + " -hulls 1\n -grid 1\n -imagePlane 1\n -joints 1\n -ikHandles 1\n -deformers 1\n -dynamics 1\n -particleInstancers 1\n -fluids 1\n -hairSystems 1\n -follicles 1\n -nCloths 1\n -nParticles 1\n -nRigids 1\n -dynamicConstraints 1\n -locators 1\n -manipulators 1\n -pluginShapes 1\n -dimensions 1\n -handles 1\n -pivots 1\n -textures 1\n -strokes 1\n -motionTrails 1\n -clipGhosts 1\n -greasePencils 1\n -shadows 0\n -captureSequenceNumber -1\n -width 1\n -height 1\n -sceneRenderFilter 0\n $editorName;\n modelEditor -e -viewSelected 0 $editorName;\n modelEditor -e \n" + + " -pluginObjects \"gpuCacheDisplayFilter\" 1 \n $editorName;\n\t\t}\n\t} else {\n\t\t$label = `panel -q -label $panelName`;\n\t\tmodelPanel -edit -l (localizedPanelLabel(\"Top View\")) -mbv $menusOkayInPanels $panelName;\n\t\t$editorName = $panelName;\n modelEditor -e \n -camera \"top\" \n -useInteractiveMode 0\n -displayLights \"default\" \n -displayAppearance \"smoothShaded\" \n -activeOnly 0\n -ignorePanZoom 0\n -wireframeOnShaded 0\n -headsUpDisplay 1\n -holdOuts 1\n -selectionHiliteDisplay 1\n -useDefaultMaterial 0\n -bufferMode \"double\" \n -twoSidedLighting 0\n -backfaceCulling 0\n -xray 0\n -jointXray 0\n -activeComponentsXray 0\n -displayTextures 0\n -smoothWireframe 0\n -lineWidth 1\n -textureAnisotropic 0\n -textureHilight 1\n -textureSampling 2\n -textureDisplay \"modulate\" \n" + + " -textureMaxSize 32768\n -fogging 0\n -fogSource \"fragment\" \n -fogMode \"linear\" \n -fogStart 0\n -fogEnd 100\n -fogDensity 0.1\n -fogColor 0.5 0.5 0.5 1 \n -depthOfFieldPreview 1\n -maxConstantTransparency 1\n -rendererName \"vp2Renderer\" \n -objectFilterShowInHUD 1\n -isFiltered 0\n -colorResolution 256 256 \n -bumpResolution 512 512 \n -textureCompression 0\n -transparencyAlgorithm \"frontAndBackCull\" \n -transpInShadows 0\n -cullingOverride \"none\" \n -lowQualityLighting 0\n -maximumNumHardwareLights 1\n -occlusionCulling 0\n -shadingModel 0\n -useBaseRenderer 0\n -useReducedRenderer 0\n -smallObjectCulling 0\n -smallObjectThreshold -1 \n -interactiveDisableShadows 0\n -interactiveBackFaceCull 0\n -sortTransparent 1\n" + + " -nurbsCurves 1\n -nurbsSurfaces 1\n -polymeshes 1\n -subdivSurfaces 1\n -planes 1\n -lights 1\n -cameras 1\n -controlVertices 1\n -hulls 1\n -grid 1\n -imagePlane 1\n -joints 1\n -ikHandles 1\n -deformers 1\n -dynamics 1\n -particleInstancers 1\n -fluids 1\n -hairSystems 1\n -follicles 1\n -nCloths 1\n -nParticles 1\n -nRigids 1\n -dynamicConstraints 1\n -locators 1\n -manipulators 1\n -pluginShapes 1\n -dimensions 1\n -handles 1\n -pivots 1\n -textures 1\n -strokes 1\n -motionTrails 1\n -clipGhosts 1\n -greasePencils 1\n -shadows 0\n -captureSequenceNumber -1\n -width 1\n -height 1\n -sceneRenderFilter 0\n $editorName;\n" + + " modelEditor -e -viewSelected 0 $editorName;\n modelEditor -e \n -pluginObjects \"gpuCacheDisplayFilter\" 1 \n $editorName;\n\t\tif (!$useSceneConfig) {\n\t\t\tpanel -e -l $label $panelName;\n\t\t}\n\t}\n\n\n\t$panelName = `sceneUIReplacement -getNextPanel \"modelPanel\" (localizedPanelLabel(\"Side View\")) `;\n\tif (\"\" == $panelName) {\n\t\tif ($useSceneConfig) {\n\t\t\t$panelName = `modelPanel -unParent -l (localizedPanelLabel(\"Side View\")) -mbv $menusOkayInPanels `;\n\t\t\t$editorName = $panelName;\n modelEditor -e \n -camera \"side\" \n -useInteractiveMode 0\n -displayLights \"default\" \n -displayAppearance \"smoothShaded\" \n -activeOnly 0\n -ignorePanZoom 0\n -wireframeOnShaded 0\n -headsUpDisplay 1\n -holdOuts 1\n -selectionHiliteDisplay 1\n -useDefaultMaterial 0\n -bufferMode \"double\" \n -twoSidedLighting 0\n -backfaceCulling 0\n" + + " -xray 0\n -jointXray 0\n -activeComponentsXray 0\n -displayTextures 0\n -smoothWireframe 0\n -lineWidth 1\n -textureAnisotropic 0\n -textureHilight 1\n -textureSampling 2\n -textureDisplay \"modulate\" \n -textureMaxSize 32768\n -fogging 0\n -fogSource \"fragment\" \n -fogMode \"linear\" \n -fogStart 0\n -fogEnd 100\n -fogDensity 0.1\n -fogColor 0.5 0.5 0.5 1 \n -depthOfFieldPreview 1\n -maxConstantTransparency 1\n -rendererName \"vp2Renderer\" \n -objectFilterShowInHUD 1\n -isFiltered 0\n -colorResolution 256 256 \n -bumpResolution 512 512 \n -textureCompression 0\n -transparencyAlgorithm \"frontAndBackCull\" \n -transpInShadows 0\n -cullingOverride \"none\" \n" + + " -lowQualityLighting 0\n -maximumNumHardwareLights 1\n -occlusionCulling 0\n -shadingModel 0\n -useBaseRenderer 0\n -useReducedRenderer 0\n -smallObjectCulling 0\n -smallObjectThreshold -1 \n -interactiveDisableShadows 0\n -interactiveBackFaceCull 0\n -sortTransparent 1\n -nurbsCurves 1\n -nurbsSurfaces 1\n -polymeshes 1\n -subdivSurfaces 1\n -planes 1\n -lights 1\n -cameras 1\n -controlVertices 1\n -hulls 1\n -grid 1\n -imagePlane 1\n -joints 1\n -ikHandles 1\n -deformers 1\n -dynamics 1\n -particleInstancers 1\n -fluids 1\n -hairSystems 1\n -follicles 1\n -nCloths 1\n -nParticles 1\n" + + " -nRigids 1\n -dynamicConstraints 1\n -locators 1\n -manipulators 1\n -pluginShapes 1\n -dimensions 1\n -handles 1\n -pivots 1\n -textures 1\n -strokes 1\n -motionTrails 1\n -clipGhosts 1\n -greasePencils 1\n -shadows 0\n -captureSequenceNumber -1\n -width 1\n -height 1\n -sceneRenderFilter 0\n $editorName;\n modelEditor -e -viewSelected 0 $editorName;\n modelEditor -e \n -pluginObjects \"gpuCacheDisplayFilter\" 1 \n $editorName;\n\t\t}\n\t} else {\n\t\t$label = `panel -q -label $panelName`;\n\t\tmodelPanel -edit -l (localizedPanelLabel(\"Side View\")) -mbv $menusOkayInPanels $panelName;\n\t\t$editorName = $panelName;\n modelEditor -e \n -camera \"side\" \n -useInteractiveMode 0\n -displayLights \"default\" \n" + + " -displayAppearance \"smoothShaded\" \n -activeOnly 0\n -ignorePanZoom 0\n -wireframeOnShaded 0\n -headsUpDisplay 1\n -holdOuts 1\n -selectionHiliteDisplay 1\n -useDefaultMaterial 0\n -bufferMode \"double\" \n -twoSidedLighting 0\n -backfaceCulling 0\n -xray 0\n -jointXray 0\n -activeComponentsXray 0\n -displayTextures 0\n -smoothWireframe 0\n -lineWidth 1\n -textureAnisotropic 0\n -textureHilight 1\n -textureSampling 2\n -textureDisplay \"modulate\" \n -textureMaxSize 32768\n -fogging 0\n -fogSource \"fragment\" \n -fogMode \"linear\" \n -fogStart 0\n -fogEnd 100\n -fogDensity 0.1\n -fogColor 0.5 0.5 0.5 1 \n -depthOfFieldPreview 1\n -maxConstantTransparency 1\n -rendererName \"vp2Renderer\" \n -objectFilterShowInHUD 1\n" + + " -isFiltered 0\n -colorResolution 256 256 \n -bumpResolution 512 512 \n -textureCompression 0\n -transparencyAlgorithm \"frontAndBackCull\" \n -transpInShadows 0\n -cullingOverride \"none\" \n -lowQualityLighting 0\n -maximumNumHardwareLights 1\n -occlusionCulling 0\n -shadingModel 0\n -useBaseRenderer 0\n -useReducedRenderer 0\n -smallObjectCulling 0\n -smallObjectThreshold -1 \n -interactiveDisableShadows 0\n -interactiveBackFaceCull 0\n -sortTransparent 1\n -nurbsCurves 1\n -nurbsSurfaces 1\n -polymeshes 1\n -subdivSurfaces 1\n -planes 1\n -lights 1\n -cameras 1\n -controlVertices 1\n -hulls 1\n -grid 1\n -imagePlane 1\n -joints 1\n -ikHandles 1\n -deformers 1\n -dynamics 1\n -particleInstancers 1\n" + + " -fluids 1\n -hairSystems 1\n -follicles 1\n -nCloths 1\n -nParticles 1\n -nRigids 1\n -dynamicConstraints 1\n -locators 1\n -manipulators 1\n -pluginShapes 1\n -dimensions 1\n -handles 1\n -pivots 1\n -textures 1\n -strokes 1\n -motionTrails 1\n -clipGhosts 1\n -greasePencils 1\n -shadows 0\n -captureSequenceNumber -1\n -width 1\n -height 1\n -sceneRenderFilter 0\n $editorName;\n modelEditor -e -viewSelected 0 $editorName;\n modelEditor -e \n -pluginObjects \"gpuCacheDisplayFilter\" 1 \n $editorName;\n\t\tif (!$useSceneConfig) {\n\t\t\tpanel -e -l $label $panelName;\n\t\t}\n\t}\n\n\n\t$panelName = `sceneUIReplacement -getNextPanel \"modelPanel\" (localizedPanelLabel(\"Front View\")) `;\n\tif (\"\" == $panelName) {\n\t\tif ($useSceneConfig) {\n\t\t\t$panelName = `modelPanel -unParent -l (localizedPanelLabel(\"Front View\")) -mbv $menusOkayInPanels `;\n" + + "\t\t\t$editorName = $panelName;\n modelEditor -e \n -camera \"front\" \n -useInteractiveMode 0\n -displayLights \"default\" \n -displayAppearance \"smoothShaded\" \n -activeOnly 0\n -ignorePanZoom 0\n -wireframeOnShaded 0\n -headsUpDisplay 1\n -holdOuts 1\n -selectionHiliteDisplay 1\n -useDefaultMaterial 0\n -bufferMode \"double\" \n -twoSidedLighting 0\n -backfaceCulling 0\n -xray 0\n -jointXray 0\n -activeComponentsXray 0\n -displayTextures 0\n -smoothWireframe 0\n -lineWidth 1\n -textureAnisotropic 0\n -textureHilight 1\n -textureSampling 2\n -textureDisplay \"modulate\" \n -textureMaxSize 32768\n -fogging 0\n -fogSource \"fragment\" \n -fogMode \"linear\" \n" + + " -fogStart 0\n -fogEnd 100\n -fogDensity 0.1\n -fogColor 0.5 0.5 0.5 1 \n -depthOfFieldPreview 1\n -maxConstantTransparency 1\n -rendererName \"vp2Renderer\" \n -objectFilterShowInHUD 1\n -isFiltered 0\n -colorResolution 256 256 \n -bumpResolution 512 512 \n -textureCompression 0\n -transparencyAlgorithm \"frontAndBackCull\" \n -transpInShadows 0\n -cullingOverride \"none\" \n -lowQualityLighting 0\n -maximumNumHardwareLights 1\n -occlusionCulling 0\n -shadingModel 0\n -useBaseRenderer 0\n -useReducedRenderer 0\n -smallObjectCulling 0\n -smallObjectThreshold -1 \n -interactiveDisableShadows 0\n -interactiveBackFaceCull 0\n -sortTransparent 1\n -nurbsCurves 1\n" + + " -nurbsSurfaces 1\n -polymeshes 1\n -subdivSurfaces 1\n -planes 1\n -lights 1\n -cameras 1\n -controlVertices 1\n -hulls 1\n -grid 1\n -imagePlane 1\n -joints 1\n -ikHandles 1\n -deformers 1\n -dynamics 1\n -particleInstancers 1\n -fluids 1\n -hairSystems 1\n -follicles 1\n -nCloths 1\n -nParticles 1\n -nRigids 1\n -dynamicConstraints 1\n -locators 1\n -manipulators 1\n -pluginShapes 1\n -dimensions 1\n -handles 1\n -pivots 1\n -textures 1\n -strokes 1\n -motionTrails 1\n -clipGhosts 1\n -greasePencils 1\n -shadows 0\n -captureSequenceNumber -1\n" + + " -width 1\n -height 1\n -sceneRenderFilter 0\n $editorName;\n modelEditor -e -viewSelected 0 $editorName;\n modelEditor -e \n -pluginObjects \"gpuCacheDisplayFilter\" 1 \n $editorName;\n\t\t}\n\t} else {\n\t\t$label = `panel -q -label $panelName`;\n\t\tmodelPanel -edit -l (localizedPanelLabel(\"Front View\")) -mbv $menusOkayInPanels $panelName;\n\t\t$editorName = $panelName;\n modelEditor -e \n -camera \"front\" \n -useInteractiveMode 0\n -displayLights \"default\" \n -displayAppearance \"smoothShaded\" \n -activeOnly 0\n -ignorePanZoom 0\n -wireframeOnShaded 0\n -headsUpDisplay 1\n -holdOuts 1\n -selectionHiliteDisplay 1\n -useDefaultMaterial 0\n -bufferMode \"double\" \n -twoSidedLighting 0\n -backfaceCulling 0\n -xray 0\n -jointXray 0\n -activeComponentsXray 0\n" + + " -displayTextures 0\n -smoothWireframe 0\n -lineWidth 1\n -textureAnisotropic 0\n -textureHilight 1\n -textureSampling 2\n -textureDisplay \"modulate\" \n -textureMaxSize 32768\n -fogging 0\n -fogSource \"fragment\" \n -fogMode \"linear\" \n -fogStart 0\n -fogEnd 100\n -fogDensity 0.1\n -fogColor 0.5 0.5 0.5 1 \n -depthOfFieldPreview 1\n -maxConstantTransparency 1\n -rendererName \"vp2Renderer\" \n -objectFilterShowInHUD 1\n -isFiltered 0\n -colorResolution 256 256 \n -bumpResolution 512 512 \n -textureCompression 0\n -transparencyAlgorithm \"frontAndBackCull\" \n -transpInShadows 0\n -cullingOverride \"none\" \n -lowQualityLighting 0\n -maximumNumHardwareLights 1\n -occlusionCulling 0\n -shadingModel 0\n -useBaseRenderer 0\n" + + " -useReducedRenderer 0\n -smallObjectCulling 0\n -smallObjectThreshold -1 \n -interactiveDisableShadows 0\n -interactiveBackFaceCull 0\n -sortTransparent 1\n -nurbsCurves 1\n -nurbsSurfaces 1\n -polymeshes 1\n -subdivSurfaces 1\n -planes 1\n -lights 1\n -cameras 1\n -controlVertices 1\n -hulls 1\n -grid 1\n -imagePlane 1\n -joints 1\n -ikHandles 1\n -deformers 1\n -dynamics 1\n -particleInstancers 1\n -fluids 1\n -hairSystems 1\n -follicles 1\n -nCloths 1\n -nParticles 1\n -nRigids 1\n -dynamicConstraints 1\n -locators 1\n -manipulators 1\n -pluginShapes 1\n -dimensions 1\n -handles 1\n -pivots 1\n -textures 1\n -strokes 1\n -motionTrails 1\n" + + " -clipGhosts 1\n -greasePencils 1\n -shadows 0\n -captureSequenceNumber -1\n -width 1\n -height 1\n -sceneRenderFilter 0\n $editorName;\n modelEditor -e -viewSelected 0 $editorName;\n modelEditor -e \n -pluginObjects \"gpuCacheDisplayFilter\" 1 \n $editorName;\n\t\tif (!$useSceneConfig) {\n\t\t\tpanel -e -l $label $panelName;\n\t\t}\n\t}\n\n\n\t$panelName = `sceneUIReplacement -getNextPanel \"modelPanel\" (localizedPanelLabel(\"Persp View\")) `;\n\tif (\"\" == $panelName) {\n\t\tif ($useSceneConfig) {\n\t\t\t$panelName = `modelPanel -unParent -l (localizedPanelLabel(\"Persp View\")) -mbv $menusOkayInPanels `;\n\t\t\t$editorName = $panelName;\n modelEditor -e \n -camera \"persp\" \n -useInteractiveMode 0\n -displayLights \"default\" \n -displayAppearance \"smoothShaded\" \n -activeOnly 0\n -ignorePanZoom 0\n -wireframeOnShaded 0\n -headsUpDisplay 1\n" + + " -holdOuts 1\n -selectionHiliteDisplay 1\n -useDefaultMaterial 0\n -bufferMode \"double\" \n -twoSidedLighting 0\n -backfaceCulling 0\n -xray 0\n -jointXray 0\n -activeComponentsXray 0\n -displayTextures 0\n -smoothWireframe 0\n -lineWidth 1\n -textureAnisotropic 0\n -textureHilight 1\n -textureSampling 2\n -textureDisplay \"modulate\" \n -textureMaxSize 32768\n -fogging 0\n -fogSource \"fragment\" \n -fogMode \"linear\" \n -fogStart 0\n -fogEnd 100\n -fogDensity 0.1\n -fogColor 0.5 0.5 0.5 1 \n -depthOfFieldPreview 1\n -maxConstantTransparency 1\n -rendererName \"vp2Renderer\" \n -objectFilterShowInHUD 1\n -isFiltered 0\n" + + " -colorResolution 256 256 \n -bumpResolution 512 512 \n -textureCompression 0\n -transparencyAlgorithm \"frontAndBackCull\" \n -transpInShadows 0\n -cullingOverride \"none\" \n -lowQualityLighting 0\n -maximumNumHardwareLights 1\n -occlusionCulling 0\n -shadingModel 0\n -useBaseRenderer 0\n -useReducedRenderer 0\n -smallObjectCulling 0\n -smallObjectThreshold -1 \n -interactiveDisableShadows 0\n -interactiveBackFaceCull 0\n -sortTransparent 1\n -nurbsCurves 1\n -nurbsSurfaces 1\n -polymeshes 1\n -subdivSurfaces 1\n -planes 1\n -lights 1\n -cameras 1\n -controlVertices 1\n -hulls 1\n -grid 1\n -imagePlane 1\n -joints 1\n" + + " -ikHandles 1\n -deformers 1\n -dynamics 1\n -particleInstancers 1\n -fluids 1\n -hairSystems 1\n -follicles 1\n -nCloths 1\n -nParticles 1\n -nRigids 1\n -dynamicConstraints 1\n -locators 1\n -manipulators 1\n -pluginShapes 1\n -dimensions 1\n -handles 1\n -pivots 1\n -textures 1\n -strokes 1\n -motionTrails 1\n -clipGhosts 1\n -greasePencils 1\n -shadows 0\n -captureSequenceNumber -1\n -width 1300\n -height 740\n -sceneRenderFilter 0\n $editorName;\n modelEditor -e -viewSelected 0 $editorName;\n modelEditor -e \n -pluginObjects \"gpuCacheDisplayFilter\" 1 \n $editorName;\n\t\t}\n\t} else {\n" + + "\t\t$label = `panel -q -label $panelName`;\n\t\tmodelPanel -edit -l (localizedPanelLabel(\"Persp View\")) -mbv $menusOkayInPanels $panelName;\n\t\t$editorName = $panelName;\n modelEditor -e \n -camera \"persp\" \n -useInteractiveMode 0\n -displayLights \"default\" \n -displayAppearance \"smoothShaded\" \n -activeOnly 0\n -ignorePanZoom 0\n -wireframeOnShaded 0\n -headsUpDisplay 1\n -holdOuts 1\n -selectionHiliteDisplay 1\n -useDefaultMaterial 0\n -bufferMode \"double\" \n -twoSidedLighting 0\n -backfaceCulling 0\n -xray 0\n -jointXray 0\n -activeComponentsXray 0\n -displayTextures 0\n -smoothWireframe 0\n -lineWidth 1\n -textureAnisotropic 0\n -textureHilight 1\n -textureSampling 2\n -textureDisplay \"modulate\" \n -textureMaxSize 32768\n -fogging 0\n -fogSource \"fragment\" \n" + + " -fogMode \"linear\" \n -fogStart 0\n -fogEnd 100\n -fogDensity 0.1\n -fogColor 0.5 0.5 0.5 1 \n -depthOfFieldPreview 1\n -maxConstantTransparency 1\n -rendererName \"vp2Renderer\" \n -objectFilterShowInHUD 1\n -isFiltered 0\n -colorResolution 256 256 \n -bumpResolution 512 512 \n -textureCompression 0\n -transparencyAlgorithm \"frontAndBackCull\" \n -transpInShadows 0\n -cullingOverride \"none\" \n -lowQualityLighting 0\n -maximumNumHardwareLights 1\n -occlusionCulling 0\n -shadingModel 0\n -useBaseRenderer 0\n -useReducedRenderer 0\n -smallObjectCulling 0\n -smallObjectThreshold -1 \n -interactiveDisableShadows 0\n -interactiveBackFaceCull 0\n -sortTransparent 1\n -nurbsCurves 1\n -nurbsSurfaces 1\n -polymeshes 1\n -subdivSurfaces 1\n" + + " -planes 1\n -lights 1\n -cameras 1\n -controlVertices 1\n -hulls 1\n -grid 1\n -imagePlane 1\n -joints 1\n -ikHandles 1\n -deformers 1\n -dynamics 1\n -particleInstancers 1\n -fluids 1\n -hairSystems 1\n -follicles 1\n -nCloths 1\n -nParticles 1\n -nRigids 1\n -dynamicConstraints 1\n -locators 1\n -manipulators 1\n -pluginShapes 1\n -dimensions 1\n -handles 1\n -pivots 1\n -textures 1\n -strokes 1\n -motionTrails 1\n -clipGhosts 1\n -greasePencils 1\n -shadows 0\n -captureSequenceNumber -1\n -width 1300\n -height 740\n -sceneRenderFilter 0\n $editorName;\n modelEditor -e -viewSelected 0 $editorName;\n modelEditor -e \n -pluginObjects \"gpuCacheDisplayFilter\" 1 \n" + + " $editorName;\n\t\tif (!$useSceneConfig) {\n\t\t\tpanel -e -l $label $panelName;\n\t\t}\n\t}\n\n\n\t$panelName = `sceneUIReplacement -getNextPanel \"outlinerPanel\" (localizedPanelLabel(\"Outliner\")) `;\n\tif (\"\" == $panelName) {\n\t\tif ($useSceneConfig) {\n\t\t\t$panelName = `outlinerPanel -unParent -l (localizedPanelLabel(\"Outliner\")) -mbv $menusOkayInPanels `;\n\t\t\t$editorName = $panelName;\n outlinerEditor -e \n -docTag \"isolOutln_fromSeln\" \n -showShapes 0\n -showAssignedMaterials 0\n -showReferenceNodes 1\n -showReferenceMembers 1\n -showAttributes 0\n -showConnected 0\n -showAnimCurvesOnly 0\n -showMuteInfo 0\n -organizeByLayer 1\n -showAnimLayerWeight 1\n -autoExpandLayers 1\n -autoExpand 0\n -showDagOnly 1\n -showAssets 1\n -showContainedOnly 1\n -showPublishedAsConnected 0\n -showContainerContents 1\n" + + " -ignoreDagHierarchy 0\n -expandConnections 0\n -showUpstreamCurves 1\n -showUnitlessCurves 1\n -showCompounds 1\n -showLeafs 1\n -showNumericAttrsOnly 0\n -highlightActive 1\n -autoSelectNewObjects 0\n -doNotSelectNewObjects 0\n -dropIsParent 1\n -transmitFilters 0\n -setFilter \"defaultSetFilter\" \n -showSetMembers 1\n -allowMultiSelection 1\n -alwaysToggleSelect 0\n -directSelect 0\n -isSet 0\n -isSetMember 0\n -displayMode \"DAG\" \n -expandObjects 0\n -setsIgnoreFilters 1\n -containersIgnoreFilters 0\n -editAttrName 0\n -showAttrValues 0\n -highlightSecondary 0\n -showUVAttrsOnly 0\n -showTextureNodesOnly 0\n -attrAlphaOrder \"default\" \n" + + " -animLayerFilterOptions \"allAffecting\" \n -sortOrder \"none\" \n -longNames 0\n -niceNames 1\n -showNamespace 1\n -showPinIcons 0\n -mapMotionTrails 0\n -ignoreHiddenAttribute 0\n -ignoreOutlinerColor 0\n -renderFilterVisible 0\n -renderFilterIndex 0\n -selectionOrder \"chronological\" \n -expandAttribute 0\n $editorName;\n\t\t}\n\t} else {\n\t\t$label = `panel -q -label $panelName`;\n\t\toutlinerPanel -edit -l (localizedPanelLabel(\"Outliner\")) -mbv $menusOkayInPanels $panelName;\n\t\t$editorName = $panelName;\n outlinerEditor -e \n -docTag \"isolOutln_fromSeln\" \n -showShapes 0\n -showAssignedMaterials 0\n -showReferenceNodes 1\n -showReferenceMembers 1\n -showAttributes 0\n -showConnected 0\n -showAnimCurvesOnly 0\n -showMuteInfo 0\n -organizeByLayer 1\n" + + " -showAnimLayerWeight 1\n -autoExpandLayers 1\n -autoExpand 0\n -showDagOnly 1\n -showAssets 1\n -showContainedOnly 1\n -showPublishedAsConnected 0\n -showContainerContents 1\n -ignoreDagHierarchy 0\n -expandConnections 0\n -showUpstreamCurves 1\n -showUnitlessCurves 1\n -showCompounds 1\n -showLeafs 1\n -showNumericAttrsOnly 0\n -highlightActive 1\n -autoSelectNewObjects 0\n -doNotSelectNewObjects 0\n -dropIsParent 1\n -transmitFilters 0\n -setFilter \"defaultSetFilter\" \n -showSetMembers 1\n -allowMultiSelection 1\n -alwaysToggleSelect 0\n -directSelect 0\n -isSet 0\n -isSetMember 0\n -displayMode \"DAG\" \n -expandObjects 0\n -setsIgnoreFilters 1\n -containersIgnoreFilters 0\n -editAttrName 0\n -showAttrValues 0\n" + + " -highlightSecondary 0\n -showUVAttrsOnly 0\n -showTextureNodesOnly 0\n -attrAlphaOrder \"default\" \n -animLayerFilterOptions \"allAffecting\" \n -sortOrder \"none\" \n -longNames 0\n -niceNames 1\n -showNamespace 1\n -showPinIcons 0\n -mapMotionTrails 0\n -ignoreHiddenAttribute 0\n -ignoreOutlinerColor 0\n -renderFilterVisible 0\n -renderFilterIndex 0\n -selectionOrder \"chronological\" \n -expandAttribute 0\n $editorName;\n\t\tif (!$useSceneConfig) {\n\t\t\tpanel -e -l $label $panelName;\n\t\t}\n\t}\n\n\n\t$panelName = `sceneUIReplacement -getNextScriptedPanel \"graphEditor\" (localizedPanelLabel(\"Graph Editor\")) `;\n\tif (\"\" == $panelName) {\n\t\tif ($useSceneConfig) {\n\t\t\t$panelName = `scriptedPanel -unParent -type \"graphEditor\" -l (localizedPanelLabel(\"Graph Editor\")) -mbv $menusOkayInPanels `;\n\n\t\t\t$editorName = ($panelName+\"OutlineEd\");\n outlinerEditor -e \n" + + " -showShapes 1\n -showAssignedMaterials 0\n -showReferenceNodes 0\n -showReferenceMembers 0\n -showAttributes 1\n -showConnected 1\n -showAnimCurvesOnly 1\n -showMuteInfo 0\n -organizeByLayer 1\n -showAnimLayerWeight 1\n -autoExpandLayers 1\n -autoExpand 1\n -showDagOnly 0\n -showAssets 1\n -showContainedOnly 0\n -showPublishedAsConnected 0\n -showContainerContents 0\n -ignoreDagHierarchy 0\n -expandConnections 1\n -showUpstreamCurves 1\n -showUnitlessCurves 1\n -showCompounds 0\n -showLeafs 1\n -showNumericAttrsOnly 1\n -highlightActive 0\n -autoSelectNewObjects 1\n -doNotSelectNewObjects 0\n -dropIsParent 1\n -transmitFilters 1\n" + + " -setFilter \"0\" \n -showSetMembers 0\n -allowMultiSelection 1\n -alwaysToggleSelect 0\n -directSelect 0\n -displayMode \"DAG\" \n -expandObjects 0\n -setsIgnoreFilters 1\n -containersIgnoreFilters 0\n -editAttrName 0\n -showAttrValues 0\n -highlightSecondary 0\n -showUVAttrsOnly 0\n -showTextureNodesOnly 0\n -attrAlphaOrder \"default\" \n -animLayerFilterOptions \"allAffecting\" \n -sortOrder \"none\" \n -longNames 0\n -niceNames 1\n -showNamespace 1\n -showPinIcons 1\n -mapMotionTrails 1\n -ignoreHiddenAttribute 0\n -ignoreOutlinerColor 0\n -renderFilterVisible 0\n $editorName;\n\n\t\t\t$editorName = ($panelName+\"GraphEd\");\n animCurveEditor -e \n -displayKeys 1\n" + + " -displayTangents 0\n -displayActiveKeys 0\n -displayActiveKeyTangents 1\n -displayInfinities 0\n -displayValues 0\n -autoFit 0\n -snapTime \"integer\" \n -snapValue \"none\" \n -showResults \"off\" \n -showBufferCurves \"off\" \n -smoothness \"fine\" \n -resultSamples 1\n -resultScreenSamples 0\n -resultUpdate \"delayed\" \n -showUpstreamCurves 1\n -showCurveNames 0\n -showActiveCurveNames 0\n -stackedCurves 0\n -stackedCurvesMin -1\n -stackedCurvesMax 1\n -stackedCurvesSpace 0.2\n -displayNormalized 0\n -preSelectionHighlight 0\n -constrainDrag 0\n -classicMode 1\n $editorName;\n\t\t}\n\t} else {\n\t\t$label = `panel -q -label $panelName`;\n\t\tscriptedPanel -edit -l (localizedPanelLabel(\"Graph Editor\")) -mbv $menusOkayInPanels $panelName;\n" + + "\n\t\t\t$editorName = ($panelName+\"OutlineEd\");\n outlinerEditor -e \n -showShapes 1\n -showAssignedMaterials 0\n -showReferenceNodes 0\n -showReferenceMembers 0\n -showAttributes 1\n -showConnected 1\n -showAnimCurvesOnly 1\n -showMuteInfo 0\n -organizeByLayer 1\n -showAnimLayerWeight 1\n -autoExpandLayers 1\n -autoExpand 1\n -showDagOnly 0\n -showAssets 1\n -showContainedOnly 0\n -showPublishedAsConnected 0\n -showContainerContents 0\n -ignoreDagHierarchy 0\n -expandConnections 1\n -showUpstreamCurves 1\n -showUnitlessCurves 1\n -showCompounds 0\n -showLeafs 1\n -showNumericAttrsOnly 1\n -highlightActive 0\n -autoSelectNewObjects 1\n -doNotSelectNewObjects 0\n" + + " -dropIsParent 1\n -transmitFilters 1\n -setFilter \"0\" \n -showSetMembers 0\n -allowMultiSelection 1\n -alwaysToggleSelect 0\n -directSelect 0\n -displayMode \"DAG\" \n -expandObjects 0\n -setsIgnoreFilters 1\n -containersIgnoreFilters 0\n -editAttrName 0\n -showAttrValues 0\n -highlightSecondary 0\n -showUVAttrsOnly 0\n -showTextureNodesOnly 0\n -attrAlphaOrder \"default\" \n -animLayerFilterOptions \"allAffecting\" \n -sortOrder \"none\" \n -longNames 0\n -niceNames 1\n -showNamespace 1\n -showPinIcons 1\n -mapMotionTrails 1\n -ignoreHiddenAttribute 0\n -ignoreOutlinerColor 0\n -renderFilterVisible 0\n $editorName;\n\n\t\t\t$editorName = ($panelName+\"GraphEd\");\n" + + " animCurveEditor -e \n -displayKeys 1\n -displayTangents 0\n -displayActiveKeys 0\n -displayActiveKeyTangents 1\n -displayInfinities 0\n -displayValues 0\n -autoFit 0\n -snapTime \"integer\" \n -snapValue \"none\" \n -showResults \"off\" \n -showBufferCurves \"off\" \n -smoothness \"fine\" \n -resultSamples 1\n -resultScreenSamples 0\n -resultUpdate \"delayed\" \n -showUpstreamCurves 1\n -showCurveNames 0\n -showActiveCurveNames 0\n -stackedCurves 0\n -stackedCurvesMin -1\n -stackedCurvesMax 1\n -stackedCurvesSpace 0.2\n -displayNormalized 0\n -preSelectionHighlight 0\n -constrainDrag 0\n -classicMode 1\n $editorName;\n\t\tif (!$useSceneConfig) {\n" + + "\t\t\tpanel -e -l $label $panelName;\n\t\t}\n\t}\n\n\n\t$panelName = `sceneUIReplacement -getNextScriptedPanel \"dopeSheetPanel\" (localizedPanelLabel(\"Dope Sheet\")) `;\n\tif (\"\" == $panelName) {\n\t\tif ($useSceneConfig) {\n\t\t\t$panelName = `scriptedPanel -unParent -type \"dopeSheetPanel\" -l (localizedPanelLabel(\"Dope Sheet\")) -mbv $menusOkayInPanels `;\n\n\t\t\t$editorName = ($panelName+\"OutlineEd\");\n outlinerEditor -e \n -showShapes 1\n -showAssignedMaterials 0\n -showReferenceNodes 0\n -showReferenceMembers 0\n -showAttributes 1\n -showConnected 1\n -showAnimCurvesOnly 1\n -showMuteInfo 0\n -organizeByLayer 1\n -showAnimLayerWeight 1\n -autoExpandLayers 1\n -autoExpand 0\n -showDagOnly 0\n -showAssets 1\n -showContainedOnly 0\n -showPublishedAsConnected 0\n -showContainerContents 0\n -ignoreDagHierarchy 0\n" + + " -expandConnections 1\n -showUpstreamCurves 1\n -showUnitlessCurves 0\n -showCompounds 1\n -showLeafs 1\n -showNumericAttrsOnly 1\n -highlightActive 0\n -autoSelectNewObjects 0\n -doNotSelectNewObjects 1\n -dropIsParent 1\n -transmitFilters 0\n -setFilter \"0\" \n -showSetMembers 0\n -allowMultiSelection 1\n -alwaysToggleSelect 0\n -directSelect 0\n -displayMode \"DAG\" \n -expandObjects 0\n -setsIgnoreFilters 1\n -containersIgnoreFilters 0\n -editAttrName 0\n -showAttrValues 0\n -highlightSecondary 0\n -showUVAttrsOnly 0\n -showTextureNodesOnly 0\n -attrAlphaOrder \"default\" \n -animLayerFilterOptions \"allAffecting\" \n -sortOrder \"none\" \n" + + " -longNames 0\n -niceNames 1\n -showNamespace 1\n -showPinIcons 0\n -mapMotionTrails 1\n -ignoreHiddenAttribute 0\n -ignoreOutlinerColor 0\n -renderFilterVisible 0\n $editorName;\n\n\t\t\t$editorName = ($panelName+\"DopeSheetEd\");\n dopeSheetEditor -e \n -displayKeys 1\n -displayTangents 0\n -displayActiveKeys 0\n -displayActiveKeyTangents 0\n -displayInfinities 0\n -displayValues 0\n -autoFit 0\n -snapTime \"integer\" \n -snapValue \"none\" \n -outliner \"dopeSheetPanel1OutlineEd\" \n -showSummary 1\n -showScene 0\n -hierarchyBelow 0\n -showTicks 1\n -selectionWindow 0 0 0 0 \n $editorName;\n\t\t}\n\t} else {\n\t\t$label = `panel -q -label $panelName`;\n\t\tscriptedPanel -edit -l (localizedPanelLabel(\"Dope Sheet\")) -mbv $menusOkayInPanels $panelName;\n" + + "\n\t\t\t$editorName = ($panelName+\"OutlineEd\");\n outlinerEditor -e \n -showShapes 1\n -showAssignedMaterials 0\n -showReferenceNodes 0\n -showReferenceMembers 0\n -showAttributes 1\n -showConnected 1\n -showAnimCurvesOnly 1\n -showMuteInfo 0\n -organizeByLayer 1\n -showAnimLayerWeight 1\n -autoExpandLayers 1\n -autoExpand 0\n -showDagOnly 0\n -showAssets 1\n -showContainedOnly 0\n -showPublishedAsConnected 0\n -showContainerContents 0\n -ignoreDagHierarchy 0\n -expandConnections 1\n -showUpstreamCurves 1\n -showUnitlessCurves 0\n -showCompounds 1\n -showLeafs 1\n -showNumericAttrsOnly 1\n -highlightActive 0\n -autoSelectNewObjects 0\n -doNotSelectNewObjects 1\n" + + " -dropIsParent 1\n -transmitFilters 0\n -setFilter \"0\" \n -showSetMembers 0\n -allowMultiSelection 1\n -alwaysToggleSelect 0\n -directSelect 0\n -displayMode \"DAG\" \n -expandObjects 0\n -setsIgnoreFilters 1\n -containersIgnoreFilters 0\n -editAttrName 0\n -showAttrValues 0\n -highlightSecondary 0\n -showUVAttrsOnly 0\n -showTextureNodesOnly 0\n -attrAlphaOrder \"default\" \n -animLayerFilterOptions \"allAffecting\" \n -sortOrder \"none\" \n -longNames 0\n -niceNames 1\n -showNamespace 1\n -showPinIcons 0\n -mapMotionTrails 1\n -ignoreHiddenAttribute 0\n -ignoreOutlinerColor 0\n -renderFilterVisible 0\n $editorName;\n\n\t\t\t$editorName = ($panelName+\"DopeSheetEd\");\n" + + " dopeSheetEditor -e \n -displayKeys 1\n -displayTangents 0\n -displayActiveKeys 0\n -displayActiveKeyTangents 0\n -displayInfinities 0\n -displayValues 0\n -autoFit 0\n -snapTime \"integer\" \n -snapValue \"none\" \n -outliner \"dopeSheetPanel1OutlineEd\" \n -showSummary 1\n -showScene 0\n -hierarchyBelow 0\n -showTicks 1\n -selectionWindow 0 0 0 0 \n $editorName;\n\t\tif (!$useSceneConfig) {\n\t\t\tpanel -e -l $label $panelName;\n\t\t}\n\t}\n\n\n\t$panelName = `sceneUIReplacement -getNextScriptedPanel \"clipEditorPanel\" (localizedPanelLabel(\"Trax Editor\")) `;\n\tif (\"\" == $panelName) {\n\t\tif ($useSceneConfig) {\n\t\t\t$panelName = `scriptedPanel -unParent -type \"clipEditorPanel\" -l (localizedPanelLabel(\"Trax Editor\")) -mbv $menusOkayInPanels `;\n\n\t\t\t$editorName = clipEditorNameFromPanel($panelName);\n clipEditor -e \n" + + " -displayKeys 0\n -displayTangents 0\n -displayActiveKeys 0\n -displayActiveKeyTangents 0\n -displayInfinities 0\n -displayValues 0\n -autoFit 0\n -snapTime \"none\" \n -snapValue \"none\" \n -initialized 0\n -manageSequencer 0 \n $editorName;\n\t\t}\n\t} else {\n\t\t$label = `panel -q -label $panelName`;\n\t\tscriptedPanel -edit -l (localizedPanelLabel(\"Trax Editor\")) -mbv $menusOkayInPanels $panelName;\n\n\t\t\t$editorName = clipEditorNameFromPanel($panelName);\n clipEditor -e \n -displayKeys 0\n -displayTangents 0\n -displayActiveKeys 0\n -displayActiveKeyTangents 0\n -displayInfinities 0\n -displayValues 0\n -autoFit 0\n -snapTime \"none\" \n -snapValue \"none\" \n -initialized 0\n -manageSequencer 0 \n" + + " $editorName;\n\t\tif (!$useSceneConfig) {\n\t\t\tpanel -e -l $label $panelName;\n\t\t}\n\t}\n\n\n\t$panelName = `sceneUIReplacement -getNextScriptedPanel \"sequenceEditorPanel\" (localizedPanelLabel(\"Camera Sequencer\")) `;\n\tif (\"\" == $panelName) {\n\t\tif ($useSceneConfig) {\n\t\t\t$panelName = `scriptedPanel -unParent -type \"sequenceEditorPanel\" -l (localizedPanelLabel(\"Camera Sequencer\")) -mbv $menusOkayInPanels `;\n\n\t\t\t$editorName = sequenceEditorNameFromPanel($panelName);\n clipEditor -e \n -displayKeys 0\n -displayTangents 0\n -displayActiveKeys 0\n -displayActiveKeyTangents 0\n -displayInfinities 0\n -displayValues 0\n -autoFit 0\n -snapTime \"none\" \n -snapValue \"none\" \n -initialized 0\n -manageSequencer 1 \n $editorName;\n\t\t}\n\t} else {\n\t\t$label = `panel -q -label $panelName`;\n\t\tscriptedPanel -edit -l (localizedPanelLabel(\"Camera Sequencer\")) -mbv $menusOkayInPanels $panelName;\n" + + "\n\t\t\t$editorName = sequenceEditorNameFromPanel($panelName);\n clipEditor -e \n -displayKeys 0\n -displayTangents 0\n -displayActiveKeys 0\n -displayActiveKeyTangents 0\n -displayInfinities 0\n -displayValues 0\n -autoFit 0\n -snapTime \"none\" \n -snapValue \"none\" \n -initialized 0\n -manageSequencer 1 \n $editorName;\n\t\tif (!$useSceneConfig) {\n\t\t\tpanel -e -l $label $panelName;\n\t\t}\n\t}\n\n\n\t$panelName = `sceneUIReplacement -getNextScriptedPanel \"hyperGraphPanel\" (localizedPanelLabel(\"Hypergraph Hierarchy\")) `;\n\tif (\"\" == $panelName) {\n\t\tif ($useSceneConfig) {\n\t\t\t$panelName = `scriptedPanel -unParent -type \"hyperGraphPanel\" -l (localizedPanelLabel(\"Hypergraph Hierarchy\")) -mbv $menusOkayInPanels `;\n\n\t\t\t$editorName = ($panelName+\"HyperGraphEd\");\n hyperGraph -e \n -graphLayoutStyle \"hierarchicalLayout\" \n -orientation \"horiz\" \n" + + " -mergeConnections 0\n -zoom 1\n -animateTransition 0\n -showRelationships 1\n -showShapes 0\n -showDeformers 0\n -showExpressions 0\n -showConstraints 0\n -showConnectionFromSelected 0\n -showConnectionToSelected 0\n -showConstraintLabels 0\n -showUnderworld 0\n -showInvisible 0\n -transitionFrames 1\n -opaqueContainers 0\n -freeform 0\n -imagePosition 0 0 \n -imageScale 1\n -imageEnabled 0\n -graphType \"DAG\" \n -heatMapDisplay 0\n -updateSelection 1\n -updateNodeAdded 1\n -useDrawOverrideColor 0\n -limitGraphTraversal -1\n -range 0 0 \n -iconSize \"smallIcons\" \n -showCachedConnections 0\n $editorName;\n\t\t}\n\t} else {\n" + + "\t\t$label = `panel -q -label $panelName`;\n\t\tscriptedPanel -edit -l (localizedPanelLabel(\"Hypergraph Hierarchy\")) -mbv $menusOkayInPanels $panelName;\n\n\t\t\t$editorName = ($panelName+\"HyperGraphEd\");\n hyperGraph -e \n -graphLayoutStyle \"hierarchicalLayout\" \n -orientation \"horiz\" \n -mergeConnections 0\n -zoom 1\n -animateTransition 0\n -showRelationships 1\n -showShapes 0\n -showDeformers 0\n -showExpressions 0\n -showConstraints 0\n -showConnectionFromSelected 0\n -showConnectionToSelected 0\n -showConstraintLabels 0\n -showUnderworld 0\n -showInvisible 0\n -transitionFrames 1\n -opaqueContainers 0\n -freeform 0\n -imagePosition 0 0 \n -imageScale 1\n -imageEnabled 0\n -graphType \"DAG\" \n -heatMapDisplay 0\n" + + " -updateSelection 1\n -updateNodeAdded 1\n -useDrawOverrideColor 0\n -limitGraphTraversal -1\n -range 0 0 \n -iconSize \"smallIcons\" \n -showCachedConnections 0\n $editorName;\n\t\tif (!$useSceneConfig) {\n\t\t\tpanel -e -l $label $panelName;\n\t\t}\n\t}\n\n\n\t$panelName = `sceneUIReplacement -getNextScriptedPanel \"visorPanel\" (localizedPanelLabel(\"Visor\")) `;\n\tif (\"\" == $panelName) {\n\t\tif ($useSceneConfig) {\n\t\t\t$panelName = `scriptedPanel -unParent -type \"visorPanel\" -l (localizedPanelLabel(\"Visor\")) -mbv $menusOkayInPanels `;\n\t\t}\n\t} else {\n\t\t$label = `panel -q -label $panelName`;\n\t\tscriptedPanel -edit -l (localizedPanelLabel(\"Visor\")) -mbv $menusOkayInPanels $panelName;\n\t\tif (!$useSceneConfig) {\n\t\t\tpanel -e -l $label $panelName;\n\t\t}\n\t}\n\n\n\t$panelName = `sceneUIReplacement -getNextScriptedPanel \"createNodePanel\" (localizedPanelLabel(\"Create Node\")) `;\n\tif (\"\" == $panelName) {\n\t\tif ($useSceneConfig) {\n\t\t\t$panelName = `scriptedPanel -unParent -type \"createNodePanel\" -l (localizedPanelLabel(\"Create Node\")) -mbv $menusOkayInPanels `;\n" + + "\t\t}\n\t} else {\n\t\t$label = `panel -q -label $panelName`;\n\t\tscriptedPanel -edit -l (localizedPanelLabel(\"Create Node\")) -mbv $menusOkayInPanels $panelName;\n\t\tif (!$useSceneConfig) {\n\t\t\tpanel -e -l $label $panelName;\n\t\t}\n\t}\n\n\n\t$panelName = `sceneUIReplacement -getNextScriptedPanel \"polyTexturePlacementPanel\" (localizedPanelLabel(\"UV Editor\")) `;\n\tif (\"\" == $panelName) {\n\t\tif ($useSceneConfig) {\n\t\t\t$panelName = `scriptedPanel -unParent -type \"polyTexturePlacementPanel\" -l (localizedPanelLabel(\"UV Editor\")) -mbv $menusOkayInPanels `;\n\t\t}\n\t} else {\n\t\t$label = `panel -q -label $panelName`;\n\t\tscriptedPanel -edit -l (localizedPanelLabel(\"UV Editor\")) -mbv $menusOkayInPanels $panelName;\n\t\tif (!$useSceneConfig) {\n\t\t\tpanel -e -l $label $panelName;\n\t\t}\n\t}\n\n\n\t$panelName = `sceneUIReplacement -getNextScriptedPanel \"renderWindowPanel\" (localizedPanelLabel(\"Render View\")) `;\n\tif (\"\" == $panelName) {\n\t\tif ($useSceneConfig) {\n\t\t\t$panelName = `scriptedPanel -unParent -type \"renderWindowPanel\" -l (localizedPanelLabel(\"Render View\")) -mbv $menusOkayInPanels `;\n" + + "\t\t}\n\t} else {\n\t\t$label = `panel -q -label $panelName`;\n\t\tscriptedPanel -edit -l (localizedPanelLabel(\"Render View\")) -mbv $menusOkayInPanels $panelName;\n\t\tif (!$useSceneConfig) {\n\t\t\tpanel -e -l $label $panelName;\n\t\t}\n\t}\n\n\n\t$panelName = `sceneUIReplacement -getNextPanel \"shapePanel\" (localizedPanelLabel(\"Shape Editor\")) `;\n\tif (\"\" == $panelName) {\n\t\tif ($useSceneConfig) {\n\t\t\tshapePanel -unParent -l (localizedPanelLabel(\"Shape Editor\")) -mbv $menusOkayInPanels ;\n\t\t}\n\t} else {\n\t\t$label = `panel -q -label $panelName`;\n\t\tshapePanel -edit -l (localizedPanelLabel(\"Shape Editor\")) -mbv $menusOkayInPanels $panelName;\n\t\tif (!$useSceneConfig) {\n\t\t\tpanel -e -l $label $panelName;\n\t\t}\n\t}\n\n\n\t$panelName = `sceneUIReplacement -getNextPanel \"posePanel\" (localizedPanelLabel(\"Pose Editor\")) `;\n\tif (\"\" == $panelName) {\n\t\tif ($useSceneConfig) {\n\t\t\tposePanel -unParent -l (localizedPanelLabel(\"Pose Editor\")) -mbv $menusOkayInPanels ;\n\t\t}\n\t} else {\n\t\t$label = `panel -q -label $panelName`;\n\t\tposePanel -edit -l (localizedPanelLabel(\"Pose Editor\")) -mbv $menusOkayInPanels $panelName;\n" + + "\t\tif (!$useSceneConfig) {\n\t\t\tpanel -e -l $label $panelName;\n\t\t}\n\t}\n\n\n\t$panelName = `sceneUIReplacement -getNextScriptedPanel \"dynRelEdPanel\" (localizedPanelLabel(\"Dynamic Relationships\")) `;\n\tif (\"\" == $panelName) {\n\t\tif ($useSceneConfig) {\n\t\t\t$panelName = `scriptedPanel -unParent -type \"dynRelEdPanel\" -l (localizedPanelLabel(\"Dynamic Relationships\")) -mbv $menusOkayInPanels `;\n\t\t}\n\t} else {\n\t\t$label = `panel -q -label $panelName`;\n\t\tscriptedPanel -edit -l (localizedPanelLabel(\"Dynamic Relationships\")) -mbv $menusOkayInPanels $panelName;\n\t\tif (!$useSceneConfig) {\n\t\t\tpanel -e -l $label $panelName;\n\t\t}\n\t}\n\n\n\t$panelName = `sceneUIReplacement -getNextScriptedPanel \"relationshipPanel\" (localizedPanelLabel(\"Relationship Editor\")) `;\n\tif (\"\" == $panelName) {\n\t\tif ($useSceneConfig) {\n\t\t\t$panelName = `scriptedPanel -unParent -type \"relationshipPanel\" -l (localizedPanelLabel(\"Relationship Editor\")) -mbv $menusOkayInPanels `;\n\t\t}\n\t} else {\n\t\t$label = `panel -q -label $panelName`;\n\t\tscriptedPanel -edit -l (localizedPanelLabel(\"Relationship Editor\")) -mbv $menusOkayInPanels $panelName;\n" + + "\t\tif (!$useSceneConfig) {\n\t\t\tpanel -e -l $label $panelName;\n\t\t}\n\t}\n\n\n\t$panelName = `sceneUIReplacement -getNextScriptedPanel \"referenceEditorPanel\" (localizedPanelLabel(\"Reference Editor\")) `;\n\tif (\"\" == $panelName) {\n\t\tif ($useSceneConfig) {\n\t\t\t$panelName = `scriptedPanel -unParent -type \"referenceEditorPanel\" -l (localizedPanelLabel(\"Reference Editor\")) -mbv $menusOkayInPanels `;\n\t\t}\n\t} else {\n\t\t$label = `panel -q -label $panelName`;\n\t\tscriptedPanel -edit -l (localizedPanelLabel(\"Reference Editor\")) -mbv $menusOkayInPanels $panelName;\n\t\tif (!$useSceneConfig) {\n\t\t\tpanel -e -l $label $panelName;\n\t\t}\n\t}\n\n\n\t$panelName = `sceneUIReplacement -getNextScriptedPanel \"componentEditorPanel\" (localizedPanelLabel(\"Component Editor\")) `;\n\tif (\"\" == $panelName) {\n\t\tif ($useSceneConfig) {\n\t\t\t$panelName = `scriptedPanel -unParent -type \"componentEditorPanel\" -l (localizedPanelLabel(\"Component Editor\")) -mbv $menusOkayInPanels `;\n\t\t}\n\t} else {\n\t\t$label = `panel -q -label $panelName`;\n\t\tscriptedPanel -edit -l (localizedPanelLabel(\"Component Editor\")) -mbv $menusOkayInPanels $panelName;\n" + + "\t\tif (!$useSceneConfig) {\n\t\t\tpanel -e -l $label $panelName;\n\t\t}\n\t}\n\n\n\t$panelName = `sceneUIReplacement -getNextScriptedPanel \"dynPaintScriptedPanelType\" (localizedPanelLabel(\"Paint Effects\")) `;\n\tif (\"\" == $panelName) {\n\t\tif ($useSceneConfig) {\n\t\t\t$panelName = `scriptedPanel -unParent -type \"dynPaintScriptedPanelType\" -l (localizedPanelLabel(\"Paint Effects\")) -mbv $menusOkayInPanels `;\n\t\t}\n\t} else {\n\t\t$label = `panel -q -label $panelName`;\n\t\tscriptedPanel -edit -l (localizedPanelLabel(\"Paint Effects\")) -mbv $menusOkayInPanels $panelName;\n\t\tif (!$useSceneConfig) {\n\t\t\tpanel -e -l $label $panelName;\n\t\t}\n\t}\n\n\n\t$panelName = `sceneUIReplacement -getNextScriptedPanel \"scriptEditorPanel\" (localizedPanelLabel(\"Script Editor\")) `;\n\tif (\"\" == $panelName) {\n\t\tif ($useSceneConfig) {\n\t\t\t$panelName = `scriptedPanel -unParent -type \"scriptEditorPanel\" -l (localizedPanelLabel(\"Script Editor\")) -mbv $menusOkayInPanels `;\n\t\t}\n\t} else {\n\t\t$label = `panel -q -label $panelName`;\n\t\tscriptedPanel -edit -l (localizedPanelLabel(\"Script Editor\")) -mbv $menusOkayInPanels $panelName;\n" + + "\t\tif (!$useSceneConfig) {\n\t\t\tpanel -e -l $label $panelName;\n\t\t}\n\t}\n\n\n\t$panelName = `sceneUIReplacement -getNextScriptedPanel \"profilerPanel\" (localizedPanelLabel(\"Profiler Tool\")) `;\n\tif (\"\" == $panelName) {\n\t\tif ($useSceneConfig) {\n\t\t\t$panelName = `scriptedPanel -unParent -type \"profilerPanel\" -l (localizedPanelLabel(\"Profiler Tool\")) -mbv $menusOkayInPanels `;\n\t\t}\n\t} else {\n\t\t$label = `panel -q -label $panelName`;\n\t\tscriptedPanel -edit -l (localizedPanelLabel(\"Profiler Tool\")) -mbv $menusOkayInPanels $panelName;\n\t\tif (!$useSceneConfig) {\n\t\t\tpanel -e -l $label $panelName;\n\t\t}\n\t}\n\n\n\t$panelName = `sceneUIReplacement -getNextScriptedPanel \"contentBrowserPanel\" (localizedPanelLabel(\"Content Browser\")) `;\n\tif (\"\" == $panelName) {\n\t\tif ($useSceneConfig) {\n\t\t\t$panelName = `scriptedPanel -unParent -type \"contentBrowserPanel\" -l (localizedPanelLabel(\"Content Browser\")) -mbv $menusOkayInPanels `;\n\t\t}\n\t} else {\n\t\t$label = `panel -q -label $panelName`;\n\t\tscriptedPanel -edit -l (localizedPanelLabel(\"Content Browser\")) -mbv $menusOkayInPanels $panelName;\n" + + "\t\tif (!$useSceneConfig) {\n\t\t\tpanel -e -l $label $panelName;\n\t\t}\n\t}\n\n\n\t$panelName = `sceneUIReplacement -getNextScriptedPanel \"Stereo\" (localizedPanelLabel(\"Stereo\")) `;\n\tif (\"\" == $panelName) {\n\t\tif ($useSceneConfig) {\n\t\t\t$panelName = `scriptedPanel -unParent -type \"Stereo\" -l (localizedPanelLabel(\"Stereo\")) -mbv $menusOkayInPanels `;\nstring $editorName = ($panelName+\"Editor\");\n stereoCameraView -e \n -camera \"persp\" \n -useInteractiveMode 0\n -displayLights \"default\" \n -displayAppearance \"wireframe\" \n -activeOnly 0\n -ignorePanZoom 0\n -wireframeOnShaded 0\n -headsUpDisplay 1\n -holdOuts 1\n -selectionHiliteDisplay 1\n -useDefaultMaterial 0\n -bufferMode \"double\" \n -twoSidedLighting 1\n -backfaceCulling 0\n -xray 0\n -jointXray 0\n -activeComponentsXray 0\n -displayTextures 0\n" + + " -smoothWireframe 0\n -lineWidth 1\n -textureAnisotropic 0\n -textureHilight 1\n -textureSampling 2\n -textureDisplay \"modulate\" \n -textureMaxSize 32768\n -fogging 0\n -fogSource \"fragment\" \n -fogMode \"linear\" \n -fogStart 0\n -fogEnd 100\n -fogDensity 0.1\n -fogColor 0.5 0.5 0.5 1 \n -depthOfFieldPreview 1\n -maxConstantTransparency 1\n -objectFilterShowInHUD 1\n -isFiltered 0\n -colorResolution 4 4 \n -bumpResolution 4 4 \n -textureCompression 0\n -transparencyAlgorithm \"frontAndBackCull\" \n -transpInShadows 0\n -cullingOverride \"none\" \n -lowQualityLighting 0\n -maximumNumHardwareLights 0\n -occlusionCulling 0\n -shadingModel 0\n" + + " -useBaseRenderer 0\n -useReducedRenderer 0\n -smallObjectCulling 0\n -smallObjectThreshold -1 \n -interactiveDisableShadows 0\n -interactiveBackFaceCull 0\n -sortTransparent 1\n -nurbsCurves 1\n -nurbsSurfaces 1\n -polymeshes 1\n -subdivSurfaces 1\n -planes 1\n -lights 1\n -cameras 1\n -controlVertices 1\n -hulls 1\n -grid 1\n -imagePlane 1\n -joints 1\n -ikHandles 1\n -deformers 1\n -dynamics 1\n -particleInstancers 1\n -fluids 1\n -hairSystems 1\n -follicles 1\n -nCloths 1\n -nParticles 1\n -nRigids 1\n -dynamicConstraints 1\n -locators 1\n -manipulators 1\n -pluginShapes 1\n" + + " -dimensions 1\n -handles 1\n -pivots 1\n -textures 1\n -strokes 1\n -motionTrails 1\n -clipGhosts 1\n -greasePencils 1\n -shadows 0\n -captureSequenceNumber -1\n -width 0\n -height 0\n -sceneRenderFilter 0\n -displayMode \"centerEye\" \n -viewColor 0 0 0 1 \n -useCustomBackground 1\n $editorName;\n stereoCameraView -e -viewSelected 0 $editorName;\n stereoCameraView -e \n -pluginObjects \"gpuCacheDisplayFilter\" 1 \n $editorName;\n\t\t}\n\t} else {\n\t\t$label = `panel -q -label $panelName`;\n\t\tscriptedPanel -edit -l (localizedPanelLabel(\"Stereo\")) -mbv $menusOkayInPanels $panelName;\nstring $editorName = ($panelName+\"Editor\");\n stereoCameraView -e \n -camera \"persp\" \n -useInteractiveMode 0\n -displayLights \"default\" \n" + + " -displayAppearance \"wireframe\" \n -activeOnly 0\n -ignorePanZoom 0\n -wireframeOnShaded 0\n -headsUpDisplay 1\n -holdOuts 1\n -selectionHiliteDisplay 1\n -useDefaultMaterial 0\n -bufferMode \"double\" \n -twoSidedLighting 1\n -backfaceCulling 0\n -xray 0\n -jointXray 0\n -activeComponentsXray 0\n -displayTextures 0\n -smoothWireframe 0\n -lineWidth 1\n -textureAnisotropic 0\n -textureHilight 1\n -textureSampling 2\n -textureDisplay \"modulate\" \n -textureMaxSize 32768\n -fogging 0\n -fogSource \"fragment\" \n -fogMode \"linear\" \n -fogStart 0\n -fogEnd 100\n -fogDensity 0.1\n -fogColor 0.5 0.5 0.5 1 \n -depthOfFieldPreview 1\n" + + " -maxConstantTransparency 1\n -objectFilterShowInHUD 1\n -isFiltered 0\n -colorResolution 4 4 \n -bumpResolution 4 4 \n -textureCompression 0\n -transparencyAlgorithm \"frontAndBackCull\" \n -transpInShadows 0\n -cullingOverride \"none\" \n -lowQualityLighting 0\n -maximumNumHardwareLights 0\n -occlusionCulling 0\n -shadingModel 0\n -useBaseRenderer 0\n -useReducedRenderer 0\n -smallObjectCulling 0\n -smallObjectThreshold -1 \n -interactiveDisableShadows 0\n -interactiveBackFaceCull 0\n -sortTransparent 1\n -nurbsCurves 1\n -nurbsSurfaces 1\n -polymeshes 1\n -subdivSurfaces 1\n -planes 1\n -lights 1\n -cameras 1\n -controlVertices 1\n" + + " -hulls 1\n -grid 1\n -imagePlane 1\n -joints 1\n -ikHandles 1\n -deformers 1\n -dynamics 1\n -particleInstancers 1\n -fluids 1\n -hairSystems 1\n -follicles 1\n -nCloths 1\n -nParticles 1\n -nRigids 1\n -dynamicConstraints 1\n -locators 1\n -manipulators 1\n -pluginShapes 1\n -dimensions 1\n -handles 1\n -pivots 1\n -textures 1\n -strokes 1\n -motionTrails 1\n -clipGhosts 1\n -greasePencils 1\n -shadows 0\n -captureSequenceNumber -1\n -width 0\n -height 0\n -sceneRenderFilter 0\n -displayMode \"centerEye\" \n -viewColor 0 0 0 1 \n -useCustomBackground 1\n" + + " $editorName;\n stereoCameraView -e -viewSelected 0 $editorName;\n stereoCameraView -e \n -pluginObjects \"gpuCacheDisplayFilter\" 1 \n $editorName;\n\t\tif (!$useSceneConfig) {\n\t\t\tpanel -e -l $label $panelName;\n\t\t}\n\t}\n\n\n\t$panelName = `sceneUIReplacement -getNextScriptedPanel \"hyperShadePanel\" (localizedPanelLabel(\"Hypershade\")) `;\n\tif (\"\" == $panelName) {\n\t\tif ($useSceneConfig) {\n\t\t\t$panelName = `scriptedPanel -unParent -type \"hyperShadePanel\" -l (localizedPanelLabel(\"Hypershade\")) -mbv $menusOkayInPanels `;\n\t\t}\n\t} else {\n\t\t$label = `panel -q -label $panelName`;\n\t\tscriptedPanel -edit -l (localizedPanelLabel(\"Hypershade\")) -mbv $menusOkayInPanels $panelName;\n\t\tif (!$useSceneConfig) {\n\t\t\tpanel -e -l $label $panelName;\n\t\t}\n\t}\n\n\n\t$panelName = `sceneUIReplacement -getNextScriptedPanel \"nodeEditorPanel\" (localizedPanelLabel(\"Node Editor\")) `;\n\tif (\"\" == $panelName) {\n\t\tif ($useSceneConfig) {\n\t\t\t$panelName = `scriptedPanel -unParent -type \"nodeEditorPanel\" -l (localizedPanelLabel(\"Node Editor\")) -mbv $menusOkayInPanels `;\n" + + "\n\t\t\t$editorName = ($panelName+\"NodeEditorEd\");\n nodeEditor -e \n -allAttributes 0\n -allNodes 0\n -autoSizeNodes 1\n -consistentNameSize 1\n -createNodeCommand \"nodeEdCreateNodeCommand\" \n -defaultPinnedState 0\n -additiveGraphingMode 0\n -settingsChangedCallback \"nodeEdSyncControls\" \n -traversalDepthLimit -1\n -keyPressCommand \"nodeEdKeyPressCommand\" \n -nodeTitleMode \"name\" \n -gridSnap 0\n -gridVisibility 1\n -popupMenuScript \"nodeEdBuildPanelMenus\" \n -showNamespace 1\n -showShapes 1\n -showSGShapes 0\n -showTransforms 1\n -useAssets 1\n -syncedSelection 1\n -extendToShapes 1\n -activeTab -1\n -editorMode \"default\" \n $editorName;\n\t\t}\n\t} else {\n\t\t$label = `panel -q -label $panelName`;\n" + + "\t\tscriptedPanel -edit -l (localizedPanelLabel(\"Node Editor\")) -mbv $menusOkayInPanels $panelName;\n\n\t\t\t$editorName = ($panelName+\"NodeEditorEd\");\n nodeEditor -e \n -allAttributes 0\n -allNodes 0\n -autoSizeNodes 1\n -consistentNameSize 1\n -createNodeCommand \"nodeEdCreateNodeCommand\" \n -defaultPinnedState 0\n -additiveGraphingMode 0\n -settingsChangedCallback \"nodeEdSyncControls\" \n -traversalDepthLimit -1\n -keyPressCommand \"nodeEdKeyPressCommand\" \n -nodeTitleMode \"name\" \n -gridSnap 0\n -gridVisibility 1\n -popupMenuScript \"nodeEdBuildPanelMenus\" \n -showNamespace 1\n -showShapes 1\n -showSGShapes 0\n -showTransforms 1\n -useAssets 1\n -syncedSelection 1\n -extendToShapes 1\n -activeTab -1\n -editorMode \"default\" \n" + + " $editorName;\n\t\tif (!$useSceneConfig) {\n\t\t\tpanel -e -l $label $panelName;\n\t\t}\n\t}\n\n\n\tif ($useSceneConfig) {\n string $configName = `getPanel -cwl (localizedPanelLabel(\"Current Layout\"))`;\n if (\"\" != $configName) {\n\t\t\tpanelConfiguration -edit -label (localizedPanelLabel(\"Current Layout\")) \n\t\t\t\t-defaultImage \"\"\n\t\t\t\t-image \"\"\n\t\t\t\t-sc false\n\t\t\t\t-configString \"global string $gMainPane; paneLayout -e -cn \\\"left3\\\" -ps 1 80 78 -ps 2 20 100 -ps 3 80 22 $gMainPane;\"\n\t\t\t\t-removeAllPanels\n\t\t\t\t-ap true\n\t\t\t\t\t(localizedPanelLabel(\"Persp View\")) \n\t\t\t\t\t\"modelPanel\"\n" + + "\t\t\t\t\t\"$panelName = `modelPanel -unParent -l (localizedPanelLabel(\\\"Persp View\\\")) -mbv $menusOkayInPanels `;\\n$editorName = $panelName;\\nmodelEditor -e \\n -cam `findStartUpCamera persp` \\n -useInteractiveMode 0\\n -displayLights \\\"default\\\" \\n -displayAppearance \\\"smoothShaded\\\" \\n -activeOnly 0\\n -ignorePanZoom 0\\n -wireframeOnShaded 0\\n -headsUpDisplay 1\\n -holdOuts 1\\n -selectionHiliteDisplay 1\\n -useDefaultMaterial 0\\n -bufferMode \\\"double\\\" \\n -twoSidedLighting 0\\n -backfaceCulling 0\\n -xray 0\\n -jointXray 0\\n -activeComponentsXray 0\\n -displayTextures 0\\n -smoothWireframe 0\\n -lineWidth 1\\n -textureAnisotropic 0\\n -textureHilight 1\\n -textureSampling 2\\n -textureDisplay \\\"modulate\\\" \\n -textureMaxSize 32768\\n -fogging 0\\n -fogSource \\\"fragment\\\" \\n -fogMode \\\"linear\\\" \\n -fogStart 0\\n -fogEnd 100\\n -fogDensity 0.1\\n -fogColor 0.5 0.5 0.5 1 \\n -depthOfFieldPreview 1\\n -maxConstantTransparency 1\\n -rendererName \\\"vp2Renderer\\\" \\n -objectFilterShowInHUD 1\\n -isFiltered 0\\n -colorResolution 256 256 \\n -bumpResolution 512 512 \\n -textureCompression 0\\n -transparencyAlgorithm \\\"frontAndBackCull\\\" \\n -transpInShadows 0\\n -cullingOverride \\\"none\\\" \\n -lowQualityLighting 0\\n -maximumNumHardwareLights 1\\n -occlusionCulling 0\\n -shadingModel 0\\n -useBaseRenderer 0\\n -useReducedRenderer 0\\n -smallObjectCulling 0\\n -smallObjectThreshold -1 \\n -interactiveDisableShadows 0\\n -interactiveBackFaceCull 0\\n -sortTransparent 1\\n -nurbsCurves 1\\n -nurbsSurfaces 1\\n -polymeshes 1\\n -subdivSurfaces 1\\n -planes 1\\n -lights 1\\n -cameras 1\\n -controlVertices 1\\n -hulls 1\\n -grid 1\\n -imagePlane 1\\n -joints 1\\n -ikHandles 1\\n -deformers 1\\n -dynamics 1\\n -particleInstancers 1\\n -fluids 1\\n -hairSystems 1\\n -follicles 1\\n -nCloths 1\\n -nParticles 1\\n -nRigids 1\\n -dynamicConstraints 1\\n -locators 1\\n -manipulators 1\\n -pluginShapes 1\\n -dimensions 1\\n -handles 1\\n -pivots 1\\n -textures 1\\n -strokes 1\\n -motionTrails 1\\n -clipGhosts 1\\n -greasePencils 1\\n -shadows 0\\n -captureSequenceNumber -1\\n -width 1300\\n -height 740\\n -sceneRenderFilter 0\\n $editorName;\\nmodelEditor -e -viewSelected 0 $editorName;\\nmodelEditor -e \\n -pluginObjects \\\"gpuCacheDisplayFilter\\\" 1 \\n $editorName\"\n" + + "\t\t\t\t\t\"modelPanel -edit -l (localizedPanelLabel(\\\"Persp View\\\")) -mbv $menusOkayInPanels $panelName;\\n$editorName = $panelName;\\nmodelEditor -e \\n -cam `findStartUpCamera persp` \\n -useInteractiveMode 0\\n -displayLights \\\"default\\\" \\n -displayAppearance \\\"smoothShaded\\\" \\n -activeOnly 0\\n -ignorePanZoom 0\\n -wireframeOnShaded 0\\n -headsUpDisplay 1\\n -holdOuts 1\\n -selectionHiliteDisplay 1\\n -useDefaultMaterial 0\\n -bufferMode \\\"double\\\" \\n -twoSidedLighting 0\\n -backfaceCulling 0\\n -xray 0\\n -jointXray 0\\n -activeComponentsXray 0\\n -displayTextures 0\\n -smoothWireframe 0\\n -lineWidth 1\\n -textureAnisotropic 0\\n -textureHilight 1\\n -textureSampling 2\\n -textureDisplay \\\"modulate\\\" \\n -textureMaxSize 32768\\n -fogging 0\\n -fogSource \\\"fragment\\\" \\n -fogMode \\\"linear\\\" \\n -fogStart 0\\n -fogEnd 100\\n -fogDensity 0.1\\n -fogColor 0.5 0.5 0.5 1 \\n -depthOfFieldPreview 1\\n -maxConstantTransparency 1\\n -rendererName \\\"vp2Renderer\\\" \\n -objectFilterShowInHUD 1\\n -isFiltered 0\\n -colorResolution 256 256 \\n -bumpResolution 512 512 \\n -textureCompression 0\\n -transparencyAlgorithm \\\"frontAndBackCull\\\" \\n -transpInShadows 0\\n -cullingOverride \\\"none\\\" \\n -lowQualityLighting 0\\n -maximumNumHardwareLights 1\\n -occlusionCulling 0\\n -shadingModel 0\\n -useBaseRenderer 0\\n -useReducedRenderer 0\\n -smallObjectCulling 0\\n -smallObjectThreshold -1 \\n -interactiveDisableShadows 0\\n -interactiveBackFaceCull 0\\n -sortTransparent 1\\n -nurbsCurves 1\\n -nurbsSurfaces 1\\n -polymeshes 1\\n -subdivSurfaces 1\\n -planes 1\\n -lights 1\\n -cameras 1\\n -controlVertices 1\\n -hulls 1\\n -grid 1\\n -imagePlane 1\\n -joints 1\\n -ikHandles 1\\n -deformers 1\\n -dynamics 1\\n -particleInstancers 1\\n -fluids 1\\n -hairSystems 1\\n -follicles 1\\n -nCloths 1\\n -nParticles 1\\n -nRigids 1\\n -dynamicConstraints 1\\n -locators 1\\n -manipulators 1\\n -pluginShapes 1\\n -dimensions 1\\n -handles 1\\n -pivots 1\\n -textures 1\\n -strokes 1\\n -motionTrails 1\\n -clipGhosts 1\\n -greasePencils 1\\n -shadows 0\\n -captureSequenceNumber -1\\n -width 1300\\n -height 740\\n -sceneRenderFilter 0\\n $editorName;\\nmodelEditor -e -viewSelected 0 $editorName;\\nmodelEditor -e \\n -pluginObjects \\\"gpuCacheDisplayFilter\\\" 1 \\n $editorName\"\n" + + "\t\t\t\t-ap false\n\t\t\t\t\t(localizedPanelLabel(\"Outliner\")) \n\t\t\t\t\t\"outlinerPanel\"\n\t\t\t\t\t\"$panelName = `outlinerPanel -unParent -l (localizedPanelLabel(\\\"Outliner\\\")) -mbv $menusOkayInPanels `;\\n$editorName = $panelName;\\noutlinerEditor -e \\n -docTag \\\"isolOutln_fromSeln\\\" \\n -showShapes 0\\n -showAssignedMaterials 0\\n -showReferenceNodes 1\\n -showReferenceMembers 1\\n -showAttributes 0\\n -showConnected 0\\n -showAnimCurvesOnly 0\\n -showMuteInfo 0\\n -organizeByLayer 1\\n -showAnimLayerWeight 1\\n -autoExpandLayers 1\\n -autoExpand 0\\n -showDagOnly 1\\n -showAssets 1\\n -showContainedOnly 1\\n -showPublishedAsConnected 0\\n -showContainerContents 1\\n -ignoreDagHierarchy 0\\n -expandConnections 0\\n -showUpstreamCurves 1\\n -showUnitlessCurves 1\\n -showCompounds 1\\n -showLeafs 1\\n -showNumericAttrsOnly 0\\n -highlightActive 1\\n -autoSelectNewObjects 0\\n -doNotSelectNewObjects 0\\n -dropIsParent 1\\n -transmitFilters 0\\n -setFilter \\\"defaultSetFilter\\\" \\n -showSetMembers 1\\n -allowMultiSelection 1\\n -alwaysToggleSelect 0\\n -directSelect 0\\n -isSet 0\\n -isSetMember 0\\n -displayMode \\\"DAG\\\" \\n -expandObjects 0\\n -setsIgnoreFilters 1\\n -containersIgnoreFilters 0\\n -editAttrName 0\\n -showAttrValues 0\\n -highlightSecondary 0\\n -showUVAttrsOnly 0\\n -showTextureNodesOnly 0\\n -attrAlphaOrder \\\"default\\\" \\n -animLayerFilterOptions \\\"allAffecting\\\" \\n -sortOrder \\\"none\\\" \\n -longNames 0\\n -niceNames 1\\n -showNamespace 1\\n -showPinIcons 0\\n -mapMotionTrails 0\\n -ignoreHiddenAttribute 0\\n -ignoreOutlinerColor 0\\n -renderFilterVisible 0\\n -renderFilterIndex 0\\n -selectionOrder \\\"chronological\\\" \\n -expandAttribute 0\\n $editorName\"\n" + + "\t\t\t\t\t\"outlinerPanel -edit -l (localizedPanelLabel(\\\"Outliner\\\")) -mbv $menusOkayInPanels $panelName;\\n$editorName = $panelName;\\noutlinerEditor -e \\n -docTag \\\"isolOutln_fromSeln\\\" \\n -showShapes 0\\n -showAssignedMaterials 0\\n -showReferenceNodes 1\\n -showReferenceMembers 1\\n -showAttributes 0\\n -showConnected 0\\n -showAnimCurvesOnly 0\\n -showMuteInfo 0\\n -organizeByLayer 1\\n -showAnimLayerWeight 1\\n -autoExpandLayers 1\\n -autoExpand 0\\n -showDagOnly 1\\n -showAssets 1\\n -showContainedOnly 1\\n -showPublishedAsConnected 0\\n -showContainerContents 1\\n -ignoreDagHierarchy 0\\n -expandConnections 0\\n -showUpstreamCurves 1\\n -showUnitlessCurves 1\\n -showCompounds 1\\n -showLeafs 1\\n -showNumericAttrsOnly 0\\n -highlightActive 1\\n -autoSelectNewObjects 0\\n -doNotSelectNewObjects 0\\n -dropIsParent 1\\n -transmitFilters 0\\n -setFilter \\\"defaultSetFilter\\\" \\n -showSetMembers 1\\n -allowMultiSelection 1\\n -alwaysToggleSelect 0\\n -directSelect 0\\n -isSet 0\\n -isSetMember 0\\n -displayMode \\\"DAG\\\" \\n -expandObjects 0\\n -setsIgnoreFilters 1\\n -containersIgnoreFilters 0\\n -editAttrName 0\\n -showAttrValues 0\\n -highlightSecondary 0\\n -showUVAttrsOnly 0\\n -showTextureNodesOnly 0\\n -attrAlphaOrder \\\"default\\\" \\n -animLayerFilterOptions \\\"allAffecting\\\" \\n -sortOrder \\\"none\\\" \\n -longNames 0\\n -niceNames 1\\n -showNamespace 1\\n -showPinIcons 0\\n -mapMotionTrails 0\\n -ignoreHiddenAttribute 0\\n -ignoreOutlinerColor 0\\n -renderFilterVisible 0\\n -renderFilterIndex 0\\n -selectionOrder \\\"chronological\\\" \\n -expandAttribute 0\\n $editorName\"\n" + + "\t\t\t\t-ap false\n\t\t\t\t\t(localizedPanelLabel(\"Script Editor\")) \n\t\t\t\t\t\"scriptedPanel\"\n\t\t\t\t\t\"$panelName = `scriptedPanel -unParent -type \\\"scriptEditorPanel\\\" -l (localizedPanelLabel(\\\"Script Editor\\\")) -mbv $menusOkayInPanels `\"\n\t\t\t\t\t\"scriptedPanel -edit -l (localizedPanelLabel(\\\"Script Editor\\\")) -mbv $menusOkayInPanels $panelName\"\n\t\t\t\t$configName;\n\n setNamedPanelLayout (localizedPanelLabel(\"Current Layout\"));\n }\n\n panelHistory -e -clear mainPanelHistory;\n setFocus `paneLayout -q -p1 $gMainPane`;\n sceneUIReplacement -deleteRemaining;\n sceneUIReplacement -clear;\n\t}\n\n\ngrid -spacing 5 -size 12 -divisions 5 -displayAxes yes -displayGridLines yes -displayDivisionLines yes -displayPerspectiveLabels no -displayOrthographicLabels no -displayAxesBold yes -perspectiveLabelPosition axis -orthographicLabelPosition edge;\nviewManip -drawCompass 0 -compassAngle 0 -frontParameters \"\" -homeParameters \"\" -selectionLockParameters \"\";\n}\n"); + setAttr ".st" 3; +createNode script -n "sceneConfigurationScriptNode"; + rename -uid "5177B696-438F-B220-2A7B-56A61BA1BD0C"; + setAttr ".b" -type "string" "playbackOptions -min 1 -max 120 -ast 1 -aet 200 "; + setAttr ".st" 6; select -ne :time1; setAttr ".o" 1; setAttr ".unw" 1; @@ -15958,7 +15950,6 @@ select -ne :defaultShaderList1; select -ne :postProcessList1; setAttr -s 2 ".p"; select -ne :defaultRenderingList1; - setAttr -s 2 ".r"; select -ne :initialShadingGroup; setAttr ".ro" yes; select -ne :initialParticleSE; @@ -15968,1302 +15959,1310 @@ select -ne :defaultResolution; select -ne :hardwareRenderGlobals; setAttr ".ctrs" 256; setAttr ".btrs" 512; -select -ne :ikSystem; - setAttr -s 4 ".sol"; -connectAttr "spine_C0_root_st_profile1.o" "spine_C0_root.st_profile"; -connectAttr "spine_C0_root_sq_profile1.o" "spine_C0_root.sq_profile"; -connectAttr "arm_L0_root_st_profile1.o" "arm_L0_root.st_profile"; -connectAttr "arm_L0_root_sq_profile1.o" "arm_L0_root.sq_profile"; -connectAttr "finger_L3_blade_pointConstraint9.ctx" "finger_L3_blade.tx" -l on; -connectAttr "finger_L3_blade_pointConstraint9.cty" "finger_L3_blade.ty" -l on; -connectAttr "finger_L3_blade_pointConstraint9.ctz" "finger_L3_blade.tz" -l on; -connectAttr "finger_L3_blade_aimConstraint9.crx" "finger_L3_blade.rx" -l on; -connectAttr "finger_L3_blade_aimConstraint9.cry" "finger_L3_blade.ry" -l on; -connectAttr "finger_L3_blade_aimConstraint9.crz" "finger_L3_blade.rz" -l on; -connectAttr "finger_L3_blade.pim" "finger_L3_blade_aimConstraint9.cpim"; -connectAttr "finger_L3_blade.t" "finger_L3_blade_aimConstraint9.ct"; -connectAttr "finger_L3_blade.rp" "finger_L3_blade_aimConstraint9.crp"; -connectAttr "finger_L3_blade.rpt" "finger_L3_blade_aimConstraint9.crt"; -connectAttr "finger_L3_blade.ro" "finger_L3_blade_aimConstraint9.cro"; -connectAttr "finger_L3_0_loc.t" "finger_L3_blade_aimConstraint9.tg[0].tt"; -connectAttr "finger_L3_0_loc.rp" "finger_L3_blade_aimConstraint9.tg[0].trp"; -connectAttr "finger_L3_0_loc.rpt" "finger_L3_blade_aimConstraint9.tg[0].trt"; -connectAttr "finger_L3_0_loc.pm" "finger_L3_blade_aimConstraint9.tg[0].tpm"; -connectAttr "finger_L3_blade_aimConstraint9.w0" "finger_L3_blade_aimConstraint9.tg[0].tw" - ; -connectAttr "finger_L3_root.wm" "finger_L3_blade_aimConstraint9.wum"; -connectAttr "unitConversion134.o" "finger_L3_blade_aimConstraint9.ox"; -connectAttr "finger_L3_blade.pim" "finger_L3_blade_pointConstraint9.cpim"; -connectAttr "finger_L3_blade.rp" "finger_L3_blade_pointConstraint9.crp"; -connectAttr "finger_L3_blade.rpt" "finger_L3_blade_pointConstraint9.crt"; -connectAttr "finger_L3_root.t" "finger_L3_blade_pointConstraint9.tg[0].tt"; -connectAttr "finger_L3_root.rp" "finger_L3_blade_pointConstraint9.tg[0].trp"; -connectAttr "finger_L3_root.rpt" "finger_L3_blade_pointConstraint9.tg[0].trt"; -connectAttr "finger_L3_root.pm" "finger_L3_blade_pointConstraint9.tg[0].tpm"; -connectAttr "finger_L3_blade_pointConstraint9.w0" "finger_L3_blade_pointConstraint9.tg[0].tw" - ; -connectAttr "mgear_curveCns415.og[0]" "finger_L3_crvShape.cr"; -connectAttr "tweak563.pl[0].cp[0]" "finger_L3_crvShape.twl"; -connectAttr "mgear_curveCns415GroupId.id" "finger_L3_crvShape.iog.og[0].gid"; -connectAttr "mgear_curveCns415Set.mwc" "finger_L3_crvShape.iog.og[0].gco"; -connectAttr "groupId8695.id" "finger_L3_crvShape.iog.og[1].gid"; -connectAttr "tweakSet563.mwc" "finger_L3_crvShape.iog.og[1].gco"; -connectAttr "finger_L2_blade_pointConstraint9.ctx" "finger_L2_blade.tx" -l on; -connectAttr "finger_L2_blade_pointConstraint9.cty" "finger_L2_blade.ty" -l on; -connectAttr "finger_L2_blade_pointConstraint9.ctz" "finger_L2_blade.tz" -l on; -connectAttr "finger_L2_blade_aimConstraint9.crx" "finger_L2_blade.rx" -l on; -connectAttr "finger_L2_blade_aimConstraint9.cry" "finger_L2_blade.ry" -l on; -connectAttr "finger_L2_blade_aimConstraint9.crz" "finger_L2_blade.rz" -l on; -connectAttr "finger_L2_blade.pim" "finger_L2_blade_aimConstraint9.cpim"; -connectAttr "finger_L2_blade.t" "finger_L2_blade_aimConstraint9.ct"; -connectAttr "finger_L2_blade.rp" "finger_L2_blade_aimConstraint9.crp"; -connectAttr "finger_L2_blade.rpt" "finger_L2_blade_aimConstraint9.crt"; -connectAttr "finger_L2_blade.ro" "finger_L2_blade_aimConstraint9.cro"; -connectAttr "finger_L2_0_loc.t" "finger_L2_blade_aimConstraint9.tg[0].tt"; -connectAttr "finger_L2_0_loc.rp" "finger_L2_blade_aimConstraint9.tg[0].trp"; -connectAttr "finger_L2_0_loc.rpt" "finger_L2_blade_aimConstraint9.tg[0].trt"; -connectAttr "finger_L2_0_loc.pm" "finger_L2_blade_aimConstraint9.tg[0].tpm"; -connectAttr "finger_L2_blade_aimConstraint9.w0" "finger_L2_blade_aimConstraint9.tg[0].tw" - ; -connectAttr "finger_L2_root.wm" "finger_L2_blade_aimConstraint9.wum"; -connectAttr "unitConversion135.o" "finger_L2_blade_aimConstraint9.ox"; -connectAttr "finger_L2_blade.pim" "finger_L2_blade_pointConstraint9.cpim"; -connectAttr "finger_L2_blade.rp" "finger_L2_blade_pointConstraint9.crp"; -connectAttr "finger_L2_blade.rpt" "finger_L2_blade_pointConstraint9.crt"; -connectAttr "finger_L2_root.t" "finger_L2_blade_pointConstraint9.tg[0].tt"; -connectAttr "finger_L2_root.rp" "finger_L2_blade_pointConstraint9.tg[0].trp"; -connectAttr "finger_L2_root.rpt" "finger_L2_blade_pointConstraint9.tg[0].trt"; -connectAttr "finger_L2_root.pm" "finger_L2_blade_pointConstraint9.tg[0].tpm"; -connectAttr "finger_L2_blade_pointConstraint9.w0" "finger_L2_blade_pointConstraint9.tg[0].tw" - ; -connectAttr "mgear_curveCns416.og[0]" "finger_L2_crvShape.cr"; -connectAttr "tweak564.pl[0].cp[0]" "finger_L2_crvShape.twl"; -connectAttr "mgear_curveCns416GroupId.id" "finger_L2_crvShape.iog.og[0].gid"; -connectAttr "mgear_curveCns416Set.mwc" "finger_L2_crvShape.iog.og[0].gco"; -connectAttr "groupId8697.id" "finger_L2_crvShape.iog.og[1].gid"; -connectAttr "tweakSet564.mwc" "finger_L2_crvShape.iog.og[1].gco"; -connectAttr "finger_L1_blade_pointConstraint9.ctx" "finger_L1_blade.tx" -l on; -connectAttr "finger_L1_blade_pointConstraint9.cty" "finger_L1_blade.ty" -l on; -connectAttr "finger_L1_blade_pointConstraint9.ctz" "finger_L1_blade.tz" -l on; -connectAttr "finger_L1_blade_aimConstraint9.crx" "finger_L1_blade.rx" -l on; -connectAttr "finger_L1_blade_aimConstraint9.cry" "finger_L1_blade.ry" -l on; -connectAttr "finger_L1_blade_aimConstraint9.crz" "finger_L1_blade.rz" -l on; -connectAttr "finger_L1_blade.pim" "finger_L1_blade_aimConstraint9.cpim"; -connectAttr "finger_L1_blade.t" "finger_L1_blade_aimConstraint9.ct"; -connectAttr "finger_L1_blade.rp" "finger_L1_blade_aimConstraint9.crp"; -connectAttr "finger_L1_blade.rpt" "finger_L1_blade_aimConstraint9.crt"; -connectAttr "finger_L1_blade.ro" "finger_L1_blade_aimConstraint9.cro"; -connectAttr "finger_L1_0_loc.t" "finger_L1_blade_aimConstraint9.tg[0].tt"; -connectAttr "finger_L1_0_loc.rp" "finger_L1_blade_aimConstraint9.tg[0].trp"; -connectAttr "finger_L1_0_loc.rpt" "finger_L1_blade_aimConstraint9.tg[0].trt"; -connectAttr "finger_L1_0_loc.pm" "finger_L1_blade_aimConstraint9.tg[0].tpm"; -connectAttr "finger_L1_blade_aimConstraint9.w0" "finger_L1_blade_aimConstraint9.tg[0].tw" - ; -connectAttr "finger_L1_root.wm" "finger_L1_blade_aimConstraint9.wum"; -connectAttr "unitConversion136.o" "finger_L1_blade_aimConstraint9.ox"; -connectAttr "finger_L1_blade.pim" "finger_L1_blade_pointConstraint9.cpim"; -connectAttr "finger_L1_blade.rp" "finger_L1_blade_pointConstraint9.crp"; -connectAttr "finger_L1_blade.rpt" "finger_L1_blade_pointConstraint9.crt"; -connectAttr "finger_L1_root.t" "finger_L1_blade_pointConstraint9.tg[0].tt"; -connectAttr "finger_L1_root.rp" "finger_L1_blade_pointConstraint9.tg[0].trp"; -connectAttr "finger_L1_root.rpt" "finger_L1_blade_pointConstraint9.tg[0].trt"; -connectAttr "finger_L1_root.pm" "finger_L1_blade_pointConstraint9.tg[0].tpm"; -connectAttr "finger_L1_blade_pointConstraint9.w0" "finger_L1_blade_pointConstraint9.tg[0].tw" - ; -connectAttr "mgear_curveCns417.og[0]" "finger_L1_crvShape.cr"; -connectAttr "tweak565.pl[0].cp[0]" "finger_L1_crvShape.twl"; -connectAttr "mgear_curveCns417GroupId.id" "finger_L1_crvShape.iog.og[0].gid"; -connectAttr "mgear_curveCns417Set.mwc" "finger_L1_crvShape.iog.og[0].gco"; -connectAttr "groupId8699.id" "finger_L1_crvShape.iog.og[1].gid"; -connectAttr "tweakSet565.mwc" "finger_L1_crvShape.iog.og[1].gco"; -connectAttr "meta_L0_blade_pointConstraint9.ctx" "meta_L0_blade.tx" -l on; -connectAttr "meta_L0_blade_pointConstraint9.cty" "meta_L0_blade.ty" -l on; -connectAttr "meta_L0_blade_pointConstraint9.ctz" "meta_L0_blade.tz" -l on; -connectAttr "meta_L0_blade_aimConstraint9.crx" "meta_L0_blade.rx" -l on; -connectAttr "meta_L0_blade_aimConstraint9.cry" "meta_L0_blade.ry" -l on; -connectAttr "meta_L0_blade_aimConstraint9.crz" "meta_L0_blade.rz" -l on; -connectAttr "meta_L0_blade.pim" "meta_L0_blade_aimConstraint9.cpim"; -connectAttr "meta_L0_blade.t" "meta_L0_blade_aimConstraint9.ct"; -connectAttr "meta_L0_blade.rp" "meta_L0_blade_aimConstraint9.crp"; -connectAttr "meta_L0_blade.rpt" "meta_L0_blade_aimConstraint9.crt"; -connectAttr "meta_L0_blade.ro" "meta_L0_blade_aimConstraint9.cro"; -connectAttr "meta_L0_0_loc.t" "meta_L0_blade_aimConstraint9.tg[0].tt"; -connectAttr "meta_L0_0_loc.rp" "meta_L0_blade_aimConstraint9.tg[0].trp"; -connectAttr "meta_L0_0_loc.rpt" "meta_L0_blade_aimConstraint9.tg[0].trt"; -connectAttr "meta_L0_0_loc.pm" "meta_L0_blade_aimConstraint9.tg[0].tpm"; -connectAttr "meta_L0_blade_aimConstraint9.w0" "meta_L0_blade_aimConstraint9.tg[0].tw" - ; -connectAttr "meta_L0_root.wm" "meta_L0_blade_aimConstraint9.wum"; -connectAttr "unitConversion133.o" "meta_L0_blade_aimConstraint9.ox"; -connectAttr "meta_L0_blade.pim" "meta_L0_blade_pointConstraint9.cpim"; -connectAttr "meta_L0_blade.rp" "meta_L0_blade_pointConstraint9.crp"; -connectAttr "meta_L0_blade.rpt" "meta_L0_blade_pointConstraint9.crt"; -connectAttr "meta_L0_root.t" "meta_L0_blade_pointConstraint9.tg[0].tt"; -connectAttr "meta_L0_root.rp" "meta_L0_blade_pointConstraint9.tg[0].trp"; -connectAttr "meta_L0_root.rpt" "meta_L0_blade_pointConstraint9.tg[0].trt"; -connectAttr "meta_L0_root.pm" "meta_L0_blade_pointConstraint9.tg[0].tpm"; -connectAttr "meta_L0_blade_pointConstraint9.w0" "meta_L0_blade_pointConstraint9.tg[0].tw" - ; -connectAttr "mgear_curveCns414.og[0]" "meta_L0_crvShape.cr"; -connectAttr "tweak562.pl[0].cp[0]" "meta_L0_crvShape.twl"; -connectAttr "mgear_curveCns414GroupId.id" "meta_L0_crvShape.iog.og[0].gid"; -connectAttr "mgear_curveCns414Set.mwc" "meta_L0_crvShape.iog.og[0].gco"; -connectAttr "groupId8693.id" "meta_L0_crvShape.iog.og[1].gid"; -connectAttr "tweakSet562.mwc" "meta_L0_crvShape.iog.og[1].gco"; -connectAttr "finger_L0_blade_pointConstraint9.ctx" "finger_L0_blade.tx" -l on; -connectAttr "finger_L0_blade_pointConstraint9.cty" "finger_L0_blade.ty" -l on; -connectAttr "finger_L0_blade_pointConstraint9.ctz" "finger_L0_blade.tz" -l on; -connectAttr "finger_L0_blade_aimConstraint9.crx" "finger_L0_blade.rx" -l on; -connectAttr "finger_L0_blade_aimConstraint9.cry" "finger_L0_blade.ry" -l on; -connectAttr "finger_L0_blade_aimConstraint9.crz" "finger_L0_blade.rz" -l on; -connectAttr "finger_L0_blade.pim" "finger_L0_blade_aimConstraint9.cpim"; -connectAttr "finger_L0_blade.t" "finger_L0_blade_aimConstraint9.ct"; -connectAttr "finger_L0_blade.rp" "finger_L0_blade_aimConstraint9.crp"; -connectAttr "finger_L0_blade.rpt" "finger_L0_blade_aimConstraint9.crt"; -connectAttr "finger_L0_blade.ro" "finger_L0_blade_aimConstraint9.cro"; -connectAttr "finger_L0_0_loc.t" "finger_L0_blade_aimConstraint9.tg[0].tt"; -connectAttr "finger_L0_0_loc.rp" "finger_L0_blade_aimConstraint9.tg[0].trp"; -connectAttr "finger_L0_0_loc.rpt" "finger_L0_blade_aimConstraint9.tg[0].trt"; -connectAttr "finger_L0_0_loc.pm" "finger_L0_blade_aimConstraint9.tg[0].tpm"; -connectAttr "finger_L0_blade_aimConstraint9.w0" "finger_L0_blade_aimConstraint9.tg[0].tw" - ; -connectAttr "finger_L0_root.wm" "finger_L0_blade_aimConstraint9.wum"; -connectAttr "unitConversion137.o" "finger_L0_blade_aimConstraint9.ox"; -connectAttr "finger_L0_blade.pim" "finger_L0_blade_pointConstraint9.cpim"; -connectAttr "finger_L0_blade.rp" "finger_L0_blade_pointConstraint9.crp"; -connectAttr "finger_L0_blade.rpt" "finger_L0_blade_pointConstraint9.crt"; -connectAttr "finger_L0_root.t" "finger_L0_blade_pointConstraint9.tg[0].tt"; -connectAttr "finger_L0_root.rp" "finger_L0_blade_pointConstraint9.tg[0].trp"; -connectAttr "finger_L0_root.rpt" "finger_L0_blade_pointConstraint9.tg[0].trt"; -connectAttr "finger_L0_root.pm" "finger_L0_blade_pointConstraint9.tg[0].tpm"; -connectAttr "finger_L0_blade_pointConstraint9.w0" "finger_L0_blade_pointConstraint9.tg[0].tw" - ; -connectAttr "mgear_curveCns418.og[0]" "finger_L0_crvShape.cr"; -connectAttr "tweak566.pl[0].cp[0]" "finger_L0_crvShape.twl"; -connectAttr "mgear_curveCns418GroupId.id" "finger_L0_crvShape.iog.og[0].gid"; -connectAttr "mgear_curveCns418Set.mwc" "finger_L0_crvShape.iog.og[0].gco"; -connectAttr "groupId8701.id" "finger_L0_crvShape.iog.og[1].gid"; -connectAttr "tweakSet566.mwc" "finger_L0_crvShape.iog.og[1].gco"; -connectAttr "thumb_L0_blade_pointConstraint9.ctx" "thumb_L0_blade.tx" -l on; -connectAttr "thumb_L0_blade_pointConstraint9.cty" "thumb_L0_blade.ty" -l on; -connectAttr "thumb_L0_blade_pointConstraint9.ctz" "thumb_L0_blade.tz" -l on; -connectAttr "thumb_L0_blade_aimConstraint9.crx" "thumb_L0_blade.rx" -l on; -connectAttr "thumb_L0_blade_aimConstraint9.cry" "thumb_L0_blade.ry" -l on; -connectAttr "thumb_L0_blade_aimConstraint9.crz" "thumb_L0_blade.rz" -l on; -connectAttr "thumb_L0_blade.pim" "thumb_L0_blade_aimConstraint9.cpim"; -connectAttr "thumb_L0_blade.t" "thumb_L0_blade_aimConstraint9.ct"; -connectAttr "thumb_L0_blade.rp" "thumb_L0_blade_aimConstraint9.crp"; -connectAttr "thumb_L0_blade.rpt" "thumb_L0_blade_aimConstraint9.crt"; -connectAttr "thumb_L0_blade.ro" "thumb_L0_blade_aimConstraint9.cro"; -connectAttr "thumb_L0_0_loc.t" "thumb_L0_blade_aimConstraint9.tg[0].tt"; -connectAttr "thumb_L0_0_loc.rp" "thumb_L0_blade_aimConstraint9.tg[0].trp"; -connectAttr "thumb_L0_0_loc.rpt" "thumb_L0_blade_aimConstraint9.tg[0].trt"; -connectAttr "thumb_L0_0_loc.pm" "thumb_L0_blade_aimConstraint9.tg[0].tpm"; -connectAttr "thumb_L0_blade_aimConstraint9.w0" "thumb_L0_blade_aimConstraint9.tg[0].tw" - ; -connectAttr "thumb_L0_root.wm" "thumb_L0_blade_aimConstraint9.wum"; -connectAttr "unitConversion138.o" "thumb_L0_blade_aimConstraint9.ox"; -connectAttr "thumb_L0_blade.pim" "thumb_L0_blade_pointConstraint9.cpim"; -connectAttr "thumb_L0_blade.rp" "thumb_L0_blade_pointConstraint9.crp"; -connectAttr "thumb_L0_blade.rpt" "thumb_L0_blade_pointConstraint9.crt"; -connectAttr "thumb_L0_root.t" "thumb_L0_blade_pointConstraint9.tg[0].tt"; -connectAttr "thumb_L0_root.rp" "thumb_L0_blade_pointConstraint9.tg[0].trp"; -connectAttr "thumb_L0_root.rpt" "thumb_L0_blade_pointConstraint9.tg[0].trt"; -connectAttr "thumb_L0_root.pm" "thumb_L0_blade_pointConstraint9.tg[0].tpm"; -connectAttr "thumb_L0_blade_pointConstraint9.w0" "thumb_L0_blade_pointConstraint9.tg[0].tw" - ; -connectAttr "mgear_curveCns419.og[0]" "thumb_L0_crvShape.cr"; -connectAttr "tweak567.pl[0].cp[0]" "thumb_L0_crvShape.twl"; -connectAttr "mgear_curveCns419GroupId.id" "thumb_L0_crvShape.iog.og[0].gid"; -connectAttr "mgear_curveCns419Set.mwc" "thumb_L0_crvShape.iog.og[0].gco"; -connectAttr "groupId8703.id" "thumb_L0_crvShape.iog.og[1].gid"; -connectAttr "tweakSet567.mwc" "thumb_L0_crvShape.iog.og[1].gco"; -connectAttr "mgear_curveCns413.og[0]" "arm_L0_crvShape.cr"; -connectAttr "tweak561.pl[0].cp[0]" "arm_L0_crvShape.twl"; -connectAttr "mgear_curveCns413GroupId.id" "arm_L0_crvShape.iog.og[0].gid"; -connectAttr "mgear_curveCns413Set.mwc" "arm_L0_crvShape.iog.og[0].gco"; -connectAttr "groupId8691.id" "arm_L0_crvShape.iog.og[1].gid"; -connectAttr "tweakSet561.mwc" "arm_L0_crvShape.iog.og[1].gco"; -connectAttr "shoulder_L0_blade_pointConstraint9.ctx" "shoulder_L0_blade.tx" -l on - ; -connectAttr "shoulder_L0_blade_pointConstraint9.cty" "shoulder_L0_blade.ty" -l on - ; -connectAttr "shoulder_L0_blade_pointConstraint9.ctz" "shoulder_L0_blade.tz" -l on - ; -connectAttr "shoulder_L0_blade_aimConstraint9.crx" "shoulder_L0_blade.rx" -l on; -connectAttr "shoulder_L0_blade_aimConstraint9.cry" "shoulder_L0_blade.ry" -l on; -connectAttr "shoulder_L0_blade_aimConstraint9.crz" "shoulder_L0_blade.rz" -l on; -connectAttr "shoulder_L0_blade.pim" "shoulder_L0_blade_aimConstraint9.cpim"; -connectAttr "shoulder_L0_blade.t" "shoulder_L0_blade_aimConstraint9.ct"; -connectAttr "shoulder_L0_blade.rp" "shoulder_L0_blade_aimConstraint9.crp"; -connectAttr "shoulder_L0_blade.rpt" "shoulder_L0_blade_aimConstraint9.crt"; -connectAttr "shoulder_L0_blade.ro" "shoulder_L0_blade_aimConstraint9.cro"; -connectAttr "shoulder_L0_tip.t" "shoulder_L0_blade_aimConstraint9.tg[0].tt"; -connectAttr "shoulder_L0_tip.rp" "shoulder_L0_blade_aimConstraint9.tg[0].trp"; -connectAttr "shoulder_L0_tip.rpt" "shoulder_L0_blade_aimConstraint9.tg[0].trt"; -connectAttr "shoulder_L0_tip.pm" "shoulder_L0_blade_aimConstraint9.tg[0].tpm"; -connectAttr "shoulder_L0_blade_aimConstraint9.w0" "shoulder_L0_blade_aimConstraint9.tg[0].tw" - ; -connectAttr "shoulder_L0_root.wm" "shoulder_L0_blade_aimConstraint9.wum"; -connectAttr "unitConversion132.o" "shoulder_L0_blade_aimConstraint9.ox"; -connectAttr "shoulder_L0_blade.pim" "shoulder_L0_blade_pointConstraint9.cpim"; -connectAttr "shoulder_L0_blade.rp" "shoulder_L0_blade_pointConstraint9.crp"; -connectAttr "shoulder_L0_blade.rpt" "shoulder_L0_blade_pointConstraint9.crt"; -connectAttr "shoulder_L0_root.t" "shoulder_L0_blade_pointConstraint9.tg[0].tt"; -connectAttr "shoulder_L0_root.rp" "shoulder_L0_blade_pointConstraint9.tg[0].trp" - ; -connectAttr "shoulder_L0_root.rpt" "shoulder_L0_blade_pointConstraint9.tg[0].trt" - ; -connectAttr "shoulder_L0_root.pm" "shoulder_L0_blade_pointConstraint9.tg[0].tpm" - ; -connectAttr "shoulder_L0_blade_pointConstraint9.w0" "shoulder_L0_blade_pointConstraint9.tg[0].tw" - ; -connectAttr "mgear_curveCns412.og[0]" "shoulder_L0_crvShape.cr"; -connectAttr "tweak560.pl[0].cp[0]" "shoulder_L0_crvShape.twl"; -connectAttr "mgear_curveCns412GroupId.id" "shoulder_L0_crvShape.iog.og[0].gid"; -connectAttr "mgear_curveCns412Set.mwc" "shoulder_L0_crvShape.iog.og[0].gco"; -connectAttr "groupId8689.id" "shoulder_L0_crvShape.iog.og[1].gid"; -connectAttr "tweakSet560.mwc" "shoulder_L0_crvShape.iog.og[1].gco"; -connectAttr "neck_C0_root_st_profile1.o" "neck_C0_root.st_profile"; -connectAttr "neck_C0_root_sq_profile1.o" "neck_C0_root.sq_profile"; -connectAttr "mgear_curveCns423.og[0]" "|guide|global_C0_root|local_C0_root|body_C0_root|spine_C0_root|spine_C0_eff|neck_C0_root|neck_C0_neck|neck_C0_head|mouth_C0_root|mouth_C0_rotcenter|mouth_C0_lipup|mouth_C0_crv|mouth_C0_crvShape.cr" - ; -connectAttr "tweak571.pl[0].cp[0]" "|guide|global_C0_root|local_C0_root|body_C0_root|spine_C0_root|spine_C0_eff|neck_C0_root|neck_C0_neck|neck_C0_head|mouth_C0_root|mouth_C0_rotcenter|mouth_C0_lipup|mouth_C0_crv|mouth_C0_crvShape.twl" - ; -connectAttr "mgear_curveCns423GroupId.id" "|guide|global_C0_root|local_C0_root|body_C0_root|spine_C0_root|spine_C0_eff|neck_C0_root|neck_C0_neck|neck_C0_head|mouth_C0_root|mouth_C0_rotcenter|mouth_C0_lipup|mouth_C0_crv|mouth_C0_crvShape.iog.og[0].gid" - ; -connectAttr "mgear_curveCns423Set.mwc" "|guide|global_C0_root|local_C0_root|body_C0_root|spine_C0_root|spine_C0_eff|neck_C0_root|neck_C0_neck|neck_C0_head|mouth_C0_root|mouth_C0_rotcenter|mouth_C0_lipup|mouth_C0_crv|mouth_C0_crvShape.iog.og[0].gco" - ; -connectAttr "groupId8711.id" "|guide|global_C0_root|local_C0_root|body_C0_root|spine_C0_root|spine_C0_eff|neck_C0_root|neck_C0_neck|neck_C0_head|mouth_C0_root|mouth_C0_rotcenter|mouth_C0_lipup|mouth_C0_crv|mouth_C0_crvShape.iog.og[1].gid" - ; -connectAttr "tweakSet571.mwc" "|guide|global_C0_root|local_C0_root|body_C0_root|spine_C0_root|spine_C0_eff|neck_C0_root|neck_C0_neck|neck_C0_head|mouth_C0_root|mouth_C0_rotcenter|mouth_C0_lipup|mouth_C0_crv|mouth_C0_crvShape.iog.og[1].gco" - ; -connectAttr "mgear_curveCns424.og[0]" "|guide|global_C0_root|local_C0_root|body_C0_root|spine_C0_root|spine_C0_eff|neck_C0_root|neck_C0_neck|neck_C0_head|mouth_C0_root|mouth_C0_rotcenter|mouth_C0_liplow|mouth_C0_crv|mouth_C0_crvShape.cr" - ; -connectAttr "tweak572.pl[0].cp[0]" "|guide|global_C0_root|local_C0_root|body_C0_root|spine_C0_root|spine_C0_eff|neck_C0_root|neck_C0_neck|neck_C0_head|mouth_C0_root|mouth_C0_rotcenter|mouth_C0_liplow|mouth_C0_crv|mouth_C0_crvShape.twl" - ; -connectAttr "mgear_curveCns424GroupId.id" "|guide|global_C0_root|local_C0_root|body_C0_root|spine_C0_root|spine_C0_eff|neck_C0_root|neck_C0_neck|neck_C0_head|mouth_C0_root|mouth_C0_rotcenter|mouth_C0_liplow|mouth_C0_crv|mouth_C0_crvShape.iog.og[0].gid" - ; -connectAttr "mgear_curveCns424Set.mwc" "|guide|global_C0_root|local_C0_root|body_C0_root|spine_C0_root|spine_C0_eff|neck_C0_root|neck_C0_neck|neck_C0_head|mouth_C0_root|mouth_C0_rotcenter|mouth_C0_liplow|mouth_C0_crv|mouth_C0_crvShape.iog.og[0].gco" - ; -connectAttr "groupId8713.id" "|guide|global_C0_root|local_C0_root|body_C0_root|spine_C0_root|spine_C0_eff|neck_C0_root|neck_C0_neck|neck_C0_head|mouth_C0_root|mouth_C0_rotcenter|mouth_C0_liplow|mouth_C0_crv|mouth_C0_crvShape.iog.og[1].gid" - ; -connectAttr "tweakSet572.mwc" "|guide|global_C0_root|local_C0_root|body_C0_root|spine_C0_root|spine_C0_eff|neck_C0_root|neck_C0_neck|neck_C0_head|mouth_C0_root|mouth_C0_rotcenter|mouth_C0_liplow|mouth_C0_crv|mouth_C0_crvShape.iog.og[1].gco" - ; -connectAttr "tongue_C0_blade_pointConstraint9.ctx" "tongue_C0_blade.tx" -l on; -connectAttr "tongue_C0_blade_pointConstraint9.cty" "tongue_C0_blade.ty" -l on; -connectAttr "tongue_C0_blade_pointConstraint9.ctz" "tongue_C0_blade.tz" -l on; -connectAttr "tongue_C0_blade_aimConstraint9.crx" "tongue_C0_blade.rx" -l on; -connectAttr "tongue_C0_blade_aimConstraint9.cry" "tongue_C0_blade.ry" -l on; -connectAttr "tongue_C0_blade_aimConstraint9.crz" "tongue_C0_blade.rz" -l on; -connectAttr "tongue_C0_blade.pim" "tongue_C0_blade_aimConstraint9.cpim"; -connectAttr "tongue_C0_blade.t" "tongue_C0_blade_aimConstraint9.ct"; -connectAttr "tongue_C0_blade.rp" "tongue_C0_blade_aimConstraint9.crp"; -connectAttr "tongue_C0_blade.rpt" "tongue_C0_blade_aimConstraint9.crt"; -connectAttr "tongue_C0_blade.ro" "tongue_C0_blade_aimConstraint9.cro"; -connectAttr "tongue_C0_0_loc.t" "tongue_C0_blade_aimConstraint9.tg[0].tt"; -connectAttr "tongue_C0_0_loc.rp" "tongue_C0_blade_aimConstraint9.tg[0].trp"; -connectAttr "tongue_C0_0_loc.rpt" "tongue_C0_blade_aimConstraint9.tg[0].trt"; -connectAttr "tongue_C0_0_loc.pm" "tongue_C0_blade_aimConstraint9.tg[0].tpm"; -connectAttr "tongue_C0_blade_aimConstraint9.w0" "tongue_C0_blade_aimConstraint9.tg[0].tw" - ; -connectAttr "tongue_C0_root.wm" "tongue_C0_blade_aimConstraint9.wum"; -connectAttr "unitConversion140.o" "tongue_C0_blade_aimConstraint9.ox"; -connectAttr "tongue_C0_blade.pim" "tongue_C0_blade_pointConstraint9.cpim"; -connectAttr "tongue_C0_blade.rp" "tongue_C0_blade_pointConstraint9.crp"; -connectAttr "tongue_C0_blade.rpt" "tongue_C0_blade_pointConstraint9.crt"; -connectAttr "tongue_C0_root.t" "tongue_C0_blade_pointConstraint9.tg[0].tt"; -connectAttr "tongue_C0_root.rp" "tongue_C0_blade_pointConstraint9.tg[0].trp"; -connectAttr "tongue_C0_root.rpt" "tongue_C0_blade_pointConstraint9.tg[0].trt"; -connectAttr "tongue_C0_root.pm" "tongue_C0_blade_pointConstraint9.tg[0].tpm"; -connectAttr "tongue_C0_blade_pointConstraint9.w0" "tongue_C0_blade_pointConstraint9.tg[0].tw" - ; -connectAttr "mgear_curveCns426.og[0]" "tongue_C0_crvShape.cr"; -connectAttr "tweak574.pl[0].cp[0]" "tongue_C0_crvShape.twl"; -connectAttr "mgear_curveCns426GroupId.id" "tongue_C0_crvShape.iog.og[0].gid"; -connectAttr "mgear_curveCns426Set.mwc" "tongue_C0_crvShape.iog.og[0].gco"; -connectAttr "groupId8717.id" "tongue_C0_crvShape.iog.og[1].gid"; -connectAttr "tweakSet574.mwc" "tongue_C0_crvShape.iog.og[1].gco"; -connectAttr "mgear_curveCns422.og[0]" "|guide|global_C0_root|local_C0_root|body_C0_root|spine_C0_root|spine_C0_eff|neck_C0_root|neck_C0_neck|neck_C0_head|mouth_C0_root|mouth_C0_crv|mouth_C0_crvShape.cr" - ; -connectAttr "tweak570.pl[0].cp[0]" "|guide|global_C0_root|local_C0_root|body_C0_root|spine_C0_root|spine_C0_eff|neck_C0_root|neck_C0_neck|neck_C0_head|mouth_C0_root|mouth_C0_crv|mouth_C0_crvShape.twl" - ; -connectAttr "mgear_curveCns422GroupId.id" "|guide|global_C0_root|local_C0_root|body_C0_root|spine_C0_root|spine_C0_eff|neck_C0_root|neck_C0_neck|neck_C0_head|mouth_C0_root|mouth_C0_crv|mouth_C0_crvShape.iog.og[0].gid" - ; -connectAttr "mgear_curveCns422Set.mwc" "|guide|global_C0_root|local_C0_root|body_C0_root|spine_C0_root|spine_C0_eff|neck_C0_root|neck_C0_neck|neck_C0_head|mouth_C0_root|mouth_C0_crv|mouth_C0_crvShape.iog.og[0].gco" - ; -connectAttr "groupId8709.id" "|guide|global_C0_root|local_C0_root|body_C0_root|spine_C0_root|spine_C0_eff|neck_C0_root|neck_C0_neck|neck_C0_head|mouth_C0_root|mouth_C0_crv|mouth_C0_crvShape.iog.og[1].gid" - ; -connectAttr "tweakSet570.mwc" "|guide|global_C0_root|local_C0_root|body_C0_root|spine_C0_root|spine_C0_eff|neck_C0_root|neck_C0_neck|neck_C0_head|mouth_C0_root|mouth_C0_crv|mouth_C0_crvShape.iog.og[1].gco" - ; -connectAttr "mgear_curveCns425.og[0]" "mouth_C0_crv9Shape.cr"; -connectAttr "tweak573.pl[0].cp[0]" "mouth_C0_crv9Shape.twl"; -connectAttr "mgear_curveCns425GroupId.id" "mouth_C0_crv9Shape.iog.og[0].gid"; -connectAttr "mgear_curveCns425Set.mwc" "mouth_C0_crv9Shape.iog.og[0].gco"; -connectAttr "groupId8715.id" "mouth_C0_crv9Shape.iog.og[1].gid"; -connectAttr "tweakSet573.mwc" "mouth_C0_crv9Shape.iog.og[1].gco"; -connectAttr "mgear_curveCns427.og[0]" "eye_R0_crvShape.cr"; -connectAttr "tweak575.pl[0].cp[0]" "eye_R0_crvShape.twl"; -connectAttr "mgear_curveCns427GroupId.id" "eye_R0_crvShape.iog.og[0].gid"; -connectAttr "mgear_curveCns427Set.mwc" "eye_R0_crvShape.iog.og[0].gco"; -connectAttr "groupId8719.id" "eye_R0_crvShape.iog.og[1].gid"; -connectAttr "tweakSet575.mwc" "eye_R0_crvShape.iog.og[1].gco"; -connectAttr "mgear_curveCns428.og[0]" "eye_L0_crvShape.cr"; -connectAttr "tweak576.pl[0].cp[0]" "eye_L0_crvShape.twl"; -connectAttr "mgear_curveCns428GroupId.id" "eye_L0_crvShape.iog.og[0].gid"; -connectAttr "mgear_curveCns428Set.mwc" "eye_L0_crvShape.iog.og[0].gco"; -connectAttr "groupId8721.id" "eye_L0_crvShape.iog.og[1].gid"; -connectAttr "tweakSet576.mwc" "eye_L0_crvShape.iog.og[1].gco"; -connectAttr "mgear_curveCns421.og[0]" "neck_C0_head_crvShape.cr"; -connectAttr "tweak569.pl[0].cp[0]" "neck_C0_head_crvShape.twl"; -connectAttr "mgear_curveCns421GroupId.id" "neck_C0_head_crvShape.iog.og[0].gid"; -connectAttr "mgear_curveCns421Set.mwc" "neck_C0_head_crvShape.iog.og[0].gco"; -connectAttr "groupId8707.id" "neck_C0_head_crvShape.iog.og[1].gid"; -connectAttr "tweakSet569.mwc" "neck_C0_head_crvShape.iog.og[1].gco"; -connectAttr "neck_C0_blade_pointConstraint9.ctx" "neck_C0_blade.tx" -l on; -connectAttr "neck_C0_blade_pointConstraint9.cty" "neck_C0_blade.ty" -l on; -connectAttr "neck_C0_blade_pointConstraint9.ctz" "neck_C0_blade.tz" -l on; -connectAttr "neck_C0_blade_aimConstraint9.crx" "neck_C0_blade.rx" -l on; -connectAttr "neck_C0_blade_aimConstraint9.cry" "neck_C0_blade.ry" -l on; -connectAttr "neck_C0_blade_aimConstraint9.crz" "neck_C0_blade.rz" -l on; -connectAttr "neck_C0_blade.pim" "neck_C0_blade_aimConstraint9.cpim"; -connectAttr "neck_C0_blade.t" "neck_C0_blade_aimConstraint9.ct"; -connectAttr "neck_C0_blade.rp" "neck_C0_blade_aimConstraint9.crp"; -connectAttr "neck_C0_blade.rpt" "neck_C0_blade_aimConstraint9.crt"; -connectAttr "neck_C0_blade.ro" "neck_C0_blade_aimConstraint9.cro"; -connectAttr "neck_C0_tan0.t" "neck_C0_blade_aimConstraint9.tg[0].tt"; -connectAttr "neck_C0_tan0.rp" "neck_C0_blade_aimConstraint9.tg[0].trp"; -connectAttr "neck_C0_tan0.rpt" "neck_C0_blade_aimConstraint9.tg[0].trt"; -connectAttr "neck_C0_tan0.pm" "neck_C0_blade_aimConstraint9.tg[0].tpm"; -connectAttr "neck_C0_blade_aimConstraint9.w0" "neck_C0_blade_aimConstraint9.tg[0].tw" - ; -connectAttr "neck_C0_root.wm" "neck_C0_blade_aimConstraint9.wum"; -connectAttr "unitConversion139.o" "neck_C0_blade_aimConstraint9.ox"; -connectAttr "neck_C0_blade.pim" "neck_C0_blade_pointConstraint9.cpim"; -connectAttr "neck_C0_blade.rp" "neck_C0_blade_pointConstraint9.crp"; -connectAttr "neck_C0_blade.rpt" "neck_C0_blade_pointConstraint9.crt"; -connectAttr "neck_C0_root.t" "neck_C0_blade_pointConstraint9.tg[0].tt"; -connectAttr "neck_C0_root.rp" "neck_C0_blade_pointConstraint9.tg[0].trp"; -connectAttr "neck_C0_root.rpt" "neck_C0_blade_pointConstraint9.tg[0].trt"; -connectAttr "neck_C0_root.pm" "neck_C0_blade_pointConstraint9.tg[0].tpm"; -connectAttr "neck_C0_blade_pointConstraint9.w0" "neck_C0_blade_pointConstraint9.tg[0].tw" - ; -connectAttr "mgear_curveCns420.og[0]" "neck_C0_neck_crvShape.cr"; -connectAttr "tweak568.pl[0].cp[0]" "neck_C0_neck_crvShape.twl"; -connectAttr "mgear_curveCns420GroupId.id" "neck_C0_neck_crvShape.iog.og[0].gid"; -connectAttr "mgear_curveCns420Set.mwc" "neck_C0_neck_crvShape.iog.og[0].gco"; -connectAttr "groupId8705.id" "neck_C0_neck_crvShape.iog.og[1].gid"; -connectAttr "tweakSet568.mwc" "neck_C0_neck_crvShape.iog.og[1].gco"; -connectAttr "arm_R0_root_st_profile.o" "arm_R0_root.st_profile"; -connectAttr "arm_R0_root_sq_profile.o" "arm_R0_root.sq_profile"; -connectAttr "finger_R3_blade_pointConstraint1.ctx" "finger_R3_blade.tx" -l on; -connectAttr "finger_R3_blade_pointConstraint1.cty" "finger_R3_blade.ty" -l on; -connectAttr "finger_R3_blade_pointConstraint1.ctz" "finger_R3_blade.tz" -l on; -connectAttr "finger_R3_blade_aimConstraint1.crx" "finger_R3_blade.rx" -l on; -connectAttr "finger_R3_blade_aimConstraint1.cry" "finger_R3_blade.ry" -l on; -connectAttr "finger_R3_blade_aimConstraint1.crz" "finger_R3_blade.rz" -l on; -connectAttr "finger_R3_blade.pim" "finger_R3_blade_aimConstraint1.cpim"; -connectAttr "finger_R3_blade.t" "finger_R3_blade_aimConstraint1.ct"; -connectAttr "finger_R3_blade.rp" "finger_R3_blade_aimConstraint1.crp"; -connectAttr "finger_R3_blade.rpt" "finger_R3_blade_aimConstraint1.crt"; -connectAttr "finger_R3_blade.ro" "finger_R3_blade_aimConstraint1.cro"; -connectAttr "finger_R3_0_loc.t" "finger_R3_blade_aimConstraint1.tg[0].tt"; -connectAttr "finger_R3_0_loc.rp" "finger_R3_blade_aimConstraint1.tg[0].trp"; -connectAttr "finger_R3_0_loc.rpt" "finger_R3_blade_aimConstraint1.tg[0].trt"; -connectAttr "finger_R3_0_loc.pm" "finger_R3_blade_aimConstraint1.tg[0].tpm"; -connectAttr "finger_R3_blade_aimConstraint1.w0" "finger_R3_blade_aimConstraint1.tg[0].tw" - ; -connectAttr "finger_R3_root.wm" "finger_R3_blade_aimConstraint1.wum"; -connectAttr "unitConversion143.o" "finger_R3_blade_aimConstraint1.ox"; -connectAttr "finger_R3_blade.pim" "finger_R3_blade_pointConstraint1.cpim"; -connectAttr "finger_R3_blade.rp" "finger_R3_blade_pointConstraint1.crp"; -connectAttr "finger_R3_blade.rpt" "finger_R3_blade_pointConstraint1.crt"; -connectAttr "finger_R3_root.t" "finger_R3_blade_pointConstraint1.tg[0].tt"; -connectAttr "finger_R3_root.rp" "finger_R3_blade_pointConstraint1.tg[0].trp"; -connectAttr "finger_R3_root.rpt" "finger_R3_blade_pointConstraint1.tg[0].trt"; -connectAttr "finger_R3_root.pm" "finger_R3_blade_pointConstraint1.tg[0].tpm"; -connectAttr "finger_R3_blade_pointConstraint1.w0" "finger_R3_blade_pointConstraint1.tg[0].tw" - ; -connectAttr "mgear_curveCns443.og[0]" "finger_R3_crvShape.cr"; -connectAttr "tweak591.pl[0].cp[0]" "finger_R3_crvShape.twl"; -connectAttr "mgear_curveCns443GroupId.id" "finger_R3_crvShape.iog.og[0].gid"; -connectAttr "mgear_curveCns443Set.mwc" "finger_R3_crvShape.iog.og[0].gco"; -connectAttr "groupId8751.id" "finger_R3_crvShape.iog.og[1].gid"; -connectAttr "tweakSet591.mwc" "finger_R3_crvShape.iog.og[1].gco"; -connectAttr "finger_R2_blade_pointConstraint1.ctx" "finger_R2_blade.tx" -l on; -connectAttr "finger_R2_blade_pointConstraint1.cty" "finger_R2_blade.ty" -l on; -connectAttr "finger_R2_blade_pointConstraint1.ctz" "finger_R2_blade.tz" -l on; -connectAttr "finger_R2_blade_aimConstraint1.crx" "finger_R2_blade.rx" -l on; -connectAttr "finger_R2_blade_aimConstraint1.cry" "finger_R2_blade.ry" -l on; -connectAttr "finger_R2_blade_aimConstraint1.crz" "finger_R2_blade.rz" -l on; -connectAttr "finger_R2_blade.pim" "finger_R2_blade_aimConstraint1.cpim"; -connectAttr "finger_R2_blade.t" "finger_R2_blade_aimConstraint1.ct"; -connectAttr "finger_R2_blade.rp" "finger_R2_blade_aimConstraint1.crp"; -connectAttr "finger_R2_blade.rpt" "finger_R2_blade_aimConstraint1.crt"; -connectAttr "finger_R2_blade.ro" "finger_R2_blade_aimConstraint1.cro"; -connectAttr "finger_R2_0_loc.t" "finger_R2_blade_aimConstraint1.tg[0].tt"; -connectAttr "finger_R2_0_loc.rp" "finger_R2_blade_aimConstraint1.tg[0].trp"; -connectAttr "finger_R2_0_loc.rpt" "finger_R2_blade_aimConstraint1.tg[0].trt"; -connectAttr "finger_R2_0_loc.pm" "finger_R2_blade_aimConstraint1.tg[0].tpm"; -connectAttr "finger_R2_blade_aimConstraint1.w0" "finger_R2_blade_aimConstraint1.tg[0].tw" - ; -connectAttr "finger_R2_root.wm" "finger_R2_blade_aimConstraint1.wum"; -connectAttr "unitConversion144.o" "finger_R2_blade_aimConstraint1.ox"; -connectAttr "finger_R2_blade.pim" "finger_R2_blade_pointConstraint1.cpim"; -connectAttr "finger_R2_blade.rp" "finger_R2_blade_pointConstraint1.crp"; -connectAttr "finger_R2_blade.rpt" "finger_R2_blade_pointConstraint1.crt"; -connectAttr "finger_R2_root.t" "finger_R2_blade_pointConstraint1.tg[0].tt"; -connectAttr "finger_R2_root.rp" "finger_R2_blade_pointConstraint1.tg[0].trp"; -connectAttr "finger_R2_root.rpt" "finger_R2_blade_pointConstraint1.tg[0].trt"; -connectAttr "finger_R2_root.pm" "finger_R2_blade_pointConstraint1.tg[0].tpm"; -connectAttr "finger_R2_blade_pointConstraint1.w0" "finger_R2_blade_pointConstraint1.tg[0].tw" - ; -connectAttr "mgear_curveCns444.og[0]" "finger_R2_crvShape.cr"; -connectAttr "tweak592.pl[0].cp[0]" "finger_R2_crvShape.twl"; -connectAttr "mgear_curveCns444GroupId.id" "finger_R2_crvShape.iog.og[0].gid"; -connectAttr "mgear_curveCns444Set.mwc" "finger_R2_crvShape.iog.og[0].gco"; -connectAttr "groupId8753.id" "finger_R2_crvShape.iog.og[1].gid"; -connectAttr "tweakSet592.mwc" "finger_R2_crvShape.iog.og[1].gco"; -connectAttr "finger_R1_blade_pointConstraint1.ctx" "finger_R1_blade.tx" -l on; -connectAttr "finger_R1_blade_pointConstraint1.cty" "finger_R1_blade.ty" -l on; -connectAttr "finger_R1_blade_pointConstraint1.ctz" "finger_R1_blade.tz" -l on; -connectAttr "finger_R1_blade_aimConstraint1.crx" "finger_R1_blade.rx" -l on; -connectAttr "finger_R1_blade_aimConstraint1.cry" "finger_R1_blade.ry" -l on; -connectAttr "finger_R1_blade_aimConstraint1.crz" "finger_R1_blade.rz" -l on; -connectAttr "finger_R1_blade.pim" "finger_R1_blade_aimConstraint1.cpim"; -connectAttr "finger_R1_blade.t" "finger_R1_blade_aimConstraint1.ct"; -connectAttr "finger_R1_blade.rp" "finger_R1_blade_aimConstraint1.crp"; -connectAttr "finger_R1_blade.rpt" "finger_R1_blade_aimConstraint1.crt"; -connectAttr "finger_R1_blade.ro" "finger_R1_blade_aimConstraint1.cro"; -connectAttr "finger_R1_0_loc.t" "finger_R1_blade_aimConstraint1.tg[0].tt"; -connectAttr "finger_R1_0_loc.rp" "finger_R1_blade_aimConstraint1.tg[0].trp"; -connectAttr "finger_R1_0_loc.rpt" "finger_R1_blade_aimConstraint1.tg[0].trt"; -connectAttr "finger_R1_0_loc.pm" "finger_R1_blade_aimConstraint1.tg[0].tpm"; -connectAttr "finger_R1_blade_aimConstraint1.w0" "finger_R1_blade_aimConstraint1.tg[0].tw" - ; -connectAttr "finger_R1_root.wm" "finger_R1_blade_aimConstraint1.wum"; -connectAttr "unitConversion145.o" "finger_R1_blade_aimConstraint1.ox"; -connectAttr "finger_R1_blade.pim" "finger_R1_blade_pointConstraint1.cpim"; -connectAttr "finger_R1_blade.rp" "finger_R1_blade_pointConstraint1.crp"; -connectAttr "finger_R1_blade.rpt" "finger_R1_blade_pointConstraint1.crt"; -connectAttr "finger_R1_root.t" "finger_R1_blade_pointConstraint1.tg[0].tt"; -connectAttr "finger_R1_root.rp" "finger_R1_blade_pointConstraint1.tg[0].trp"; -connectAttr "finger_R1_root.rpt" "finger_R1_blade_pointConstraint1.tg[0].trt"; -connectAttr "finger_R1_root.pm" "finger_R1_blade_pointConstraint1.tg[0].tpm"; -connectAttr "finger_R1_blade_pointConstraint1.w0" "finger_R1_blade_pointConstraint1.tg[0].tw" - ; -connectAttr "mgear_curveCns445.og[0]" "finger_R1_crvShape.cr"; -connectAttr "tweak593.pl[0].cp[0]" "finger_R1_crvShape.twl"; -connectAttr "mgear_curveCns445GroupId.id" "finger_R1_crvShape.iog.og[0].gid"; -connectAttr "mgear_curveCns445Set.mwc" "finger_R1_crvShape.iog.og[0].gco"; -connectAttr "groupId8755.id" "finger_R1_crvShape.iog.og[1].gid"; -connectAttr "tweakSet593.mwc" "finger_R1_crvShape.iog.og[1].gco"; -connectAttr "meta_R0_blade_pointConstraint1.ctx" "meta_R0_blade.tx" -l on; -connectAttr "meta_R0_blade_pointConstraint1.cty" "meta_R0_blade.ty" -l on; -connectAttr "meta_R0_blade_pointConstraint1.ctz" "meta_R0_blade.tz" -l on; -connectAttr "meta_R0_blade_aimConstraint1.crx" "meta_R0_blade.rx" -l on; -connectAttr "meta_R0_blade_aimConstraint1.cry" "meta_R0_blade.ry" -l on; -connectAttr "meta_R0_blade_aimConstraint1.crz" "meta_R0_blade.rz" -l on; -connectAttr "meta_R0_blade.pim" "meta_R0_blade_aimConstraint1.cpim"; -connectAttr "meta_R0_blade.t" "meta_R0_blade_aimConstraint1.ct"; -connectAttr "meta_R0_blade.rp" "meta_R0_blade_aimConstraint1.crp"; -connectAttr "meta_R0_blade.rpt" "meta_R0_blade_aimConstraint1.crt"; -connectAttr "meta_R0_blade.ro" "meta_R0_blade_aimConstraint1.cro"; -connectAttr "meta_R0_0_loc.t" "meta_R0_blade_aimConstraint1.tg[0].tt"; -connectAttr "meta_R0_0_loc.rp" "meta_R0_blade_aimConstraint1.tg[0].trp"; -connectAttr "meta_R0_0_loc.rpt" "meta_R0_blade_aimConstraint1.tg[0].trt"; -connectAttr "meta_R0_0_loc.pm" "meta_R0_blade_aimConstraint1.tg[0].tpm"; -connectAttr "meta_R0_blade_aimConstraint1.w0" "meta_R0_blade_aimConstraint1.tg[0].tw" - ; -connectAttr "meta_R0_root.wm" "meta_R0_blade_aimConstraint1.wum"; -connectAttr "unitConversion142.o" "meta_R0_blade_aimConstraint1.ox"; -connectAttr "meta_R0_blade.pim" "meta_R0_blade_pointConstraint1.cpim"; -connectAttr "meta_R0_blade.rp" "meta_R0_blade_pointConstraint1.crp"; -connectAttr "meta_R0_blade.rpt" "meta_R0_blade_pointConstraint1.crt"; -connectAttr "meta_R0_root.t" "meta_R0_blade_pointConstraint1.tg[0].tt"; -connectAttr "meta_R0_root.rp" "meta_R0_blade_pointConstraint1.tg[0].trp"; -connectAttr "meta_R0_root.rpt" "meta_R0_blade_pointConstraint1.tg[0].trt"; -connectAttr "meta_R0_root.pm" "meta_R0_blade_pointConstraint1.tg[0].tpm"; -connectAttr "meta_R0_blade_pointConstraint1.w0" "meta_R0_blade_pointConstraint1.tg[0].tw" - ; -connectAttr "mgear_curveCns442.og[0]" "meta_R0_crvShape.cr"; -connectAttr "tweak590.pl[0].cp[0]" "meta_R0_crvShape.twl"; -connectAttr "mgear_curveCns442GroupId.id" "meta_R0_crvShape.iog.og[0].gid"; -connectAttr "mgear_curveCns442Set.mwc" "meta_R0_crvShape.iog.og[0].gco"; -connectAttr "groupId8749.id" "meta_R0_crvShape.iog.og[1].gid"; -connectAttr "tweakSet590.mwc" "meta_R0_crvShape.iog.og[1].gco"; -connectAttr "finger_R0_blade_pointConstraint1.ctx" "finger_R0_blade.tx" -l on; -connectAttr "finger_R0_blade_pointConstraint1.cty" "finger_R0_blade.ty" -l on; -connectAttr "finger_R0_blade_pointConstraint1.ctz" "finger_R0_blade.tz" -l on; -connectAttr "finger_R0_blade_aimConstraint1.crx" "finger_R0_blade.rx" -l on; -connectAttr "finger_R0_blade_aimConstraint1.cry" "finger_R0_blade.ry" -l on; -connectAttr "finger_R0_blade_aimConstraint1.crz" "finger_R0_blade.rz" -l on; -connectAttr "finger_R0_blade.pim" "finger_R0_blade_aimConstraint1.cpim"; -connectAttr "finger_R0_blade.t" "finger_R0_blade_aimConstraint1.ct"; -connectAttr "finger_R0_blade.rp" "finger_R0_blade_aimConstraint1.crp"; -connectAttr "finger_R0_blade.rpt" "finger_R0_blade_aimConstraint1.crt"; -connectAttr "finger_R0_blade.ro" "finger_R0_blade_aimConstraint1.cro"; -connectAttr "finger_R0_0_loc.t" "finger_R0_blade_aimConstraint1.tg[0].tt"; -connectAttr "finger_R0_0_loc.rp" "finger_R0_blade_aimConstraint1.tg[0].trp"; -connectAttr "finger_R0_0_loc.rpt" "finger_R0_blade_aimConstraint1.tg[0].trt"; -connectAttr "finger_R0_0_loc.pm" "finger_R0_blade_aimConstraint1.tg[0].tpm"; -connectAttr "finger_R0_blade_aimConstraint1.w0" "finger_R0_blade_aimConstraint1.tg[0].tw" - ; -connectAttr "finger_R0_root.wm" "finger_R0_blade_aimConstraint1.wum"; -connectAttr "unitConversion146.o" "finger_R0_blade_aimConstraint1.ox"; -connectAttr "finger_R0_blade.pim" "finger_R0_blade_pointConstraint1.cpim"; -connectAttr "finger_R0_blade.rp" "finger_R0_blade_pointConstraint1.crp"; -connectAttr "finger_R0_blade.rpt" "finger_R0_blade_pointConstraint1.crt"; -connectAttr "finger_R0_root.t" "finger_R0_blade_pointConstraint1.tg[0].tt"; -connectAttr "finger_R0_root.rp" "finger_R0_blade_pointConstraint1.tg[0].trp"; -connectAttr "finger_R0_root.rpt" "finger_R0_blade_pointConstraint1.tg[0].trt"; -connectAttr "finger_R0_root.pm" "finger_R0_blade_pointConstraint1.tg[0].tpm"; -connectAttr "finger_R0_blade_pointConstraint1.w0" "finger_R0_blade_pointConstraint1.tg[0].tw" - ; -connectAttr "mgear_curveCns446.og[0]" "finger_R0_crvShape.cr"; -connectAttr "tweak594.pl[0].cp[0]" "finger_R0_crvShape.twl"; -connectAttr "mgear_curveCns446GroupId.id" "finger_R0_crvShape.iog.og[0].gid"; -connectAttr "mgear_curveCns446Set.mwc" "finger_R0_crvShape.iog.og[0].gco"; -connectAttr "groupId8757.id" "finger_R0_crvShape.iog.og[1].gid"; -connectAttr "tweakSet594.mwc" "finger_R0_crvShape.iog.og[1].gco"; -connectAttr "thumb_R0_blade_pointConstraint1.ctx" "thumb_R0_blade.tx" -l on; -connectAttr "thumb_R0_blade_pointConstraint1.cty" "thumb_R0_blade.ty" -l on; -connectAttr "thumb_R0_blade_pointConstraint1.ctz" "thumb_R0_blade.tz" -l on; -connectAttr "thumb_R0_blade_aimConstraint1.crx" "thumb_R0_blade.rx" -l on; -connectAttr "thumb_R0_blade_aimConstraint1.cry" "thumb_R0_blade.ry" -l on; -connectAttr "thumb_R0_blade_aimConstraint1.crz" "thumb_R0_blade.rz" -l on; -connectAttr "thumb_R0_blade.pim" "thumb_R0_blade_aimConstraint1.cpim"; -connectAttr "thumb_R0_blade.t" "thumb_R0_blade_aimConstraint1.ct"; -connectAttr "thumb_R0_blade.rp" "thumb_R0_blade_aimConstraint1.crp"; -connectAttr "thumb_R0_blade.rpt" "thumb_R0_blade_aimConstraint1.crt"; -connectAttr "thumb_R0_blade.ro" "thumb_R0_blade_aimConstraint1.cro"; -connectAttr "thumb_R0_0_loc.t" "thumb_R0_blade_aimConstraint1.tg[0].tt"; -connectAttr "thumb_R0_0_loc.rp" "thumb_R0_blade_aimConstraint1.tg[0].trp"; -connectAttr "thumb_R0_0_loc.rpt" "thumb_R0_blade_aimConstraint1.tg[0].trt"; -connectAttr "thumb_R0_0_loc.pm" "thumb_R0_blade_aimConstraint1.tg[0].tpm"; -connectAttr "thumb_R0_blade_aimConstraint1.w0" "thumb_R0_blade_aimConstraint1.tg[0].tw" - ; -connectAttr "thumb_R0_root.wm" "thumb_R0_blade_aimConstraint1.wum"; -connectAttr "unitConversion147.o" "thumb_R0_blade_aimConstraint1.ox"; -connectAttr "thumb_R0_blade.pim" "thumb_R0_blade_pointConstraint1.cpim"; -connectAttr "thumb_R0_blade.rp" "thumb_R0_blade_pointConstraint1.crp"; -connectAttr "thumb_R0_blade.rpt" "thumb_R0_blade_pointConstraint1.crt"; -connectAttr "thumb_R0_root.t" "thumb_R0_blade_pointConstraint1.tg[0].tt"; -connectAttr "thumb_R0_root.rp" "thumb_R0_blade_pointConstraint1.tg[0].trp"; -connectAttr "thumb_R0_root.rpt" "thumb_R0_blade_pointConstraint1.tg[0].trt"; -connectAttr "thumb_R0_root.pm" "thumb_R0_blade_pointConstraint1.tg[0].tpm"; -connectAttr "thumb_R0_blade_pointConstraint1.w0" "thumb_R0_blade_pointConstraint1.tg[0].tw" - ; -connectAttr "mgear_curveCns447.og[0]" "thumb_R0_crvShape.cr"; -connectAttr "tweak595.pl[0].cp[0]" "thumb_R0_crvShape.twl"; -connectAttr "mgear_curveCns447GroupId.id" "thumb_R0_crvShape.iog.og[0].gid"; -connectAttr "mgear_curveCns447Set.mwc" "thumb_R0_crvShape.iog.og[0].gco"; -connectAttr "groupId8759.id" "thumb_R0_crvShape.iog.og[1].gid"; -connectAttr "tweakSet595.mwc" "thumb_R0_crvShape.iog.og[1].gco"; -connectAttr "mgear_curveCns441.og[0]" "arm_R0_crvShape.cr"; -connectAttr "tweak589.pl[0].cp[0]" "arm_R0_crvShape.twl"; -connectAttr "mgear_curveCns441GroupId.id" "arm_R0_crvShape.iog.og[0].gid"; -connectAttr "mgear_curveCns441Set.mwc" "arm_R0_crvShape.iog.og[0].gco"; -connectAttr "groupId8747.id" "arm_R0_crvShape.iog.og[1].gid"; -connectAttr "tweakSet589.mwc" "arm_R0_crvShape.iog.og[1].gco"; -connectAttr "shoulder_R0_blade_pointConstraint1.ctx" "shoulder_R0_blade.tx" -l on - ; -connectAttr "shoulder_R0_blade_pointConstraint1.cty" "shoulder_R0_blade.ty" -l on - ; -connectAttr "shoulder_R0_blade_pointConstraint1.ctz" "shoulder_R0_blade.tz" -l on - ; -connectAttr "shoulder_R0_blade_aimConstraint1.crx" "shoulder_R0_blade.rx" -l on; -connectAttr "shoulder_R0_blade_aimConstraint1.cry" "shoulder_R0_blade.ry" -l on; -connectAttr "shoulder_R0_blade_aimConstraint1.crz" "shoulder_R0_blade.rz" -l on; -connectAttr "shoulder_R0_blade.pim" "shoulder_R0_blade_aimConstraint1.cpim"; -connectAttr "shoulder_R0_blade.t" "shoulder_R0_blade_aimConstraint1.ct"; -connectAttr "shoulder_R0_blade.rp" "shoulder_R0_blade_aimConstraint1.crp"; -connectAttr "shoulder_R0_blade.rpt" "shoulder_R0_blade_aimConstraint1.crt"; -connectAttr "shoulder_R0_blade.ro" "shoulder_R0_blade_aimConstraint1.cro"; -connectAttr "shoulder_R0_tip.t" "shoulder_R0_blade_aimConstraint1.tg[0].tt"; -connectAttr "shoulder_R0_tip.rp" "shoulder_R0_blade_aimConstraint1.tg[0].trp"; -connectAttr "shoulder_R0_tip.rpt" "shoulder_R0_blade_aimConstraint1.tg[0].trt"; -connectAttr "shoulder_R0_tip.pm" "shoulder_R0_blade_aimConstraint1.tg[0].tpm"; -connectAttr "shoulder_R0_blade_aimConstraint1.w0" "shoulder_R0_blade_aimConstraint1.tg[0].tw" - ; -connectAttr "shoulder_R0_root.wm" "shoulder_R0_blade_aimConstraint1.wum"; -connectAttr "unitConversion141.o" "shoulder_R0_blade_aimConstraint1.ox"; -connectAttr "shoulder_R0_blade.pim" "shoulder_R0_blade_pointConstraint1.cpim"; -connectAttr "shoulder_R0_blade.rp" "shoulder_R0_blade_pointConstraint1.crp"; -connectAttr "shoulder_R0_blade.rpt" "shoulder_R0_blade_pointConstraint1.crt"; -connectAttr "shoulder_R0_root.t" "shoulder_R0_blade_pointConstraint1.tg[0].tt"; -connectAttr "shoulder_R0_root.rp" "shoulder_R0_blade_pointConstraint1.tg[0].trp" - ; -connectAttr "shoulder_R0_root.rpt" "shoulder_R0_blade_pointConstraint1.tg[0].trt" - ; -connectAttr "shoulder_R0_root.pm" "shoulder_R0_blade_pointConstraint1.tg[0].tpm" - ; -connectAttr "shoulder_R0_blade_pointConstraint1.w0" "shoulder_R0_blade_pointConstraint1.tg[0].tw" - ; -connectAttr "mgear_curveCns440.og[0]" "shoulder_R0_crvShape.cr"; -connectAttr "tweak588.pl[0].cp[0]" "shoulder_R0_crvShape.twl"; -connectAttr "mgear_curveCns440GroupId.id" "shoulder_R0_crvShape.iog.og[0].gid"; -connectAttr "mgear_curveCns440Set.mwc" "shoulder_R0_crvShape.iog.og[0].gco"; -connectAttr "groupId8745.id" "shoulder_R0_crvShape.iog.og[1].gid"; -connectAttr "tweakSet588.mwc" "shoulder_R0_crvShape.iog.og[1].gco"; -connectAttr "spine_C0_blade_pointConstraint9.ctx" "spine_C0_blade.tx" -l on; -connectAttr "spine_C0_blade_pointConstraint9.cty" "spine_C0_blade.ty" -l on; -connectAttr "spine_C0_blade_pointConstraint9.ctz" "spine_C0_blade.tz" -l on; -connectAttr "spine_C0_blade_aimConstraint9.crx" "spine_C0_blade.rx" -l on; -connectAttr "spine_C0_blade_aimConstraint9.cry" "spine_C0_blade.ry" -l on; -connectAttr "spine_C0_blade_aimConstraint9.crz" "spine_C0_blade.rz" -l on; -connectAttr "spine_C0_blade.pim" "spine_C0_blade_aimConstraint9.cpim"; -connectAttr "spine_C0_blade.t" "spine_C0_blade_aimConstraint9.ct"; -connectAttr "spine_C0_blade.rp" "spine_C0_blade_aimConstraint9.crp"; -connectAttr "spine_C0_blade.rpt" "spine_C0_blade_aimConstraint9.crt"; -connectAttr "spine_C0_blade.ro" "spine_C0_blade_aimConstraint9.cro"; -connectAttr "spine_C0_eff.t" "spine_C0_blade_aimConstraint9.tg[0].tt"; -connectAttr "spine_C0_eff.rp" "spine_C0_blade_aimConstraint9.tg[0].trp"; -connectAttr "spine_C0_eff.rpt" "spine_C0_blade_aimConstraint9.tg[0].trt"; -connectAttr "spine_C0_eff.pm" "spine_C0_blade_aimConstraint9.tg[0].tpm"; -connectAttr "spine_C0_blade_aimConstraint9.w0" "spine_C0_blade_aimConstraint9.tg[0].tw" - ; -connectAttr "spine_C0_root.wm" "spine_C0_blade_aimConstraint9.wum"; -connectAttr "unitConversion131.o" "spine_C0_blade_aimConstraint9.ox"; -connectAttr "spine_C0_blade.pim" "spine_C0_blade_pointConstraint9.cpim"; -connectAttr "spine_C0_blade.rp" "spine_C0_blade_pointConstraint9.crp"; -connectAttr "spine_C0_blade.rpt" "spine_C0_blade_pointConstraint9.crt"; -connectAttr "spine_C0_root.t" "spine_C0_blade_pointConstraint9.tg[0].tt"; -connectAttr "spine_C0_root.rp" "spine_C0_blade_pointConstraint9.tg[0].trp"; -connectAttr "spine_C0_root.rpt" "spine_C0_blade_pointConstraint9.tg[0].trt"; -connectAttr "spine_C0_root.pm" "spine_C0_blade_pointConstraint9.tg[0].tpm"; -connectAttr "spine_C0_blade_pointConstraint9.w0" "spine_C0_blade_pointConstraint9.tg[0].tw" - ; -connectAttr "mgear_curveCns411.og[0]" "spine_C0_crvShape.cr"; -connectAttr "tweak559.pl[0].cp[0]" "spine_C0_crvShape.twl"; -connectAttr "mgear_curveCns411GroupId.id" "spine_C0_crvShape.iog.og[0].gid"; -connectAttr "mgear_curveCns411Set.mwc" "spine_C0_crvShape.iog.og[0].gco"; -connectAttr "groupId8687.id" "spine_C0_crvShape.iog.og[1].gid"; -connectAttr "tweakSet559.mwc" "spine_C0_crvShape.iog.og[1].gco"; -connectAttr "leg_L0_root_st_profile1.o" "leg_L0_root.st_profile"; -connectAttr "leg_L0_root_sq_profile1.o" "leg_L0_root.sq_profile"; -connectAttr "mgear_curveCns438.og[0]" "foot_L0_crvShape.cr"; -connectAttr "tweak586.pl[0].cp[0]" "foot_L0_crvShape.twl"; -connectAttr "mgear_curveCns438GroupId.id" "foot_L0_crvShape.iog.og[0].gid"; -connectAttr "mgear_curveCns438Set.mwc" "foot_L0_crvShape.iog.og[0].gco"; -connectAttr "groupId8741.id" "foot_L0_crvShape.iog.og[1].gid"; -connectAttr "tweakSet586.mwc" "foot_L0_crvShape.iog.og[1].gco"; -connectAttr "mgear_curveCns439.og[0]" "foot_L0_Shape1.cr"; -connectAttr "tweak587.pl[0].cp[0]" "foot_L0_Shape1.twl"; -connectAttr "mgear_curveCns439GroupId.id" "foot_L0_Shape1.iog.og[0].gid"; -connectAttr "mgear_curveCns439Set.mwc" "foot_L0_Shape1.iog.og[0].gco"; -connectAttr "groupId8743.id" "foot_L0_Shape1.iog.og[1].gid"; -connectAttr "tweakSet587.mwc" "foot_L0_Shape1.iog.og[1].gco"; -connectAttr "mgear_curveCns437.og[0]" "leg_L0_crvShape.cr"; -connectAttr "tweak585.pl[0].cp[0]" "leg_L0_crvShape.twl"; -connectAttr "mgear_curveCns437GroupId.id" "leg_L0_crvShape.iog.og[0].gid"; -connectAttr "mgear_curveCns437Set.mwc" "leg_L0_crvShape.iog.og[0].gco"; -connectAttr "groupId8739.id" "leg_L0_crvShape.iog.og[1].gid"; -connectAttr "tweakSet585.mwc" "leg_L0_crvShape.iog.og[1].gco"; -connectAttr "leg_R0_root_st_profile.o" "leg_R0_root.st_profile"; -connectAttr "leg_R0_root_sq_profile.o" "leg_R0_root.sq_profile"; -connectAttr "mgear_curveCns449.og[0]" "foot_R0_crvShape.cr"; -connectAttr "tweak597.pl[0].cp[0]" "foot_R0_crvShape.twl"; -connectAttr "mgear_curveCns449GroupId.id" "foot_R0_crvShape.iog.og[0].gid"; -connectAttr "mgear_curveCns449Set.mwc" "foot_R0_crvShape.iog.og[0].gco"; -connectAttr "groupId8763.id" "foot_R0_crvShape.iog.og[1].gid"; -connectAttr "tweakSet597.mwc" "foot_R0_crvShape.iog.og[1].gco"; -connectAttr "mgear_curveCns450.og[0]" "foot_R0_Shape1.cr"; -connectAttr "tweak598.pl[0].cp[0]" "foot_R0_Shape1.twl"; -connectAttr "mgear_curveCns450GroupId.id" "foot_R0_Shape1.iog.og[0].gid"; -connectAttr "mgear_curveCns450Set.mwc" "foot_R0_Shape1.iog.og[0].gco"; -connectAttr "groupId8765.id" "foot_R0_Shape1.iog.og[1].gid"; -connectAttr "tweakSet598.mwc" "foot_R0_Shape1.iog.og[1].gco"; -connectAttr "mgear_curveCns448.og[0]" "leg_R0_crvShape.cr"; -connectAttr "tweak596.pl[0].cp[0]" "leg_R0_crvShape.twl"; -connectAttr "mgear_curveCns448GroupId.id" "leg_R0_crvShape.iog.og[0].gid"; -connectAttr "mgear_curveCns448Set.mwc" "leg_R0_crvShape.iog.og[0].gco"; -connectAttr "groupId8761.id" "leg_R0_crvShape.iog.og[1].gid"; -connectAttr "tweakSet596.mwc" "leg_R0_crvShape.iog.og[1].gco"; -connectAttr "finger_L3_blade.bladeRollOffset" "unitConversion134.i"; -connectAttr "mgear_curveCns415GroupParts.og" "mgear_curveCns415.ip[0].ig"; -connectAttr "mgear_curveCns415GroupId.id" "mgear_curveCns415.ip[0].gi"; -connectAttr "finger_L3_root.wm" "mgear_curveCns415.inputs[0]"; -connectAttr "finger_L3_0_loc.wm" "mgear_curveCns415.inputs[1]"; -connectAttr "finger_L3_1_loc.wm" "mgear_curveCns415.inputs[2]"; -connectAttr "finger_L3_2_loc.wm" "mgear_curveCns415.inputs[3]"; -connectAttr "mgear_curveCns415GroupId.msg" "mgear_curveCns415Set.gn" -na; -connectAttr "finger_L3_crvShape.iog.og[0]" "mgear_curveCns415Set.dsm" -na; -connectAttr "mgear_curveCns415.msg" "mgear_curveCns415Set.ub[0]"; -connectAttr "tweak563.og[0]" "mgear_curveCns415GroupParts.ig"; -connectAttr "mgear_curveCns415GroupId.id" "mgear_curveCns415GroupParts.gi"; -connectAttr "groupParts1126.og" "tweak563.ip[0].ig"; -connectAttr "groupId8695.id" "tweak563.ip[0].gi"; -connectAttr "groupId8695.msg" "tweakSet563.gn" -na; -connectAttr "finger_L3_crvShape.iog.og[1]" "tweakSet563.dsm" -na; -connectAttr "tweak563.msg" "tweakSet563.ub[0]"; -connectAttr "finger_L3_crvShapeOrig.ws" "groupParts1126.ig"; -connectAttr "groupId8695.id" "groupParts1126.gi"; -connectAttr "finger_L2_blade.bladeRollOffset" "unitConversion135.i"; -connectAttr "mgear_curveCns416GroupParts.og" "mgear_curveCns416.ip[0].ig"; -connectAttr "mgear_curveCns416GroupId.id" "mgear_curveCns416.ip[0].gi"; -connectAttr "finger_L2_root.wm" "mgear_curveCns416.inputs[0]"; -connectAttr "finger_L2_0_loc.wm" "mgear_curveCns416.inputs[1]"; -connectAttr "finger_L2_1_loc.wm" "mgear_curveCns416.inputs[2]"; -connectAttr "finger_L2_2_loc.wm" "mgear_curveCns416.inputs[3]"; -connectAttr "mgear_curveCns416GroupId.msg" "mgear_curveCns416Set.gn" -na; -connectAttr "finger_L2_crvShape.iog.og[0]" "mgear_curveCns416Set.dsm" -na; -connectAttr "mgear_curveCns416.msg" "mgear_curveCns416Set.ub[0]"; -connectAttr "tweak564.og[0]" "mgear_curveCns416GroupParts.ig"; -connectAttr "mgear_curveCns416GroupId.id" "mgear_curveCns416GroupParts.gi"; -connectAttr "groupParts1128.og" "tweak564.ip[0].ig"; -connectAttr "groupId8697.id" "tweak564.ip[0].gi"; -connectAttr "groupId8697.msg" "tweakSet564.gn" -na; -connectAttr "finger_L2_crvShape.iog.og[1]" "tweakSet564.dsm" -na; -connectAttr "tweak564.msg" "tweakSet564.ub[0]"; -connectAttr "finger_L2_crvShapeOrig.ws" "groupParts1128.ig"; -connectAttr "groupId8697.id" "groupParts1128.gi"; -connectAttr "finger_L1_blade.bladeRollOffset" "unitConversion136.i"; -connectAttr "mgear_curveCns417GroupParts.og" "mgear_curveCns417.ip[0].ig"; -connectAttr "mgear_curveCns417GroupId.id" "mgear_curveCns417.ip[0].gi"; -connectAttr "finger_L1_root.wm" "mgear_curveCns417.inputs[0]"; -connectAttr "finger_L1_0_loc.wm" "mgear_curveCns417.inputs[1]"; -connectAttr "finger_L1_1_loc.wm" "mgear_curveCns417.inputs[2]"; -connectAttr "finger_L1_2_loc.wm" "mgear_curveCns417.inputs[3]"; -connectAttr "mgear_curveCns417GroupId.msg" "mgear_curveCns417Set.gn" -na; -connectAttr "finger_L1_crvShape.iog.og[0]" "mgear_curveCns417Set.dsm" -na; -connectAttr "mgear_curveCns417.msg" "mgear_curveCns417Set.ub[0]"; -connectAttr "tweak565.og[0]" "mgear_curveCns417GroupParts.ig"; -connectAttr "mgear_curveCns417GroupId.id" "mgear_curveCns417GroupParts.gi"; -connectAttr "groupParts1130.og" "tweak565.ip[0].ig"; -connectAttr "groupId8699.id" "tweak565.ip[0].gi"; -connectAttr "groupId8699.msg" "tweakSet565.gn" -na; -connectAttr "finger_L1_crvShape.iog.og[1]" "tweakSet565.dsm" -na; -connectAttr "tweak565.msg" "tweakSet565.ub[0]"; -connectAttr "finger_L1_crvShapeOrig.ws" "groupParts1130.ig"; -connectAttr "groupId8699.id" "groupParts1130.gi"; -connectAttr "meta_L0_blade.bladeRollOffset" "unitConversion133.i"; -connectAttr "mgear_curveCns414GroupParts.og" "mgear_curveCns414.ip[0].ig"; -connectAttr "mgear_curveCns414GroupId.id" "mgear_curveCns414.ip[0].gi"; -connectAttr "meta_L0_root.wm" "mgear_curveCns414.inputs[0]"; -connectAttr "meta_L0_0_loc.wm" "mgear_curveCns414.inputs[1]"; -connectAttr "meta_L0_1_loc.wm" "mgear_curveCns414.inputs[2]"; -connectAttr "meta_L0_2_loc.wm" "mgear_curveCns414.inputs[3]"; -connectAttr "mgear_curveCns414GroupId.msg" "mgear_curveCns414Set.gn" -na; -connectAttr "meta_L0_crvShape.iog.og[0]" "mgear_curveCns414Set.dsm" -na; -connectAttr "mgear_curveCns414.msg" "mgear_curveCns414Set.ub[0]"; -connectAttr "tweak562.og[0]" "mgear_curveCns414GroupParts.ig"; -connectAttr "mgear_curveCns414GroupId.id" "mgear_curveCns414GroupParts.gi"; -connectAttr "groupParts1124.og" "tweak562.ip[0].ig"; -connectAttr "groupId8693.id" "tweak562.ip[0].gi"; -connectAttr "groupId8693.msg" "tweakSet562.gn" -na; -connectAttr "meta_L0_crvShape.iog.og[1]" "tweakSet562.dsm" -na; -connectAttr "tweak562.msg" "tweakSet562.ub[0]"; -connectAttr "meta_L0_crvShapeOrig.ws" "groupParts1124.ig"; -connectAttr "groupId8693.id" "groupParts1124.gi"; -connectAttr "finger_L0_blade.bladeRollOffset" "unitConversion137.i"; -connectAttr "mgear_curveCns418GroupParts.og" "mgear_curveCns418.ip[0].ig"; -connectAttr "mgear_curveCns418GroupId.id" "mgear_curveCns418.ip[0].gi"; -connectAttr "finger_L0_root.wm" "mgear_curveCns418.inputs[0]"; -connectAttr "finger_L0_0_loc.wm" "mgear_curveCns418.inputs[1]"; -connectAttr "finger_L0_1_loc.wm" "mgear_curveCns418.inputs[2]"; -connectAttr "finger_L0_2_loc.wm" "mgear_curveCns418.inputs[3]"; -connectAttr "mgear_curveCns418GroupId.msg" "mgear_curveCns418Set.gn" -na; -connectAttr "finger_L0_crvShape.iog.og[0]" "mgear_curveCns418Set.dsm" -na; -connectAttr "mgear_curveCns418.msg" "mgear_curveCns418Set.ub[0]"; -connectAttr "tweak566.og[0]" "mgear_curveCns418GroupParts.ig"; -connectAttr "mgear_curveCns418GroupId.id" "mgear_curveCns418GroupParts.gi"; -connectAttr "groupParts1132.og" "tweak566.ip[0].ig"; -connectAttr "groupId8701.id" "tweak566.ip[0].gi"; -connectAttr "groupId8701.msg" "tweakSet566.gn" -na; -connectAttr "finger_L0_crvShape.iog.og[1]" "tweakSet566.dsm" -na; -connectAttr "tweak566.msg" "tweakSet566.ub[0]"; -connectAttr "finger_L0_crvShapeOrig.ws" "groupParts1132.ig"; -connectAttr "groupId8701.id" "groupParts1132.gi"; -connectAttr "thumb_L0_blade.bladeRollOffset" "unitConversion138.i"; -connectAttr "mgear_curveCns419GroupParts.og" "mgear_curveCns419.ip[0].ig"; -connectAttr "mgear_curveCns419GroupId.id" "mgear_curveCns419.ip[0].gi"; -connectAttr "thumb_L0_root.wm" "mgear_curveCns419.inputs[0]"; -connectAttr "thumb_L0_0_loc.wm" "mgear_curveCns419.inputs[1]"; -connectAttr "thumb_L0_1_loc.wm" "mgear_curveCns419.inputs[2]"; -connectAttr "thumb_L0_2_loc.wm" "mgear_curveCns419.inputs[3]"; -connectAttr "mgear_curveCns419GroupId.msg" "mgear_curveCns419Set.gn" -na; -connectAttr "thumb_L0_crvShape.iog.og[0]" "mgear_curveCns419Set.dsm" -na; -connectAttr "mgear_curveCns419.msg" "mgear_curveCns419Set.ub[0]"; -connectAttr "tweak567.og[0]" "mgear_curveCns419GroupParts.ig"; -connectAttr "mgear_curveCns419GroupId.id" "mgear_curveCns419GroupParts.gi"; -connectAttr "groupParts1134.og" "tweak567.ip[0].ig"; -connectAttr "groupId8703.id" "tweak567.ip[0].gi"; -connectAttr "groupId8703.msg" "tweakSet567.gn" -na; -connectAttr "thumb_L0_crvShape.iog.og[1]" "tweakSet567.dsm" -na; -connectAttr "tweak567.msg" "tweakSet567.ub[0]"; -connectAttr "thumb_L0_crvShapeOrig.ws" "groupParts1134.ig"; -connectAttr "groupId8703.id" "groupParts1134.gi"; -connectAttr "mgear_curveCns413GroupParts.og" "mgear_curveCns413.ip[0].ig"; -connectAttr "mgear_curveCns413GroupId.id" "mgear_curveCns413.ip[0].gi"; -connectAttr "arm_L0_root.wm" "mgear_curveCns413.inputs[0]"; -connectAttr "arm_L0_elbow.wm" "mgear_curveCns413.inputs[1]"; -connectAttr "arm_L0_wrist.wm" "mgear_curveCns413.inputs[2]"; -connectAttr "arm_L0_eff.wm" "mgear_curveCns413.inputs[3]"; -connectAttr "mgear_curveCns413GroupId.msg" "mgear_curveCns413Set.gn" -na; -connectAttr "arm_L0_crvShape.iog.og[0]" "mgear_curveCns413Set.dsm" -na; -connectAttr "mgear_curveCns413.msg" "mgear_curveCns413Set.ub[0]"; -connectAttr "tweak561.og[0]" "mgear_curveCns413GroupParts.ig"; -connectAttr "mgear_curveCns413GroupId.id" "mgear_curveCns413GroupParts.gi"; -connectAttr "groupParts1122.og" "tweak561.ip[0].ig"; -connectAttr "groupId8691.id" "tweak561.ip[0].gi"; -connectAttr "groupId8691.msg" "tweakSet561.gn" -na; -connectAttr "arm_L0_crvShape.iog.og[1]" "tweakSet561.dsm" -na; -connectAttr "tweak561.msg" "tweakSet561.ub[0]"; -connectAttr "arm_L0_crvShapeOrig.ws" "groupParts1122.ig"; -connectAttr "groupId8691.id" "groupParts1122.gi"; -connectAttr "shoulder_L0_blade.bladeRollOffset" "unitConversion132.i"; -connectAttr "mgear_curveCns412GroupParts.og" "mgear_curveCns412.ip[0].ig"; -connectAttr "mgear_curveCns412GroupId.id" "mgear_curveCns412.ip[0].gi"; -connectAttr "shoulder_L0_root.wm" "mgear_curveCns412.inputs[0]"; -connectAttr "shoulder_L0_tip.wm" "mgear_curveCns412.inputs[1]"; -connectAttr "mgear_curveCns412GroupId.msg" "mgear_curveCns412Set.gn" -na; -connectAttr "shoulder_L0_crvShape.iog.og[0]" "mgear_curveCns412Set.dsm" -na; -connectAttr "mgear_curveCns412.msg" "mgear_curveCns412Set.ub[0]"; -connectAttr "tweak560.og[0]" "mgear_curveCns412GroupParts.ig"; -connectAttr "mgear_curveCns412GroupId.id" "mgear_curveCns412GroupParts.gi"; -connectAttr "groupParts1120.og" "tweak560.ip[0].ig"; -connectAttr "groupId8689.id" "tweak560.ip[0].gi"; -connectAttr "groupId8689.msg" "tweakSet560.gn" -na; -connectAttr "shoulder_L0_crvShape.iog.og[1]" "tweakSet560.dsm" -na; -connectAttr "tweak560.msg" "tweakSet560.ub[0]"; -connectAttr "shoulder_L0_crvShapeOrig.ws" "groupParts1120.ig"; -connectAttr "groupId8689.id" "groupParts1120.gi"; -connectAttr "mgear_curveCns423GroupParts.og" "mgear_curveCns423.ip[0].ig"; -connectAttr "mgear_curveCns423GroupId.id" "mgear_curveCns423.ip[0].gi"; -connectAttr "mouth_C0_lipup.wm" "mgear_curveCns423.inputs[0]"; -connectAttr "mouth_C0_rotcenter.wm" "mgear_curveCns423.inputs[1]"; -connectAttr "mgear_curveCns423GroupId.msg" "mgear_curveCns423Set.gn" -na; -connectAttr "|guide|global_C0_root|local_C0_root|body_C0_root|spine_C0_root|spine_C0_eff|neck_C0_root|neck_C0_neck|neck_C0_head|mouth_C0_root|mouth_C0_rotcenter|mouth_C0_lipup|mouth_C0_crv|mouth_C0_crvShape.iog.og[0]" "mgear_curveCns423Set.dsm" +connectAttr "spine_C0_root_st_profile.o" "spine_C0_root.st_profile"; +connectAttr "spine_C0_root_sq_profile.o" "spine_C0_root.sq_profile"; +connectAttr "arm_L0_root_st_profile.o" "arm_L0_root.st_profile"; +connectAttr "arm_L0_root_sq_profile.o" "arm_L0_root.sq_profile"; +connectAttr "finger_L3_blade_pointConstraint10.ctx" "finger_L3_blade.tx" -l on; +connectAttr "finger_L3_blade_pointConstraint10.cty" "finger_L3_blade.ty" -l on; +connectAttr "finger_L3_blade_pointConstraint10.ctz" "finger_L3_blade.tz" -l on; +connectAttr "finger_L3_blade_aimConstraint10.crx" "finger_L3_blade.rx" -l on; +connectAttr "finger_L3_blade_aimConstraint10.cry" "finger_L3_blade.ry" -l on; +connectAttr "finger_L3_blade_aimConstraint10.crz" "finger_L3_blade.rz" -l on; +connectAttr "finger_L3_blade.pim" "finger_L3_blade_aimConstraint10.cpim"; +connectAttr "finger_L3_blade.t" "finger_L3_blade_aimConstraint10.ct"; +connectAttr "finger_L3_blade.rp" "finger_L3_blade_aimConstraint10.crp"; +connectAttr "finger_L3_blade.rpt" "finger_L3_blade_aimConstraint10.crt"; +connectAttr "finger_L3_blade.ro" "finger_L3_blade_aimConstraint10.cro"; +connectAttr "finger_L3_0_loc.t" "finger_L3_blade_aimConstraint10.tg[0].tt"; +connectAttr "finger_L3_0_loc.rp" "finger_L3_blade_aimConstraint10.tg[0].trp"; +connectAttr "finger_L3_0_loc.rpt" "finger_L3_blade_aimConstraint10.tg[0].trt"; +connectAttr "finger_L3_0_loc.pm" "finger_L3_blade_aimConstraint10.tg[0].tpm"; +connectAttr "finger_L3_blade_aimConstraint10.w0" "finger_L3_blade_aimConstraint10.tg[0].tw" + ; +connectAttr "finger_L3_root.wm" "finger_L3_blade_aimConstraint10.wum"; +connectAttr "unitConversion151.o" "finger_L3_blade_aimConstraint10.ox"; +connectAttr "finger_L3_blade.pim" "finger_L3_blade_pointConstraint10.cpim"; +connectAttr "finger_L3_blade.rp" "finger_L3_blade_pointConstraint10.crp"; +connectAttr "finger_L3_blade.rpt" "finger_L3_blade_pointConstraint10.crt"; +connectAttr "finger_L3_root.t" "finger_L3_blade_pointConstraint10.tg[0].tt"; +connectAttr "finger_L3_root.rp" "finger_L3_blade_pointConstraint10.tg[0].trp"; +connectAttr "finger_L3_root.rpt" "finger_L3_blade_pointConstraint10.tg[0].trt"; +connectAttr "finger_L3_root.pm" "finger_L3_blade_pointConstraint10.tg[0].tpm"; +connectAttr "finger_L3_blade_pointConstraint10.w0" "finger_L3_blade_pointConstraint10.tg[0].tw" + ; +connectAttr "mgear_curveCns455.og[0]" "finger_L3_crvShape.cr"; +connectAttr "tweak603.pl[0].cp[0]" "finger_L3_crvShape.twl"; +connectAttr "mgear_curveCns455GroupId.id" "finger_L3_crvShape.iog.og[0].gid"; +connectAttr "mgear_curveCns455Set.mwc" "finger_L3_crvShape.iog.og[0].gco"; +connectAttr "groupId8775.id" "finger_L3_crvShape.iog.og[1].gid"; +connectAttr "tweakSet603.mwc" "finger_L3_crvShape.iog.og[1].gco"; +connectAttr "finger_L2_blade_pointConstraint10.ctx" "finger_L2_blade.tx" -l on; +connectAttr "finger_L2_blade_pointConstraint10.cty" "finger_L2_blade.ty" -l on; +connectAttr "finger_L2_blade_pointConstraint10.ctz" "finger_L2_blade.tz" -l on; +connectAttr "finger_L2_blade_aimConstraint10.crx" "finger_L2_blade.rx" -l on; +connectAttr "finger_L2_blade_aimConstraint10.cry" "finger_L2_blade.ry" -l on; +connectAttr "finger_L2_blade_aimConstraint10.crz" "finger_L2_blade.rz" -l on; +connectAttr "finger_L2_blade.pim" "finger_L2_blade_aimConstraint10.cpim"; +connectAttr "finger_L2_blade.t" "finger_L2_blade_aimConstraint10.ct"; +connectAttr "finger_L2_blade.rp" "finger_L2_blade_aimConstraint10.crp"; +connectAttr "finger_L2_blade.rpt" "finger_L2_blade_aimConstraint10.crt"; +connectAttr "finger_L2_blade.ro" "finger_L2_blade_aimConstraint10.cro"; +connectAttr "finger_L2_0_loc.t" "finger_L2_blade_aimConstraint10.tg[0].tt"; +connectAttr "finger_L2_0_loc.rp" "finger_L2_blade_aimConstraint10.tg[0].trp"; +connectAttr "finger_L2_0_loc.rpt" "finger_L2_blade_aimConstraint10.tg[0].trt"; +connectAttr "finger_L2_0_loc.pm" "finger_L2_blade_aimConstraint10.tg[0].tpm"; +connectAttr "finger_L2_blade_aimConstraint10.w0" "finger_L2_blade_aimConstraint10.tg[0].tw" + ; +connectAttr "finger_L2_root.wm" "finger_L2_blade_aimConstraint10.wum"; +connectAttr "unitConversion152.o" "finger_L2_blade_aimConstraint10.ox"; +connectAttr "finger_L2_blade.pim" "finger_L2_blade_pointConstraint10.cpim"; +connectAttr "finger_L2_blade.rp" "finger_L2_blade_pointConstraint10.crp"; +connectAttr "finger_L2_blade.rpt" "finger_L2_blade_pointConstraint10.crt"; +connectAttr "finger_L2_root.t" "finger_L2_blade_pointConstraint10.tg[0].tt"; +connectAttr "finger_L2_root.rp" "finger_L2_blade_pointConstraint10.tg[0].trp"; +connectAttr "finger_L2_root.rpt" "finger_L2_blade_pointConstraint10.tg[0].trt"; +connectAttr "finger_L2_root.pm" "finger_L2_blade_pointConstraint10.tg[0].tpm"; +connectAttr "finger_L2_blade_pointConstraint10.w0" "finger_L2_blade_pointConstraint10.tg[0].tw" + ; +connectAttr "mgear_curveCns456.og[0]" "finger_L2_crvShape.cr"; +connectAttr "tweak604.pl[0].cp[0]" "finger_L2_crvShape.twl"; +connectAttr "mgear_curveCns456GroupId.id" "finger_L2_crvShape.iog.og[0].gid"; +connectAttr "mgear_curveCns456Set.mwc" "finger_L2_crvShape.iog.og[0].gco"; +connectAttr "groupId8777.id" "finger_L2_crvShape.iog.og[1].gid"; +connectAttr "tweakSet604.mwc" "finger_L2_crvShape.iog.og[1].gco"; +connectAttr "finger_L1_blade_pointConstraint10.ctx" "finger_L1_blade.tx" -l on; +connectAttr "finger_L1_blade_pointConstraint10.cty" "finger_L1_blade.ty" -l on; +connectAttr "finger_L1_blade_pointConstraint10.ctz" "finger_L1_blade.tz" -l on; +connectAttr "finger_L1_blade_aimConstraint10.crx" "finger_L1_blade.rx" -l on; +connectAttr "finger_L1_blade_aimConstraint10.cry" "finger_L1_blade.ry" -l on; +connectAttr "finger_L1_blade_aimConstraint10.crz" "finger_L1_blade.rz" -l on; +connectAttr "finger_L1_blade.pim" "finger_L1_blade_aimConstraint10.cpim"; +connectAttr "finger_L1_blade.t" "finger_L1_blade_aimConstraint10.ct"; +connectAttr "finger_L1_blade.rp" "finger_L1_blade_aimConstraint10.crp"; +connectAttr "finger_L1_blade.rpt" "finger_L1_blade_aimConstraint10.crt"; +connectAttr "finger_L1_blade.ro" "finger_L1_blade_aimConstraint10.cro"; +connectAttr "finger_L1_0_loc.t" "finger_L1_blade_aimConstraint10.tg[0].tt"; +connectAttr "finger_L1_0_loc.rp" "finger_L1_blade_aimConstraint10.tg[0].trp"; +connectAttr "finger_L1_0_loc.rpt" "finger_L1_blade_aimConstraint10.tg[0].trt"; +connectAttr "finger_L1_0_loc.pm" "finger_L1_blade_aimConstraint10.tg[0].tpm"; +connectAttr "finger_L1_blade_aimConstraint10.w0" "finger_L1_blade_aimConstraint10.tg[0].tw" + ; +connectAttr "finger_L1_root.wm" "finger_L1_blade_aimConstraint10.wum"; +connectAttr "unitConversion153.o" "finger_L1_blade_aimConstraint10.ox"; +connectAttr "finger_L1_blade.pim" "finger_L1_blade_pointConstraint10.cpim"; +connectAttr "finger_L1_blade.rp" "finger_L1_blade_pointConstraint10.crp"; +connectAttr "finger_L1_blade.rpt" "finger_L1_blade_pointConstraint10.crt"; +connectAttr "finger_L1_root.t" "finger_L1_blade_pointConstraint10.tg[0].tt"; +connectAttr "finger_L1_root.rp" "finger_L1_blade_pointConstraint10.tg[0].trp"; +connectAttr "finger_L1_root.rpt" "finger_L1_blade_pointConstraint10.tg[0].trt"; +connectAttr "finger_L1_root.pm" "finger_L1_blade_pointConstraint10.tg[0].tpm"; +connectAttr "finger_L1_blade_pointConstraint10.w0" "finger_L1_blade_pointConstraint10.tg[0].tw" + ; +connectAttr "mgear_curveCns457.og[0]" "finger_L1_crvShape.cr"; +connectAttr "tweak605.pl[0].cp[0]" "finger_L1_crvShape.twl"; +connectAttr "mgear_curveCns457GroupId.id" "finger_L1_crvShape.iog.og[0].gid"; +connectAttr "mgear_curveCns457Set.mwc" "finger_L1_crvShape.iog.og[0].gco"; +connectAttr "groupId8779.id" "finger_L1_crvShape.iog.og[1].gid"; +connectAttr "tweakSet605.mwc" "finger_L1_crvShape.iog.og[1].gco"; +connectAttr "meta_L0_blade_pointConstraint10.ctx" "meta_L0_blade.tx" -l on; +connectAttr "meta_L0_blade_pointConstraint10.cty" "meta_L0_blade.ty" -l on; +connectAttr "meta_L0_blade_pointConstraint10.ctz" "meta_L0_blade.tz" -l on; +connectAttr "meta_L0_blade_aimConstraint10.crx" "meta_L0_blade.rx" -l on; +connectAttr "meta_L0_blade_aimConstraint10.cry" "meta_L0_blade.ry" -l on; +connectAttr "meta_L0_blade_aimConstraint10.crz" "meta_L0_blade.rz" -l on; +connectAttr "meta_L0_blade.pim" "meta_L0_blade_aimConstraint10.cpim"; +connectAttr "meta_L0_blade.t" "meta_L0_blade_aimConstraint10.ct"; +connectAttr "meta_L0_blade.rp" "meta_L0_blade_aimConstraint10.crp"; +connectAttr "meta_L0_blade.rpt" "meta_L0_blade_aimConstraint10.crt"; +connectAttr "meta_L0_blade.ro" "meta_L0_blade_aimConstraint10.cro"; +connectAttr "meta_L0_0_loc.t" "meta_L0_blade_aimConstraint10.tg[0].tt"; +connectAttr "meta_L0_0_loc.rp" "meta_L0_blade_aimConstraint10.tg[0].trp"; +connectAttr "meta_L0_0_loc.rpt" "meta_L0_blade_aimConstraint10.tg[0].trt"; +connectAttr "meta_L0_0_loc.pm" "meta_L0_blade_aimConstraint10.tg[0].tpm"; +connectAttr "meta_L0_blade_aimConstraint10.w0" "meta_L0_blade_aimConstraint10.tg[0].tw" + ; +connectAttr "meta_L0_root.wm" "meta_L0_blade_aimConstraint10.wum"; +connectAttr "unitConversion150.o" "meta_L0_blade_aimConstraint10.ox"; +connectAttr "meta_L0_blade.pim" "meta_L0_blade_pointConstraint10.cpim"; +connectAttr "meta_L0_blade.rp" "meta_L0_blade_pointConstraint10.crp"; +connectAttr "meta_L0_blade.rpt" "meta_L0_blade_pointConstraint10.crt"; +connectAttr "meta_L0_root.t" "meta_L0_blade_pointConstraint10.tg[0].tt"; +connectAttr "meta_L0_root.rp" "meta_L0_blade_pointConstraint10.tg[0].trp"; +connectAttr "meta_L0_root.rpt" "meta_L0_blade_pointConstraint10.tg[0].trt"; +connectAttr "meta_L0_root.pm" "meta_L0_blade_pointConstraint10.tg[0].tpm"; +connectAttr "meta_L0_blade_pointConstraint10.w0" "meta_L0_blade_pointConstraint10.tg[0].tw" + ; +connectAttr "mgear_curveCns454.og[0]" "meta_L0_crvShape.cr"; +connectAttr "tweak602.pl[0].cp[0]" "meta_L0_crvShape.twl"; +connectAttr "mgear_curveCns454GroupId.id" "meta_L0_crvShape.iog.og[0].gid"; +connectAttr "mgear_curveCns454Set.mwc" "meta_L0_crvShape.iog.og[0].gco"; +connectAttr "groupId8773.id" "meta_L0_crvShape.iog.og[1].gid"; +connectAttr "tweakSet602.mwc" "meta_L0_crvShape.iog.og[1].gco"; +connectAttr "finger_L0_blade_pointConstraint10.ctx" "finger_L0_blade.tx" -l on; +connectAttr "finger_L0_blade_pointConstraint10.cty" "finger_L0_blade.ty" -l on; +connectAttr "finger_L0_blade_pointConstraint10.ctz" "finger_L0_blade.tz" -l on; +connectAttr "finger_L0_blade_aimConstraint10.crx" "finger_L0_blade.rx" -l on; +connectAttr "finger_L0_blade_aimConstraint10.cry" "finger_L0_blade.ry" -l on; +connectAttr "finger_L0_blade_aimConstraint10.crz" "finger_L0_blade.rz" -l on; +connectAttr "finger_L0_blade.pim" "finger_L0_blade_aimConstraint10.cpim"; +connectAttr "finger_L0_blade.t" "finger_L0_blade_aimConstraint10.ct"; +connectAttr "finger_L0_blade.rp" "finger_L0_blade_aimConstraint10.crp"; +connectAttr "finger_L0_blade.rpt" "finger_L0_blade_aimConstraint10.crt"; +connectAttr "finger_L0_blade.ro" "finger_L0_blade_aimConstraint10.cro"; +connectAttr "finger_L0_0_loc.t" "finger_L0_blade_aimConstraint10.tg[0].tt"; +connectAttr "finger_L0_0_loc.rp" "finger_L0_blade_aimConstraint10.tg[0].trp"; +connectAttr "finger_L0_0_loc.rpt" "finger_L0_blade_aimConstraint10.tg[0].trt"; +connectAttr "finger_L0_0_loc.pm" "finger_L0_blade_aimConstraint10.tg[0].tpm"; +connectAttr "finger_L0_blade_aimConstraint10.w0" "finger_L0_blade_aimConstraint10.tg[0].tw" + ; +connectAttr "finger_L0_root.wm" "finger_L0_blade_aimConstraint10.wum"; +connectAttr "unitConversion154.o" "finger_L0_blade_aimConstraint10.ox"; +connectAttr "finger_L0_blade.pim" "finger_L0_blade_pointConstraint10.cpim"; +connectAttr "finger_L0_blade.rp" "finger_L0_blade_pointConstraint10.crp"; +connectAttr "finger_L0_blade.rpt" "finger_L0_blade_pointConstraint10.crt"; +connectAttr "finger_L0_root.t" "finger_L0_blade_pointConstraint10.tg[0].tt"; +connectAttr "finger_L0_root.rp" "finger_L0_blade_pointConstraint10.tg[0].trp"; +connectAttr "finger_L0_root.rpt" "finger_L0_blade_pointConstraint10.tg[0].trt"; +connectAttr "finger_L0_root.pm" "finger_L0_blade_pointConstraint10.tg[0].tpm"; +connectAttr "finger_L0_blade_pointConstraint10.w0" "finger_L0_blade_pointConstraint10.tg[0].tw" + ; +connectAttr "mgear_curveCns458.og[0]" "finger_L0_crvShape.cr"; +connectAttr "tweak606.pl[0].cp[0]" "finger_L0_crvShape.twl"; +connectAttr "mgear_curveCns458GroupId.id" "finger_L0_crvShape.iog.og[0].gid"; +connectAttr "mgear_curveCns458Set.mwc" "finger_L0_crvShape.iog.og[0].gco"; +connectAttr "groupId8781.id" "finger_L0_crvShape.iog.og[1].gid"; +connectAttr "tweakSet606.mwc" "finger_L0_crvShape.iog.og[1].gco"; +connectAttr "thumb_L0_blade_pointConstraint10.ctx" "thumb_L0_blade.tx" -l on; +connectAttr "thumb_L0_blade_pointConstraint10.cty" "thumb_L0_blade.ty" -l on; +connectAttr "thumb_L0_blade_pointConstraint10.ctz" "thumb_L0_blade.tz" -l on; +connectAttr "thumb_L0_blade_aimConstraint10.crx" "thumb_L0_blade.rx" -l on; +connectAttr "thumb_L0_blade_aimConstraint10.cry" "thumb_L0_blade.ry" -l on; +connectAttr "thumb_L0_blade_aimConstraint10.crz" "thumb_L0_blade.rz" -l on; +connectAttr "thumb_L0_blade.pim" "thumb_L0_blade_aimConstraint10.cpim"; +connectAttr "thumb_L0_blade.t" "thumb_L0_blade_aimConstraint10.ct"; +connectAttr "thumb_L0_blade.rp" "thumb_L0_blade_aimConstraint10.crp"; +connectAttr "thumb_L0_blade.rpt" "thumb_L0_blade_aimConstraint10.crt"; +connectAttr "thumb_L0_blade.ro" "thumb_L0_blade_aimConstraint10.cro"; +connectAttr "thumb_L0_0_loc.t" "thumb_L0_blade_aimConstraint10.tg[0].tt"; +connectAttr "thumb_L0_0_loc.rp" "thumb_L0_blade_aimConstraint10.tg[0].trp"; +connectAttr "thumb_L0_0_loc.rpt" "thumb_L0_blade_aimConstraint10.tg[0].trt"; +connectAttr "thumb_L0_0_loc.pm" "thumb_L0_blade_aimConstraint10.tg[0].tpm"; +connectAttr "thumb_L0_blade_aimConstraint10.w0" "thumb_L0_blade_aimConstraint10.tg[0].tw" + ; +connectAttr "thumb_L0_root.wm" "thumb_L0_blade_aimConstraint10.wum"; +connectAttr "unitConversion155.o" "thumb_L0_blade_aimConstraint10.ox"; +connectAttr "thumb_L0_blade.pim" "thumb_L0_blade_pointConstraint10.cpim"; +connectAttr "thumb_L0_blade.rp" "thumb_L0_blade_pointConstraint10.crp"; +connectAttr "thumb_L0_blade.rpt" "thumb_L0_blade_pointConstraint10.crt"; +connectAttr "thumb_L0_root.t" "thumb_L0_blade_pointConstraint10.tg[0].tt"; +connectAttr "thumb_L0_root.rp" "thumb_L0_blade_pointConstraint10.tg[0].trp"; +connectAttr "thumb_L0_root.rpt" "thumb_L0_blade_pointConstraint10.tg[0].trt"; +connectAttr "thumb_L0_root.pm" "thumb_L0_blade_pointConstraint10.tg[0].tpm"; +connectAttr "thumb_L0_blade_pointConstraint10.w0" "thumb_L0_blade_pointConstraint10.tg[0].tw" + ; +connectAttr "mgear_curveCns459.og[0]" "thumb_L0_crvShape.cr"; +connectAttr "tweak607.pl[0].cp[0]" "thumb_L0_crvShape.twl"; +connectAttr "mgear_curveCns459GroupId.id" "thumb_L0_crvShape.iog.og[0].gid"; +connectAttr "mgear_curveCns459Set.mwc" "thumb_L0_crvShape.iog.og[0].gco"; +connectAttr "groupId8783.id" "thumb_L0_crvShape.iog.og[1].gid"; +connectAttr "tweakSet607.mwc" "thumb_L0_crvShape.iog.og[1].gco"; +connectAttr "mgear_curveCns453.og[0]" "arm_L0_crvShape.cr"; +connectAttr "tweak601.pl[0].cp[0]" "arm_L0_crvShape.twl"; +connectAttr "mgear_curveCns453GroupId.id" "arm_L0_crvShape.iog.og[0].gid"; +connectAttr "mgear_curveCns453Set.mwc" "arm_L0_crvShape.iog.og[0].gco"; +connectAttr "groupId8771.id" "arm_L0_crvShape.iog.og[1].gid"; +connectAttr "tweakSet601.mwc" "arm_L0_crvShape.iog.og[1].gco"; +connectAttr "shoulder_L0_blade_pointConstraint10.ctx" "shoulder_L0_blade.tx" -l on + ; +connectAttr "shoulder_L0_blade_pointConstraint10.cty" "shoulder_L0_blade.ty" -l on + ; +connectAttr "shoulder_L0_blade_pointConstraint10.ctz" "shoulder_L0_blade.tz" -l on + ; +connectAttr "shoulder_L0_blade_aimConstraint10.crx" "shoulder_L0_blade.rx" -l on + ; +connectAttr "shoulder_L0_blade_aimConstraint10.cry" "shoulder_L0_blade.ry" -l on + ; +connectAttr "shoulder_L0_blade_aimConstraint10.crz" "shoulder_L0_blade.rz" -l on + ; +connectAttr "shoulder_L0_blade.pim" "shoulder_L0_blade_aimConstraint10.cpim"; +connectAttr "shoulder_L0_blade.t" "shoulder_L0_blade_aimConstraint10.ct"; +connectAttr "shoulder_L0_blade.rp" "shoulder_L0_blade_aimConstraint10.crp"; +connectAttr "shoulder_L0_blade.rpt" "shoulder_L0_blade_aimConstraint10.crt"; +connectAttr "shoulder_L0_blade.ro" "shoulder_L0_blade_aimConstraint10.cro"; +connectAttr "shoulder_L0_tip.t" "shoulder_L0_blade_aimConstraint10.tg[0].tt"; +connectAttr "shoulder_L0_tip.rp" "shoulder_L0_blade_aimConstraint10.tg[0].trp"; +connectAttr "shoulder_L0_tip.rpt" "shoulder_L0_blade_aimConstraint10.tg[0].trt"; +connectAttr "shoulder_L0_tip.pm" "shoulder_L0_blade_aimConstraint10.tg[0].tpm"; +connectAttr "shoulder_L0_blade_aimConstraint10.w0" "shoulder_L0_blade_aimConstraint10.tg[0].tw" + ; +connectAttr "shoulder_L0_root.wm" "shoulder_L0_blade_aimConstraint10.wum"; +connectAttr "unitConversion149.o" "shoulder_L0_blade_aimConstraint10.ox"; +connectAttr "shoulder_L0_blade.pim" "shoulder_L0_blade_pointConstraint10.cpim"; +connectAttr "shoulder_L0_blade.rp" "shoulder_L0_blade_pointConstraint10.crp"; +connectAttr "shoulder_L0_blade.rpt" "shoulder_L0_blade_pointConstraint10.crt"; +connectAttr "shoulder_L0_root.t" "shoulder_L0_blade_pointConstraint10.tg[0].tt"; +connectAttr "shoulder_L0_root.rp" "shoulder_L0_blade_pointConstraint10.tg[0].trp" + ; +connectAttr "shoulder_L0_root.rpt" "shoulder_L0_blade_pointConstraint10.tg[0].trt" + ; +connectAttr "shoulder_L0_root.pm" "shoulder_L0_blade_pointConstraint10.tg[0].tpm" + ; +connectAttr "shoulder_L0_blade_pointConstraint10.w0" "shoulder_L0_blade_pointConstraint10.tg[0].tw" + ; +connectAttr "mgear_curveCns452.og[0]" "shoulder_L0_crvShape.cr"; +connectAttr "tweak600.pl[0].cp[0]" "shoulder_L0_crvShape.twl"; +connectAttr "mgear_curveCns452GroupId.id" "shoulder_L0_crvShape.iog.og[0].gid"; +connectAttr "mgear_curveCns452Set.mwc" "shoulder_L0_crvShape.iog.og[0].gco"; +connectAttr "groupId8769.id" "shoulder_L0_crvShape.iog.og[1].gid"; +connectAttr "tweakSet600.mwc" "shoulder_L0_crvShape.iog.og[1].gco"; +connectAttr "neck_C0_root_st_profile.o" "neck_C0_root.st_profile"; +connectAttr "neck_C0_root_sq_profile.o" "neck_C0_root.sq_profile"; +connectAttr "mgear_curveCns463.og[0]" "|guide|global_C0_root|local_C0_root|body_C0_root|spine_C0_root|spine_C0_eff|neck_C0_root|neck_C0_neck|neck_C0_head|mouth_C0_root|mouth_C0_rotcenter|mouth_C0_lipup|mouth_C0_crv|mouth_C0_crvShape.cr" + ; +connectAttr "tweak611.pl[0].cp[0]" "|guide|global_C0_root|local_C0_root|body_C0_root|spine_C0_root|spine_C0_eff|neck_C0_root|neck_C0_neck|neck_C0_head|mouth_C0_root|mouth_C0_rotcenter|mouth_C0_lipup|mouth_C0_crv|mouth_C0_crvShape.twl" + ; +connectAttr "mgear_curveCns463GroupId.id" "|guide|global_C0_root|local_C0_root|body_C0_root|spine_C0_root|spine_C0_eff|neck_C0_root|neck_C0_neck|neck_C0_head|mouth_C0_root|mouth_C0_rotcenter|mouth_C0_lipup|mouth_C0_crv|mouth_C0_crvShape.iog.og[0].gid" + ; +connectAttr "mgear_curveCns463Set.mwc" "|guide|global_C0_root|local_C0_root|body_C0_root|spine_C0_root|spine_C0_eff|neck_C0_root|neck_C0_neck|neck_C0_head|mouth_C0_root|mouth_C0_rotcenter|mouth_C0_lipup|mouth_C0_crv|mouth_C0_crvShape.iog.og[0].gco" + ; +connectAttr "groupId8791.id" "|guide|global_C0_root|local_C0_root|body_C0_root|spine_C0_root|spine_C0_eff|neck_C0_root|neck_C0_neck|neck_C0_head|mouth_C0_root|mouth_C0_rotcenter|mouth_C0_lipup|mouth_C0_crv|mouth_C0_crvShape.iog.og[1].gid" + ; +connectAttr "tweakSet611.mwc" "|guide|global_C0_root|local_C0_root|body_C0_root|spine_C0_root|spine_C0_eff|neck_C0_root|neck_C0_neck|neck_C0_head|mouth_C0_root|mouth_C0_rotcenter|mouth_C0_lipup|mouth_C0_crv|mouth_C0_crvShape.iog.og[1].gco" + ; +connectAttr "mgear_curveCns464.og[0]" "|guide|global_C0_root|local_C0_root|body_C0_root|spine_C0_root|spine_C0_eff|neck_C0_root|neck_C0_neck|neck_C0_head|mouth_C0_root|mouth_C0_rotcenter|mouth_C0_liplow|mouth_C0_crv|mouth_C0_crvShape.cr" + ; +connectAttr "tweak612.pl[0].cp[0]" "|guide|global_C0_root|local_C0_root|body_C0_root|spine_C0_root|spine_C0_eff|neck_C0_root|neck_C0_neck|neck_C0_head|mouth_C0_root|mouth_C0_rotcenter|mouth_C0_liplow|mouth_C0_crv|mouth_C0_crvShape.twl" + ; +connectAttr "mgear_curveCns464GroupId.id" "|guide|global_C0_root|local_C0_root|body_C0_root|spine_C0_root|spine_C0_eff|neck_C0_root|neck_C0_neck|neck_C0_head|mouth_C0_root|mouth_C0_rotcenter|mouth_C0_liplow|mouth_C0_crv|mouth_C0_crvShape.iog.og[0].gid" + ; +connectAttr "mgear_curveCns464Set.mwc" "|guide|global_C0_root|local_C0_root|body_C0_root|spine_C0_root|spine_C0_eff|neck_C0_root|neck_C0_neck|neck_C0_head|mouth_C0_root|mouth_C0_rotcenter|mouth_C0_liplow|mouth_C0_crv|mouth_C0_crvShape.iog.og[0].gco" + ; +connectAttr "groupId8793.id" "|guide|global_C0_root|local_C0_root|body_C0_root|spine_C0_root|spine_C0_eff|neck_C0_root|neck_C0_neck|neck_C0_head|mouth_C0_root|mouth_C0_rotcenter|mouth_C0_liplow|mouth_C0_crv|mouth_C0_crvShape.iog.og[1].gid" + ; +connectAttr "tweakSet612.mwc" "|guide|global_C0_root|local_C0_root|body_C0_root|spine_C0_root|spine_C0_eff|neck_C0_root|neck_C0_neck|neck_C0_head|mouth_C0_root|mouth_C0_rotcenter|mouth_C0_liplow|mouth_C0_crv|mouth_C0_crvShape.iog.og[1].gco" + ; +connectAttr "tongue_C0_blade_pointConstraint10.ctx" "tongue_C0_blade.tx" -l on; +connectAttr "tongue_C0_blade_pointConstraint10.cty" "tongue_C0_blade.ty" -l on; +connectAttr "tongue_C0_blade_pointConstraint10.ctz" "tongue_C0_blade.tz" -l on; +connectAttr "tongue_C0_blade_aimConstraint10.crx" "tongue_C0_blade.rx" -l on; +connectAttr "tongue_C0_blade_aimConstraint10.cry" "tongue_C0_blade.ry" -l on; +connectAttr "tongue_C0_blade_aimConstraint10.crz" "tongue_C0_blade.rz" -l on; +connectAttr "tongue_C0_blade.pim" "tongue_C0_blade_aimConstraint10.cpim"; +connectAttr "tongue_C0_blade.t" "tongue_C0_blade_aimConstraint10.ct"; +connectAttr "tongue_C0_blade.rp" "tongue_C0_blade_aimConstraint10.crp"; +connectAttr "tongue_C0_blade.rpt" "tongue_C0_blade_aimConstraint10.crt"; +connectAttr "tongue_C0_blade.ro" "tongue_C0_blade_aimConstraint10.cro"; +connectAttr "tongue_C0_0_loc.t" "tongue_C0_blade_aimConstraint10.tg[0].tt"; +connectAttr "tongue_C0_0_loc.rp" "tongue_C0_blade_aimConstraint10.tg[0].trp"; +connectAttr "tongue_C0_0_loc.rpt" "tongue_C0_blade_aimConstraint10.tg[0].trt"; +connectAttr "tongue_C0_0_loc.pm" "tongue_C0_blade_aimConstraint10.tg[0].tpm"; +connectAttr "tongue_C0_blade_aimConstraint10.w0" "tongue_C0_blade_aimConstraint10.tg[0].tw" + ; +connectAttr "tongue_C0_root.wm" "tongue_C0_blade_aimConstraint10.wum"; +connectAttr "unitConversion157.o" "tongue_C0_blade_aimConstraint10.ox"; +connectAttr "tongue_C0_blade.pim" "tongue_C0_blade_pointConstraint10.cpim"; +connectAttr "tongue_C0_blade.rp" "tongue_C0_blade_pointConstraint10.crp"; +connectAttr "tongue_C0_blade.rpt" "tongue_C0_blade_pointConstraint10.crt"; +connectAttr "tongue_C0_root.t" "tongue_C0_blade_pointConstraint10.tg[0].tt"; +connectAttr "tongue_C0_root.rp" "tongue_C0_blade_pointConstraint10.tg[0].trp"; +connectAttr "tongue_C0_root.rpt" "tongue_C0_blade_pointConstraint10.tg[0].trt"; +connectAttr "tongue_C0_root.pm" "tongue_C0_blade_pointConstraint10.tg[0].tpm"; +connectAttr "tongue_C0_blade_pointConstraint10.w0" "tongue_C0_blade_pointConstraint10.tg[0].tw" + ; +connectAttr "mgear_curveCns466.og[0]" "tongue_C0_crvShape.cr"; +connectAttr "tweak614.pl[0].cp[0]" "tongue_C0_crvShape.twl"; +connectAttr "mgear_curveCns466GroupId.id" "tongue_C0_crvShape.iog.og[0].gid"; +connectAttr "mgear_curveCns466Set.mwc" "tongue_C0_crvShape.iog.og[0].gco"; +connectAttr "groupId8797.id" "tongue_C0_crvShape.iog.og[1].gid"; +connectAttr "tweakSet614.mwc" "tongue_C0_crvShape.iog.og[1].gco"; +connectAttr "mgear_curveCns462.og[0]" "|guide|global_C0_root|local_C0_root|body_C0_root|spine_C0_root|spine_C0_eff|neck_C0_root|neck_C0_neck|neck_C0_head|mouth_C0_root|mouth_C0_crv|mouth_C0_crvShape.cr" + ; +connectAttr "tweak610.pl[0].cp[0]" "|guide|global_C0_root|local_C0_root|body_C0_root|spine_C0_root|spine_C0_eff|neck_C0_root|neck_C0_neck|neck_C0_head|mouth_C0_root|mouth_C0_crv|mouth_C0_crvShape.twl" + ; +connectAttr "mgear_curveCns462GroupId.id" "|guide|global_C0_root|local_C0_root|body_C0_root|spine_C0_root|spine_C0_eff|neck_C0_root|neck_C0_neck|neck_C0_head|mouth_C0_root|mouth_C0_crv|mouth_C0_crvShape.iog.og[0].gid" + ; +connectAttr "mgear_curveCns462Set.mwc" "|guide|global_C0_root|local_C0_root|body_C0_root|spine_C0_root|spine_C0_eff|neck_C0_root|neck_C0_neck|neck_C0_head|mouth_C0_root|mouth_C0_crv|mouth_C0_crvShape.iog.og[0].gco" + ; +connectAttr "groupId8789.id" "|guide|global_C0_root|local_C0_root|body_C0_root|spine_C0_root|spine_C0_eff|neck_C0_root|neck_C0_neck|neck_C0_head|mouth_C0_root|mouth_C0_crv|mouth_C0_crvShape.iog.og[1].gid" + ; +connectAttr "tweakSet610.mwc" "|guide|global_C0_root|local_C0_root|body_C0_root|spine_C0_root|spine_C0_eff|neck_C0_root|neck_C0_neck|neck_C0_head|mouth_C0_root|mouth_C0_crv|mouth_C0_crvShape.iog.og[1].gco" + ; +connectAttr "mgear_curveCns465.og[0]" "mouth_C0_crv10Shape.cr"; +connectAttr "tweak613.pl[0].cp[0]" "mouth_C0_crv10Shape.twl"; +connectAttr "mgear_curveCns465GroupId.id" "mouth_C0_crv10Shape.iog.og[0].gid"; +connectAttr "mgear_curveCns465Set.mwc" "mouth_C0_crv10Shape.iog.og[0].gco"; +connectAttr "groupId8795.id" "mouth_C0_crv10Shape.iog.og[1].gid"; +connectAttr "tweakSet613.mwc" "mouth_C0_crv10Shape.iog.og[1].gco"; +connectAttr "mgear_curveCns467.og[0]" "eye_R0_crvShape.cr"; +connectAttr "tweak615.pl[0].cp[0]" "eye_R0_crvShape.twl"; +connectAttr "mgear_curveCns467GroupId.id" "eye_R0_crvShape.iog.og[0].gid"; +connectAttr "mgear_curveCns467Set.mwc" "eye_R0_crvShape.iog.og[0].gco"; +connectAttr "groupId8799.id" "eye_R0_crvShape.iog.og[1].gid"; +connectAttr "tweakSet615.mwc" "eye_R0_crvShape.iog.og[1].gco"; +connectAttr "mgear_curveCns468.og[0]" "eye_L0_crvShape.cr"; +connectAttr "tweak616.pl[0].cp[0]" "eye_L0_crvShape.twl"; +connectAttr "mgear_curveCns468GroupId.id" "eye_L0_crvShape.iog.og[0].gid"; +connectAttr "mgear_curveCns468Set.mwc" "eye_L0_crvShape.iog.og[0].gco"; +connectAttr "groupId8801.id" "eye_L0_crvShape.iog.og[1].gid"; +connectAttr "tweakSet616.mwc" "eye_L0_crvShape.iog.og[1].gco"; +connectAttr "mgear_curveCns461.og[0]" "neck_C0_head_crvShape.cr"; +connectAttr "tweak609.pl[0].cp[0]" "neck_C0_head_crvShape.twl"; +connectAttr "mgear_curveCns461GroupId.id" "neck_C0_head_crvShape.iog.og[0].gid"; +connectAttr "mgear_curveCns461Set.mwc" "neck_C0_head_crvShape.iog.og[0].gco"; +connectAttr "groupId8787.id" "neck_C0_head_crvShape.iog.og[1].gid"; +connectAttr "tweakSet609.mwc" "neck_C0_head_crvShape.iog.og[1].gco"; +connectAttr "neck_C0_blade_pointConstraint10.ctx" "neck_C0_blade.tx" -l on; +connectAttr "neck_C0_blade_pointConstraint10.cty" "neck_C0_blade.ty" -l on; +connectAttr "neck_C0_blade_pointConstraint10.ctz" "neck_C0_blade.tz" -l on; +connectAttr "neck_C0_blade_aimConstraint10.crx" "neck_C0_blade.rx" -l on; +connectAttr "neck_C0_blade_aimConstraint10.cry" "neck_C0_blade.ry" -l on; +connectAttr "neck_C0_blade_aimConstraint10.crz" "neck_C0_blade.rz" -l on; +connectAttr "neck_C0_blade.pim" "neck_C0_blade_aimConstraint10.cpim"; +connectAttr "neck_C0_blade.t" "neck_C0_blade_aimConstraint10.ct"; +connectAttr "neck_C0_blade.rp" "neck_C0_blade_aimConstraint10.crp"; +connectAttr "neck_C0_blade.rpt" "neck_C0_blade_aimConstraint10.crt"; +connectAttr "neck_C0_blade.ro" "neck_C0_blade_aimConstraint10.cro"; +connectAttr "neck_C0_tan0.t" "neck_C0_blade_aimConstraint10.tg[0].tt"; +connectAttr "neck_C0_tan0.rp" "neck_C0_blade_aimConstraint10.tg[0].trp"; +connectAttr "neck_C0_tan0.rpt" "neck_C0_blade_aimConstraint10.tg[0].trt"; +connectAttr "neck_C0_tan0.pm" "neck_C0_blade_aimConstraint10.tg[0].tpm"; +connectAttr "neck_C0_blade_aimConstraint10.w0" "neck_C0_blade_aimConstraint10.tg[0].tw" + ; +connectAttr "neck_C0_root.wm" "neck_C0_blade_aimConstraint10.wum"; +connectAttr "unitConversion156.o" "neck_C0_blade_aimConstraint10.ox"; +connectAttr "neck_C0_blade.pim" "neck_C0_blade_pointConstraint10.cpim"; +connectAttr "neck_C0_blade.rp" "neck_C0_blade_pointConstraint10.crp"; +connectAttr "neck_C0_blade.rpt" "neck_C0_blade_pointConstraint10.crt"; +connectAttr "neck_C0_root.t" "neck_C0_blade_pointConstraint10.tg[0].tt"; +connectAttr "neck_C0_root.rp" "neck_C0_blade_pointConstraint10.tg[0].trp"; +connectAttr "neck_C0_root.rpt" "neck_C0_blade_pointConstraint10.tg[0].trt"; +connectAttr "neck_C0_root.pm" "neck_C0_blade_pointConstraint10.tg[0].tpm"; +connectAttr "neck_C0_blade_pointConstraint10.w0" "neck_C0_blade_pointConstraint10.tg[0].tw" + ; +connectAttr "mgear_curveCns460.og[0]" "neck_C0_neck_crvShape.cr"; +connectAttr "tweak608.pl[0].cp[0]" "neck_C0_neck_crvShape.twl"; +connectAttr "mgear_curveCns460GroupId.id" "neck_C0_neck_crvShape.iog.og[0].gid"; +connectAttr "mgear_curveCns460Set.mwc" "neck_C0_neck_crvShape.iog.og[0].gco"; +connectAttr "groupId8785.id" "neck_C0_neck_crvShape.iog.og[1].gid"; +connectAttr "tweakSet608.mwc" "neck_C0_neck_crvShape.iog.og[1].gco"; +connectAttr "arm_R0_root_st_profile1.o" "arm_R0_root.st_profile"; +connectAttr "arm_R0_root_sq_profile1.o" "arm_R0_root.sq_profile"; +connectAttr "finger_R3_blade_pointConstraint2.ctx" "finger_R3_blade.tx" -l on; +connectAttr "finger_R3_blade_pointConstraint2.cty" "finger_R3_blade.ty" -l on; +connectAttr "finger_R3_blade_pointConstraint2.ctz" "finger_R3_blade.tz" -l on; +connectAttr "finger_R3_blade_aimConstraint2.crx" "finger_R3_blade.rx" -l on; +connectAttr "finger_R3_blade_aimConstraint2.cry" "finger_R3_blade.ry" -l on; +connectAttr "finger_R3_blade_aimConstraint2.crz" "finger_R3_blade.rz" -l on; +connectAttr "finger_R3_blade.pim" "finger_R3_blade_aimConstraint2.cpim"; +connectAttr "finger_R3_blade.t" "finger_R3_blade_aimConstraint2.ct"; +connectAttr "finger_R3_blade.rp" "finger_R3_blade_aimConstraint2.crp"; +connectAttr "finger_R3_blade.rpt" "finger_R3_blade_aimConstraint2.crt"; +connectAttr "finger_R3_blade.ro" "finger_R3_blade_aimConstraint2.cro"; +connectAttr "finger_R3_0_loc.t" "finger_R3_blade_aimConstraint2.tg[0].tt"; +connectAttr "finger_R3_0_loc.rp" "finger_R3_blade_aimConstraint2.tg[0].trp"; +connectAttr "finger_R3_0_loc.rpt" "finger_R3_blade_aimConstraint2.tg[0].trt"; +connectAttr "finger_R3_0_loc.pm" "finger_R3_blade_aimConstraint2.tg[0].tpm"; +connectAttr "finger_R3_blade_aimConstraint2.w0" "finger_R3_blade_aimConstraint2.tg[0].tw" + ; +connectAttr "finger_R3_root.wm" "finger_R3_blade_aimConstraint2.wum"; +connectAttr "unitConversion160.o" "finger_R3_blade_aimConstraint2.ox"; +connectAttr "finger_R3_blade.pim" "finger_R3_blade_pointConstraint2.cpim"; +connectAttr "finger_R3_blade.rp" "finger_R3_blade_pointConstraint2.crp"; +connectAttr "finger_R3_blade.rpt" "finger_R3_blade_pointConstraint2.crt"; +connectAttr "finger_R3_root.t" "finger_R3_blade_pointConstraint2.tg[0].tt"; +connectAttr "finger_R3_root.rp" "finger_R3_blade_pointConstraint2.tg[0].trp"; +connectAttr "finger_R3_root.rpt" "finger_R3_blade_pointConstraint2.tg[0].trt"; +connectAttr "finger_R3_root.pm" "finger_R3_blade_pointConstraint2.tg[0].tpm"; +connectAttr "finger_R3_blade_pointConstraint2.w0" "finger_R3_blade_pointConstraint2.tg[0].tw" + ; +connectAttr "mgear_curveCns472.og[0]" "finger_R3_crvShape.cr"; +connectAttr "tweak620.pl[0].cp[0]" "finger_R3_crvShape.twl"; +connectAttr "mgear_curveCns472GroupId.id" "finger_R3_crvShape.iog.og[0].gid"; +connectAttr "mgear_curveCns472Set.mwc" "finger_R3_crvShape.iog.og[0].gco"; +connectAttr "groupId8809.id" "finger_R3_crvShape.iog.og[1].gid"; +connectAttr "tweakSet620.mwc" "finger_R3_crvShape.iog.og[1].gco"; +connectAttr "finger_R2_blade_pointConstraint2.ctx" "finger_R2_blade.tx" -l on; +connectAttr "finger_R2_blade_pointConstraint2.cty" "finger_R2_blade.ty" -l on; +connectAttr "finger_R2_blade_pointConstraint2.ctz" "finger_R2_blade.tz" -l on; +connectAttr "finger_R2_blade_aimConstraint2.crx" "finger_R2_blade.rx" -l on; +connectAttr "finger_R2_blade_aimConstraint2.cry" "finger_R2_blade.ry" -l on; +connectAttr "finger_R2_blade_aimConstraint2.crz" "finger_R2_blade.rz" -l on; +connectAttr "finger_R2_blade.pim" "finger_R2_blade_aimConstraint2.cpim"; +connectAttr "finger_R2_blade.t" "finger_R2_blade_aimConstraint2.ct"; +connectAttr "finger_R2_blade.rp" "finger_R2_blade_aimConstraint2.crp"; +connectAttr "finger_R2_blade.rpt" "finger_R2_blade_aimConstraint2.crt"; +connectAttr "finger_R2_blade.ro" "finger_R2_blade_aimConstraint2.cro"; +connectAttr "finger_R2_0_loc.t" "finger_R2_blade_aimConstraint2.tg[0].tt"; +connectAttr "finger_R2_0_loc.rp" "finger_R2_blade_aimConstraint2.tg[0].trp"; +connectAttr "finger_R2_0_loc.rpt" "finger_R2_blade_aimConstraint2.tg[0].trt"; +connectAttr "finger_R2_0_loc.pm" "finger_R2_blade_aimConstraint2.tg[0].tpm"; +connectAttr "finger_R2_blade_aimConstraint2.w0" "finger_R2_blade_aimConstraint2.tg[0].tw" + ; +connectAttr "finger_R2_root.wm" "finger_R2_blade_aimConstraint2.wum"; +connectAttr "unitConversion161.o" "finger_R2_blade_aimConstraint2.ox"; +connectAttr "finger_R2_blade.pim" "finger_R2_blade_pointConstraint2.cpim"; +connectAttr "finger_R2_blade.rp" "finger_R2_blade_pointConstraint2.crp"; +connectAttr "finger_R2_blade.rpt" "finger_R2_blade_pointConstraint2.crt"; +connectAttr "finger_R2_root.t" "finger_R2_blade_pointConstraint2.tg[0].tt"; +connectAttr "finger_R2_root.rp" "finger_R2_blade_pointConstraint2.tg[0].trp"; +connectAttr "finger_R2_root.rpt" "finger_R2_blade_pointConstraint2.tg[0].trt"; +connectAttr "finger_R2_root.pm" "finger_R2_blade_pointConstraint2.tg[0].tpm"; +connectAttr "finger_R2_blade_pointConstraint2.w0" "finger_R2_blade_pointConstraint2.tg[0].tw" + ; +connectAttr "mgear_curveCns473.og[0]" "finger_R2_crvShape.cr"; +connectAttr "tweak621.pl[0].cp[0]" "finger_R2_crvShape.twl"; +connectAttr "mgear_curveCns473GroupId.id" "finger_R2_crvShape.iog.og[0].gid"; +connectAttr "mgear_curveCns473Set.mwc" "finger_R2_crvShape.iog.og[0].gco"; +connectAttr "groupId8811.id" "finger_R2_crvShape.iog.og[1].gid"; +connectAttr "tweakSet621.mwc" "finger_R2_crvShape.iog.og[1].gco"; +connectAttr "finger_R1_blade_pointConstraint2.ctx" "finger_R1_blade.tx" -l on; +connectAttr "finger_R1_blade_pointConstraint2.cty" "finger_R1_blade.ty" -l on; +connectAttr "finger_R1_blade_pointConstraint2.ctz" "finger_R1_blade.tz" -l on; +connectAttr "finger_R1_blade_aimConstraint2.crx" "finger_R1_blade.rx" -l on; +connectAttr "finger_R1_blade_aimConstraint2.cry" "finger_R1_blade.ry" -l on; +connectAttr "finger_R1_blade_aimConstraint2.crz" "finger_R1_blade.rz" -l on; +connectAttr "finger_R1_blade.pim" "finger_R1_blade_aimConstraint2.cpim"; +connectAttr "finger_R1_blade.t" "finger_R1_blade_aimConstraint2.ct"; +connectAttr "finger_R1_blade.rp" "finger_R1_blade_aimConstraint2.crp"; +connectAttr "finger_R1_blade.rpt" "finger_R1_blade_aimConstraint2.crt"; +connectAttr "finger_R1_blade.ro" "finger_R1_blade_aimConstraint2.cro"; +connectAttr "finger_R1_0_loc.t" "finger_R1_blade_aimConstraint2.tg[0].tt"; +connectAttr "finger_R1_0_loc.rp" "finger_R1_blade_aimConstraint2.tg[0].trp"; +connectAttr "finger_R1_0_loc.rpt" "finger_R1_blade_aimConstraint2.tg[0].trt"; +connectAttr "finger_R1_0_loc.pm" "finger_R1_blade_aimConstraint2.tg[0].tpm"; +connectAttr "finger_R1_blade_aimConstraint2.w0" "finger_R1_blade_aimConstraint2.tg[0].tw" + ; +connectAttr "finger_R1_root.wm" "finger_R1_blade_aimConstraint2.wum"; +connectAttr "unitConversion162.o" "finger_R1_blade_aimConstraint2.ox"; +connectAttr "finger_R1_blade.pim" "finger_R1_blade_pointConstraint2.cpim"; +connectAttr "finger_R1_blade.rp" "finger_R1_blade_pointConstraint2.crp"; +connectAttr "finger_R1_blade.rpt" "finger_R1_blade_pointConstraint2.crt"; +connectAttr "finger_R1_root.t" "finger_R1_blade_pointConstraint2.tg[0].tt"; +connectAttr "finger_R1_root.rp" "finger_R1_blade_pointConstraint2.tg[0].trp"; +connectAttr "finger_R1_root.rpt" "finger_R1_blade_pointConstraint2.tg[0].trt"; +connectAttr "finger_R1_root.pm" "finger_R1_blade_pointConstraint2.tg[0].tpm"; +connectAttr "finger_R1_blade_pointConstraint2.w0" "finger_R1_blade_pointConstraint2.tg[0].tw" + ; +connectAttr "mgear_curveCns474.og[0]" "finger_R1_crvShape.cr"; +connectAttr "tweak622.pl[0].cp[0]" "finger_R1_crvShape.twl"; +connectAttr "mgear_curveCns474GroupId.id" "finger_R1_crvShape.iog.og[0].gid"; +connectAttr "mgear_curveCns474Set.mwc" "finger_R1_crvShape.iog.og[0].gco"; +connectAttr "groupId8813.id" "finger_R1_crvShape.iog.og[1].gid"; +connectAttr "tweakSet622.mwc" "finger_R1_crvShape.iog.og[1].gco"; +connectAttr "meta_R0_blade_pointConstraint2.ctx" "meta_R0_blade.tx" -l on; +connectAttr "meta_R0_blade_pointConstraint2.cty" "meta_R0_blade.ty" -l on; +connectAttr "meta_R0_blade_pointConstraint2.ctz" "meta_R0_blade.tz" -l on; +connectAttr "meta_R0_blade_aimConstraint2.crx" "meta_R0_blade.rx" -l on; +connectAttr "meta_R0_blade_aimConstraint2.cry" "meta_R0_blade.ry" -l on; +connectAttr "meta_R0_blade_aimConstraint2.crz" "meta_R0_blade.rz" -l on; +connectAttr "meta_R0_blade.pim" "meta_R0_blade_aimConstraint2.cpim"; +connectAttr "meta_R0_blade.t" "meta_R0_blade_aimConstraint2.ct"; +connectAttr "meta_R0_blade.rp" "meta_R0_blade_aimConstraint2.crp"; +connectAttr "meta_R0_blade.rpt" "meta_R0_blade_aimConstraint2.crt"; +connectAttr "meta_R0_blade.ro" "meta_R0_blade_aimConstraint2.cro"; +connectAttr "meta_R0_0_loc.t" "meta_R0_blade_aimConstraint2.tg[0].tt"; +connectAttr "meta_R0_0_loc.rp" "meta_R0_blade_aimConstraint2.tg[0].trp"; +connectAttr "meta_R0_0_loc.rpt" "meta_R0_blade_aimConstraint2.tg[0].trt"; +connectAttr "meta_R0_0_loc.pm" "meta_R0_blade_aimConstraint2.tg[0].tpm"; +connectAttr "meta_R0_blade_aimConstraint2.w0" "meta_R0_blade_aimConstraint2.tg[0].tw" + ; +connectAttr "meta_R0_root.wm" "meta_R0_blade_aimConstraint2.wum"; +connectAttr "unitConversion159.o" "meta_R0_blade_aimConstraint2.ox"; +connectAttr "meta_R0_blade.pim" "meta_R0_blade_pointConstraint2.cpim"; +connectAttr "meta_R0_blade.rp" "meta_R0_blade_pointConstraint2.crp"; +connectAttr "meta_R0_blade.rpt" "meta_R0_blade_pointConstraint2.crt"; +connectAttr "meta_R0_root.t" "meta_R0_blade_pointConstraint2.tg[0].tt"; +connectAttr "meta_R0_root.rp" "meta_R0_blade_pointConstraint2.tg[0].trp"; +connectAttr "meta_R0_root.rpt" "meta_R0_blade_pointConstraint2.tg[0].trt"; +connectAttr "meta_R0_root.pm" "meta_R0_blade_pointConstraint2.tg[0].tpm"; +connectAttr "meta_R0_blade_pointConstraint2.w0" "meta_R0_blade_pointConstraint2.tg[0].tw" + ; +connectAttr "mgear_curveCns471.og[0]" "meta_R0_crvShape.cr"; +connectAttr "tweak619.pl[0].cp[0]" "meta_R0_crvShape.twl"; +connectAttr "mgear_curveCns471GroupId.id" "meta_R0_crvShape.iog.og[0].gid"; +connectAttr "mgear_curveCns471Set.mwc" "meta_R0_crvShape.iog.og[0].gco"; +connectAttr "groupId8807.id" "meta_R0_crvShape.iog.og[1].gid"; +connectAttr "tweakSet619.mwc" "meta_R0_crvShape.iog.og[1].gco"; +connectAttr "finger_R0_blade_pointConstraint2.ctx" "finger_R0_blade.tx" -l on; +connectAttr "finger_R0_blade_pointConstraint2.cty" "finger_R0_blade.ty" -l on; +connectAttr "finger_R0_blade_pointConstraint2.ctz" "finger_R0_blade.tz" -l on; +connectAttr "finger_R0_blade_aimConstraint2.crx" "finger_R0_blade.rx" -l on; +connectAttr "finger_R0_blade_aimConstraint2.cry" "finger_R0_blade.ry" -l on; +connectAttr "finger_R0_blade_aimConstraint2.crz" "finger_R0_blade.rz" -l on; +connectAttr "finger_R0_blade.pim" "finger_R0_blade_aimConstraint2.cpim"; +connectAttr "finger_R0_blade.t" "finger_R0_blade_aimConstraint2.ct"; +connectAttr "finger_R0_blade.rp" "finger_R0_blade_aimConstraint2.crp"; +connectAttr "finger_R0_blade.rpt" "finger_R0_blade_aimConstraint2.crt"; +connectAttr "finger_R0_blade.ro" "finger_R0_blade_aimConstraint2.cro"; +connectAttr "finger_R0_0_loc.t" "finger_R0_blade_aimConstraint2.tg[0].tt"; +connectAttr "finger_R0_0_loc.rp" "finger_R0_blade_aimConstraint2.tg[0].trp"; +connectAttr "finger_R0_0_loc.rpt" "finger_R0_blade_aimConstraint2.tg[0].trt"; +connectAttr "finger_R0_0_loc.pm" "finger_R0_blade_aimConstraint2.tg[0].tpm"; +connectAttr "finger_R0_blade_aimConstraint2.w0" "finger_R0_blade_aimConstraint2.tg[0].tw" + ; +connectAttr "finger_R0_root.wm" "finger_R0_blade_aimConstraint2.wum"; +connectAttr "unitConversion163.o" "finger_R0_blade_aimConstraint2.ox"; +connectAttr "finger_R0_blade.pim" "finger_R0_blade_pointConstraint2.cpim"; +connectAttr "finger_R0_blade.rp" "finger_R0_blade_pointConstraint2.crp"; +connectAttr "finger_R0_blade.rpt" "finger_R0_blade_pointConstraint2.crt"; +connectAttr "finger_R0_root.t" "finger_R0_blade_pointConstraint2.tg[0].tt"; +connectAttr "finger_R0_root.rp" "finger_R0_blade_pointConstraint2.tg[0].trp"; +connectAttr "finger_R0_root.rpt" "finger_R0_blade_pointConstraint2.tg[0].trt"; +connectAttr "finger_R0_root.pm" "finger_R0_blade_pointConstraint2.tg[0].tpm"; +connectAttr "finger_R0_blade_pointConstraint2.w0" "finger_R0_blade_pointConstraint2.tg[0].tw" + ; +connectAttr "mgear_curveCns475.og[0]" "finger_R0_crvShape.cr"; +connectAttr "tweak623.pl[0].cp[0]" "finger_R0_crvShape.twl"; +connectAttr "mgear_curveCns475GroupId.id" "finger_R0_crvShape.iog.og[0].gid"; +connectAttr "mgear_curveCns475Set.mwc" "finger_R0_crvShape.iog.og[0].gco"; +connectAttr "groupId8815.id" "finger_R0_crvShape.iog.og[1].gid"; +connectAttr "tweakSet623.mwc" "finger_R0_crvShape.iog.og[1].gco"; +connectAttr "thumb_R0_blade_pointConstraint2.ctx" "thumb_R0_blade.tx" -l on; +connectAttr "thumb_R0_blade_pointConstraint2.cty" "thumb_R0_blade.ty" -l on; +connectAttr "thumb_R0_blade_pointConstraint2.ctz" "thumb_R0_blade.tz" -l on; +connectAttr "thumb_R0_blade_aimConstraint2.crx" "thumb_R0_blade.rx" -l on; +connectAttr "thumb_R0_blade_aimConstraint2.cry" "thumb_R0_blade.ry" -l on; +connectAttr "thumb_R0_blade_aimConstraint2.crz" "thumb_R0_blade.rz" -l on; +connectAttr "thumb_R0_blade.pim" "thumb_R0_blade_aimConstraint2.cpim"; +connectAttr "thumb_R0_blade.t" "thumb_R0_blade_aimConstraint2.ct"; +connectAttr "thumb_R0_blade.rp" "thumb_R0_blade_aimConstraint2.crp"; +connectAttr "thumb_R0_blade.rpt" "thumb_R0_blade_aimConstraint2.crt"; +connectAttr "thumb_R0_blade.ro" "thumb_R0_blade_aimConstraint2.cro"; +connectAttr "thumb_R0_0_loc.t" "thumb_R0_blade_aimConstraint2.tg[0].tt"; +connectAttr "thumb_R0_0_loc.rp" "thumb_R0_blade_aimConstraint2.tg[0].trp"; +connectAttr "thumb_R0_0_loc.rpt" "thumb_R0_blade_aimConstraint2.tg[0].trt"; +connectAttr "thumb_R0_0_loc.pm" "thumb_R0_blade_aimConstraint2.tg[0].tpm"; +connectAttr "thumb_R0_blade_aimConstraint2.w0" "thumb_R0_blade_aimConstraint2.tg[0].tw" + ; +connectAttr "thumb_R0_root.wm" "thumb_R0_blade_aimConstraint2.wum"; +connectAttr "unitConversion164.o" "thumb_R0_blade_aimConstraint2.ox"; +connectAttr "thumb_R0_blade.pim" "thumb_R0_blade_pointConstraint2.cpim"; +connectAttr "thumb_R0_blade.rp" "thumb_R0_blade_pointConstraint2.crp"; +connectAttr "thumb_R0_blade.rpt" "thumb_R0_blade_pointConstraint2.crt"; +connectAttr "thumb_R0_root.t" "thumb_R0_blade_pointConstraint2.tg[0].tt"; +connectAttr "thumb_R0_root.rp" "thumb_R0_blade_pointConstraint2.tg[0].trp"; +connectAttr "thumb_R0_root.rpt" "thumb_R0_blade_pointConstraint2.tg[0].trt"; +connectAttr "thumb_R0_root.pm" "thumb_R0_blade_pointConstraint2.tg[0].tpm"; +connectAttr "thumb_R0_blade_pointConstraint2.w0" "thumb_R0_blade_pointConstraint2.tg[0].tw" + ; +connectAttr "mgear_curveCns476.og[0]" "thumb_R0_crvShape.cr"; +connectAttr "tweak624.pl[0].cp[0]" "thumb_R0_crvShape.twl"; +connectAttr "mgear_curveCns476GroupId.id" "thumb_R0_crvShape.iog.og[0].gid"; +connectAttr "mgear_curveCns476Set.mwc" "thumb_R0_crvShape.iog.og[0].gco"; +connectAttr "groupId8817.id" "thumb_R0_crvShape.iog.og[1].gid"; +connectAttr "tweakSet624.mwc" "thumb_R0_crvShape.iog.og[1].gco"; +connectAttr "mgear_curveCns470.og[0]" "arm_R0_crvShape.cr"; +connectAttr "tweak618.pl[0].cp[0]" "arm_R0_crvShape.twl"; +connectAttr "mgear_curveCns470GroupId.id" "arm_R0_crvShape.iog.og[0].gid"; +connectAttr "mgear_curveCns470Set.mwc" "arm_R0_crvShape.iog.og[0].gco"; +connectAttr "groupId8805.id" "arm_R0_crvShape.iog.og[1].gid"; +connectAttr "tweakSet618.mwc" "arm_R0_crvShape.iog.og[1].gco"; +connectAttr "shoulder_R0_blade_pointConstraint2.ctx" "shoulder_R0_blade.tx" -l on + ; +connectAttr "shoulder_R0_blade_pointConstraint2.cty" "shoulder_R0_blade.ty" -l on + ; +connectAttr "shoulder_R0_blade_pointConstraint2.ctz" "shoulder_R0_blade.tz" -l on + ; +connectAttr "shoulder_R0_blade_aimConstraint2.crx" "shoulder_R0_blade.rx" -l on; +connectAttr "shoulder_R0_blade_aimConstraint2.cry" "shoulder_R0_blade.ry" -l on; +connectAttr "shoulder_R0_blade_aimConstraint2.crz" "shoulder_R0_blade.rz" -l on; +connectAttr "shoulder_R0_blade.pim" "shoulder_R0_blade_aimConstraint2.cpim"; +connectAttr "shoulder_R0_blade.t" "shoulder_R0_blade_aimConstraint2.ct"; +connectAttr "shoulder_R0_blade.rp" "shoulder_R0_blade_aimConstraint2.crp"; +connectAttr "shoulder_R0_blade.rpt" "shoulder_R0_blade_aimConstraint2.crt"; +connectAttr "shoulder_R0_blade.ro" "shoulder_R0_blade_aimConstraint2.cro"; +connectAttr "shoulder_R0_tip.t" "shoulder_R0_blade_aimConstraint2.tg[0].tt"; +connectAttr "shoulder_R0_tip.rp" "shoulder_R0_blade_aimConstraint2.tg[0].trp"; +connectAttr "shoulder_R0_tip.rpt" "shoulder_R0_blade_aimConstraint2.tg[0].trt"; +connectAttr "shoulder_R0_tip.pm" "shoulder_R0_blade_aimConstraint2.tg[0].tpm"; +connectAttr "shoulder_R0_blade_aimConstraint2.w0" "shoulder_R0_blade_aimConstraint2.tg[0].tw" + ; +connectAttr "shoulder_R0_root.wm" "shoulder_R0_blade_aimConstraint2.wum"; +connectAttr "unitConversion158.o" "shoulder_R0_blade_aimConstraint2.ox"; +connectAttr "shoulder_R0_blade.pim" "shoulder_R0_blade_pointConstraint2.cpim"; +connectAttr "shoulder_R0_blade.rp" "shoulder_R0_blade_pointConstraint2.crp"; +connectAttr "shoulder_R0_blade.rpt" "shoulder_R0_blade_pointConstraint2.crt"; +connectAttr "shoulder_R0_root.t" "shoulder_R0_blade_pointConstraint2.tg[0].tt"; +connectAttr "shoulder_R0_root.rp" "shoulder_R0_blade_pointConstraint2.tg[0].trp" + ; +connectAttr "shoulder_R0_root.rpt" "shoulder_R0_blade_pointConstraint2.tg[0].trt" + ; +connectAttr "shoulder_R0_root.pm" "shoulder_R0_blade_pointConstraint2.tg[0].tpm" + ; +connectAttr "shoulder_R0_blade_pointConstraint2.w0" "shoulder_R0_blade_pointConstraint2.tg[0].tw" + ; +connectAttr "mgear_curveCns469.og[0]" "shoulder_R0_crvShape.cr"; +connectAttr "tweak617.pl[0].cp[0]" "shoulder_R0_crvShape.twl"; +connectAttr "mgear_curveCns469GroupId.id" "shoulder_R0_crvShape.iog.og[0].gid"; +connectAttr "mgear_curveCns469Set.mwc" "shoulder_R0_crvShape.iog.og[0].gco"; +connectAttr "groupId8803.id" "shoulder_R0_crvShape.iog.og[1].gid"; +connectAttr "tweakSet617.mwc" "shoulder_R0_crvShape.iog.og[1].gco"; +connectAttr "spine_C0_blade_pointConstraint10.ctx" "spine_C0_blade.tx" -l on; +connectAttr "spine_C0_blade_pointConstraint10.cty" "spine_C0_blade.ty" -l on; +connectAttr "spine_C0_blade_pointConstraint10.ctz" "spine_C0_blade.tz" -l on; +connectAttr "spine_C0_blade_aimConstraint10.crx" "spine_C0_blade.rx" -l on; +connectAttr "spine_C0_blade_aimConstraint10.cry" "spine_C0_blade.ry" -l on; +connectAttr "spine_C0_blade_aimConstraint10.crz" "spine_C0_blade.rz" -l on; +connectAttr "spine_C0_blade.pim" "spine_C0_blade_aimConstraint10.cpim"; +connectAttr "spine_C0_blade.t" "spine_C0_blade_aimConstraint10.ct"; +connectAttr "spine_C0_blade.rp" "spine_C0_blade_aimConstraint10.crp"; +connectAttr "spine_C0_blade.rpt" "spine_C0_blade_aimConstraint10.crt"; +connectAttr "spine_C0_blade.ro" "spine_C0_blade_aimConstraint10.cro"; +connectAttr "spine_C0_eff.t" "spine_C0_blade_aimConstraint10.tg[0].tt"; +connectAttr "spine_C0_eff.rp" "spine_C0_blade_aimConstraint10.tg[0].trp"; +connectAttr "spine_C0_eff.rpt" "spine_C0_blade_aimConstraint10.tg[0].trt"; +connectAttr "spine_C0_eff.pm" "spine_C0_blade_aimConstraint10.tg[0].tpm"; +connectAttr "spine_C0_blade_aimConstraint10.w0" "spine_C0_blade_aimConstraint10.tg[0].tw" + ; +connectAttr "spine_C0_root.wm" "spine_C0_blade_aimConstraint10.wum"; +connectAttr "unitConversion148.o" "spine_C0_blade_aimConstraint10.ox"; +connectAttr "spine_C0_blade.pim" "spine_C0_blade_pointConstraint10.cpim"; +connectAttr "spine_C0_blade.rp" "spine_C0_blade_pointConstraint10.crp"; +connectAttr "spine_C0_blade.rpt" "spine_C0_blade_pointConstraint10.crt"; +connectAttr "spine_C0_root.t" "spine_C0_blade_pointConstraint10.tg[0].tt"; +connectAttr "spine_C0_root.rp" "spine_C0_blade_pointConstraint10.tg[0].trp"; +connectAttr "spine_C0_root.rpt" "spine_C0_blade_pointConstraint10.tg[0].trt"; +connectAttr "spine_C0_root.pm" "spine_C0_blade_pointConstraint10.tg[0].tpm"; +connectAttr "spine_C0_blade_pointConstraint10.w0" "spine_C0_blade_pointConstraint10.tg[0].tw" + ; +connectAttr "mgear_curveCns451.og[0]" "spine_C0_crvShape.cr"; +connectAttr "tweak599.pl[0].cp[0]" "spine_C0_crvShape.twl"; +connectAttr "mgear_curveCns451GroupId.id" "spine_C0_crvShape.iog.og[0].gid"; +connectAttr "mgear_curveCns451Set.mwc" "spine_C0_crvShape.iog.og[0].gco"; +connectAttr "groupId8767.id" "spine_C0_crvShape.iog.og[1].gid"; +connectAttr "tweakSet599.mwc" "spine_C0_crvShape.iog.og[1].gco"; +connectAttr "leg_L0_root_st_profile.o" "leg_L0_root.st_profile"; +connectAttr "leg_L0_root_sq_profile.o" "leg_L0_root.sq_profile"; +connectAttr "mgear_curveCns478.og[0]" "foot_L0_crvShape.cr"; +connectAttr "tweak626.pl[0].cp[0]" "foot_L0_crvShape.twl"; +connectAttr "mgear_curveCns478GroupId.id" "foot_L0_crvShape.iog.og[0].gid"; +connectAttr "mgear_curveCns478Set.mwc" "foot_L0_crvShape.iog.og[0].gco"; +connectAttr "groupId8821.id" "foot_L0_crvShape.iog.og[1].gid"; +connectAttr "tweakSet626.mwc" "foot_L0_crvShape.iog.og[1].gco"; +connectAttr "mgear_curveCns479.og[0]" "foot_L0_Shape1.cr"; +connectAttr "tweak627.pl[0].cp[0]" "foot_L0_Shape1.twl"; +connectAttr "mgear_curveCns479GroupId.id" "foot_L0_Shape1.iog.og[0].gid"; +connectAttr "mgear_curveCns479Set.mwc" "foot_L0_Shape1.iog.og[0].gco"; +connectAttr "groupId8823.id" "foot_L0_Shape1.iog.og[1].gid"; +connectAttr "tweakSet627.mwc" "foot_L0_Shape1.iog.og[1].gco"; +connectAttr "mgear_curveCns477.og[0]" "leg_L0_crvShape.cr"; +connectAttr "tweak625.pl[0].cp[0]" "leg_L0_crvShape.twl"; +connectAttr "mgear_curveCns477GroupId.id" "leg_L0_crvShape.iog.og[0].gid"; +connectAttr "mgear_curveCns477Set.mwc" "leg_L0_crvShape.iog.og[0].gco"; +connectAttr "groupId8819.id" "leg_L0_crvShape.iog.og[1].gid"; +connectAttr "tweakSet625.mwc" "leg_L0_crvShape.iog.og[1].gco"; +connectAttr "leg_R0_root_st_profile1.o" "leg_R0_root.st_profile"; +connectAttr "leg_R0_root_sq_profile1.o" "leg_R0_root.sq_profile"; +connectAttr "mgear_curveCns481.og[0]" "foot_R0_crvShape.cr"; +connectAttr "tweak629.pl[0].cp[0]" "foot_R0_crvShape.twl"; +connectAttr "mgear_curveCns481GroupId.id" "foot_R0_crvShape.iog.og[0].gid"; +connectAttr "mgear_curveCns481Set.mwc" "foot_R0_crvShape.iog.og[0].gco"; +connectAttr "groupId8827.id" "foot_R0_crvShape.iog.og[1].gid"; +connectAttr "tweakSet629.mwc" "foot_R0_crvShape.iog.og[1].gco"; +connectAttr "mgear_curveCns482.og[0]" "foot_R0_Shape1.cr"; +connectAttr "tweak630.pl[0].cp[0]" "foot_R0_Shape1.twl"; +connectAttr "mgear_curveCns482GroupId.id" "foot_R0_Shape1.iog.og[0].gid"; +connectAttr "mgear_curveCns482Set.mwc" "foot_R0_Shape1.iog.og[0].gco"; +connectAttr "groupId8829.id" "foot_R0_Shape1.iog.og[1].gid"; +connectAttr "tweakSet630.mwc" "foot_R0_Shape1.iog.og[1].gco"; +connectAttr "mgear_curveCns480.og[0]" "leg_R0_crvShape.cr"; +connectAttr "tweak628.pl[0].cp[0]" "leg_R0_crvShape.twl"; +connectAttr "mgear_curveCns480GroupId.id" "leg_R0_crvShape.iog.og[0].gid"; +connectAttr "mgear_curveCns480Set.mwc" "leg_R0_crvShape.iog.og[0].gco"; +connectAttr "groupId8825.id" "leg_R0_crvShape.iog.og[1].gid"; +connectAttr "tweakSet628.mwc" "leg_R0_crvShape.iog.og[1].gco"; +relationship "link" ":lightLinker1" ":initialShadingGroup.message" ":defaultLightSet.message"; +relationship "link" ":lightLinker1" ":initialParticleSE.message" ":defaultLightSet.message"; +relationship "shadowLink" ":lightLinker1" ":initialShadingGroup.message" ":defaultLightSet.message"; +relationship "shadowLink" ":lightLinker1" ":initialParticleSE.message" ":defaultLightSet.message"; +connectAttr "layerManager.dli[0]" "defaultLayer.id"; +connectAttr "renderLayerManager.rlmi[0]" "defaultRenderLayer.rlid"; +connectAttr "spine_C0_blade.bladeRollOffset" "unitConversion148.i"; +connectAttr "mgear_curveCns451GroupParts.og" "mgear_curveCns451.ip[0].ig"; +connectAttr "mgear_curveCns451GroupId.id" "mgear_curveCns451.ip[0].gi"; +connectAttr "spine_C0_root.wm" "mgear_curveCns451.inputs[0]"; +connectAttr "spine_C0_eff.wm" "mgear_curveCns451.inputs[1]"; +connectAttr "groupParts1198.og" "tweak599.ip[0].ig"; +connectAttr "groupId8767.id" "tweak599.ip[0].gi"; +connectAttr "mgear_curveCns451GroupId.msg" "mgear_curveCns451Set.gn" -na; +connectAttr "spine_C0_crvShape.iog.og[0]" "mgear_curveCns451Set.dsm" -na; +connectAttr "mgear_curveCns451.msg" "mgear_curveCns451Set.ub[0]"; +connectAttr "tweak599.og[0]" "mgear_curveCns451GroupParts.ig"; +connectAttr "mgear_curveCns451GroupId.id" "mgear_curveCns451GroupParts.gi"; +connectAttr "groupId8767.msg" "tweakSet599.gn" -na; +connectAttr "spine_C0_crvShape.iog.og[1]" "tweakSet599.dsm" -na; +connectAttr "tweak599.msg" "tweakSet599.ub[0]"; +connectAttr "spine_C0_crvShapeOrig.ws" "groupParts1198.ig"; +connectAttr "groupId8767.id" "groupParts1198.gi"; +connectAttr "shoulder_L0_blade.bladeRollOffset" "unitConversion149.i"; +connectAttr "mgear_curveCns452GroupParts.og" "mgear_curveCns452.ip[0].ig"; +connectAttr "mgear_curveCns452GroupId.id" "mgear_curveCns452.ip[0].gi"; +connectAttr "shoulder_L0_root.wm" "mgear_curveCns452.inputs[0]"; +connectAttr "shoulder_L0_tip.wm" "mgear_curveCns452.inputs[1]"; +connectAttr "groupParts1200.og" "tweak600.ip[0].ig"; +connectAttr "groupId8769.id" "tweak600.ip[0].gi"; +connectAttr "mgear_curveCns452GroupId.msg" "mgear_curveCns452Set.gn" -na; +connectAttr "shoulder_L0_crvShape.iog.og[0]" "mgear_curveCns452Set.dsm" -na; +connectAttr "mgear_curveCns452.msg" "mgear_curveCns452Set.ub[0]"; +connectAttr "tweak600.og[0]" "mgear_curveCns452GroupParts.ig"; +connectAttr "mgear_curveCns452GroupId.id" "mgear_curveCns452GroupParts.gi"; +connectAttr "groupId8769.msg" "tweakSet600.gn" -na; +connectAttr "shoulder_L0_crvShape.iog.og[1]" "tweakSet600.dsm" -na; +connectAttr "tweak600.msg" "tweakSet600.ub[0]"; +connectAttr "shoulder_L0_crvShapeOrig.ws" "groupParts1200.ig"; +connectAttr "groupId8769.id" "groupParts1200.gi"; +connectAttr "mgear_curveCns453GroupParts.og" "mgear_curveCns453.ip[0].ig"; +connectAttr "mgear_curveCns453GroupId.id" "mgear_curveCns453.ip[0].gi"; +connectAttr "arm_L0_root.wm" "mgear_curveCns453.inputs[0]"; +connectAttr "arm_L0_elbow.wm" "mgear_curveCns453.inputs[1]"; +connectAttr "arm_L0_wrist.wm" "mgear_curveCns453.inputs[2]"; +connectAttr "arm_L0_eff.wm" "mgear_curveCns453.inputs[3]"; +connectAttr "groupParts1202.og" "tweak601.ip[0].ig"; +connectAttr "groupId8771.id" "tweak601.ip[0].gi"; +connectAttr "mgear_curveCns453GroupId.msg" "mgear_curveCns453Set.gn" -na; +connectAttr "arm_L0_crvShape.iog.og[0]" "mgear_curveCns453Set.dsm" -na; +connectAttr "mgear_curveCns453.msg" "mgear_curveCns453Set.ub[0]"; +connectAttr "tweak601.og[0]" "mgear_curveCns453GroupParts.ig"; +connectAttr "mgear_curveCns453GroupId.id" "mgear_curveCns453GroupParts.gi"; +connectAttr "groupId8771.msg" "tweakSet601.gn" -na; +connectAttr "arm_L0_crvShape.iog.og[1]" "tweakSet601.dsm" -na; +connectAttr "tweak601.msg" "tweakSet601.ub[0]"; +connectAttr "arm_L0_crvShapeOrig.ws" "groupParts1202.ig"; +connectAttr "groupId8771.id" "groupParts1202.gi"; +connectAttr "meta_L0_blade.bladeRollOffset" "unitConversion150.i"; +connectAttr "mgear_curveCns454GroupParts.og" "mgear_curveCns454.ip[0].ig"; +connectAttr "mgear_curveCns454GroupId.id" "mgear_curveCns454.ip[0].gi"; +connectAttr "meta_L0_root.wm" "mgear_curveCns454.inputs[0]"; +connectAttr "meta_L0_0_loc.wm" "mgear_curveCns454.inputs[1]"; +connectAttr "meta_L0_1_loc.wm" "mgear_curveCns454.inputs[2]"; +connectAttr "meta_L0_2_loc.wm" "mgear_curveCns454.inputs[3]"; +connectAttr "groupParts1204.og" "tweak602.ip[0].ig"; +connectAttr "groupId8773.id" "tweak602.ip[0].gi"; +connectAttr "mgear_curveCns454GroupId.msg" "mgear_curveCns454Set.gn" -na; +connectAttr "meta_L0_crvShape.iog.og[0]" "mgear_curveCns454Set.dsm" -na; +connectAttr "mgear_curveCns454.msg" "mgear_curveCns454Set.ub[0]"; +connectAttr "tweak602.og[0]" "mgear_curveCns454GroupParts.ig"; +connectAttr "mgear_curveCns454GroupId.id" "mgear_curveCns454GroupParts.gi"; +connectAttr "groupId8773.msg" "tweakSet602.gn" -na; +connectAttr "meta_L0_crvShape.iog.og[1]" "tweakSet602.dsm" -na; +connectAttr "tweak602.msg" "tweakSet602.ub[0]"; +connectAttr "meta_L0_crvShapeOrig.ws" "groupParts1204.ig"; +connectAttr "groupId8773.id" "groupParts1204.gi"; +connectAttr "finger_L3_blade.bladeRollOffset" "unitConversion151.i"; +connectAttr "mgear_curveCns455GroupParts.og" "mgear_curveCns455.ip[0].ig"; +connectAttr "mgear_curveCns455GroupId.id" "mgear_curveCns455.ip[0].gi"; +connectAttr "finger_L3_root.wm" "mgear_curveCns455.inputs[0]"; +connectAttr "finger_L3_0_loc.wm" "mgear_curveCns455.inputs[1]"; +connectAttr "finger_L3_1_loc.wm" "mgear_curveCns455.inputs[2]"; +connectAttr "finger_L3_2_loc.wm" "mgear_curveCns455.inputs[3]"; +connectAttr "groupParts1206.og" "tweak603.ip[0].ig"; +connectAttr "groupId8775.id" "tweak603.ip[0].gi"; +connectAttr "mgear_curveCns455GroupId.msg" "mgear_curveCns455Set.gn" -na; +connectAttr "finger_L3_crvShape.iog.og[0]" "mgear_curveCns455Set.dsm" -na; +connectAttr "mgear_curveCns455.msg" "mgear_curveCns455Set.ub[0]"; +connectAttr "tweak603.og[0]" "mgear_curveCns455GroupParts.ig"; +connectAttr "mgear_curveCns455GroupId.id" "mgear_curveCns455GroupParts.gi"; +connectAttr "groupId8775.msg" "tweakSet603.gn" -na; +connectAttr "finger_L3_crvShape.iog.og[1]" "tweakSet603.dsm" -na; +connectAttr "tweak603.msg" "tweakSet603.ub[0]"; +connectAttr "finger_L3_crvShapeOrig.ws" "groupParts1206.ig"; +connectAttr "groupId8775.id" "groupParts1206.gi"; +connectAttr "finger_L2_blade.bladeRollOffset" "unitConversion152.i"; +connectAttr "mgear_curveCns456GroupParts.og" "mgear_curveCns456.ip[0].ig"; +connectAttr "mgear_curveCns456GroupId.id" "mgear_curveCns456.ip[0].gi"; +connectAttr "finger_L2_root.wm" "mgear_curveCns456.inputs[0]"; +connectAttr "finger_L2_0_loc.wm" "mgear_curveCns456.inputs[1]"; +connectAttr "finger_L2_1_loc.wm" "mgear_curveCns456.inputs[2]"; +connectAttr "finger_L2_2_loc.wm" "mgear_curveCns456.inputs[3]"; +connectAttr "groupParts1208.og" "tweak604.ip[0].ig"; +connectAttr "groupId8777.id" "tweak604.ip[0].gi"; +connectAttr "mgear_curveCns456GroupId.msg" "mgear_curveCns456Set.gn" -na; +connectAttr "finger_L2_crvShape.iog.og[0]" "mgear_curveCns456Set.dsm" -na; +connectAttr "mgear_curveCns456.msg" "mgear_curveCns456Set.ub[0]"; +connectAttr "tweak604.og[0]" "mgear_curveCns456GroupParts.ig"; +connectAttr "mgear_curveCns456GroupId.id" "mgear_curveCns456GroupParts.gi"; +connectAttr "groupId8777.msg" "tweakSet604.gn" -na; +connectAttr "finger_L2_crvShape.iog.og[1]" "tweakSet604.dsm" -na; +connectAttr "tweak604.msg" "tweakSet604.ub[0]"; +connectAttr "finger_L2_crvShapeOrig.ws" "groupParts1208.ig"; +connectAttr "groupId8777.id" "groupParts1208.gi"; +connectAttr "finger_L1_blade.bladeRollOffset" "unitConversion153.i"; +connectAttr "mgear_curveCns457GroupParts.og" "mgear_curveCns457.ip[0].ig"; +connectAttr "mgear_curveCns457GroupId.id" "mgear_curveCns457.ip[0].gi"; +connectAttr "finger_L1_root.wm" "mgear_curveCns457.inputs[0]"; +connectAttr "finger_L1_0_loc.wm" "mgear_curveCns457.inputs[1]"; +connectAttr "finger_L1_1_loc.wm" "mgear_curveCns457.inputs[2]"; +connectAttr "finger_L1_2_loc.wm" "mgear_curveCns457.inputs[3]"; +connectAttr "groupParts1210.og" "tweak605.ip[0].ig"; +connectAttr "groupId8779.id" "tweak605.ip[0].gi"; +connectAttr "mgear_curveCns457GroupId.msg" "mgear_curveCns457Set.gn" -na; +connectAttr "finger_L1_crvShape.iog.og[0]" "mgear_curveCns457Set.dsm" -na; +connectAttr "mgear_curveCns457.msg" "mgear_curveCns457Set.ub[0]"; +connectAttr "tweak605.og[0]" "mgear_curveCns457GroupParts.ig"; +connectAttr "mgear_curveCns457GroupId.id" "mgear_curveCns457GroupParts.gi"; +connectAttr "groupId8779.msg" "tweakSet605.gn" -na; +connectAttr "finger_L1_crvShape.iog.og[1]" "tweakSet605.dsm" -na; +connectAttr "tweak605.msg" "tweakSet605.ub[0]"; +connectAttr "finger_L1_crvShapeOrig.ws" "groupParts1210.ig"; +connectAttr "groupId8779.id" "groupParts1210.gi"; +connectAttr "finger_L0_blade.bladeRollOffset" "unitConversion154.i"; +connectAttr "mgear_curveCns458GroupParts.og" "mgear_curveCns458.ip[0].ig"; +connectAttr "mgear_curveCns458GroupId.id" "mgear_curveCns458.ip[0].gi"; +connectAttr "finger_L0_root.wm" "mgear_curveCns458.inputs[0]"; +connectAttr "finger_L0_0_loc.wm" "mgear_curveCns458.inputs[1]"; +connectAttr "finger_L0_1_loc.wm" "mgear_curveCns458.inputs[2]"; +connectAttr "finger_L0_2_loc.wm" "mgear_curveCns458.inputs[3]"; +connectAttr "groupParts1212.og" "tweak606.ip[0].ig"; +connectAttr "groupId8781.id" "tweak606.ip[0].gi"; +connectAttr "mgear_curveCns458GroupId.msg" "mgear_curveCns458Set.gn" -na; +connectAttr "finger_L0_crvShape.iog.og[0]" "mgear_curveCns458Set.dsm" -na; +connectAttr "mgear_curveCns458.msg" "mgear_curveCns458Set.ub[0]"; +connectAttr "tweak606.og[0]" "mgear_curveCns458GroupParts.ig"; +connectAttr "mgear_curveCns458GroupId.id" "mgear_curveCns458GroupParts.gi"; +connectAttr "groupId8781.msg" "tweakSet606.gn" -na; +connectAttr "finger_L0_crvShape.iog.og[1]" "tweakSet606.dsm" -na; +connectAttr "tweak606.msg" "tweakSet606.ub[0]"; +connectAttr "finger_L0_crvShapeOrig.ws" "groupParts1212.ig"; +connectAttr "groupId8781.id" "groupParts1212.gi"; +connectAttr "thumb_L0_blade.bladeRollOffset" "unitConversion155.i"; +connectAttr "mgear_curveCns459GroupParts.og" "mgear_curveCns459.ip[0].ig"; +connectAttr "mgear_curveCns459GroupId.id" "mgear_curveCns459.ip[0].gi"; +connectAttr "thumb_L0_root.wm" "mgear_curveCns459.inputs[0]"; +connectAttr "thumb_L0_0_loc.wm" "mgear_curveCns459.inputs[1]"; +connectAttr "thumb_L0_1_loc.wm" "mgear_curveCns459.inputs[2]"; +connectAttr "thumb_L0_2_loc.wm" "mgear_curveCns459.inputs[3]"; +connectAttr "groupParts1214.og" "tweak607.ip[0].ig"; +connectAttr "groupId8783.id" "tweak607.ip[0].gi"; +connectAttr "mgear_curveCns459GroupId.msg" "mgear_curveCns459Set.gn" -na; +connectAttr "thumb_L0_crvShape.iog.og[0]" "mgear_curveCns459Set.dsm" -na; +connectAttr "mgear_curveCns459.msg" "mgear_curveCns459Set.ub[0]"; +connectAttr "tweak607.og[0]" "mgear_curveCns459GroupParts.ig"; +connectAttr "mgear_curveCns459GroupId.id" "mgear_curveCns459GroupParts.gi"; +connectAttr "groupId8783.msg" "tweakSet607.gn" -na; +connectAttr "thumb_L0_crvShape.iog.og[1]" "tweakSet607.dsm" -na; +connectAttr "tweak607.msg" "tweakSet607.ub[0]"; +connectAttr "thumb_L0_crvShapeOrig.ws" "groupParts1214.ig"; +connectAttr "groupId8783.id" "groupParts1214.gi"; +connectAttr "neck_C0_blade.bladeRollOffset" "unitConversion156.i"; +connectAttr "mgear_curveCns460GroupParts.og" "mgear_curveCns460.ip[0].ig"; +connectAttr "mgear_curveCns460GroupId.id" "mgear_curveCns460.ip[0].gi"; +connectAttr "neck_C0_root.wm" "mgear_curveCns460.inputs[0]"; +connectAttr "neck_C0_tan0.wm" "mgear_curveCns460.inputs[1]"; +connectAttr "neck_C0_tan1.wm" "mgear_curveCns460.inputs[2]"; +connectAttr "neck_C0_neck.wm" "mgear_curveCns460.inputs[3]"; +connectAttr "groupParts1216.og" "tweak608.ip[0].ig"; +connectAttr "groupId8785.id" "tweak608.ip[0].gi"; +connectAttr "mgear_curveCns460GroupId.msg" "mgear_curveCns460Set.gn" -na; +connectAttr "neck_C0_neck_crvShape.iog.og[0]" "mgear_curveCns460Set.dsm" -na; +connectAttr "mgear_curveCns460.msg" "mgear_curveCns460Set.ub[0]"; +connectAttr "tweak608.og[0]" "mgear_curveCns460GroupParts.ig"; +connectAttr "mgear_curveCns460GroupId.id" "mgear_curveCns460GroupParts.gi"; +connectAttr "groupId8785.msg" "tweakSet608.gn" -na; +connectAttr "neck_C0_neck_crvShape.iog.og[1]" "tweakSet608.dsm" -na; +connectAttr "tweak608.msg" "tweakSet608.ub[0]"; +connectAttr "neck_C0_neck_crvShapeOrig.ws" "groupParts1216.ig"; +connectAttr "groupId8785.id" "groupParts1216.gi"; +connectAttr "mgear_curveCns461GroupParts.og" "mgear_curveCns461.ip[0].ig"; +connectAttr "mgear_curveCns461GroupId.id" "mgear_curveCns461.ip[0].gi"; +connectAttr "neck_C0_neck.wm" "mgear_curveCns461.inputs[0]"; +connectAttr "neck_C0_head.wm" "mgear_curveCns461.inputs[1]"; +connectAttr "neck_C0_eff.wm" "mgear_curveCns461.inputs[2]"; +connectAttr "groupParts1218.og" "tweak609.ip[0].ig"; +connectAttr "groupId8787.id" "tweak609.ip[0].gi"; +connectAttr "mgear_curveCns461GroupId.msg" "mgear_curveCns461Set.gn" -na; +connectAttr "neck_C0_head_crvShape.iog.og[0]" "mgear_curveCns461Set.dsm" -na; +connectAttr "mgear_curveCns461.msg" "mgear_curveCns461Set.ub[0]"; +connectAttr "tweak609.og[0]" "mgear_curveCns461GroupParts.ig"; +connectAttr "mgear_curveCns461GroupId.id" "mgear_curveCns461GroupParts.gi"; +connectAttr "groupId8787.msg" "tweakSet609.gn" -na; +connectAttr "neck_C0_head_crvShape.iog.og[1]" "tweakSet609.dsm" -na; +connectAttr "tweak609.msg" "tweakSet609.ub[0]"; +connectAttr "neck_C0_head_crvShapeOrig.ws" "groupParts1218.ig"; +connectAttr "groupId8787.id" "groupParts1218.gi"; +connectAttr "mgear_curveCns462GroupParts.og" "mgear_curveCns462.ip[0].ig"; +connectAttr "mgear_curveCns462GroupId.id" "mgear_curveCns462.ip[0].gi"; +connectAttr "mouth_C0_root.wm" "mgear_curveCns462.inputs[0]"; +connectAttr "mouth_C0_rotcenter.wm" "mgear_curveCns462.inputs[1]"; +connectAttr "groupParts1220.og" "tweak610.ip[0].ig"; +connectAttr "groupId8789.id" "tweak610.ip[0].gi"; +connectAttr "mgear_curveCns462GroupId.msg" "mgear_curveCns462Set.gn" -na; +connectAttr "|guide|global_C0_root|local_C0_root|body_C0_root|spine_C0_root|spine_C0_eff|neck_C0_root|neck_C0_neck|neck_C0_head|mouth_C0_root|mouth_C0_crv|mouth_C0_crvShape.iog.og[0]" "mgear_curveCns462Set.dsm" -na; -connectAttr "mgear_curveCns423.msg" "mgear_curveCns423Set.ub[0]"; -connectAttr "tweak571.og[0]" "mgear_curveCns423GroupParts.ig"; -connectAttr "mgear_curveCns423GroupId.id" "mgear_curveCns423GroupParts.gi"; -connectAttr "groupParts1142.og" "tweak571.ip[0].ig"; -connectAttr "groupId8711.id" "tweak571.ip[0].gi"; -connectAttr "groupId8711.msg" "tweakSet571.gn" -na; -connectAttr "|guide|global_C0_root|local_C0_root|body_C0_root|spine_C0_root|spine_C0_eff|neck_C0_root|neck_C0_neck|neck_C0_head|mouth_C0_root|mouth_C0_rotcenter|mouth_C0_lipup|mouth_C0_crv|mouth_C0_crvShape.iog.og[1]" "tweakSet571.dsm" +connectAttr "mgear_curveCns462.msg" "mgear_curveCns462Set.ub[0]"; +connectAttr "tweak610.og[0]" "mgear_curveCns462GroupParts.ig"; +connectAttr "mgear_curveCns462GroupId.id" "mgear_curveCns462GroupParts.gi"; +connectAttr "groupId8789.msg" "tweakSet610.gn" -na; +connectAttr "|guide|global_C0_root|local_C0_root|body_C0_root|spine_C0_root|spine_C0_eff|neck_C0_root|neck_C0_neck|neck_C0_head|mouth_C0_root|mouth_C0_crv|mouth_C0_crvShape.iog.og[1]" "tweakSet610.dsm" -na; -connectAttr "tweak571.msg" "tweakSet571.ub[0]"; -connectAttr "|guide|global_C0_root|local_C0_root|body_C0_root|spine_C0_root|spine_C0_eff|neck_C0_root|neck_C0_neck|neck_C0_head|mouth_C0_root|mouth_C0_rotcenter|mouth_C0_lipup|mouth_C0_crv|mouth_C0_crvShapeOrig.ws" "groupParts1142.ig" - ; -connectAttr "groupId8711.id" "groupParts1142.gi"; -connectAttr "mgear_curveCns424GroupParts.og" "mgear_curveCns424.ip[0].ig"; -connectAttr "mgear_curveCns424GroupId.id" "mgear_curveCns424.ip[0].gi"; -connectAttr "mouth_C0_liplow.wm" "mgear_curveCns424.inputs[0]"; -connectAttr "mouth_C0_rotcenter.wm" "mgear_curveCns424.inputs[1]"; -connectAttr "mgear_curveCns424GroupId.msg" "mgear_curveCns424Set.gn" -na; -connectAttr "|guide|global_C0_root|local_C0_root|body_C0_root|spine_C0_root|spine_C0_eff|neck_C0_root|neck_C0_neck|neck_C0_head|mouth_C0_root|mouth_C0_rotcenter|mouth_C0_liplow|mouth_C0_crv|mouth_C0_crvShape.iog.og[0]" "mgear_curveCns424Set.dsm" +connectAttr "tweak610.msg" "tweakSet610.ub[0]"; +connectAttr "|guide|global_C0_root|local_C0_root|body_C0_root|spine_C0_root|spine_C0_eff|neck_C0_root|neck_C0_neck|neck_C0_head|mouth_C0_root|mouth_C0_crv|mouth_C0_crvShapeOrig.ws" "groupParts1220.ig" + ; +connectAttr "groupId8789.id" "groupParts1220.gi"; +connectAttr "mgear_curveCns463GroupParts.og" "mgear_curveCns463.ip[0].ig"; +connectAttr "mgear_curveCns463GroupId.id" "mgear_curveCns463.ip[0].gi"; +connectAttr "mouth_C0_lipup.wm" "mgear_curveCns463.inputs[0]"; +connectAttr "mouth_C0_rotcenter.wm" "mgear_curveCns463.inputs[1]"; +connectAttr "groupParts1222.og" "tweak611.ip[0].ig"; +connectAttr "groupId8791.id" "tweak611.ip[0].gi"; +connectAttr "mgear_curveCns463GroupId.msg" "mgear_curveCns463Set.gn" -na; +connectAttr "|guide|global_C0_root|local_C0_root|body_C0_root|spine_C0_root|spine_C0_eff|neck_C0_root|neck_C0_neck|neck_C0_head|mouth_C0_root|mouth_C0_rotcenter|mouth_C0_lipup|mouth_C0_crv|mouth_C0_crvShape.iog.og[0]" "mgear_curveCns463Set.dsm" -na; -connectAttr "mgear_curveCns424.msg" "mgear_curveCns424Set.ub[0]"; -connectAttr "tweak572.og[0]" "mgear_curveCns424GroupParts.ig"; -connectAttr "mgear_curveCns424GroupId.id" "mgear_curveCns424GroupParts.gi"; -connectAttr "groupParts1144.og" "tweak572.ip[0].ig"; -connectAttr "groupId8713.id" "tweak572.ip[0].gi"; -connectAttr "groupId8713.msg" "tweakSet572.gn" -na; -connectAttr "|guide|global_C0_root|local_C0_root|body_C0_root|spine_C0_root|spine_C0_eff|neck_C0_root|neck_C0_neck|neck_C0_head|mouth_C0_root|mouth_C0_rotcenter|mouth_C0_liplow|mouth_C0_crv|mouth_C0_crvShape.iog.og[1]" "tweakSet572.dsm" +connectAttr "mgear_curveCns463.msg" "mgear_curveCns463Set.ub[0]"; +connectAttr "tweak611.og[0]" "mgear_curveCns463GroupParts.ig"; +connectAttr "mgear_curveCns463GroupId.id" "mgear_curveCns463GroupParts.gi"; +connectAttr "groupId8791.msg" "tweakSet611.gn" -na; +connectAttr "|guide|global_C0_root|local_C0_root|body_C0_root|spine_C0_root|spine_C0_eff|neck_C0_root|neck_C0_neck|neck_C0_head|mouth_C0_root|mouth_C0_rotcenter|mouth_C0_lipup|mouth_C0_crv|mouth_C0_crvShape.iog.og[1]" "tweakSet611.dsm" -na; -connectAttr "tweak572.msg" "tweakSet572.ub[0]"; -connectAttr "|guide|global_C0_root|local_C0_root|body_C0_root|spine_C0_root|spine_C0_eff|neck_C0_root|neck_C0_neck|neck_C0_head|mouth_C0_root|mouth_C0_rotcenter|mouth_C0_liplow|mouth_C0_crv|mouth_C0_crvShapeOrig.ws" "groupParts1144.ig" - ; -connectAttr "groupId8713.id" "groupParts1144.gi"; -connectAttr "tongue_C0_blade.bladeRollOffset" "unitConversion140.i"; -connectAttr "mgear_curveCns426GroupParts.og" "mgear_curveCns426.ip[0].ig"; -connectAttr "mgear_curveCns426GroupId.id" "mgear_curveCns426.ip[0].gi"; -connectAttr "tongue_C0_root.wm" "mgear_curveCns426.inputs[0]"; -connectAttr "tongue_C0_0_loc.wm" "mgear_curveCns426.inputs[1]"; -connectAttr "tongue_C0_1_loc.wm" "mgear_curveCns426.inputs[2]"; -connectAttr "tongue_C0_2_loc.wm" "mgear_curveCns426.inputs[3]"; -connectAttr "tongue_C0_3_loc.wm" "mgear_curveCns426.inputs[4]"; -connectAttr "mgear_curveCns426GroupId.msg" "mgear_curveCns426Set.gn" -na; -connectAttr "tongue_C0_crvShape.iog.og[0]" "mgear_curveCns426Set.dsm" -na; -connectAttr "mgear_curveCns426.msg" "mgear_curveCns426Set.ub[0]"; -connectAttr "tweak574.og[0]" "mgear_curveCns426GroupParts.ig"; -connectAttr "mgear_curveCns426GroupId.id" "mgear_curveCns426GroupParts.gi"; -connectAttr "groupParts1148.og" "tweak574.ip[0].ig"; -connectAttr "groupId8717.id" "tweak574.ip[0].gi"; -connectAttr "groupId8717.msg" "tweakSet574.gn" -na; -connectAttr "tongue_C0_crvShape.iog.og[1]" "tweakSet574.dsm" -na; -connectAttr "tweak574.msg" "tweakSet574.ub[0]"; -connectAttr "tongue_C0_crvShapeOrig.ws" "groupParts1148.ig"; -connectAttr "groupId8717.id" "groupParts1148.gi"; -connectAttr "mgear_curveCns422GroupParts.og" "mgear_curveCns422.ip[0].ig"; -connectAttr "mgear_curveCns422GroupId.id" "mgear_curveCns422.ip[0].gi"; -connectAttr "mouth_C0_root.wm" "mgear_curveCns422.inputs[0]"; -connectAttr "mouth_C0_rotcenter.wm" "mgear_curveCns422.inputs[1]"; -connectAttr "mgear_curveCns422GroupId.msg" "mgear_curveCns422Set.gn" -na; -connectAttr "|guide|global_C0_root|local_C0_root|body_C0_root|spine_C0_root|spine_C0_eff|neck_C0_root|neck_C0_neck|neck_C0_head|mouth_C0_root|mouth_C0_crv|mouth_C0_crvShape.iog.og[0]" "mgear_curveCns422Set.dsm" +connectAttr "tweak611.msg" "tweakSet611.ub[0]"; +connectAttr "|guide|global_C0_root|local_C0_root|body_C0_root|spine_C0_root|spine_C0_eff|neck_C0_root|neck_C0_neck|neck_C0_head|mouth_C0_root|mouth_C0_rotcenter|mouth_C0_lipup|mouth_C0_crv|mouth_C0_crvShapeOrig.ws" "groupParts1222.ig" + ; +connectAttr "groupId8791.id" "groupParts1222.gi"; +connectAttr "mgear_curveCns464GroupParts.og" "mgear_curveCns464.ip[0].ig"; +connectAttr "mgear_curveCns464GroupId.id" "mgear_curveCns464.ip[0].gi"; +connectAttr "mouth_C0_liplow.wm" "mgear_curveCns464.inputs[0]"; +connectAttr "mouth_C0_rotcenter.wm" "mgear_curveCns464.inputs[1]"; +connectAttr "groupParts1224.og" "tweak612.ip[0].ig"; +connectAttr "groupId8793.id" "tweak612.ip[0].gi"; +connectAttr "mgear_curveCns464GroupId.msg" "mgear_curveCns464Set.gn" -na; +connectAttr "|guide|global_C0_root|local_C0_root|body_C0_root|spine_C0_root|spine_C0_eff|neck_C0_root|neck_C0_neck|neck_C0_head|mouth_C0_root|mouth_C0_rotcenter|mouth_C0_liplow|mouth_C0_crv|mouth_C0_crvShape.iog.og[0]" "mgear_curveCns464Set.dsm" -na; -connectAttr "mgear_curveCns422.msg" "mgear_curveCns422Set.ub[0]"; -connectAttr "tweak570.og[0]" "mgear_curveCns422GroupParts.ig"; -connectAttr "mgear_curveCns422GroupId.id" "mgear_curveCns422GroupParts.gi"; -connectAttr "groupParts1140.og" "tweak570.ip[0].ig"; -connectAttr "groupId8709.id" "tweak570.ip[0].gi"; -connectAttr "groupId8709.msg" "tweakSet570.gn" -na; -connectAttr "|guide|global_C0_root|local_C0_root|body_C0_root|spine_C0_root|spine_C0_eff|neck_C0_root|neck_C0_neck|neck_C0_head|mouth_C0_root|mouth_C0_crv|mouth_C0_crvShape.iog.og[1]" "tweakSet570.dsm" +connectAttr "mgear_curveCns464.msg" "mgear_curveCns464Set.ub[0]"; +connectAttr "tweak612.og[0]" "mgear_curveCns464GroupParts.ig"; +connectAttr "mgear_curveCns464GroupId.id" "mgear_curveCns464GroupParts.gi"; +connectAttr "groupId8793.msg" "tweakSet612.gn" -na; +connectAttr "|guide|global_C0_root|local_C0_root|body_C0_root|spine_C0_root|spine_C0_eff|neck_C0_root|neck_C0_neck|neck_C0_head|mouth_C0_root|mouth_C0_rotcenter|mouth_C0_liplow|mouth_C0_crv|mouth_C0_crvShape.iog.og[1]" "tweakSet612.dsm" -na; -connectAttr "tweak570.msg" "tweakSet570.ub[0]"; -connectAttr "|guide|global_C0_root|local_C0_root|body_C0_root|spine_C0_root|spine_C0_eff|neck_C0_root|neck_C0_neck|neck_C0_head|mouth_C0_root|mouth_C0_crv|mouth_C0_crvShapeOrig.ws" "groupParts1140.ig" - ; -connectAttr "groupId8709.id" "groupParts1140.gi"; -connectAttr "mgear_curveCns425GroupParts.og" "mgear_curveCns425.ip[0].ig"; -connectAttr "mgear_curveCns425GroupId.id" "mgear_curveCns425.ip[0].gi"; -connectAttr "mouth_C0_root.wm" "mgear_curveCns425.inputs[0]"; -connectAttr "mouth_C0_jaw.wm" "mgear_curveCns425.inputs[1]"; -connectAttr "mgear_curveCns425GroupId.msg" "mgear_curveCns425Set.gn" -na; -connectAttr "mouth_C0_crv9Shape.iog.og[0]" "mgear_curveCns425Set.dsm" -na; -connectAttr "mgear_curveCns425.msg" "mgear_curveCns425Set.ub[0]"; -connectAttr "tweak573.og[0]" "mgear_curveCns425GroupParts.ig"; -connectAttr "mgear_curveCns425GroupId.id" "mgear_curveCns425GroupParts.gi"; -connectAttr "groupParts1146.og" "tweak573.ip[0].ig"; -connectAttr "groupId8715.id" "tweak573.ip[0].gi"; -connectAttr "groupId8715.msg" "tweakSet573.gn" -na; -connectAttr "mouth_C0_crv9Shape.iog.og[1]" "tweakSet573.dsm" -na; -connectAttr "tweak573.msg" "tweakSet573.ub[0]"; -connectAttr "mouth_C0_crv9ShapeOrig.ws" "groupParts1146.ig"; -connectAttr "groupId8715.id" "groupParts1146.gi"; -connectAttr "mgear_curveCns427GroupParts.og" "mgear_curveCns427.ip[0].ig"; -connectAttr "mgear_curveCns427GroupId.id" "mgear_curveCns427.ip[0].gi"; -connectAttr "eye_R0_root.wm" "mgear_curveCns427.inputs[0]"; -connectAttr "eye_R0_look.wm" "mgear_curveCns427.inputs[1]"; -connectAttr "mgear_curveCns427GroupId.msg" "mgear_curveCns427Set.gn" -na; -connectAttr "eye_R0_crvShape.iog.og[0]" "mgear_curveCns427Set.dsm" -na; -connectAttr "mgear_curveCns427.msg" "mgear_curveCns427Set.ub[0]"; -connectAttr "tweak575.og[0]" "mgear_curveCns427GroupParts.ig"; -connectAttr "mgear_curveCns427GroupId.id" "mgear_curveCns427GroupParts.gi"; -connectAttr "groupParts1150.og" "tweak575.ip[0].ig"; -connectAttr "groupId8719.id" "tweak575.ip[0].gi"; -connectAttr "groupId8719.msg" "tweakSet575.gn" -na; -connectAttr "eye_R0_crvShape.iog.og[1]" "tweakSet575.dsm" -na; -connectAttr "tweak575.msg" "tweakSet575.ub[0]"; -connectAttr "eye_R0_crvShapeOrig.ws" "groupParts1150.ig"; -connectAttr "groupId8719.id" "groupParts1150.gi"; -connectAttr "mgear_curveCns428GroupParts.og" "mgear_curveCns428.ip[0].ig"; -connectAttr "mgear_curveCns428GroupId.id" "mgear_curveCns428.ip[0].gi"; -connectAttr "eye_L0_root.wm" "mgear_curveCns428.inputs[0]"; -connectAttr "eye_L0_look.wm" "mgear_curveCns428.inputs[1]"; -connectAttr "mgear_curveCns428GroupId.msg" "mgear_curveCns428Set.gn" -na; -connectAttr "eye_L0_crvShape.iog.og[0]" "mgear_curveCns428Set.dsm" -na; -connectAttr "mgear_curveCns428.msg" "mgear_curveCns428Set.ub[0]"; -connectAttr "tweak576.og[0]" "mgear_curveCns428GroupParts.ig"; -connectAttr "mgear_curveCns428GroupId.id" "mgear_curveCns428GroupParts.gi"; -connectAttr "groupParts1152.og" "tweak576.ip[0].ig"; -connectAttr "groupId8721.id" "tweak576.ip[0].gi"; -connectAttr "groupId8721.msg" "tweakSet576.gn" -na; -connectAttr "eye_L0_crvShape.iog.og[1]" "tweakSet576.dsm" -na; -connectAttr "tweak576.msg" "tweakSet576.ub[0]"; -connectAttr "eye_L0_crvShapeOrig.ws" "groupParts1152.ig"; -connectAttr "groupId8721.id" "groupParts1152.gi"; -connectAttr "mgear_curveCns421GroupParts.og" "mgear_curveCns421.ip[0].ig"; -connectAttr "mgear_curveCns421GroupId.id" "mgear_curveCns421.ip[0].gi"; -connectAttr "neck_C0_neck.wm" "mgear_curveCns421.inputs[0]"; -connectAttr "neck_C0_head.wm" "mgear_curveCns421.inputs[1]"; -connectAttr "neck_C0_eff.wm" "mgear_curveCns421.inputs[2]"; -connectAttr "mgear_curveCns421GroupId.msg" "mgear_curveCns421Set.gn" -na; -connectAttr "neck_C0_head_crvShape.iog.og[0]" "mgear_curveCns421Set.dsm" -na; -connectAttr "mgear_curveCns421.msg" "mgear_curveCns421Set.ub[0]"; -connectAttr "tweak569.og[0]" "mgear_curveCns421GroupParts.ig"; -connectAttr "mgear_curveCns421GroupId.id" "mgear_curveCns421GroupParts.gi"; -connectAttr "groupParts1138.og" "tweak569.ip[0].ig"; -connectAttr "groupId8707.id" "tweak569.ip[0].gi"; -connectAttr "groupId8707.msg" "tweakSet569.gn" -na; -connectAttr "neck_C0_head_crvShape.iog.og[1]" "tweakSet569.dsm" -na; -connectAttr "tweak569.msg" "tweakSet569.ub[0]"; -connectAttr "neck_C0_head_crvShapeOrig.ws" "groupParts1138.ig"; -connectAttr "groupId8707.id" "groupParts1138.gi"; -connectAttr "neck_C0_blade.bladeRollOffset" "unitConversion139.i"; -connectAttr "mgear_curveCns420GroupParts.og" "mgear_curveCns420.ip[0].ig"; -connectAttr "mgear_curveCns420GroupId.id" "mgear_curveCns420.ip[0].gi"; -connectAttr "neck_C0_root.wm" "mgear_curveCns420.inputs[0]"; -connectAttr "neck_C0_tan0.wm" "mgear_curveCns420.inputs[1]"; -connectAttr "neck_C0_tan1.wm" "mgear_curveCns420.inputs[2]"; -connectAttr "neck_C0_neck.wm" "mgear_curveCns420.inputs[3]"; -connectAttr "mgear_curveCns420GroupId.msg" "mgear_curveCns420Set.gn" -na; -connectAttr "neck_C0_neck_crvShape.iog.og[0]" "mgear_curveCns420Set.dsm" -na; -connectAttr "mgear_curveCns420.msg" "mgear_curveCns420Set.ub[0]"; -connectAttr "tweak568.og[0]" "mgear_curveCns420GroupParts.ig"; -connectAttr "mgear_curveCns420GroupId.id" "mgear_curveCns420GroupParts.gi"; -connectAttr "groupParts1136.og" "tweak568.ip[0].ig"; -connectAttr "groupId8705.id" "tweak568.ip[0].gi"; -connectAttr "groupId8705.msg" "tweakSet568.gn" -na; -connectAttr "neck_C0_neck_crvShape.iog.og[1]" "tweakSet568.dsm" -na; -connectAttr "tweak568.msg" "tweakSet568.ub[0]"; -connectAttr "neck_C0_neck_crvShapeOrig.ws" "groupParts1136.ig"; -connectAttr "groupId8705.id" "groupParts1136.gi"; -connectAttr "finger_R3_blade.bladeRollOffset" "unitConversion143.i"; -connectAttr "mgear_curveCns443GroupParts.og" "mgear_curveCns443.ip[0].ig"; -connectAttr "mgear_curveCns443GroupId.id" "mgear_curveCns443.ip[0].gi"; -connectAttr "finger_R3_root.wm" "mgear_curveCns443.inputs[0]"; -connectAttr "finger_R3_0_loc.wm" "mgear_curveCns443.inputs[1]"; -connectAttr "finger_R3_1_loc.wm" "mgear_curveCns443.inputs[2]"; -connectAttr "finger_R3_2_loc.wm" "mgear_curveCns443.inputs[3]"; -connectAttr "mgear_curveCns443GroupId.msg" "mgear_curveCns443Set.gn" -na; -connectAttr "finger_R3_crvShape.iog.og[0]" "mgear_curveCns443Set.dsm" -na; -connectAttr "mgear_curveCns443.msg" "mgear_curveCns443Set.ub[0]"; -connectAttr "tweak591.og[0]" "mgear_curveCns443GroupParts.ig"; -connectAttr "mgear_curveCns443GroupId.id" "mgear_curveCns443GroupParts.gi"; -connectAttr "groupParts1182.og" "tweak591.ip[0].ig"; -connectAttr "groupId8751.id" "tweak591.ip[0].gi"; -connectAttr "groupId8751.msg" "tweakSet591.gn" -na; -connectAttr "finger_R3_crvShape.iog.og[1]" "tweakSet591.dsm" -na; -connectAttr "tweak591.msg" "tweakSet591.ub[0]"; -connectAttr "finger_R3_crvShapeOrig.ws" "groupParts1182.ig"; -connectAttr "groupId8751.id" "groupParts1182.gi"; -connectAttr "finger_R2_blade.bladeRollOffset" "unitConversion144.i"; -connectAttr "mgear_curveCns444GroupParts.og" "mgear_curveCns444.ip[0].ig"; -connectAttr "mgear_curveCns444GroupId.id" "mgear_curveCns444.ip[0].gi"; -connectAttr "finger_R2_root.wm" "mgear_curveCns444.inputs[0]"; -connectAttr "finger_R2_0_loc.wm" "mgear_curveCns444.inputs[1]"; -connectAttr "finger_R2_1_loc.wm" "mgear_curveCns444.inputs[2]"; -connectAttr "finger_R2_2_loc.wm" "mgear_curveCns444.inputs[3]"; -connectAttr "mgear_curveCns444GroupId.msg" "mgear_curveCns444Set.gn" -na; -connectAttr "finger_R2_crvShape.iog.og[0]" "mgear_curveCns444Set.dsm" -na; -connectAttr "mgear_curveCns444.msg" "mgear_curveCns444Set.ub[0]"; -connectAttr "tweak592.og[0]" "mgear_curveCns444GroupParts.ig"; -connectAttr "mgear_curveCns444GroupId.id" "mgear_curveCns444GroupParts.gi"; -connectAttr "groupParts1184.og" "tweak592.ip[0].ig"; -connectAttr "groupId8753.id" "tweak592.ip[0].gi"; -connectAttr "groupId8753.msg" "tweakSet592.gn" -na; -connectAttr "finger_R2_crvShape.iog.og[1]" "tweakSet592.dsm" -na; -connectAttr "tweak592.msg" "tweakSet592.ub[0]"; -connectAttr "finger_R2_crvShapeOrig.ws" "groupParts1184.ig"; -connectAttr "groupId8753.id" "groupParts1184.gi"; -connectAttr "finger_R1_blade.bladeRollOffset" "unitConversion145.i"; -connectAttr "mgear_curveCns445GroupParts.og" "mgear_curveCns445.ip[0].ig"; -connectAttr "mgear_curveCns445GroupId.id" "mgear_curveCns445.ip[0].gi"; -connectAttr "finger_R1_root.wm" "mgear_curveCns445.inputs[0]"; -connectAttr "finger_R1_0_loc.wm" "mgear_curveCns445.inputs[1]"; -connectAttr "finger_R1_1_loc.wm" "mgear_curveCns445.inputs[2]"; -connectAttr "finger_R1_2_loc.wm" "mgear_curveCns445.inputs[3]"; -connectAttr "mgear_curveCns445GroupId.msg" "mgear_curveCns445Set.gn" -na; -connectAttr "finger_R1_crvShape.iog.og[0]" "mgear_curveCns445Set.dsm" -na; -connectAttr "mgear_curveCns445.msg" "mgear_curveCns445Set.ub[0]"; -connectAttr "tweak593.og[0]" "mgear_curveCns445GroupParts.ig"; -connectAttr "mgear_curveCns445GroupId.id" "mgear_curveCns445GroupParts.gi"; -connectAttr "groupParts1186.og" "tweak593.ip[0].ig"; -connectAttr "groupId8755.id" "tweak593.ip[0].gi"; -connectAttr "groupId8755.msg" "tweakSet593.gn" -na; -connectAttr "finger_R1_crvShape.iog.og[1]" "tweakSet593.dsm" -na; -connectAttr "tweak593.msg" "tweakSet593.ub[0]"; -connectAttr "finger_R1_crvShapeOrig.ws" "groupParts1186.ig"; -connectAttr "groupId8755.id" "groupParts1186.gi"; -connectAttr "meta_R0_blade.bladeRollOffset" "unitConversion142.i"; -connectAttr "mgear_curveCns442GroupParts.og" "mgear_curveCns442.ip[0].ig"; -connectAttr "mgear_curveCns442GroupId.id" "mgear_curveCns442.ip[0].gi"; -connectAttr "meta_R0_root.wm" "mgear_curveCns442.inputs[0]"; -connectAttr "meta_R0_0_loc.wm" "mgear_curveCns442.inputs[1]"; -connectAttr "meta_R0_1_loc.wm" "mgear_curveCns442.inputs[2]"; -connectAttr "meta_R0_2_loc.wm" "mgear_curveCns442.inputs[3]"; -connectAttr "mgear_curveCns442GroupId.msg" "mgear_curveCns442Set.gn" -na; -connectAttr "meta_R0_crvShape.iog.og[0]" "mgear_curveCns442Set.dsm" -na; -connectAttr "mgear_curveCns442.msg" "mgear_curveCns442Set.ub[0]"; -connectAttr "tweak590.og[0]" "mgear_curveCns442GroupParts.ig"; -connectAttr "mgear_curveCns442GroupId.id" "mgear_curveCns442GroupParts.gi"; -connectAttr "groupParts1180.og" "tweak590.ip[0].ig"; -connectAttr "groupId8749.id" "tweak590.ip[0].gi"; -connectAttr "groupId8749.msg" "tweakSet590.gn" -na; -connectAttr "meta_R0_crvShape.iog.og[1]" "tweakSet590.dsm" -na; -connectAttr "tweak590.msg" "tweakSet590.ub[0]"; -connectAttr "meta_R0_crvShapeOrig.ws" "groupParts1180.ig"; -connectAttr "groupId8749.id" "groupParts1180.gi"; -connectAttr "finger_R0_blade.bladeRollOffset" "unitConversion146.i"; -connectAttr "mgear_curveCns446GroupParts.og" "mgear_curveCns446.ip[0].ig"; -connectAttr "mgear_curveCns446GroupId.id" "mgear_curveCns446.ip[0].gi"; -connectAttr "finger_R0_root.wm" "mgear_curveCns446.inputs[0]"; -connectAttr "finger_R0_0_loc.wm" "mgear_curveCns446.inputs[1]"; -connectAttr "finger_R0_1_loc.wm" "mgear_curveCns446.inputs[2]"; -connectAttr "finger_R0_2_loc.wm" "mgear_curveCns446.inputs[3]"; -connectAttr "mgear_curveCns446GroupId.msg" "mgear_curveCns446Set.gn" -na; -connectAttr "finger_R0_crvShape.iog.og[0]" "mgear_curveCns446Set.dsm" -na; -connectAttr "mgear_curveCns446.msg" "mgear_curveCns446Set.ub[0]"; -connectAttr "tweak594.og[0]" "mgear_curveCns446GroupParts.ig"; -connectAttr "mgear_curveCns446GroupId.id" "mgear_curveCns446GroupParts.gi"; -connectAttr "groupParts1188.og" "tweak594.ip[0].ig"; -connectAttr "groupId8757.id" "tweak594.ip[0].gi"; -connectAttr "groupId8757.msg" "tweakSet594.gn" -na; -connectAttr "finger_R0_crvShape.iog.og[1]" "tweakSet594.dsm" -na; -connectAttr "tweak594.msg" "tweakSet594.ub[0]"; -connectAttr "finger_R0_crvShapeOrig.ws" "groupParts1188.ig"; -connectAttr "groupId8757.id" "groupParts1188.gi"; -connectAttr "thumb_R0_blade.bladeRollOffset" "unitConversion147.i"; -connectAttr "mgear_curveCns447GroupParts.og" "mgear_curveCns447.ip[0].ig"; -connectAttr "mgear_curveCns447GroupId.id" "mgear_curveCns447.ip[0].gi"; -connectAttr "thumb_R0_root.wm" "mgear_curveCns447.inputs[0]"; -connectAttr "thumb_R0_0_loc.wm" "mgear_curveCns447.inputs[1]"; -connectAttr "thumb_R0_1_loc.wm" "mgear_curveCns447.inputs[2]"; -connectAttr "thumb_R0_2_loc.wm" "mgear_curveCns447.inputs[3]"; -connectAttr "mgear_curveCns447GroupId.msg" "mgear_curveCns447Set.gn" -na; -connectAttr "thumb_R0_crvShape.iog.og[0]" "mgear_curveCns447Set.dsm" -na; -connectAttr "mgear_curveCns447.msg" "mgear_curveCns447Set.ub[0]"; -connectAttr "tweak595.og[0]" "mgear_curveCns447GroupParts.ig"; -connectAttr "mgear_curveCns447GroupId.id" "mgear_curveCns447GroupParts.gi"; -connectAttr "groupParts1190.og" "tweak595.ip[0].ig"; -connectAttr "groupId8759.id" "tweak595.ip[0].gi"; -connectAttr "groupId8759.msg" "tweakSet595.gn" -na; -connectAttr "thumb_R0_crvShape.iog.og[1]" "tweakSet595.dsm" -na; -connectAttr "tweak595.msg" "tweakSet595.ub[0]"; -connectAttr "thumb_R0_crvShapeOrig.ws" "groupParts1190.ig"; -connectAttr "groupId8759.id" "groupParts1190.gi"; -connectAttr "mgear_curveCns441GroupParts.og" "mgear_curveCns441.ip[0].ig"; -connectAttr "mgear_curveCns441GroupId.id" "mgear_curveCns441.ip[0].gi"; -connectAttr "arm_R0_root.wm" "mgear_curveCns441.inputs[0]"; -connectAttr "arm_R0_elbow.wm" "mgear_curveCns441.inputs[1]"; -connectAttr "arm_R0_wrist.wm" "mgear_curveCns441.inputs[2]"; -connectAttr "arm_R0_eff.wm" "mgear_curveCns441.inputs[3]"; -connectAttr "mgear_curveCns441GroupId.msg" "mgear_curveCns441Set.gn" -na; -connectAttr "arm_R0_crvShape.iog.og[0]" "mgear_curveCns441Set.dsm" -na; -connectAttr "mgear_curveCns441.msg" "mgear_curveCns441Set.ub[0]"; -connectAttr "tweak589.og[0]" "mgear_curveCns441GroupParts.ig"; -connectAttr "mgear_curveCns441GroupId.id" "mgear_curveCns441GroupParts.gi"; -connectAttr "groupParts1178.og" "tweak589.ip[0].ig"; -connectAttr "groupId8747.id" "tweak589.ip[0].gi"; -connectAttr "groupId8747.msg" "tweakSet589.gn" -na; -connectAttr "arm_R0_crvShape.iog.og[1]" "tweakSet589.dsm" -na; -connectAttr "tweak589.msg" "tweakSet589.ub[0]"; -connectAttr "arm_R0_crvShapeOrig.ws" "groupParts1178.ig"; -connectAttr "groupId8747.id" "groupParts1178.gi"; -connectAttr "shoulder_R0_blade.bladeRollOffset" "unitConversion141.i"; -connectAttr "mgear_curveCns440GroupParts.og" "mgear_curveCns440.ip[0].ig"; -connectAttr "mgear_curveCns440GroupId.id" "mgear_curveCns440.ip[0].gi"; -connectAttr "shoulder_R0_root.wm" "mgear_curveCns440.inputs[0]"; -connectAttr "shoulder_R0_tip.wm" "mgear_curveCns440.inputs[1]"; -connectAttr "mgear_curveCns440GroupId.msg" "mgear_curveCns440Set.gn" -na; -connectAttr "shoulder_R0_crvShape.iog.og[0]" "mgear_curveCns440Set.dsm" -na; -connectAttr "mgear_curveCns440.msg" "mgear_curveCns440Set.ub[0]"; -connectAttr "tweak588.og[0]" "mgear_curveCns440GroupParts.ig"; -connectAttr "mgear_curveCns440GroupId.id" "mgear_curveCns440GroupParts.gi"; -connectAttr "groupParts1176.og" "tweak588.ip[0].ig"; -connectAttr "groupId8745.id" "tweak588.ip[0].gi"; -connectAttr "groupId8745.msg" "tweakSet588.gn" -na; -connectAttr "shoulder_R0_crvShape.iog.og[1]" "tweakSet588.dsm" -na; -connectAttr "tweak588.msg" "tweakSet588.ub[0]"; -connectAttr "shoulder_R0_crvShapeOrig.ws" "groupParts1176.ig"; -connectAttr "groupId8745.id" "groupParts1176.gi"; -connectAttr "spine_C0_blade.bladeRollOffset" "unitConversion131.i"; -connectAttr "mgear_curveCns411GroupParts.og" "mgear_curveCns411.ip[0].ig"; -connectAttr "mgear_curveCns411GroupId.id" "mgear_curveCns411.ip[0].gi"; -connectAttr "spine_C0_root.wm" "mgear_curveCns411.inputs[0]"; -connectAttr "spine_C0_eff.wm" "mgear_curveCns411.inputs[1]"; -connectAttr "mgear_curveCns411GroupId.msg" "mgear_curveCns411Set.gn" -na; -connectAttr "spine_C0_crvShape.iog.og[0]" "mgear_curveCns411Set.dsm" -na; -connectAttr "mgear_curveCns411.msg" "mgear_curveCns411Set.ub[0]"; -connectAttr "tweak559.og[0]" "mgear_curveCns411GroupParts.ig"; -connectAttr "mgear_curveCns411GroupId.id" "mgear_curveCns411GroupParts.gi"; -connectAttr "groupParts1118.og" "tweak559.ip[0].ig"; -connectAttr "groupId8687.id" "tweak559.ip[0].gi"; -connectAttr "groupId8687.msg" "tweakSet559.gn" -na; -connectAttr "spine_C0_crvShape.iog.og[1]" "tweakSet559.dsm" -na; -connectAttr "tweak559.msg" "tweakSet559.ub[0]"; -connectAttr "spine_C0_crvShapeOrig.ws" "groupParts1118.ig"; -connectAttr "groupId8687.id" "groupParts1118.gi"; -connectAttr "mgear_curveCns438GroupParts.og" "mgear_curveCns438.ip[0].ig"; -connectAttr "mgear_curveCns438GroupId.id" "mgear_curveCns438.ip[0].gi"; -connectAttr "foot_L0_root.wm" "mgear_curveCns438.inputs[0]"; -connectAttr "foot_L0_0_loc.wm" "mgear_curveCns438.inputs[1]"; -connectAttr "foot_L0_1_loc.wm" "mgear_curveCns438.inputs[2]"; -connectAttr "foot_L0_2_loc.wm" "mgear_curveCns438.inputs[3]"; -connectAttr "mgear_curveCns438GroupId.msg" "mgear_curveCns438Set.gn" -na; -connectAttr "foot_L0_crvShape.iog.og[0]" "mgear_curveCns438Set.dsm" -na; -connectAttr "mgear_curveCns438.msg" "mgear_curveCns438Set.ub[0]"; -connectAttr "tweak586.og[0]" "mgear_curveCns438GroupParts.ig"; -connectAttr "mgear_curveCns438GroupId.id" "mgear_curveCns438GroupParts.gi"; -connectAttr "groupParts1172.og" "tweak586.ip[0].ig"; -connectAttr "groupId8741.id" "tweak586.ip[0].gi"; -connectAttr "groupId8741.msg" "tweakSet586.gn" -na; -connectAttr "foot_L0_crvShape.iog.og[1]" "tweakSet586.dsm" -na; -connectAttr "tweak586.msg" "tweakSet586.ub[0]"; -connectAttr "foot_L0_crvShapeOrig.ws" "groupParts1172.ig"; -connectAttr "groupId8741.id" "groupParts1172.gi"; -connectAttr "mgear_curveCns439GroupParts.og" "mgear_curveCns439.ip[0].ig"; -connectAttr "mgear_curveCns439GroupId.id" "mgear_curveCns439.ip[0].gi"; -connectAttr "foot_L0_root.wm" "mgear_curveCns439.inputs[0]"; -connectAttr "foot_L0_heel.wm" "mgear_curveCns439.inputs[1]"; -connectAttr "foot_L0_outpivot.wm" "mgear_curveCns439.inputs[2]"; -connectAttr "foot_L0_heel.wm" "mgear_curveCns439.inputs[3]"; -connectAttr "foot_L0_inpivot.wm" "mgear_curveCns439.inputs[4]"; -connectAttr "mgear_curveCns439GroupId.msg" "mgear_curveCns439Set.gn" -na; -connectAttr "foot_L0_Shape1.iog.og[0]" "mgear_curveCns439Set.dsm" -na; -connectAttr "mgear_curveCns439.msg" "mgear_curveCns439Set.ub[0]"; -connectAttr "tweak587.og[0]" "mgear_curveCns439GroupParts.ig"; -connectAttr "mgear_curveCns439GroupId.id" "mgear_curveCns439GroupParts.gi"; -connectAttr "groupParts1174.og" "tweak587.ip[0].ig"; -connectAttr "groupId8743.id" "tweak587.ip[0].gi"; -connectAttr "groupId8743.msg" "tweakSet587.gn" -na; -connectAttr "foot_L0_Shape1.iog.og[1]" "tweakSet587.dsm" -na; -connectAttr "tweak587.msg" "tweakSet587.ub[0]"; -connectAttr "foot_L0_Shape1Orig1.ws" "groupParts1174.ig"; -connectAttr "groupId8743.id" "groupParts1174.gi"; -connectAttr "mgear_curveCns437GroupParts.og" "mgear_curveCns437.ip[0].ig"; -connectAttr "mgear_curveCns437GroupId.id" "mgear_curveCns437.ip[0].gi"; -connectAttr "leg_L0_root.wm" "mgear_curveCns437.inputs[0]"; -connectAttr "leg_L0_knee.wm" "mgear_curveCns437.inputs[1]"; -connectAttr "leg_L0_ankle.wm" "mgear_curveCns437.inputs[2]"; -connectAttr "leg_L0_eff.wm" "mgear_curveCns437.inputs[3]"; -connectAttr "mgear_curveCns437GroupId.msg" "mgear_curveCns437Set.gn" -na; -connectAttr "leg_L0_crvShape.iog.og[0]" "mgear_curveCns437Set.dsm" -na; -connectAttr "mgear_curveCns437.msg" "mgear_curveCns437Set.ub[0]"; -connectAttr "tweak585.og[0]" "mgear_curveCns437GroupParts.ig"; -connectAttr "mgear_curveCns437GroupId.id" "mgear_curveCns437GroupParts.gi"; -connectAttr "groupParts1170.og" "tweak585.ip[0].ig"; -connectAttr "groupId8739.id" "tweak585.ip[0].gi"; -connectAttr "groupId8739.msg" "tweakSet585.gn" -na; -connectAttr "leg_L0_crvShape.iog.og[1]" "tweakSet585.dsm" -na; -connectAttr "tweak585.msg" "tweakSet585.ub[0]"; -connectAttr "leg_L0_crvShapeOrig.ws" "groupParts1170.ig"; -connectAttr "groupId8739.id" "groupParts1170.gi"; -connectAttr "mgear_curveCns449GroupParts.og" "mgear_curveCns449.ip[0].ig"; -connectAttr "mgear_curveCns449GroupId.id" "mgear_curveCns449.ip[0].gi"; -connectAttr "foot_R0_root.wm" "mgear_curveCns449.inputs[0]"; -connectAttr "foot_R0_0_loc.wm" "mgear_curveCns449.inputs[1]"; -connectAttr "foot_R0_1_loc.wm" "mgear_curveCns449.inputs[2]"; -connectAttr "foot_R0_2_loc.wm" "mgear_curveCns449.inputs[3]"; -connectAttr "mgear_curveCns449GroupId.msg" "mgear_curveCns449Set.gn" -na; -connectAttr "foot_R0_crvShape.iog.og[0]" "mgear_curveCns449Set.dsm" -na; -connectAttr "mgear_curveCns449.msg" "mgear_curveCns449Set.ub[0]"; -connectAttr "tweak597.og[0]" "mgear_curveCns449GroupParts.ig"; -connectAttr "mgear_curveCns449GroupId.id" "mgear_curveCns449GroupParts.gi"; -connectAttr "groupParts1194.og" "tweak597.ip[0].ig"; -connectAttr "groupId8763.id" "tweak597.ip[0].gi"; -connectAttr "groupId8763.msg" "tweakSet597.gn" -na; -connectAttr "foot_R0_crvShape.iog.og[1]" "tweakSet597.dsm" -na; -connectAttr "tweak597.msg" "tweakSet597.ub[0]"; -connectAttr "foot_R0_crvShapeOrig.ws" "groupParts1194.ig"; -connectAttr "groupId8763.id" "groupParts1194.gi"; -connectAttr "mgear_curveCns450GroupParts.og" "mgear_curveCns450.ip[0].ig"; -connectAttr "mgear_curveCns450GroupId.id" "mgear_curveCns450.ip[0].gi"; -connectAttr "foot_R0_root.wm" "mgear_curveCns450.inputs[0]"; -connectAttr "foot_R0_heel.wm" "mgear_curveCns450.inputs[1]"; -connectAttr "foot_R0_outpivot.wm" "mgear_curveCns450.inputs[2]"; -connectAttr "foot_R0_heel.wm" "mgear_curveCns450.inputs[3]"; -connectAttr "foot_R0_inpivot.wm" "mgear_curveCns450.inputs[4]"; -connectAttr "mgear_curveCns450GroupId.msg" "mgear_curveCns450Set.gn" -na; -connectAttr "foot_R0_Shape1.iog.og[0]" "mgear_curveCns450Set.dsm" -na; -connectAttr "mgear_curveCns450.msg" "mgear_curveCns450Set.ub[0]"; -connectAttr "tweak598.og[0]" "mgear_curveCns450GroupParts.ig"; -connectAttr "mgear_curveCns450GroupId.id" "mgear_curveCns450GroupParts.gi"; -connectAttr "groupParts1196.og" "tweak598.ip[0].ig"; -connectAttr "groupId8765.id" "tweak598.ip[0].gi"; -connectAttr "groupId8765.msg" "tweakSet598.gn" -na; -connectAttr "foot_R0_Shape1.iog.og[1]" "tweakSet598.dsm" -na; -connectAttr "tweak598.msg" "tweakSet598.ub[0]"; -connectAttr "foot_R0_Shape1Orig.ws" "groupParts1196.ig"; -connectAttr "groupId8765.id" "groupParts1196.gi"; -connectAttr "mgear_curveCns448GroupParts.og" "mgear_curveCns448.ip[0].ig"; -connectAttr "mgear_curveCns448GroupId.id" "mgear_curveCns448.ip[0].gi"; -connectAttr "leg_R0_root.wm" "mgear_curveCns448.inputs[0]"; -connectAttr "leg_R0_knee.wm" "mgear_curveCns448.inputs[1]"; -connectAttr "leg_R0_ankle.wm" "mgear_curveCns448.inputs[2]"; -connectAttr "leg_R0_eff.wm" "mgear_curveCns448.inputs[3]"; -connectAttr "mgear_curveCns448GroupId.msg" "mgear_curveCns448Set.gn" -na; -connectAttr "leg_R0_crvShape.iog.og[0]" "mgear_curveCns448Set.dsm" -na; -connectAttr "mgear_curveCns448.msg" "mgear_curveCns448Set.ub[0]"; -connectAttr "tweak596.og[0]" "mgear_curveCns448GroupParts.ig"; -connectAttr "mgear_curveCns448GroupId.id" "mgear_curveCns448GroupParts.gi"; -connectAttr "groupParts1192.og" "tweak596.ip[0].ig"; -connectAttr "groupId8761.id" "tweak596.ip[0].gi"; -connectAttr "groupId8761.msg" "tweakSet596.gn" -na; -connectAttr "leg_R0_crvShape.iog.og[1]" "tweakSet596.dsm" -na; -connectAttr "tweak596.msg" "tweakSet596.ub[0]"; -connectAttr "leg_R0_crvShapeOrig.ws" "groupParts1192.ig"; -connectAttr "groupId8761.id" "groupParts1192.gi"; +connectAttr "tweak612.msg" "tweakSet612.ub[0]"; +connectAttr "|guide|global_C0_root|local_C0_root|body_C0_root|spine_C0_root|spine_C0_eff|neck_C0_root|neck_C0_neck|neck_C0_head|mouth_C0_root|mouth_C0_rotcenter|mouth_C0_liplow|mouth_C0_crv|mouth_C0_crvShapeOrig.ws" "groupParts1224.ig" + ; +connectAttr "groupId8793.id" "groupParts1224.gi"; +connectAttr "mgear_curveCns465GroupParts.og" "mgear_curveCns465.ip[0].ig"; +connectAttr "mgear_curveCns465GroupId.id" "mgear_curveCns465.ip[0].gi"; +connectAttr "mouth_C0_root.wm" "mgear_curveCns465.inputs[0]"; +connectAttr "mouth_C0_jaw.wm" "mgear_curveCns465.inputs[1]"; +connectAttr "groupParts1226.og" "tweak613.ip[0].ig"; +connectAttr "groupId8795.id" "tweak613.ip[0].gi"; +connectAttr "mgear_curveCns465GroupId.msg" "mgear_curveCns465Set.gn" -na; +connectAttr "mouth_C0_crv10Shape.iog.og[0]" "mgear_curveCns465Set.dsm" -na; +connectAttr "mgear_curveCns465.msg" "mgear_curveCns465Set.ub[0]"; +connectAttr "tweak613.og[0]" "mgear_curveCns465GroupParts.ig"; +connectAttr "mgear_curveCns465GroupId.id" "mgear_curveCns465GroupParts.gi"; +connectAttr "groupId8795.msg" "tweakSet613.gn" -na; +connectAttr "mouth_C0_crv10Shape.iog.og[1]" "tweakSet613.dsm" -na; +connectAttr "tweak613.msg" "tweakSet613.ub[0]"; +connectAttr "mouth_C0_crv10ShapeOrig.ws" "groupParts1226.ig"; +connectAttr "groupId8795.id" "groupParts1226.gi"; +connectAttr "tongue_C0_blade.bladeRollOffset" "unitConversion157.i"; +connectAttr "mgear_curveCns466GroupParts.og" "mgear_curveCns466.ip[0].ig"; +connectAttr "mgear_curveCns466GroupId.id" "mgear_curveCns466.ip[0].gi"; +connectAttr "tongue_C0_root.wm" "mgear_curveCns466.inputs[0]"; +connectAttr "tongue_C0_0_loc.wm" "mgear_curveCns466.inputs[1]"; +connectAttr "tongue_C0_1_loc.wm" "mgear_curveCns466.inputs[2]"; +connectAttr "tongue_C0_2_loc.wm" "mgear_curveCns466.inputs[3]"; +connectAttr "tongue_C0_3_loc.wm" "mgear_curveCns466.inputs[4]"; +connectAttr "groupParts1228.og" "tweak614.ip[0].ig"; +connectAttr "groupId8797.id" "tweak614.ip[0].gi"; +connectAttr "mgear_curveCns466GroupId.msg" "mgear_curveCns466Set.gn" -na; +connectAttr "tongue_C0_crvShape.iog.og[0]" "mgear_curveCns466Set.dsm" -na; +connectAttr "mgear_curveCns466.msg" "mgear_curveCns466Set.ub[0]"; +connectAttr "tweak614.og[0]" "mgear_curveCns466GroupParts.ig"; +connectAttr "mgear_curveCns466GroupId.id" "mgear_curveCns466GroupParts.gi"; +connectAttr "groupId8797.msg" "tweakSet614.gn" -na; +connectAttr "tongue_C0_crvShape.iog.og[1]" "tweakSet614.dsm" -na; +connectAttr "tweak614.msg" "tweakSet614.ub[0]"; +connectAttr "tongue_C0_crvShapeOrig.ws" "groupParts1228.ig"; +connectAttr "groupId8797.id" "groupParts1228.gi"; +connectAttr "mgear_curveCns467GroupParts.og" "mgear_curveCns467.ip[0].ig"; +connectAttr "mgear_curveCns467GroupId.id" "mgear_curveCns467.ip[0].gi"; +connectAttr "eye_R0_root.wm" "mgear_curveCns467.inputs[0]"; +connectAttr "eye_R0_look.wm" "mgear_curveCns467.inputs[1]"; +connectAttr "groupParts1230.og" "tweak615.ip[0].ig"; +connectAttr "groupId8799.id" "tweak615.ip[0].gi"; +connectAttr "mgear_curveCns467GroupId.msg" "mgear_curveCns467Set.gn" -na; +connectAttr "eye_R0_crvShape.iog.og[0]" "mgear_curveCns467Set.dsm" -na; +connectAttr "mgear_curveCns467.msg" "mgear_curveCns467Set.ub[0]"; +connectAttr "tweak615.og[0]" "mgear_curveCns467GroupParts.ig"; +connectAttr "mgear_curveCns467GroupId.id" "mgear_curveCns467GroupParts.gi"; +connectAttr "groupId8799.msg" "tweakSet615.gn" -na; +connectAttr "eye_R0_crvShape.iog.og[1]" "tweakSet615.dsm" -na; +connectAttr "tweak615.msg" "tweakSet615.ub[0]"; +connectAttr "eye_R0_crvShapeOrig.ws" "groupParts1230.ig"; +connectAttr "groupId8799.id" "groupParts1230.gi"; +connectAttr "mgear_curveCns468GroupParts.og" "mgear_curveCns468.ip[0].ig"; +connectAttr "mgear_curveCns468GroupId.id" "mgear_curveCns468.ip[0].gi"; +connectAttr "eye_L0_root.wm" "mgear_curveCns468.inputs[0]"; +connectAttr "eye_L0_look.wm" "mgear_curveCns468.inputs[1]"; +connectAttr "groupParts1232.og" "tweak616.ip[0].ig"; +connectAttr "groupId8801.id" "tweak616.ip[0].gi"; +connectAttr "mgear_curveCns468GroupId.msg" "mgear_curveCns468Set.gn" -na; +connectAttr "eye_L0_crvShape.iog.og[0]" "mgear_curveCns468Set.dsm" -na; +connectAttr "mgear_curveCns468.msg" "mgear_curveCns468Set.ub[0]"; +connectAttr "tweak616.og[0]" "mgear_curveCns468GroupParts.ig"; +connectAttr "mgear_curveCns468GroupId.id" "mgear_curveCns468GroupParts.gi"; +connectAttr "groupId8801.msg" "tweakSet616.gn" -na; +connectAttr "eye_L0_crvShape.iog.og[1]" "tweakSet616.dsm" -na; +connectAttr "tweak616.msg" "tweakSet616.ub[0]"; +connectAttr "eye_L0_crvShapeOrig.ws" "groupParts1232.ig"; +connectAttr "groupId8801.id" "groupParts1232.gi"; +connectAttr "shoulder_R0_blade.bladeRollOffset" "unitConversion158.i"; +connectAttr "mgear_curveCns469GroupParts.og" "mgear_curveCns469.ip[0].ig"; +connectAttr "mgear_curveCns469GroupId.id" "mgear_curveCns469.ip[0].gi"; +connectAttr "shoulder_R0_root.wm" "mgear_curveCns469.inputs[0]"; +connectAttr "shoulder_R0_tip.wm" "mgear_curveCns469.inputs[1]"; +connectAttr "groupParts1234.og" "tweak617.ip[0].ig"; +connectAttr "groupId8803.id" "tweak617.ip[0].gi"; +connectAttr "mgear_curveCns469GroupId.msg" "mgear_curveCns469Set.gn" -na; +connectAttr "shoulder_R0_crvShape.iog.og[0]" "mgear_curveCns469Set.dsm" -na; +connectAttr "mgear_curveCns469.msg" "mgear_curveCns469Set.ub[0]"; +connectAttr "tweak617.og[0]" "mgear_curveCns469GroupParts.ig"; +connectAttr "mgear_curveCns469GroupId.id" "mgear_curveCns469GroupParts.gi"; +connectAttr "groupId8803.msg" "tweakSet617.gn" -na; +connectAttr "shoulder_R0_crvShape.iog.og[1]" "tweakSet617.dsm" -na; +connectAttr "tweak617.msg" "tweakSet617.ub[0]"; +connectAttr "shoulder_R0_crvShapeOrig.ws" "groupParts1234.ig"; +connectAttr "groupId8803.id" "groupParts1234.gi"; +connectAttr "mgear_curveCns470GroupParts.og" "mgear_curveCns470.ip[0].ig"; +connectAttr "mgear_curveCns470GroupId.id" "mgear_curveCns470.ip[0].gi"; +connectAttr "arm_R0_root.wm" "mgear_curveCns470.inputs[0]"; +connectAttr "arm_R0_elbow.wm" "mgear_curveCns470.inputs[1]"; +connectAttr "arm_R0_wrist.wm" "mgear_curveCns470.inputs[2]"; +connectAttr "arm_R0_eff.wm" "mgear_curveCns470.inputs[3]"; +connectAttr "groupParts1236.og" "tweak618.ip[0].ig"; +connectAttr "groupId8805.id" "tweak618.ip[0].gi"; +connectAttr "mgear_curveCns470GroupId.msg" "mgear_curveCns470Set.gn" -na; +connectAttr "arm_R0_crvShape.iog.og[0]" "mgear_curveCns470Set.dsm" -na; +connectAttr "mgear_curveCns470.msg" "mgear_curveCns470Set.ub[0]"; +connectAttr "tweak618.og[0]" "mgear_curveCns470GroupParts.ig"; +connectAttr "mgear_curveCns470GroupId.id" "mgear_curveCns470GroupParts.gi"; +connectAttr "groupId8805.msg" "tweakSet618.gn" -na; +connectAttr "arm_R0_crvShape.iog.og[1]" "tweakSet618.dsm" -na; +connectAttr "tweak618.msg" "tweakSet618.ub[0]"; +connectAttr "arm_R0_crvShapeOrig.ws" "groupParts1236.ig"; +connectAttr "groupId8805.id" "groupParts1236.gi"; +connectAttr "meta_R0_blade.bladeRollOffset" "unitConversion159.i"; +connectAttr "mgear_curveCns471GroupParts.og" "mgear_curveCns471.ip[0].ig"; +connectAttr "mgear_curveCns471GroupId.id" "mgear_curveCns471.ip[0].gi"; +connectAttr "meta_R0_root.wm" "mgear_curveCns471.inputs[0]"; +connectAttr "meta_R0_0_loc.wm" "mgear_curveCns471.inputs[1]"; +connectAttr "meta_R0_1_loc.wm" "mgear_curveCns471.inputs[2]"; +connectAttr "meta_R0_2_loc.wm" "mgear_curveCns471.inputs[3]"; +connectAttr "groupParts1238.og" "tweak619.ip[0].ig"; +connectAttr "groupId8807.id" "tweak619.ip[0].gi"; +connectAttr "mgear_curveCns471GroupId.msg" "mgear_curveCns471Set.gn" -na; +connectAttr "meta_R0_crvShape.iog.og[0]" "mgear_curveCns471Set.dsm" -na; +connectAttr "mgear_curveCns471.msg" "mgear_curveCns471Set.ub[0]"; +connectAttr "tweak619.og[0]" "mgear_curveCns471GroupParts.ig"; +connectAttr "mgear_curveCns471GroupId.id" "mgear_curveCns471GroupParts.gi"; +connectAttr "groupId8807.msg" "tweakSet619.gn" -na; +connectAttr "meta_R0_crvShape.iog.og[1]" "tweakSet619.dsm" -na; +connectAttr "tweak619.msg" "tweakSet619.ub[0]"; +connectAttr "meta_R0_crvShapeOrig.ws" "groupParts1238.ig"; +connectAttr "groupId8807.id" "groupParts1238.gi"; +connectAttr "finger_R3_blade.bladeRollOffset" "unitConversion160.i"; +connectAttr "mgear_curveCns472GroupParts.og" "mgear_curveCns472.ip[0].ig"; +connectAttr "mgear_curveCns472GroupId.id" "mgear_curveCns472.ip[0].gi"; +connectAttr "finger_R3_root.wm" "mgear_curveCns472.inputs[0]"; +connectAttr "finger_R3_0_loc.wm" "mgear_curveCns472.inputs[1]"; +connectAttr "finger_R3_1_loc.wm" "mgear_curveCns472.inputs[2]"; +connectAttr "finger_R3_2_loc.wm" "mgear_curveCns472.inputs[3]"; +connectAttr "groupParts1240.og" "tweak620.ip[0].ig"; +connectAttr "groupId8809.id" "tweak620.ip[0].gi"; +connectAttr "mgear_curveCns472GroupId.msg" "mgear_curveCns472Set.gn" -na; +connectAttr "finger_R3_crvShape.iog.og[0]" "mgear_curveCns472Set.dsm" -na; +connectAttr "mgear_curveCns472.msg" "mgear_curveCns472Set.ub[0]"; +connectAttr "tweak620.og[0]" "mgear_curveCns472GroupParts.ig"; +connectAttr "mgear_curveCns472GroupId.id" "mgear_curveCns472GroupParts.gi"; +connectAttr "groupId8809.msg" "tweakSet620.gn" -na; +connectAttr "finger_R3_crvShape.iog.og[1]" "tweakSet620.dsm" -na; +connectAttr "tweak620.msg" "tweakSet620.ub[0]"; +connectAttr "finger_R3_crvShapeOrig.ws" "groupParts1240.ig"; +connectAttr "groupId8809.id" "groupParts1240.gi"; +connectAttr "finger_R2_blade.bladeRollOffset" "unitConversion161.i"; +connectAttr "mgear_curveCns473GroupParts.og" "mgear_curveCns473.ip[0].ig"; +connectAttr "mgear_curveCns473GroupId.id" "mgear_curveCns473.ip[0].gi"; +connectAttr "finger_R2_root.wm" "mgear_curveCns473.inputs[0]"; +connectAttr "finger_R2_0_loc.wm" "mgear_curveCns473.inputs[1]"; +connectAttr "finger_R2_1_loc.wm" "mgear_curveCns473.inputs[2]"; +connectAttr "finger_R2_2_loc.wm" "mgear_curveCns473.inputs[3]"; +connectAttr "groupParts1242.og" "tweak621.ip[0].ig"; +connectAttr "groupId8811.id" "tweak621.ip[0].gi"; +connectAttr "mgear_curveCns473GroupId.msg" "mgear_curveCns473Set.gn" -na; +connectAttr "finger_R2_crvShape.iog.og[0]" "mgear_curveCns473Set.dsm" -na; +connectAttr "mgear_curveCns473.msg" "mgear_curveCns473Set.ub[0]"; +connectAttr "tweak621.og[0]" "mgear_curveCns473GroupParts.ig"; +connectAttr "mgear_curveCns473GroupId.id" "mgear_curveCns473GroupParts.gi"; +connectAttr "groupId8811.msg" "tweakSet621.gn" -na; +connectAttr "finger_R2_crvShape.iog.og[1]" "tweakSet621.dsm" -na; +connectAttr "tweak621.msg" "tweakSet621.ub[0]"; +connectAttr "finger_R2_crvShapeOrig.ws" "groupParts1242.ig"; +connectAttr "groupId8811.id" "groupParts1242.gi"; +connectAttr "finger_R1_blade.bladeRollOffset" "unitConversion162.i"; +connectAttr "mgear_curveCns474GroupParts.og" "mgear_curveCns474.ip[0].ig"; +connectAttr "mgear_curveCns474GroupId.id" "mgear_curveCns474.ip[0].gi"; +connectAttr "finger_R1_root.wm" "mgear_curveCns474.inputs[0]"; +connectAttr "finger_R1_0_loc.wm" "mgear_curveCns474.inputs[1]"; +connectAttr "finger_R1_1_loc.wm" "mgear_curveCns474.inputs[2]"; +connectAttr "finger_R1_2_loc.wm" "mgear_curveCns474.inputs[3]"; +connectAttr "groupParts1244.og" "tweak622.ip[0].ig"; +connectAttr "groupId8813.id" "tweak622.ip[0].gi"; +connectAttr "mgear_curveCns474GroupId.msg" "mgear_curveCns474Set.gn" -na; +connectAttr "finger_R1_crvShape.iog.og[0]" "mgear_curveCns474Set.dsm" -na; +connectAttr "mgear_curveCns474.msg" "mgear_curveCns474Set.ub[0]"; +connectAttr "tweak622.og[0]" "mgear_curveCns474GroupParts.ig"; +connectAttr "mgear_curveCns474GroupId.id" "mgear_curveCns474GroupParts.gi"; +connectAttr "groupId8813.msg" "tweakSet622.gn" -na; +connectAttr "finger_R1_crvShape.iog.og[1]" "tweakSet622.dsm" -na; +connectAttr "tweak622.msg" "tweakSet622.ub[0]"; +connectAttr "finger_R1_crvShapeOrig.ws" "groupParts1244.ig"; +connectAttr "groupId8813.id" "groupParts1244.gi"; +connectAttr "finger_R0_blade.bladeRollOffset" "unitConversion163.i"; +connectAttr "mgear_curveCns475GroupParts.og" "mgear_curveCns475.ip[0].ig"; +connectAttr "mgear_curveCns475GroupId.id" "mgear_curveCns475.ip[0].gi"; +connectAttr "finger_R0_root.wm" "mgear_curveCns475.inputs[0]"; +connectAttr "finger_R0_0_loc.wm" "mgear_curveCns475.inputs[1]"; +connectAttr "finger_R0_1_loc.wm" "mgear_curveCns475.inputs[2]"; +connectAttr "finger_R0_2_loc.wm" "mgear_curveCns475.inputs[3]"; +connectAttr "groupParts1246.og" "tweak623.ip[0].ig"; +connectAttr "groupId8815.id" "tweak623.ip[0].gi"; +connectAttr "mgear_curveCns475GroupId.msg" "mgear_curveCns475Set.gn" -na; +connectAttr "finger_R0_crvShape.iog.og[0]" "mgear_curveCns475Set.dsm" -na; +connectAttr "mgear_curveCns475.msg" "mgear_curveCns475Set.ub[0]"; +connectAttr "tweak623.og[0]" "mgear_curveCns475GroupParts.ig"; +connectAttr "mgear_curveCns475GroupId.id" "mgear_curveCns475GroupParts.gi"; +connectAttr "groupId8815.msg" "tweakSet623.gn" -na; +connectAttr "finger_R0_crvShape.iog.og[1]" "tweakSet623.dsm" -na; +connectAttr "tweak623.msg" "tweakSet623.ub[0]"; +connectAttr "finger_R0_crvShapeOrig.ws" "groupParts1246.ig"; +connectAttr "groupId8815.id" "groupParts1246.gi"; +connectAttr "thumb_R0_blade.bladeRollOffset" "unitConversion164.i"; +connectAttr "mgear_curveCns476GroupParts.og" "mgear_curveCns476.ip[0].ig"; +connectAttr "mgear_curveCns476GroupId.id" "mgear_curveCns476.ip[0].gi"; +connectAttr "thumb_R0_root.wm" "mgear_curveCns476.inputs[0]"; +connectAttr "thumb_R0_0_loc.wm" "mgear_curveCns476.inputs[1]"; +connectAttr "thumb_R0_1_loc.wm" "mgear_curveCns476.inputs[2]"; +connectAttr "thumb_R0_2_loc.wm" "mgear_curveCns476.inputs[3]"; +connectAttr "groupParts1248.og" "tweak624.ip[0].ig"; +connectAttr "groupId8817.id" "tweak624.ip[0].gi"; +connectAttr "mgear_curveCns476GroupId.msg" "mgear_curveCns476Set.gn" -na; +connectAttr "thumb_R0_crvShape.iog.og[0]" "mgear_curveCns476Set.dsm" -na; +connectAttr "mgear_curveCns476.msg" "mgear_curveCns476Set.ub[0]"; +connectAttr "tweak624.og[0]" "mgear_curveCns476GroupParts.ig"; +connectAttr "mgear_curveCns476GroupId.id" "mgear_curveCns476GroupParts.gi"; +connectAttr "groupId8817.msg" "tweakSet624.gn" -na; +connectAttr "thumb_R0_crvShape.iog.og[1]" "tweakSet624.dsm" -na; +connectAttr "tweak624.msg" "tweakSet624.ub[0]"; +connectAttr "thumb_R0_crvShapeOrig.ws" "groupParts1248.ig"; +connectAttr "groupId8817.id" "groupParts1248.gi"; +connectAttr "mgear_curveCns477GroupParts.og" "mgear_curveCns477.ip[0].ig"; +connectAttr "mgear_curveCns477GroupId.id" "mgear_curveCns477.ip[0].gi"; +connectAttr "leg_L0_root.wm" "mgear_curveCns477.inputs[0]"; +connectAttr "leg_L0_knee.wm" "mgear_curveCns477.inputs[1]"; +connectAttr "leg_L0_ankle.wm" "mgear_curveCns477.inputs[2]"; +connectAttr "leg_L0_eff.wm" "mgear_curveCns477.inputs[3]"; +connectAttr "groupParts1250.og" "tweak625.ip[0].ig"; +connectAttr "groupId8819.id" "tweak625.ip[0].gi"; +connectAttr "mgear_curveCns477GroupId.msg" "mgear_curveCns477Set.gn" -na; +connectAttr "leg_L0_crvShape.iog.og[0]" "mgear_curveCns477Set.dsm" -na; +connectAttr "mgear_curveCns477.msg" "mgear_curveCns477Set.ub[0]"; +connectAttr "tweak625.og[0]" "mgear_curveCns477GroupParts.ig"; +connectAttr "mgear_curveCns477GroupId.id" "mgear_curveCns477GroupParts.gi"; +connectAttr "groupId8819.msg" "tweakSet625.gn" -na; +connectAttr "leg_L0_crvShape.iog.og[1]" "tweakSet625.dsm" -na; +connectAttr "tweak625.msg" "tweakSet625.ub[0]"; +connectAttr "leg_L0_crvShapeOrig.ws" "groupParts1250.ig"; +connectAttr "groupId8819.id" "groupParts1250.gi"; +connectAttr "mgear_curveCns478GroupParts.og" "mgear_curveCns478.ip[0].ig"; +connectAttr "mgear_curveCns478GroupId.id" "mgear_curveCns478.ip[0].gi"; +connectAttr "foot_L0_root.wm" "mgear_curveCns478.inputs[0]"; +connectAttr "foot_L0_0_loc.wm" "mgear_curveCns478.inputs[1]"; +connectAttr "foot_L0_1_loc.wm" "mgear_curveCns478.inputs[2]"; +connectAttr "foot_L0_2_loc.wm" "mgear_curveCns478.inputs[3]"; +connectAttr "groupParts1252.og" "tweak626.ip[0].ig"; +connectAttr "groupId8821.id" "tweak626.ip[0].gi"; +connectAttr "mgear_curveCns478GroupId.msg" "mgear_curveCns478Set.gn" -na; +connectAttr "foot_L0_crvShape.iog.og[0]" "mgear_curveCns478Set.dsm" -na; +connectAttr "mgear_curveCns478.msg" "mgear_curveCns478Set.ub[0]"; +connectAttr "tweak626.og[0]" "mgear_curveCns478GroupParts.ig"; +connectAttr "mgear_curveCns478GroupId.id" "mgear_curveCns478GroupParts.gi"; +connectAttr "groupId8821.msg" "tweakSet626.gn" -na; +connectAttr "foot_L0_crvShape.iog.og[1]" "tweakSet626.dsm" -na; +connectAttr "tweak626.msg" "tweakSet626.ub[0]"; +connectAttr "foot_L0_crvShapeOrig.ws" "groupParts1252.ig"; +connectAttr "groupId8821.id" "groupParts1252.gi"; +connectAttr "mgear_curveCns479GroupParts.og" "mgear_curveCns479.ip[0].ig"; +connectAttr "mgear_curveCns479GroupId.id" "mgear_curveCns479.ip[0].gi"; +connectAttr "foot_L0_root.wm" "mgear_curveCns479.inputs[0]"; +connectAttr "foot_L0_heel.wm" "mgear_curveCns479.inputs[1]"; +connectAttr "foot_L0_outpivot.wm" "mgear_curveCns479.inputs[2]"; +connectAttr "foot_L0_heel.wm" "mgear_curveCns479.inputs[3]"; +connectAttr "foot_L0_inpivot.wm" "mgear_curveCns479.inputs[4]"; +connectAttr "groupParts1254.og" "tweak627.ip[0].ig"; +connectAttr "groupId8823.id" "tweak627.ip[0].gi"; +connectAttr "mgear_curveCns479GroupId.msg" "mgear_curveCns479Set.gn" -na; +connectAttr "foot_L0_Shape1.iog.og[0]" "mgear_curveCns479Set.dsm" -na; +connectAttr "mgear_curveCns479.msg" "mgear_curveCns479Set.ub[0]"; +connectAttr "tweak627.og[0]" "mgear_curveCns479GroupParts.ig"; +connectAttr "mgear_curveCns479GroupId.id" "mgear_curveCns479GroupParts.gi"; +connectAttr "groupId8823.msg" "tweakSet627.gn" -na; +connectAttr "foot_L0_Shape1.iog.og[1]" "tweakSet627.dsm" -na; +connectAttr "tweak627.msg" "tweakSet627.ub[0]"; +connectAttr "foot_L0_Shape1Orig.ws" "groupParts1254.ig"; +connectAttr "groupId8823.id" "groupParts1254.gi"; +connectAttr "mgear_curveCns480GroupParts.og" "mgear_curveCns480.ip[0].ig"; +connectAttr "mgear_curveCns480GroupId.id" "mgear_curveCns480.ip[0].gi"; +connectAttr "leg_R0_root.wm" "mgear_curveCns480.inputs[0]"; +connectAttr "leg_R0_knee.wm" "mgear_curveCns480.inputs[1]"; +connectAttr "leg_R0_ankle.wm" "mgear_curveCns480.inputs[2]"; +connectAttr "leg_R0_eff.wm" "mgear_curveCns480.inputs[3]"; +connectAttr "groupParts1256.og" "tweak628.ip[0].ig"; +connectAttr "groupId8825.id" "tweak628.ip[0].gi"; +connectAttr "mgear_curveCns480GroupId.msg" "mgear_curveCns480Set.gn" -na; +connectAttr "leg_R0_crvShape.iog.og[0]" "mgear_curveCns480Set.dsm" -na; +connectAttr "mgear_curveCns480.msg" "mgear_curveCns480Set.ub[0]"; +connectAttr "tweak628.og[0]" "mgear_curveCns480GroupParts.ig"; +connectAttr "mgear_curveCns480GroupId.id" "mgear_curveCns480GroupParts.gi"; +connectAttr "groupId8825.msg" "tweakSet628.gn" -na; +connectAttr "leg_R0_crvShape.iog.og[1]" "tweakSet628.dsm" -na; +connectAttr "tweak628.msg" "tweakSet628.ub[0]"; +connectAttr "leg_R0_crvShapeOrig.ws" "groupParts1256.ig"; +connectAttr "groupId8825.id" "groupParts1256.gi"; +connectAttr "mgear_curveCns481GroupParts.og" "mgear_curveCns481.ip[0].ig"; +connectAttr "mgear_curveCns481GroupId.id" "mgear_curveCns481.ip[0].gi"; +connectAttr "foot_R0_root.wm" "mgear_curveCns481.inputs[0]"; +connectAttr "foot_R0_0_loc.wm" "mgear_curveCns481.inputs[1]"; +connectAttr "foot_R0_1_loc.wm" "mgear_curveCns481.inputs[2]"; +connectAttr "foot_R0_2_loc.wm" "mgear_curveCns481.inputs[3]"; +connectAttr "groupParts1258.og" "tweak629.ip[0].ig"; +connectAttr "groupId8827.id" "tweak629.ip[0].gi"; +connectAttr "mgear_curveCns481GroupId.msg" "mgear_curveCns481Set.gn" -na; +connectAttr "foot_R0_crvShape.iog.og[0]" "mgear_curveCns481Set.dsm" -na; +connectAttr "mgear_curveCns481.msg" "mgear_curveCns481Set.ub[0]"; +connectAttr "tweak629.og[0]" "mgear_curveCns481GroupParts.ig"; +connectAttr "mgear_curveCns481GroupId.id" "mgear_curveCns481GroupParts.gi"; +connectAttr "groupId8827.msg" "tweakSet629.gn" -na; +connectAttr "foot_R0_crvShape.iog.og[1]" "tweakSet629.dsm" -na; +connectAttr "tweak629.msg" "tweakSet629.ub[0]"; +connectAttr "foot_R0_crvShapeOrig.ws" "groupParts1258.ig"; +connectAttr "groupId8827.id" "groupParts1258.gi"; +connectAttr "mgear_curveCns482GroupParts.og" "mgear_curveCns482.ip[0].ig"; +connectAttr "mgear_curveCns482GroupId.id" "mgear_curveCns482.ip[0].gi"; +connectAttr "foot_R0_root.wm" "mgear_curveCns482.inputs[0]"; +connectAttr "foot_R0_heel.wm" "mgear_curveCns482.inputs[1]"; +connectAttr "foot_R0_outpivot.wm" "mgear_curveCns482.inputs[2]"; +connectAttr "foot_R0_heel.wm" "mgear_curveCns482.inputs[3]"; +connectAttr "foot_R0_inpivot.wm" "mgear_curveCns482.inputs[4]"; +connectAttr "groupParts1260.og" "tweak630.ip[0].ig"; +connectAttr "groupId8829.id" "tweak630.ip[0].gi"; +connectAttr "mgear_curveCns482GroupId.msg" "mgear_curveCns482Set.gn" -na; +connectAttr "foot_R0_Shape1.iog.og[0]" "mgear_curveCns482Set.dsm" -na; +connectAttr "mgear_curveCns482.msg" "mgear_curveCns482Set.ub[0]"; +connectAttr "tweak630.og[0]" "mgear_curveCns482GroupParts.ig"; +connectAttr "mgear_curveCns482GroupId.id" "mgear_curveCns482GroupParts.gi"; +connectAttr "groupId8829.msg" "tweakSet630.gn" -na; +connectAttr "foot_R0_Shape1.iog.og[1]" "tweakSet630.dsm" -na; +connectAttr "tweak630.msg" "tweakSet630.ub[0]"; +connectAttr "foot_R0_Shape1Orig.ws" "groupParts1260.ig"; +connectAttr "groupId8829.id" "groupParts1260.gi"; +connectAttr "defaultRenderLayer.msg" ":defaultRenderingList1.r" -na; // End of biped_guide.ma diff --git a/scripts/mgear/maya/shifter/component/_templates/quadruped.ma b/scripts/mgear/maya/shifter/component/_templates/quadruped.ma index dac96db..aea5e89 100644 --- a/scripts/mgear/maya/shifter/component/_templates/quadruped.ma +++ b/scripts/mgear/maya/shifter/component/_templates/quadruped.ma @@ -1,6 +1,6 @@ //Maya ASCII 2016R2 scene //Name: quadruped.ma -//Last modified: Mon, Oct 16, 2017 06:14:47 PM +//Last modified: Wed, Dec 06, 2017 11:03:26 AM //Codeset: 932 requires maya "2016R2"; requires -nodeType "mgear_curveCns" "mgear_solvers" "2.1.0"; @@ -11,26 +11,87 @@ fileInfo "product" "Maya 2016"; fileInfo "version" "2016 Extension 2 SP2"; fileInfo "cutIdentifier" "201608220310-1001477-2"; fileInfo "osv" "Microsoft Windows 8 Business Edition, 64-bit (Build 9200)\n"; +createNode transform -s -n "persp"; + rename -uid "6F6D51A8-412B-335E-00CF-37AF07174608"; + setAttr ".v" no; + setAttr ".t" -type "double3" 6.393497340196264 4.7951230051471763 6.3934973401962445 ; + setAttr ".r" -type "double3" -27.938352729602379 44.999999999999972 -5.172681101354183e-014 ; +createNode camera -s -n "perspShape" -p "persp"; + rename -uid "DB01A37C-402E-FE3C-AED8-B2B423E678B4"; + setAttr -k off ".v" no; + setAttr ".fl" 34.999999999999993; + setAttr ".coi" 10.234589445243257; + setAttr ".imn" -type "string" "persp"; + setAttr ".den" -type "string" "persp_depth"; + setAttr ".man" -type "string" "persp_mask"; + setAttr ".hc" -type "string" "viewSet -p %camera"; +createNode transform -s -n "top"; + rename -uid "CE1051E7-406B-1C9A-FBD0-4B9A57293A4F"; + setAttr ".v" no; + setAttr ".t" -type "double3" 0 1000.1 0 ; + setAttr ".r" -type "double3" -89.999999999999986 0 0 ; +createNode camera -s -n "topShape" -p "top"; + rename -uid "BB93CD62-469E-69F3-108B-E08EC9DEC48A"; + setAttr -k off ".v" no; + setAttr ".rnd" no; + setAttr ".coi" 1000.1; + setAttr ".ow" 30; + setAttr ".imn" -type "string" "top"; + setAttr ".den" -type "string" "top_depth"; + setAttr ".man" -type "string" "top_mask"; + setAttr ".hc" -type "string" "viewSet -t %camera"; + setAttr ".o" yes; +createNode transform -s -n "front"; + rename -uid "19B7E283-4BF5-67A5-5A34-889F4F94222B"; + setAttr ".v" no; + setAttr ".t" -type "double3" 0 0 1000.1 ; +createNode camera -s -n "frontShape" -p "front"; + rename -uid "FBE5ED9B-4103-602C-107A-F2BDDBEAA276"; + setAttr -k off ".v" no; + setAttr ".rnd" no; + setAttr ".coi" 1000.1; + setAttr ".ow" 30; + setAttr ".imn" -type "string" "front"; + setAttr ".den" -type "string" "front_depth"; + setAttr ".man" -type "string" "front_mask"; + setAttr ".hc" -type "string" "viewSet -f %camera"; + setAttr ".o" yes; +createNode transform -s -n "side"; + rename -uid "3FF600CD-41A1-5926-0545-6F89E84E794B"; + setAttr ".v" no; + setAttr ".t" -type "double3" 1000.1 0 0 ; + setAttr ".r" -type "double3" 0 89.999999999999986 0 ; +createNode camera -s -n "sideShape" -p "side"; + rename -uid "F67540FE-417E-719B-DBB5-8FB23E5C080A"; + setAttr -k off ".v" no; + setAttr ".rnd" no; + setAttr ".coi" 1000.1; + setAttr ".ow" 30; + setAttr ".imn" -type "string" "side"; + setAttr ".den" -type "string" "side_depth"; + setAttr ".man" -type "string" "side_mask"; + setAttr ".hc" -type "string" "viewSet -s %camera"; + setAttr ".o" yes; createNode transform -n "guide"; - rename -uid "410C1E3E-4D85-0458-ADAA-34AE47C82F33"; + rename -uid "EA964024-4563-ACF7-31AD-0AAF5F11A2D4"; addAttr -ci true -sn "rig_name" -ln "rig_name" -dt "string"; addAttr -ci true -k true -sn "mode" -ln "mode" -min 0 -max 1 -en "Final:WIP" -at "enum"; addAttr -ci true -k true -sn "step" -ln "step" -min 0 -max 6 -en "All Steps:Objects:Properties:Operators:Connect:Joints:Finalize" -at "enum"; - addAttr -ci true -sn "ismodel" -ln "ismodel" -min 0 -max 1 -at "bool"; + addAttr -ci true -sn "ismodel" -ln "ismodel" -dv 1 -min 0 -max 1 -at "bool"; addAttr -ci true -sn "classicChannelNames" -ln "classicChannelNames" -min 0 -max 1 -at "bool"; - addAttr -ci true -sn "proxyChannels" -ln "proxyChannels" -min 0 -max 1 -at "bool"; - addAttr -ci true -sn "worldCtl" -ln "worldCtl" -min 0 -max 1 -at "bool"; + addAttr -ci true -sn "proxyChannels" -ln "proxyChannels" -dv 1 -min 0 -max 1 -at "bool"; + addAttr -ci true -sn "worldCtl" -ln "worldCtl" -dv 1 -min 0 -max 1 -at "bool"; addAttr -ci true -sn "importSkin" -ln "importSkin" -min 0 -max 1 -at "bool"; addAttr -ci true -sn "skin" -ln "skin" -dt "string"; - addAttr -ci true -sn "L_color_fk" -ln "L_color_fk" -min 0 -max 31 -at "long"; - addAttr -ci true -sn "L_color_ik" -ln "L_color_ik" -min 0 -max 31 -at "long"; - addAttr -ci true -sn "R_color_fk" -ln "R_color_fk" -min 0 -max 31 -at "long"; - addAttr -ci true -sn "R_color_ik" -ln "R_color_ik" -min 0 -max 31 -at "long"; - addAttr -ci true -sn "C_color_fk" -ln "C_color_fk" -min 0 -max 31 -at "long"; - addAttr -ci true -sn "C_color_ik" -ln "C_color_ik" -min 0 -max 31 -at "long"; - addAttr -ci true -sn "joint_rig" -ln "joint_rig" -min 0 -max 1 -at "bool"; + addAttr -ci true -sn "L_color_fk" -ln "L_color_fk" -dv 6 -min 0 -max 31 -at "long"; + addAttr -ci true -sn "L_color_ik" -ln "L_color_ik" -dv 18 -min 0 -max 31 -at "long"; + addAttr -ci true -sn "R_color_fk" -ln "R_color_fk" -dv 23 -min 0 -max 31 -at "long"; + addAttr -ci true -sn "R_color_ik" -ln "R_color_ik" -dv 14 -min 0 -max 31 -at "long"; + addAttr -ci true -sn "C_color_fk" -ln "C_color_fk" -dv 13 -min 0 -max 31 -at "long"; + addAttr -ci true -sn "C_color_ik" -ln "C_color_ik" -dv 17 -min 0 -max 31 -at "long"; + addAttr -ci true -sn "joint_rig" -ln "joint_rig" -dv 1 -min 0 -max 1 -at "bool"; addAttr -ci true -sn "synoptic" -ln "synoptic" -dt "string"; addAttr -ci true -sn "doPreCustomStep" -ln "doPreCustomStep" -min 0 -max 1 -at "bool"; addAttr -ci true -sn "doPostCustomStep" -ln "doPostCustomStep" -min 0 -max 1 -at "bool"; @@ -43,17 +104,7 @@ createNode transform -n "guide"; addAttr -ci true -sn "gear_version" -ln "gear_version" -dt "string"; setAttr ".rig_name" -type "string" "rig"; setAttr -k on ".step" 6; - setAttr ".ismodel" yes; - setAttr ".proxyChannels" yes; - setAttr ".worldCtl" yes; setAttr ".skin" -type "string" ""; - setAttr ".L_color_fk" 6; - setAttr ".L_color_ik" 18; - setAttr ".R_color_fk" 23; - setAttr ".R_color_ik" 14; - setAttr ".C_color_fk" 13; - setAttr ".C_color_ik" 17; - setAttr ".joint_rig" yes; setAttr ".synoptic" -type "string" "quadruped"; setAttr ".preCustomStep" -type "string" ""; setAttr ".postCustomStep" -type "string" ""; @@ -66,7 +117,7 @@ createNode transform -n "controllers_org" -p "guide"; rename -uid "CBDC45CE-4F83-DF55-84F8-268B4BD1DAFC"; setAttr ".v" no; createNode transform -n "global_C0_root" -p "guide"; - rename -uid "7E439C90-43C8-4669-35AC-1996F3ED419D"; + rename -uid "660091ED-4E91-D8D4-70E2-3EBC7D4E9F2A"; addAttr -ci true -sn "isGearGuide" -ln "isGearGuide" -dv 1 -min 0 -max 1 -at "bool"; addAttr -ci true -sn "comp_type" -ln "comp_type" -dt "string"; addAttr -ci true -sn "comp_name" -ln "comp_name" -dt "string"; @@ -78,22 +129,24 @@ createNode transform -n "global_C0_root" -p "guide"; addAttr -ci true -sn "icon" -ln "icon" -dt "string"; addAttr -ci true -sn "ikrefarray" -ln "ikrefarray" -dt "string"; addAttr -ci true -sn "joint" -ln "joint" -min 0 -max 1 -at "bool"; - addAttr -ci true -sn "uniScale" -ln "uniScale" -min 0 -max 1 -at "bool"; - addAttr -ci true -sn "k_tx" -ln "k_tx" -min 0 -max 1 -at "bool"; - addAttr -ci true -sn "k_ty" -ln "k_ty" -min 0 -max 1 -at "bool"; - addAttr -ci true -sn "k_tz" -ln "k_tz" -min 0 -max 1 -at "bool"; - addAttr -ci true -sn "k_ro" -ln "k_ro" -min 0 -max 1 -at "bool"; - addAttr -ci true -sn "k_rx" -ln "k_rx" -min 0 -max 1 -at "bool"; - addAttr -ci true -sn "k_ry" -ln "k_ry" -min 0 -max 1 -at "bool"; - addAttr -ci true -sn "k_rz" -ln "k_rz" -min 0 -max 1 -at "bool"; - addAttr -ci true -sn "k_sx" -ln "k_sx" -min 0 -max 1 -at "bool"; - addAttr -ci true -sn "k_sy" -ln "k_sy" -min 0 -max 1 -at "bool"; - addAttr -ci true -sn "k_sz" -ln "k_sz" -min 0 -max 1 -at "bool"; + addAttr -ci true -sn "uniScale" -ln "uniScale" -dv 1 -min 0 -max 1 -at "bool"; + addAttr -ci true -sn "k_tx" -ln "k_tx" -dv 1 -min 0 -max 1 -at "bool"; + addAttr -ci true -sn "k_ty" -ln "k_ty" -dv 1 -min 0 -max 1 -at "bool"; + addAttr -ci true -sn "k_tz" -ln "k_tz" -dv 1 -min 0 -max 1 -at "bool"; + addAttr -ci true -sn "k_ro" -ln "k_ro" -dv 1 -min 0 -max 1 -at "bool"; + addAttr -ci true -sn "k_rx" -ln "k_rx" -dv 1 -min 0 -max 1 -at "bool"; + addAttr -ci true -sn "k_ry" -ln "k_ry" -dv 1 -min 0 -max 1 -at "bool"; + addAttr -ci true -sn "k_rz" -ln "k_rz" -dv 1 -min 0 -max 1 -at "bool"; + addAttr -ci true -sn "k_sx" -ln "k_sx" -dv 1 -min 0 -max 1 -at "bool"; + addAttr -ci true -sn "k_sy" -ln "k_sy" -dv 1 -min 0 -max 1 -at "bool"; + addAttr -ci true -sn "k_sz" -ln "k_sz" -dv 1 -min 0 -max 1 -at "bool"; addAttr -ci true -sn "default_rotorder" -ln "default_rotorder" -min 0 -max 5 -at "long"; - addAttr -ci true -sn "neutralRotation" -ln "neutralRotation" -min 0 -max 1 -at "bool"; - addAttr -ci true -sn "ctlSize" -ln "ctlSize" -at "double"; + addAttr -ci true -sn "neutralRotation" -ln "neutralRotation" -dv 1 -min 0 -max 1 + -at "bool"; + addAttr -ci true -sn "mirrorBehaviour" -ln "mirrorBehaviour" -min 0 -max 1 -at "bool"; + addAttr -ci true -sn "ctlSize" -ln "ctlSize" -dv 6 -at "double"; addAttr -ci true -sn "useIndex" -ln "useIndex" -min 0 -max 1 -at "bool"; - addAttr -ci true -sn "parentJointIndex" -ln "parentJointIndex" -at "long"; + addAttr -ci true -sn "parentJointIndex" -ln "parentJointIndex" -dv -1 -at "long"; setAttr -k off -cb on ".v"; setAttr -k off -cb on ".tx"; setAttr -k off -cb on ".ty"; @@ -113,22 +166,8 @@ createNode transform -n "global_C0_root" -p "guide"; setAttr ".ctlGrp" -type "string" ""; setAttr ".icon" -type "string" "square"; setAttr ".ikrefarray" -type "string" ""; - setAttr ".uniScale" yes; - setAttr ".k_tx" yes; - setAttr ".k_ty" yes; - setAttr ".k_tz" yes; - setAttr ".k_ro" yes; - setAttr ".k_rx" yes; - setAttr ".k_ry" yes; - setAttr ".k_rz" yes; - setAttr ".k_sx" yes; - setAttr ".k_sy" yes; - setAttr ".k_sz" yes; - setAttr ".neutralRotation" yes; - setAttr ".ctlSize" 6; - setAttr ".parentJointIndex" -1; createNode nurbsCurve -n "global_C0_rootShape" -p "global_C0_root"; - rename -uid "9DE7DA98-4BE3-E410-4133-788B40892D98"; + rename -uid "C8B82674-47E4-327C-FB18-A7B80B7C8342"; setAttr ".ihi" 0; setAttr -k off ".v"; setAttr ".ove" yes; @@ -140,8 +179,8 @@ createNode nurbsCurve -n "global_C0_rootShape" -p "global_C0_root"; 0.25 0 0 -0.25 0 0 ; -createNode nurbsCurve -n "global_C0_root1Shape" -p "global_C0_root"; - rename -uid "29B21D6A-43AF-C63D-784F-9490393FCE62"; +createNode nurbsCurve -n "global_C0_root4Shape" -p "global_C0_root"; + rename -uid "6759D4BB-4FE3-1D97-62A0-2A862E260705"; setAttr ".ihi" 0; setAttr -k off ".v"; setAttr ".ove" yes; @@ -153,8 +192,8 @@ createNode nurbsCurve -n "global_C0_root1Shape" -p "global_C0_root"; 0 0.25 0 0 -0.25 0 ; -createNode nurbsCurve -n "global_C0_root2Shape" -p "global_C0_root"; - rename -uid "4DE8A3CB-446B-11ED-090C-3BA0D6DFA6D0"; +createNode nurbsCurve -n "global_C0_root5Shape" -p "global_C0_root"; + rename -uid "92A4D1B4-4FE8-9AC6-88FA-B68C14313E3D"; setAttr ".ihi" 0; setAttr -k off ".v"; setAttr ".ove" yes; @@ -166,8 +205,8 @@ createNode nurbsCurve -n "global_C0_root2Shape" -p "global_C0_root"; 0 0 0.25 0 0 -0.25 ; -createNode nurbsCurve -n "global_C0_root3Shape" -p "global_C0_root"; - rename -uid "22BD5B2B-46CA-BC24-94AE-309490400CD2"; +createNode nurbsCurve -n "global_C0_root6Shape" -p "global_C0_root"; + rename -uid "2D94F61E-4959-B85A-D6D1-2F86F4579F72"; setAttr ".ihi" 0; setAttr -k off ".v"; setAttr ".ove" yes; @@ -194,7 +233,7 @@ createNode nurbsCurve -n "global_C0_root3Shape" -p "global_C0_root"; -0.125 -0.125 -0.125 ; createNode transform -n "global_C0_sizeRef" -p "global_C0_root"; - rename -uid "EB35E645-4074-703A-59B2-E1A9093FE10B"; + rename -uid "40A2BD95-4561-DC27-859E-5A903CC80CB1"; addAttr -ci true -sn "isGearGuide" -ln "isGearGuide" -dv 1 -min 0 -max 1 -at "bool"; setAttr -k off -cb on ".v"; setAttr ".t" -type "double3" 0 0 1 ; @@ -209,7 +248,7 @@ createNode transform -n "global_C0_sizeRef" -p "global_C0_root"; setAttr -k off -cb on ".sy"; setAttr -k off -cb on ".sz"; createNode transform -n "local_C0_root" -p "global_C0_root"; - rename -uid "405AE403-4794-3F7D-B313-07A799E44214"; + rename -uid "599BEF03-4C7D-AD94-05B1-6C9A5CA0A5D1"; addAttr -ci true -sn "isGearGuide" -ln "isGearGuide" -dv 1 -min 0 -max 1 -at "bool"; addAttr -ci true -sn "comp_type" -ln "comp_type" -dt "string"; addAttr -ci true -sn "comp_name" -ln "comp_name" -dt "string"; @@ -221,22 +260,24 @@ createNode transform -n "local_C0_root" -p "global_C0_root"; addAttr -ci true -sn "icon" -ln "icon" -dt "string"; addAttr -ci true -sn "ikrefarray" -ln "ikrefarray" -dt "string"; addAttr -ci true -sn "joint" -ln "joint" -min 0 -max 1 -at "bool"; - addAttr -ci true -sn "uniScale" -ln "uniScale" -min 0 -max 1 -at "bool"; - addAttr -ci true -sn "k_tx" -ln "k_tx" -min 0 -max 1 -at "bool"; - addAttr -ci true -sn "k_ty" -ln "k_ty" -min 0 -max 1 -at "bool"; - addAttr -ci true -sn "k_tz" -ln "k_tz" -min 0 -max 1 -at "bool"; - addAttr -ci true -sn "k_ro" -ln "k_ro" -min 0 -max 1 -at "bool"; - addAttr -ci true -sn "k_rx" -ln "k_rx" -min 0 -max 1 -at "bool"; - addAttr -ci true -sn "k_ry" -ln "k_ry" -min 0 -max 1 -at "bool"; - addAttr -ci true -sn "k_rz" -ln "k_rz" -min 0 -max 1 -at "bool"; - addAttr -ci true -sn "k_sx" -ln "k_sx" -min 0 -max 1 -at "bool"; - addAttr -ci true -sn "k_sy" -ln "k_sy" -min 0 -max 1 -at "bool"; - addAttr -ci true -sn "k_sz" -ln "k_sz" -min 0 -max 1 -at "bool"; + addAttr -ci true -sn "uniScale" -ln "uniScale" -dv 1 -min 0 -max 1 -at "bool"; + addAttr -ci true -sn "k_tx" -ln "k_tx" -dv 1 -min 0 -max 1 -at "bool"; + addAttr -ci true -sn "k_ty" -ln "k_ty" -dv 1 -min 0 -max 1 -at "bool"; + addAttr -ci true -sn "k_tz" -ln "k_tz" -dv 1 -min 0 -max 1 -at "bool"; + addAttr -ci true -sn "k_ro" -ln "k_ro" -dv 1 -min 0 -max 1 -at "bool"; + addAttr -ci true -sn "k_rx" -ln "k_rx" -dv 1 -min 0 -max 1 -at "bool"; + addAttr -ci true -sn "k_ry" -ln "k_ry" -dv 1 -min 0 -max 1 -at "bool"; + addAttr -ci true -sn "k_rz" -ln "k_rz" -dv 1 -min 0 -max 1 -at "bool"; + addAttr -ci true -sn "k_sx" -ln "k_sx" -dv 1 -min 0 -max 1 -at "bool"; + addAttr -ci true -sn "k_sy" -ln "k_sy" -dv 1 -min 0 -max 1 -at "bool"; + addAttr -ci true -sn "k_sz" -ln "k_sz" -dv 1 -min 0 -max 1 -at "bool"; addAttr -ci true -sn "default_rotorder" -ln "default_rotorder" -min 0 -max 5 -at "long"; - addAttr -ci true -sn "neutralRotation" -ln "neutralRotation" -min 0 -max 1 -at "bool"; - addAttr -ci true -sn "ctlSize" -ln "ctlSize" -at "double"; + addAttr -ci true -sn "neutralRotation" -ln "neutralRotation" -dv 1 -min 0 -max 1 + -at "bool"; + addAttr -ci true -sn "mirrorBehaviour" -ln "mirrorBehaviour" -min 0 -max 1 -at "bool"; + addAttr -ci true -sn "ctlSize" -ln "ctlSize" -dv 5 -at "double"; addAttr -ci true -sn "useIndex" -ln "useIndex" -min 0 -max 1 -at "bool"; - addAttr -ci true -sn "parentJointIndex" -ln "parentJointIndex" -at "long"; + addAttr -ci true -sn "parentJointIndex" -ln "parentJointIndex" -dv -1 -at "long"; setAttr -k off -cb on ".v"; setAttr -k off -cb on ".tx"; setAttr -k off -cb on ".ty"; @@ -256,22 +297,8 @@ createNode transform -n "local_C0_root" -p "global_C0_root"; setAttr ".ctlGrp" -type "string" ""; setAttr ".icon" -type "string" "square"; setAttr ".ikrefarray" -type "string" ""; - setAttr ".uniScale" yes; - setAttr ".k_tx" yes; - setAttr ".k_ty" yes; - setAttr ".k_tz" yes; - setAttr ".k_ro" yes; - setAttr ".k_rx" yes; - setAttr ".k_ry" yes; - setAttr ".k_rz" yes; - setAttr ".k_sx" yes; - setAttr ".k_sy" yes; - setAttr ".k_sz" yes; - setAttr ".neutralRotation" yes; - setAttr ".ctlSize" 5; - setAttr ".parentJointIndex" -1; createNode nurbsCurve -n "local_C0_rootShape" -p "local_C0_root"; - rename -uid "8FDF3F4E-4E07-4D9E-9AD4-4480B30BD737"; + rename -uid "A9542A6F-45D7-D924-A443-8F951F13F878"; setAttr ".ihi" 0; setAttr -k off ".v"; setAttr ".ove" yes; @@ -283,8 +310,8 @@ createNode nurbsCurve -n "local_C0_rootShape" -p "local_C0_root"; 0.25 0 0 -0.25 0 0 ; -createNode nurbsCurve -n "local_C0_root19Shape" -p "local_C0_root"; - rename -uid "08FED65C-463F-3950-608F-1BB097361465"; +createNode nurbsCurve -n "local_C0_root22Shape" -p "local_C0_root"; + rename -uid "FEBB4DEE-452E-59FD-E866-009EBD77D54D"; setAttr ".ihi" 0; setAttr -k off ".v"; setAttr ".ove" yes; @@ -296,8 +323,8 @@ createNode nurbsCurve -n "local_C0_root19Shape" -p "local_C0_root"; 0 0.25 0 0 -0.25 0 ; -createNode nurbsCurve -n "local_C0_root20Shape" -p "local_C0_root"; - rename -uid "6A80E677-4AAB-0CCA-902A-F9A549DB37FA"; +createNode nurbsCurve -n "local_C0_root23Shape" -p "local_C0_root"; + rename -uid "2D083F6D-4158-460D-6468-D38F5A1A5781"; setAttr ".ihi" 0; setAttr -k off ".v"; setAttr ".ove" yes; @@ -309,8 +336,8 @@ createNode nurbsCurve -n "local_C0_root20Shape" -p "local_C0_root"; 0 0 0.25 0 0 -0.25 ; -createNode nurbsCurve -n "local_C0_root21Shape" -p "local_C0_root"; - rename -uid "A7AF4883-443B-AC56-5626-799262DE0C74"; +createNode nurbsCurve -n "local_C0_root24Shape" -p "local_C0_root"; + rename -uid "0CD4D46B-408E-3B9C-321A-DA8D629B6925"; setAttr ".ihi" 0; setAttr -k off ".v"; setAttr ".ove" yes; @@ -337,7 +364,7 @@ createNode nurbsCurve -n "local_C0_root21Shape" -p "local_C0_root"; -0.125 -0.125 -0.125 ; createNode transform -n "local_C0_sizeRef" -p "local_C0_root"; - rename -uid "F01DBB5B-4BB7-F196-2DAF-AA8CFDB5D8FF"; + rename -uid "E9B66B5F-4952-DD59-6417-35910705511D"; addAttr -ci true -sn "isGearGuide" -ln "isGearGuide" -dv 1 -min 0 -max 1 -at "bool"; setAttr -k off -cb on ".v"; setAttr ".t" -type "double3" 0 0 1 ; @@ -352,7 +379,7 @@ createNode transform -n "local_C0_sizeRef" -p "local_C0_root"; setAttr -k off -cb on ".sy"; setAttr -k off -cb on ".sz"; createNode transform -n "body_C0_root" -p "local_C0_root"; - rename -uid "451B26AC-40C5-9589-BDB5-8C831E7055FA"; + rename -uid "2CCC3379-4ED2-1CC5-CCA8-AA9E86F5D710"; addAttr -ci true -sn "isGearGuide" -ln "isGearGuide" -dv 1 -min 0 -max 1 -at "bool"; addAttr -ci true -sn "comp_type" -ln "comp_type" -dt "string"; addAttr -ci true -sn "comp_name" -ln "comp_name" -dt "string"; @@ -364,22 +391,24 @@ createNode transform -n "body_C0_root" -p "local_C0_root"; addAttr -ci true -sn "icon" -ln "icon" -dt "string"; addAttr -ci true -sn "ikrefarray" -ln "ikrefarray" -dt "string"; addAttr -ci true -sn "joint" -ln "joint" -min 0 -max 1 -at "bool"; - addAttr -ci true -sn "uniScale" -ln "uniScale" -min 0 -max 1 -at "bool"; - addAttr -ci true -sn "k_tx" -ln "k_tx" -min 0 -max 1 -at "bool"; - addAttr -ci true -sn "k_ty" -ln "k_ty" -min 0 -max 1 -at "bool"; - addAttr -ci true -sn "k_tz" -ln "k_tz" -min 0 -max 1 -at "bool"; - addAttr -ci true -sn "k_ro" -ln "k_ro" -min 0 -max 1 -at "bool"; - addAttr -ci true -sn "k_rx" -ln "k_rx" -min 0 -max 1 -at "bool"; - addAttr -ci true -sn "k_ry" -ln "k_ry" -min 0 -max 1 -at "bool"; - addAttr -ci true -sn "k_rz" -ln "k_rz" -min 0 -max 1 -at "bool"; - addAttr -ci true -sn "k_sx" -ln "k_sx" -min 0 -max 1 -at "bool"; - addAttr -ci true -sn "k_sy" -ln "k_sy" -min 0 -max 1 -at "bool"; - addAttr -ci true -sn "k_sz" -ln "k_sz" -min 0 -max 1 -at "bool"; + addAttr -ci true -sn "uniScale" -ln "uniScale" -dv 1 -min 0 -max 1 -at "bool"; + addAttr -ci true -sn "k_tx" -ln "k_tx" -dv 1 -min 0 -max 1 -at "bool"; + addAttr -ci true -sn "k_ty" -ln "k_ty" -dv 1 -min 0 -max 1 -at "bool"; + addAttr -ci true -sn "k_tz" -ln "k_tz" -dv 1 -min 0 -max 1 -at "bool"; + addAttr -ci true -sn "k_ro" -ln "k_ro" -dv 1 -min 0 -max 1 -at "bool"; + addAttr -ci true -sn "k_rx" -ln "k_rx" -dv 1 -min 0 -max 1 -at "bool"; + addAttr -ci true -sn "k_ry" -ln "k_ry" -dv 1 -min 0 -max 1 -at "bool"; + addAttr -ci true -sn "k_rz" -ln "k_rz" -dv 1 -min 0 -max 1 -at "bool"; + addAttr -ci true -sn "k_sx" -ln "k_sx" -dv 1 -min 0 -max 1 -at "bool"; + addAttr -ci true -sn "k_sy" -ln "k_sy" -dv 1 -min 0 -max 1 -at "bool"; + addAttr -ci true -sn "k_sz" -ln "k_sz" -dv 1 -min 0 -max 1 -at "bool"; addAttr -ci true -sn "default_rotorder" -ln "default_rotorder" -min 0 -max 5 -at "long"; - addAttr -ci true -sn "neutralRotation" -ln "neutralRotation" -min 0 -max 1 -at "bool"; - addAttr -ci true -sn "ctlSize" -ln "ctlSize" -at "double"; + addAttr -ci true -sn "neutralRotation" -ln "neutralRotation" -dv 1 -min 0 -max 1 + -at "bool"; + addAttr -ci true -sn "mirrorBehaviour" -ln "mirrorBehaviour" -min 0 -max 1 -at "bool"; + addAttr -ci true -sn "ctlSize" -ln "ctlSize" -dv 1 -at "double"; addAttr -ci true -sn "useIndex" -ln "useIndex" -min 0 -max 1 -at "bool"; - addAttr -ci true -sn "parentJointIndex" -ln "parentJointIndex" -at "long"; + addAttr -ci true -sn "parentJointIndex" -ln "parentJointIndex" -dv -1 -at "long"; setAttr -k off -cb on ".v"; setAttr ".t" -type "double3" 0 2.4202715014858764 -1.2332282831689589 ; setAttr -k off -cb on ".tx"; @@ -400,22 +429,8 @@ createNode transform -n "body_C0_root" -p "local_C0_root"; setAttr ".ctlGrp" -type "string" ""; setAttr ".icon" -type "string" "square"; setAttr ".ikrefarray" -type "string" ""; - setAttr ".uniScale" yes; - setAttr ".k_tx" yes; - setAttr ".k_ty" yes; - setAttr ".k_tz" yes; - setAttr ".k_ro" yes; - setAttr ".k_rx" yes; - setAttr ".k_ry" yes; - setAttr ".k_rz" yes; - setAttr ".k_sx" yes; - setAttr ".k_sy" yes; - setAttr ".k_sz" yes; - setAttr ".neutralRotation" yes; - setAttr ".ctlSize" 1; - setAttr ".parentJointIndex" -1; createNode nurbsCurve -n "body_C0_rootShape" -p "body_C0_root"; - rename -uid "6DBF09CB-48AF-D001-24AD-E8848CA337EE"; + rename -uid "9718C0F9-43BE-5173-F6AA-8C97C95CBDBD"; setAttr ".ihi" 0; setAttr -k off ".v"; setAttr ".ove" yes; @@ -427,8 +442,8 @@ createNode nurbsCurve -n "body_C0_rootShape" -p "body_C0_root"; 0.25 0 0 -0.25 0 0 ; -createNode nurbsCurve -n "body_C0_root19Shape" -p "body_C0_root"; - rename -uid "9E0BBBAE-4396-9590-2F31-CA8E1287EBF2"; +createNode nurbsCurve -n "body_C0_root22Shape" -p "body_C0_root"; + rename -uid "9E78CF7E-474D-C8BB-81DD-E398E0C2E72D"; setAttr ".ihi" 0; setAttr -k off ".v"; setAttr ".ove" yes; @@ -440,8 +455,8 @@ createNode nurbsCurve -n "body_C0_root19Shape" -p "body_C0_root"; 0 0.25 0 0 -0.25 0 ; -createNode nurbsCurve -n "body_C0_root20Shape" -p "body_C0_root"; - rename -uid "A4F91249-4671-B0AB-3E67-91A1254087D9"; +createNode nurbsCurve -n "body_C0_root23Shape" -p "body_C0_root"; + rename -uid "E869FFB8-4D5C-6806-0FAA-BBB46AC6AC38"; setAttr ".ihi" 0; setAttr -k off ".v"; setAttr ".ove" yes; @@ -453,8 +468,8 @@ createNode nurbsCurve -n "body_C0_root20Shape" -p "body_C0_root"; 0 0 0.25 0 0 -0.25 ; -createNode nurbsCurve -n "body_C0_root21Shape" -p "body_C0_root"; - rename -uid "4652393D-41C3-09A0-37E9-D1A2AC75279C"; +createNode nurbsCurve -n "body_C0_root24Shape" -p "body_C0_root"; + rename -uid "D8DA2DC4-4376-E4D0-2497-F29AEB981C29"; setAttr ".ihi" 0; setAttr -k off ".v"; setAttr ".ove" yes; @@ -481,7 +496,7 @@ createNode nurbsCurve -n "body_C0_root21Shape" -p "body_C0_root"; -0.125 -0.125 -0.125 ; createNode transform -n "body_C0_sizeRef" -p "body_C0_root"; - rename -uid "24C4187A-4210-C1C0-11D8-8D969E0AA58A"; + rename -uid "07E64100-4B30-4A3B-5397-45AA50575235"; addAttr -ci true -sn "isGearGuide" -ln "isGearGuide" -dv 1 -min 0 -max 1 -at "bool"; setAttr -k off -cb on ".v"; setAttr ".t" -type "double3" 0 0 1 ; @@ -496,7 +511,7 @@ createNode transform -n "body_C0_sizeRef" -p "body_C0_root"; setAttr -k off -cb on ".sy"; setAttr -k off -cb on ".sz"; createNode transform -n "spine_C0_root" -p "body_C0_root"; - rename -uid "2D61D14F-4D50-BD47-770B-A8B3F0821123"; + rename -uid "8854EBB0-484B-7F77-F745-B591CFD6F05B"; addAttr -ci true -sn "isGearGuide" -ln "isGearGuide" -dv 1 -min 0 -max 1 -at "bool"; addAttr -ci true -sn "comp_type" -ln "comp_type" -dt "string"; addAttr -ci true -sn "comp_name" -ln "comp_name" -dt "string"; @@ -506,17 +521,17 @@ createNode transform -n "spine_C0_root" -p "body_C0_root"; addAttr -ci true -sn "ui_host" -ln "ui_host" -dt "string"; addAttr -ci true -sn "ctlGrp" -ln "ctlGrp" -dt "string"; addAttr -ci true -sn "position" -ln "position" -min 0 -max 1 -at "double"; - addAttr -ci true -sn "maxstretch" -ln "maxstretch" -dv 1 -min 1 -at "double"; - addAttr -ci true -sn "maxsquash" -ln "maxsquash" -min 0 -max 1 -at "double"; + addAttr -ci true -sn "maxstretch" -ln "maxstretch" -dv 1.5 -min 1 -at "double"; + addAttr -ci true -sn "maxsquash" -ln "maxsquash" -dv 0.5 -min 0 -max 1 -at "double"; addAttr -ci true -sn "softness" -ln "softness" -min 0 -max 1 -at "double"; - addAttr -ci true -sn "lock_ori" -ln "lock_ori" -min 0 -max 1 -at "double"; - addAttr -ci true -sn "division" -ln "division" -dv 3 -min 3 -at "long"; + addAttr -ci true -sn "lock_ori" -ln "lock_ori" -dv 1 -min 0 -max 1 -at "double"; + addAttr -ci true -sn "division" -ln "division" -dv 5 -min 3 -at "long"; addAttr -ci true -sn "autoBend" -ln "autoBend" -min 0 -max 1 -at "bool"; - addAttr -ci true -sn "centralTangent" -ln "centralTangent" -min 0 -max 1 -at "bool"; + addAttr -ci true -sn "centralTangent" -ln "centralTangent" -dv 1 -min 0 -max 1 -at "bool"; addAttr -ci true -k true -sn "st_profile" -ln "st_profile" -at "double"; addAttr -ci true -k true -sn "sq_profile" -ln "sq_profile" -at "double"; addAttr -ci true -sn "useIndex" -ln "useIndex" -min 0 -max 1 -at "bool"; - addAttr -ci true -sn "parentJointIndex" -ln "parentJointIndex" -at "long"; + addAttr -ci true -sn "parentJointIndex" -ln "parentJointIndex" -dv -1 -at "long"; setAttr -k off -cb on ".v"; setAttr -k off -cb on ".tx"; setAttr -k off -cb on ".ty"; @@ -536,16 +551,10 @@ createNode transform -n "spine_C0_root" -p "body_C0_root"; setAttr ".connector" -type "string" "standard"; setAttr ".ui_host" -type "string" "spineUI_C0_root"; setAttr ".ctlGrp" -type "string" ""; - setAttr ".maxstretch" 1.5; - setAttr ".maxsquash" 0.5; - setAttr ".lock_ori" 1; - setAttr ".division" 5; - setAttr ".centralTangent" yes; setAttr -k on ".st_profile"; setAttr -k on ".sq_profile"; - setAttr ".parentJointIndex" -1; createNode nurbsCurve -n "spine_C0_rootShape" -p "spine_C0_root"; - rename -uid "D76AD581-456B-E27F-44BA-F5A1784FD0DF"; + rename -uid "1DA1289E-48DD-01BB-58AF-31B909E52D39"; setAttr ".ihi" 0; setAttr -k off ".v"; setAttr ".ove" yes; @@ -557,8 +566,8 @@ createNode nurbsCurve -n "spine_C0_rootShape" -p "spine_C0_root"; 0.25 0 0 -0.25 0 0 ; -createNode nurbsCurve -n "spine_C0_root19Shape" -p "spine_C0_root"; - rename -uid "DC9EF553-495F-D0EB-14D3-A4864CC23908"; +createNode nurbsCurve -n "spine_C0_root22Shape" -p "spine_C0_root"; + rename -uid "2516BC6F-4DFF-3F5A-E4AB-1F855CB43CF8"; setAttr ".ihi" 0; setAttr -k off ".v"; setAttr ".ove" yes; @@ -570,8 +579,8 @@ createNode nurbsCurve -n "spine_C0_root19Shape" -p "spine_C0_root"; 0 0.25 0 0 -0.25 0 ; -createNode nurbsCurve -n "spine_C0_root20Shape" -p "spine_C0_root"; - rename -uid "DD3C41DA-4396-1679-1EF0-C595E9F86BA8"; +createNode nurbsCurve -n "spine_C0_root23Shape" -p "spine_C0_root"; + rename -uid "EAF18990-43DB-11A7-D48D-CFB2573F6A45"; setAttr ".ihi" 0; setAttr -k off ".v"; setAttr ".ove" yes; @@ -583,8 +592,8 @@ createNode nurbsCurve -n "spine_C0_root20Shape" -p "spine_C0_root"; 0 0 0.25 0 0 -0.25 ; -createNode nurbsCurve -n "spine_C0_root21Shape" -p "spine_C0_root"; - rename -uid "C6AE6BA9-4EB6-BF48-6B20-559C5FA5F2C9"; +createNode nurbsCurve -n "spine_C0_root24Shape" -p "spine_C0_root"; + rename -uid "23039AAE-4915-4A85-0E2F-6094C8FA395E"; setAttr ".ihi" 0; setAttr -k off ".v"; setAttr ".ove" yes; @@ -611,10 +620,10 @@ createNode nurbsCurve -n "spine_C0_root21Shape" -p "spine_C0_root"; -0.125 -0.125 -0.125 ; createNode transform -n "spine_C0_eff" -p "spine_C0_root"; - rename -uid "52A6854A-4465-C098-9686-329099BE9914"; + rename -uid "30D8C3C0-49BB-DE7C-4AEF-56AEC3AE2D51"; addAttr -ci true -sn "isGearGuide" -ln "isGearGuide" -dv 1 -min 0 -max 1 -at "bool"; setAttr -k off -cb on ".v"; - setAttr ".t" -type "double3" 0 6.6115768831256645 -2.9361299538902146e-015 ; + setAttr ".t" -type "double3" 0 6.6115768831256645 -2.9361299538902142e-015 ; setAttr -k off -cb on ".tx"; setAttr -k off -cb on ".ty"; setAttr -k off -cb on ".tz"; @@ -626,7 +635,7 @@ createNode transform -n "spine_C0_eff" -p "spine_C0_root"; setAttr -k off -cb on ".sy"; setAttr -k off -cb on ".sz"; createNode nurbsCurve -n "spine_C0_effShape" -p "spine_C0_eff"; - rename -uid "F1B99CBE-42C4-2385-E001-989ECBAFA5B1"; + rename -uid "A4DAA3B3-46D9-93EF-6328-79BFB7B0E4C9"; setAttr ".ihi" 0; setAttr -k off ".v"; setAttr ".ove" yes; @@ -638,8 +647,8 @@ createNode nurbsCurve -n "spine_C0_effShape" -p "spine_C0_eff"; 0.25 0 0 -0.25 0 0 ; -createNode nurbsCurve -n "spine_C0_eff19Shape" -p "spine_C0_eff"; - rename -uid "24A6D6EA-484C-C934-3FBF-3E8BDB43A9DB"; +createNode nurbsCurve -n "spine_C0_eff22Shape" -p "spine_C0_eff"; + rename -uid "CFE7D3C1-4997-8DB1-A450-2A92972257D2"; setAttr ".ihi" 0; setAttr -k off ".v"; setAttr ".ove" yes; @@ -651,8 +660,8 @@ createNode nurbsCurve -n "spine_C0_eff19Shape" -p "spine_C0_eff"; 0 0.25 0 0 -0.25 0 ; -createNode nurbsCurve -n "spine_C0_eff20Shape" -p "spine_C0_eff"; - rename -uid "4E603BDB-47B4-6C33-72E2-3493E6FC5A87"; +createNode nurbsCurve -n "spine_C0_eff23Shape" -p "spine_C0_eff"; + rename -uid "9A465314-4470-7599-A12D-D4BAB2A0D356"; setAttr ".ihi" 0; setAttr -k off ".v"; setAttr ".ove" yes; @@ -664,8 +673,8 @@ createNode nurbsCurve -n "spine_C0_eff20Shape" -p "spine_C0_eff"; 0 0 0.25 0 0 -0.25 ; -createNode nurbsCurve -n "spine_C0_eff21Shape" -p "spine_C0_eff"; - rename -uid "2BF99C1E-4047-2BD2-9CCF-C391DB2C8838"; +createNode nurbsCurve -n "spine_C0_eff24Shape" -p "spine_C0_eff"; + rename -uid "981FF206-47A9-B58F-D080-96BB60FA2C15"; setAttr ".ihi" 0; setAttr -k off ".v"; setAttr ".ove" yes; @@ -682,8 +691,8 @@ createNode nurbsCurve -n "spine_C0_eff21Shape" -p "spine_C0_eff"; 0 -0.1875 0 -0.1875 0 0 ; -createNode nurbsCurve -n "spine_C0_eff21_0crvShape" -p "spine_C0_eff"; - rename -uid "72264602-4963-EE92-62EF-2DA5C09C2239"; +createNode nurbsCurve -n "spine_C0_eff24_0crvShape" -p "spine_C0_eff"; + rename -uid "858AC638-4A1F-E93D-A4CF-078C8F8AA721"; setAttr ".ihi" 0; setAttr -k off ".v"; setAttr ".ove" yes; @@ -700,8 +709,8 @@ createNode nurbsCurve -n "spine_C0_eff21_0crvShape" -p "spine_C0_eff"; 0 0 -0.1875 -0.1875 0 0 ; -createNode nurbsCurve -n "spine_C0_eff21_1crvShape" -p "spine_C0_eff"; - rename -uid "B985523F-468F-24E8-9E2A-E8B371A5A6F6"; +createNode nurbsCurve -n "spine_C0_eff24_1crvShape" -p "spine_C0_eff"; + rename -uid "0682D80E-4A27-0C7B-6860-EEAF0FD5EBDE"; setAttr ".ihi" 0; setAttr -k off ".v"; setAttr ".ove" yes; @@ -719,7 +728,7 @@ createNode nurbsCurve -n "spine_C0_eff21_1crvShape" -p "spine_C0_eff"; 0 0 -0.1875 ; createNode transform -n "neck_C0_root" -p "spine_C0_eff"; - rename -uid "2DDDB7B0-45F4-7CF9-9F99-87897C37E0D7"; + rename -uid "47B90BAA-4EFA-A524-AF63-FA95BA7B9E5C"; addAttr -ci true -sn "isGearGuide" -ln "isGearGuide" -dv 1 -min 0 -max 1 -at "bool"; addAttr -ci true -sn "comp_type" -ln "comp_type" -dt "string"; addAttr -ci true -sn "comp_name" -ln "comp_name" -dt "string"; @@ -730,17 +739,18 @@ createNode transform -n "neck_C0_root" -p "spine_C0_eff"; addAttr -ci true -sn "ctlGrp" -ln "ctlGrp" -dt "string"; addAttr -ci true -sn "headrefarray" -ln "headrefarray" -dt "string"; addAttr -ci true -sn "ikrefarray" -ln "ikrefarray" -dt "string"; - addAttr -ci true -sn "maxstretch" -ln "maxstretch" -dv 1 -min 1 -at "double"; - addAttr -ci true -sn "maxsquash" -ln "maxsquash" -min 0 -max 1 -at "double"; + addAttr -ci true -sn "maxstretch" -ln "maxstretch" -dv 1.5 -min 1 -at "double"; + addAttr -ci true -sn "maxsquash" -ln "maxsquash" -dv 0.5 -min 0 -max 1 -at "double"; addAttr -ci true -sn "softness" -ln "softness" -min 0 -max 1 -at "double"; - addAttr -ci true -sn "division" -ln "division" -dv 3 -min 3 -at "long"; - addAttr -ci true -sn "tangentControls" -ln "tangentControls" -min 0 -max 1 -at "bool"; + addAttr -ci true -sn "division" -ln "division" -dv 5 -min 3 -at "long"; + addAttr -ci true -sn "tangentControls" -ln "tangentControls" -dv 1 -min 0 -max 1 + -at "bool"; addAttr -ci true -k true -sn "st_profile" -ln "st_profile" -at "double"; addAttr -ci true -k true -sn "sq_profile" -ln "sq_profile" -at "double"; addAttr -ci true -sn "useIndex" -ln "useIndex" -min 0 -max 1 -at "bool"; - addAttr -ci true -sn "parentJointIndex" -ln "parentJointIndex" -at "long"; + addAttr -ci true -sn "parentJointIndex" -ln "parentJointIndex" -dv -1 -at "long"; setAttr -k off -cb on ".v"; - setAttr ".t" -type "double3" -0.11164111249562403 0.36062523614417152 -1.1057116273629473e-016 ; + setAttr ".t" -type "double3" -0.11164111249562403 0.36062523614417152 -1.1057116273629454e-016 ; setAttr -k off -cb on ".tx"; setAttr -k off -cb on ".ty"; setAttr -k off -cb on ".tz"; @@ -761,15 +771,10 @@ createNode transform -n "neck_C0_root" -p "spine_C0_eff"; setAttr ".ctlGrp" -type "string" ""; setAttr ".headrefarray" -type "string" ""; setAttr ".ikrefarray" -type "string" ""; - setAttr ".maxstretch" 1.5; - setAttr ".maxsquash" 0.5; - setAttr ".division" 5; - setAttr ".tangentControls" yes; setAttr -k on ".st_profile"; setAttr -k on ".sq_profile"; - setAttr ".parentJointIndex" -1; createNode nurbsCurve -n "neck_C0_rootShape" -p "neck_C0_root"; - rename -uid "4E4B5B2B-4CB2-70BF-90A5-078548AF1681"; + rename -uid "553A31FF-42CA-F40E-8C9D-84A00506DBD6"; setAttr ".ihi" 0; setAttr -k off ".v"; setAttr ".ove" yes; @@ -781,8 +786,8 @@ createNode nurbsCurve -n "neck_C0_rootShape" -p "neck_C0_root"; 0.25 0 0 -0.25 0 0 ; -createNode nurbsCurve -n "neck_C0_root19Shape" -p "neck_C0_root"; - rename -uid "16537738-424A-AD15-EF90-089722B0F996"; +createNode nurbsCurve -n "neck_C0_root22Shape" -p "neck_C0_root"; + rename -uid "1F0EF364-47E3-9901-82B2-0792BBE0B189"; setAttr ".ihi" 0; setAttr -k off ".v"; setAttr ".ove" yes; @@ -794,8 +799,8 @@ createNode nurbsCurve -n "neck_C0_root19Shape" -p "neck_C0_root"; 0 0.25 0 0 -0.25 0 ; -createNode nurbsCurve -n "neck_C0_root20Shape" -p "neck_C0_root"; - rename -uid "C09420C9-44AB-9C9B-C3B0-EBA99BE6AD5B"; +createNode nurbsCurve -n "neck_C0_root23Shape" -p "neck_C0_root"; + rename -uid "18A05ED3-45CB-BF15-7E71-998C4CB5F4FC"; setAttr ".ihi" 0; setAttr -k off ".v"; setAttr ".ove" yes; @@ -807,8 +812,8 @@ createNode nurbsCurve -n "neck_C0_root20Shape" -p "neck_C0_root"; 0 0 0.25 0 0 -0.25 ; -createNode nurbsCurve -n "neck_C0_root21Shape" -p "neck_C0_root"; - rename -uid "5C5A1F7C-443D-5A0D-FEA1-54B9B57932C1"; +createNode nurbsCurve -n "neck_C0_root24Shape" -p "neck_C0_root"; + rename -uid "30500D70-4939-2AEE-C22D-66B55480CE35"; setAttr ".ihi" 0; setAttr -k off ".v"; setAttr ".ove" yes; @@ -835,10 +840,10 @@ createNode nurbsCurve -n "neck_C0_root21Shape" -p "neck_C0_root"; -0.125 -0.125 -0.125 ; createNode transform -n "neck_C0_neck" -p "neck_C0_root"; - rename -uid "A5047793-44C6-5EB8-FF80-69A8A0608B54"; + rename -uid "0D356E1B-47A8-8717-83B4-CFBF635A7672"; addAttr -ci true -sn "isGearGuide" -ln "isGearGuide" -dv 1 -min 0 -max 1 -at "bool"; setAttr -k off -cb on ".v"; - setAttr ".t" -type "double3" -0.24124837670655674 3.6642870257638149 -8.7131531609605358e-016 ; + setAttr ".t" -type "double3" -0.24124837670655674 3.6642870257638149 -8.7131531609605555e-016 ; setAttr -k off -cb on ".tx"; setAttr -k off -cb on ".ty"; setAttr -k off -cb on ".tz"; @@ -846,12 +851,12 @@ createNode transform -n "neck_C0_neck" -p "neck_C0_root"; setAttr -k off -cb on ".ry"; setAttr -k off -cb on ".rz"; setAttr -cb on ".ro"; - setAttr ".s" -type "double3" 1.0000000000000009 1 1.0000000000000002 ; + setAttr ".s" -type "double3" 1.0000000000000011 1 1.0000000000000007 ; setAttr -k off -cb on ".sx"; setAttr -k off -cb on ".sy"; setAttr -k off -cb on ".sz"; createNode nurbsCurve -n "neck_C0_neckShape" -p "neck_C0_neck"; - rename -uid "05A66C1F-4D97-00BC-C1F4-BC96AC64EFD2"; + rename -uid "C020E8D5-4F7D-6B29-0DA0-D685A00A9CFD"; setAttr ".ihi" 0; setAttr -k off ".v"; setAttr ".ove" yes; @@ -863,8 +868,8 @@ createNode nurbsCurve -n "neck_C0_neckShape" -p "neck_C0_neck"; 0.25 0 0 -0.25 0 0 ; -createNode nurbsCurve -n "neck_C0_neck19Shape" -p "neck_C0_neck"; - rename -uid "659A8B36-4472-02EF-0070-EEB931EE1E42"; +createNode nurbsCurve -n "neck_C0_neck22Shape" -p "neck_C0_neck"; + rename -uid "2A47CEA9-4CEB-D58A-009D-BC8C89B4EDD1"; setAttr ".ihi" 0; setAttr -k off ".v"; setAttr ".ove" yes; @@ -876,8 +881,8 @@ createNode nurbsCurve -n "neck_C0_neck19Shape" -p "neck_C0_neck"; 0 0.25 0 0 -0.25 0 ; -createNode nurbsCurve -n "neck_C0_neck20Shape" -p "neck_C0_neck"; - rename -uid "83C3A1C4-4190-94B8-9E46-6690D4CD83F1"; +createNode nurbsCurve -n "neck_C0_neck23Shape" -p "neck_C0_neck"; + rename -uid "24FAC434-43F8-5B6E-EC54-93AE826E4CF5"; setAttr ".ihi" 0; setAttr -k off ".v"; setAttr ".ove" yes; @@ -889,8 +894,8 @@ createNode nurbsCurve -n "neck_C0_neck20Shape" -p "neck_C0_neck"; 0 0 0.25 0 0 -0.25 ; -createNode nurbsCurve -n "neck_C0_neck21Shape" -p "neck_C0_neck"; - rename -uid "05BC8718-4B7F-8EFB-5DA1-A19276CC3D2B"; +createNode nurbsCurve -n "neck_C0_neck24Shape" -p "neck_C0_neck"; + rename -uid "63CB5148-4B79-DD92-AD2C-E1986F7D14BB"; setAttr ".ihi" 0; setAttr -k off ".v"; setAttr ".ove" yes; @@ -907,8 +912,8 @@ createNode nurbsCurve -n "neck_C0_neck21Shape" -p "neck_C0_neck"; 0 -0.1875 0 -0.1875 0 0 ; -createNode nurbsCurve -n "neck_C0_neck21_0crvShape" -p "neck_C0_neck"; - rename -uid "39DA5915-4EFA-2A81-2C18-139826F84B44"; +createNode nurbsCurve -n "neck_C0_neck24_0crvShape" -p "neck_C0_neck"; + rename -uid "D7228223-4D14-1AA3-A085-AFA73C82210D"; setAttr ".ihi" 0; setAttr -k off ".v"; setAttr ".ove" yes; @@ -925,8 +930,8 @@ createNode nurbsCurve -n "neck_C0_neck21_0crvShape" -p "neck_C0_neck"; 0 0 -0.1875 -0.1875 0 0 ; -createNode nurbsCurve -n "neck_C0_neck21_1crvShape" -p "neck_C0_neck"; - rename -uid "4BEE180B-476B-39EF-5365-AA89E8FB24B4"; +createNode nurbsCurve -n "neck_C0_neck24_1crvShape" -p "neck_C0_neck"; + rename -uid "B4C3BA46-415D-3BD1-E6AB-3E85565A645A"; setAttr ".ihi" 0; setAttr -k off ".v"; setAttr ".ove" yes; @@ -944,10 +949,10 @@ createNode nurbsCurve -n "neck_C0_neck21_1crvShape" -p "neck_C0_neck"; 0 0 -0.1875 ; createNode transform -n "neck_C0_head" -p "neck_C0_neck"; - rename -uid "F8152750-4C21-D28A-A0EC-9D9A53AFC41C"; + rename -uid "9BA8DCA9-4B5B-9D4F-2F5E-BA86B627BBD9"; addAttr -ci true -sn "isGearGuide" -ln "isGearGuide" -dv 1 -min 0 -max 1 -at "bool"; setAttr -k off -cb on ".v"; - setAttr ".t" -type "double3" 2.6645352591003757e-015 -7.1054273576010019e-015 3.7470892997998061e-030 ; + setAttr ".t" -type "double3" 3.5527136788005009e-015 -7.1054273576010019e-015 5.4727225299707694e-030 ; setAttr -k off -cb on ".tx"; setAttr -k off -cb on ".ty"; setAttr -k off -cb on ".tz"; @@ -956,12 +961,12 @@ createNode transform -n "neck_C0_head" -p "neck_C0_neck"; setAttr -k off -cb on ".ry"; setAttr -k off -cb on ".rz"; setAttr -cb on ".ro"; - setAttr ".s" -type "double3" 0.99999999999999933 0.999999999999999 0.99999999999999978 ; + setAttr ".s" -type "double3" 0.99999999999999933 0.99999999999999878 0.99999999999999933 ; setAttr -k off -cb on ".sx"; setAttr -k off -cb on ".sy"; setAttr -k off -cb on ".sz"; createNode nurbsCurve -n "neck_C0_headShape" -p "neck_C0_head"; - rename -uid "60969E24-4485-B51F-D635-F0B86219158E"; + rename -uid "1397A51B-4BF5-AE11-7318-72A65DDAAAE0"; setAttr ".ihi" 0; setAttr -k off ".v"; setAttr ".ove" yes; @@ -973,8 +978,8 @@ createNode nurbsCurve -n "neck_C0_headShape" -p "neck_C0_head"; 0.25 0 0 -0.25 0 0 ; -createNode nurbsCurve -n "neck_C0_head19Shape" -p "neck_C0_head"; - rename -uid "30494E3C-493F-F56F-9CA8-A088C2DB6E75"; +createNode nurbsCurve -n "neck_C0_head22Shape" -p "neck_C0_head"; + rename -uid "13E98317-4326-BB9C-906D-E585C55AC7A5"; setAttr ".ihi" 0; setAttr -k off ".v"; setAttr ".ove" yes; @@ -986,8 +991,8 @@ createNode nurbsCurve -n "neck_C0_head19Shape" -p "neck_C0_head"; 0 0.25 0 0 -0.25 0 ; -createNode nurbsCurve -n "neck_C0_head20Shape" -p "neck_C0_head"; - rename -uid "BC2FE157-456F-1CE4-A26E-02BFBA3ECA6A"; +createNode nurbsCurve -n "neck_C0_head23Shape" -p "neck_C0_head"; + rename -uid "5E1C78A0-4071-CDF1-87D5-6F9921068C78"; setAttr ".ihi" 0; setAttr -k off ".v"; setAttr ".ove" yes; @@ -999,8 +1004,8 @@ createNode nurbsCurve -n "neck_C0_head20Shape" -p "neck_C0_head"; 0 0 0.25 0 0 -0.25 ; -createNode nurbsCurve -n "neck_C0_head21Shape" -p "neck_C0_head"; - rename -uid "9D675684-4B3B-6AE8-0DFB-99B45E04FF69"; +createNode nurbsCurve -n "neck_C0_head24Shape" -p "neck_C0_head"; + rename -uid "0D692FD8-483C-50ED-F6F3-A3AF9CB022A2"; setAttr ".ihi" 0; setAttr -k off ".v"; setAttr ".ove" yes; @@ -1017,8 +1022,8 @@ createNode nurbsCurve -n "neck_C0_head21Shape" -p "neck_C0_head"; 0 -0.1875 0 -0.1875 0 0 ; -createNode nurbsCurve -n "neck_C0_head21_0crvShape" -p "neck_C0_head"; - rename -uid "ADEDFA4B-4F54-04B9-67EE-0EA5CF5F62FC"; +createNode nurbsCurve -n "neck_C0_head24_0crvShape" -p "neck_C0_head"; + rename -uid "7CFCC455-467C-DF28-B238-F998AC9A9D2A"; setAttr ".ihi" 0; setAttr -k off ".v"; setAttr ".ove" yes; @@ -1035,8 +1040,8 @@ createNode nurbsCurve -n "neck_C0_head21_0crvShape" -p "neck_C0_head"; 0 0 -0.1875 -0.1875 0 0 ; -createNode nurbsCurve -n "neck_C0_head21_1crvShape" -p "neck_C0_head"; - rename -uid "AA88DF36-428C-253E-2295-B78D1E7D9FAD"; +createNode nurbsCurve -n "neck_C0_head24_1crvShape" -p "neck_C0_head"; + rename -uid "FE6F196A-4743-3F5F-F4AA-57A5A76750CA"; setAttr ".ihi" 0; setAttr -k off ".v"; setAttr ".ove" yes; @@ -1054,10 +1059,10 @@ createNode nurbsCurve -n "neck_C0_head21_1crvShape" -p "neck_C0_head"; 0 0 -0.1875 ; createNode transform -n "neck_C0_eff" -p "neck_C0_head"; - rename -uid "D9FFE892-486F-775C-574A-0D94A0310E4D"; + rename -uid "D17DB9AA-41AE-6F82-5CFA-3C83598B1989"; addAttr -ci true -sn "isGearGuide" -ln "isGearGuide" -dv 1 -min 0 -max 1 -at "bool"; setAttr -k off -cb on ".v"; - setAttr ".t" -type "double3" 0.028362147187278808 2.6770463465994707 4.5418821062020015e-015 ; + setAttr ".t" -type "double3" 0.028362147187275255 2.6770463465994698 4.541882106202e-015 ; setAttr -k off -cb on ".tx"; setAttr -k off -cb on ".ty"; setAttr -k off -cb on ".tz"; @@ -1065,12 +1070,12 @@ createNode transform -n "neck_C0_eff" -p "neck_C0_head"; setAttr -k off -cb on ".ry"; setAttr -k off -cb on ".rz"; setAttr -cb on ".ro"; - setAttr ".s" -type "double3" 1.0000000000000002 1.0000000000000007 1.0000000000000002 ; + setAttr ".s" -type "double3" 1.0000000000000002 1.0000000000000004 1.0000000000000002 ; setAttr -k off -cb on ".sx"; setAttr -k off -cb on ".sy"; setAttr -k off -cb on ".sz"; createNode nurbsCurve -n "neck_C0_effShape" -p "neck_C0_eff"; - rename -uid "00E52EBA-4947-369D-0D0F-F3B998CFA1CB"; + rename -uid "FCD08A25-462B-5828-F504-F386D8B9A61B"; setAttr ".ihi" 0; setAttr -k off ".v"; setAttr ".ove" yes; @@ -1082,8 +1087,8 @@ createNode nurbsCurve -n "neck_C0_effShape" -p "neck_C0_eff"; 0.25 0 0 -0.25 0 0 ; -createNode nurbsCurve -n "neck_C0_eff19Shape" -p "neck_C0_eff"; - rename -uid "D19650E0-45E8-0833-24C2-B68494BCF733"; +createNode nurbsCurve -n "neck_C0_eff22Shape" -p "neck_C0_eff"; + rename -uid "A15E8346-4F3F-3613-324E-F995A32888F0"; setAttr ".ihi" 0; setAttr -k off ".v"; setAttr ".ove" yes; @@ -1095,8 +1100,8 @@ createNode nurbsCurve -n "neck_C0_eff19Shape" -p "neck_C0_eff"; 0 0.25 0 0 -0.25 0 ; -createNode nurbsCurve -n "neck_C0_eff20Shape" -p "neck_C0_eff"; - rename -uid "96F18B0F-45C0-3850-F4BF-1B859D5286D7"; +createNode nurbsCurve -n "neck_C0_eff23Shape" -p "neck_C0_eff"; + rename -uid "197F5289-4651-D3BA-336B-A89FE8855D5B"; setAttr ".ihi" 0; setAttr -k off ".v"; setAttr ".ove" yes; @@ -1108,8 +1113,8 @@ createNode nurbsCurve -n "neck_C0_eff20Shape" -p "neck_C0_eff"; 0 0 0.25 0 0 -0.25 ; -createNode nurbsCurve -n "neck_C0_eff21Shape" -p "neck_C0_eff"; - rename -uid "B007CA0C-4D61-4282-44FB-AD9E4A826226"; +createNode nurbsCurve -n "neck_C0_eff24Shape" -p "neck_C0_eff"; + rename -uid "C54F5E1C-48E7-F359-41F3-048B6371AE30"; setAttr ".ihi" 0; setAttr -k off ".v"; setAttr ".ove" yes; @@ -1126,8 +1131,8 @@ createNode nurbsCurve -n "neck_C0_eff21Shape" -p "neck_C0_eff"; 0 -0.1875 0 -0.1875 0 0 ; -createNode nurbsCurve -n "neck_C0_eff21_0crvShape" -p "neck_C0_eff"; - rename -uid "715DBFE7-4DDA-A8BF-79E0-A68117246001"; +createNode nurbsCurve -n "neck_C0_eff24_0crvShape" -p "neck_C0_eff"; + rename -uid "1ABDBFDF-492D-88E2-8888-65A36EC57FAF"; setAttr ".ihi" 0; setAttr -k off ".v"; setAttr ".ove" yes; @@ -1144,8 +1149,8 @@ createNode nurbsCurve -n "neck_C0_eff21_0crvShape" -p "neck_C0_eff"; 0 0 -0.1875 -0.1875 0 0 ; -createNode nurbsCurve -n "neck_C0_eff21_1crvShape" -p "neck_C0_eff"; - rename -uid "2CF08974-40CC-99CC-4FBD-7EB14D74C482"; +createNode nurbsCurve -n "neck_C0_eff24_1crvShape" -p "neck_C0_eff"; + rename -uid "E394A3F4-48C0-C686-6763-05ABB047015E"; setAttr ".ihi" 0; setAttr -k off ".v"; setAttr ".ove" yes; @@ -1163,7 +1168,7 @@ createNode nurbsCurve -n "neck_C0_eff21_1crvShape" -p "neck_C0_eff"; 0 0 -0.1875 ; createNode transform -n "spineUI_C0_root" -p "neck_C0_eff"; - rename -uid "9C17D727-4F3D-AC3C-418B-61887B3E7543"; + rename -uid "59586D3F-437D-B95A-E7B3-32BF16139C76"; addAttr -ci true -sn "isGearGuide" -ln "isGearGuide" -dv 1 -min 0 -max 1 -at "bool"; addAttr -ci true -sn "comp_type" -ln "comp_type" -dt "string"; addAttr -ci true -sn "comp_name" -ln "comp_name" -dt "string"; @@ -1175,7 +1180,7 @@ createNode transform -n "spineUI_C0_root" -p "neck_C0_eff"; addAttr -ci true -sn "icon" -ln "icon" -dt "string"; addAttr -ci true -sn "ikrefarray" -ln "ikrefarray" -dt "string"; addAttr -ci true -sn "joint" -ln "joint" -min 0 -max 1 -at "bool"; - addAttr -ci true -sn "uniScale" -ln "uniScale" -min 0 -max 1 -at "bool"; + addAttr -ci true -sn "uniScale" -ln "uniScale" -dv 1 -min 0 -max 1 -at "bool"; addAttr -ci true -sn "k_tx" -ln "k_tx" -min 0 -max 1 -at "bool"; addAttr -ci true -sn "k_ty" -ln "k_ty" -min 0 -max 1 -at "bool"; addAttr -ci true -sn "k_tz" -ln "k_tz" -min 0 -max 1 -at "bool"; @@ -1187,21 +1192,23 @@ createNode transform -n "spineUI_C0_root" -p "neck_C0_eff"; addAttr -ci true -sn "k_sy" -ln "k_sy" -min 0 -max 1 -at "bool"; addAttr -ci true -sn "k_sz" -ln "k_sz" -min 0 -max 1 -at "bool"; addAttr -ci true -sn "default_rotorder" -ln "default_rotorder" -min 0 -max 5 -at "long"; - addAttr -ci true -sn "neutralRotation" -ln "neutralRotation" -min 0 -max 1 -at "bool"; - addAttr -ci true -sn "ctlSize" -ln "ctlSize" -at "double"; + addAttr -ci true -sn "neutralRotation" -ln "neutralRotation" -dv 1 -min 0 -max 1 + -at "bool"; + addAttr -ci true -sn "mirrorBehaviour" -ln "mirrorBehaviour" -min 0 -max 1 -at "bool"; + addAttr -ci true -sn "ctlSize" -ln "ctlSize" -dv 1 -at "double"; addAttr -ci true -sn "useIndex" -ln "useIndex" -min 0 -max 1 -at "bool"; - addAttr -ci true -sn "parentJointIndex" -ln "parentJointIndex" -at "long"; + addAttr -ci true -sn "parentJointIndex" -ln "parentJointIndex" -dv -1 -at "long"; setAttr -k off -cb on ".v"; - setAttr ".t" -type "double3" -3.2992211017816819 -0.74362823191861871 -4.3347348183670675 ; + setAttr ".t" -type "double3" -3.2992211017816793 -0.74362823191861693 -4.3347348183670693 ; setAttr -k off -cb on ".tx"; setAttr -k off -cb on ".ty"; setAttr -k off -cb on ".tz"; - setAttr ".r" -type "double3" 0.038224192844409803 89.999999999999957 0 ; + setAttr ".r" -type "double3" 0.038224192844406001 89.999999999999957 0 ; setAttr -k off -cb on ".rx"; setAttr -k off -cb on ".ry"; setAttr -k off -cb on ".rz"; setAttr -cb on ".ro"; - setAttr ".s" -type "double3" 2.3915882794427561 2.3915882794427552 2.3915882794427579 ; + setAttr ".s" -type "double3" 2.391588279442757 2.3915882794427556 2.3915882794427583 ; setAttr -k off -cb on ".sx"; setAttr -k off -cb on ".sy"; setAttr -k off -cb on ".sz"; @@ -1213,12 +1220,8 @@ createNode transform -n "spineUI_C0_root" -p "neck_C0_eff"; setAttr ".ctlGrp" -type "string" ""; setAttr ".icon" -type "string" "cross"; setAttr ".ikrefarray" -type "string" ""; - setAttr ".uniScale" yes; - setAttr ".neutralRotation" yes; - setAttr ".ctlSize" 1; - setAttr ".parentJointIndex" -1; createNode nurbsCurve -n "spineUI_C0_rootShape" -p "spineUI_C0_root"; - rename -uid "D85D3E23-45C4-3DE4-F9D0-7198FEFAE47D"; + rename -uid "B66352C3-4D24-B286-0E70-D693328FA173"; setAttr ".ihi" 0; setAttr -k off ".v"; setAttr ".ove" yes; @@ -1230,8 +1233,8 @@ createNode nurbsCurve -n "spineUI_C0_rootShape" -p "spineUI_C0_root"; 0.25 0 0 -0.25 0 0 ; -createNode nurbsCurve -n "spineUI_C0_root19Shape" -p "spineUI_C0_root"; - rename -uid "CDA45FEC-4ED3-2DDD-13D1-BA8BA46AC4B3"; +createNode nurbsCurve -n "spineUI_C0_root22Shape" -p "spineUI_C0_root"; + rename -uid "BF1B2478-4AE2-3294-71DA-699AC21CAE7A"; setAttr ".ihi" 0; setAttr -k off ".v"; setAttr ".ove" yes; @@ -1243,8 +1246,8 @@ createNode nurbsCurve -n "spineUI_C0_root19Shape" -p "spineUI_C0_root"; 0 0.25 0 0 -0.25 0 ; -createNode nurbsCurve -n "spineUI_C0_root20Shape" -p "spineUI_C0_root"; - rename -uid "FE176A1F-4B1B-3BDD-854C-6CB742DCCAE0"; +createNode nurbsCurve -n "spineUI_C0_root23Shape" -p "spineUI_C0_root"; + rename -uid "87A3AFD8-4645-28A5-C095-E3AC5F67D1EF"; setAttr ".ihi" 0; setAttr -k off ".v"; setAttr ".ove" yes; @@ -1256,8 +1259,8 @@ createNode nurbsCurve -n "spineUI_C0_root20Shape" -p "spineUI_C0_root"; 0 0 0.25 0 0 -0.25 ; -createNode nurbsCurve -n "spineUI_C0_root21Shape" -p "spineUI_C0_root"; - rename -uid "141C2F25-49DF-C23F-E6F9-90AE3D1BA2B7"; +createNode nurbsCurve -n "spineUI_C0_root24Shape" -p "spineUI_C0_root"; + rename -uid "6A8BF3CB-4190-9446-824D-66B48993D309"; setAttr ".ihi" 0; setAttr -k off ".v"; setAttr ".ove" yes; @@ -1284,10 +1287,10 @@ createNode nurbsCurve -n "spineUI_C0_root21Shape" -p "spineUI_C0_root"; -0.125 -0.125 -0.125 ; createNode transform -n "spineUI_C0_sizeRef" -p "spineUI_C0_root"; - rename -uid "2C6B53F2-4B4C-B7BC-9503-59AF5567F60C"; + rename -uid "47EF90FE-4F8B-2AE6-09D9-D28A93A76794"; addAttr -ci true -sn "isGearGuide" -ln "isGearGuide" -dv 1 -min 0 -max 1 -at "bool"; setAttr -k off -cb on ".v"; - setAttr ".t" -type "double3" 8.8817841970012523e-016 0 1 ; + setAttr ".t" -type "double3" 0 -8.8817841970012523e-016 0.99999999999999956 ; setAttr -k off -cb on ".tx"; setAttr -k off -cb on ".ty"; setAttr -k off -cb on ".tz"; @@ -1295,12 +1298,12 @@ createNode transform -n "spineUI_C0_sizeRef" -p "spineUI_C0_root"; setAttr -k off -cb on ".ry"; setAttr -k off -cb on ".rz"; setAttr -cb on ".ro"; - setAttr ".s" -type "double3" 1 1.0000000000000002 0.99999999999999967 ; + setAttr ".s" -type "double3" 0.99999999999999978 1.0000000000000002 0.99999999999999933 ; setAttr -k off -cb on ".sx"; setAttr -k off -cb on ".sy"; setAttr -k off -cb on ".sz"; createNode transform -n "headUI_C0_root" -p "neck_C0_eff"; - rename -uid "86BFFE5F-4011-B9DE-578D-918C39CFC7AC"; + rename -uid "634F1E41-4BA1-FA7F-B8B9-16A55D24F436"; addAttr -ci true -sn "isGearGuide" -ln "isGearGuide" -dv 1 -min 0 -max 1 -at "bool"; addAttr -ci true -sn "comp_type" -ln "comp_type" -dt "string"; addAttr -ci true -sn "comp_name" -ln "comp_name" -dt "string"; @@ -1312,7 +1315,7 @@ createNode transform -n "headUI_C0_root" -p "neck_C0_eff"; addAttr -ci true -sn "icon" -ln "icon" -dt "string"; addAttr -ci true -sn "ikrefarray" -ln "ikrefarray" -dt "string"; addAttr -ci true -sn "joint" -ln "joint" -min 0 -max 1 -at "bool"; - addAttr -ci true -sn "uniScale" -ln "uniScale" -min 0 -max 1 -at "bool"; + addAttr -ci true -sn "uniScale" -ln "uniScale" -dv 1 -min 0 -max 1 -at "bool"; addAttr -ci true -sn "k_tx" -ln "k_tx" -min 0 -max 1 -at "bool"; addAttr -ci true -sn "k_ty" -ln "k_ty" -min 0 -max 1 -at "bool"; addAttr -ci true -sn "k_tz" -ln "k_tz" -min 0 -max 1 -at "bool"; @@ -1324,12 +1327,14 @@ createNode transform -n "headUI_C0_root" -p "neck_C0_eff"; addAttr -ci true -sn "k_sy" -ln "k_sy" -min 0 -max 1 -at "bool"; addAttr -ci true -sn "k_sz" -ln "k_sz" -min 0 -max 1 -at "bool"; addAttr -ci true -sn "default_rotorder" -ln "default_rotorder" -min 0 -max 5 -at "long"; - addAttr -ci true -sn "neutralRotation" -ln "neutralRotation" -min 0 -max 1 -at "bool"; - addAttr -ci true -sn "ctlSize" -ln "ctlSize" -at "double"; + addAttr -ci true -sn "neutralRotation" -ln "neutralRotation" -dv 1 -min 0 -max 1 + -at "bool"; + addAttr -ci true -sn "mirrorBehaviour" -ln "mirrorBehaviour" -min 0 -max 1 -at "bool"; + addAttr -ci true -sn "ctlSize" -ln "ctlSize" -dv 0.5 -at "double"; addAttr -ci true -sn "useIndex" -ln "useIndex" -min 0 -max 1 -at "bool"; - addAttr -ci true -sn "parentJointIndex" -ln "parentJointIndex" -at "long"; + addAttr -ci true -sn "parentJointIndex" -ln "parentJointIndex" -dv -1 -at "long"; setAttr -k off -cb on ".v"; - setAttr ".t" -type "double3" 7.1054273576010019e-015 2.9303186274198669 6.1165723857933474e-016 ; + setAttr ".t" -type "double3" 1.0658141036401503e-014 2.9303186274198687 6.1165723857933553e-016 ; setAttr -k off -cb on ".tx"; setAttr -k off -cb on ".ty"; setAttr -k off -cb on ".tz"; @@ -1337,7 +1342,7 @@ createNode transform -n "headUI_C0_root" -p "neck_C0_eff"; setAttr -k off -cb on ".ry"; setAttr -k off -cb on ".rz"; setAttr -cb on ".ro"; - setAttr ".s" -type "double3" 1 0.99999999999999978 0.99999999999999967 ; + setAttr ".s" -type "double3" 1.0000000000000002 1 0.99999999999999989 ; setAttr -k off -cb on ".sx"; setAttr -k off -cb on ".sy"; setAttr -k off -cb on ".sz"; @@ -1349,12 +1354,8 @@ createNode transform -n "headUI_C0_root" -p "neck_C0_eff"; setAttr ".ctlGrp" -type "string" ""; setAttr ".icon" -type "string" "cross"; setAttr ".ikrefarray" -type "string" ""; - setAttr ".uniScale" yes; - setAttr ".neutralRotation" yes; - setAttr ".ctlSize" 0.5; - setAttr ".parentJointIndex" -1; createNode nurbsCurve -n "headUI_C0_rootShape" -p "headUI_C0_root"; - rename -uid "DFF72A63-4F69-C8A8-9F23-83BFB371AF9A"; + rename -uid "B6C1E8C5-4009-6C3E-AA4D-5895C2E19275"; setAttr ".ihi" 0; setAttr -k off ".v"; setAttr ".ove" yes; @@ -1366,8 +1367,8 @@ createNode nurbsCurve -n "headUI_C0_rootShape" -p "headUI_C0_root"; 0.25 0 0 -0.25 0 0 ; -createNode nurbsCurve -n "headUI_C0_root10Shape" -p "headUI_C0_root"; - rename -uid "B0AB637A-422A-7B98-6FB3-719BC1B4CA46"; +createNode nurbsCurve -n "headUI_C0_root13Shape" -p "headUI_C0_root"; + rename -uid "849D66D3-40FC-78E0-8E9A-86887103CE4E"; setAttr ".ihi" 0; setAttr -k off ".v"; setAttr ".ove" yes; @@ -1379,8 +1380,8 @@ createNode nurbsCurve -n "headUI_C0_root10Shape" -p "headUI_C0_root"; 0 0.25 0 0 -0.25 0 ; -createNode nurbsCurve -n "headUI_C0_root11Shape" -p "headUI_C0_root"; - rename -uid "E3707466-4785-DD98-12A5-4DB0F4E98AF6"; +createNode nurbsCurve -n "headUI_C0_root14Shape" -p "headUI_C0_root"; + rename -uid "245EEB45-43D7-EA6A-800E-6FBF3585078D"; setAttr ".ihi" 0; setAttr -k off ".v"; setAttr ".ove" yes; @@ -1392,8 +1393,8 @@ createNode nurbsCurve -n "headUI_C0_root11Shape" -p "headUI_C0_root"; 0 0 0.25 0 0 -0.25 ; -createNode nurbsCurve -n "headUI_C0_root12Shape" -p "headUI_C0_root"; - rename -uid "0997146B-4393-F307-2DDE-6E8780F50212"; +createNode nurbsCurve -n "headUI_C0_root15Shape" -p "headUI_C0_root"; + rename -uid "F06AF8B8-4622-7BC8-21B3-9C868D7CA982"; setAttr ".ihi" 0; setAttr -k off ".v"; setAttr ".ove" yes; @@ -1420,24 +1421,24 @@ createNode nurbsCurve -n "headUI_C0_root12Shape" -p "headUI_C0_root"; -0.125 -0.125 -0.125 ; createNode transform -n "headUI_C0_sizeRef" -p "headUI_C0_root"; - rename -uid "5853BD55-4B20-0CF7-3050-5EB7DBD981B1"; + rename -uid "977C0EA2-41DF-E0C9-712A-50A694BB47FD"; addAttr -ci true -sn "isGearGuide" -ln "isGearGuide" -dv 1 -min 0 -max 1 -at "bool"; setAttr -k off -cb on ".v"; - setAttr ".t" -type "double3" 2.3915877472269305 -0.0015955193487808828 -1.0620785493044065e-015 ; + setAttr ".t" -type "double3" 2.3915877472269269 -0.0015955193487791064 -1.0620785493044065e-015 ; setAttr -k off -cb on ".tx"; setAttr -k off -cb on ".ty"; setAttr -k off -cb on ".tz"; - setAttr ".r" -type "double3" 0.038224192844409817 89.999999999999957 0 ; + setAttr ".r" -type "double3" 0.038224192844406014 89.999999999999957 0 ; setAttr -k off -cb on ".rx"; setAttr -k off -cb on ".ry"; setAttr -k off -cb on ".rz"; setAttr -cb on ".ro"; - setAttr ".s" -type "double3" 2.3915882794427574 2.3915882794427561 2.391588279442757 ; + setAttr ".s" -type "double3" 2.3915882794427565 2.3915882794427561 2.3915882794427561 ; setAttr -k off -cb on ".sx"; setAttr -k off -cb on ".sy"; setAttr -k off -cb on ".sz"; createNode transform -n "mouth_C0_root" -p "neck_C0_head"; - rename -uid "36F0E7FF-4F27-224F-DE9A-3C8A3B3CA4F0"; + rename -uid "91557551-43A4-8822-B550-4BA0F8077897"; addAttr -ci true -sn "isGearGuide" -ln "isGearGuide" -dv 1 -min 0 -max 1 -at "bool"; addAttr -ci true -sn "comp_type" -ln "comp_type" -dt "string"; addAttr -ci true -sn "comp_name" -ln "comp_name" -dt "string"; @@ -1447,18 +1448,18 @@ createNode transform -n "mouth_C0_root" -p "neck_C0_head"; addAttr -ci true -sn "ui_host" -ln "ui_host" -dt "string"; addAttr -ci true -sn "ctlGrp" -ln "ctlGrp" -dt "string"; addAttr -ci true -sn "useIndex" -ln "useIndex" -min 0 -max 1 -at "bool"; - addAttr -ci true -sn "parentJointIndex" -ln "parentJointIndex" -at "long"; + addAttr -ci true -sn "parentJointIndex" -ln "parentJointIndex" -dv -1 -at "long"; setAttr -k off -cb on ".v"; - setAttr ".t" -type "double3" 0.69584514547310761 0.71792767893744003 1.4003887623375056e-015 ; + setAttr ".t" -type "double3" 0.69584514547310405 0.71792767893743914 1.4003887623375046e-015 ; setAttr -k off -cb on ".tx"; setAttr -k off -cb on ".ty"; setAttr -k off -cb on ".tz"; - setAttr ".r" -type "double3" 0.038224192844409824 89.999999999999957 0 ; + setAttr ".r" -type "double3" 0.038224192844406014 89.999999999999957 0 ; setAttr -k off -cb on ".rx"; setAttr -k off -cb on ".ry"; setAttr -k off -cb on ".rz"; setAttr -cb on ".ro"; - setAttr ".s" -type "double3" 0.5373820334294297 0.53738203342942958 0.53738203342943014 ; + setAttr ".s" -type "double3" 0.53738203342942958 0.53738203342942947 0.53738203342943014 ; setAttr -k off -cb on ".sx"; setAttr -k off -cb on ".sy"; setAttr -k off -cb on ".sz"; @@ -1468,9 +1469,8 @@ createNode transform -n "mouth_C0_root" -p "neck_C0_head"; setAttr ".connector" -type "string" "standard"; setAttr ".ui_host" -type "string" "headUI_C0_root"; setAttr ".ctlGrp" -type "string" ""; - setAttr ".parentJointIndex" -1; createNode nurbsCurve -n "mouth_C0_rootShape" -p "mouth_C0_root"; - rename -uid "40CA334A-42C3-8AB0-C612-A78F3AD9052E"; + rename -uid "CA270A76-4FE2-E556-814C-35B320D1A5F6"; setAttr ".ihi" 0; setAttr -k off ".v"; setAttr ".ove" yes; @@ -1482,8 +1482,8 @@ createNode nurbsCurve -n "mouth_C0_rootShape" -p "mouth_C0_root"; 0.25 0 0 -0.25 0 0 ; -createNode nurbsCurve -n "mouth_C0_root19Shape" -p "mouth_C0_root"; - rename -uid "711A2BEF-43E1-EB8A-E5DD-B2B621F46F6A"; +createNode nurbsCurve -n "mouth_C0_root22Shape" -p "mouth_C0_root"; + rename -uid "AB7A675A-42EC-E84D-4FE8-288BFE7C2F48"; setAttr ".ihi" 0; setAttr -k off ".v"; setAttr ".ove" yes; @@ -1495,8 +1495,8 @@ createNode nurbsCurve -n "mouth_C0_root19Shape" -p "mouth_C0_root"; 0 0.25 0 0 -0.25 0 ; -createNode nurbsCurve -n "mouth_C0_root20Shape" -p "mouth_C0_root"; - rename -uid "E9829553-4065-5BDC-EC31-0B82D3A71440"; +createNode nurbsCurve -n "mouth_C0_root23Shape" -p "mouth_C0_root"; + rename -uid "3683E301-41D8-0DAA-ABC3-B78624C29CF4"; setAttr ".ihi" 0; setAttr -k off ".v"; setAttr ".ove" yes; @@ -1508,8 +1508,8 @@ createNode nurbsCurve -n "mouth_C0_root20Shape" -p "mouth_C0_root"; 0 0 0.25 0 0 -0.25 ; -createNode nurbsCurve -n "mouth_C0_root21Shape" -p "mouth_C0_root"; - rename -uid "EA9C8A0E-4267-11D2-28D5-429D260E885E"; +createNode nurbsCurve -n "mouth_C0_root24Shape" -p "mouth_C0_root"; + rename -uid "4669D13F-4E4C-2E13-4094-499ACA6B91D4"; setAttr ".ihi" 0; setAttr -k off ".v"; setAttr ".ove" yes; @@ -1536,10 +1536,10 @@ createNode nurbsCurve -n "mouth_C0_root21Shape" -p "mouth_C0_root"; -0.125 -0.125 -0.125 ; createNode transform -n "mouth_C0_rotcenter" -p "mouth_C0_root"; - rename -uid "9E51B959-49A7-3E07-436C-F88554D53639"; + rename -uid "D9EA27ED-4561-7ABE-9371-F186F061298A"; addAttr -ci true -sn "isGearGuide" -ln "isGearGuide" -dv 1 -min 0 -max 1 -at "bool"; setAttr -k off -cb on ".v"; - setAttr ".t" -type "double3" 2.9976714398398449e-029 -3.5527136788005009e-015 2.1316282072803006e-014 ; + setAttr ".t" -type "double3" 3.3132158019282496e-029 -3.5527136788005009e-015 2.4868995751603507e-014 ; setAttr -k off -cb on ".tx"; setAttr -k off -cb on ".ty"; setAttr -k off -cb on ".tz"; @@ -1547,12 +1547,12 @@ createNode transform -n "mouth_C0_rotcenter" -p "mouth_C0_root"; setAttr -k off -cb on ".ry"; setAttr -k off -cb on ".rz"; setAttr -cb on ".ro"; - setAttr ".s" -type "double3" 0.999999999999999 0.99999999999999833 0.99999999999999845 ; + setAttr ".s" -type "double3" 0.99999999999999911 0.99999999999999833 0.99999999999999845 ; setAttr -k off -cb on ".sx"; setAttr -k off -cb on ".sy"; setAttr -k off -cb on ".sz"; createNode nurbsCurve -n "mouth_C0_rotcenterShape" -p "mouth_C0_rotcenter"; - rename -uid "CC0F29E5-4958-20E2-5EA6-CB92A21EC7F4"; + rename -uid "F756D1D8-405D-BF37-DEAC-E2A7AD30CA66"; setAttr ".ihi" 0; setAttr -k off ".v"; setAttr ".ove" yes; @@ -1564,8 +1564,8 @@ createNode nurbsCurve -n "mouth_C0_rotcenterShape" -p "mouth_C0_rotcenter"; 0.25 0 0 -0.25 0 0 ; -createNode nurbsCurve -n "mouth_C0_rotcenter19Shape" -p "mouth_C0_rotcenter"; - rename -uid "20FC48DF-4271-5A19-BA84-52BA51609F05"; +createNode nurbsCurve -n "mouth_C0_rotcenter22Shape" -p "mouth_C0_rotcenter"; + rename -uid "5BDA84D5-40C3-211D-AF7A-E48FDAF4DB5B"; setAttr ".ihi" 0; setAttr -k off ".v"; setAttr ".ove" yes; @@ -1577,8 +1577,8 @@ createNode nurbsCurve -n "mouth_C0_rotcenter19Shape" -p "mouth_C0_rotcenter"; 0 0.25 0 0 -0.25 0 ; -createNode nurbsCurve -n "mouth_C0_rotcenter20Shape" -p "mouth_C0_rotcenter"; - rename -uid "B82B5A8B-4551-F60D-81B4-2D9B32AF9B4A"; +createNode nurbsCurve -n "mouth_C0_rotcenter23Shape" -p "mouth_C0_rotcenter"; + rename -uid "C8A34795-448D-72D2-7060-508DB7F2AFE0"; setAttr ".ihi" 0; setAttr -k off ".v"; setAttr ".ove" yes; @@ -1590,8 +1590,8 @@ createNode nurbsCurve -n "mouth_C0_rotcenter20Shape" -p "mouth_C0_rotcenter"; 0 0 0.25 0 0 -0.25 ; -createNode nurbsCurve -n "mouth_C0_rotcenter21Shape" -p "mouth_C0_rotcenter"; - rename -uid "54F7A784-475B-8AF9-8AEB-599735F92152"; +createNode nurbsCurve -n "mouth_C0_rotcenter24Shape" -p "mouth_C0_rotcenter"; + rename -uid "72991C91-45D8-80CF-80E6-60A837E3FBF1"; setAttr ".ihi" 0; setAttr -k off ".v"; setAttr ".ove" yes; @@ -1608,8 +1608,8 @@ createNode nurbsCurve -n "mouth_C0_rotcenter21Shape" -p "mouth_C0_rotcenter"; 0 -0.1875 0 -0.1875 0 0 ; -createNode nurbsCurve -n "mouth_C0_rotcenter21_0crvShape" -p "mouth_C0_rotcenter"; - rename -uid "11DD6553-494B-51BB-014A-4D8F5A75F9BD"; +createNode nurbsCurve -n "mouth_C0_rotcenter24_0crvShape" -p "mouth_C0_rotcenter"; + rename -uid "86A4FCED-478C-8CDE-3E03-4CB9672D4A38"; setAttr ".ihi" 0; setAttr -k off ".v"; setAttr ".ove" yes; @@ -1626,8 +1626,8 @@ createNode nurbsCurve -n "mouth_C0_rotcenter21_0crvShape" -p "mouth_C0_rotcenter 0 0 -0.1875 -0.1875 0 0 ; -createNode nurbsCurve -n "mouth_C0_rotcenter21_1crvShape" -p "mouth_C0_rotcenter"; - rename -uid "C1889638-436C-19BA-8521-409E7E5D35A2"; +createNode nurbsCurve -n "mouth_C0_rotcenter24_1crvShape" -p "mouth_C0_rotcenter"; + rename -uid "A936D7FE-4BC8-C383-8F22-65A49571EA12"; setAttr ".ihi" 0; setAttr -k off ".v"; setAttr ".ove" yes; @@ -1645,10 +1645,10 @@ createNode nurbsCurve -n "mouth_C0_rotcenter21_1crvShape" -p "mouth_C0_rotcenter 0 0 -0.1875 ; createNode transform -n "mouth_C0_lipup" -p "mouth_C0_rotcenter"; - rename -uid "2B5E0084-4E43-6AD9-CD19-7189666A4EDE"; + rename -uid "126AE641-44CD-780D-6F44-A4A0200F8764"; addAttr -ci true -sn "isGearGuide" -ln "isGearGuide" -dv 1 -min 0 -max 1 -at "bool"; setAttr -k off -cb on ".v"; - setAttr ".t" -type "double3" 4.2971167579553764e-015 -0.83057537847144047 2.6485854255406984 ; + setAttr ".t" -type "double3" 4.2971167579553779e-015 -0.83057537847144047 2.6485854255406984 ; setAttr -k off -cb on ".tx"; setAttr -k off -cb on ".ty"; setAttr -k off -cb on ".tz"; @@ -1656,12 +1656,12 @@ createNode transform -n "mouth_C0_lipup" -p "mouth_C0_rotcenter"; setAttr -k off -cb on ".ry"; setAttr -k off -cb on ".rz"; setAttr -cb on ".ro"; - setAttr ".s" -type "double3" 0.99999999999999978 0.99999999999999944 0.99999999999999978 ; + setAttr ".s" -type "double3" 0.99999999999999967 0.99999999999999944 0.99999999999999956 ; setAttr -k off -cb on ".sx"; setAttr -k off -cb on ".sy"; setAttr -k off -cb on ".sz"; createNode nurbsCurve -n "mouth_C0_lipupShape" -p "mouth_C0_lipup"; - rename -uid "E6946427-4E6B-D365-D7E1-45BD2FD8871A"; + rename -uid "5EA25A74-4862-8E12-5382-848F892F0FE4"; setAttr ".ihi" 0; setAttr -k off ".v"; setAttr ".ove" yes; @@ -1673,8 +1673,8 @@ createNode nurbsCurve -n "mouth_C0_lipupShape" -p "mouth_C0_lipup"; 0.25 0 0 -0.25 0 0 ; -createNode nurbsCurve -n "mouth_C0_lipup19Shape" -p "mouth_C0_lipup"; - rename -uid "D0CB347F-42EB-F4A4-4585-779F698C31FE"; +createNode nurbsCurve -n "mouth_C0_lipup22Shape" -p "mouth_C0_lipup"; + rename -uid "C33AEF3B-43A2-3099-4774-6096A8E5D386"; setAttr ".ihi" 0; setAttr -k off ".v"; setAttr ".ove" yes; @@ -1686,8 +1686,8 @@ createNode nurbsCurve -n "mouth_C0_lipup19Shape" -p "mouth_C0_lipup"; 0 0.25 0 0 -0.25 0 ; -createNode nurbsCurve -n "mouth_C0_lipup20Shape" -p "mouth_C0_lipup"; - rename -uid "EA2C8128-4F2C-5D84-BE50-B7A4A6694E92"; +createNode nurbsCurve -n "mouth_C0_lipup23Shape" -p "mouth_C0_lipup"; + rename -uid "A0697985-446D-0FCE-2FE4-B9B58A8D949E"; setAttr ".ihi" 0; setAttr -k off ".v"; setAttr ".ove" yes; @@ -1699,8 +1699,8 @@ createNode nurbsCurve -n "mouth_C0_lipup20Shape" -p "mouth_C0_lipup"; 0 0 0.25 0 0 -0.25 ; -createNode nurbsCurve -n "mouth_C0_lipup21Shape" -p "mouth_C0_lipup"; - rename -uid "9F37C0A6-4349-7037-A343-07AC29E310DA"; +createNode nurbsCurve -n "mouth_C0_lipup24Shape" -p "mouth_C0_lipup"; + rename -uid "39BAF601-4C34-6B7A-BCB1-F39EA65B1A96"; setAttr ".ihi" 0; setAttr -k off ".v"; setAttr ".ove" yes; @@ -1717,8 +1717,8 @@ createNode nurbsCurve -n "mouth_C0_lipup21Shape" -p "mouth_C0_lipup"; 0 -0.1875 0 -0.1875 0 0 ; -createNode nurbsCurve -n "mouth_C0_lipup21_0crvShape" -p "mouth_C0_lipup"; - rename -uid "3E8764D8-417A-6F54-6CEC-B79D608CC44E"; +createNode nurbsCurve -n "mouth_C0_lipup24_0crvShape" -p "mouth_C0_lipup"; + rename -uid "F68A408F-41C0-D7AF-781B-30A1723CE72E"; setAttr ".ihi" 0; setAttr -k off ".v"; setAttr ".ove" yes; @@ -1735,8 +1735,8 @@ createNode nurbsCurve -n "mouth_C0_lipup21_0crvShape" -p "mouth_C0_lipup"; 0 0 -0.1875 -0.1875 0 0 ; -createNode nurbsCurve -n "mouth_C0_lipup21_1crvShape" -p "mouth_C0_lipup"; - rename -uid "F51B9F0C-414B-10E7-AE77-B090918C442F"; +createNode nurbsCurve -n "mouth_C0_lipup24_1crvShape" -p "mouth_C0_lipup"; + rename -uid "DC2919AC-4000-8CD1-BF71-E8979C937275"; setAttr ".ihi" 0; setAttr -k off ".v"; setAttr ".ove" yes; @@ -1754,18 +1754,18 @@ createNode nurbsCurve -n "mouth_C0_lipup21_1crvShape" -p "mouth_C0_lipup"; 0 0 -0.1875 ; createNode transform -n "mouth_C0_crv" -p "mouth_C0_lipup"; - rename -uid "DC6A1753-438B-B4FF-A408-C49BB28A8D46"; + rename -uid "2C70D9F8-4D19-B1E8-A9B9-05BDE026293D"; setAttr ".ovdt" 1; setAttr ".ove" yes; - setAttr ".t" -type "double3" -1.3722175990868861e-014 -14.161367226604183 -19.457469484456148 ; - setAttr ".s" -type "double3" 4.4504433171691238 4.4504433171691282 4.4504433171691229 ; + setAttr ".t" -type "double3" -1.3722175990868867e-014 -14.161367226604185 -19.457469484456155 ; + setAttr ".s" -type "double3" 4.4504433171691247 4.4504433171691282 4.4504433171691247 ; createNode nurbsCurve -n "mouth_C0_crvShape" -p "|guide|global_C0_root|local_C0_root|body_C0_root|spine_C0_root|spine_C0_eff|neck_C0_root|neck_C0_neck|neck_C0_head|mouth_C0_root|mouth_C0_rotcenter|mouth_C0_lipup|mouth_C0_crv"; - rename -uid "4B85A4F3-4021-64A6-BE8D-2AB9152713C1"; + rename -uid "ADFCE0AB-4357-21CF-3670-E29EF0B07320"; setAttr -k off ".v"; setAttr -s 4 ".iog[0].og"; setAttr ".tw" yes; createNode nurbsCurve -n "mouth_C0_crvShapeOrig" -p "|guide|global_C0_root|local_C0_root|body_C0_root|spine_C0_root|spine_C0_eff|neck_C0_root|neck_C0_neck|neck_C0_head|mouth_C0_root|mouth_C0_rotcenter|mouth_C0_lipup|mouth_C0_crv"; - rename -uid "F39209B6-4787-AAD9-A710-17A85F90CCCB"; + rename -uid "34A597C5-497C-3343-39D6-218A10893D07"; setAttr -k off ".v"; setAttr ".io" yes; setAttr ".cc" -type "nurbsCurve" @@ -1776,7 +1776,7 @@ createNode nurbsCurve -n "mouth_C0_crvShapeOrig" -p "|guide|global_C0_root|local 0 0 0 ; createNode transform -n "mouth_C0_liplow" -p "mouth_C0_rotcenter"; - rename -uid "1C7BE26C-4735-4270-CC32-24B07AEF5CBA"; + rename -uid "2D5FCAD8-4150-5287-F6D0-C58EC53433D0"; addAttr -ci true -sn "isGearGuide" -ln "isGearGuide" -dv 1 -min 0 -max 1 -at "bool"; setAttr -k off -cb on ".v"; setAttr ".t" -type "double3" 3.7198567879251422e-015 -1.1237321151316078 2.4565606483465565 ; @@ -1787,12 +1787,12 @@ createNode transform -n "mouth_C0_liplow" -p "mouth_C0_rotcenter"; setAttr -k off -cb on ".ry"; setAttr -k off -cb on ".rz"; setAttr -cb on ".ro"; - setAttr ".s" -type "double3" 0.99999999999999978 0.99999999999999944 0.99999999999999978 ; + setAttr ".s" -type "double3" 0.99999999999999967 0.99999999999999944 0.99999999999999956 ; setAttr -k off -cb on ".sx"; setAttr -k off -cb on ".sy"; setAttr -k off -cb on ".sz"; createNode nurbsCurve -n "mouth_C0_liplowShape" -p "mouth_C0_liplow"; - rename -uid "7CF2FC64-4C8A-B820-20AA-51B55B9D94D1"; + rename -uid "FF865A74-48F3-B435-4C2B-37BF2E3F58BD"; setAttr ".ihi" 0; setAttr -k off ".v"; setAttr ".ove" yes; @@ -1804,8 +1804,8 @@ createNode nurbsCurve -n "mouth_C0_liplowShape" -p "mouth_C0_liplow"; 0.25 0 0 -0.25 0 0 ; -createNode nurbsCurve -n "mouth_C0_liplow19Shape" -p "mouth_C0_liplow"; - rename -uid "AD67E42D-403D-D563-3589-988061499BDE"; +createNode nurbsCurve -n "mouth_C0_liplow22Shape" -p "mouth_C0_liplow"; + rename -uid "D6A8940B-40FD-A869-B094-719BFAA44D0F"; setAttr ".ihi" 0; setAttr -k off ".v"; setAttr ".ove" yes; @@ -1817,8 +1817,8 @@ createNode nurbsCurve -n "mouth_C0_liplow19Shape" -p "mouth_C0_liplow"; 0 0.25 0 0 -0.25 0 ; -createNode nurbsCurve -n "mouth_C0_liplow20Shape" -p "mouth_C0_liplow"; - rename -uid "A769A2FD-4BE2-7D64-D156-8D907301FB7E"; +createNode nurbsCurve -n "mouth_C0_liplow23Shape" -p "mouth_C0_liplow"; + rename -uid "265362F5-4FBC-2E68-FFE9-B9A42B4BD986"; setAttr ".ihi" 0; setAttr -k off ".v"; setAttr ".ove" yes; @@ -1830,8 +1830,8 @@ createNode nurbsCurve -n "mouth_C0_liplow20Shape" -p "mouth_C0_liplow"; 0 0 0.25 0 0 -0.25 ; -createNode nurbsCurve -n "mouth_C0_liplow21Shape" -p "mouth_C0_liplow"; - rename -uid "A03BEEBD-40C3-CE41-398A-D9AEEB6996B7"; +createNode nurbsCurve -n "mouth_C0_liplow24Shape" -p "mouth_C0_liplow"; + rename -uid "EA5C51F1-4323-1F6C-F8EC-52B85E0AB193"; setAttr ".ihi" 0; setAttr -k off ".v"; setAttr ".ove" yes; @@ -1848,8 +1848,8 @@ createNode nurbsCurve -n "mouth_C0_liplow21Shape" -p "mouth_C0_liplow"; 0 -0.1875 0 -0.1875 0 0 ; -createNode nurbsCurve -n "mouth_C0_liplow21_0crvShape" -p "mouth_C0_liplow"; - rename -uid "B7E49BD9-4286-A0AD-4A9A-04B05572346F"; +createNode nurbsCurve -n "mouth_C0_liplow24_0crvShape" -p "mouth_C0_liplow"; + rename -uid "6F42407B-4C10-15C4-E571-C8A73457E2B4"; setAttr ".ihi" 0; setAttr -k off ".v"; setAttr ".ove" yes; @@ -1866,8 +1866,8 @@ createNode nurbsCurve -n "mouth_C0_liplow21_0crvShape" -p "mouth_C0_liplow"; 0 0 -0.1875 -0.1875 0 0 ; -createNode nurbsCurve -n "mouth_C0_liplow21_1crvShape" -p "mouth_C0_liplow"; - rename -uid "8B540692-44EB-F4DA-6D48-9A9884FC3254"; +createNode nurbsCurve -n "mouth_C0_liplow24_1crvShape" -p "mouth_C0_liplow"; + rename -uid "42B9409E-4AD5-94F3-A1E4-4B89B66FA4EE"; setAttr ".ihi" 0; setAttr -k off ".v"; setAttr ".ove" yes; @@ -1885,18 +1885,18 @@ createNode nurbsCurve -n "mouth_C0_liplow21_1crvShape" -p "mouth_C0_liplow"; 0 0 -0.1875 ; createNode transform -n "mouth_C0_crv" -p "mouth_C0_liplow"; - rename -uid "5B9696D5-4A33-6F6C-B4C9-55AB55AE8CAC"; + rename -uid "6CFE16BA-4C68-30A9-15F0-7BBCD2915ECF"; setAttr ".ovdt" 1; setAttr ".ove" yes; - setAttr ".t" -type "double3" -1.3144916020838624e-014 -13.868210489944016 -19.265444707262002 ; - setAttr ".s" -type "double3" 4.4504433171691238 4.4504433171691282 4.4504433171691229 ; + setAttr ".t" -type "double3" -1.3144916020838627e-014 -13.868210489944017 -19.265444707262013 ; + setAttr ".s" -type "double3" 4.4504433171691247 4.4504433171691282 4.4504433171691247 ; createNode nurbsCurve -n "mouth_C0_crvShape" -p "|guide|global_C0_root|local_C0_root|body_C0_root|spine_C0_root|spine_C0_eff|neck_C0_root|neck_C0_neck|neck_C0_head|mouth_C0_root|mouth_C0_rotcenter|mouth_C0_liplow|mouth_C0_crv"; - rename -uid "A41A1D5E-48ED-DF47-EC4B-00A22B00C1AD"; + rename -uid "0682BD75-4BD0-3805-35A9-129CD4488A30"; setAttr -k off ".v"; setAttr -s 4 ".iog[0].og"; setAttr ".tw" yes; createNode nurbsCurve -n "mouth_C0_crvShapeOrig" -p "|guide|global_C0_root|local_C0_root|body_C0_root|spine_C0_root|spine_C0_eff|neck_C0_root|neck_C0_neck|neck_C0_head|mouth_C0_root|mouth_C0_rotcenter|mouth_C0_liplow|mouth_C0_crv"; - rename -uid "C2B5FF5C-45C3-55C8-FCB9-D1B113C13254"; + rename -uid "6C8B95A9-49BA-CC2A-F942-BE85C7EF5796"; setAttr -k off ".v"; setAttr ".io" yes; setAttr ".cc" -type "nurbsCurve" @@ -1907,10 +1907,10 @@ createNode nurbsCurve -n "mouth_C0_crvShapeOrig" -p "|guide|global_C0_root|local 0 0 0 ; createNode transform -n "mouth_C0_jaw" -p "mouth_C0_root"; - rename -uid "526FC737-44E7-E5FE-74EE-F4976B6E5C29"; + rename -uid "83E6C5BB-4C0A-0AE7-19B9-D08203689BE1"; addAttr -ci true -sn "isGearGuide" -ln "isGearGuide" -dv 1 -min 0 -max 1 -at "bool"; setAttr -k off -cb on ".v"; - setAttr ".t" -type "double3" 3.3132158019282496e-029 -1.9431960625636933 2.006989566316264 ; + setAttr ".t" -type "double3" 3.4709879829724519e-029 -1.9431960625636933 2.0069895663162676 ; setAttr -k off -cb on ".tx"; setAttr -k off -cb on ".ty"; setAttr -k off -cb on ".tz"; @@ -1918,12 +1918,12 @@ createNode transform -n "mouth_C0_jaw" -p "mouth_C0_root"; setAttr -k off -cb on ".ry"; setAttr -k off -cb on ".rz"; setAttr -cb on ".ro"; - setAttr ".s" -type "double3" 0.999999999999999 0.99999999999999833 0.99999999999999845 ; + setAttr ".s" -type "double3" 0.99999999999999911 0.99999999999999833 0.99999999999999845 ; setAttr -k off -cb on ".sx"; setAttr -k off -cb on ".sy"; setAttr -k off -cb on ".sz"; createNode nurbsCurve -n "mouth_C0_jawShape" -p "mouth_C0_jaw"; - rename -uid "486F83B2-4443-BFA3-7D39-48ABC7945DF4"; + rename -uid "09CF5534-4420-EAF3-635F-AA9BC3F760D9"; setAttr ".ihi" 0; setAttr -k off ".v"; setAttr ".ove" yes; @@ -1935,8 +1935,8 @@ createNode nurbsCurve -n "mouth_C0_jawShape" -p "mouth_C0_jaw"; 0.25 0 0 -0.25 0 0 ; -createNode nurbsCurve -n "mouth_C0_jaw19Shape" -p "mouth_C0_jaw"; - rename -uid "2AD85104-428C-E3C1-5725-ADB9601D592C"; +createNode nurbsCurve -n "mouth_C0_jaw22Shape" -p "mouth_C0_jaw"; + rename -uid "B09F3321-49B9-B553-3E69-2583771E91EF"; setAttr ".ihi" 0; setAttr -k off ".v"; setAttr ".ove" yes; @@ -1948,8 +1948,8 @@ createNode nurbsCurve -n "mouth_C0_jaw19Shape" -p "mouth_C0_jaw"; 0 0.25 0 0 -0.25 0 ; -createNode nurbsCurve -n "mouth_C0_jaw20Shape" -p "mouth_C0_jaw"; - rename -uid "6B933D92-4068-6118-CB12-05BB91AB4006"; +createNode nurbsCurve -n "mouth_C0_jaw23Shape" -p "mouth_C0_jaw"; + rename -uid "B8BCB540-45FA-9079-3B28-378EF6253843"; setAttr ".ihi" 0; setAttr -k off ".v"; setAttr ".ove" yes; @@ -1961,8 +1961,8 @@ createNode nurbsCurve -n "mouth_C0_jaw20Shape" -p "mouth_C0_jaw"; 0 0 0.25 0 0 -0.25 ; -createNode nurbsCurve -n "mouth_C0_jaw21Shape" -p "mouth_C0_jaw"; - rename -uid "C50FCD44-4C37-957B-889A-0688B6449F49"; +createNode nurbsCurve -n "mouth_C0_jaw24Shape" -p "mouth_C0_jaw"; + rename -uid "D8827A0A-4C80-B4E0-A9A3-248DEB8CC338"; setAttr ".ihi" 0; setAttr -k off ".v"; setAttr ".ove" yes; @@ -1979,8 +1979,8 @@ createNode nurbsCurve -n "mouth_C0_jaw21Shape" -p "mouth_C0_jaw"; 0 -0.1875 0 -0.1875 0 0 ; -createNode nurbsCurve -n "mouth_C0_jaw21_0crvShape" -p "mouth_C0_jaw"; - rename -uid "B0C4816A-492D-1528-C0A5-FD826FB4009E"; +createNode nurbsCurve -n "mouth_C0_jaw24_0crvShape" -p "mouth_C0_jaw"; + rename -uid "FE1F758B-48FA-5531-E514-3387E6ADCF52"; setAttr ".ihi" 0; setAttr -k off ".v"; setAttr ".ove" yes; @@ -1997,8 +1997,8 @@ createNode nurbsCurve -n "mouth_C0_jaw21_0crvShape" -p "mouth_C0_jaw"; 0 0 -0.1875 -0.1875 0 0 ; -createNode nurbsCurve -n "mouth_C0_jaw21_1crvShape" -p "mouth_C0_jaw"; - rename -uid "DE97B9B1-47D1-5C15-6685-138C27B7F2D5"; +createNode nurbsCurve -n "mouth_C0_jaw24_1crvShape" -p "mouth_C0_jaw"; + rename -uid "E19D81C4-440B-CAED-1B95-37A1C433E3DE"; setAttr ".ihi" 0; setAttr -k off ".v"; setAttr ".ove" yes; @@ -2016,18 +2016,18 @@ createNode nurbsCurve -n "mouth_C0_jaw21_1crvShape" -p "mouth_C0_jaw"; 0 0 -0.1875 ; createNode transform -n "mouth_C0_crv" -p "mouth_C0_root"; - rename -uid "4F522166-4C5A-0E3B-8004-6A8791113BE1"; + rename -uid "F66898FA-4111-FB81-BF5F-E18B61B60381"; setAttr ".ovdt" 1; setAttr ".ove" yes; - setAttr ".t" -type "double3" -9.4250592329134309e-015 -14.991942605075595 -16.808884058915393 ; - setAttr ".s" -type "double3" 4.4504433171691176 4.4504433171691185 4.4504433171691149 ; + setAttr ".t" -type "double3" -9.4250592329134356e-015 -14.991942605075595 -16.808884058915393 ; + setAttr ".s" -type "double3" 4.4504433171691185 4.4504433171691185 4.4504433171691149 ; createNode nurbsCurve -n "mouth_C0_crvShape" -p "|guide|global_C0_root|local_C0_root|body_C0_root|spine_C0_root|spine_C0_eff|neck_C0_root|neck_C0_neck|neck_C0_head|mouth_C0_root|mouth_C0_crv"; - rename -uid "E8A54D73-4925-DE5C-70E8-A9ACE08760D6"; + rename -uid "E4DEC7B0-4A58-1C15-B794-00B93F924B97"; setAttr -k off ".v"; setAttr -s 4 ".iog[0].og"; setAttr ".tw" yes; createNode nurbsCurve -n "mouth_C0_crvShapeOrig" -p "|guide|global_C0_root|local_C0_root|body_C0_root|spine_C0_root|spine_C0_eff|neck_C0_root|neck_C0_neck|neck_C0_head|mouth_C0_root|mouth_C0_crv"; - rename -uid "5BF8D945-4F6D-8BCE-4E67-88AFE8325184"; + rename -uid "7D2D681A-4DAB-EA2E-10C0-6AB8A48C4AA8"; setAttr -k off ".v"; setAttr ".io" yes; setAttr ".cc" -type "nurbsCurve" @@ -2037,19 +2037,19 @@ createNode nurbsCurve -n "mouth_C0_crvShapeOrig" -p "|guide|global_C0_root|local 0 0 0 0 0 0 ; -createNode transform -n "mouth_C0_crv7" -p "mouth_C0_root"; - rename -uid "FB255D8F-4EB2-9983-86D2-1896A9DE4CC9"; +createNode transform -n "mouth_C0_crv8" -p "mouth_C0_root"; + rename -uid "94AA9D3F-44E8-9E75-A59C-7BAEAD7FE93C"; setAttr ".ovdt" 1; setAttr ".ove" yes; - setAttr ".t" -type "double3" -9.4250592329134309e-015 -14.991942605075595 -16.808884058915393 ; - setAttr ".s" -type "double3" 4.4504433171691176 4.4504433171691185 4.4504433171691149 ; -createNode nurbsCurve -n "mouth_C0_crv7Shape" -p "mouth_C0_crv7"; - rename -uid "72ABF2EE-409D-A6C0-89B1-CE885E606CE2"; + setAttr ".t" -type "double3" -9.4250592329134356e-015 -14.991942605075595 -16.808884058915393 ; + setAttr ".s" -type "double3" 4.4504433171691185 4.4504433171691185 4.4504433171691149 ; +createNode nurbsCurve -n "mouth_C0_crv8Shape" -p "mouth_C0_crv8"; + rename -uid "A3FA8B5B-4CAE-3DDB-C78B-D093627B0825"; setAttr -k off ".v"; setAttr -s 4 ".iog[0].og"; setAttr ".tw" yes; -createNode nurbsCurve -n "mouth_C0_crv7ShapeOrig" -p "mouth_C0_crv7"; - rename -uid "D0A4FD87-4047-4045-95C0-6E867A800E81"; +createNode nurbsCurve -n "mouth_C0_crv8ShapeOrig" -p "mouth_C0_crv8"; + rename -uid "3F7AF5F8-44FA-B891-894B-E4ADFE510EB3"; setAttr -k off ".v"; setAttr ".io" yes; setAttr ".cc" -type "nurbsCurve" @@ -2060,7 +2060,7 @@ createNode nurbsCurve -n "mouth_C0_crv7ShapeOrig" -p "mouth_C0_crv7"; 0 0 0 ; createNode transform -n "eyeslook_C0_root" -p "neck_C0_head"; - rename -uid "D9226848-4342-9EA5-A43A-088C0312C8D6"; + rename -uid "4ECDE7D0-4380-A002-245A-CB8FD817BE9F"; addAttr -ci true -sn "isGearGuide" -ln "isGearGuide" -dv 1 -min 0 -max 1 -at "bool"; addAttr -ci true -sn "comp_type" -ln "comp_type" -dt "string"; addAttr -ci true -sn "comp_name" -ln "comp_name" -dt "string"; @@ -2072,33 +2072,35 @@ createNode transform -n "eyeslook_C0_root" -p "neck_C0_head"; addAttr -ci true -sn "icon" -ln "icon" -dt "string"; addAttr -ci true -sn "ikrefarray" -ln "ikrefarray" -dt "string"; addAttr -ci true -sn "joint" -ln "joint" -min 0 -max 1 -at "bool"; - addAttr -ci true -sn "uniScale" -ln "uniScale" -min 0 -max 1 -at "bool"; - addAttr -ci true -sn "k_tx" -ln "k_tx" -min 0 -max 1 -at "bool"; - addAttr -ci true -sn "k_ty" -ln "k_ty" -min 0 -max 1 -at "bool"; - addAttr -ci true -sn "k_tz" -ln "k_tz" -min 0 -max 1 -at "bool"; - addAttr -ci true -sn "k_ro" -ln "k_ro" -min 0 -max 1 -at "bool"; - addAttr -ci true -sn "k_rx" -ln "k_rx" -min 0 -max 1 -at "bool"; - addAttr -ci true -sn "k_ry" -ln "k_ry" -min 0 -max 1 -at "bool"; - addAttr -ci true -sn "k_rz" -ln "k_rz" -min 0 -max 1 -at "bool"; - addAttr -ci true -sn "k_sx" -ln "k_sx" -min 0 -max 1 -at "bool"; - addAttr -ci true -sn "k_sy" -ln "k_sy" -min 0 -max 1 -at "bool"; - addAttr -ci true -sn "k_sz" -ln "k_sz" -min 0 -max 1 -at "bool"; + addAttr -ci true -sn "uniScale" -ln "uniScale" -dv 1 -min 0 -max 1 -at "bool"; + addAttr -ci true -sn "k_tx" -ln "k_tx" -dv 1 -min 0 -max 1 -at "bool"; + addAttr -ci true -sn "k_ty" -ln "k_ty" -dv 1 -min 0 -max 1 -at "bool"; + addAttr -ci true -sn "k_tz" -ln "k_tz" -dv 1 -min 0 -max 1 -at "bool"; + addAttr -ci true -sn "k_ro" -ln "k_ro" -dv 1 -min 0 -max 1 -at "bool"; + addAttr -ci true -sn "k_rx" -ln "k_rx" -dv 1 -min 0 -max 1 -at "bool"; + addAttr -ci true -sn "k_ry" -ln "k_ry" -dv 1 -min 0 -max 1 -at "bool"; + addAttr -ci true -sn "k_rz" -ln "k_rz" -dv 1 -min 0 -max 1 -at "bool"; + addAttr -ci true -sn "k_sx" -ln "k_sx" -dv 1 -min 0 -max 1 -at "bool"; + addAttr -ci true -sn "k_sy" -ln "k_sy" -dv 1 -min 0 -max 1 -at "bool"; + addAttr -ci true -sn "k_sz" -ln "k_sz" -dv 1 -min 0 -max 1 -at "bool"; addAttr -ci true -sn "default_rotorder" -ln "default_rotorder" -min 0 -max 5 -at "long"; - addAttr -ci true -sn "neutralRotation" -ln "neutralRotation" -min 0 -max 1 -at "bool"; - addAttr -ci true -sn "ctlSize" -ln "ctlSize" -at "double"; + addAttr -ci true -sn "neutralRotation" -ln "neutralRotation" -dv 1 -min 0 -max 1 + -at "bool"; + addAttr -ci true -sn "mirrorBehaviour" -ln "mirrorBehaviour" -min 0 -max 1 -at "bool"; + addAttr -ci true -sn "ctlSize" -ln "ctlSize" -dv 1 -at "double"; addAttr -ci true -sn "useIndex" -ln "useIndex" -min 0 -max 1 -at "bool"; - addAttr -ci true -sn "parentJointIndex" -ln "parentJointIndex" -at "long"; + addAttr -ci true -sn "parentJointIndex" -ln "parentJointIndex" -dv -1 -at "long"; setAttr -k off -cb on ".v"; - setAttr ".t" -type "double3" 4.9771436298332112 1.022199806296153 -1.7545700686211258e-015 ; + setAttr ".t" -type "double3" 4.9771436298332059 1.0221998062961521 -1.7545700686211268e-015 ; setAttr -k off -cb on ".tx"; setAttr -k off -cb on ".ty"; setAttr -k off -cb on ".tz"; - setAttr ".r" -type "double3" 0.038224192844409817 89.999999999999957 0 ; + setAttr ".r" -type "double3" 0.038224192844406028 89.999999999999957 0 ; setAttr -k off -cb on ".rx"; setAttr -k off -cb on ".ry"; setAttr -k off -cb on ".rz"; setAttr -cb on ".ro"; - setAttr ".s" -type "double3" 2.3915882794427579 2.3915882794427579 2.391588279442757 ; + setAttr ".s" -type "double3" 2.3915882794427574 2.3915882794427574 2.3915882794427561 ; setAttr -k off -cb on ".sx"; setAttr -k off -cb on ".sy"; setAttr -k off -cb on ".sz"; @@ -2110,22 +2112,8 @@ createNode transform -n "eyeslook_C0_root" -p "neck_C0_head"; setAttr ".ctlGrp" -type "string" ""; setAttr ".icon" -type "string" "square"; setAttr ".ikrefarray" -type "string" "neck_C0_eff,COG_C0_root,local_C0_root"; - setAttr ".uniScale" yes; - setAttr ".k_tx" yes; - setAttr ".k_ty" yes; - setAttr ".k_tz" yes; - setAttr ".k_ro" yes; - setAttr ".k_rx" yes; - setAttr ".k_ry" yes; - setAttr ".k_rz" yes; - setAttr ".k_sx" yes; - setAttr ".k_sy" yes; - setAttr ".k_sz" yes; - setAttr ".neutralRotation" yes; - setAttr ".ctlSize" 1; - setAttr ".parentJointIndex" -1; createNode nurbsCurve -n "eyeslook_C0_rootShape" -p "eyeslook_C0_root"; - rename -uid "62CDB7CD-40C1-5F81-1783-F7AC07A87258"; + rename -uid "2EA818C9-4DE0-5958-AE2D-ED83D4956A9D"; setAttr ".ihi" 0; setAttr -k off ".v"; setAttr ".ove" yes; @@ -2137,8 +2125,8 @@ createNode nurbsCurve -n "eyeslook_C0_rootShape" -p "eyeslook_C0_root"; 0.25 0 0 -0.25 0 0 ; -createNode nurbsCurve -n "eyeslook_C0_root19Shape" -p "eyeslook_C0_root"; - rename -uid "98368975-49F9-C534-356A-47B04A33DBF3"; +createNode nurbsCurve -n "eyeslook_C0_root22Shape" -p "eyeslook_C0_root"; + rename -uid "C1424482-4290-112E-358D-BD9E6EAA2286"; setAttr ".ihi" 0; setAttr -k off ".v"; setAttr ".ove" yes; @@ -2150,8 +2138,8 @@ createNode nurbsCurve -n "eyeslook_C0_root19Shape" -p "eyeslook_C0_root"; 0 0.25 0 0 -0.25 0 ; -createNode nurbsCurve -n "eyeslook_C0_root20Shape" -p "eyeslook_C0_root"; - rename -uid "7DBBE8A0-4042-716A-48BB-DD9379ED1300"; +createNode nurbsCurve -n "eyeslook_C0_root23Shape" -p "eyeslook_C0_root"; + rename -uid "ADAE8539-47A1-F160-57DC-38B70B44686E"; setAttr ".ihi" 0; setAttr -k off ".v"; setAttr ".ove" yes; @@ -2163,8 +2151,8 @@ createNode nurbsCurve -n "eyeslook_C0_root20Shape" -p "eyeslook_C0_root"; 0 0 0.25 0 0 -0.25 ; -createNode nurbsCurve -n "eyeslook_C0_root21Shape" -p "eyeslook_C0_root"; - rename -uid "1468C6A3-4992-82B6-358A-09ACA131CB57"; +createNode nurbsCurve -n "eyeslook_C0_root24Shape" -p "eyeslook_C0_root"; + rename -uid "92D6B96A-4847-6391-4EE7-E1BD148F4296"; setAttr ".ihi" 0; setAttr -k off ".v"; setAttr ".ove" yes; @@ -2191,10 +2179,10 @@ createNode nurbsCurve -n "eyeslook_C0_root21Shape" -p "eyeslook_C0_root"; -0.125 -0.125 -0.125 ; createNode transform -n "eyeslook_C0_sizeRef" -p "eyeslook_C0_root"; - rename -uid "CAC2B5C7-48F6-ACD9-78C8-E29D67EBF72D"; + rename -uid "3C9D753E-4251-7929-FAD0-62BC044D2A28"; addAttr -ci true -sn "isGearGuide" -ln "isGearGuide" -dv 1 -min 0 -max 1 -at "bool"; setAttr -k off -cb on ".v"; - setAttr ".t" -type "double3" 1.1102230246251558e-015 0 1 ; + setAttr ".t" -type "double3" 1.1102230246251565e-015 0 1.0000000000000036 ; setAttr -k off -cb on ".tx"; setAttr -k off -cb on ".ty"; setAttr -k off -cb on ".tz"; @@ -2202,12 +2190,12 @@ createNode transform -n "eyeslook_C0_sizeRef" -p "eyeslook_C0_root"; setAttr -k off -cb on ".ry"; setAttr -k off -cb on ".rz"; setAttr -cb on ".ro"; - setAttr ".s" -type "double3" 0.99999999999999956 0.99999999999999956 1.0000000000000004 ; + setAttr ".s" -type "double3" 0.99999999999999978 0.99999999999999978 1.0000000000000007 ; setAttr -k off -cb on ".sx"; setAttr -k off -cb on ".sy"; setAttr -k off -cb on ".sz"; createNode transform -n "eye_L0_root" -p "neck_C0_head"; - rename -uid "6946944E-4A19-2B11-208A-5A8F3C027F85"; + rename -uid "7926DD38-4DF6-BA50-C87E-41A35CDEDD50"; addAttr -ci true -sn "isGearGuide" -ln "isGearGuide" -dv 1 -min 0 -max 1 -at "bool"; addAttr -ci true -sn "comp_type" -ln "comp_type" -dt "string"; addAttr -ci true -sn "comp_name" -ln "comp_name" -dt "string"; @@ -2220,9 +2208,9 @@ createNode transform -n "eye_L0_root" -p "neck_C0_head"; -max 2 -en "X:Y:Z" -at "enum"; addAttr -ci true -sn "ikrefarray" -ln "ikrefarray" -dt "string"; addAttr -ci true -sn "useIndex" -ln "useIndex" -min 0 -max 1 -at "bool"; - addAttr -ci true -sn "parentJointIndex" -ln "parentJointIndex" -at "long"; + addAttr -ci true -sn "parentJointIndex" -ln "parentJointIndex" -dv -1 -at "long"; setAttr -k off -cb on ".v"; - setAttr ".t" -type "double3" 0.25733245506886071 1.0267893607782357 -0.42107730061382631 ; + setAttr ".t" -type "double3" 0.25733245506885538 1.0267893607782348 -0.42107730061382626 ; setAttr -k off -cb on ".tx"; setAttr -k off -cb on ".ty"; setAttr -k off -cb on ".tz"; @@ -2231,7 +2219,7 @@ createNode transform -n "eye_L0_root" -p "neck_C0_head"; setAttr -k off -cb on ".ry"; setAttr -k off -cb on ".rz"; setAttr -cb on ".ro"; - setAttr ".s" -type "double3" 2.3915882794427543 2.3915882794427614 2.391588279442753 ; + setAttr ".s" -type "double3" 2.391588279442753 2.391588279442761 2.3915882794427525 ; setAttr -k off -cb on ".sx"; setAttr -k off -cb on ".sy"; setAttr -k off -cb on ".sz"; @@ -2243,9 +2231,8 @@ createNode transform -n "eye_L0_root" -p "neck_C0_head"; setAttr ".ctlGrp" -type "string" ""; setAttr -k on ".upVectorDirection" 1; setAttr ".ikrefarray" -type "string" "eyesAim_C0_root"; - setAttr ".parentJointIndex" -1; createNode nurbsCurve -n "eye_L0_rootShape" -p "eye_L0_root"; - rename -uid "79EF865B-4DFD-39B4-C36A-46A898D74F8C"; + rename -uid "F83BAD8D-4C02-7A3F-02C8-719383DC5E45"; setAttr ".ihi" 0; setAttr -k off ".v"; setAttr ".ove" yes; @@ -2257,8 +2244,8 @@ createNode nurbsCurve -n "eye_L0_rootShape" -p "eye_L0_root"; 0.25 0 0 -0.25 0 0 ; -createNode nurbsCurve -n "eye_L0_root19Shape" -p "eye_L0_root"; - rename -uid "B1F9CA83-4A02-F502-FCFB-818B37AC92DD"; +createNode nurbsCurve -n "eye_L0_root22Shape" -p "eye_L0_root"; + rename -uid "7EC1AFA0-4096-0093-E1B0-24BEC09586EF"; setAttr ".ihi" 0; setAttr -k off ".v"; setAttr ".ove" yes; @@ -2270,8 +2257,8 @@ createNode nurbsCurve -n "eye_L0_root19Shape" -p "eye_L0_root"; 0 0.25 0 0 -0.25 0 ; -createNode nurbsCurve -n "eye_L0_root20Shape" -p "eye_L0_root"; - rename -uid "03D5A0BB-4978-A3F1-7ABC-458EAC5E9158"; +createNode nurbsCurve -n "eye_L0_root23Shape" -p "eye_L0_root"; + rename -uid "1CC223AF-422F-2975-3D45-E1B88EAFA4E8"; setAttr ".ihi" 0; setAttr -k off ".v"; setAttr ".ove" yes; @@ -2283,8 +2270,8 @@ createNode nurbsCurve -n "eye_L0_root20Shape" -p "eye_L0_root"; 0 0 0.25 0 0 -0.25 ; -createNode nurbsCurve -n "eye_L0_root21Shape" -p "eye_L0_root"; - rename -uid "C9ADE007-48F9-7B93-D87C-E6A2EB2C459D"; +createNode nurbsCurve -n "eye_L0_root24Shape" -p "eye_L0_root"; + rename -uid "8967C660-4DBF-8246-E0F0-1A935A820C63"; setAttr ".ihi" 0; setAttr -k off ".v"; setAttr ".ove" yes; @@ -2311,10 +2298,10 @@ createNode nurbsCurve -n "eye_L0_root21Shape" -p "eye_L0_root"; -0.125 -0.125 -0.125 ; createNode transform -n "eye_L0_look" -p "eye_L0_root"; - rename -uid "06FB62DE-4FC7-0F98-F91B-E694B2BC5D7C"; + rename -uid "042A68A9-4419-D9DC-1EFA-ACB03B55BC50"; addAttr -ci true -sn "isGearGuide" -ln "isGearGuide" -dv 1 -min 0 -max 1 -at "bool"; setAttr -k off -cb on ".v"; - setAttr ".t" -type "double3" -5.5511151231257827e-016 7.9936057773011271e-015 2.0321341905376475 ; + setAttr ".t" -type "double3" -8.8817841970012523e-016 9.7699626167013776e-015 2.0321341905376498 ; setAttr -k off -cb on ".tx"; setAttr -k off -cb on ".ty"; setAttr -k off -cb on ".tz"; @@ -2322,12 +2309,12 @@ createNode transform -n "eye_L0_look" -p "eye_L0_root"; setAttr -k off -cb on ".ry"; setAttr -k off -cb on ".rz"; setAttr -cb on ".ro"; - setAttr ".s" -type "double3" 1.0000000000000009 0.99999999999999811 1.0000000000000016 ; + setAttr ".s" -type "double3" 1.0000000000000013 0.99999999999999811 1.0000000000000018 ; setAttr -k off -cb on ".sx"; setAttr -k off -cb on ".sy"; setAttr -k off -cb on ".sz"; createNode nurbsCurve -n "eye_L0_lookShape" -p "eye_L0_look"; - rename -uid "6F1FA038-44D0-7D26-FEAF-52BD1753B2F7"; + rename -uid "ABC4A518-4366-BFBD-6F48-6B8B401EFBF2"; setAttr ".ihi" 0; setAttr -k off ".v"; setAttr ".ove" yes; @@ -2339,8 +2326,8 @@ createNode nurbsCurve -n "eye_L0_lookShape" -p "eye_L0_look"; 0.25 0 0 -0.25 0 0 ; -createNode nurbsCurve -n "eye_L0_look19Shape" -p "eye_L0_look"; - rename -uid "15090577-4C90-A82A-38E8-5FBBFB7A4CC4"; +createNode nurbsCurve -n "eye_L0_look22Shape" -p "eye_L0_look"; + rename -uid "095DAA0E-4B70-D84B-A3C2-9482C89438CD"; setAttr ".ihi" 0; setAttr -k off ".v"; setAttr ".ove" yes; @@ -2352,8 +2339,8 @@ createNode nurbsCurve -n "eye_L0_look19Shape" -p "eye_L0_look"; 0 0.25 0 0 -0.25 0 ; -createNode nurbsCurve -n "eye_L0_look20Shape" -p "eye_L0_look"; - rename -uid "E37518F7-46F7-734D-8415-14A6065DA918"; +createNode nurbsCurve -n "eye_L0_look23Shape" -p "eye_L0_look"; + rename -uid "4471EA98-44F2-7479-05DA-4884653E7E0E"; setAttr ".ihi" 0; setAttr -k off ".v"; setAttr ".ove" yes; @@ -2365,8 +2352,8 @@ createNode nurbsCurve -n "eye_L0_look20Shape" -p "eye_L0_look"; 0 0 0.25 0 0 -0.25 ; -createNode nurbsCurve -n "eye_L0_look21Shape" -p "eye_L0_look"; - rename -uid "5257146E-4AB6-A55E-AB69-98B8E6555F1D"; +createNode nurbsCurve -n "eye_L0_look24Shape" -p "eye_L0_look"; + rename -uid "7916437E-4EA3-4B24-7A7A-B4AD0C2201FA"; setAttr ".ihi" 0; setAttr -k off ".v"; setAttr ".ove" yes; @@ -2383,8 +2370,8 @@ createNode nurbsCurve -n "eye_L0_look21Shape" -p "eye_L0_look"; 0 -0.1875 0 -0.1875 0 0 ; -createNode nurbsCurve -n "eye_L0_look21_0crvShape" -p "eye_L0_look"; - rename -uid "C9B1C340-43E9-E3D6-371C-D0ACA870E66A"; +createNode nurbsCurve -n "eye_L0_look24_0crvShape" -p "eye_L0_look"; + rename -uid "0F98BD4C-4CD4-AF36-5565-53AF995EA861"; setAttr ".ihi" 0; setAttr -k off ".v"; setAttr ".ove" yes; @@ -2401,8 +2388,8 @@ createNode nurbsCurve -n "eye_L0_look21_0crvShape" -p "eye_L0_look"; 0 0 -0.1875 -0.1875 0 0 ; -createNode nurbsCurve -n "eye_L0_look21_1crvShape" -p "eye_L0_look"; - rename -uid "234372F7-4748-8FEE-6DCE-16B94C538F62"; +createNode nurbsCurve -n "eye_L0_look24_1crvShape" -p "eye_L0_look"; + rename -uid "3793F46D-49DE-758B-AE5B-74A5C9B840EB"; setAttr ".ihi" 0; setAttr -k off ".v"; setAttr ".ove" yes; @@ -2420,19 +2407,19 @@ createNode nurbsCurve -n "eye_L0_look21_1crvShape" -p "eye_L0_look"; 0 0 -0.1875 ; createNode transform -n "eye_L0_crv" -p "eye_L0_root"; - rename -uid "DE0E0EA5-4F6C-0940-F979-01809BD849CC"; + rename -uid "8D3542CE-499D-61E4-EC58-578370679043"; setAttr ".ovdt" 1; setAttr ".ove" yes; - setAttr ".t" -type "double3" 0.69889742974753399 -3.4976629291575771 -3.5292331821335634 ; - setAttr ".r" -type "double3" 0 -14.006447505262578 0 ; - setAttr ".s" -type "double3" 1.0000000000000011 0.99999999999999811 1.000000000000002 ; + setAttr ".t" -type "double3" 0.6988974297475341 -3.4976629291575771 -3.529233182133563 ; + setAttr ".r" -type "double3" 0 -14.006447505262575 0 ; + setAttr ".s" -type "double3" 1.0000000000000018 0.99999999999999822 1.0000000000000022 ; createNode nurbsCurve -n "eye_L0_crvShape" -p "eye_L0_crv"; - rename -uid "C9866E35-4D63-7DFD-3001-34B35F77456F"; + rename -uid "B8D76070-45EF-8A59-C87B-E4B63CB9E9CA"; setAttr -k off ".v"; setAttr -s 4 ".iog[0].og"; setAttr ".tw" yes; createNode nurbsCurve -n "eye_L0_crvShapeOrig" -p "eye_L0_crv"; - rename -uid "F8439122-4C28-5C53-D6B0-139E5E16E52C"; + rename -uid "52246594-4AD9-431B-292E-479C23FFFDDB"; setAttr -k off ".v"; setAttr ".io" yes; setAttr ".cc" -type "nurbsCurve" @@ -2443,7 +2430,7 @@ createNode nurbsCurve -n "eye_L0_crvShapeOrig" -p "eye_L0_crv"; 0 0 0 ; createNode transform -n "eye_R0_root" -p "neck_C0_head"; - rename -uid "FD9E7880-4FF9-AA20-BC5C-FC9780F5B108"; + rename -uid "322E4D85-4458-99B7-12C3-51BD64EC9736"; addAttr -ci true -sn "isGearGuide" -ln "isGearGuide" -dv 1 -min 0 -max 1 -at "bool"; addAttr -ci true -sn "comp_type" -ln "comp_type" -dt "string"; addAttr -ci true -sn "comp_name" -ln "comp_name" -dt "string"; @@ -2456,9 +2443,9 @@ createNode transform -n "eye_R0_root" -p "neck_C0_head"; -max 2 -en "X:Y:Z" -at "enum"; addAttr -ci true -sn "ikrefarray" -ln "ikrefarray" -dt "string"; addAttr -ci true -sn "useIndex" -ln "useIndex" -min 0 -max 1 -at "bool"; - addAttr -ci true -sn "parentJointIndex" -ln "parentJointIndex" -at "long"; + addAttr -ci true -sn "parentJointIndex" -ln "parentJointIndex" -dv -1 -at "long"; setAttr -k off -cb on ".v"; - setAttr ".t" -type "double3" 0.25733245506886426 1.0267893607782321 0.42107730061382803 ; + setAttr ".t" -type "double3" 0.25733245506885893 1.0267893607782295 0.42107730061382798 ; setAttr -k off -cb on ".tx"; setAttr -k off -cb on ".ty"; setAttr -k off -cb on ".tz"; @@ -2467,7 +2454,7 @@ createNode transform -n "eye_R0_root" -p "neck_C0_head"; setAttr -k off -cb on ".ry"; setAttr -k off -cb on ".rz"; setAttr -cb on ".ro"; - setAttr ".s" -type "double3" 2.3915882794427552 2.3915882794427614 -2.3915882794427548 ; + setAttr ".s" -type "double3" 2.3915882794427543 2.391588279442761 -2.3915882794427543 ; setAttr -k off -cb on ".sx"; setAttr -k off -cb on ".sy"; setAttr -k off -cb on ".sz"; @@ -2479,9 +2466,8 @@ createNode transform -n "eye_R0_root" -p "neck_C0_head"; setAttr ".ctlGrp" -type "string" ""; setAttr -k on ".upVectorDirection" 1; setAttr ".ikrefarray" -type "string" "eyesAim_C0_root"; - setAttr ".parentJointIndex" -1; createNode nurbsCurve -n "eye_R0_rootShape" -p "eye_R0_root"; - rename -uid "E2974B72-4C48-5257-BC5E-51925008D558"; + rename -uid "0EEF49A8-4D3A-A94F-19D1-02A1D3E4C33C"; setAttr ".ihi" 0; setAttr -k off ".v"; setAttr ".ove" yes; @@ -2493,8 +2479,8 @@ createNode nurbsCurve -n "eye_R0_rootShape" -p "eye_R0_root"; 0.25 0 0 -0.25 0 0 ; -createNode nurbsCurve -n "eye_R0_root10Shape" -p "eye_R0_root"; - rename -uid "34329639-4734-D239-13AF-1A94868E6723"; +createNode nurbsCurve -n "eye_R0_root13Shape" -p "eye_R0_root"; + rename -uid "A8EF0677-4018-8CD8-B32A-2A9B017060FB"; setAttr ".ihi" 0; setAttr -k off ".v"; setAttr ".ove" yes; @@ -2506,8 +2492,8 @@ createNode nurbsCurve -n "eye_R0_root10Shape" -p "eye_R0_root"; 0 0.25 0 0 -0.25 0 ; -createNode nurbsCurve -n "eye_R0_root11Shape" -p "eye_R0_root"; - rename -uid "25E8976E-4540-00B8-F00A-84B45D12A56D"; +createNode nurbsCurve -n "eye_R0_root14Shape" -p "eye_R0_root"; + rename -uid "0935F170-4BE3-D70E-BB79-11BFC1B82124"; setAttr ".ihi" 0; setAttr -k off ".v"; setAttr ".ove" yes; @@ -2519,8 +2505,8 @@ createNode nurbsCurve -n "eye_R0_root11Shape" -p "eye_R0_root"; 0 0 0.25 0 0 -0.25 ; -createNode nurbsCurve -n "eye_R0_root12Shape" -p "eye_R0_root"; - rename -uid "2F5A294B-4205-40F4-3009-9599C9FAD557"; +createNode nurbsCurve -n "eye_R0_root15Shape" -p "eye_R0_root"; + rename -uid "FE32CD01-41B9-3AEA-B100-D0BC8F141BB9"; setAttr ".ihi" 0; setAttr -k off ".v"; setAttr ".ove" yes; @@ -2547,10 +2533,10 @@ createNode nurbsCurve -n "eye_R0_root12Shape" -p "eye_R0_root"; -0.125 -0.125 -0.125 ; createNode transform -n "eye_R0_look" -p "eye_R0_root"; - rename -uid "AE5B571D-4E02-F02E-E184-E79C39C8C72C"; + rename -uid "74F94454-4ADB-D567-0133-D1953BEBD75A"; addAttr -ci true -sn "isGearGuide" -ln "isGearGuide" -dv 1 -min 0 -max 1 -at "bool"; setAttr -k off -cb on ".v"; - setAttr ".t" -type "double3" -3.3306690738754696e-016 7.9936057773011271e-015 2.0321341905376418 ; + setAttr ".t" -type "double3" -5.5511151231257827e-016 7.9936057773011271e-015 2.0321341905376422 ; setAttr -k off -cb on ".tx"; setAttr -k off -cb on ".ty"; setAttr -k off -cb on ".tz"; @@ -2558,12 +2544,12 @@ createNode transform -n "eye_R0_look" -p "eye_R0_root"; setAttr -k off -cb on ".ry"; setAttr -k off -cb on ".rz"; setAttr -cb on ".ro"; - setAttr ".s" -type "double3" 0.99999999999999978 0.99999999999999778 1.0000000000000007 ; + setAttr ".s" -type "double3" 1.0000000000000002 0.99999999999999778 1.0000000000000004 ; setAttr -k off -cb on ".sx"; setAttr -k off -cb on ".sy"; setAttr -k off -cb on ".sz"; createNode nurbsCurve -n "eye_R0_lookShape" -p "eye_R0_look"; - rename -uid "D91BF218-407C-F76E-0254-E9B8E705D4E9"; + rename -uid "E6D27AF4-465A-ECF7-58BC-C9A4EC8643C3"; setAttr ".ihi" 0; setAttr -k off ".v"; setAttr ".ove" yes; @@ -2575,8 +2561,8 @@ createNode nurbsCurve -n "eye_R0_lookShape" -p "eye_R0_look"; 0.25 0 0 -0.25 0 0 ; -createNode nurbsCurve -n "eye_R0_look10Shape" -p "eye_R0_look"; - rename -uid "1442E189-4C27-EC95-49BC-82A835D66E38"; +createNode nurbsCurve -n "eye_R0_look13Shape" -p "eye_R0_look"; + rename -uid "13C3F2E0-4FFE-CB3A-03A1-25B4BE34092F"; setAttr ".ihi" 0; setAttr -k off ".v"; setAttr ".ove" yes; @@ -2588,8 +2574,8 @@ createNode nurbsCurve -n "eye_R0_look10Shape" -p "eye_R0_look"; 0 0.25 0 0 -0.25 0 ; -createNode nurbsCurve -n "eye_R0_look11Shape" -p "eye_R0_look"; - rename -uid "8008CF29-4244-F982-688B-C1815760A521"; +createNode nurbsCurve -n "eye_R0_look14Shape" -p "eye_R0_look"; + rename -uid "45CCED2A-481B-1C0D-886F-BD94585B9C90"; setAttr ".ihi" 0; setAttr -k off ".v"; setAttr ".ove" yes; @@ -2601,8 +2587,8 @@ createNode nurbsCurve -n "eye_R0_look11Shape" -p "eye_R0_look"; 0 0 0.25 0 0 -0.25 ; -createNode nurbsCurve -n "eye_R0_look12Shape" -p "eye_R0_look"; - rename -uid "E44D2C73-4105-AA55-B454-FB89D267AA9D"; +createNode nurbsCurve -n "eye_R0_look15Shape" -p "eye_R0_look"; + rename -uid "AC31E9DB-4AF8-E3EC-990C-ECA9DAD61CE4"; setAttr ".ihi" 0; setAttr -k off ".v"; setAttr ".ove" yes; @@ -2619,8 +2605,8 @@ createNode nurbsCurve -n "eye_R0_look12Shape" -p "eye_R0_look"; 0 -0.1875 0 -0.1875 0 0 ; -createNode nurbsCurve -n "eye_R0_look12_0crvShape" -p "eye_R0_look"; - rename -uid "8C06A311-40C9-6B4B-683B-BB9F1413E372"; +createNode nurbsCurve -n "eye_R0_look15_0crvShape" -p "eye_R0_look"; + rename -uid "3945BD19-4600-0530-19F3-87AD88BB9ABD"; setAttr ".ihi" 0; setAttr -k off ".v"; setAttr ".ove" yes; @@ -2637,8 +2623,8 @@ createNode nurbsCurve -n "eye_R0_look12_0crvShape" -p "eye_R0_look"; 0 0 -0.1875 -0.1875 0 0 ; -createNode nurbsCurve -n "eye_R0_look12_1crvShape" -p "eye_R0_look"; - rename -uid "6A9C2700-442A-7685-B70F-4CBE6C1F0B81"; +createNode nurbsCurve -n "eye_R0_look15_1crvShape" -p "eye_R0_look"; + rename -uid "680F0AAE-415C-96DD-EFAA-89AD50AE6080"; setAttr ".ihi" 0; setAttr -k off ".v"; setAttr ".ove" yes; @@ -2656,19 +2642,19 @@ createNode nurbsCurve -n "eye_R0_look12_1crvShape" -p "eye_R0_look"; 0 0 -0.1875 ; createNode transform -n "eye_R0_crv" -p "eye_R0_root"; - rename -uid "A6635ED5-4D77-7DCD-82C8-62AD28D90FBF"; + rename -uid "229ECC66-4661-E5DD-1895-BDB580A9418D"; setAttr ".ovdt" 1; setAttr ".ove" yes; - setAttr ".t" -type "double3" 0.69889742974753455 -3.4976629291575767 -3.5292331821335621 ; + setAttr ".t" -type "double3" 0.69889742974753422 -3.4976629291575758 -3.5292331821335599 ; setAttr ".r" -type "double3" 0 165.99355249473743 0 ; - setAttr ".s" -type "double3" 1.0000000000000009 0.99999999999999822 -1.0000000000000011 ; + setAttr ".s" -type "double3" 1.0000000000000011 0.99999999999999822 -1.0000000000000011 ; createNode nurbsCurve -n "eye_R0_crvShape" -p "eye_R0_crv"; - rename -uid "8E865766-4310-ADB2-AC86-B2AB0407FA4C"; + rename -uid "8180A9B2-427F-1A29-A5BA-308E2487A55D"; setAttr -k off ".v"; setAttr -s 4 ".iog[0].og"; setAttr ".tw" yes; createNode nurbsCurve -n "eye_R0_crvShapeOrig" -p "eye_R0_crv"; - rename -uid "EE6EF71B-428C-44CE-B238-E2ACE2D76508"; + rename -uid "DE1D7E74-4D09-FD4A-7ADA-55994D09C3A6"; setAttr -k off ".v"; setAttr ".io" yes; setAttr ".cc" -type "nurbsCurve" @@ -2679,10 +2665,10 @@ createNode nurbsCurve -n "eye_R0_crvShapeOrig" -p "eye_R0_crv"; 0 0 0 ; createNode transform -n "neck_C0_tan1" -p "neck_C0_neck"; - rename -uid "727C9A47-4F96-8F2B-C69D-099187C75E8C"; + rename -uid "8D584FF0-4238-6773-FA51-CDB3174DB3C8"; addAttr -ci true -sn "isGearGuide" -ln "isGearGuide" -dv 1 -min 0 -max 1 -at "bool"; setAttr -k off -cb on ".v"; - setAttr ".t" -type "double3" 0.094534318000986772 -0.76996010281298766 1.5833033991300372e-016 ; + setAttr ".t" -type "double3" 0.094534318000986772 -0.76996010281298766 1.5833033991300544e-016 ; setAttr -k off -cb on ".tx"; setAttr -k off -cb on ".ty"; setAttr -k off -cb on ".tz"; @@ -2690,12 +2676,12 @@ createNode transform -n "neck_C0_tan1" -p "neck_C0_neck"; setAttr -k off -cb on ".ry"; setAttr -k off -cb on ".rz"; setAttr -cb on ".ro"; - setAttr ".s" -type "double3" 0.99999999999999978 0.99999999999999978 1.0000000000000009 ; + setAttr ".s" -type "double3" 0.99999999999999956 0.99999999999999978 1.0000000000000004 ; setAttr -k off -cb on ".sx"; setAttr -k off -cb on ".sy"; setAttr -k off -cb on ".sz"; createNode nurbsCurve -n "neck_C0_tanShape1" -p "neck_C0_tan1"; - rename -uid "93B0F503-4AE9-561B-8171-88ABFB0AF7CA"; + rename -uid "4302B38A-4AB0-851C-CB26-91A266D3F260"; setAttr ".ihi" 0; setAttr -k off ".v"; setAttr ".ove" yes; @@ -2707,8 +2693,8 @@ createNode nurbsCurve -n "neck_C0_tanShape1" -p "neck_C0_tan1"; 0.25 0 0 -0.25 0 0 ; -createNode nurbsCurve -n "neck_C0_tanShape4" -p "neck_C0_tan1"; - rename -uid "6C4AF4BD-49BC-7B24-A884-C3A51F332CD8"; +createNode nurbsCurve -n "neck_C0_tanShape16" -p "neck_C0_tan1"; + rename -uid "AA0FF60A-4552-799F-2BCC-C885FA0384EA"; setAttr ".ihi" 0; setAttr -k off ".v"; setAttr ".ove" yes; @@ -2720,8 +2706,8 @@ createNode nurbsCurve -n "neck_C0_tanShape4" -p "neck_C0_tan1"; 0 0.25 0 0 -0.25 0 ; -createNode nurbsCurve -n "neck_C0_tanShape5" -p "neck_C0_tan1"; - rename -uid "7E9A90E1-4326-3391-51B8-5C97A7E79BB6"; +createNode nurbsCurve -n "neck_C0_tanShape17" -p "neck_C0_tan1"; + rename -uid "36B8F2EB-4FDA-A75D-9AC8-E592FF7C2A1B"; setAttr ".ihi" 0; setAttr -k off ".v"; setAttr ".ove" yes; @@ -2733,8 +2719,8 @@ createNode nurbsCurve -n "neck_C0_tanShape5" -p "neck_C0_tan1"; 0 0 0.25 0 0 -0.25 ; -createNode nurbsCurve -n "neck_C0_tanShape6" -p "neck_C0_tan1"; - rename -uid "3CA7D249-483E-703A-3C30-D89B5C6FE28E"; +createNode nurbsCurve -n "neck_C0_tanShape18" -p "neck_C0_tan1"; + rename -uid "0E2CD5EC-4D04-C9C2-A84C-BEA4E0EF6C18"; setAttr ".ihi" 0; setAttr -k off ".v"; setAttr ".ove" yes; @@ -2751,8 +2737,8 @@ createNode nurbsCurve -n "neck_C0_tanShape6" -p "neck_C0_tan1"; 0 -0.1875 0 -0.1875 0 0 ; -createNode nurbsCurve -n "neck_C0_tan14_0crvShape" -p "neck_C0_tan1"; - rename -uid "9FF1437B-43AF-C32D-FC19-0591E4FAB91B"; +createNode nurbsCurve -n "neck_C0_tan16_0crvShape" -p "neck_C0_tan1"; + rename -uid "7A1ACEE7-40F6-75F5-0369-C79D085670EF"; setAttr ".ihi" 0; setAttr -k off ".v"; setAttr ".ove" yes; @@ -2769,8 +2755,8 @@ createNode nurbsCurve -n "neck_C0_tan14_0crvShape" -p "neck_C0_tan1"; 0 0 -0.1875 -0.1875 0 0 ; -createNode nurbsCurve -n "neck_C0_tan14_1crvShape" -p "neck_C0_tan1"; - rename -uid "D86B1C1A-4C8A-50C2-66E5-4AA1F5DC2027"; +createNode nurbsCurve -n "neck_C0_tan16_1crvShape" -p "neck_C0_tan1"; + rename -uid "4C653053-4770-018F-0387-D4A27E593CB9"; setAttr ".ihi" 0; setAttr -k off ".v"; setAttr ".ove" yes; @@ -2788,19 +2774,19 @@ createNode nurbsCurve -n "neck_C0_tan14_1crvShape" -p "neck_C0_tan1"; 0 0 -0.1875 ; createNode transform -n "neck_C0_head_crv" -p "neck_C0_neck"; - rename -uid "5299B2DE-4224-2EB6-3372-0D97F3FF9787"; + rename -uid "7491A25F-4687-A9D9-F3C0-92B38EA7595F"; setAttr ".ovdt" 1; setAttr ".ove" yes; - setAttr ".t" -type "double3" 4.2174105108550703 -10.274847894363646 4.4383048488342812e-016 ; - setAttr ".r" -type "double3" -70.964236232861765 89.999999999999943 0 ; - setAttr ".s" -type "double3" 2.3915882794427565 2.3915882794427543 2.3915882794427561 ; + setAttr ".t" -type "double3" 4.2174105108550712 -10.274847894363644 4.4383048488342945e-016 ; + setAttr ".r" -type "double3" -70.964236232861779 89.999999999999957 0 ; + setAttr ".s" -type "double3" 2.3915882794427552 2.3915882794427539 2.3915882794427556 ; createNode nurbsCurve -n "neck_C0_head_crvShape" -p "neck_C0_head_crv"; - rename -uid "049CFF13-4114-B219-0EA3-AC815119299F"; + rename -uid "6B4680FE-49A0-1E15-1E59-B8B61CBC2126"; setAttr -k off ".v"; setAttr -s 4 ".iog[0].og"; setAttr ".tw" yes; createNode nurbsCurve -n "neck_C0_head_crvShapeOrig" -p "neck_C0_head_crv"; - rename -uid "251FEA07-4712-2522-8472-1394FD916D52"; + rename -uid "61F91F51-4F38-A26F-5FE3-329981F4D053"; setAttr -k off ".v"; setAttr ".io" yes; setAttr ".cc" -type "nurbsCurve" @@ -2812,10 +2798,10 @@ createNode nurbsCurve -n "neck_C0_head_crvShapeOrig" -p "neck_C0_head_crv"; 0 0 0 ; createNode transform -n "neck_C0_tan0" -p "neck_C0_root"; - rename -uid "56E305C5-407B-9831-0D24-8A9DB24F48BC"; + rename -uid "10B44329-47A4-4F6F-7279-DBA16CE72ACD"; addAttr -ci true -sn "isGearGuide" -ln "isGearGuide" -dv 1 -min 0 -max 1 -at "bool"; setAttr -k off -cb on ".v"; - setAttr ".t" -type "double3" -0.016734587625118369 0.81123959492320008 -2.1361002026221281e-016 ; + setAttr ".t" -type "double3" -0.016734587625119257 0.81123959492320008 -2.1361002026221389e-016 ; setAttr -k off -cb on ".tx"; setAttr -k off -cb on ".ty"; setAttr -k off -cb on ".tz"; @@ -2823,12 +2809,12 @@ createNode transform -n "neck_C0_tan0" -p "neck_C0_root"; setAttr -k off -cb on ".ry"; setAttr -k off -cb on ".rz"; setAttr -cb on ".ro"; - setAttr ".s" -type "double3" 1.0000000000000009 1 1.0000000000000002 ; + setAttr ".s" -type "double3" 1.0000000000000011 1 1.0000000000000007 ; setAttr -k off -cb on ".sx"; setAttr -k off -cb on ".sy"; setAttr -k off -cb on ".sz"; createNode nurbsCurve -n "neck_C0_tanShape0" -p "neck_C0_tan0"; - rename -uid "FF2E7F71-4E66-2904-D842-47AC5A1102DA"; + rename -uid "B823142C-4F43-3ACA-DBDA-9785816EFA2B"; setAttr ".ihi" 0; setAttr -k off ".v"; setAttr ".ove" yes; @@ -2840,8 +2826,8 @@ createNode nurbsCurve -n "neck_C0_tanShape0" -p "neck_C0_tan0"; 0.25 0 0 -0.25 0 0 ; -createNode nurbsCurve -n "neck_C0_tanShape1" -p "neck_C0_tan0"; - rename -uid "4DE6DD5A-4489-0A41-9CFB-BE970D2AB56D"; +createNode nurbsCurve -n "neck_C0_tanShape15" -p "neck_C0_tan0"; + rename -uid "8FC43EF0-4F52-3A10-152D-E2AAC895EFDD"; setAttr ".ihi" 0; setAttr -k off ".v"; setAttr ".ove" yes; @@ -2853,8 +2839,8 @@ createNode nurbsCurve -n "neck_C0_tanShape1" -p "neck_C0_tan0"; 0 0.25 0 0 -0.25 0 ; -createNode nurbsCurve -n "neck_C0_tanShape2" -p "neck_C0_tan0"; - rename -uid "B4A8269C-4997-40A0-436E-CBBAE83D06F7"; +createNode nurbsCurve -n "neck_C0_tanShape16" -p "neck_C0_tan0"; + rename -uid "2549FD33-490D-B493-5E0F-4EA59FE531D2"; setAttr ".ihi" 0; setAttr -k off ".v"; setAttr ".ove" yes; @@ -2866,8 +2852,8 @@ createNode nurbsCurve -n "neck_C0_tanShape2" -p "neck_C0_tan0"; 0 0 0.25 0 0 -0.25 ; -createNode nurbsCurve -n "neck_C0_tanShape3" -p "neck_C0_tan0"; - rename -uid "401F3B73-4EC8-EF5E-4969-20A702F7E618"; +createNode nurbsCurve -n "neck_C0_tanShape17" -p "neck_C0_tan0"; + rename -uid "E51298BD-47B8-7362-CB2E-5FB7D52737D9"; setAttr ".ihi" 0; setAttr -k off ".v"; setAttr ".ove" yes; @@ -2884,8 +2870,8 @@ createNode nurbsCurve -n "neck_C0_tanShape3" -p "neck_C0_tan0"; 0 -0.1875 0 -0.1875 0 0 ; -createNode nurbsCurve -n "neck_C0_tan13_0crvShape0" -p "neck_C0_tan0"; - rename -uid "FC13CBCF-48E2-6166-5347-C8861B6262B8"; +createNode nurbsCurve -n "neck_C0_tan15_0crvShape" -p "neck_C0_tan0"; + rename -uid "3B3E0FCE-4D90-D634-A060-4E86501B9728"; setAttr ".ihi" 0; setAttr -k off ".v"; setAttr ".ove" yes; @@ -2902,8 +2888,8 @@ createNode nurbsCurve -n "neck_C0_tan13_0crvShape0" -p "neck_C0_tan0"; 0 0 -0.1875 -0.1875 0 0 ; -createNode nurbsCurve -n "neck_C0_tan13_1crvShape0" -p "neck_C0_tan0"; - rename -uid "E0CEC0F8-477F-D12A-C0D5-3DA712085C2C"; +createNode nurbsCurve -n "neck_C0_tan15_1crvShape" -p "neck_C0_tan0"; + rename -uid "EC87E280-4C77-88D5-AD9B-FDB3BF68B94E"; setAttr ".ihi" 0; setAttr -k off ".v"; setAttr ".ove" yes; @@ -2921,8 +2907,8 @@ createNode nurbsCurve -n "neck_C0_tan13_1crvShape0" -p "neck_C0_tan0"; 0 0 -0.1875 ; createNode transform -n "neck_C0_blade" -p "neck_C0_root"; - rename -uid "E20E60D9-4862-612E-6948-14B68E83271B"; - addAttr -ci true -k true -sn "bladeRollOffset" -ln "bladeRollOffset" -at "float"; + rename -uid "857AA687-4CED-1192-B7B6-5D8D962C7367"; + addAttr -ci true -k true -sn "bladeRollOffset" -ln "bladeRollOffset" -dv -360 -at "float"; setAttr -l on -k off -cb on ".v"; setAttr -k off -cb on ".tx"; setAttr -k off -cb on ".ty"; @@ -2931,13 +2917,13 @@ createNode transform -n "neck_C0_blade" -p "neck_C0_root"; setAttr -k off -cb on ".ry"; setAttr -k off -cb on ".rz"; setAttr -cb on ".ro"; - setAttr ".s" -type "double3" 1.0000000000000002 1.0000000000000007 0.99999999999999967 ; + setAttr ".s" -type "double3" 1.0000000000000004 1.0000000000000009 0.99999999999999967 ; setAttr -l on -k off -cb on ".sx"; setAttr -l on -k off -cb on ".sy"; setAttr -l on -k off -cb on ".sz"; - setAttr -k on ".bladeRollOffset" -360; + setAttr -k on ".bladeRollOffset"; createNode nurbsCurve -n "neck_C0_bladeShape" -p "neck_C0_blade"; - rename -uid "078074D4-4B01-C08F-1CBB-75AC28EC066A"; + rename -uid "59FD673B-4816-3769-EC90-26991C9739D8"; setAttr ".ihi" 0; setAttr -k off ".v"; setAttr ".ove" yes; @@ -2951,8 +2937,8 @@ createNode nurbsCurve -n "neck_C0_bladeShape" -p "neck_C0_blade"; 0 0.1764761597555182 0 0 0 0 ; -createNode aimConstraint -n "neck_C0_blade_aimConstraint7" -p "neck_C0_blade"; - rename -uid "ADDEEF8E-4971-2424-50F2-ED81835F0BDB"; +createNode aimConstraint -n "neck_C0_blade_aimConstraint8" -p "neck_C0_blade"; + rename -uid "D85D1303-4168-E125-8770-6A9472BEAD46"; addAttr -dcb 0 -ci true -sn "w0" -ln "neck_C0_tan0W0" -dv 1 -at "double"; setAttr -k on ".nds"; setAttr -k off ".v"; @@ -2968,10 +2954,10 @@ createNode aimConstraint -n "neck_C0_blade_aimConstraint7" -p "neck_C0_blade"; setAttr ".erp" yes; setAttr ".wut" 2; setAttr ".o" -type "double3" -360 0 360 ; - setAttr ".rsrr" -type "double3" -540 -2.8249000307521022e-030 451.18175355423011 ; + setAttr ".rsrr" -type "double3" -540 -1.4124500153760508e-030 451.18175355423011 ; setAttr -k on ".w0"; -createNode pointConstraint -n "neck_C0_blade_pointConstraint7" -p "neck_C0_blade"; - rename -uid "FCBCCD59-411F-1D8E-34DC-939AAC057BF8"; +createNode pointConstraint -n "neck_C0_blade_pointConstraint8" -p "neck_C0_blade"; + rename -uid "B00A9F16-48F5-F271-2883-CE8BCCBD5CAB"; addAttr -dcb 0 -ci true -k true -sn "w0" -ln "neck_C0_rootW0" -dv 1 -min 0 -at "double"; setAttr -k on ".nds"; setAttr -k off ".v"; @@ -2986,22 +2972,22 @@ createNode pointConstraint -n "neck_C0_blade_pointConstraint7" -p "neck_C0_blade setAttr -k off ".sz"; setAttr ".erp" yes; setAttr ".rst" -type "double3" -1.3322676295501878e-015 8.8817841970012523e-016 - -6.4094948549207209e-031 ; + -5.4234187233944562e-031 ; setAttr -k on ".w0"; createNode transform -n "neck_C0_neck_crv" -p "neck_C0_root"; - rename -uid "CB3CDC63-4F4D-0D32-4051-ACAA2607D63E"; + rename -uid "46B7BFC9-48AC-9AB7-1206-CCAC7A8DE96E"; setAttr ".ovdt" 1; setAttr ".ove" yes; - setAttr ".t" -type "double3" 3.976162134148518 -6.6105608685998307 -4.274848312126261e-016 ; - setAttr ".r" -type "double3" -70.964236232861793 89.999999999999957 0 ; + setAttr ".t" -type "double3" 3.976162134148518 -6.6105608685998307 -4.2748483121262679e-016 ; + setAttr ".r" -type "double3" -70.964236232861779 89.999999999999957 0 ; setAttr ".s" -type "double3" 2.391588279442757 2.3915882794427565 2.3915882794427565 ; createNode nurbsCurve -n "neck_C0_neck_crvShape" -p "neck_C0_neck_crv"; - rename -uid "96897850-4EB4-C197-2AC2-C99379432238"; + rename -uid "0B3400FF-4E83-F4C6-87C1-83A1D2BE0335"; setAttr -k off ".v"; setAttr -s 4 ".iog[0].og"; setAttr ".tw" yes; createNode nurbsCurve -n "neck_C0_neck_crvShapeOrig" -p "neck_C0_neck_crv"; - rename -uid "B1B3DE30-4E42-72A7-3E12-BABBCE9A547E"; + rename -uid "69DA851F-46E4-CF32-3E81-E0B5138FB3D2"; setAttr -k off ".v"; setAttr ".io" yes; setAttr ".cc" -type "nurbsCurve" @@ -3014,7 +3000,7 @@ createNode nurbsCurve -n "neck_C0_neck_crvShapeOrig" -p "neck_C0_neck_crv"; 0 0 0 ; createNode transform -n "shoulder_L0_root" -p "spine_C0_eff"; - rename -uid "8420FDA3-4558-D555-216D-54A85866B763"; + rename -uid "B3912BDB-41C2-F9B3-2638-5DAA1B95D3C5"; addAttr -ci true -sn "isGearGuide" -ln "isGearGuide" -dv 1 -min 0 -max 1 -at "bool"; addAttr -ci true -sn "comp_type" -ln "comp_type" -dt "string"; addAttr -ci true -sn "comp_name" -ln "comp_name" -dt "string"; @@ -3024,13 +3010,13 @@ createNode transform -n "shoulder_L0_root" -p "spine_C0_eff"; addAttr -ci true -sn "ui_host" -ln "ui_host" -dt "string"; addAttr -ci true -sn "ctlGrp" -ln "ctlGrp" -dt "string"; addAttr -ci true -sn "mode" -ln "mode" -min 0 -at "long"; - addAttr -ci true -sn "blend" -ln "blend" -min 0 -max 1 -at "double"; - addAttr -ci true -sn "neutralpose" -ln "neutralpose" -min 0 -max 1 -at "bool"; + addAttr -ci true -sn "blend" -ln "blend" -dv 1 -min 0 -max 1 -at "double"; + addAttr -ci true -sn "neutralpose" -ln "neutralpose" -dv 1 -min 0 -max 1 -at "bool"; addAttr -ci true -sn "ikrefarray" -ln "ikrefarray" -dt "string"; addAttr -ci true -sn "useIndex" -ln "useIndex" -min 0 -max 1 -at "bool"; - addAttr -ci true -sn "parentJointIndex" -ln "parentJointIndex" -at "long"; + addAttr -ci true -sn "parentJointIndex" -ln "parentJointIndex" -dv -1 -at "long"; setAttr -k off -cb on ".v"; - setAttr ".t" -type "double3" -0.23232496368006927 0.19745119313991832 -0.20082401790608242 ; + setAttr ".t" -type "double3" -0.23232496368006927 0.19745119313991832 -0.20082401790608245 ; setAttr -k off -cb on ".tx"; setAttr -k off -cb on ".ty"; setAttr -k off -cb on ".tz"; @@ -3049,12 +3035,9 @@ createNode transform -n "shoulder_L0_root" -p "spine_C0_eff"; setAttr ".connector" -type "string" "standard"; setAttr ".ui_host" -type "string" "frontLegUI_L0_root"; setAttr ".ctlGrp" -type "string" ""; - setAttr ".blend" 1; - setAttr ".neutralpose" yes; setAttr ".ikrefarray" -type "string" ""; - setAttr ".parentJointIndex" -1; createNode nurbsCurve -n "shoulder_L0_rootShape" -p "shoulder_L0_root"; - rename -uid "52097B2C-4DE3-D6FA-341D-80AF1FEE3FFB"; + rename -uid "1CA84D8A-473D-3624-E123-009C46956678"; setAttr ".ihi" 0; setAttr -k off ".v"; setAttr ".ove" yes; @@ -3066,8 +3049,8 @@ createNode nurbsCurve -n "shoulder_L0_rootShape" -p "shoulder_L0_root"; 0.25 0 0 -0.25 0 0 ; -createNode nurbsCurve -n "shoulder_L0_root19Shape" -p "shoulder_L0_root"; - rename -uid "7FBD9A65-4F4E-1803-B4DD-45B065372063"; +createNode nurbsCurve -n "shoulder_L0_root22Shape" -p "shoulder_L0_root"; + rename -uid "46C07D5F-406E-0654-CFD6-9289D395EAEC"; setAttr ".ihi" 0; setAttr -k off ".v"; setAttr ".ove" yes; @@ -3079,8 +3062,8 @@ createNode nurbsCurve -n "shoulder_L0_root19Shape" -p "shoulder_L0_root"; 0 0.25 0 0 -0.25 0 ; -createNode nurbsCurve -n "shoulder_L0_root20Shape" -p "shoulder_L0_root"; - rename -uid "74B2FAEF-4C3D-D229-7785-6DA2EB26390F"; +createNode nurbsCurve -n "shoulder_L0_root23Shape" -p "shoulder_L0_root"; + rename -uid "316FB429-42DF-5990-203A-A886C51072CA"; setAttr ".ihi" 0; setAttr -k off ".v"; setAttr ".ove" yes; @@ -3092,8 +3075,8 @@ createNode nurbsCurve -n "shoulder_L0_root20Shape" -p "shoulder_L0_root"; 0 0 0.25 0 0 -0.25 ; -createNode nurbsCurve -n "shoulder_L0_root21Shape" -p "shoulder_L0_root"; - rename -uid "39BD3C6D-4CCF-37E6-B468-56ABB0BE0C1D"; +createNode nurbsCurve -n "shoulder_L0_root24Shape" -p "shoulder_L0_root"; + rename -uid "53D3EED3-4A52-9271-F55A-B9A2609D4EB7"; setAttr ".ihi" 0; setAttr -k off ".v"; setAttr ".ove" yes; @@ -3120,10 +3103,10 @@ createNode nurbsCurve -n "shoulder_L0_root21Shape" -p "shoulder_L0_root"; -0.125 -0.125 -0.125 ; createNode transform -n "shoulder_L0_0_loc" -p "shoulder_L0_root"; - rename -uid "C0FE6F06-46C3-F998-E8CB-C692B9380BB4"; + rename -uid "A32B308D-4710-F594-290C-8881868C1B81"; addAttr -ci true -sn "isGearGuide" -ln "isGearGuide" -dv 1 -min 0 -max 1 -at "bool"; setAttr -k off -cb on ".v"; - setAttr ".t" -type "double3" 0.83252561455724661 -0.20882616370654938 0.20663608494886754 ; + setAttr ".t" -type "double3" 0.83252561455724661 -0.20882616370654894 0.20663608494886754 ; setAttr -k off -cb on ".tx"; setAttr -k off -cb on ".ty"; setAttr -k off -cb on ".tz"; @@ -3136,7 +3119,7 @@ createNode transform -n "shoulder_L0_0_loc" -p "shoulder_L0_root"; setAttr -k off -cb on ".sy"; setAttr -k off -cb on ".sz"; createNode nurbsCurve -n "shoulder_L0_0_locShape" -p "shoulder_L0_0_loc"; - rename -uid "F16F8FD9-4233-4BA7-293D-A7A18E134DCD"; + rename -uid "AD847ADD-469C-E7F9-ADA0-FD93E2B7A007"; setAttr ".ihi" 0; setAttr -k off ".v"; setAttr ".ove" yes; @@ -3148,8 +3131,8 @@ createNode nurbsCurve -n "shoulder_L0_0_locShape" -p "shoulder_L0_0_loc"; 0.25 0 0 -0.25 0 0 ; -createNode nurbsCurve -n "shoulder_L0_0_loc19Shape" -p "shoulder_L0_0_loc"; - rename -uid "15A40232-4209-A1A6-379C-0BBE04B0B0B1"; +createNode nurbsCurve -n "shoulder_L0_0_loc22Shape" -p "shoulder_L0_0_loc"; + rename -uid "E2D6EE9D-4EEF-AB5E-A858-D592CBA52A4E"; setAttr ".ihi" 0; setAttr -k off ".v"; setAttr ".ove" yes; @@ -3161,8 +3144,8 @@ createNode nurbsCurve -n "shoulder_L0_0_loc19Shape" -p "shoulder_L0_0_loc"; 0 0.25 0 0 -0.25 0 ; -createNode nurbsCurve -n "shoulder_L0_0_loc20Shape" -p "shoulder_L0_0_loc"; - rename -uid "25A7DF8B-431E-C855-7D0F-EB8B2894F5DF"; +createNode nurbsCurve -n "shoulder_L0_0_loc23Shape" -p "shoulder_L0_0_loc"; + rename -uid "12EBB428-4DBF-F205-8E0F-53BC3B0DBD00"; setAttr ".ihi" 0; setAttr -k off ".v"; setAttr ".ove" yes; @@ -3174,8 +3157,8 @@ createNode nurbsCurve -n "shoulder_L0_0_loc20Shape" -p "shoulder_L0_0_loc"; 0 0 0.25 0 0 -0.25 ; -createNode nurbsCurve -n "shoulder_L0_0_loc21Shape" -p "shoulder_L0_0_loc"; - rename -uid "91F27373-4BF9-B944-FA5E-B38BCC30A8F9"; +createNode nurbsCurve -n "shoulder_L0_0_loc24Shape" -p "shoulder_L0_0_loc"; + rename -uid "467EDF38-4A8E-B1AA-6D1B-8EA7361880E1"; setAttr ".ihi" 0; setAttr -k off ".v"; setAttr ".ove" yes; @@ -3192,8 +3175,8 @@ createNode nurbsCurve -n "shoulder_L0_0_loc21Shape" -p "shoulder_L0_0_loc"; 0 -0.1875 0 -0.1875 0 0 ; -createNode nurbsCurve -n "shoulder_L0_0_loc21_0crvShape" -p "shoulder_L0_0_loc"; - rename -uid "291EFF06-4FEE-626B-C959-1EBBE6EB303F"; +createNode nurbsCurve -n "shoulder_L0_0_loc24_0crvShape" -p "shoulder_L0_0_loc"; + rename -uid "B40B679D-4AAB-2A52-111A-48B7EB8D97ED"; setAttr ".ihi" 0; setAttr -k off ".v"; setAttr ".ove" yes; @@ -3210,8 +3193,8 @@ createNode nurbsCurve -n "shoulder_L0_0_loc21_0crvShape" -p "shoulder_L0_0_loc"; 0 0 -0.1875 -0.1875 0 0 ; -createNode nurbsCurve -n "shoulder_L0_0_loc21_1crvShape" -p "shoulder_L0_0_loc"; - rename -uid "9F17FF66-46DF-70BD-E34A-6F9CC89C2A10"; +createNode nurbsCurve -n "shoulder_L0_0_loc24_1crvShape" -p "shoulder_L0_0_loc"; + rename -uid "8ACB199D-4B79-C4AC-C412-67A069C7D52B"; setAttr ".ihi" 0; setAttr -k off ".v"; setAttr ".ove" yes; @@ -3229,7 +3212,7 @@ createNode nurbsCurve -n "shoulder_L0_0_loc21_1crvShape" -p "shoulder_L0_0_loc"; 0 0 -0.1875 ; createNode transform -n "legFront_L0_root" -p "shoulder_L0_0_loc"; - rename -uid "CC228F5F-40C4-6101-250D-3B971CD7ED2E"; + rename -uid "C4E57082-4386-422E-97C7-A99B6EAC28BA"; addAttr -ci true -sn "isGearGuide" -ln "isGearGuide" -dv 1 -min 0 -max 1 -at "bool"; addAttr -ci true -sn "comp_type" -ln "comp_type" -dt "string"; addAttr -ci true -sn "comp_name" -ln "comp_name" -dt "string"; @@ -3238,23 +3221,23 @@ createNode transform -n "legFront_L0_root" -p "shoulder_L0_0_loc"; addAttr -ci true -sn "connector" -ln "connector" -dt "string"; addAttr -ci true -sn "ui_host" -ln "ui_host" -dt "string"; addAttr -ci true -sn "ctlGrp" -ln "ctlGrp" -dt "string"; - addAttr -ci true -sn "blend" -ln "blend" -min 0 -max 1 -at "double"; - addAttr -ci true -sn "full3BonesIK" -ln "full3BonesIK" -min 0 -max 1 -at "double"; + addAttr -ci true -sn "blend" -ln "blend" -dv 1 -min 0 -max 1 -at "double"; + addAttr -ci true -sn "full3BonesIK" -ln "full3BonesIK" -dv 1 -min 0 -max 1 -at "double"; addAttr -ci true -sn "ikrefarray" -ln "ikrefarray" -dt "string"; addAttr -ci true -sn "upvrefarray" -ln "upvrefarray" -dt "string"; - addAttr -ci true -sn "maxstretch" -ln "maxstretch" -dv 1 -min 1 -at "double"; + addAttr -ci true -sn "maxstretch" -ln "maxstretch" -dv 1.5 -min 1 -at "double"; addAttr -ci true -k true -sn "ikSolver" -ln "ikSolver" -min 0 -max 1 -en "IK Spring:IK Rotation Plane" -at "enum"; - addAttr -ci true -sn "ikOri" -ln "ikOri" -min 0 -max 1 -at "bool"; - addAttr -ci true -sn "div0" -ln "div0" -dv 1 -min 1 -at "long"; - addAttr -ci true -sn "div1" -ln "div1" -dv 1 -min 1 -at "long"; - addAttr -ci true -sn "div2" -ln "div2" -dv 1 -min 1 -at "long"; + addAttr -ci true -sn "ikOri" -ln "ikOri" -dv 1 -min 0 -max 1 -at "bool"; + addAttr -ci true -sn "div0" -ln "div0" -dv 2 -min 1 -at "long"; + addAttr -ci true -sn "div1" -ln "div1" -dv 2 -min 1 -at "long"; + addAttr -ci true -sn "div2" -ln "div2" -dv 2 -min 1 -at "long"; addAttr -ci true -k true -sn "st_profile" -ln "st_profile" -at "double"; addAttr -ci true -k true -sn "sq_profile" -ln "sq_profile" -at "double"; addAttr -ci true -sn "useIndex" -ln "useIndex" -min 0 -max 1 -at "bool"; - addAttr -ci true -sn "parentJointIndex" -ln "parentJointIndex" -at "long"; + addAttr -ci true -sn "parentJointIndex" -ln "parentJointIndex" -dv -1 -at "long"; setAttr -k off -cb on ".v"; - setAttr ".t" -type "double3" -1.1102230246251565e-015 -3.5527136788005009e-015 -4.4408920985006262e-016 ; + setAttr ".t" -type "double3" -1.2212453270876722e-015 -3.9968028886505635e-015 -4.4408920985006262e-016 ; setAttr -k off -cb on ".tx"; setAttr -k off -cb on ".ty"; setAttr -k off -cb on ".tz"; @@ -3262,7 +3245,7 @@ createNode transform -n "legFront_L0_root" -p "shoulder_L0_0_loc"; setAttr -k off -cb on ".ry"; setAttr -k off -cb on ".rz"; setAttr -cb on ".ro"; - setAttr ".s" -type "double3" 0.39967062595950276 0.3996706259595032 0.39967062595950281 ; + setAttr ".s" -type "double3" 0.39967062595950276 0.39967062595950326 0.39967062595950281 ; setAttr -k off -cb on ".sx"; setAttr -k off -cb on ".sy"; setAttr -k off -cb on ".sz"; @@ -3272,21 +3255,13 @@ createNode transform -n "legFront_L0_root" -p "shoulder_L0_0_loc"; setAttr ".connector" -type "string" "standard"; setAttr ".ui_host" -type "string" "frontLegUI_L0_root"; setAttr ".ctlGrp" -type "string" ""; - setAttr ".blend" 1; - setAttr ".full3BonesIK" 1; setAttr ".ikrefarray" -type "string" "local_C0_root,spine_C0_root,global_C0_root"; setAttr ".upvrefarray" -type "string" "local_C0_root,spine_C0_root,global_C0_root"; - setAttr ".maxstretch" 1.5; setAttr -k on ".ikSolver" 1; - setAttr ".ikOri" yes; - setAttr ".div0" 2; - setAttr ".div1" 2; - setAttr ".div2" 2; setAttr -k on ".st_profile"; setAttr -k on ".sq_profile"; - setAttr ".parentJointIndex" -1; createNode nurbsCurve -n "legFront_L0_rootShape" -p "legFront_L0_root"; - rename -uid "CE447A0A-47D3-F72B-1450-82A8D29FE775"; + rename -uid "623B1E4A-451A-6F06-8493-31B96FACEA2B"; setAttr ".ihi" 0; setAttr -k off ".v"; setAttr ".ove" yes; @@ -3298,8 +3273,8 @@ createNode nurbsCurve -n "legFront_L0_rootShape" -p "legFront_L0_root"; 0.25 0 0 -0.25 0 0 ; -createNode nurbsCurve -n "legFront_L0_root19Shape" -p "legFront_L0_root"; - rename -uid "A7D94E9B-4AE2-CEBA-3CA6-D5ACFB1482AA"; +createNode nurbsCurve -n "legFront_L0_root22Shape" -p "legFront_L0_root"; + rename -uid "F6091BC4-44AF-87A0-20C7-D9889ECCBE19"; setAttr ".ihi" 0; setAttr -k off ".v"; setAttr ".ove" yes; @@ -3311,8 +3286,8 @@ createNode nurbsCurve -n "legFront_L0_root19Shape" -p "legFront_L0_root"; 0 0.25 0 0 -0.25 0 ; -createNode nurbsCurve -n "legFront_L0_root20Shape" -p "legFront_L0_root"; - rename -uid "BD4579F7-4EA3-B093-5E71-2DBFDB14C3DC"; +createNode nurbsCurve -n "legFront_L0_root23Shape" -p "legFront_L0_root"; + rename -uid "91DF8B77-4C60-CEAA-2E6E-A2A7B98DB06B"; setAttr ".ihi" 0; setAttr -k off ".v"; setAttr ".ove" yes; @@ -3324,8 +3299,8 @@ createNode nurbsCurve -n "legFront_L0_root20Shape" -p "legFront_L0_root"; 0 0 0.25 0 0 -0.25 ; -createNode nurbsCurve -n "legFront_L0_root21Shape" -p "legFront_L0_root"; - rename -uid "6F751258-4802-F68C-3D85-E682A5B693F0"; +createNode nurbsCurve -n "legFront_L0_root24Shape" -p "legFront_L0_root"; + rename -uid "C824F064-4AD7-E8F4-A957-048F9DBF14F9"; setAttr ".ihi" 0; setAttr -k off ".v"; setAttr ".ove" yes; @@ -3352,10 +3327,10 @@ createNode nurbsCurve -n "legFront_L0_root21Shape" -p "legFront_L0_root"; -0.125 -0.125 -0.125 ; createNode transform -n "legFront_L0_knee" -p "legFront_L0_root"; - rename -uid "64486636-43B8-536A-968E-17980CFCA184"; + rename -uid "C135654D-474B-F30B-98E7-869FBFF19EAA"; addAttr -ci true -sn "isGearGuide" -ln "isGearGuide" -dv 1 -min 0 -max 1 -at "bool"; setAttr -k off -cb on ".v"; - setAttr ".t" -type "double3" 3.1086244689504383e-015 -2.1240863021370493 -0.48633856256837404 ; + setAttr ".t" -type "double3" 3.1086244689504383e-015 -2.1240863021370493 -0.48633856256837493 ; setAttr -l on -k off -cb on ".tx"; setAttr -k off -cb on ".ty"; setAttr -k off -cb on ".tz"; @@ -3363,12 +3338,12 @@ createNode transform -n "legFront_L0_knee" -p "legFront_L0_root"; setAttr -l on -k off -cb on ".ry"; setAttr -l on -k off -cb on ".rz"; setAttr -cb on ".ro"; - setAttr ".s" -type "double3" 1.0000000000000002 0.99999999999999933 1.0000000000000004 ; + setAttr ".s" -type "double3" 1.0000000000000002 0.99999999999999889 1.0000000000000002 ; setAttr -k off -cb on ".sx"; setAttr -k off -cb on ".sy"; setAttr -k off -cb on ".sz"; createNode nurbsCurve -n "legFront_L0_kneeShape" -p "legFront_L0_knee"; - rename -uid "28072697-4411-228E-63B6-B192E87CDBE2"; + rename -uid "E6EC6441-437D-8127-7462-658E8C043B22"; setAttr ".ihi" 0; setAttr -k off ".v"; setAttr ".ove" yes; @@ -3380,8 +3355,8 @@ createNode nurbsCurve -n "legFront_L0_kneeShape" -p "legFront_L0_knee"; 0.25 0 0 -0.25 0 0 ; -createNode nurbsCurve -n "legFront_L0_knee19Shape" -p "legFront_L0_knee"; - rename -uid "4CB73FB3-4579-F4EA-4B90-138DCBCF485B"; +createNode nurbsCurve -n "legFront_L0_knee22Shape" -p "legFront_L0_knee"; + rename -uid "E928B499-42B8-2813-4555-D183E84C4646"; setAttr ".ihi" 0; setAttr -k off ".v"; setAttr ".ove" yes; @@ -3393,8 +3368,8 @@ createNode nurbsCurve -n "legFront_L0_knee19Shape" -p "legFront_L0_knee"; 0 0.25 0 0 -0.25 0 ; -createNode nurbsCurve -n "legFront_L0_knee20Shape" -p "legFront_L0_knee"; - rename -uid "670837A9-4A50-6776-C7EA-BAA4DC41F1BB"; +createNode nurbsCurve -n "legFront_L0_knee23Shape" -p "legFront_L0_knee"; + rename -uid "0FBB48F2-46C9-EF95-8895-849AFBFEED46"; setAttr ".ihi" 0; setAttr -k off ".v"; setAttr ".ove" yes; @@ -3406,8 +3381,8 @@ createNode nurbsCurve -n "legFront_L0_knee20Shape" -p "legFront_L0_knee"; 0 0 0.25 0 0 -0.25 ; -createNode nurbsCurve -n "legFront_L0_knee21Shape" -p "legFront_L0_knee"; - rename -uid "47813DCB-4FCC-E3BB-E0ED-839585928F2C"; +createNode nurbsCurve -n "legFront_L0_knee24Shape" -p "legFront_L0_knee"; + rename -uid "00DF5E02-4A43-4DC5-07B3-8988ECE677A7"; setAttr ".ihi" 0; setAttr -k off ".v"; setAttr ".ove" yes; @@ -3424,8 +3399,8 @@ createNode nurbsCurve -n "legFront_L0_knee21Shape" -p "legFront_L0_knee"; 0 -0.1875 0 -0.1875 0 0 ; -createNode nurbsCurve -n "legFront_L0_knee21_0crvShape" -p "legFront_L0_knee"; - rename -uid "C0311EFA-4A20-5E90-DEDB-0991757179FE"; +createNode nurbsCurve -n "legFront_L0_knee24_0crvShape" -p "legFront_L0_knee"; + rename -uid "50E1EFC3-4353-9D63-271C-C8950DA2BAA9"; setAttr ".ihi" 0; setAttr -k off ".v"; setAttr ".ove" yes; @@ -3442,8 +3417,8 @@ createNode nurbsCurve -n "legFront_L0_knee21_0crvShape" -p "legFront_L0_knee"; 0 0 -0.1875 -0.1875 0 0 ; -createNode nurbsCurve -n "legFront_L0_knee21_1crvShape" -p "legFront_L0_knee"; - rename -uid "D92E7E6F-4CF1-1512-30F6-67A6275B834C"; +createNode nurbsCurve -n "legFront_L0_knee24_1crvShape" -p "legFront_L0_knee"; + rename -uid "7DA45A1B-4929-7A86-466A-9F9236A53A5D"; setAttr ".ihi" 0; setAttr -k off ".v"; setAttr ".ove" yes; @@ -3461,7 +3436,7 @@ createNode nurbsCurve -n "legFront_L0_knee21_1crvShape" -p "legFront_L0_knee"; 0 0 -0.1875 ; createNode transform -n "legFront_L0_ankle" -p "legFront_L0_knee"; - rename -uid "F2FD4BAD-431B-7479-1892-D6A52B49E068"; + rename -uid "52304CDA-4A0A-004F-C197-D5B27D719B4B"; addAttr -ci true -sn "isGearGuide" -ln "isGearGuide" -dv 1 -min 0 -max 1 -at "bool"; setAttr -k off -cb on ".v"; setAttr ".t" -type "double3" 5.773159728050814e-015 -2.3651516407059168 0.073902270404610171 ; @@ -3472,12 +3447,12 @@ createNode transform -n "legFront_L0_ankle" -p "legFront_L0_knee"; setAttr -l on -k off -cb on ".ry"; setAttr -l on -k off -cb on ".rz"; setAttr -cb on ".ro"; - setAttr ".s" -type "double3" 1.0000000000000002 0.99999999999999978 0.99999999999999978 ; + setAttr ".s" -type "double3" 1.0000000000000002 0.99999999999999989 0.99999999999999978 ; setAttr -k off -cb on ".sx"; setAttr -k off -cb on ".sy"; setAttr -k off -cb on ".sz"; createNode nurbsCurve -n "legFront_L0_ankleShape" -p "legFront_L0_ankle"; - rename -uid "33475878-41E4-934D-F598-E38EA73D13DD"; + rename -uid "26B8CE30-4869-91E1-4E96-71BD57437DF1"; setAttr ".ihi" 0; setAttr -k off ".v"; setAttr ".ove" yes; @@ -3489,8 +3464,8 @@ createNode nurbsCurve -n "legFront_L0_ankleShape" -p "legFront_L0_ankle"; 0.25 0 0 -0.25 0 0 ; -createNode nurbsCurve -n "legFront_L0_ankle19Shape" -p "legFront_L0_ankle"; - rename -uid "5C0C670F-4BFA-0C0D-D2C7-D1B1A3558030"; +createNode nurbsCurve -n "legFront_L0_ankle22Shape" -p "legFront_L0_ankle"; + rename -uid "ADB1A2A8-4EBA-BDCF-86D0-9BA9653F4C01"; setAttr ".ihi" 0; setAttr -k off ".v"; setAttr ".ove" yes; @@ -3502,8 +3477,8 @@ createNode nurbsCurve -n "legFront_L0_ankle19Shape" -p "legFront_L0_ankle"; 0 0.25 0 0 -0.25 0 ; -createNode nurbsCurve -n "legFront_L0_ankle20Shape" -p "legFront_L0_ankle"; - rename -uid "3F519FF1-41E1-EBEF-2463-D29885054B14"; +createNode nurbsCurve -n "legFront_L0_ankle23Shape" -p "legFront_L0_ankle"; + rename -uid "59E653FF-4008-1324-C4B8-5080A0E88DEA"; setAttr ".ihi" 0; setAttr -k off ".v"; setAttr ".ove" yes; @@ -3515,8 +3490,8 @@ createNode nurbsCurve -n "legFront_L0_ankle20Shape" -p "legFront_L0_ankle"; 0 0 0.25 0 0 -0.25 ; -createNode nurbsCurve -n "legFront_L0_ankle21Shape" -p "legFront_L0_ankle"; - rename -uid "BF60B122-4CBC-4BED-E441-50A563E91A2E"; +createNode nurbsCurve -n "legFront_L0_ankle24Shape" -p "legFront_L0_ankle"; + rename -uid "0F648F40-4515-5E02-25C4-A69072FBEBBB"; setAttr ".ihi" 0; setAttr -k off ".v"; setAttr ".ove" yes; @@ -3533,8 +3508,8 @@ createNode nurbsCurve -n "legFront_L0_ankle21Shape" -p "legFront_L0_ankle"; 0 -0.1875 0 -0.1875 0 0 ; -createNode nurbsCurve -n "legFront_L0_ankle21_0crvShape" -p "legFront_L0_ankle"; - rename -uid "552FE9AE-4585-D73C-A63C-8E8AEFBAF760"; +createNode nurbsCurve -n "legFront_L0_ankle24_0crvShape" -p "legFront_L0_ankle"; + rename -uid "B08D7641-4CE2-49F0-9C11-64A252AD84F5"; setAttr ".ihi" 0; setAttr -k off ".v"; setAttr ".ove" yes; @@ -3551,8 +3526,8 @@ createNode nurbsCurve -n "legFront_L0_ankle21_0crvShape" -p "legFront_L0_ankle"; 0 0 -0.1875 -0.1875 0 0 ; -createNode nurbsCurve -n "legFront_L0_ankle21_1crvShape" -p "legFront_L0_ankle"; - rename -uid "40AE7EED-47AA-FCC6-FA46-3F824B688537"; +createNode nurbsCurve -n "legFront_L0_ankle24_1crvShape" -p "legFront_L0_ankle"; + rename -uid "FE1603E8-4D00-7507-DB90-538449CBA231"; setAttr ".ihi" 0; setAttr -k off ".v"; setAttr ".ove" yes; @@ -3570,10 +3545,10 @@ createNode nurbsCurve -n "legFront_L0_ankle21_1crvShape" -p "legFront_L0_ankle"; 0 0 -0.1875 ; createNode transform -n "legFront_L0_foot" -p "legFront_L0_ankle"; - rename -uid "4458F3EF-4DF6-1ADA-7F5C-DCA7C751F319"; + rename -uid "428345C2-480C-6A0D-DDB3-6294C2A683EF"; addAttr -ci true -sn "isGearGuide" -ln "isGearGuide" -dv 1 -min 0 -max 1 -at "bool"; setAttr -k off -cb on ".v"; - setAttr ".t" -type "double3" 1.7763568394002505e-015 -1.1294425054275508 0.023148533894220336 ; + setAttr ".t" -type "double3" 1.3322676295501878e-015 -1.1294425054275514 0.023148533894218559 ; setAttr -l on -k off -cb on ".tx"; setAttr -k off -cb on ".ty"; setAttr -k off -cb on ".tz"; @@ -3586,7 +3561,7 @@ createNode transform -n "legFront_L0_foot" -p "legFront_L0_ankle"; setAttr -k off -cb on ".sy"; setAttr -k off -cb on ".sz"; createNode nurbsCurve -n "legFront_L0_footShape" -p "legFront_L0_foot"; - rename -uid "8A6D0694-4035-8DF0-BD99-9ABA2A2E5CBF"; + rename -uid "801211EE-46A5-7C74-EEA6-CEAFD9959D20"; setAttr ".ihi" 0; setAttr -k off ".v"; setAttr ".ove" yes; @@ -3598,8 +3573,8 @@ createNode nurbsCurve -n "legFront_L0_footShape" -p "legFront_L0_foot"; 0.25 0 0 -0.25 0 0 ; -createNode nurbsCurve -n "legFront_L0_foot19Shape" -p "legFront_L0_foot"; - rename -uid "E9DCA08A-4690-8B72-532D-619943C42406"; +createNode nurbsCurve -n "legFront_L0_foot22Shape" -p "legFront_L0_foot"; + rename -uid "B9412E2E-4070-0DCB-A1C4-F1A53E00CC20"; setAttr ".ihi" 0; setAttr -k off ".v"; setAttr ".ove" yes; @@ -3611,8 +3586,8 @@ createNode nurbsCurve -n "legFront_L0_foot19Shape" -p "legFront_L0_foot"; 0 0.25 0 0 -0.25 0 ; -createNode nurbsCurve -n "legFront_L0_foot20Shape" -p "legFront_L0_foot"; - rename -uid "7FB7D4B7-44C1-42E8-95DF-86A21B4DD5CF"; +createNode nurbsCurve -n "legFront_L0_foot23Shape" -p "legFront_L0_foot"; + rename -uid "695DACEE-43C0-2CBD-83CE-6E8AB698514C"; setAttr ".ihi" 0; setAttr -k off ".v"; setAttr ".ove" yes; @@ -3624,8 +3599,8 @@ createNode nurbsCurve -n "legFront_L0_foot20Shape" -p "legFront_L0_foot"; 0 0 0.25 0 0 -0.25 ; -createNode nurbsCurve -n "legFront_L0_foot21Shape" -p "legFront_L0_foot"; - rename -uid "BB03D7A5-48CC-C0FB-9573-558E26E34C41"; +createNode nurbsCurve -n "legFront_L0_foot24Shape" -p "legFront_L0_foot"; + rename -uid "388CB80D-42CF-C9DA-E8F7-8AA859F54BDF"; setAttr ".ihi" 0; setAttr -k off ".v"; setAttr ".ove" yes; @@ -3642,8 +3617,8 @@ createNode nurbsCurve -n "legFront_L0_foot21Shape" -p "legFront_L0_foot"; 0 -0.1875 0 -0.1875 0 0 ; -createNode nurbsCurve -n "legFront_L0_foot21_0crvShape" -p "legFront_L0_foot"; - rename -uid "1B0215A7-4C9A-8157-61B0-9083A112E09E"; +createNode nurbsCurve -n "legFront_L0_foot24_0crvShape" -p "legFront_L0_foot"; + rename -uid "3432E38C-44EC-671A-9F2B-AC9FDD1565EB"; setAttr ".ihi" 0; setAttr -k off ".v"; setAttr ".ove" yes; @@ -3660,8 +3635,8 @@ createNode nurbsCurve -n "legFront_L0_foot21_0crvShape" -p "legFront_L0_foot"; 0 0 -0.1875 -0.1875 0 0 ; -createNode nurbsCurve -n "legFront_L0_foot21_1crvShape" -p "legFront_L0_foot"; - rename -uid "38D7CF39-4395-8E40-B8AD-25A5A7C3C7AC"; +createNode nurbsCurve -n "legFront_L0_foot24_1crvShape" -p "legFront_L0_foot"; + rename -uid "620411CC-4295-38C4-043A-AFADE90A0A82"; setAttr ".ihi" 0; setAttr -k off ".v"; setAttr ".ove" yes; @@ -3679,10 +3654,10 @@ createNode nurbsCurve -n "legFront_L0_foot21_1crvShape" -p "legFront_L0_foot"; 0 0 -0.1875 ; createNode transform -n "legFront_L0_eff" -p "legFront_L0_foot"; - rename -uid "C76A7E89-4802-E2B4-2529-2F8C813E6191"; + rename -uid "D3D7EE7D-4A5A-D0A8-A2A0-89965D032F62"; addAttr -ci true -sn "isGearGuide" -ln "isGearGuide" -dv 1 -min 0 -max 1 -at "bool"; setAttr -k off -cb on ".v"; - setAttr ".t" -type "double3" 3.1086244689504383e-015 8.8817841970012523e-016 0.5965779785192078 ; + setAttr ".t" -type "double3" 3.9968028886505635e-015 9.1593399531575415e-016 0.59657797851920957 ; setAttr -k off -cb on ".tx"; setAttr -k off -cb on ".ty"; setAttr -k off -cb on ".tz"; @@ -3690,12 +3665,12 @@ createNode transform -n "legFront_L0_eff" -p "legFront_L0_foot"; setAttr -k off -cb on ".ry"; setAttr -k off -cb on ".rz"; setAttr -cb on ".ro"; - setAttr ".s" -type "double3" 0.99999999999999967 0.99999999999999922 0.99999999999999867 ; + setAttr ".s" -type "double3" 0.99999999999999967 0.99999999999999922 0.99999999999999878 ; setAttr -k off -cb on ".sx"; setAttr -k off -cb on ".sy"; setAttr -k off -cb on ".sz"; createNode nurbsCurve -n "legFront_L0_effShape" -p "legFront_L0_eff"; - rename -uid "E1187598-4227-AD8B-8A1E-C38DEEBE18BF"; + rename -uid "B6988F5B-4808-1CFE-316E-FFA1F76EE1BF"; setAttr ".ihi" 0; setAttr -k off ".v"; setAttr ".ove" yes; @@ -3707,8 +3682,8 @@ createNode nurbsCurve -n "legFront_L0_effShape" -p "legFront_L0_eff"; 0.25 0 0 -0.25 0 0 ; -createNode nurbsCurve -n "legFront_L0_eff19Shape" -p "legFront_L0_eff"; - rename -uid "2E05F7EB-4623-9715-73A8-2D9F20F83EEA"; +createNode nurbsCurve -n "legFront_L0_eff22Shape" -p "legFront_L0_eff"; + rename -uid "75320078-48C7-7AEA-4D8B-2691336BB3A0"; setAttr ".ihi" 0; setAttr -k off ".v"; setAttr ".ove" yes; @@ -3720,8 +3695,8 @@ createNode nurbsCurve -n "legFront_L0_eff19Shape" -p "legFront_L0_eff"; 0 0.25 0 0 -0.25 0 ; -createNode nurbsCurve -n "legFront_L0_eff20Shape" -p "legFront_L0_eff"; - rename -uid "A3AC8B02-481F-CF78-F9E9-26914C74CF71"; +createNode nurbsCurve -n "legFront_L0_eff23Shape" -p "legFront_L0_eff"; + rename -uid "0A0A8CFE-497A-A379-49B4-1789A1AA7E61"; setAttr ".ihi" 0; setAttr -k off ".v"; setAttr ".ove" yes; @@ -3733,8 +3708,8 @@ createNode nurbsCurve -n "legFront_L0_eff20Shape" -p "legFront_L0_eff"; 0 0 0.25 0 0 -0.25 ; -createNode nurbsCurve -n "legFront_L0_eff21Shape" -p "legFront_L0_eff"; - rename -uid "0361AF3D-48A6-1625-21B6-AD93AD0269B4"; +createNode nurbsCurve -n "legFront_L0_eff24Shape" -p "legFront_L0_eff"; + rename -uid "E467A6C6-4737-AA45-6782-E9B34452B735"; setAttr ".ihi" 0; setAttr -k off ".v"; setAttr ".ove" yes; @@ -3751,8 +3726,8 @@ createNode nurbsCurve -n "legFront_L0_eff21Shape" -p "legFront_L0_eff"; 0 -0.1875 0 -0.1875 0 0 ; -createNode nurbsCurve -n "legFront_L0_eff21_0crvShape" -p "legFront_L0_eff"; - rename -uid "0DF34D6D-44C5-4CD2-8B86-88A16DE5C795"; +createNode nurbsCurve -n "legFront_L0_eff24_0crvShape" -p "legFront_L0_eff"; + rename -uid "ABAF383D-467B-7422-E698-E3BEDB5A9B2F"; setAttr ".ihi" 0; setAttr -k off ".v"; setAttr ".ove" yes; @@ -3769,8 +3744,8 @@ createNode nurbsCurve -n "legFront_L0_eff21_0crvShape" -p "legFront_L0_eff"; 0 0 -0.1875 -0.1875 0 0 ; -createNode nurbsCurve -n "legFront_L0_eff21_1crvShape" -p "legFront_L0_eff"; - rename -uid "33E31DA6-4591-FB2C-39D9-878A6323974D"; +createNode nurbsCurve -n "legFront_L0_eff24_1crvShape" -p "legFront_L0_eff"; + rename -uid "B999E0AD-4533-A0E3-9417-60A037137228"; setAttr ".ihi" 0; setAttr -k off ".v"; setAttr ".ove" yes; @@ -3788,7 +3763,7 @@ createNode nurbsCurve -n "legFront_L0_eff21_1crvShape" -p "legFront_L0_eff"; 0 0 -0.1875 ; createNode transform -n "footFront_L0_root" -p "legFront_L0_foot"; - rename -uid "9D4E145A-4D24-6823-491E-12B5B98FCC8C"; + rename -uid "B159BA42-4217-6493-BE4A-F197505ED214"; addAttr -ci true -sn "isGearGuide" -ln "isGearGuide" -dv 1 -min 0 -max 1 -at "bool"; addAttr -ci true -sn "comp_type" -ln "comp_type" -dt "string"; addAttr -ci true -sn "comp_name" -ln "comp_name" -dt "string"; @@ -3797,11 +3772,11 @@ createNode transform -n "footFront_L0_root" -p "legFront_L0_foot"; addAttr -ci true -sn "connector" -ln "connector" -dt "string"; addAttr -ci true -sn "ui_host" -ln "ui_host" -dt "string"; addAttr -ci true -sn "ctlGrp" -ln "ctlGrp" -dt "string"; - addAttr -ci true -sn "useRollCtl" -ln "useRollCtl" -min 0 -max 1 -at "bool"; + addAttr -ci true -sn "useRollCtl" -ln "useRollCtl" -dv 1 -min 0 -max 1 -at "bool"; addAttr -ci true -sn "useIndex" -ln "useIndex" -min 0 -max 1 -at "bool"; - addAttr -ci true -sn "parentJointIndex" -ln "parentJointIndex" -at "long"; + addAttr -ci true -sn "parentJointIndex" -ln "parentJointIndex" -dv -1 -at "long"; setAttr -k off -cb on ".v"; - setAttr ".t" -type "double3" 2.6645352591003757e-015 7.4940054162198066e-016 -3.5527136788005009e-015 ; + setAttr ".t" -type "double3" 3.5527136788005009e-015 7.7715611723760958e-016 -1.7763568394002505e-015 ; setAttr -k off -cb on ".tx"; setAttr -k off -cb on ".ty"; setAttr -k off -cb on ".tz"; @@ -3809,7 +3784,7 @@ createNode transform -n "footFront_L0_root" -p "legFront_L0_foot"; setAttr -k off -cb on ".ry"; setAttr -k off -cb on ".rz"; setAttr -cb on ".ro"; - setAttr ".s" -type "double3" 0.31499517602514093 0.31499517602514088 0.31499517602514071 ; + setAttr ".s" -type "double3" 0.31499517602514093 0.31499517602514093 0.31499517602514082 ; setAttr -k off -cb on ".sx"; setAttr -k off -cb on ".sy"; setAttr -k off -cb on ".sz"; @@ -3819,10 +3794,8 @@ createNode transform -n "footFront_L0_root" -p "legFront_L0_foot"; setAttr ".connector" -type "string" "leg_3jnt_01"; setAttr ".ui_host" -type "string" "frontLegUI_L0_root"; setAttr ".ctlGrp" -type "string" ""; - setAttr ".useRollCtl" yes; - setAttr ".parentJointIndex" -1; createNode nurbsCurve -n "footFront_L0_rootShape" -p "footFront_L0_root"; - rename -uid "8F269CA7-42E9-41D4-9B72-C98E963F3A92"; + rename -uid "BDA25D8F-49A3-1071-052B-71A487F96241"; setAttr ".ihi" 0; setAttr -k off ".v"; setAttr ".ove" yes; @@ -3834,8 +3807,8 @@ createNode nurbsCurve -n "footFront_L0_rootShape" -p "footFront_L0_root"; 0.25 0 0 -0.25 0 0 ; -createNode nurbsCurve -n "footFront_L0_root19Shape" -p "footFront_L0_root"; - rename -uid "1637B650-44F9-7B51-745E-919BFCEAFB10"; +createNode nurbsCurve -n "footFront_L0_root22Shape" -p "footFront_L0_root"; + rename -uid "5816E7DD-4A63-E471-9AA7-9E9633748A1F"; setAttr ".ihi" 0; setAttr -k off ".v"; setAttr ".ove" yes; @@ -3847,8 +3820,8 @@ createNode nurbsCurve -n "footFront_L0_root19Shape" -p "footFront_L0_root"; 0 0.25 0 0 -0.25 0 ; -createNode nurbsCurve -n "footFront_L0_root20Shape" -p "footFront_L0_root"; - rename -uid "A2D560FE-4006-ACDC-97CF-E49BDFF2C789"; +createNode nurbsCurve -n "footFront_L0_root23Shape" -p "footFront_L0_root"; + rename -uid "5A25ED8E-4AA3-C3D6-656E-1395C0E86149"; setAttr ".ihi" 0; setAttr -k off ".v"; setAttr ".ove" yes; @@ -3860,8 +3833,8 @@ createNode nurbsCurve -n "footFront_L0_root20Shape" -p "footFront_L0_root"; 0 0 0.25 0 0 -0.25 ; -createNode nurbsCurve -n "footFront_L0_root21Shape" -p "footFront_L0_root"; - rename -uid "B18AF3C8-440B-F5F8-E51B-B79E2C51D78E"; +createNode nurbsCurve -n "footFront_L0_root24Shape" -p "footFront_L0_root"; + rename -uid "6C2D0442-4A1F-C516-65E7-928A7C61E794"; setAttr ".ihi" 0; setAttr -k off ".v"; setAttr ".ove" yes; @@ -3888,10 +3861,10 @@ createNode nurbsCurve -n "footFront_L0_root21Shape" -p "footFront_L0_root"; -0.125 -0.125 -0.125 ; createNode transform -n "footFront_L0_0_loc" -p "footFront_L0_root"; - rename -uid "9210DD27-45EE-98A3-A326-40887903E7EE"; + rename -uid "CFD79D57-4D6E-0232-D8F3-3AB96E83A202"; addAttr -ci true -sn "isGearGuide" -ln "isGearGuide" -dv 1 -min 0 -max 1 -at "bool"; setAttr -k off -cb on ".v"; - setAttr ".t" -type "double3" 5.3290705182007514e-015 8.8817841970012523e-016 0.75996190873517477 ; + setAttr ".t" -type "double3" 5.3290705182007514e-015 1.1102230246251565e-015 0.75996190873517833 ; setAttr -k off -cb on ".tx"; setAttr -k off -cb on ".ty"; setAttr -k off -cb on ".tz"; @@ -3899,12 +3872,12 @@ createNode transform -n "footFront_L0_0_loc" -p "footFront_L0_root"; setAttr -k off -cb on ".ry"; setAttr -k off -cb on ".rz"; setAttr -cb on ".ro"; - setAttr ".s" -type "double3" 1 1.0000000000000004 1.0000000000000007 ; + setAttr ".s" -type "double3" 1 1.0000000000000004 1.0000000000000004 ; setAttr -k off -cb on ".sx"; setAttr -k off -cb on ".sy"; setAttr -k off -cb on ".sz"; createNode nurbsCurve -n "footFront_L0_0_locShape" -p "footFront_L0_0_loc"; - rename -uid "456B646B-4AFF-D9C7-EC67-AEB63CE899BA"; + rename -uid "1440C918-4929-209F-AB69-B4B413B66730"; setAttr ".ihi" 0; setAttr -k off ".v"; setAttr ".ove" yes; @@ -3916,8 +3889,8 @@ createNode nurbsCurve -n "footFront_L0_0_locShape" -p "footFront_L0_0_loc"; 0.25 0 0 -0.25 0 0 ; -createNode nurbsCurve -n "footFront_L0_0_loc19Shape" -p "footFront_L0_0_loc"; - rename -uid "A04CFEEF-46F3-EEB9-67E3-AFAD9D362F23"; +createNode nurbsCurve -n "footFront_L0_0_loc22Shape" -p "footFront_L0_0_loc"; + rename -uid "491B739E-405B-8E60-EC51-B1B69EE93823"; setAttr ".ihi" 0; setAttr -k off ".v"; setAttr ".ove" yes; @@ -3929,8 +3902,8 @@ createNode nurbsCurve -n "footFront_L0_0_loc19Shape" -p "footFront_L0_0_loc"; 0 0.25 0 0 -0.25 0 ; -createNode nurbsCurve -n "footFront_L0_0_loc20Shape" -p "footFront_L0_0_loc"; - rename -uid "381B43D7-417B-D683-52B6-3F87CF510C92"; +createNode nurbsCurve -n "footFront_L0_0_loc23Shape" -p "footFront_L0_0_loc"; + rename -uid "4FB21F22-49A6-B06F-4AEA-FFB21DA8FA58"; setAttr ".ihi" 0; setAttr -k off ".v"; setAttr ".ove" yes; @@ -3942,8 +3915,8 @@ createNode nurbsCurve -n "footFront_L0_0_loc20Shape" -p "footFront_L0_0_loc"; 0 0 0.25 0 0 -0.25 ; -createNode nurbsCurve -n "footFront_L0_0_loc21Shape" -p "footFront_L0_0_loc"; - rename -uid "AFFCF9E0-4F26-D3D1-E712-9984DACD6C27"; +createNode nurbsCurve -n "footFront_L0_0_loc24Shape" -p "footFront_L0_0_loc"; + rename -uid "828BC471-4DDD-A9B4-1D4B-6BB4B91AD8C3"; setAttr ".ihi" 0; setAttr -k off ".v"; setAttr ".ove" yes; @@ -3960,8 +3933,8 @@ createNode nurbsCurve -n "footFront_L0_0_loc21Shape" -p "footFront_L0_0_loc"; 0 -0.1875 0 -0.1875 0 0 ; -createNode nurbsCurve -n "footFront_L0_0_loc21_0crvShape" -p "footFront_L0_0_loc"; - rename -uid "B22C9AA4-4A1C-574F-DF9E-FDAFEA902F69"; +createNode nurbsCurve -n "footFront_L0_0_loc24_0crvShape" -p "footFront_L0_0_loc"; + rename -uid "5FA2F6A0-479C-07B1-A434-758AF4B41C8B"; setAttr ".ihi" 0; setAttr -k off ".v"; setAttr ".ove" yes; @@ -3978,8 +3951,8 @@ createNode nurbsCurve -n "footFront_L0_0_loc21_0crvShape" -p "footFront_L0_0_loc 0 0 -0.1875 -0.1875 0 0 ; -createNode nurbsCurve -n "footFront_L0_0_loc21_1crvShape" -p "footFront_L0_0_loc"; - rename -uid "14D66390-4F70-36C0-A0BE-17A9C04828C5"; +createNode nurbsCurve -n "footFront_L0_0_loc24_1crvShape" -p "footFront_L0_0_loc"; + rename -uid "9C9E3B1A-470A-EC65-447E-95B13F8B21BE"; setAttr ".ihi" 0; setAttr -k off ".v"; setAttr ".ove" yes; @@ -3997,10 +3970,10 @@ createNode nurbsCurve -n "footFront_L0_0_loc21_1crvShape" -p "footFront_L0_0_loc 0 0 -0.1875 ; createNode transform -n "footFront_L0_1_loc" -p "footFront_L0_0_loc"; - rename -uid "BA0E83FB-46FF-1CED-7399-7591D2DF8DD1"; + rename -uid "033F73D3-4D37-1404-9A51-8880DCA9F286"; addAttr -ci true -sn "isGearGuide" -ln "isGearGuide" -dv 1 -min 0 -max 1 -at "bool"; setAttr -k off -cb on ".v"; - setAttr ".t" -type "double3" -2.6645352591003757e-015 -0.31771180755405098 0.73937999249395148 ; + setAttr ".t" -type "double3" -3.5527136788005009e-015 -0.31771180755405121 0.73937999249394792 ; setAttr -k off -cb on ".tx"; setAttr -k off -cb on ".ty"; setAttr -k off -cb on ".tz"; @@ -4008,12 +3981,12 @@ createNode transform -n "footFront_L0_1_loc" -p "footFront_L0_0_loc"; setAttr -k off -cb on ".ry"; setAttr -k off -cb on ".rz"; setAttr -cb on ".ro"; - setAttr ".s" -type "double3" 1 1.0000000000000002 1.0000000000000002 ; + setAttr ".s" -type "double3" 0.99999999999999989 1 1 ; setAttr -k off -cb on ".sx"; setAttr -k off -cb on ".sy"; setAttr -k off -cb on ".sz"; createNode nurbsCurve -n "footFront_L0_1_locShape" -p "footFront_L0_1_loc"; - rename -uid "17A0EFE5-47CE-E5C5-C2C0-BAAB0F655A49"; + rename -uid "11B7CED5-466E-9BEC-E1C5-38817BA47330"; setAttr ".ihi" 0; setAttr -k off ".v"; setAttr ".ove" yes; @@ -4025,8 +3998,8 @@ createNode nurbsCurve -n "footFront_L0_1_locShape" -p "footFront_L0_1_loc"; 0.25 0 0 -0.25 0 0 ; -createNode nurbsCurve -n "footFront_L0_1_loc19Shape" -p "footFront_L0_1_loc"; - rename -uid "EEB4A478-4F19-3123-9F86-DD9D2FF447D2"; +createNode nurbsCurve -n "footFront_L0_1_loc22Shape" -p "footFront_L0_1_loc"; + rename -uid "76041E72-454A-226C-53AC-A1B28C697ACE"; setAttr ".ihi" 0; setAttr -k off ".v"; setAttr ".ove" yes; @@ -4038,8 +4011,8 @@ createNode nurbsCurve -n "footFront_L0_1_loc19Shape" -p "footFront_L0_1_loc"; 0 0.25 0 0 -0.25 0 ; -createNode nurbsCurve -n "footFront_L0_1_loc20Shape" -p "footFront_L0_1_loc"; - rename -uid "352DA60F-420E-65D4-F2B3-8EB38C7BE9E1"; +createNode nurbsCurve -n "footFront_L0_1_loc23Shape" -p "footFront_L0_1_loc"; + rename -uid "4ACA6E18-45F0-20F9-3486-BEA8F747A020"; setAttr ".ihi" 0; setAttr -k off ".v"; setAttr ".ove" yes; @@ -4051,8 +4024,8 @@ createNode nurbsCurve -n "footFront_L0_1_loc20Shape" -p "footFront_L0_1_loc"; 0 0 0.25 0 0 -0.25 ; -createNode nurbsCurve -n "footFront_L0_1_loc21Shape" -p "footFront_L0_1_loc"; - rename -uid "1C1A984E-4BCB-FA47-88DC-81B03452DA43"; +createNode nurbsCurve -n "footFront_L0_1_loc24Shape" -p "footFront_L0_1_loc"; + rename -uid "69137D6E-48B8-3124-141D-EFB7194A884C"; setAttr ".ihi" 0; setAttr -k off ".v"; setAttr ".ove" yes; @@ -4069,8 +4042,8 @@ createNode nurbsCurve -n "footFront_L0_1_loc21Shape" -p "footFront_L0_1_loc"; 0 -0.1875 0 -0.1875 0 0 ; -createNode nurbsCurve -n "footFront_L0_1_loc21_0crvShape" -p "footFront_L0_1_loc"; - rename -uid "FB4B28D7-41E1-90A4-21D4-86AA249931E0"; +createNode nurbsCurve -n "footFront_L0_1_loc24_0crvShape" -p "footFront_L0_1_loc"; + rename -uid "6B31A5BE-4929-2CCC-A31E-5A8BE944710E"; setAttr ".ihi" 0; setAttr -k off ".v"; setAttr ".ove" yes; @@ -4087,8 +4060,8 @@ createNode nurbsCurve -n "footFront_L0_1_loc21_0crvShape" -p "footFront_L0_1_loc 0 0 -0.1875 -0.1875 0 0 ; -createNode nurbsCurve -n "footFront_L0_1_loc21_1crvShape" -p "footFront_L0_1_loc"; - rename -uid "4404B694-464B-49C5-2614-3CB7EBD4838D"; +createNode nurbsCurve -n "footFront_L0_1_loc24_1crvShape" -p "footFront_L0_1_loc"; + rename -uid "D7D4415B-4231-D957-34EB-8BB1465D2137"; setAttr ".ihi" 0; setAttr -k off ".v"; setAttr ".ove" yes; @@ -4106,18 +4079,18 @@ createNode nurbsCurve -n "footFront_L0_1_loc21_1crvShape" -p "footFront_L0_1_loc 0 0 -0.1875 ; createNode transform -n "footFront_L0_crv" -p "footFront_L0_root"; - rename -uid "EF5F4824-443C-1D38-E405-328821181FB6"; + rename -uid "DBB9D436-4E3C-648D-848F-2BBB6FD9A673"; setAttr ".ovdt" 1; setAttr ".ove" yes; - setAttr ".t" -type "double3" -7.3687973355373595 -0.60300743522685729 -16.239037496288901 ; - setAttr ".s" -type "double3" 7.9431701648148092 7.9431701648148092 7.943170164814811 ; + setAttr ".t" -type "double3" -7.3687973355373586 -0.60300743522685718 -16.239037496288894 ; + setAttr ".s" -type "double3" 7.9431701648148074 7.9431701648148074 7.9431701648148074 ; createNode nurbsCurve -n "footFront_L0_crvShape" -p "footFront_L0_crv"; - rename -uid "358B7DA4-4533-4ECD-221D-90999BEDBFE2"; + rename -uid "00A7061D-4244-7491-4374-0584FE37C2AB"; setAttr -k off ".v"; setAttr -s 4 ".iog[0].og"; setAttr ".tw" yes; createNode nurbsCurve -n "footFront_L0_crvShapeOrig" -p "footFront_L0_crv"; - rename -uid "2D3AC4B0-4306-DFD1-25DF-C19D4B6AE50A"; + rename -uid "7C12557E-466E-505B-7732-5CA224ED7A56"; setAttr -k off ".v"; setAttr ".io" yes; setAttr ".cc" -type "nurbsCurve" @@ -4129,10 +4102,10 @@ createNode nurbsCurve -n "footFront_L0_crvShapeOrig" -p "footFront_L0_crv"; 0 0 0 ; createNode transform -n "footFront_L0_heel" -p "footFront_L0_root"; - rename -uid "AE4CE432-4983-53B9-B62E-25AA434724C1"; + rename -uid "B37C978C-4D83-2A1F-FF34-07B5F833CEAD"; addAttr -ci true -sn "isGearGuide" -ln "isGearGuide" -dv 1 -min 0 -max 1 -at "bool"; setAttr -k off -cb on ".v"; - setAttr ".t" -type "double3" 1.0658141036401503e-014 -0.3177118075540506 -0.067899908672082177 ; + setAttr ".t" -type "double3" 1.1546319456101628e-014 -0.31771180755405048 -0.067899908672078624 ; setAttr -k off -cb on ".tx"; setAttr -k off -cb on ".ty"; setAttr -k off -cb on ".tz"; @@ -4140,12 +4113,12 @@ createNode transform -n "footFront_L0_heel" -p "footFront_L0_root"; setAttr -k off -cb on ".ry"; setAttr -k off -cb on ".rz"; setAttr -cb on ".ro"; - setAttr ".s" -type "double3" 1 1.0000000000000004 1.0000000000000007 ; + setAttr ".s" -type "double3" 1 1.0000000000000004 1.0000000000000004 ; setAttr -k off -cb on ".sx"; setAttr -k off -cb on ".sy"; setAttr -k off -cb on ".sz"; createNode nurbsCurve -n "footFront_L0_heelShape" -p "footFront_L0_heel"; - rename -uid "D8567762-44F3-5D45-09AF-47A8EB3FD6E1"; + rename -uid "65270125-452A-9DFB-A737-D2A7E394890A"; setAttr ".ihi" 0; setAttr -k off ".v"; setAttr ".ove" yes; @@ -4157,8 +4130,8 @@ createNode nurbsCurve -n "footFront_L0_heelShape" -p "footFront_L0_heel"; 0.25 0 0 -0.25 0 0 ; -createNode nurbsCurve -n "footFront_L0_heel19Shape" -p "footFront_L0_heel"; - rename -uid "3BFD7560-4814-F0A2-DA25-AD95FCA520C2"; +createNode nurbsCurve -n "footFront_L0_heel22Shape" -p "footFront_L0_heel"; + rename -uid "4E069AA6-42C7-5559-E191-DF9AAF8F740E"; setAttr ".ihi" 0; setAttr -k off ".v"; setAttr ".ove" yes; @@ -4170,8 +4143,8 @@ createNode nurbsCurve -n "footFront_L0_heel19Shape" -p "footFront_L0_heel"; 0 0.25 0 0 -0.25 0 ; -createNode nurbsCurve -n "footFront_L0_heel20Shape" -p "footFront_L0_heel"; - rename -uid "C13B7266-4F08-C786-14D6-45AF8619FA9E"; +createNode nurbsCurve -n "footFront_L0_heel23Shape" -p "footFront_L0_heel"; + rename -uid "1FC102F7-46C0-CAA9-D877-A99EDF27E1EC"; setAttr ".ihi" 0; setAttr -k off ".v"; setAttr ".ove" yes; @@ -4183,8 +4156,8 @@ createNode nurbsCurve -n "footFront_L0_heel20Shape" -p "footFront_L0_heel"; 0 0 0.25 0 0 -0.25 ; -createNode nurbsCurve -n "footFront_L0_heel21Shape" -p "footFront_L0_heel"; - rename -uid "D02C79BD-413C-BF61-22C0-F7897F49BE65"; +createNode nurbsCurve -n "footFront_L0_heel24Shape" -p "footFront_L0_heel"; + rename -uid "3F8DB8A1-41B0-3578-065C-54B17FD88213"; setAttr ".ihi" 0; setAttr -k off ".v"; setAttr ".ove" yes; @@ -4201,8 +4174,8 @@ createNode nurbsCurve -n "footFront_L0_heel21Shape" -p "footFront_L0_heel"; 0 -0.1875 0 -0.1875 0 0 ; -createNode nurbsCurve -n "footFront_L0_heel21_0crvShape" -p "footFront_L0_heel"; - rename -uid "36E6E4CB-4A09-EB58-DD65-0D9FA48AFAB6"; +createNode nurbsCurve -n "footFront_L0_heel24_0crvShape" -p "footFront_L0_heel"; + rename -uid "1CBAB902-49EA-C8B6-10BD-32A7E8EB85D8"; setAttr ".ihi" 0; setAttr -k off ".v"; setAttr ".ove" yes; @@ -4219,8 +4192,8 @@ createNode nurbsCurve -n "footFront_L0_heel21_0crvShape" -p "footFront_L0_heel"; 0 0 -0.1875 -0.1875 0 0 ; -createNode nurbsCurve -n "footFront_L0_heel21_1crvShape" -p "footFront_L0_heel"; - rename -uid "77CFBEFC-4D3B-B0F4-C732-FB93B15C356F"; +createNode nurbsCurve -n "footFront_L0_heel24_1crvShape" -p "footFront_L0_heel"; + rename -uid "07A904A8-40D8-B0F1-6430-72B142BE6706"; setAttr ".ihi" 0; setAttr -k off ".v"; setAttr ".ove" yes; @@ -4238,10 +4211,10 @@ createNode nurbsCurve -n "footFront_L0_heel21_1crvShape" -p "footFront_L0_heel"; 0 0 -0.1875 ; createNode transform -n "footFront_L0_outpivot" -p "footFront_L0_root"; - rename -uid "84A7312E-4797-0AEA-544D-E7BBDD17061D"; + rename -uid "408C28F4-433E-A324-3C97-2FBC0F4F3312"; addAttr -ci true -sn "isGearGuide" -ln "isGearGuide" -dv 1 -min 0 -max 1 -at "bool"; setAttr -k off -cb on ".v"; - setAttr ".t" -type "double3" 1.1000376131120619 -0.31771180755404888 0.69157185350466577 ; + setAttr ".t" -type "double3" 1.1000376131120611 -0.31771180755404871 0.69157185350466932 ; setAttr -k off -cb on ".tx"; setAttr -k off -cb on ".ty"; setAttr -k off -cb on ".tz"; @@ -4249,12 +4222,12 @@ createNode transform -n "footFront_L0_outpivot" -p "footFront_L0_root"; setAttr -k off -cb on ".ry"; setAttr -k off -cb on ".rz"; setAttr -cb on ".ro"; - setAttr ".s" -type "double3" 1 1.0000000000000004 1.0000000000000007 ; + setAttr ".s" -type "double3" 1 1.0000000000000004 1.0000000000000004 ; setAttr -k off -cb on ".sx"; setAttr -k off -cb on ".sy"; setAttr -k off -cb on ".sz"; createNode nurbsCurve -n "footFront_L0_outpivotShape" -p "footFront_L0_outpivot"; - rename -uid "A60062FF-4E30-D15E-9506-D5B2E7E7D1C5"; + rename -uid "31C3FE73-4399-00DF-53C7-B5BA62076C42"; setAttr ".ihi" 0; setAttr -k off ".v"; setAttr ".ove" yes; @@ -4266,8 +4239,8 @@ createNode nurbsCurve -n "footFront_L0_outpivotShape" -p "footFront_L0_outpivot" 0.25 0 0 -0.25 0 0 ; -createNode nurbsCurve -n "footFront_L0_outpivot19Shape" -p "footFront_L0_outpivot"; - rename -uid "DF5B1317-4EED-2BBD-6685-598F08519E66"; +createNode nurbsCurve -n "footFront_L0_outpivot22Shape" -p "footFront_L0_outpivot"; + rename -uid "32E7427F-40BC-843A-F660-A7A0BA53CD1D"; setAttr ".ihi" 0; setAttr -k off ".v"; setAttr ".ove" yes; @@ -4279,8 +4252,8 @@ createNode nurbsCurve -n "footFront_L0_outpivot19Shape" -p "footFront_L0_outpivo 0 0.25 0 0 -0.25 0 ; -createNode nurbsCurve -n "footFront_L0_outpivot20Shape" -p "footFront_L0_outpivot"; - rename -uid "37F5D3F4-46B4-8E34-5EAE-97ABD57A50C1"; +createNode nurbsCurve -n "footFront_L0_outpivot23Shape" -p "footFront_L0_outpivot"; + rename -uid "C57F0FE3-42AB-506C-745C-C6B20BB3C454"; setAttr ".ihi" 0; setAttr -k off ".v"; setAttr ".ove" yes; @@ -4292,8 +4265,8 @@ createNode nurbsCurve -n "footFront_L0_outpivot20Shape" -p "footFront_L0_outpivo 0 0 0.25 0 0 -0.25 ; -createNode nurbsCurve -n "footFront_L0_outpivot21Shape" -p "footFront_L0_outpivot"; - rename -uid "B2AEC9E7-4BC9-7B09-A7BF-4087ADA6C83A"; +createNode nurbsCurve -n "footFront_L0_outpivot24Shape" -p "footFront_L0_outpivot"; + rename -uid "8440270B-46DE-773F-09AC-158A25ABB6F0"; setAttr ".ihi" 0; setAttr -k off ".v"; setAttr ".ove" yes; @@ -4310,8 +4283,8 @@ createNode nurbsCurve -n "footFront_L0_outpivot21Shape" -p "footFront_L0_outpivo 0 -0.1875 0 -0.1875 0 0 ; -createNode nurbsCurve -n "footFront_L0_outpivot21_0crvShape" -p "footFront_L0_outpivot"; - rename -uid "06E247BA-47AC-6387-F8B4-2C9FCE0A01B9"; +createNode nurbsCurve -n "footFront_L0_outpivot24_0crvShape" -p "footFront_L0_outpivot"; + rename -uid "6E367C33-46BA-8E46-49DB-24A7B4714363"; setAttr ".ihi" 0; setAttr -k off ".v"; setAttr ".ove" yes; @@ -4328,8 +4301,8 @@ createNode nurbsCurve -n "footFront_L0_outpivot21_0crvShape" -p "footFront_L0_ou 0 0 -0.1875 -0.1875 0 0 ; -createNode nurbsCurve -n "footFront_L0_outpivot21_1crvShape" -p "footFront_L0_outpivot"; - rename -uid "93489D82-4DB0-2237-0572-63A222E20B03"; +createNode nurbsCurve -n "footFront_L0_outpivot24_1crvShape" -p "footFront_L0_outpivot"; + rename -uid "419F18A8-41C9-1989-6C7D-E3A8A66AEA33"; setAttr ".ihi" 0; setAttr -k off ".v"; setAttr ".ove" yes; @@ -4347,10 +4320,10 @@ createNode nurbsCurve -n "footFront_L0_outpivot21_1crvShape" -p "footFront_L0_ou 0 0 -0.1875 ; createNode transform -n "footFront_L0_inpivot" -p "footFront_L0_root"; - rename -uid "F87FBCD9-4D71-D9E5-16A6-75B7B2587D2A"; + rename -uid "8F029F05-41CC-54E0-5A07-59902DE78502"; addAttr -ci true -sn "isGearGuide" -ln "isGearGuide" -dv 1 -min 0 -max 1 -at "bool"; setAttr -k off -cb on ".v"; - setAttr ".t" -type "double3" -1.0162439288722931 -0.31771180755405115 0.86340011285664531 ; + setAttr ".t" -type "double3" -1.0162439288722922 -0.31771180755405098 0.86340011285664886 ; setAttr -k off -cb on ".tx"; setAttr -k off -cb on ".ty"; setAttr -k off -cb on ".tz"; @@ -4358,12 +4331,12 @@ createNode transform -n "footFront_L0_inpivot" -p "footFront_L0_root"; setAttr -k off -cb on ".ry"; setAttr -k off -cb on ".rz"; setAttr -cb on ".ro"; - setAttr ".s" -type "double3" 1 1.0000000000000004 1.0000000000000007 ; + setAttr ".s" -type "double3" 1 1.0000000000000004 1.0000000000000004 ; setAttr -k off -cb on ".sx"; setAttr -k off -cb on ".sy"; setAttr -k off -cb on ".sz"; createNode nurbsCurve -n "footFront_L0_inpivotShape" -p "footFront_L0_inpivot"; - rename -uid "7720973B-4EAD-8614-7365-AE98DFCD0214"; + rename -uid "FF5B4748-47DE-1439-2EBC-8F830168BD47"; setAttr ".ihi" 0; setAttr -k off ".v"; setAttr ".ove" yes; @@ -4375,8 +4348,8 @@ createNode nurbsCurve -n "footFront_L0_inpivotShape" -p "footFront_L0_inpivot"; 0.25 0 0 -0.25 0 0 ; -createNode nurbsCurve -n "footFront_L0_inpivot19Shape" -p "footFront_L0_inpivot"; - rename -uid "CDA6567C-4116-7993-0277-CAAF46E3102C"; +createNode nurbsCurve -n "footFront_L0_inpivot22Shape" -p "footFront_L0_inpivot"; + rename -uid "B2CF3B62-48A3-EDAF-BAD5-11973EB55CAD"; setAttr ".ihi" 0; setAttr -k off ".v"; setAttr ".ove" yes; @@ -4388,8 +4361,8 @@ createNode nurbsCurve -n "footFront_L0_inpivot19Shape" -p "footFront_L0_inpivot" 0 0.25 0 0 -0.25 0 ; -createNode nurbsCurve -n "footFront_L0_inpivot20Shape" -p "footFront_L0_inpivot"; - rename -uid "022E1DEB-45E0-0F63-983C-EFA1A6B6F2BA"; +createNode nurbsCurve -n "footFront_L0_inpivot23Shape" -p "footFront_L0_inpivot"; + rename -uid "0303A1FD-42A9-AA8D-1283-19B32C3FC95B"; setAttr ".ihi" 0; setAttr -k off ".v"; setAttr ".ove" yes; @@ -4401,8 +4374,8 @@ createNode nurbsCurve -n "footFront_L0_inpivot20Shape" -p "footFront_L0_inpivot" 0 0 0.25 0 0 -0.25 ; -createNode nurbsCurve -n "footFront_L0_inpivot21Shape" -p "footFront_L0_inpivot"; - rename -uid "9DA96D1F-4DAC-952F-3843-87A6AC30B1D9"; +createNode nurbsCurve -n "footFront_L0_inpivot24Shape" -p "footFront_L0_inpivot"; + rename -uid "6DDB9C4E-4257-6E01-40E4-3490BB6917B9"; setAttr ".ihi" 0; setAttr -k off ".v"; setAttr ".ove" yes; @@ -4419,8 +4392,8 @@ createNode nurbsCurve -n "footFront_L0_inpivot21Shape" -p "footFront_L0_inpivot" 0 -0.1875 0 -0.1875 0 0 ; -createNode nurbsCurve -n "footFront_L0_inpivot21_0crvShape" -p "footFront_L0_inpivot"; - rename -uid "AFD54613-4EF9-77CB-CB31-609706F1E399"; +createNode nurbsCurve -n "footFront_L0_inpivot24_0crvShape" -p "footFront_L0_inpivot"; + rename -uid "A388EE25-48F3-9131-20E7-66B10755AD7D"; setAttr ".ihi" 0; setAttr -k off ".v"; setAttr ".ove" yes; @@ -4437,8 +4410,8 @@ createNode nurbsCurve -n "footFront_L0_inpivot21_0crvShape" -p "footFront_L0_inp 0 0 -0.1875 -0.1875 0 0 ; -createNode nurbsCurve -n "footFront_L0_inpivot21_1crvShape" -p "footFront_L0_inpivot"; - rename -uid "CC2E6B9C-4D43-AD74-B24A-618669B60AE7"; +createNode nurbsCurve -n "footFront_L0_inpivot24_1crvShape" -p "footFront_L0_inpivot"; + rename -uid "F299B667-4597-094A-53F0-C7854727322A"; setAttr ".ihi" 0; setAttr -k off ".v"; setAttr ".ove" yes; @@ -4456,18 +4429,18 @@ createNode nurbsCurve -n "footFront_L0_inpivot21_1crvShape" -p "footFront_L0_inp 0 0 -0.1875 ; createNode transform -n "footFront_L0_1" -p "footFront_L0_root"; - rename -uid "1E3B08E4-4E0B-43FD-6BA6-13B154AE833F"; + rename -uid "2EC11645-478B-16B6-87A9-099C1DB3D91E"; setAttr ".ovdt" 1; setAttr ".ove" yes; - setAttr ".t" -type "double3" -7.3687973355373595 -0.60300743522685729 -16.239037496288901 ; - setAttr ".s" -type "double3" 7.9431701648148092 7.9431701648148092 7.943170164814811 ; + setAttr ".t" -type "double3" -7.3687973355373586 -0.60300743522685718 -16.239037496288894 ; + setAttr ".s" -type "double3" 7.9431701648148074 7.9431701648148074 7.9431701648148074 ; createNode nurbsCurve -n "footFront_L0_Shape1" -p "footFront_L0_1"; - rename -uid "F5DFCF5C-4059-9A80-57AA-089A76E5452A"; + rename -uid "33623A7A-4BAC-096F-C552-1C9DA05B626E"; setAttr -k off ".v"; setAttr -s 4 ".iog[0].og"; setAttr ".tw" yes; -createNode nurbsCurve -n "footFront_L0_Shape1Orig1" -p "footFront_L0_1"; - rename -uid "1E9197DE-429B-6EE4-9B0D-D8967957D749"; +createNode nurbsCurve -n "footFront_L0_Shape1Orig" -p "footFront_L0_1"; + rename -uid "488F26C1-4360-5BC3-2BEC-058DE8D1C320"; setAttr -k off ".v"; setAttr ".io" yes; setAttr ".cc" -type "nurbsCurve" @@ -4481,7 +4454,7 @@ createNode nurbsCurve -n "footFront_L0_Shape1Orig1" -p "footFront_L0_1"; 0 0 0 ; createNode transform -n "frontLegUI_L0_root" -p "footFront_L0_root"; - rename -uid "BC012ED8-42C7-71AD-59B3-93BD03A2FF01"; + rename -uid "20BD61D7-46B4-41B4-DA2E-55AFF317097C"; addAttr -ci true -sn "isGearGuide" -ln "isGearGuide" -dv 1 -min 0 -max 1 -at "bool"; addAttr -ci true -sn "comp_type" -ln "comp_type" -dt "string"; addAttr -ci true -sn "comp_name" -ln "comp_name" -dt "string"; @@ -4493,7 +4466,7 @@ createNode transform -n "frontLegUI_L0_root" -p "footFront_L0_root"; addAttr -ci true -sn "icon" -ln "icon" -dt "string"; addAttr -ci true -sn "ikrefarray" -ln "ikrefarray" -dt "string"; addAttr -ci true -sn "joint" -ln "joint" -min 0 -max 1 -at "bool"; - addAttr -ci true -sn "uniScale" -ln "uniScale" -min 0 -max 1 -at "bool"; + addAttr -ci true -sn "uniScale" -ln "uniScale" -dv 1 -min 0 -max 1 -at "bool"; addAttr -ci true -sn "k_tx" -ln "k_tx" -min 0 -max 1 -at "bool"; addAttr -ci true -sn "k_ty" -ln "k_ty" -min 0 -max 1 -at "bool"; addAttr -ci true -sn "k_tz" -ln "k_tz" -min 0 -max 1 -at "bool"; @@ -4505,12 +4478,14 @@ createNode transform -n "frontLegUI_L0_root" -p "footFront_L0_root"; addAttr -ci true -sn "k_sy" -ln "k_sy" -min 0 -max 1 -at "bool"; addAttr -ci true -sn "k_sz" -ln "k_sz" -min 0 -max 1 -at "bool"; addAttr -ci true -sn "default_rotorder" -ln "default_rotorder" -min 0 -max 5 -at "long"; - addAttr -ci true -sn "neutralRotation" -ln "neutralRotation" -min 0 -max 1 -at "bool"; - addAttr -ci true -sn "ctlSize" -ln "ctlSize" -at "double"; + addAttr -ci true -sn "neutralRotation" -ln "neutralRotation" -dv 1 -min 0 -max 1 + -at "bool"; + addAttr -ci true -sn "mirrorBehaviour" -ln "mirrorBehaviour" -min 0 -max 1 -at "bool"; + addAttr -ci true -sn "ctlSize" -ln "ctlSize" -dv 0.5 -at "double"; addAttr -ci true -sn "useIndex" -ln "useIndex" -min 0 -max 1 -at "bool"; - addAttr -ci true -sn "parentJointIndex" -ln "parentJointIndex" -at "long"; + addAttr -ci true -sn "parentJointIndex" -ln "parentJointIndex" -dv -1 -at "long"; setAttr -k off -cb on ".v"; - setAttr ".t" -type "double3" 10.017876024668173 5.4248605945583259 2.5678955088138053 ; + setAttr ".t" -type "double3" 10.017876024668169 5.4248605945583259 2.5678955088138089 ; setAttr -k off -cb on ".tx"; setAttr -k off -cb on ".ty"; setAttr -k off -cb on ".tz"; @@ -4518,7 +4493,7 @@ createNode transform -n "frontLegUI_L0_root" -p "footFront_L0_root"; setAttr -k off -cb on ".ry"; setAttr -k off -cb on ".rz"; setAttr -cb on ".ro"; - setAttr ".s" -type "double3" 7.943170164814811 7.943170164814811 7.9431701648148163 ; + setAttr ".s" -type "double3" 7.943170164814811 7.943170164814811 7.9431701648148145 ; setAttr -k off -cb on ".sx"; setAttr -k off -cb on ".sy"; setAttr -k off -cb on ".sz"; @@ -4530,12 +4505,8 @@ createNode transform -n "frontLegUI_L0_root" -p "footFront_L0_root"; setAttr ".ctlGrp" -type "string" ""; setAttr ".icon" -type "string" "cross"; setAttr ".ikrefarray" -type "string" ""; - setAttr ".uniScale" yes; - setAttr ".neutralRotation" yes; - setAttr ".ctlSize" 0.5; - setAttr ".parentJointIndex" -1; createNode nurbsCurve -n "frontLegUI_L0_rootShape" -p "frontLegUI_L0_root"; - rename -uid "91E626F7-4935-694D-77AE-82817F786341"; + rename -uid "1882EA62-4034-DF92-C7D4-83B99F11EE5E"; setAttr ".ihi" 0; setAttr -k off ".v"; setAttr ".ove" yes; @@ -4547,8 +4518,8 @@ createNode nurbsCurve -n "frontLegUI_L0_rootShape" -p "frontLegUI_L0_root"; 0.25 0 0 -0.25 0 0 ; -createNode nurbsCurve -n "frontLegUI_L0_root19Shape" -p "frontLegUI_L0_root"; - rename -uid "7D686BD4-45DD-DAC7-F876-A190D1C9C5D4"; +createNode nurbsCurve -n "frontLegUI_L0_root22Shape" -p "frontLegUI_L0_root"; + rename -uid "793A3855-40C6-04C7-60A4-929129BFDDD0"; setAttr ".ihi" 0; setAttr -k off ".v"; setAttr ".ove" yes; @@ -4560,8 +4531,8 @@ createNode nurbsCurve -n "frontLegUI_L0_root19Shape" -p "frontLegUI_L0_root"; 0 0.25 0 0 -0.25 0 ; -createNode nurbsCurve -n "frontLegUI_L0_root20Shape" -p "frontLegUI_L0_root"; - rename -uid "BE28A04B-4C87-FA0D-6597-0986EC91BBDB"; +createNode nurbsCurve -n "frontLegUI_L0_root23Shape" -p "frontLegUI_L0_root"; + rename -uid "A6CBC522-4861-6F81-32AB-3FBEDF62A913"; setAttr ".ihi" 0; setAttr -k off ".v"; setAttr ".ove" yes; @@ -4573,8 +4544,8 @@ createNode nurbsCurve -n "frontLegUI_L0_root20Shape" -p "frontLegUI_L0_root"; 0 0 0.25 0 0 -0.25 ; -createNode nurbsCurve -n "frontLegUI_L0_root21Shape" -p "frontLegUI_L0_root"; - rename -uid "07620351-4575-A16C-3DA8-4F96F8509839"; +createNode nurbsCurve -n "frontLegUI_L0_root24Shape" -p "frontLegUI_L0_root"; + rename -uid "5E05E57E-4C77-7466-03FA-EFBA5D53F2AB"; setAttr ".ihi" 0; setAttr -k off ".v"; setAttr ".ove" yes; @@ -4601,10 +4572,10 @@ createNode nurbsCurve -n "frontLegUI_L0_root21Shape" -p "frontLegUI_L0_root"; -0.125 -0.125 -0.125 ; createNode transform -n "frontLegUI_L0_sizeRef" -p "frontLegUI_L0_root"; - rename -uid "89486ECC-4B57-2937-6515-E5914CCA7811"; + rename -uid "8D60DC3B-4B8E-46A0-5D91-ECAECA0ABCC0"; addAttr -ci true -sn "isGearGuide" -ln "isGearGuide" -dv 1 -min 0 -max 1 -at "bool"; setAttr -k off -cb on ".v"; - setAttr ".t" -type "double3" 8.8817841970012523e-016 3.3306690738754696e-016 0.99999999999999911 ; + setAttr ".t" -type "double3" 1.3322676295501878e-015 3.3306690738754696e-016 0.99999999999999867 ; setAttr -k off -cb on ".tx"; setAttr -k off -cb on ".ty"; setAttr -k off -cb on ".tz"; @@ -4617,18 +4588,18 @@ createNode transform -n "frontLegUI_L0_sizeRef" -p "frontLegUI_L0_root"; setAttr -k off -cb on ".sy"; setAttr -k off -cb on ".sz"; createNode transform -n "legFront_L0_crv1" -p "legFront_L0_root"; - rename -uid "70EA73F9-4D0D-4053-00D0-758A8E8FF1A5"; + rename -uid "01E3E57A-41FA-34F4-051B-C793F47CFBA3"; setAttr ".ovdt" 1; setAttr ".ove" yes; - setAttr ".t" -type "double3" -2.3211356138011676 -5.8086248814742651 -5.5045062328919334 ; - setAttr ".s" -type "double3" 2.5020602842634889 2.5020602842634863 2.5020602842634885 ; + setAttr ".t" -type "double3" -2.3211356138011672 -5.8086248814742643 -5.5045062328919334 ; + setAttr ".s" -type "double3" 2.5020602842634885 2.5020602842634854 2.502060284263488 ; createNode nurbsCurve -n "legFront_L0_crvShape1" -p "legFront_L0_crv1"; - rename -uid "8A05E1F7-444A-A937-CAC2-07BC39555D1E"; + rename -uid "A6C4662A-4F5D-BB9C-412B-07B4F70F06FA"; setAttr -k off ".v"; setAttr -s 4 ".iog[0].og"; setAttr ".tw" yes; -createNode nurbsCurve -n "legFront_L0_crvShape1Orig1" -p "legFront_L0_crv1"; - rename -uid "DBE61757-4E29-5E59-9A96-DD943B992074"; +createNode nurbsCurve -n "legFront_L0_crvShape1Orig" -p "legFront_L0_crv1"; + rename -uid "BA6F9E41-4667-D3F8-0C7C-7B8951A59991"; setAttr -k off ".v"; setAttr ".io" yes; setAttr ".cc" -type "nurbsCurve" @@ -4642,7 +4613,7 @@ createNode nurbsCurve -n "legFront_L0_crvShape1Orig1" -p "legFront_L0_crv1"; 0 0 0 ; createNode transform -n "shoulder_L0_blade" -p "shoulder_L0_root"; - rename -uid "7309DBD4-4628-617F-D9C8-AEAC92D917E5"; + rename -uid "ADADFF55-47DF-D9F5-2D92-BA84AE546225"; addAttr -ci true -k true -sn "bladeRollOffset" -ln "bladeRollOffset" -at "float"; setAttr -l on -k off -cb on ".v"; setAttr -k off -cb on ".tx"; @@ -4652,13 +4623,13 @@ createNode transform -n "shoulder_L0_blade" -p "shoulder_L0_root"; setAttr -k off -cb on ".ry"; setAttr -k off -cb on ".rz"; setAttr -cb on ".ro"; - setAttr ".s" -type "double3" 1.0000000000000002 0.99999999999999911 0.99999999999999922 ; + setAttr ".s" -type "double3" 1.0000000000000002 0.999999999999999 0.99999999999999911 ; setAttr -l on -k off -cb on ".sx"; setAttr -l on -k off -cb on ".sy"; setAttr -l on -k off -cb on ".sz"; setAttr -k on ".bladeRollOffset"; createNode nurbsCurve -n "shoulder_L0_bladeShape" -p "shoulder_L0_blade"; - rename -uid "6B71284B-41CA-6D45-7D51-E1A07C657215"; + rename -uid "74332985-4D5A-E967-AEEE-008BBED22C8A"; setAttr ".ihi" 0; setAttr -k off ".v"; setAttr ".ove" yes; @@ -4672,8 +4643,8 @@ createNode nurbsCurve -n "shoulder_L0_bladeShape" -p "shoulder_L0_blade"; 0 0.42205831527236448 0 0 0 0 ; -createNode aimConstraint -n "shoulder_L0_blade_aimConstraint7" -p "shoulder_L0_blade"; - rename -uid "4EBA0134-428C-1BB2-3962-0387428CF806"; +createNode aimConstraint -n "shoulder_L0_blade_aimConstraint8" -p "shoulder_L0_blade"; + rename -uid "A4F08224-4766-EA43-9ED9-3191CF5EE1ED"; addAttr -dcb 0 -ci true -sn "w0" -ln "shoulder_L0_0_locW0" -dv 1 -at "double"; setAttr -k on ".nds"; setAttr -k off ".v"; @@ -4688,10 +4659,10 @@ createNode aimConstraint -n "shoulder_L0_blade_aimConstraint7" -p "shoulder_L0_b setAttr -k off ".sz"; setAttr ".erp" yes; setAttr ".wut" 2; - setAttr ".rsrr" -type "double3" 3.359975138206766 -13.536129435773097 -14.081236533000178 ; + setAttr ".rsrr" -type "double3" 3.3599751382069831 -13.536129435773113 -14.081236533000165 ; setAttr -k on ".w0"; -createNode pointConstraint -n "shoulder_L0_blade_pointConstraint7" -p "shoulder_L0_blade"; - rename -uid "B87C2D0B-4460-E342-E8FE-9DBC44DD8754"; +createNode pointConstraint -n "shoulder_L0_blade_pointConstraint8" -p "shoulder_L0_blade"; + rename -uid "675CD841-4200-C27E-1C57-C39DD4F07A95"; addAttr -dcb 0 -ci true -k true -sn "w0" -ln "shoulder_L0_rootW0" -dv 1 -min 0 -at "double"; setAttr -k on ".nds"; @@ -4708,18 +4679,18 @@ createNode pointConstraint -n "shoulder_L0_blade_pointConstraint7" -p "shoulder_ setAttr ".erp" yes; setAttr -k on ".w0"; createNode transform -n "shoulder_L0_crv" -p "shoulder_L0_root"; - rename -uid "F9FEF86C-4525-95FC-1F4C-908FBA067161"; + rename -uid "8A0C6A40-4125-7689-77EA-2F87F5580CEB"; setAttr ".ovdt" 1; setAttr ".ove" yes; - setAttr ".t" -type "double3" -0.09516410914756232 -2.5303629060493171 -1.9933533667490368 ; + setAttr ".t" -type "double3" -0.095164109147562334 -2.5303629060493171 -1.9933533667490368 ; setAttr ".s" -type "double3" 1.0000000000000007 1 1 ; createNode nurbsCurve -n "shoulder_L0_crvShape" -p "shoulder_L0_crv"; - rename -uid "A4822224-4231-A281-2253-05B156623E52"; + rename -uid "FEBF6777-4294-8B99-C180-82B97AC073D9"; setAttr -k off ".v"; setAttr -s 4 ".iog[0].og"; setAttr ".tw" yes; createNode nurbsCurve -n "shoulder_L0_crvShapeOrig" -p "shoulder_L0_crv"; - rename -uid "F145FBA5-45D8-126E-C67C-0199A1077ED0"; + rename -uid "AC4D2D2E-40B9-925A-2A3D-ED8CB7AF1A15"; setAttr -k off ".v"; setAttr ".io" yes; setAttr ".cc" -type "nurbsCurve" @@ -4730,7 +4701,7 @@ createNode nurbsCurve -n "shoulder_L0_crvShapeOrig" -p "shoulder_L0_crv"; 0 0 0 ; createNode transform -n "shoulder_R0_root" -p "spine_C0_eff"; - rename -uid "511AA17D-4A20-B043-FE5D-278EFDEAC979"; + rename -uid "C9749823-40D9-1856-0293-CA8714AA1EA2"; addAttr -ci true -sn "isGearGuide" -ln "isGearGuide" -dv 1 -min 0 -max 1 -at "bool"; addAttr -ci true -sn "comp_type" -ln "comp_type" -dt "string"; addAttr -ci true -sn "comp_name" -ln "comp_name" -dt "string"; @@ -4740,17 +4711,17 @@ createNode transform -n "shoulder_R0_root" -p "spine_C0_eff"; addAttr -ci true -sn "ui_host" -ln "ui_host" -dt "string"; addAttr -ci true -sn "ctlGrp" -ln "ctlGrp" -dt "string"; addAttr -ci true -sn "mode" -ln "mode" -min 0 -at "long"; - addAttr -ci true -sn "blend" -ln "blend" -min 0 -max 1 -at "double"; - addAttr -ci true -sn "neutralpose" -ln "neutralpose" -min 0 -max 1 -at "bool"; + addAttr -ci true -sn "blend" -ln "blend" -dv 1 -min 0 -max 1 -at "double"; + addAttr -ci true -sn "neutralpose" -ln "neutralpose" -dv 1 -min 0 -max 1 -at "bool"; addAttr -ci true -sn "ikrefarray" -ln "ikrefarray" -dt "string"; addAttr -ci true -sn "useIndex" -ln "useIndex" -min 0 -max 1 -at "bool"; - addAttr -ci true -sn "parentJointIndex" -ln "parentJointIndex" -at "long"; + addAttr -ci true -sn "parentJointIndex" -ln "parentJointIndex" -dv -1 -at "long"; setAttr -k off -cb on ".v"; - setAttr ".t" -type "double3" -0.23232496368006927 0.19745119313991832 0.20082401790608298 ; + setAttr ".t" -type "double3" -0.23232496368006927 0.19745119313991832 0.20082401790608295 ; setAttr -k off -cb on ".tx"; setAttr -k off -cb on ".ty"; setAttr -k off -cb on ".tz"; - setAttr ".r" -type "double3" 89.999999999999986 -89.999999999999957 0 ; + setAttr ".r" -type "double3" 90 -89.999999999999972 0 ; setAttr -k off -cb on ".rx"; setAttr -k off -cb on ".ry"; setAttr -k off -cb on ".rz"; @@ -4765,12 +4736,9 @@ createNode transform -n "shoulder_R0_root" -p "spine_C0_eff"; setAttr ".connector" -type "string" "standard"; setAttr ".ui_host" -type "string" "frontLegUI_R0_root"; setAttr ".ctlGrp" -type "string" ""; - setAttr ".blend" 1; - setAttr ".neutralpose" yes; setAttr ".ikrefarray" -type "string" ""; - setAttr ".parentJointIndex" -1; createNode nurbsCurve -n "shoulder_R0_rootShape" -p "shoulder_R0_root"; - rename -uid "B1FAB1D7-44D3-57D3-F5AF-CE8B9579854C"; + rename -uid "CF462632-4283-A5AC-ED6D-BA9A6A6912F3"; setAttr ".ihi" 0; setAttr -k off ".v"; setAttr ".ove" yes; @@ -4782,8 +4750,8 @@ createNode nurbsCurve -n "shoulder_R0_rootShape" -p "shoulder_R0_root"; 0.25 0 0 -0.25 0 0 ; -createNode nurbsCurve -n "shoulder_R0_root1Shape" -p "shoulder_R0_root"; - rename -uid "8B604321-43F9-D551-8ACB-93BFD7BFF219"; +createNode nurbsCurve -n "shoulder_R0_root4Shape" -p "shoulder_R0_root"; + rename -uid "1A63C5FA-42F4-AF1E-B955-05BCA8173EB9"; setAttr ".ihi" 0; setAttr -k off ".v"; setAttr ".ove" yes; @@ -4795,8 +4763,8 @@ createNode nurbsCurve -n "shoulder_R0_root1Shape" -p "shoulder_R0_root"; 0 0.25 0 0 -0.25 0 ; -createNode nurbsCurve -n "shoulder_R0_root2Shape" -p "shoulder_R0_root"; - rename -uid "D393A3AE-42E0-3647-C624-1882006EA824"; +createNode nurbsCurve -n "shoulder_R0_root5Shape" -p "shoulder_R0_root"; + rename -uid "4E7008A8-46B7-1598-91EE-03AAA713FAB2"; setAttr ".ihi" 0; setAttr -k off ".v"; setAttr ".ove" yes; @@ -4808,8 +4776,8 @@ createNode nurbsCurve -n "shoulder_R0_root2Shape" -p "shoulder_R0_root"; 0 0 0.25 0 0 -0.25 ; -createNode nurbsCurve -n "shoulder_R0_root3Shape" -p "shoulder_R0_root"; - rename -uid "62835E66-4515-4CAF-8B16-BC94F7317D8A"; +createNode nurbsCurve -n "shoulder_R0_root6Shape" -p "shoulder_R0_root"; + rename -uid "A45304BA-42FB-741D-C524-E0BCEB34446D"; setAttr ".ihi" 0; setAttr -k off ".v"; setAttr ".ove" yes; @@ -4836,10 +4804,10 @@ createNode nurbsCurve -n "shoulder_R0_root3Shape" -p "shoulder_R0_root"; -0.125 -0.125 -0.125 ; createNode transform -n "shoulder_R0_0_loc" -p "shoulder_R0_root"; - rename -uid "CCD12C3E-42CA-E466-BE4C-99A339ECE785"; + rename -uid "0033C476-4AC1-1DF5-CEE5-43B7B2A66860"; addAttr -ci true -sn "isGearGuide" -ln "isGearGuide" -dv 1 -min 0 -max 1 -at "bool"; setAttr -k off -cb on ".v"; - setAttr ".t" -type "double3" 0.83252561455724627 -0.20882616370655027 0.2066360849488682 ; + setAttr ".t" -type "double3" 0.83252561455724627 -0.20882616370655116 0.2066360849488682 ; setAttr -k off -cb on ".tx"; setAttr -k off -cb on ".ty"; setAttr -k off -cb on ".tz"; @@ -4847,12 +4815,12 @@ createNode transform -n "shoulder_R0_0_loc" -p "shoulder_R0_root"; setAttr -k off -cb on ".ry"; setAttr -k off -cb on ".rz"; setAttr -cb on ".ro"; - setAttr ".s" -type "double3" 1.0000000000000007 0.99999999999999989 1 ; + setAttr ".s" -type "double3" 1.0000000000000007 0.99999999999999978 1 ; setAttr -k off -cb on ".sx"; setAttr -k off -cb on ".sy"; setAttr -k off -cb on ".sz"; createNode nurbsCurve -n "shoulder_R0_0_locShape" -p "shoulder_R0_0_loc"; - rename -uid "32C6CF4E-4FD1-67FD-5EFB-39A5116D0FE5"; + rename -uid "73617647-4603-15B1-C9AC-3393710C56B0"; setAttr ".ihi" 0; setAttr -k off ".v"; setAttr ".ove" yes; @@ -4864,8 +4832,8 @@ createNode nurbsCurve -n "shoulder_R0_0_locShape" -p "shoulder_R0_0_loc"; 0.25 0 0 -0.25 0 0 ; -createNode nurbsCurve -n "shoulder_R0_0_loc1Shape" -p "shoulder_R0_0_loc"; - rename -uid "B9AF32FB-4B3C-4D1F-0B4F-5E8ED72C7B39"; +createNode nurbsCurve -n "shoulder_R0_0_loc4Shape" -p "shoulder_R0_0_loc"; + rename -uid "F54FC6EB-4BAA-2935-B7A6-DDB44F2C5E1F"; setAttr ".ihi" 0; setAttr -k off ".v"; setAttr ".ove" yes; @@ -4877,8 +4845,8 @@ createNode nurbsCurve -n "shoulder_R0_0_loc1Shape" -p "shoulder_R0_0_loc"; 0 0.25 0 0 -0.25 0 ; -createNode nurbsCurve -n "shoulder_R0_0_loc2Shape" -p "shoulder_R0_0_loc"; - rename -uid "6A314E6E-43C3-D387-D313-E685A8EB11EC"; +createNode nurbsCurve -n "shoulder_R0_0_loc5Shape" -p "shoulder_R0_0_loc"; + rename -uid "BEA8A0A8-405E-3934-2E43-2ABAD19D3F41"; setAttr ".ihi" 0; setAttr -k off ".v"; setAttr ".ove" yes; @@ -4890,8 +4858,8 @@ createNode nurbsCurve -n "shoulder_R0_0_loc2Shape" -p "shoulder_R0_0_loc"; 0 0 0.25 0 0 -0.25 ; -createNode nurbsCurve -n "shoulder_R0_0_loc3Shape" -p "shoulder_R0_0_loc"; - rename -uid "378327BD-4B81-C220-BC94-9C990F331D14"; +createNode nurbsCurve -n "shoulder_R0_0_loc6Shape" -p "shoulder_R0_0_loc"; + rename -uid "3D5F9059-430E-C67B-9A04-65B10E4E4956"; setAttr ".ihi" 0; setAttr -k off ".v"; setAttr ".ove" yes; @@ -4908,8 +4876,8 @@ createNode nurbsCurve -n "shoulder_R0_0_loc3Shape" -p "shoulder_R0_0_loc"; 0 -0.1875 0 -0.1875 0 0 ; -createNode nurbsCurve -n "shoulder_R0_0_loc3_0crvShape" -p "shoulder_R0_0_loc"; - rename -uid "0E26F936-4766-5449-3C7D-FDAD797B3135"; +createNode nurbsCurve -n "shoulder_R0_0_loc6_0crvShape" -p "shoulder_R0_0_loc"; + rename -uid "7FBA1FCA-469A-D36A-DBF2-CC80196CB741"; setAttr ".ihi" 0; setAttr -k off ".v"; setAttr ".ove" yes; @@ -4926,8 +4894,8 @@ createNode nurbsCurve -n "shoulder_R0_0_loc3_0crvShape" -p "shoulder_R0_0_loc"; 0 0 -0.1875 -0.1875 0 0 ; -createNode nurbsCurve -n "shoulder_R0_0_loc3_1crvShape" -p "shoulder_R0_0_loc"; - rename -uid "55E36521-4803-7878-DDE6-CCBE04222BE4"; +createNode nurbsCurve -n "shoulder_R0_0_loc6_1crvShape" -p "shoulder_R0_0_loc"; + rename -uid "705D864D-4D67-F3AF-6210-879B940C7B93"; setAttr ".ihi" 0; setAttr -k off ".v"; setAttr ".ove" yes; @@ -4945,7 +4913,7 @@ createNode nurbsCurve -n "shoulder_R0_0_loc3_1crvShape" -p "shoulder_R0_0_loc"; 0 0 -0.1875 ; createNode transform -n "legFront_R0_root" -p "shoulder_R0_0_loc"; - rename -uid "E091009A-4F49-FA69-40E0-5EAA584ED7DE"; + rename -uid "34DE18E7-44AB-6F8B-A50E-2FA05782ABBF"; addAttr -ci true -sn "isGearGuide" -ln "isGearGuide" -dv 1 -min 0 -max 1 -at "bool"; addAttr -ci true -sn "comp_type" -ln "comp_type" -dt "string"; addAttr -ci true -sn "comp_name" -ln "comp_name" -dt "string"; @@ -4954,23 +4922,23 @@ createNode transform -n "legFront_R0_root" -p "shoulder_R0_0_loc"; addAttr -ci true -sn "connector" -ln "connector" -dt "string"; addAttr -ci true -sn "ui_host" -ln "ui_host" -dt "string"; addAttr -ci true -sn "ctlGrp" -ln "ctlGrp" -dt "string"; - addAttr -ci true -sn "blend" -ln "blend" -min 0 -max 1 -at "double"; - addAttr -ci true -sn "full3BonesIK" -ln "full3BonesIK" -min 0 -max 1 -at "double"; + addAttr -ci true -sn "blend" -ln "blend" -dv 1 -min 0 -max 1 -at "double"; + addAttr -ci true -sn "full3BonesIK" -ln "full3BonesIK" -dv 1 -min 0 -max 1 -at "double"; addAttr -ci true -sn "ikrefarray" -ln "ikrefarray" -dt "string"; addAttr -ci true -sn "upvrefarray" -ln "upvrefarray" -dt "string"; - addAttr -ci true -sn "maxstretch" -ln "maxstretch" -dv 1 -min 1 -at "double"; + addAttr -ci true -sn "maxstretch" -ln "maxstretch" -dv 1.5 -min 1 -at "double"; addAttr -ci true -k true -sn "ikSolver" -ln "ikSolver" -min 0 -max 1 -en "IK Spring:IK Rotation Plane" -at "enum"; - addAttr -ci true -sn "ikOri" -ln "ikOri" -min 0 -max 1 -at "bool"; - addAttr -ci true -sn "div0" -ln "div0" -dv 1 -min 1 -at "long"; - addAttr -ci true -sn "div1" -ln "div1" -dv 1 -min 1 -at "long"; - addAttr -ci true -sn "div2" -ln "div2" -dv 1 -min 1 -at "long"; + addAttr -ci true -sn "ikOri" -ln "ikOri" -dv 1 -min 0 -max 1 -at "bool"; + addAttr -ci true -sn "div0" -ln "div0" -dv 2 -min 1 -at "long"; + addAttr -ci true -sn "div1" -ln "div1" -dv 2 -min 1 -at "long"; + addAttr -ci true -sn "div2" -ln "div2" -dv 2 -min 1 -at "long"; addAttr -ci true -k true -sn "st_profile" -ln "st_profile" -at "double"; addAttr -ci true -k true -sn "sq_profile" -ln "sq_profile" -at "double"; addAttr -ci true -sn "useIndex" -ln "useIndex" -min 0 -max 1 -at "bool"; - addAttr -ci true -sn "parentJointIndex" -ln "parentJointIndex" -at "long"; + addAttr -ci true -sn "parentJointIndex" -ln "parentJointIndex" -dv -1 -at "long"; setAttr -k off -cb on ".v"; - setAttr ".t" -type "double3" -9.9920072216264089e-016 -3.1086244689504383e-015 -4.4408920985006262e-016 ; + setAttr ".t" -type "double3" -1.1102230246251565e-015 -2.6645352591003757e-015 -4.4408920985006262e-016 ; setAttr -k off -cb on ".tx"; setAttr -k off -cb on ".ty"; setAttr -k off -cb on ".tz"; @@ -4978,7 +4946,7 @@ createNode transform -n "legFront_R0_root" -p "shoulder_R0_0_loc"; setAttr -k off -cb on ".ry"; setAttr -k off -cb on ".rz"; setAttr -cb on ".ro"; - setAttr ".s" -type "double3" 0.39967062595950276 0.39967062595950315 0.39967062595950281 ; + setAttr ".s" -type "double3" 0.39967062595950276 0.3996706259595032 0.39967062595950281 ; setAttr -k off -cb on ".sx"; setAttr -k off -cb on ".sy"; setAttr -k off -cb on ".sz"; @@ -4988,21 +4956,13 @@ createNode transform -n "legFront_R0_root" -p "shoulder_R0_0_loc"; setAttr ".connector" -type "string" "standard"; setAttr ".ui_host" -type "string" "frontLegUI_R0_root"; setAttr ".ctlGrp" -type "string" ""; - setAttr ".blend" 1; - setAttr ".full3BonesIK" 1; setAttr ".ikrefarray" -type "string" "local_C0_root,spine_C0_root,global_C0_root"; setAttr ".upvrefarray" -type "string" "local_C0_root,spine_C0_root,global_C0_root"; - setAttr ".maxstretch" 1.5; setAttr -k on ".ikSolver" 1; - setAttr ".ikOri" yes; - setAttr ".div0" 2; - setAttr ".div1" 2; - setAttr ".div2" 2; setAttr -k on ".st_profile"; setAttr -k on ".sq_profile"; - setAttr ".parentJointIndex" -1; createNode nurbsCurve -n "legFront_R0_rootShape" -p "legFront_R0_root"; - rename -uid "E8421493-4322-8527-486D-7183C1D4D003"; + rename -uid "739D7CB4-4BF6-0821-1BCF-6984F5D14CDD"; setAttr ".ihi" 0; setAttr -k off ".v"; setAttr ".ove" yes; @@ -5014,8 +4974,8 @@ createNode nurbsCurve -n "legFront_R0_rootShape" -p "legFront_R0_root"; 0.25 0 0 -0.25 0 0 ; -createNode nurbsCurve -n "legFront_R0_root1Shape" -p "legFront_R0_root"; - rename -uid "4D5C9579-4A1A-26BF-883A-DFB9DAAFA635"; +createNode nurbsCurve -n "legFront_R0_root4Shape" -p "legFront_R0_root"; + rename -uid "B193E9CB-40F6-9289-AE25-A0AC76777913"; setAttr ".ihi" 0; setAttr -k off ".v"; setAttr ".ove" yes; @@ -5027,8 +4987,8 @@ createNode nurbsCurve -n "legFront_R0_root1Shape" -p "legFront_R0_root"; 0 0.25 0 0 -0.25 0 ; -createNode nurbsCurve -n "legFront_R0_root2Shape" -p "legFront_R0_root"; - rename -uid "03D7C974-4BED-E63C-84A5-0C89312740F4"; +createNode nurbsCurve -n "legFront_R0_root5Shape" -p "legFront_R0_root"; + rename -uid "14D05DE1-4A74-7283-C36C-9B8F156FE3BB"; setAttr ".ihi" 0; setAttr -k off ".v"; setAttr ".ove" yes; @@ -5040,8 +5000,8 @@ createNode nurbsCurve -n "legFront_R0_root2Shape" -p "legFront_R0_root"; 0 0 0.25 0 0 -0.25 ; -createNode nurbsCurve -n "legFront_R0_root3Shape" -p "legFront_R0_root"; - rename -uid "36020B22-40E8-6DBD-90A8-D48889328351"; +createNode nurbsCurve -n "legFront_R0_root6Shape" -p "legFront_R0_root"; + rename -uid "46337DDA-4D44-F3E9-7B21-CD87212B360C"; setAttr ".ihi" 0; setAttr -k off ".v"; setAttr ".ove" yes; @@ -5068,10 +5028,10 @@ createNode nurbsCurve -n "legFront_R0_root3Shape" -p "legFront_R0_root"; -0.125 -0.125 -0.125 ; createNode transform -n "legFront_R0_knee" -p "legFront_R0_root"; - rename -uid "32AFCE0F-4173-8021-E5B4-2B87AB6B0A41"; + rename -uid "0B5462FA-4C50-8C1C-BF0C-13B639357721"; addAttr -ci true -sn "isGearGuide" -ln "isGearGuide" -dv 1 -min 0 -max 1 -at "bool"; setAttr -k off -cb on ".v"; - setAttr ".t" -type "double3" 1.3322676295501878e-015 -2.1240863021370489 -0.48633856256837316 ; + setAttr ".t" -type "double3" 1.3322676295501878e-015 -2.1240863021370475 -0.48633856256837316 ; setAttr -l on -k off -cb on ".tx"; setAttr -k off -cb on ".ty"; setAttr -k off -cb on ".tz"; @@ -5079,12 +5039,12 @@ createNode transform -n "legFront_R0_knee" -p "legFront_R0_root"; setAttr -l on -k off -cb on ".ry"; setAttr -l on -k off -cb on ".rz"; setAttr -cb on ".ro"; - setAttr ".s" -type "double3" 1.0000000000000002 0.99999999999999956 1.0000000000000007 ; + setAttr ".s" -type "double3" 1.0000000000000002 0.99999999999999978 1.0000000000000007 ; setAttr -k off -cb on ".sx"; setAttr -k off -cb on ".sy"; setAttr -k off -cb on ".sz"; createNode nurbsCurve -n "legFront_R0_kneeShape" -p "legFront_R0_knee"; - rename -uid "40686C9E-4CDD-9EB5-950C-43AC1EEF59E4"; + rename -uid "34D0EDB8-434B-539B-B34F-798F0403385A"; setAttr ".ihi" 0; setAttr -k off ".v"; setAttr ".ove" yes; @@ -5096,8 +5056,8 @@ createNode nurbsCurve -n "legFront_R0_kneeShape" -p "legFront_R0_knee"; 0.25 0 0 -0.25 0 0 ; -createNode nurbsCurve -n "legFront_R0_knee1Shape" -p "legFront_R0_knee"; - rename -uid "E1C22D70-45DB-9874-7AD3-ACB4A158F841"; +createNode nurbsCurve -n "legFront_R0_knee4Shape" -p "legFront_R0_knee"; + rename -uid "2AF5F2DE-4D9F-3BB8-D1D3-96A51E814FDB"; setAttr ".ihi" 0; setAttr -k off ".v"; setAttr ".ove" yes; @@ -5109,8 +5069,8 @@ createNode nurbsCurve -n "legFront_R0_knee1Shape" -p "legFront_R0_knee"; 0 0.25 0 0 -0.25 0 ; -createNode nurbsCurve -n "legFront_R0_knee2Shape" -p "legFront_R0_knee"; - rename -uid "20F1EDA7-4284-254A-1CEA-A5ADE7B3977C"; +createNode nurbsCurve -n "legFront_R0_knee5Shape" -p "legFront_R0_knee"; + rename -uid "B769211B-4B90-222B-CECA-679765B27E7C"; setAttr ".ihi" 0; setAttr -k off ".v"; setAttr ".ove" yes; @@ -5122,8 +5082,8 @@ createNode nurbsCurve -n "legFront_R0_knee2Shape" -p "legFront_R0_knee"; 0 0 0.25 0 0 -0.25 ; -createNode nurbsCurve -n "legFront_R0_knee3Shape" -p "legFront_R0_knee"; - rename -uid "2DBAF0C4-42A4-E2F7-48F0-30860A148E8D"; +createNode nurbsCurve -n "legFront_R0_knee6Shape" -p "legFront_R0_knee"; + rename -uid "3EBBDC36-4CB8-F18B-2EC2-5DBDB54434B9"; setAttr ".ihi" 0; setAttr -k off ".v"; setAttr ".ove" yes; @@ -5140,8 +5100,8 @@ createNode nurbsCurve -n "legFront_R0_knee3Shape" -p "legFront_R0_knee"; 0 -0.1875 0 -0.1875 0 0 ; -createNode nurbsCurve -n "legFront_R0_knee3_0crvShape" -p "legFront_R0_knee"; - rename -uid "02C3E02F-43D6-4633-4EB7-99BF6905B975"; +createNode nurbsCurve -n "legFront_R0_knee6_0crvShape" -p "legFront_R0_knee"; + rename -uid "B78DBDA1-4931-70B8-C7CB-5995E8EE80D6"; setAttr ".ihi" 0; setAttr -k off ".v"; setAttr ".ove" yes; @@ -5158,8 +5118,8 @@ createNode nurbsCurve -n "legFront_R0_knee3_0crvShape" -p "legFront_R0_knee"; 0 0 -0.1875 -0.1875 0 0 ; -createNode nurbsCurve -n "legFront_R0_knee3_1crvShape" -p "legFront_R0_knee"; - rename -uid "38F23D74-41AE-8244-EDE6-ADB11D14D967"; +createNode nurbsCurve -n "legFront_R0_knee6_1crvShape" -p "legFront_R0_knee"; + rename -uid "4D34D482-4B83-371B-9B04-0D87232711D3"; setAttr ".ihi" 0; setAttr -k off ".v"; setAttr ".ove" yes; @@ -5177,10 +5137,10 @@ createNode nurbsCurve -n "legFront_R0_knee3_1crvShape" -p "legFront_R0_knee"; 0 0 -0.1875 ; createNode transform -n "legFront_R0_ankle" -p "legFront_R0_knee"; - rename -uid "B670F120-4B71-8DDA-88EC-25923E279ACD"; + rename -uid "6B8BE426-43D7-882B-52E4-499B57E02607"; addAttr -ci true -sn "isGearGuide" -ln "isGearGuide" -dv 1 -min 0 -max 1 -at "bool"; setAttr -k off -cb on ".v"; - setAttr ".t" -type "double3" 4.4408920985006262e-015 -2.3651516407059177 0.073902270404609283 ; + setAttr ".t" -type "double3" 2.6645352591003757e-015 -2.365151640705919 0.073902270404608394 ; setAttr -l on -k off -cb on ".tx"; setAttr -k off -cb on ".ty"; setAttr -k off -cb on ".tz"; @@ -5188,12 +5148,12 @@ createNode transform -n "legFront_R0_ankle" -p "legFront_R0_knee"; setAttr -l on -k off -cb on ".ry"; setAttr -l on -k off -cb on ".rz"; setAttr -cb on ".ro"; - setAttr ".s" -type "double3" 1.0000000000000002 0.99999999999999967 0.99999999999999944 ; + setAttr ".s" -type "double3" 1.0000000000000002 0.99999999999999978 0.99999999999999944 ; setAttr -k off -cb on ".sx"; setAttr -k off -cb on ".sy"; setAttr -k off -cb on ".sz"; createNode nurbsCurve -n "legFront_R0_ankleShape" -p "legFront_R0_ankle"; - rename -uid "7D8F2FA7-4207-C49A-22B8-85825F6F1F37"; + rename -uid "BD7CC5C7-47D9-9949-E9A7-448DB8A519E0"; setAttr ".ihi" 0; setAttr -k off ".v"; setAttr ".ove" yes; @@ -5205,8 +5165,8 @@ createNode nurbsCurve -n "legFront_R0_ankleShape" -p "legFront_R0_ankle"; 0.25 0 0 -0.25 0 0 ; -createNode nurbsCurve -n "legFront_R0_ankle1Shape" -p "legFront_R0_ankle"; - rename -uid "38A37E48-4958-FB4A-85CB-C2BC2EB04D4F"; +createNode nurbsCurve -n "legFront_R0_ankle4Shape" -p "legFront_R0_ankle"; + rename -uid "946B40F1-40E6-B2E5-3AD1-5BBE158443B3"; setAttr ".ihi" 0; setAttr -k off ".v"; setAttr ".ove" yes; @@ -5218,8 +5178,8 @@ createNode nurbsCurve -n "legFront_R0_ankle1Shape" -p "legFront_R0_ankle"; 0 0.25 0 0 -0.25 0 ; -createNode nurbsCurve -n "legFront_R0_ankle2Shape" -p "legFront_R0_ankle"; - rename -uid "0A3A3DAB-4FFD-8035-1B24-B0A7C6CE1E0C"; +createNode nurbsCurve -n "legFront_R0_ankle5Shape" -p "legFront_R0_ankle"; + rename -uid "840AC465-4901-0D6B-0431-9FB713C2F6A2"; setAttr ".ihi" 0; setAttr -k off ".v"; setAttr ".ove" yes; @@ -5231,8 +5191,8 @@ createNode nurbsCurve -n "legFront_R0_ankle2Shape" -p "legFront_R0_ankle"; 0 0 0.25 0 0 -0.25 ; -createNode nurbsCurve -n "legFront_R0_ankle3Shape" -p "legFront_R0_ankle"; - rename -uid "E0DA3CB3-4830-405E-672F-C5A6E011A73F"; +createNode nurbsCurve -n "legFront_R0_ankle6Shape" -p "legFront_R0_ankle"; + rename -uid "88E954D7-469A-9CF8-3E4A-DD8AA219B0FF"; setAttr ".ihi" 0; setAttr -k off ".v"; setAttr ".ove" yes; @@ -5249,8 +5209,8 @@ createNode nurbsCurve -n "legFront_R0_ankle3Shape" -p "legFront_R0_ankle"; 0 -0.1875 0 -0.1875 0 0 ; -createNode nurbsCurve -n "legFront_R0_ankle3_0crvShape" -p "legFront_R0_ankle"; - rename -uid "FB817882-48BB-BB72-0120-D88D62F2925C"; +createNode nurbsCurve -n "legFront_R0_ankle6_0crvShape" -p "legFront_R0_ankle"; + rename -uid "0A693D11-4FAC-751D-3C86-D9BBBB6BBACB"; setAttr ".ihi" 0; setAttr -k off ".v"; setAttr ".ove" yes; @@ -5267,8 +5227,8 @@ createNode nurbsCurve -n "legFront_R0_ankle3_0crvShape" -p "legFront_R0_ankle"; 0 0 -0.1875 -0.1875 0 0 ; -createNode nurbsCurve -n "legFront_R0_ankle3_1crvShape" -p "legFront_R0_ankle"; - rename -uid "43FB16C7-4344-51EE-8CE3-DC971534FB2C"; +createNode nurbsCurve -n "legFront_R0_ankle6_1crvShape" -p "legFront_R0_ankle"; + rename -uid "FC3E3A2D-47D8-A553-43E9-FB95BC07D286"; setAttr ".ihi" 0; setAttr -k off ".v"; setAttr ".ove" yes; @@ -5286,10 +5246,10 @@ createNode nurbsCurve -n "legFront_R0_ankle3_1crvShape" -p "legFront_R0_ankle"; 0 0 -0.1875 ; createNode transform -n "legFront_R0_foot" -p "legFront_R0_ankle"; - rename -uid "1CDC322E-4060-6A5E-A14B-44BC2DC7B332"; + rename -uid "18A02A7E-43F1-6A6F-D1D4-7F815A2349C1"; addAttr -ci true -sn "isGearGuide" -ln "isGearGuide" -dv 1 -min 0 -max 1 -at "bool"; setAttr -k off -cb on ".v"; - setAttr ".t" -type "double3" 0 -1.1294425054275503 0.023148533894219447 ; + setAttr ".t" -type "double3" -4.4408920985006262e-016 -1.1294425054275496 0.023148533894220336 ; setAttr -l on -k off -cb on ".tx"; setAttr -k off -cb on ".ty"; setAttr -k off -cb on ".tz"; @@ -5297,12 +5257,12 @@ createNode transform -n "legFront_R0_foot" -p "legFront_R0_ankle"; setAttr -l on -k off -cb on ".ry"; setAttr -l on -k off -cb on ".rz"; setAttr -cb on ".ro"; - setAttr ".s" -type "double3" 0.99999999999999989 1.0000000000000002 1.0000000000000004 ; + setAttr ".s" -type "double3" 0.99999999999999978 1 1.0000000000000004 ; setAttr -k off -cb on ".sx"; setAttr -k off -cb on ".sy"; setAttr -k off -cb on ".sz"; createNode nurbsCurve -n "legFront_R0_footShape" -p "legFront_R0_foot"; - rename -uid "2560C5A8-4758-1467-0E0E-719885F2B646"; + rename -uid "99FFA4F9-4B93-6C51-33A8-E5AA3E029D2D"; setAttr ".ihi" 0; setAttr -k off ".v"; setAttr ".ove" yes; @@ -5314,8 +5274,8 @@ createNode nurbsCurve -n "legFront_R0_footShape" -p "legFront_R0_foot"; 0.25 0 0 -0.25 0 0 ; -createNode nurbsCurve -n "legFront_R0_foot1Shape" -p "legFront_R0_foot"; - rename -uid "DB2AE7A5-4180-7E68-5BA0-25B12653ECF4"; +createNode nurbsCurve -n "legFront_R0_foot4Shape" -p "legFront_R0_foot"; + rename -uid "60D9F634-4D45-9DD9-9363-EAADC88425A7"; setAttr ".ihi" 0; setAttr -k off ".v"; setAttr ".ove" yes; @@ -5327,8 +5287,8 @@ createNode nurbsCurve -n "legFront_R0_foot1Shape" -p "legFront_R0_foot"; 0 0.25 0 0 -0.25 0 ; -createNode nurbsCurve -n "legFront_R0_foot2Shape" -p "legFront_R0_foot"; - rename -uid "93B35DC7-4FD2-0E71-E94D-BCA6CD6A4897"; +createNode nurbsCurve -n "legFront_R0_foot5Shape" -p "legFront_R0_foot"; + rename -uid "B956C9C3-46E7-D1F9-4E39-F986F8FB3343"; setAttr ".ihi" 0; setAttr -k off ".v"; setAttr ".ove" yes; @@ -5340,8 +5300,8 @@ createNode nurbsCurve -n "legFront_R0_foot2Shape" -p "legFront_R0_foot"; 0 0 0.25 0 0 -0.25 ; -createNode nurbsCurve -n "legFront_R0_foot3Shape" -p "legFront_R0_foot"; - rename -uid "018AFD1A-4511-14F4-09E2-D9B572B27144"; +createNode nurbsCurve -n "legFront_R0_foot6Shape" -p "legFront_R0_foot"; + rename -uid "9937917E-4396-8816-0088-3AAA986A448F"; setAttr ".ihi" 0; setAttr -k off ".v"; setAttr ".ove" yes; @@ -5358,8 +5318,8 @@ createNode nurbsCurve -n "legFront_R0_foot3Shape" -p "legFront_R0_foot"; 0 -0.1875 0 -0.1875 0 0 ; -createNode nurbsCurve -n "legFront_R0_foot3_0crvShape" -p "legFront_R0_foot"; - rename -uid "E7306891-4D19-A798-53FE-649F14393739"; +createNode nurbsCurve -n "legFront_R0_foot6_0crvShape" -p "legFront_R0_foot"; + rename -uid "615F96E1-4493-62B8-8F5B-78AE51DBE99E"; setAttr ".ihi" 0; setAttr -k off ".v"; setAttr ".ove" yes; @@ -5376,8 +5336,8 @@ createNode nurbsCurve -n "legFront_R0_foot3_0crvShape" -p "legFront_R0_foot"; 0 0 -0.1875 -0.1875 0 0 ; -createNode nurbsCurve -n "legFront_R0_foot3_1crvShape" -p "legFront_R0_foot"; - rename -uid "C94E93F9-4D31-BD64-5112-2097E7B7111E"; +createNode nurbsCurve -n "legFront_R0_foot6_1crvShape" -p "legFront_R0_foot"; + rename -uid "455D8F99-4458-9B5A-D2B7-AC869CE6564F"; setAttr ".ihi" 0; setAttr -k off ".v"; setAttr ".ove" yes; @@ -5395,10 +5355,10 @@ createNode nurbsCurve -n "legFront_R0_foot3_1crvShape" -p "legFront_R0_foot"; 0 0 -0.1875 ; createNode transform -n "legFront_R0_eff" -p "legFront_R0_foot"; - rename -uid "63CD4CB1-4212-63CC-D2C8-4182C56E4BCE"; + rename -uid "7E6360B5-40AA-4441-5D39-2EBD6885B61C"; addAttr -ci true -sn "isGearGuide" -ln "isGearGuide" -dv 1 -min 0 -max 1 -at "bool"; setAttr -k off -cb on ".v"; - setAttr ".t" -type "double3" 2.6645352591003757e-015 8.8817841970012523e-016 0.59657797851920691 ; + setAttr ".t" -type "double3" 3.1086244689504383e-015 8.6042284408449632e-016 0.59657797851920868 ; setAttr -k off -cb on ".tx"; setAttr -k off -cb on ".ty"; setAttr -k off -cb on ".tz"; @@ -5406,12 +5366,12 @@ createNode transform -n "legFront_R0_eff" -p "legFront_R0_foot"; setAttr -k off -cb on ".ry"; setAttr -k off -cb on ".rz"; setAttr -cb on ".ro"; - setAttr ".s" -type "double3" 0.99999999999999944 0.99999999999999922 0.99999999999999867 ; + setAttr ".s" -type "double3" 0.99999999999999967 0.99999999999999922 0.99999999999999867 ; setAttr -k off -cb on ".sx"; setAttr -k off -cb on ".sy"; setAttr -k off -cb on ".sz"; createNode nurbsCurve -n "legFront_R0_effShape" -p "legFront_R0_eff"; - rename -uid "FAF374E2-4851-56B3-E8C2-B39995B9CE38"; + rename -uid "34347F68-4B4C-0918-6D4F-7087FCB206CA"; setAttr ".ihi" 0; setAttr -k off ".v"; setAttr ".ove" yes; @@ -5423,8 +5383,8 @@ createNode nurbsCurve -n "legFront_R0_effShape" -p "legFront_R0_eff"; 0.25 0 0 -0.25 0 0 ; -createNode nurbsCurve -n "legFront_R0_eff1Shape" -p "legFront_R0_eff"; - rename -uid "FB1E547D-4B7C-5790-9A67-1A915C131448"; +createNode nurbsCurve -n "legFront_R0_eff4Shape" -p "legFront_R0_eff"; + rename -uid "61B4025F-42BD-1D6C-AB3F-F3BCF4CD690A"; setAttr ".ihi" 0; setAttr -k off ".v"; setAttr ".ove" yes; @@ -5436,8 +5396,8 @@ createNode nurbsCurve -n "legFront_R0_eff1Shape" -p "legFront_R0_eff"; 0 0.25 0 0 -0.25 0 ; -createNode nurbsCurve -n "legFront_R0_eff2Shape" -p "legFront_R0_eff"; - rename -uid "46B9F2E4-421B-EC6B-10B4-069EA880787A"; +createNode nurbsCurve -n "legFront_R0_eff5Shape" -p "legFront_R0_eff"; + rename -uid "99338A14-4C51-F3A2-EF9E-65A2DECCE72E"; setAttr ".ihi" 0; setAttr -k off ".v"; setAttr ".ove" yes; @@ -5449,8 +5409,8 @@ createNode nurbsCurve -n "legFront_R0_eff2Shape" -p "legFront_R0_eff"; 0 0 0.25 0 0 -0.25 ; -createNode nurbsCurve -n "legFront_R0_eff3Shape" -p "legFront_R0_eff"; - rename -uid "A6773FBA-4FA7-9278-8930-97B9B1D52851"; +createNode nurbsCurve -n "legFront_R0_eff6Shape" -p "legFront_R0_eff"; + rename -uid "2862B3B4-4F8D-E8B0-35E1-B1A7F8FF6E8A"; setAttr ".ihi" 0; setAttr -k off ".v"; setAttr ".ove" yes; @@ -5467,8 +5427,8 @@ createNode nurbsCurve -n "legFront_R0_eff3Shape" -p "legFront_R0_eff"; 0 -0.1875 0 -0.1875 0 0 ; -createNode nurbsCurve -n "legFront_R0_eff3_0crvShape" -p "legFront_R0_eff"; - rename -uid "FFDCDB71-466A-F0C6-F58C-D9AB00DF5FC0"; +createNode nurbsCurve -n "legFront_R0_eff6_0crvShape" -p "legFront_R0_eff"; + rename -uid "172959DC-414E-197B-9304-08882059DEDB"; setAttr ".ihi" 0; setAttr -k off ".v"; setAttr ".ove" yes; @@ -5485,8 +5445,8 @@ createNode nurbsCurve -n "legFront_R0_eff3_0crvShape" -p "legFront_R0_eff"; 0 0 -0.1875 -0.1875 0 0 ; -createNode nurbsCurve -n "legFront_R0_eff3_1crvShape" -p "legFront_R0_eff"; - rename -uid "6ABDD94C-45C6-15B7-2B12-E28A4E978653"; +createNode nurbsCurve -n "legFront_R0_eff6_1crvShape" -p "legFront_R0_eff"; + rename -uid "58C2E2BB-4C40-5DAF-5AC4-0E8EE5D70EA6"; setAttr ".ihi" 0; setAttr -k off ".v"; setAttr ".ove" yes; @@ -5504,7 +5464,7 @@ createNode nurbsCurve -n "legFront_R0_eff3_1crvShape" -p "legFront_R0_eff"; 0 0 -0.1875 ; createNode transform -n "footFront_R0_root" -p "legFront_R0_foot"; - rename -uid "99D04758-4090-69EF-124B-9DBEB1618BDB"; + rename -uid "702E0129-442E-2981-86BF-5DB1E4F7FEF9"; addAttr -ci true -sn "isGearGuide" -ln "isGearGuide" -dv 1 -min 0 -max 1 -at "bool"; addAttr -ci true -sn "comp_type" -ln "comp_type" -dt "string"; addAttr -ci true -sn "comp_name" -ln "comp_name" -dt "string"; @@ -5513,11 +5473,11 @@ createNode transform -n "footFront_R0_root" -p "legFront_R0_foot"; addAttr -ci true -sn "connector" -ln "connector" -dt "string"; addAttr -ci true -sn "ui_host" -ln "ui_host" -dt "string"; addAttr -ci true -sn "ctlGrp" -ln "ctlGrp" -dt "string"; - addAttr -ci true -sn "useRollCtl" -ln "useRollCtl" -min 0 -max 1 -at "bool"; + addAttr -ci true -sn "useRollCtl" -ln "useRollCtl" -dv 1 -min 0 -max 1 -at "bool"; addAttr -ci true -sn "useIndex" -ln "useIndex" -min 0 -max 1 -at "bool"; - addAttr -ci true -sn "parentJointIndex" -ln "parentJointIndex" -at "long"; + addAttr -ci true -sn "parentJointIndex" -ln "parentJointIndex" -dv -1 -at "long"; setAttr -k off -cb on ".v"; - setAttr ".t" -type "double3" 2.6645352591003757e-015 7.7715611723760958e-016 -3.5527136788005009e-015 ; + setAttr ".t" -type "double3" 3.1086244689504383e-015 9.1593399531575415e-016 -1.7763568394002505e-015 ; setAttr -k off -cb on ".tx"; setAttr -k off -cb on ".ty"; setAttr -k off -cb on ".tz"; @@ -5525,7 +5485,7 @@ createNode transform -n "footFront_R0_root" -p "legFront_R0_foot"; setAttr -k off -cb on ".ry"; setAttr -k off -cb on ".rz"; setAttr -cb on ".ro"; - setAttr ".s" -type "double3" 0.31499517602514088 0.31499517602514093 0.31499517602514077 ; + setAttr ".s" -type "double3" 0.31499517602514099 0.31499517602514093 0.31499517602514077 ; setAttr -k off -cb on ".sx"; setAttr -k off -cb on ".sy"; setAttr -k off -cb on ".sz"; @@ -5535,10 +5495,8 @@ createNode transform -n "footFront_R0_root" -p "legFront_R0_foot"; setAttr ".connector" -type "string" "leg_3jnt_01"; setAttr ".ui_host" -type "string" "frontLegUI_R0_root"; setAttr ".ctlGrp" -type "string" ""; - setAttr ".useRollCtl" yes; - setAttr ".parentJointIndex" -1; createNode nurbsCurve -n "footFront_R0_rootShape" -p "footFront_R0_root"; - rename -uid "4C6FC73D-4D55-0487-8EDE-4CAC238B5B5D"; + rename -uid "8855F3FA-4916-E179-C56E-9EB3D214162B"; setAttr ".ihi" 0; setAttr -k off ".v"; setAttr ".ove" yes; @@ -5550,8 +5508,8 @@ createNode nurbsCurve -n "footFront_R0_rootShape" -p "footFront_R0_root"; 0.25 0 0 -0.25 0 0 ; -createNode nurbsCurve -n "footFront_R0_root1Shape" -p "footFront_R0_root"; - rename -uid "0439C1B2-4640-BEB3-AD29-7D8F34F833CC"; +createNode nurbsCurve -n "footFront_R0_root4Shape" -p "footFront_R0_root"; + rename -uid "E5FD2780-426F-CEFD-B585-F5841228D1F3"; setAttr ".ihi" 0; setAttr -k off ".v"; setAttr ".ove" yes; @@ -5563,8 +5521,8 @@ createNode nurbsCurve -n "footFront_R0_root1Shape" -p "footFront_R0_root"; 0 0.25 0 0 -0.25 0 ; -createNode nurbsCurve -n "footFront_R0_root2Shape" -p "footFront_R0_root"; - rename -uid "22C3035F-4CCF-50F3-0818-A7ACA13AFD7A"; +createNode nurbsCurve -n "footFront_R0_root5Shape" -p "footFront_R0_root"; + rename -uid "CD799EFA-46DC-E08A-794C-B9B712D3ACEA"; setAttr ".ihi" 0; setAttr -k off ".v"; setAttr ".ove" yes; @@ -5576,8 +5534,8 @@ createNode nurbsCurve -n "footFront_R0_root2Shape" -p "footFront_R0_root"; 0 0 0.25 0 0 -0.25 ; -createNode nurbsCurve -n "footFront_R0_root3Shape" -p "footFront_R0_root"; - rename -uid "74932CE5-47BA-C3FF-0DE8-49B6C1504B77"; +createNode nurbsCurve -n "footFront_R0_root6Shape" -p "footFront_R0_root"; + rename -uid "7084AA59-4C77-A960-8FC0-0D9B6A08E2B8"; setAttr ".ihi" 0; setAttr -k off ".v"; setAttr ".ove" yes; @@ -5604,10 +5562,10 @@ createNode nurbsCurve -n "footFront_R0_root3Shape" -p "footFront_R0_root"; -0.125 -0.125 -0.125 ; createNode transform -n "footFront_R0_0_loc" -p "footFront_R0_root"; - rename -uid "CE98A608-460A-FEF6-F424-538A14CD09B6"; + rename -uid "FBFC1FE2-42DE-9F84-6CEB-468E507AC5EC"; addAttr -ci true -sn "isGearGuide" -ln "isGearGuide" -dv 1 -min 0 -max 1 -at "bool"; setAttr -k off -cb on ".v"; - setAttr ".t" -type "double3" 5.3290705182007514e-015 7.7715611723760958e-016 0.75996190873517477 ; + setAttr ".t" -type "double3" 6.2172489379008766e-015 5.5511151231257827e-016 0.75996190873517833 ; setAttr -k off -cb on ".tx"; setAttr -k off -cb on ".ty"; setAttr -k off -cb on ".tz"; @@ -5615,12 +5573,12 @@ createNode transform -n "footFront_R0_0_loc" -p "footFront_R0_root"; setAttr -k off -cb on ".ry"; setAttr -k off -cb on ".rz"; setAttr -cb on ".ro"; - setAttr ".s" -type "double3" 1 1.0000000000000004 1.0000000000000007 ; + setAttr ".s" -type "double3" 0.99999999999999989 1.0000000000000004 1.0000000000000004 ; setAttr -k off -cb on ".sx"; setAttr -k off -cb on ".sy"; setAttr -k off -cb on ".sz"; createNode nurbsCurve -n "footFront_R0_0_locShape" -p "footFront_R0_0_loc"; - rename -uid "7B6AD316-4531-E7F7-1F83-BAB4524B2530"; + rename -uid "3F7167B3-4BE8-F8B5-4F2E-C2AC27BA0690"; setAttr ".ihi" 0; setAttr -k off ".v"; setAttr ".ove" yes; @@ -5632,8 +5590,8 @@ createNode nurbsCurve -n "footFront_R0_0_locShape" -p "footFront_R0_0_loc"; 0.25 0 0 -0.25 0 0 ; -createNode nurbsCurve -n "footFront_R0_0_loc1Shape" -p "footFront_R0_0_loc"; - rename -uid "A2EE855B-4F15-8BE3-68C8-F6A4448A7F66"; +createNode nurbsCurve -n "footFront_R0_0_loc4Shape" -p "footFront_R0_0_loc"; + rename -uid "82046614-4A9F-F8BE-98D2-16A13692E082"; setAttr ".ihi" 0; setAttr -k off ".v"; setAttr ".ove" yes; @@ -5645,8 +5603,8 @@ createNode nurbsCurve -n "footFront_R0_0_loc1Shape" -p "footFront_R0_0_loc"; 0 0.25 0 0 -0.25 0 ; -createNode nurbsCurve -n "footFront_R0_0_loc2Shape" -p "footFront_R0_0_loc"; - rename -uid "D074C882-4BDB-66F6-4B36-82A50B72E338"; +createNode nurbsCurve -n "footFront_R0_0_loc5Shape" -p "footFront_R0_0_loc"; + rename -uid "A16357B5-49AC-0FC0-762D-5BBF7133D76F"; setAttr ".ihi" 0; setAttr -k off ".v"; setAttr ".ove" yes; @@ -5658,8 +5616,8 @@ createNode nurbsCurve -n "footFront_R0_0_loc2Shape" -p "footFront_R0_0_loc"; 0 0 0.25 0 0 -0.25 ; -createNode nurbsCurve -n "footFront_R0_0_loc3Shape" -p "footFront_R0_0_loc"; - rename -uid "6110BA49-4371-D4C1-1FE9-FDB92D25F510"; +createNode nurbsCurve -n "footFront_R0_0_loc6Shape" -p "footFront_R0_0_loc"; + rename -uid "D6A7BB8A-413E-ED25-B1EF-55B781FA9F74"; setAttr ".ihi" 0; setAttr -k off ".v"; setAttr ".ove" yes; @@ -5676,8 +5634,8 @@ createNode nurbsCurve -n "footFront_R0_0_loc3Shape" -p "footFront_R0_0_loc"; 0 -0.1875 0 -0.1875 0 0 ; -createNode nurbsCurve -n "footFront_R0_0_loc3_0crvShape" -p "footFront_R0_0_loc"; - rename -uid "6C3DBADC-4E0C-1E06-788A-9C88D4283C16"; +createNode nurbsCurve -n "footFront_R0_0_loc6_0crvShape" -p "footFront_R0_0_loc"; + rename -uid "CEA05339-45C4-ADDF-55A7-4884D42F5FD4"; setAttr ".ihi" 0; setAttr -k off ".v"; setAttr ".ove" yes; @@ -5694,8 +5652,8 @@ createNode nurbsCurve -n "footFront_R0_0_loc3_0crvShape" -p "footFront_R0_0_loc" 0 0 -0.1875 -0.1875 0 0 ; -createNode nurbsCurve -n "footFront_R0_0_loc3_1crvShape" -p "footFront_R0_0_loc"; - rename -uid "18FFB24F-4441-190F-C858-0B895FCD05E3"; +createNode nurbsCurve -n "footFront_R0_0_loc6_1crvShape" -p "footFront_R0_0_loc"; + rename -uid "2DC51BC2-4D92-7425-AA72-4D99A7658839"; setAttr ".ihi" 0; setAttr -k off ".v"; setAttr ".ove" yes; @@ -5713,10 +5671,10 @@ createNode nurbsCurve -n "footFront_R0_0_loc3_1crvShape" -p "footFront_R0_0_loc" 0 0 -0.1875 ; createNode transform -n "footFront_R0_1_loc" -p "footFront_R0_0_loc"; - rename -uid "C3C1E183-4F51-E597-7CD0-62911371400B"; + rename -uid "D6759845-47D0-67C5-3BBD-FB84934ACD02"; addAttr -ci true -sn "isGearGuide" -ln "isGearGuide" -dv 1 -min 0 -max 1 -at "bool"; setAttr -k off -cb on ".v"; - setAttr ".t" -type "double3" -3.5527136788005009e-015 -0.31771180755405082 0.73937999249394792 ; + setAttr ".t" -type "double3" -3.5527136788005009e-015 -0.31771180755405087 0.73937999249394437 ; setAttr -k off -cb on ".tx"; setAttr -k off -cb on ".ty"; setAttr -k off -cb on ".tz"; @@ -5724,12 +5682,12 @@ createNode transform -n "footFront_R0_1_loc" -p "footFront_R0_0_loc"; setAttr -k off -cb on ".ry"; setAttr -k off -cb on ".rz"; setAttr -cb on ".ro"; - setAttr ".s" -type "double3" 1 1.0000000000000002 1.0000000000000002 ; + setAttr ".s" -type "double3" 1 1.0000000000000002 1.0000000000000007 ; setAttr -k off -cb on ".sx"; setAttr -k off -cb on ".sy"; setAttr -k off -cb on ".sz"; createNode nurbsCurve -n "footFront_R0_1_locShape" -p "footFront_R0_1_loc"; - rename -uid "BD0006F1-4DE5-23BD-29A9-189490929B7E"; + rename -uid "624D2066-4611-0E8E-82D2-539403CBCD21"; setAttr ".ihi" 0; setAttr -k off ".v"; setAttr ".ove" yes; @@ -5741,8 +5699,8 @@ createNode nurbsCurve -n "footFront_R0_1_locShape" -p "footFront_R0_1_loc"; 0.25 0 0 -0.25 0 0 ; -createNode nurbsCurve -n "footFront_R0_1_loc1Shape" -p "footFront_R0_1_loc"; - rename -uid "3A310A5A-4D5F-F2F0-3CF5-638C42387539"; +createNode nurbsCurve -n "footFront_R0_1_loc4Shape" -p "footFront_R0_1_loc"; + rename -uid "B63437C0-4D5C-4FB4-1F01-5F9F96068D40"; setAttr ".ihi" 0; setAttr -k off ".v"; setAttr ".ove" yes; @@ -5754,8 +5712,8 @@ createNode nurbsCurve -n "footFront_R0_1_loc1Shape" -p "footFront_R0_1_loc"; 0 0.25 0 0 -0.25 0 ; -createNode nurbsCurve -n "footFront_R0_1_loc2Shape" -p "footFront_R0_1_loc"; - rename -uid "C596B9BC-43BA-CD4E-462D-C5BE2EC021BD"; +createNode nurbsCurve -n "footFront_R0_1_loc5Shape" -p "footFront_R0_1_loc"; + rename -uid "A42D5F0B-4C73-8DA1-758E-B993A9D7D753"; setAttr ".ihi" 0; setAttr -k off ".v"; setAttr ".ove" yes; @@ -5767,8 +5725,8 @@ createNode nurbsCurve -n "footFront_R0_1_loc2Shape" -p "footFront_R0_1_loc"; 0 0 0.25 0 0 -0.25 ; -createNode nurbsCurve -n "footFront_R0_1_loc3Shape" -p "footFront_R0_1_loc"; - rename -uid "7794D06B-419F-999C-56EB-819B095DF5A2"; +createNode nurbsCurve -n "footFront_R0_1_loc6Shape" -p "footFront_R0_1_loc"; + rename -uid "9EB83CEA-46F2-85BD-97E8-AA8884CAAF7B"; setAttr ".ihi" 0; setAttr -k off ".v"; setAttr ".ove" yes; @@ -5785,8 +5743,8 @@ createNode nurbsCurve -n "footFront_R0_1_loc3Shape" -p "footFront_R0_1_loc"; 0 -0.1875 0 -0.1875 0 0 ; -createNode nurbsCurve -n "footFront_R0_1_loc3_0crvShape" -p "footFront_R0_1_loc"; - rename -uid "A4D4A6D1-4C63-155F-BEDC-74A0FF483B43"; +createNode nurbsCurve -n "footFront_R0_1_loc6_0crvShape" -p "footFront_R0_1_loc"; + rename -uid "FC16B102-4479-824B-D614-71BCB8AD3128"; setAttr ".ihi" 0; setAttr -k off ".v"; setAttr ".ove" yes; @@ -5803,8 +5761,8 @@ createNode nurbsCurve -n "footFront_R0_1_loc3_0crvShape" -p "footFront_R0_1_loc" 0 0 -0.1875 -0.1875 0 0 ; -createNode nurbsCurve -n "footFront_R0_1_loc3_1crvShape" -p "footFront_R0_1_loc"; - rename -uid "A8A93811-4DE5-3AD2-4746-339E137587F0"; +createNode nurbsCurve -n "footFront_R0_1_loc6_1crvShape" -p "footFront_R0_1_loc"; + rename -uid "69D5962B-4C84-1061-D91E-5E8091631A8A"; setAttr ".ihi" 0; setAttr -k off ".v"; setAttr ".ove" yes; @@ -5822,19 +5780,19 @@ createNode nurbsCurve -n "footFront_R0_1_loc3_1crvShape" -p "footFront_R0_1_loc" 0 0 -0.1875 ; createNode transform -n "footFront_R0_crv" -p "footFront_R0_root"; - rename -uid "636B96CC-4563-C3BE-8755-AC8B8A8A3FD6"; + rename -uid "B5B99B85-410A-A0AF-6F94-B3986F8821DB"; setAttr ".ovdt" 1; setAttr ".ove" yes; - setAttr ".t" -type "double3" -7.3687973355373479 -0.60300743522685085 -16.239037496288905 ; - setAttr ".r" -type "double3" 0 180 0 ; - setAttr ".s" -type "double3" 7.9431701648148074 7.9431701648148074 -7.9431701648148092 ; + setAttr ".t" -type "double3" -7.3687973355373444 -0.60300743522684541 -16.239037496288905 ; + setAttr ".r" -type "double3" 0 179.99999999999997 0 ; + setAttr ".s" -type "double3" 7.9431701648148065 7.9431701648148074 -7.9431701648148083 ; createNode nurbsCurve -n "footFront_R0_crvShape" -p "footFront_R0_crv"; - rename -uid "9832A372-48F8-C2C3-E3E9-4AAF848D49C5"; + rename -uid "88F1AA9D-4915-7D9F-8982-ECA41D306011"; setAttr -k off ".v"; setAttr -s 4 ".iog[0].og"; setAttr ".tw" yes; createNode nurbsCurve -n "footFront_R0_crvShapeOrig" -p "footFront_R0_crv"; - rename -uid "8C8F79AF-4565-6A23-B782-7A8610AB3461"; + rename -uid "430A8DD1-4FCD-EC17-A47F-D593A1E8624B"; setAttr -k off ".v"; setAttr ".io" yes; setAttr ".cc" -type "nurbsCurve" @@ -5846,10 +5804,10 @@ createNode nurbsCurve -n "footFront_R0_crvShapeOrig" -p "footFront_R0_crv"; 0 0 0 ; createNode transform -n "footFront_R0_heel" -p "footFront_R0_root"; - rename -uid "C6FCAB5F-4E66-2B48-D5F7-9B9377B694E6"; + rename -uid "661D0ED7-44D9-00D7-ED75-368AEB62E9C4"; addAttr -ci true -sn "isGearGuide" -ln "isGearGuide" -dv 1 -min 0 -max 1 -at "bool"; setAttr -k off -cb on ".v"; - setAttr ".t" -type "double3" 1.0658141036401503e-014 -0.31771180755405071 -0.067899908672082177 ; + setAttr ".t" -type "double3" 1.2434497875801753e-014 -0.31771180755405076 -0.067899908672078624 ; setAttr -k off -cb on ".tx"; setAttr -k off -cb on ".ty"; setAttr -k off -cb on ".tz"; @@ -5857,12 +5815,12 @@ createNode transform -n "footFront_R0_heel" -p "footFront_R0_root"; setAttr -k off -cb on ".ry"; setAttr -k off -cb on ".rz"; setAttr -cb on ".ro"; - setAttr ".s" -type "double3" 1 1.0000000000000004 1.0000000000000007 ; + setAttr ".s" -type "double3" 0.99999999999999989 1.0000000000000004 1.0000000000000004 ; setAttr -k off -cb on ".sx"; setAttr -k off -cb on ".sy"; setAttr -k off -cb on ".sz"; createNode nurbsCurve -n "footFront_R0_heelShape" -p "footFront_R0_heel"; - rename -uid "20F89F00-49A4-087F-A822-FEB76B62A286"; + rename -uid "A331B82C-4199-B97C-C352-A4A4E20F8D1E"; setAttr ".ihi" 0; setAttr -k off ".v"; setAttr ".ove" yes; @@ -5874,8 +5832,8 @@ createNode nurbsCurve -n "footFront_R0_heelShape" -p "footFront_R0_heel"; 0.25 0 0 -0.25 0 0 ; -createNode nurbsCurve -n "footFront_R0_heel1Shape" -p "footFront_R0_heel"; - rename -uid "D95A0642-4F29-1517-12DA-91A65698E222"; +createNode nurbsCurve -n "footFront_R0_heel4Shape" -p "footFront_R0_heel"; + rename -uid "D3D47616-494C-C79D-FE0B-0BA22BA371EA"; setAttr ".ihi" 0; setAttr -k off ".v"; setAttr ".ove" yes; @@ -5887,8 +5845,8 @@ createNode nurbsCurve -n "footFront_R0_heel1Shape" -p "footFront_R0_heel"; 0 0.25 0 0 -0.25 0 ; -createNode nurbsCurve -n "footFront_R0_heel2Shape" -p "footFront_R0_heel"; - rename -uid "FB774452-4495-F40A-CF9C-2591174F800D"; +createNode nurbsCurve -n "footFront_R0_heel5Shape" -p "footFront_R0_heel"; + rename -uid "6820DF11-47FE-DF15-D9E6-D7A020C74C96"; setAttr ".ihi" 0; setAttr -k off ".v"; setAttr ".ove" yes; @@ -5900,8 +5858,8 @@ createNode nurbsCurve -n "footFront_R0_heel2Shape" -p "footFront_R0_heel"; 0 0 0.25 0 0 -0.25 ; -createNode nurbsCurve -n "footFront_R0_heel3Shape" -p "footFront_R0_heel"; - rename -uid "4C4CF61E-4289-F971-EFF9-B1A2325B4D24"; +createNode nurbsCurve -n "footFront_R0_heel6Shape" -p "footFront_R0_heel"; + rename -uid "6769CAD5-490D-5E2B-B179-B5B2C633B885"; setAttr ".ihi" 0; setAttr -k off ".v"; setAttr ".ove" yes; @@ -5918,8 +5876,8 @@ createNode nurbsCurve -n "footFront_R0_heel3Shape" -p "footFront_R0_heel"; 0 -0.1875 0 -0.1875 0 0 ; -createNode nurbsCurve -n "footFront_R0_heel3_0crvShape" -p "footFront_R0_heel"; - rename -uid "AA893B58-4BB2-E7F5-FEBD-309E70CB6AF2"; +createNode nurbsCurve -n "footFront_R0_heel6_0crvShape" -p "footFront_R0_heel"; + rename -uid "957C6DC0-4507-2BA9-95AB-26AFC11C5771"; setAttr ".ihi" 0; setAttr -k off ".v"; setAttr ".ove" yes; @@ -5936,8 +5894,8 @@ createNode nurbsCurve -n "footFront_R0_heel3_0crvShape" -p "footFront_R0_heel"; 0 0 -0.1875 -0.1875 0 0 ; -createNode nurbsCurve -n "footFront_R0_heel3_1crvShape" -p "footFront_R0_heel"; - rename -uid "51FD4D10-4680-EDA3-BACE-D098B299D272"; +createNode nurbsCurve -n "footFront_R0_heel6_1crvShape" -p "footFront_R0_heel"; + rename -uid "1F60AA1D-4F0B-12B7-536A-2A9C9A404453"; setAttr ".ihi" 0; setAttr -k off ".v"; setAttr ".ove" yes; @@ -5955,10 +5913,10 @@ createNode nurbsCurve -n "footFront_R0_heel3_1crvShape" -p "footFront_R0_heel"; 0 0 -0.1875 ; createNode transform -n "footFront_R0_outpivot" -p "footFront_R0_root"; - rename -uid "D5AC151D-4434-9727-3276-6396049BBE87"; + rename -uid "7E36FAF5-4976-4020-1B77-42A5ACFA2B26"; addAttr -ci true -sn "isGearGuide" -ln "isGearGuide" -dv 1 -min 0 -max 1 -at "bool"; setAttr -k off -cb on ".v"; - setAttr ".t" -type "double3" 1.1000376131120593 -0.31771180755404999 0.69157185350466577 ; + setAttr ".t" -type "double3" 1.1000376131120611 -0.31771180755405032 0.69157185350466932 ; setAttr -k off -cb on ".tx"; setAttr -k off -cb on ".ty"; setAttr -k off -cb on ".tz"; @@ -5966,12 +5924,12 @@ createNode transform -n "footFront_R0_outpivot" -p "footFront_R0_root"; setAttr -k off -cb on ".ry"; setAttr -k off -cb on ".rz"; setAttr -cb on ".ro"; - setAttr ".s" -type "double3" 1 1.0000000000000004 1.0000000000000007 ; + setAttr ".s" -type "double3" 0.99999999999999989 1.0000000000000004 1.0000000000000004 ; setAttr -k off -cb on ".sx"; setAttr -k off -cb on ".sy"; setAttr -k off -cb on ".sz"; createNode nurbsCurve -n "footFront_R0_outpivotShape" -p "footFront_R0_outpivot"; - rename -uid "C3C99581-4564-BFA3-E59F-BFB97AB22F87"; + rename -uid "35B9798B-4553-7D19-9EFA-EE8029336FC5"; setAttr ".ihi" 0; setAttr -k off ".v"; setAttr ".ove" yes; @@ -5983,8 +5941,8 @@ createNode nurbsCurve -n "footFront_R0_outpivotShape" -p "footFront_R0_outpivot" 0.25 0 0 -0.25 0 0 ; -createNode nurbsCurve -n "footFront_R0_outpivot1Shape" -p "footFront_R0_outpivot"; - rename -uid "2BF6E798-441F-800A-57A5-3B824C287DB3"; +createNode nurbsCurve -n "footFront_R0_outpivot4Shape" -p "footFront_R0_outpivot"; + rename -uid "FEF23520-41CD-77D4-2238-77800EC5CDCA"; setAttr ".ihi" 0; setAttr -k off ".v"; setAttr ".ove" yes; @@ -5996,8 +5954,8 @@ createNode nurbsCurve -n "footFront_R0_outpivot1Shape" -p "footFront_R0_outpivot 0 0.25 0 0 -0.25 0 ; -createNode nurbsCurve -n "footFront_R0_outpivot2Shape" -p "footFront_R0_outpivot"; - rename -uid "54DE553E-40F1-FDCB-3B6F-37A1AE918D24"; +createNode nurbsCurve -n "footFront_R0_outpivot5Shape" -p "footFront_R0_outpivot"; + rename -uid "A048245F-4ED6-5960-B68C-99BC99532345"; setAttr ".ihi" 0; setAttr -k off ".v"; setAttr ".ove" yes; @@ -6009,8 +5967,8 @@ createNode nurbsCurve -n "footFront_R0_outpivot2Shape" -p "footFront_R0_outpivot 0 0 0.25 0 0 -0.25 ; -createNode nurbsCurve -n "footFront_R0_outpivot3Shape" -p "footFront_R0_outpivot"; - rename -uid "28D0E9CF-48F0-6C40-7292-259154B0AFF0"; +createNode nurbsCurve -n "footFront_R0_outpivot6Shape" -p "footFront_R0_outpivot"; + rename -uid "4DF6D918-4978-6B70-185C-E1890E7D589E"; setAttr ".ihi" 0; setAttr -k off ".v"; setAttr ".ove" yes; @@ -6027,8 +5985,8 @@ createNode nurbsCurve -n "footFront_R0_outpivot3Shape" -p "footFront_R0_outpivot 0 -0.1875 0 -0.1875 0 0 ; -createNode nurbsCurve -n "footFront_R0_outpivot3_0crvShape" -p "footFront_R0_outpivot"; - rename -uid "CE02B642-4C97-0518-3CD5-DFA502D1611C"; +createNode nurbsCurve -n "footFront_R0_outpivot6_0crvShape" -p "footFront_R0_outpivot"; + rename -uid "ABD331FD-4135-0B73-CA3E-EBA4411CFFE9"; setAttr ".ihi" 0; setAttr -k off ".v"; setAttr ".ove" yes; @@ -6045,8 +6003,8 @@ createNode nurbsCurve -n "footFront_R0_outpivot3_0crvShape" -p "footFront_R0_out 0 0 -0.1875 -0.1875 0 0 ; -createNode nurbsCurve -n "footFront_R0_outpivot3_1crvShape" -p "footFront_R0_outpivot"; - rename -uid "79C0EE33-4816-DBF5-BE46-27B0802FDBC7"; +createNode nurbsCurve -n "footFront_R0_outpivot6_1crvShape" -p "footFront_R0_outpivot"; + rename -uid "3A1F448B-413D-5FC2-8A21-0DBDA33A4821"; setAttr ".ihi" 0; setAttr -k off ".v"; setAttr ".ove" yes; @@ -6064,10 +6022,10 @@ createNode nurbsCurve -n "footFront_R0_outpivot3_1crvShape" -p "footFront_R0_out 0 0 -0.1875 ; createNode transform -n "footFront_R0_inpivot" -p "footFront_R0_root"; - rename -uid "1A3B79BC-4FDB-2A7C-AD2C-BF9AE698DC2F"; + rename -uid "09C7854D-4271-6379-78FD-FB8FA490257E"; addAttr -ci true -sn "isGearGuide" -ln "isGearGuide" -dv 1 -min 0 -max 1 -at "bool"; setAttr -k off -cb on ".v"; - setAttr ".t" -type "double3" -1.0162439288722949 -0.31771180755405037 0.86340011285664531 ; + setAttr ".t" -type "double3" -1.0162439288722931 -0.31771180755405054 0.86340011285664531 ; setAttr -k off -cb on ".tx"; setAttr -k off -cb on ".ty"; setAttr -k off -cb on ".tz"; @@ -6075,12 +6033,12 @@ createNode transform -n "footFront_R0_inpivot" -p "footFront_R0_root"; setAttr -k off -cb on ".ry"; setAttr -k off -cb on ".rz"; setAttr -cb on ".ro"; - setAttr ".s" -type "double3" 1 1.0000000000000004 1.0000000000000007 ; + setAttr ".s" -type "double3" 0.99999999999999989 1.0000000000000004 1.0000000000000004 ; setAttr -k off -cb on ".sx"; setAttr -k off -cb on ".sy"; setAttr -k off -cb on ".sz"; createNode nurbsCurve -n "footFront_R0_inpivotShape" -p "footFront_R0_inpivot"; - rename -uid "FD61D5FC-4AAF-4A84-3C79-6D9A1314C6B4"; + rename -uid "5982959D-480F-A903-FA9B-2E8FF5DAB4B2"; setAttr ".ihi" 0; setAttr -k off ".v"; setAttr ".ove" yes; @@ -6092,8 +6050,8 @@ createNode nurbsCurve -n "footFront_R0_inpivotShape" -p "footFront_R0_inpivot"; 0.25 0 0 -0.25 0 0 ; -createNode nurbsCurve -n "footFront_R0_inpivot1Shape" -p "footFront_R0_inpivot"; - rename -uid "2EDEB4DD-41E3-A83C-427F-599002C58472"; +createNode nurbsCurve -n "footFront_R0_inpivot4Shape" -p "footFront_R0_inpivot"; + rename -uid "B2D5A66D-4C31-7BEE-7E3A-B7ACF6D1B6DB"; setAttr ".ihi" 0; setAttr -k off ".v"; setAttr ".ove" yes; @@ -6105,8 +6063,8 @@ createNode nurbsCurve -n "footFront_R0_inpivot1Shape" -p "footFront_R0_inpivot"; 0 0.25 0 0 -0.25 0 ; -createNode nurbsCurve -n "footFront_R0_inpivot2Shape" -p "footFront_R0_inpivot"; - rename -uid "6E25A42A-484A-A004-AD6A-418D6D8ECB68"; +createNode nurbsCurve -n "footFront_R0_inpivot5Shape" -p "footFront_R0_inpivot"; + rename -uid "03A28E23-4073-0132-AE46-6795028CD56C"; setAttr ".ihi" 0; setAttr -k off ".v"; setAttr ".ove" yes; @@ -6118,8 +6076,8 @@ createNode nurbsCurve -n "footFront_R0_inpivot2Shape" -p "footFront_R0_inpivot"; 0 0 0.25 0 0 -0.25 ; -createNode nurbsCurve -n "footFront_R0_inpivot3Shape" -p "footFront_R0_inpivot"; - rename -uid "837E93D5-4541-747D-7088-9A8BB5A80BD4"; +createNode nurbsCurve -n "footFront_R0_inpivot6Shape" -p "footFront_R0_inpivot"; + rename -uid "E9D820AC-4BA7-66F6-ACF2-849D38FCFBC2"; setAttr ".ihi" 0; setAttr -k off ".v"; setAttr ".ove" yes; @@ -6136,8 +6094,8 @@ createNode nurbsCurve -n "footFront_R0_inpivot3Shape" -p "footFront_R0_inpivot"; 0 -0.1875 0 -0.1875 0 0 ; -createNode nurbsCurve -n "footFront_R0_inpivot3_0crvShape" -p "footFront_R0_inpivot"; - rename -uid "7CAA3DE6-4893-C174-0516-4998704AA54A"; +createNode nurbsCurve -n "footFront_R0_inpivot6_0crvShape" -p "footFront_R0_inpivot"; + rename -uid "B72209C6-486A-74FA-1853-96A250F0478E"; setAttr ".ihi" 0; setAttr -k off ".v"; setAttr ".ove" yes; @@ -6154,8 +6112,8 @@ createNode nurbsCurve -n "footFront_R0_inpivot3_0crvShape" -p "footFront_R0_inpi 0 0 -0.1875 -0.1875 0 0 ; -createNode nurbsCurve -n "footFront_R0_inpivot3_1crvShape" -p "footFront_R0_inpivot"; - rename -uid "267AB165-43B5-1970-05C1-37B5BE3E2327"; +createNode nurbsCurve -n "footFront_R0_inpivot6_1crvShape" -p "footFront_R0_inpivot"; + rename -uid "171E3CD9-4490-23FB-7320-A6A91DF045D7"; setAttr ".ihi" 0; setAttr -k off ".v"; setAttr ".ove" yes; @@ -6173,19 +6131,19 @@ createNode nurbsCurve -n "footFront_R0_inpivot3_1crvShape" -p "footFront_R0_inpi 0 0 -0.1875 ; createNode transform -n "footFront_R0_1" -p "footFront_R0_root"; - rename -uid "7DB7FFA1-4403-F86B-8D79-5A8945265C3D"; + rename -uid "95B0821B-462E-A628-2D50-9E8CCE90D7C7"; setAttr ".ovdt" 1; setAttr ".ove" yes; - setAttr ".t" -type "double3" -7.3687973355373479 -0.60300743522685085 -16.239037496288905 ; - setAttr ".r" -type "double3" 0 180 0 ; - setAttr ".s" -type "double3" 7.9431701648148074 7.9431701648148074 -7.9431701648148092 ; + setAttr ".t" -type "double3" -7.3687973355373444 -0.60300743522684541 -16.239037496288905 ; + setAttr ".r" -type "double3" 0 179.99999999999997 0 ; + setAttr ".s" -type "double3" 7.9431701648148065 7.9431701648148074 -7.9431701648148083 ; createNode nurbsCurve -n "footFront_R0_Shape1" -p "footFront_R0_1"; - rename -uid "A95942CB-48FC-22AB-22CC-D0836A6C1952"; + rename -uid "0FE07C2B-4A5B-7595-14F4-A38E77D30A2A"; setAttr -k off ".v"; setAttr -s 4 ".iog[0].og"; setAttr ".tw" yes; createNode nurbsCurve -n "footFront_R0_Shape1Orig" -p "footFront_R0_1"; - rename -uid "B48FDC01-484D-D04A-F6D2-EA96341855C6"; + rename -uid "7634BE0F-4FBA-B891-21E3-03B437A3B16F"; setAttr -k off ".v"; setAttr ".io" yes; setAttr ".cc" -type "nurbsCurve" @@ -6199,7 +6157,7 @@ createNode nurbsCurve -n "footFront_R0_Shape1Orig" -p "footFront_R0_1"; 0 0 0 ; createNode transform -n "frontLegUI_R0_root" -p "footFront_R0_root"; - rename -uid "810383A8-4A0E-C921-F555-59856745D311"; + rename -uid "24E5FD72-4FE1-F591-A5DB-92B7217D0334"; addAttr -ci true -sn "isGearGuide" -ln "isGearGuide" -dv 1 -min 0 -max 1 -at "bool"; addAttr -ci true -sn "comp_type" -ln "comp_type" -dt "string"; addAttr -ci true -sn "comp_name" -ln "comp_name" -dt "string"; @@ -6211,7 +6169,7 @@ createNode transform -n "frontLegUI_R0_root" -p "footFront_R0_root"; addAttr -ci true -sn "icon" -ln "icon" -dt "string"; addAttr -ci true -sn "ikrefarray" -ln "ikrefarray" -dt "string"; addAttr -ci true -sn "joint" -ln "joint" -min 0 -max 1 -at "bool"; - addAttr -ci true -sn "uniScale" -ln "uniScale" -min 0 -max 1 -at "bool"; + addAttr -ci true -sn "uniScale" -ln "uniScale" -dv 1 -min 0 -max 1 -at "bool"; addAttr -ci true -sn "k_tx" -ln "k_tx" -min 0 -max 1 -at "bool"; addAttr -ci true -sn "k_ty" -ln "k_ty" -min 0 -max 1 -at "bool"; addAttr -ci true -sn "k_tz" -ln "k_tz" -min 0 -max 1 -at "bool"; @@ -6223,12 +6181,14 @@ createNode transform -n "frontLegUI_R0_root" -p "footFront_R0_root"; addAttr -ci true -sn "k_sy" -ln "k_sy" -min 0 -max 1 -at "bool"; addAttr -ci true -sn "k_sz" -ln "k_sz" -min 0 -max 1 -at "bool"; addAttr -ci true -sn "default_rotorder" -ln "default_rotorder" -min 0 -max 5 -at "long"; - addAttr -ci true -sn "neutralRotation" -ln "neutralRotation" -min 0 -max 1 -at "bool"; - addAttr -ci true -sn "ctlSize" -ln "ctlSize" -at "double"; + addAttr -ci true -sn "neutralRotation" -ln "neutralRotation" -dv 1 -min 0 -max 1 + -at "bool"; + addAttr -ci true -sn "mirrorBehaviour" -ln "mirrorBehaviour" -min 0 -max 1 -at "bool"; + addAttr -ci true -sn "ctlSize" -ln "ctlSize" -dv 0.5 -at "double"; addAttr -ci true -sn "useIndex" -ln "useIndex" -min 0 -max 1 -at "bool"; - addAttr -ci true -sn "parentJointIndex" -ln "parentJointIndex" -at "long"; + addAttr -ci true -sn "parentJointIndex" -ln "parentJointIndex" -dv -1 -at "long"; setAttr -k off -cb on ".v"; - setAttr ".t" -type "double3" 10.017876024668173 5.4248605945583162 2.5678955088138089 ; + setAttr ".t" -type "double3" 10.017876024668176 5.4248605945583135 2.5678955088138089 ; setAttr -k off -cb on ".tx"; setAttr -k off -cb on ".ty"; setAttr -k off -cb on ".tz"; @@ -6236,7 +6196,7 @@ createNode transform -n "frontLegUI_R0_root" -p "footFront_R0_root"; setAttr -k off -cb on ".ry"; setAttr -k off -cb on ".rz"; setAttr -cb on ".ro"; - setAttr ".s" -type "double3" 7.943170164814811 7.943170164814811 7.9431701648148163 ; + setAttr ".s" -type "double3" 7.9431701648148101 7.943170164814811 7.9431701648148154 ; setAttr -k off -cb on ".sx"; setAttr -k off -cb on ".sy"; setAttr -k off -cb on ".sz"; @@ -6248,12 +6208,8 @@ createNode transform -n "frontLegUI_R0_root" -p "footFront_R0_root"; setAttr ".ctlGrp" -type "string" ""; setAttr ".icon" -type "string" "cross"; setAttr ".ikrefarray" -type "string" ""; - setAttr ".uniScale" yes; - setAttr ".neutralRotation" yes; - setAttr ".ctlSize" 0.5; - setAttr ".parentJointIndex" -1; createNode nurbsCurve -n "frontLegUI_R0_rootShape" -p "frontLegUI_R0_root"; - rename -uid "EA2B3706-42A8-27D4-1912-91A62AA75693"; + rename -uid "49DD17E8-40AE-9059-7BEA-23954B45944A"; setAttr ".ihi" 0; setAttr -k off ".v"; setAttr ".ove" yes; @@ -6265,8 +6221,8 @@ createNode nurbsCurve -n "frontLegUI_R0_rootShape" -p "frontLegUI_R0_root"; 0.25 0 0 -0.25 0 0 ; -createNode nurbsCurve -n "frontLegUI_R0_root1Shape" -p "frontLegUI_R0_root"; - rename -uid "1844F2B5-43E7-8C42-A8D7-B28886D1B4DE"; +createNode nurbsCurve -n "frontLegUI_R0_root4Shape" -p "frontLegUI_R0_root"; + rename -uid "D3564921-4F43-4D4A-4EB9-9DB6AEA53973"; setAttr ".ihi" 0; setAttr -k off ".v"; setAttr ".ove" yes; @@ -6278,8 +6234,8 @@ createNode nurbsCurve -n "frontLegUI_R0_root1Shape" -p "frontLegUI_R0_root"; 0 0.25 0 0 -0.25 0 ; -createNode nurbsCurve -n "frontLegUI_R0_root2Shape" -p "frontLegUI_R0_root"; - rename -uid "02E9DAD7-442C-1549-33C4-F4A3FDD193BF"; +createNode nurbsCurve -n "frontLegUI_R0_root5Shape" -p "frontLegUI_R0_root"; + rename -uid "32B1702F-4977-2BF3-1469-6DA430EFE380"; setAttr ".ihi" 0; setAttr -k off ".v"; setAttr ".ove" yes; @@ -6291,8 +6247,8 @@ createNode nurbsCurve -n "frontLegUI_R0_root2Shape" -p "frontLegUI_R0_root"; 0 0 0.25 0 0 -0.25 ; -createNode nurbsCurve -n "frontLegUI_R0_root3Shape" -p "frontLegUI_R0_root"; - rename -uid "C8ED4C1D-4F88-712A-BD6F-5FB7ABC91278"; +createNode nurbsCurve -n "frontLegUI_R0_root6Shape" -p "frontLegUI_R0_root"; + rename -uid "5252F7DA-487A-83A3-8DAE-808A7E70E733"; setAttr ".ihi" 0; setAttr -k off ".v"; setAttr ".ove" yes; @@ -6319,10 +6275,10 @@ createNode nurbsCurve -n "frontLegUI_R0_root3Shape" -p "frontLegUI_R0_root"; -0.125 -0.125 -0.125 ; createNode transform -n "frontLegUI_R0_sizeRef" -p "frontLegUI_R0_root"; - rename -uid "E578BAB4-4EF4-684F-9907-E6BF8970186E"; + rename -uid "DADE9129-4083-A594-3B09-3EBAADD2E898"; addAttr -ci true -sn "isGearGuide" -ln "isGearGuide" -dv 1 -min 0 -max 1 -at "bool"; setAttr -k off -cb on ".v"; - setAttr ".t" -type "double3" 4.4408920985006262e-016 3.3306690738754696e-016 1 ; + setAttr ".t" -type "double3" -4.4408920985006262e-016 1.1102230246251565e-016 1.0000000000000004 ; setAttr -k off -cb on ".tx"; setAttr -k off -cb on ".ty"; setAttr -k off -cb on ".tz"; @@ -6330,24 +6286,24 @@ createNode transform -n "frontLegUI_R0_sizeRef" -p "frontLegUI_R0_root"; setAttr -k off -cb on ".ry"; setAttr -k off -cb on ".rz"; setAttr -cb on ".ro"; - setAttr ".s" -type "double3" 0.99999999999999956 0.99999999999999967 0.99999999999999889 ; + setAttr ".s" -type "double3" 0.99999999999999944 0.99999999999999956 0.99999999999999911 ; setAttr -k off -cb on ".sx"; setAttr -k off -cb on ".sy"; setAttr -k off -cb on ".sz"; createNode transform -n "legFront_R0_crv1" -p "legFront_R0_root"; - rename -uid "CDDB0D08-4D0C-5224-1732-C9AE92C9DE58"; + rename -uid "42A978A4-4EEB-9598-1408-748B4539E735"; setAttr ".ovdt" 1; setAttr ".ove" yes; - setAttr ".t" -type "double3" -2.3211356138011685 -5.8086248814742651 -5.504506232891937 ; + setAttr ".t" -type "double3" -2.3211356138011698 -5.8086248814742634 -5.5045062328919379 ; setAttr ".r" -type "double3" 0 179.99999999999994 0 ; - setAttr ".s" -type "double3" 2.5020602842634889 2.5020602842634871 -2.5020602842634889 ; + setAttr ".s" -type "double3" 2.5020602842634889 2.5020602842634871 -2.5020602842634885 ; createNode nurbsCurve -n "legFront_R0_crvShape1" -p "legFront_R0_crv1"; - rename -uid "FF1E86F3-4F87-7E58-B5CB-26AC27D77854"; + rename -uid "EE087502-4DBC-B4EB-6ED8-F9A5D657F2CA"; setAttr -k off ".v"; setAttr -s 4 ".iog[0].og"; setAttr ".tw" yes; createNode nurbsCurve -n "legFront_R0_crvShape1Orig" -p "legFront_R0_crv1"; - rename -uid "713B7474-4B17-1E21-BB6B-6B85F5309B98"; + rename -uid "72C9CE30-4285-6A23-9753-F48DFB63063B"; setAttr -k off ".v"; setAttr ".io" yes; setAttr ".cc" -type "nurbsCurve" @@ -6361,7 +6317,7 @@ createNode nurbsCurve -n "legFront_R0_crvShape1Orig" -p "legFront_R0_crv1"; 0 0 0 ; createNode transform -n "shoulder_R0_blade" -p "shoulder_R0_root"; - rename -uid "E423A847-46E4-1F4F-C5AD-BDB9E57ED0D9"; + rename -uid "3A2B04C4-4186-886D-DEAD-48AA75346B2E"; addAttr -ci true -k true -sn "bladeRollOffset" -ln "bladeRollOffset" -at "float"; setAttr -l on -k off -cb on ".v"; setAttr -k off -cb on ".tx"; @@ -6371,13 +6327,13 @@ createNode transform -n "shoulder_R0_blade" -p "shoulder_R0_root"; setAttr -k off -cb on ".ry"; setAttr -k off -cb on ".rz"; setAttr -cb on ".ro"; - setAttr ".s" -type "double3" 1.0000000000000004 0.999999999999999 0.99999999999999922 ; + setAttr ".s" -type "double3" 1.0000000000000002 0.99999999999999878 0.999999999999999 ; setAttr -l on -k off -cb on ".sx"; setAttr -l on -k off -cb on ".sy"; setAttr -l on -k off -cb on ".sz"; setAttr -k on ".bladeRollOffset"; createNode nurbsCurve -n "shoulder_R0_bladeShape" -p "shoulder_R0_blade"; - rename -uid "A4B1FB2C-41FC-6EFF-A0D5-3BA39F9B45F1"; + rename -uid "0C637EB6-4C6C-AADC-E8BE-9D926D7A9F46"; setAttr ".ihi" 0; setAttr -k off ".v"; setAttr ".ove" yes; @@ -6391,8 +6347,8 @@ createNode nurbsCurve -n "shoulder_R0_bladeShape" -p "shoulder_R0_blade"; 0 0.42205831527236448 0 0 0 0 ; -createNode aimConstraint -n "shoulder_R0_blade_aimConstraint1" -p "shoulder_R0_blade"; - rename -uid "689D9D71-489F-B245-80C5-118F5678A17B"; +createNode aimConstraint -n "shoulder_R0_blade_aimConstraint2" -p "shoulder_R0_blade"; + rename -uid "FCF42663-4280-0146-B8D8-9CB96EF040E3"; addAttr -dcb 0 -ci true -sn "w0" -ln "shoulder_R0_0_locW0" -dv 1 -at "double"; setAttr -k on ".nds"; setAttr -k off ".v"; @@ -6407,10 +6363,10 @@ createNode aimConstraint -n "shoulder_R0_blade_aimConstraint1" -p "shoulder_R0_b setAttr -k off ".sz"; setAttr ".erp" yes; setAttr ".wut" 2; - setAttr ".rsrr" -type "double3" 3.3599751382067859 -13.53612943577315 -14.081236533000286 ; + setAttr ".rsrr" -type "double3" 3.3599751382072194 -13.536129435773134 -14.081236533000302 ; setAttr -k on ".w0"; -createNode pointConstraint -n "shoulder_R0_blade_pointConstraint1" -p "shoulder_R0_blade"; - rename -uid "C03D78F2-4DED-B1ED-86A9-BC8CB912C6BF"; +createNode pointConstraint -n "shoulder_R0_blade_pointConstraint2" -p "shoulder_R0_blade"; + rename -uid "32F81504-420E-3149-31BF-EAAB5F0ABA6E"; addAttr -dcb 0 -ci true -k true -sn "w0" -ln "shoulder_R0_rootW0" -dv 1 -min 0 -at "double"; setAttr -k on ".nds"; @@ -6428,19 +6384,19 @@ createNode pointConstraint -n "shoulder_R0_blade_pointConstraint1" -p "shoulder_ setAttr ".rst" -type "double3" 0 -4.4408920985006262e-016 0 ; setAttr -k on ".w0"; createNode transform -n "shoulder_R0_crv" -p "shoulder_R0_root"; - rename -uid "91552044-4392-BA8C-EC4A-8A8377D34205"; + rename -uid "2A548B73-47FB-3695-A4FF-548257281EF3"; setAttr ".ovdt" 1; setAttr ".ove" yes; - setAttr ".t" -type "double3" -0.095164109147563028 -2.5303629060493176 -1.9933533667490371 ; + setAttr ".t" -type "double3" -0.095164109147563708 -2.5303629060493167 -1.9933533667490371 ; setAttr ".r" -type "double3" 0 179.99999999999997 0 ; - setAttr ".s" -type "double3" 1.0000000000000007 1 -1 ; + setAttr ".s" -type "double3" 1.0000000000000007 0.99999999999999989 -1 ; createNode nurbsCurve -n "shoulder_R0_crvShape" -p "shoulder_R0_crv"; - rename -uid "3C5BE165-4AC9-8902-59ED-579E975E3F4E"; + rename -uid "EC24E0D2-4AB3-458B-998C-7F8E59FD79C1"; setAttr -k off ".v"; setAttr -s 4 ".iog[0].og"; setAttr ".tw" yes; createNode nurbsCurve -n "shoulder_R0_crvShapeOrig" -p "shoulder_R0_crv"; - rename -uid "088FDDD5-4F1A-2BFC-E939-218C6DA3DDD7"; + rename -uid "9E4F5E85-4472-91BE-FDE2-E0B50BD8C5CD"; setAttr -k off ".v"; setAttr ".io" yes; setAttr ".cc" -type "nurbsCurve" @@ -6451,7 +6407,7 @@ createNode nurbsCurve -n "shoulder_R0_crvShapeOrig" -p "shoulder_R0_crv"; 0 0 0 ; createNode transform -n "spine_C0_blade" -p "spine_C0_root"; - rename -uid "9E4715F0-4B74-6FC7-4CC2-9980467F0259"; + rename -uid "27D9D197-4948-9D90-9050-5D9C3EF8AC9A"; addAttr -ci true -k true -sn "bladeRollOffset" -ln "bladeRollOffset" -at "float"; setAttr -l on -k off -cb on ".v"; setAttr -k off -cb on ".tx"; @@ -6461,13 +6417,13 @@ createNode transform -n "spine_C0_blade" -p "spine_C0_root"; setAttr -k off -cb on ".ry"; setAttr -k off -cb on ".rz"; setAttr -cb on ".ro"; - setAttr ".s" -type "double3" 1.0000000000000013 1.0000000000000013 1 ; + setAttr ".s" -type "double3" 1.0000000000000016 1.0000000000000016 1 ; setAttr -l on -k off -cb on ".sx"; setAttr -l on -k off -cb on ".sy"; setAttr -l on -k off -cb on ".sz"; setAttr -k on ".bladeRollOffset"; createNode nurbsCurve -n "spine_C0_bladeShape" -p "spine_C0_blade"; - rename -uid "55861B4B-4531-AE15-2666-EEAD527BCDB3"; + rename -uid "5DCA5992-49B2-0D89-C3D5-9E92E3AE5D0B"; setAttr ".ihi" 0; setAttr -k off ".v"; setAttr ".ove" yes; @@ -6481,8 +6437,8 @@ createNode nurbsCurve -n "spine_C0_bladeShape" -p "spine_C0_blade"; 0 0.094773633293273707 0 0 0 0 ; -createNode aimConstraint -n "spine_C0_blade_aimConstraint7" -p "spine_C0_blade"; - rename -uid "8EBFB292-48C8-14A8-4478-6E9DCBBA88E2"; +createNode aimConstraint -n "spine_C0_blade_aimConstraint8" -p "spine_C0_blade"; + rename -uid "C77946FE-4E4D-EA8A-2084-089296B03A66"; addAttr -dcb 0 -ci true -sn "w0" -ln "spine_C0_effW0" -dv 1 -at "double"; setAttr -k on ".nds"; setAttr -k off ".v"; @@ -6497,11 +6453,11 @@ createNode aimConstraint -n "spine_C0_blade_aimConstraint7" -p "spine_C0_blade"; setAttr -k off ".sz"; setAttr ".erp" yes; setAttr ".wut" 2; - setAttr ".rsrr" -type "double3" 2.5444437451708122e-014 2.5444437451708125e-014 + setAttr ".rsrr" -type "double3" 2.5444437451708115e-014 2.5444437451708118e-014 89.999999999999986 ; setAttr -k on ".w0"; -createNode pointConstraint -n "spine_C0_blade_pointConstraint7" -p "spine_C0_blade"; - rename -uid "59DFA766-4741-63BC-07FD-B6AF151841D8"; +createNode pointConstraint -n "spine_C0_blade_pointConstraint8" -p "spine_C0_blade"; + rename -uid "369EB39A-4966-13D3-137E-A0B779AD5EFD"; addAttr -dcb 0 -ci true -k true -sn "w0" -ln "spine_C0_rootW0" -dv 1 -min 0 -at "double"; setAttr -k on ".nds"; setAttr -k off ".v"; @@ -6515,22 +6471,22 @@ createNode pointConstraint -n "spine_C0_blade_pointConstraint7" -p "spine_C0_bla setAttr -k off ".sy"; setAttr -k off ".sz"; setAttr ".erp" yes; - setAttr ".rst" -type "double3" 0 -4.4408920985006262e-016 3.9443045261050599e-031 ; + setAttr ".rst" -type "double3" 0 -4.4408920985006262e-016 3.944304526105059e-031 ; setAttr -k on ".w0"; createNode transform -n "spine_C0_crv" -p "spine_C0_root"; - rename -uid "CE0A26A5-45C7-4FD2-FFCA-228CBC0A3ABC"; + rename -uid "62811439-4938-20B0-66AA-2583F2A81B6F"; setAttr ".ovdt" 1; setAttr ".ove" yes; setAttr ".t" -type "double3" 5.1074785620942285 2.6024712577026077 -3.4239055234572094e-015 ; setAttr ".r" -type "double3" -89.999999999999986 89.999999999999957 0 ; setAttr ".s" -type "double3" 2.1102915763618237 2.1102915763618237 2.1102915763618237 ; createNode nurbsCurve -n "spine_C0_crvShape" -p "spine_C0_crv"; - rename -uid "C4BE312F-416E-4089-9555-5EB545DC88AB"; + rename -uid "EF896225-4E8B-75D8-176A-D094857742AC"; setAttr -k off ".v"; setAttr -s 4 ".iog[0].og"; setAttr ".tw" yes; createNode nurbsCurve -n "spine_C0_crvShapeOrig" -p "spine_C0_crv"; - rename -uid "BB860B9D-44F2-CBF3-0A5F-1D9B7C4437E8"; + rename -uid "8F22A56A-4145-AB51-94FA-D78A242C2D0F"; setAttr -k off ".v"; setAttr ".io" yes; setAttr ".cc" -type "nurbsCurve" @@ -6541,7 +6497,7 @@ createNode nurbsCurve -n "spine_C0_crvShapeOrig" -p "spine_C0_crv"; 0 0 0 ; createNode transform -n "legBack_L0_root" -p "spine_C0_root"; - rename -uid "BDB0EC8A-4226-38D6-D1CC-ACB702179421"; + rename -uid "DD2E660A-4823-BABF-4B24-E3A9E51D27B0"; addAttr -ci true -sn "isGearGuide" -ln "isGearGuide" -dv 1 -min 0 -max 1 -at "bool"; addAttr -ci true -sn "comp_type" -ln "comp_type" -dt "string"; addAttr -ci true -sn "comp_name" -ln "comp_name" -dt "string"; @@ -6550,21 +6506,21 @@ createNode transform -n "legBack_L0_root" -p "spine_C0_root"; addAttr -ci true -sn "connector" -ln "connector" -dt "string"; addAttr -ci true -sn "ui_host" -ln "ui_host" -dt "string"; addAttr -ci true -sn "ctlGrp" -ln "ctlGrp" -dt "string"; - addAttr -ci true -sn "blend" -ln "blend" -min 0 -max 1 -at "double"; - addAttr -ci true -sn "full3BonesIK" -ln "full3BonesIK" -min 0 -max 1 -at "double"; + addAttr -ci true -sn "blend" -ln "blend" -dv 1 -min 0 -max 1 -at "double"; + addAttr -ci true -sn "full3BonesIK" -ln "full3BonesIK" -dv 1 -min 0 -max 1 -at "double"; addAttr -ci true -sn "ikrefarray" -ln "ikrefarray" -dt "string"; addAttr -ci true -sn "upvrefarray" -ln "upvrefarray" -dt "string"; - addAttr -ci true -sn "maxstretch" -ln "maxstretch" -dv 1 -min 1 -at "double"; + addAttr -ci true -sn "maxstretch" -ln "maxstretch" -dv 1.5 -min 1 -at "double"; addAttr -ci true -k true -sn "ikSolver" -ln "ikSolver" -min 0 -max 1 -en "IK Spring:IK Rotation Plane" -at "enum"; - addAttr -ci true -sn "ikOri" -ln "ikOri" -min 0 -max 1 -at "bool"; - addAttr -ci true -sn "div0" -ln "div0" -dv 1 -min 1 -at "long"; - addAttr -ci true -sn "div1" -ln "div1" -dv 1 -min 1 -at "long"; - addAttr -ci true -sn "div2" -ln "div2" -dv 1 -min 1 -at "long"; + addAttr -ci true -sn "ikOri" -ln "ikOri" -dv 1 -min 0 -max 1 -at "bool"; + addAttr -ci true -sn "div0" -ln "div0" -dv 2 -min 1 -at "long"; + addAttr -ci true -sn "div1" -ln "div1" -dv 2 -min 1 -at "long"; + addAttr -ci true -sn "div2" -ln "div2" -dv 2 -min 1 -at "long"; addAttr -ci true -k true -sn "st_profile" -ln "st_profile" -at "double"; addAttr -ci true -k true -sn "sq_profile" -ln "sq_profile" -at "double"; addAttr -ci true -sn "useIndex" -ln "useIndex" -min 0 -max 1 -at "bool"; - addAttr -ci true -sn "parentJointIndex" -ln "parentJointIndex" -at "long"; + addAttr -ci true -sn "parentJointIndex" -ln "parentJointIndex" -dv -1 -at "long"; setAttr -k off -cb on ".v"; setAttr ".t" -type "double3" 0.21090213141047975 -0.097927178047045871 -2.6808811877076879 ; setAttr -k off -cb on ".tx"; @@ -6585,20 +6541,12 @@ createNode transform -n "legBack_L0_root" -p "spine_C0_root"; setAttr ".connector" -type "string" "standard"; setAttr ".ui_host" -type "string" "backLegUI_L0_root"; setAttr ".ctlGrp" -type "string" ""; - setAttr ".blend" 1; - setAttr ".full3BonesIK" 1; setAttr ".ikrefarray" -type "string" "local_C0_root,spine_C0_root,global_C0_root"; setAttr ".upvrefarray" -type "string" "local_C0_root,spine_C0_root,global_C0_root"; - setAttr ".maxstretch" 1.5; - setAttr ".ikOri" yes; - setAttr ".div0" 2; - setAttr ".div1" 2; - setAttr ".div2" 2; setAttr -k on ".st_profile"; setAttr -k on ".sq_profile"; - setAttr ".parentJointIndex" -1; createNode nurbsCurve -n "legBack_L0_rootShape" -p "legBack_L0_root"; - rename -uid "2D0B5578-4914-3274-19BE-CD8A6525E16B"; + rename -uid "C81F333B-41D1-DB64-B1C7-6DAE44EE110A"; setAttr ".ihi" 0; setAttr -k off ".v"; setAttr ".ove" yes; @@ -6610,8 +6558,8 @@ createNode nurbsCurve -n "legBack_L0_rootShape" -p "legBack_L0_root"; 0.25 0 0 -0.25 0 0 ; -createNode nurbsCurve -n "legBack_L0_root19Shape" -p "legBack_L0_root"; - rename -uid "552FCEF5-4FC7-AB2D-1CF7-A482821708A0"; +createNode nurbsCurve -n "legBack_L0_root22Shape" -p "legBack_L0_root"; + rename -uid "2DE918A2-45D5-F9C9-44BD-388D709D42FD"; setAttr ".ihi" 0; setAttr -k off ".v"; setAttr ".ove" yes; @@ -6623,8 +6571,8 @@ createNode nurbsCurve -n "legBack_L0_root19Shape" -p "legBack_L0_root"; 0 0.25 0 0 -0.25 0 ; -createNode nurbsCurve -n "legBack_L0_root20Shape" -p "legBack_L0_root"; - rename -uid "894AC13F-4FB1-0B7B-E0D1-669C4985C61E"; +createNode nurbsCurve -n "legBack_L0_root23Shape" -p "legBack_L0_root"; + rename -uid "ED3D07EB-4709-F76C-2EB0-3EB88D87D4F5"; setAttr ".ihi" 0; setAttr -k off ".v"; setAttr ".ove" yes; @@ -6636,8 +6584,8 @@ createNode nurbsCurve -n "legBack_L0_root20Shape" -p "legBack_L0_root"; 0 0 0.25 0 0 -0.25 ; -createNode nurbsCurve -n "legBack_L0_root21Shape" -p "legBack_L0_root"; - rename -uid "20E9000A-4F09-B0C0-266C-91AE24EE78F8"; +createNode nurbsCurve -n "legBack_L0_root24Shape" -p "legBack_L0_root"; + rename -uid "43FA7A96-48D1-64CD-A7F7-9FAC10215125"; setAttr ".ihi" 0; setAttr -k off ".v"; setAttr ".ove" yes; @@ -6664,10 +6612,10 @@ createNode nurbsCurve -n "legBack_L0_root21Shape" -p "legBack_L0_root"; -0.125 -0.125 -0.125 ; createNode transform -n "legBack_L0_knee" -p "legBack_L0_root"; - rename -uid "FF6007E8-4AE2-6631-A97B-D0820F726B92"; + rename -uid "8F12D725-417A-8B2C-D084-85B06371BE86"; addAttr -ci true -sn "isGearGuide" -ln "isGearGuide" -dv 1 -min 0 -max 1 -at "bool"; setAttr -k off -cb on ".v"; - setAttr ".t" -type "double3" 5.1070259132757201e-015 -1.1559508743798506 0.33714517700502245 ; + setAttr ".t" -type "double3" 5.1070259132757201e-015 -1.1559508743798506 0.33714517700502222 ; setAttr -l on -k off -cb on ".tx"; setAttr -k off -cb on ".ty"; setAttr -k off -cb on ".tz"; @@ -6680,7 +6628,7 @@ createNode transform -n "legBack_L0_knee" -p "legBack_L0_root"; setAttr -k off -cb on ".sy"; setAttr -k off -cb on ".sz"; createNode nurbsCurve -n "legBack_L0_kneeShape" -p "legBack_L0_knee"; - rename -uid "6C0D73CB-4E9F-ADFB-452F-0180573F9BE7"; + rename -uid "84E3EEF7-4012-66B8-D262-32BB4AC3D6B0"; setAttr ".ihi" 0; setAttr -k off ".v"; setAttr ".ove" yes; @@ -6692,8 +6640,8 @@ createNode nurbsCurve -n "legBack_L0_kneeShape" -p "legBack_L0_knee"; 0.25 0 0 -0.25 0 0 ; -createNode nurbsCurve -n "legBack_L0_knee19Shape" -p "legBack_L0_knee"; - rename -uid "0AAD4238-42D1-FBF4-25D1-EBBFEEEE978C"; +createNode nurbsCurve -n "legBack_L0_knee22Shape" -p "legBack_L0_knee"; + rename -uid "99313235-4CB5-6732-B39E-C2B535CA16DC"; setAttr ".ihi" 0; setAttr -k off ".v"; setAttr ".ove" yes; @@ -6705,8 +6653,8 @@ createNode nurbsCurve -n "legBack_L0_knee19Shape" -p "legBack_L0_knee"; 0 0.25 0 0 -0.25 0 ; -createNode nurbsCurve -n "legBack_L0_knee20Shape" -p "legBack_L0_knee"; - rename -uid "6FDD8E27-4AEA-7461-1E50-84AA6496C771"; +createNode nurbsCurve -n "legBack_L0_knee23Shape" -p "legBack_L0_knee"; + rename -uid "42C538DA-4E0E-CC8C-1BD1-4C93CC1A43C5"; setAttr ".ihi" 0; setAttr -k off ".v"; setAttr ".ove" yes; @@ -6718,8 +6666,8 @@ createNode nurbsCurve -n "legBack_L0_knee20Shape" -p "legBack_L0_knee"; 0 0 0.25 0 0 -0.25 ; -createNode nurbsCurve -n "legBack_L0_knee21Shape" -p "legBack_L0_knee"; - rename -uid "10B16924-48BE-5192-7887-34A18041759F"; +createNode nurbsCurve -n "legBack_L0_knee24Shape" -p "legBack_L0_knee"; + rename -uid "66ABD77D-4176-BE21-B210-798DD3156B06"; setAttr ".ihi" 0; setAttr -k off ".v"; setAttr ".ove" yes; @@ -6736,8 +6684,8 @@ createNode nurbsCurve -n "legBack_L0_knee21Shape" -p "legBack_L0_knee"; 0 -0.1875 0 -0.1875 0 0 ; -createNode nurbsCurve -n "legBack_L0_knee21_0crvShape" -p "legBack_L0_knee"; - rename -uid "AFE1B7EF-4CAD-885D-C87D-1D902D1823BD"; +createNode nurbsCurve -n "legBack_L0_knee24_0crvShape" -p "legBack_L0_knee"; + rename -uid "5E38A0F2-45FD-69BB-3D33-22B99D7E264F"; setAttr ".ihi" 0; setAttr -k off ".v"; setAttr ".ove" yes; @@ -6754,8 +6702,8 @@ createNode nurbsCurve -n "legBack_L0_knee21_0crvShape" -p "legBack_L0_knee"; 0 0 -0.1875 -0.1875 0 0 ; -createNode nurbsCurve -n "legBack_L0_knee21_1crvShape" -p "legBack_L0_knee"; - rename -uid "3A815501-4D30-DA5C-EC82-D187AA771307"; +createNode nurbsCurve -n "legBack_L0_knee24_1crvShape" -p "legBack_L0_knee"; + rename -uid "90CAC7AE-426A-2EA5-D559-449BF7F7A281"; setAttr ".ihi" 0; setAttr -k off ".v"; setAttr ".ove" yes; @@ -6773,10 +6721,10 @@ createNode nurbsCurve -n "legBack_L0_knee21_1crvShape" -p "legBack_L0_knee"; 0 0 -0.1875 ; createNode transform -n "legBack_L0_ankle" -p "legBack_L0_knee"; - rename -uid "8599C415-481F-B26C-72E4-E48F0CF5AB88"; + rename -uid "D7CDABAC-49F7-3341-E56F-3EB8ADA519DC"; addAttr -ci true -sn "isGearGuide" -ln "isGearGuide" -dv 1 -min 0 -max 1 -at "bool"; setAttr -k off -cb on ".v"; - setAttr ".t" -type "double3" 3.1086244689504383e-015 -1.4950431842245466 -0.57333193410462346 ; + setAttr ".t" -type "double3" 3.1086244689504383e-015 -1.4950431842245464 -0.57333193410462391 ; setAttr -l on -k off -cb on ".tx"; setAttr -k off -cb on ".ty"; setAttr -k off -cb on ".tz"; @@ -6784,12 +6732,12 @@ createNode transform -n "legBack_L0_ankle" -p "legBack_L0_knee"; setAttr -l on -k off -cb on ".ry"; setAttr -l on -k off -cb on ".rz"; setAttr -cb on ".ro"; - setAttr ".s" -type "double3" 1.0000000000000004 1.0000000000000002 1.0000000000000002 ; + setAttr ".s" -type "double3" 1.0000000000000007 1.0000000000000004 1.0000000000000004 ; setAttr -k off -cb on ".sx"; setAttr -k off -cb on ".sy"; setAttr -k off -cb on ".sz"; createNode nurbsCurve -n "legBack_L0_ankleShape" -p "legBack_L0_ankle"; - rename -uid "8D6DCCED-4A63-E7B5-F2B5-868635DF7F8A"; + rename -uid "9997E525-47B4-7377-5EA6-1782F766C6A0"; setAttr ".ihi" 0; setAttr -k off ".v"; setAttr ".ove" yes; @@ -6801,8 +6749,8 @@ createNode nurbsCurve -n "legBack_L0_ankleShape" -p "legBack_L0_ankle"; 0.25 0 0 -0.25 0 0 ; -createNode nurbsCurve -n "legBack_L0_ankle19Shape" -p "legBack_L0_ankle"; - rename -uid "1B23A36E-40F4-630D-17FA-598A374845DA"; +createNode nurbsCurve -n "legBack_L0_ankle22Shape" -p "legBack_L0_ankle"; + rename -uid "51734489-48A9-A80A-A452-CDAFEC5A4280"; setAttr ".ihi" 0; setAttr -k off ".v"; setAttr ".ove" yes; @@ -6814,8 +6762,8 @@ createNode nurbsCurve -n "legBack_L0_ankle19Shape" -p "legBack_L0_ankle"; 0 0.25 0 0 -0.25 0 ; -createNode nurbsCurve -n "legBack_L0_ankle20Shape" -p "legBack_L0_ankle"; - rename -uid "55DD6972-4485-D83B-D8EF-11A4B872C036"; +createNode nurbsCurve -n "legBack_L0_ankle23Shape" -p "legBack_L0_ankle"; + rename -uid "43FEC98F-4EA8-386D-A44E-A6A73DC1377B"; setAttr ".ihi" 0; setAttr -k off ".v"; setAttr ".ove" yes; @@ -6827,8 +6775,8 @@ createNode nurbsCurve -n "legBack_L0_ankle20Shape" -p "legBack_L0_ankle"; 0 0 0.25 0 0 -0.25 ; -createNode nurbsCurve -n "legBack_L0_ankle21Shape" -p "legBack_L0_ankle"; - rename -uid "0F3425A0-4DF4-AFED-05FE-F6A874526D57"; +createNode nurbsCurve -n "legBack_L0_ankle24Shape" -p "legBack_L0_ankle"; + rename -uid "0D5C4EA8-4968-05FF-EA5F-DDB57765AF63"; setAttr ".ihi" 0; setAttr -k off ".v"; setAttr ".ove" yes; @@ -6845,8 +6793,8 @@ createNode nurbsCurve -n "legBack_L0_ankle21Shape" -p "legBack_L0_ankle"; 0 -0.1875 0 -0.1875 0 0 ; -createNode nurbsCurve -n "legBack_L0_ankle21_0crvShape" -p "legBack_L0_ankle"; - rename -uid "4DD8AA9D-43EE-61EF-3EA3-56928542F858"; +createNode nurbsCurve -n "legBack_L0_ankle24_0crvShape" -p "legBack_L0_ankle"; + rename -uid "348FB0F8-4CF5-CFF0-C1F4-828CD1F68CD0"; setAttr ".ihi" 0; setAttr -k off ".v"; setAttr ".ove" yes; @@ -6863,8 +6811,8 @@ createNode nurbsCurve -n "legBack_L0_ankle21_0crvShape" -p "legBack_L0_ankle"; 0 0 -0.1875 -0.1875 0 0 ; -createNode nurbsCurve -n "legBack_L0_ankle21_1crvShape" -p "legBack_L0_ankle"; - rename -uid "910719FA-4936-4AEC-630A-B894486AF6EA"; +createNode nurbsCurve -n "legBack_L0_ankle24_1crvShape" -p "legBack_L0_ankle"; + rename -uid "313967FB-499A-A5FE-6F1D-42A370979EF8"; setAttr ".ihi" 0; setAttr -k off ".v"; setAttr ".ove" yes; @@ -6882,10 +6830,10 @@ createNode nurbsCurve -n "legBack_L0_ankle21_1crvShape" -p "legBack_L0_ankle"; 0 0 -0.1875 ; createNode transform -n "legBack_L0_foot" -p "legBack_L0_ankle"; - rename -uid "403C2BAD-462D-AF1B-A32D-1BAA8241577C"; + rename -uid "521D11EE-4FDB-2007-F635-DC963A692F47"; addAttr -ci true -sn "isGearGuide" -ln "isGearGuide" -dv 1 -min 0 -max 1 -at "bool"; setAttr -k off -cb on ".v"; - setAttr ".t" -type "double3" 1.5543122344752192e-015 -0.5480558075197921 0.15050522089872964 ; + setAttr ".t" -type "double3" 1.5543122344752192e-015 -0.54805580751979233 0.15050522089872986 ; setAttr -l on -k off -cb on ".tx"; setAttr -k off -cb on ".ty"; setAttr -k off -cb on ".tz"; @@ -6893,12 +6841,12 @@ createNode transform -n "legBack_L0_foot" -p "legBack_L0_ankle"; setAttr -l on -k off -cb on ".ry"; setAttr -l on -k off -cb on ".rz"; setAttr -cb on ".ro"; - setAttr ".s" -type "double3" 0.99999999999999956 1.0000000000000004 1.0000000000000004 ; + setAttr ".s" -type "double3" 0.99999999999999944 1.0000000000000004 1.0000000000000004 ; setAttr -k off -cb on ".sx"; setAttr -k off -cb on ".sy"; setAttr -k off -cb on ".sz"; createNode nurbsCurve -n "legBack_L0_footShape" -p "legBack_L0_foot"; - rename -uid "0581E5CF-4B68-0B37-DB88-F7B321A37517"; + rename -uid "001A12A6-44A3-45AB-0458-F796BE2F2CAC"; setAttr ".ihi" 0; setAttr -k off ".v"; setAttr ".ove" yes; @@ -6910,8 +6858,8 @@ createNode nurbsCurve -n "legBack_L0_footShape" -p "legBack_L0_foot"; 0.25 0 0 -0.25 0 0 ; -createNode nurbsCurve -n "legBack_L0_foot19Shape" -p "legBack_L0_foot"; - rename -uid "88E59D56-4D61-F7E0-4C93-27A413048C82"; +createNode nurbsCurve -n "legBack_L0_foot22Shape" -p "legBack_L0_foot"; + rename -uid "BFB2E7D7-447B-3A08-F16B-F6A35488CEA5"; setAttr ".ihi" 0; setAttr -k off ".v"; setAttr ".ove" yes; @@ -6923,8 +6871,8 @@ createNode nurbsCurve -n "legBack_L0_foot19Shape" -p "legBack_L0_foot"; 0 0.25 0 0 -0.25 0 ; -createNode nurbsCurve -n "legBack_L0_foot20Shape" -p "legBack_L0_foot"; - rename -uid "28C2B126-45F5-0406-675F-39A414EB5BF6"; +createNode nurbsCurve -n "legBack_L0_foot23Shape" -p "legBack_L0_foot"; + rename -uid "56612704-49B2-967D-77AF-0295294D85AF"; setAttr ".ihi" 0; setAttr -k off ".v"; setAttr ".ove" yes; @@ -6936,8 +6884,8 @@ createNode nurbsCurve -n "legBack_L0_foot20Shape" -p "legBack_L0_foot"; 0 0 0.25 0 0 -0.25 ; -createNode nurbsCurve -n "legBack_L0_foot21Shape" -p "legBack_L0_foot"; - rename -uid "0AA4151B-4E20-6E1A-400C-A88C162CDAFE"; +createNode nurbsCurve -n "legBack_L0_foot24Shape" -p "legBack_L0_foot"; + rename -uid "134626B9-4982-4B1A-33BA-8A9878FC196C"; setAttr ".ihi" 0; setAttr -k off ".v"; setAttr ".ove" yes; @@ -6954,8 +6902,8 @@ createNode nurbsCurve -n "legBack_L0_foot21Shape" -p "legBack_L0_foot"; 0 -0.1875 0 -0.1875 0 0 ; -createNode nurbsCurve -n "legBack_L0_foot21_0crvShape" -p "legBack_L0_foot"; - rename -uid "CAF2DE47-464A-C5AD-BF0C-ABAAE0A92E1D"; +createNode nurbsCurve -n "legBack_L0_foot24_0crvShape" -p "legBack_L0_foot"; + rename -uid "131DE8F0-416A-7CC0-6BBC-30BC7970605E"; setAttr ".ihi" 0; setAttr -k off ".v"; setAttr ".ove" yes; @@ -6972,8 +6920,8 @@ createNode nurbsCurve -n "legBack_L0_foot21_0crvShape" -p "legBack_L0_foot"; 0 0 -0.1875 -0.1875 0 0 ; -createNode nurbsCurve -n "legBack_L0_foot21_1crvShape" -p "legBack_L0_foot"; - rename -uid "8F8A2E9F-4E8E-F394-7181-B0A6F20A73CF"; +createNode nurbsCurve -n "legBack_L0_foot24_1crvShape" -p "legBack_L0_foot"; + rename -uid "38EF279C-4A0C-901E-91BE-2BB12B68590D"; setAttr ".ihi" 0; setAttr -k off ".v"; setAttr ".ove" yes; @@ -6991,10 +6939,10 @@ createNode nurbsCurve -n "legBack_L0_foot21_1crvShape" -p "legBack_L0_foot"; 0 0 -0.1875 ; createNode transform -n "legBack_L0_eff" -p "legBack_L0_foot"; - rename -uid "76858053-47A1-67A7-F211-A899D5E32BBA"; + rename -uid "57B35BA6-481F-834E-86EE-71A3B79FD9A7"; addAttr -ci true -sn "isGearGuide" -ln "isGearGuide" -dv 1 -min 0 -max 1 -at "bool"; setAttr -k off -cb on ".v"; - setAttr ".t" -type "double3" 2.6645352591003757e-015 7.4940054162198066e-016 0.28135643819707434 ; + setAttr ".t" -type "double3" 2.6645352591003757e-015 8.4654505627668186e-016 0.2813564381970739 ; setAttr -k off -cb on ".tx"; setAttr -k off -cb on ".ty"; setAttr -k off -cb on ".tz"; @@ -7002,12 +6950,12 @@ createNode transform -n "legBack_L0_eff" -p "legBack_L0_foot"; setAttr -k off -cb on ".ry"; setAttr -k off -cb on ".rz"; setAttr -cb on ".ro"; - setAttr ".s" -type "double3" 0.99999999999999989 0.99999999999999911 0.99999999999999878 ; + setAttr ".s" -type "double3" 0.99999999999999989 0.99999999999999878 0.99999999999999845 ; setAttr -k off -cb on ".sx"; setAttr -k off -cb on ".sy"; setAttr -k off -cb on ".sz"; createNode nurbsCurve -n "legBack_L0_effShape" -p "legBack_L0_eff"; - rename -uid "1F828126-4967-081D-FC74-FE9FA07564DF"; + rename -uid "0802E2EB-4E53-1358-FFE7-1B941DA57CD0"; setAttr ".ihi" 0; setAttr -k off ".v"; setAttr ".ove" yes; @@ -7019,8 +6967,8 @@ createNode nurbsCurve -n "legBack_L0_effShape" -p "legBack_L0_eff"; 0.25 0 0 -0.25 0 0 ; -createNode nurbsCurve -n "legBack_L0_eff19Shape" -p "legBack_L0_eff"; - rename -uid "2B47682E-4E39-912A-B862-7894373DEC57"; +createNode nurbsCurve -n "legBack_L0_eff22Shape" -p "legBack_L0_eff"; + rename -uid "2ADBCFBD-4789-C2FE-E0E0-05AC76675D6B"; setAttr ".ihi" 0; setAttr -k off ".v"; setAttr ".ove" yes; @@ -7032,8 +6980,8 @@ createNode nurbsCurve -n "legBack_L0_eff19Shape" -p "legBack_L0_eff"; 0 0.25 0 0 -0.25 0 ; -createNode nurbsCurve -n "legBack_L0_eff20Shape" -p "legBack_L0_eff"; - rename -uid "94E13331-4069-1BA1-4337-75A6928F80DE"; +createNode nurbsCurve -n "legBack_L0_eff23Shape" -p "legBack_L0_eff"; + rename -uid "882AD08E-458A-FB13-5126-038680AD100F"; setAttr ".ihi" 0; setAttr -k off ".v"; setAttr ".ove" yes; @@ -7045,8 +6993,8 @@ createNode nurbsCurve -n "legBack_L0_eff20Shape" -p "legBack_L0_eff"; 0 0 0.25 0 0 -0.25 ; -createNode nurbsCurve -n "legBack_L0_eff21Shape" -p "legBack_L0_eff"; - rename -uid "B951A57D-4F7D-FE34-2FF4-069857E5ECBF"; +createNode nurbsCurve -n "legBack_L0_eff24Shape" -p "legBack_L0_eff"; + rename -uid "99A5AE21-4DBA-B59F-FA77-3392B6A88043"; setAttr ".ihi" 0; setAttr -k off ".v"; setAttr ".ove" yes; @@ -7063,8 +7011,8 @@ createNode nurbsCurve -n "legBack_L0_eff21Shape" -p "legBack_L0_eff"; 0 -0.1875 0 -0.1875 0 0 ; -createNode nurbsCurve -n "legBack_L0_eff21_0crvShape" -p "legBack_L0_eff"; - rename -uid "44A68BD1-4FD9-9DCE-2263-169687549E94"; +createNode nurbsCurve -n "legBack_L0_eff24_0crvShape" -p "legBack_L0_eff"; + rename -uid "4A878836-408C-9C09-A7A6-9494163D11AA"; setAttr ".ihi" 0; setAttr -k off ".v"; setAttr ".ove" yes; @@ -7081,8 +7029,8 @@ createNode nurbsCurve -n "legBack_L0_eff21_0crvShape" -p "legBack_L0_eff"; 0 0 -0.1875 -0.1875 0 0 ; -createNode nurbsCurve -n "legBack_L0_eff21_1crvShape" -p "legBack_L0_eff"; - rename -uid "C97D7B08-41EE-F696-56E5-69B8E322815F"; +createNode nurbsCurve -n "legBack_L0_eff24_1crvShape" -p "legBack_L0_eff"; + rename -uid "B8BF2770-477B-DED0-2294-3A95E48EDCB1"; setAttr ".ihi" 0; setAttr -k off ".v"; setAttr ".ove" yes; @@ -7100,7 +7048,7 @@ createNode nurbsCurve -n "legBack_L0_eff21_1crvShape" -p "legBack_L0_eff"; 0 0 -0.1875 ; createNode transform -n "footBack_L0_root" -p "legBack_L0_foot"; - rename -uid "91977E37-4189-6EEA-9934-BF83082C8AF4"; + rename -uid "F4EBA4A9-4985-5416-EDE5-238E202ED7F2"; addAttr -ci true -sn "isGearGuide" -ln "isGearGuide" -dv 1 -min 0 -max 1 -at "bool"; addAttr -ci true -sn "comp_type" -ln "comp_type" -dt "string"; addAttr -ci true -sn "comp_name" -ln "comp_name" -dt "string"; @@ -7109,11 +7057,11 @@ createNode transform -n "footBack_L0_root" -p "legBack_L0_foot"; addAttr -ci true -sn "connector" -ln "connector" -dt "string"; addAttr -ci true -sn "ui_host" -ln "ui_host" -dt "string"; addAttr -ci true -sn "ctlGrp" -ln "ctlGrp" -dt "string"; - addAttr -ci true -sn "useRollCtl" -ln "useRollCtl" -min 0 -max 1 -at "bool"; + addAttr -ci true -sn "useRollCtl" -ln "useRollCtl" -dv 1 -min 0 -max 1 -at "bool"; addAttr -ci true -sn "useIndex" -ln "useIndex" -min 0 -max 1 -at "bool"; - addAttr -ci true -sn "parentJointIndex" -ln "parentJointIndex" -at "long"; + addAttr -ci true -sn "parentJointIndex" -ln "parentJointIndex" -dv -1 -at "long"; setAttr -k off -cb on ".v"; - setAttr ".t" -type "double3" 1.5543122344752192e-015 7.9103390504542404e-016 -6.6613381477509392e-016 ; + setAttr ".t" -type "double3" 1.5543122344752192e-015 9.0205620750793969e-016 -1.1102230246251565e-015 ; setAttr -k off -cb on ".tx"; setAttr -k off -cb on ".ty"; setAttr -k off -cb on ".tz"; @@ -7121,7 +7069,7 @@ createNode transform -n "footBack_L0_root" -p "legBack_L0_foot"; setAttr -k off -cb on ".ry"; setAttr -k off -cb on ".rz"; setAttr -cb on ".ro"; - setAttr ".s" -type "double3" 0.16356254765398098 0.16356254765398087 0.16356254765398079 ; + setAttr ".s" -type "double3" 0.16356254765398098 0.16356254765398082 0.16356254765398076 ; setAttr -k off -cb on ".sx"; setAttr -k off -cb on ".sy"; setAttr -k off -cb on ".sz"; @@ -7131,10 +7079,8 @@ createNode transform -n "footBack_L0_root" -p "legBack_L0_foot"; setAttr ".connector" -type "string" "leg_3jnt_01"; setAttr ".ui_host" -type "string" "backLegUI_L0_root"; setAttr ".ctlGrp" -type "string" ""; - setAttr ".useRollCtl" yes; - setAttr ".parentJointIndex" -1; createNode nurbsCurve -n "footBack_L0_rootShape" -p "footBack_L0_root"; - rename -uid "04D0109E-4E1A-643A-AE44-7BA92E61B1C1"; + rename -uid "0D78688E-4A97-2416-69B3-C19029C8F83F"; setAttr ".ihi" 0; setAttr -k off ".v"; setAttr ".ove" yes; @@ -7146,8 +7092,8 @@ createNode nurbsCurve -n "footBack_L0_rootShape" -p "footBack_L0_root"; 0.25 0 0 -0.25 0 0 ; -createNode nurbsCurve -n "footBack_L0_root19Shape" -p "footBack_L0_root"; - rename -uid "D8F9BB5C-404B-88ED-7612-2CB36A45059F"; +createNode nurbsCurve -n "footBack_L0_root22Shape" -p "footBack_L0_root"; + rename -uid "1B2A9923-4789-C1CE-B693-C7A213F13338"; setAttr ".ihi" 0; setAttr -k off ".v"; setAttr ".ove" yes; @@ -7159,8 +7105,8 @@ createNode nurbsCurve -n "footBack_L0_root19Shape" -p "footBack_L0_root"; 0 0.25 0 0 -0.25 0 ; -createNode nurbsCurve -n "footBack_L0_root20Shape" -p "footBack_L0_root"; - rename -uid "7ECE42E4-49DE-B81D-3738-6996EEC65FA5"; +createNode nurbsCurve -n "footBack_L0_root23Shape" -p "footBack_L0_root"; + rename -uid "37C545C5-4941-690C-A14C-C8844EC3F1AF"; setAttr ".ihi" 0; setAttr -k off ".v"; setAttr ".ove" yes; @@ -7172,8 +7118,8 @@ createNode nurbsCurve -n "footBack_L0_root20Shape" -p "footBack_L0_root"; 0 0 0.25 0 0 -0.25 ; -createNode nurbsCurve -n "footBack_L0_root21Shape" -p "footBack_L0_root"; - rename -uid "C0412FBB-436D-5615-5742-D4A223CC39F0"; +createNode nurbsCurve -n "footBack_L0_root24Shape" -p "footBack_L0_root"; + rename -uid "A8DE1004-4B11-610C-742A-2AA65D5F55A2"; setAttr ".ihi" 0; setAttr -k off ".v"; setAttr ".ove" yes; @@ -7200,10 +7146,10 @@ createNode nurbsCurve -n "footBack_L0_root21Shape" -p "footBack_L0_root"; -0.125 -0.125 -0.125 ; createNode transform -n "footBack_L0_0_loc" -p "footBack_L0_root"; - rename -uid "A2012E36-4800-A9C1-FC04-BDADE45BC90B"; + rename -uid "7BA67857-49CC-871D-7930-649EDEFDD360"; addAttr -ci true -sn "isGearGuide" -ln "isGearGuide" -dv 1 -min 0 -max 1 -at "bool"; setAttr -k off -cb on ".v"; - setAttr ".t" -type "double3" -1.7763568394002505e-014 2.2204460492503131e-016 0.54565565303279762 ; + setAttr ".t" -type "double3" -1.7763568394002505e-014 2.2204460492503131e-016 0.54565565303280117 ; setAttr -k off -cb on ".tx"; setAttr -k off -cb on ".ty"; setAttr -k off -cb on ".tz"; @@ -7211,12 +7157,12 @@ createNode transform -n "footBack_L0_0_loc" -p "footBack_L0_root"; setAttr -k off -cb on ".ry"; setAttr -k off -cb on ".rz"; setAttr -cb on ".ro"; - setAttr ".s" -type "double3" 0.99999999999999978 1.0000000000000002 1.0000000000000009 ; + setAttr ".s" -type "double3" 0.99999999999999978 1.0000000000000004 1.0000000000000007 ; setAttr -k off -cb on ".sx"; setAttr -k off -cb on ".sy"; setAttr -k off -cb on ".sz"; createNode nurbsCurve -n "footBack_L0_0_locShape" -p "footBack_L0_0_loc"; - rename -uid "869F2A94-4922-CF4C-61C0-9BB64E86672F"; + rename -uid "0EE7A04E-4DA6-C6AB-3B93-4CB233C38E39"; setAttr ".ihi" 0; setAttr -k off ".v"; setAttr ".ove" yes; @@ -7228,8 +7174,8 @@ createNode nurbsCurve -n "footBack_L0_0_locShape" -p "footBack_L0_0_loc"; 0.25 0 0 -0.25 0 0 ; -createNode nurbsCurve -n "footBack_L0_0_loc19Shape" -p "footBack_L0_0_loc"; - rename -uid "7BA74D78-4401-7D2B-0B62-AAB9D31BC1EC"; +createNode nurbsCurve -n "footBack_L0_0_loc22Shape" -p "footBack_L0_0_loc"; + rename -uid "9C2298A0-4F7B-5607-CA9B-14B4D30E61CA"; setAttr ".ihi" 0; setAttr -k off ".v"; setAttr ".ove" yes; @@ -7241,8 +7187,8 @@ createNode nurbsCurve -n "footBack_L0_0_loc19Shape" -p "footBack_L0_0_loc"; 0 0.25 0 0 -0.25 0 ; -createNode nurbsCurve -n "footBack_L0_0_loc20Shape" -p "footBack_L0_0_loc"; - rename -uid "E45202FD-41A8-E2C3-185C-D48B30F8CB22"; +createNode nurbsCurve -n "footBack_L0_0_loc23Shape" -p "footBack_L0_0_loc"; + rename -uid "B157E95B-4979-9388-ED00-DCA9FDD2C9AE"; setAttr ".ihi" 0; setAttr -k off ".v"; setAttr ".ove" yes; @@ -7254,8 +7200,8 @@ createNode nurbsCurve -n "footBack_L0_0_loc20Shape" -p "footBack_L0_0_loc"; 0 0 0.25 0 0 -0.25 ; -createNode nurbsCurve -n "footBack_L0_0_loc21Shape" -p "footBack_L0_0_loc"; - rename -uid "47A85AC6-4E3F-4E4C-D021-459FC4B63C0A"; +createNode nurbsCurve -n "footBack_L0_0_loc24Shape" -p "footBack_L0_0_loc"; + rename -uid "DFE16248-4529-F5E0-B7F0-61AFEE6A5416"; setAttr ".ihi" 0; setAttr -k off ".v"; setAttr ".ove" yes; @@ -7272,8 +7218,8 @@ createNode nurbsCurve -n "footBack_L0_0_loc21Shape" -p "footBack_L0_0_loc"; 0 -0.1875 0 -0.1875 0 0 ; -createNode nurbsCurve -n "footBack_L0_0_loc21_0crvShape" -p "footBack_L0_0_loc"; - rename -uid "4100A738-4135-A82B-AE40-B185867773BE"; +createNode nurbsCurve -n "footBack_L0_0_loc24_0crvShape" -p "footBack_L0_0_loc"; + rename -uid "5F9F76A8-43D4-0B12-CB2C-309AA74DCAE6"; setAttr ".ihi" 0; setAttr -k off ".v"; setAttr ".ove" yes; @@ -7290,8 +7236,8 @@ createNode nurbsCurve -n "footBack_L0_0_loc21_0crvShape" -p "footBack_L0_0_loc"; 0 0 -0.1875 -0.1875 0 0 ; -createNode nurbsCurve -n "footBack_L0_0_loc21_1crvShape" -p "footBack_L0_0_loc"; - rename -uid "A448AC90-4712-FF5F-717E-07BE4D660C7F"; +createNode nurbsCurve -n "footBack_L0_0_loc24_1crvShape" -p "footBack_L0_0_loc"; + rename -uid "85F03C6C-4173-15ED-0F98-F285081FD48B"; setAttr ".ihi" 0; setAttr -k off ".v"; setAttr ".ove" yes; @@ -7309,10 +7255,10 @@ createNode nurbsCurve -n "footBack_L0_0_loc21_1crvShape" -p "footBack_L0_0_loc"; 0 0 -0.1875 ; createNode transform -n "footBack_L0_1_loc" -p "footBack_L0_0_loc"; - rename -uid "A1987AC5-45EC-9C92-5B0B-E99C9AC53905"; + rename -uid "C4552480-462B-359A-85E4-5F8EC30B4A8F"; addAttr -ci true -sn "isGearGuide" -ln "isGearGuide" -dv 1 -min 0 -max 1 -at "bool"; setAttr -k off -cb on ".v"; - setAttr ".t" -type "double3" 5.3290705182007514e-015 -0.34547277013915562 0.77046072389792997 ; + setAttr ".t" -type "double3" 1.7763568394002505e-015 -0.34547277013915567 0.77046072389793352 ; setAttr -k off -cb on ".tx"; setAttr -k off -cb on ".ty"; setAttr -k off -cb on ".tz"; @@ -7320,12 +7266,12 @@ createNode transform -n "footBack_L0_1_loc" -p "footBack_L0_0_loc"; setAttr -k off -cb on ".ry"; setAttr -k off -cb on ".rz"; setAttr -cb on ".ro"; - setAttr ".s" -type "double3" 1.0000000000000007 0.99999999999999978 1.0000000000000004 ; + setAttr ".s" -type "double3" 1.0000000000000007 0.99999999999999933 1.0000000000000004 ; setAttr -k off -cb on ".sx"; setAttr -k off -cb on ".sy"; setAttr -k off -cb on ".sz"; createNode nurbsCurve -n "footBack_L0_1_locShape" -p "footBack_L0_1_loc"; - rename -uid "89950501-4D47-BD8D-8432-63A58F0824C4"; + rename -uid "68062AAA-4951-B1BC-B182-72A11D9314A4"; setAttr ".ihi" 0; setAttr -k off ".v"; setAttr ".ove" yes; @@ -7337,8 +7283,8 @@ createNode nurbsCurve -n "footBack_L0_1_locShape" -p "footBack_L0_1_loc"; 0.25 0 0 -0.25 0 0 ; -createNode nurbsCurve -n "footBack_L0_1_loc19Shape" -p "footBack_L0_1_loc"; - rename -uid "98C6B219-4853-5D77-3477-3C91ED15447B"; +createNode nurbsCurve -n "footBack_L0_1_loc22Shape" -p "footBack_L0_1_loc"; + rename -uid "28D5F932-47E2-1967-92EC-CFAF452F0F5D"; setAttr ".ihi" 0; setAttr -k off ".v"; setAttr ".ove" yes; @@ -7350,8 +7296,8 @@ createNode nurbsCurve -n "footBack_L0_1_loc19Shape" -p "footBack_L0_1_loc"; 0 0.25 0 0 -0.25 0 ; -createNode nurbsCurve -n "footBack_L0_1_loc20Shape" -p "footBack_L0_1_loc"; - rename -uid "2419AB6B-4323-28CD-8BE4-798EBFB69834"; +createNode nurbsCurve -n "footBack_L0_1_loc23Shape" -p "footBack_L0_1_loc"; + rename -uid "8CE0D046-44AD-DB93-3186-FD83EF1AA1AB"; setAttr ".ihi" 0; setAttr -k off ".v"; setAttr ".ove" yes; @@ -7363,8 +7309,8 @@ createNode nurbsCurve -n "footBack_L0_1_loc20Shape" -p "footBack_L0_1_loc"; 0 0 0.25 0 0 -0.25 ; -createNode nurbsCurve -n "footBack_L0_1_loc21Shape" -p "footBack_L0_1_loc"; - rename -uid "DDA03361-4123-DD06-8B01-25827B25D6A0"; +createNode nurbsCurve -n "footBack_L0_1_loc24Shape" -p "footBack_L0_1_loc"; + rename -uid "5EA757F0-495B-00D9-A043-F4B5CFC52607"; setAttr ".ihi" 0; setAttr -k off ".v"; setAttr ".ove" yes; @@ -7381,8 +7327,8 @@ createNode nurbsCurve -n "footBack_L0_1_loc21Shape" -p "footBack_L0_1_loc"; 0 -0.1875 0 -0.1875 0 0 ; -createNode nurbsCurve -n "footBack_L0_1_loc21_0crvShape" -p "footBack_L0_1_loc"; - rename -uid "A1A12062-4F1A-2F0F-F289-1F9D510490E4"; +createNode nurbsCurve -n "footBack_L0_1_loc24_0crvShape" -p "footBack_L0_1_loc"; + rename -uid "DA78EACF-4F6B-A5BF-AAC5-E39B4C4A1A67"; setAttr ".ihi" 0; setAttr -k off ".v"; setAttr ".ove" yes; @@ -7399,8 +7345,8 @@ createNode nurbsCurve -n "footBack_L0_1_loc21_0crvShape" -p "footBack_L0_1_loc"; 0 0 -0.1875 -0.1875 0 0 ; -createNode nurbsCurve -n "footBack_L0_1_loc21_1crvShape" -p "footBack_L0_1_loc"; - rename -uid "8A64324A-4693-C68B-3FE2-76AB4AEF2F49"; +createNode nurbsCurve -n "footBack_L0_1_loc24_1crvShape" -p "footBack_L0_1_loc"; + rename -uid "A9528742-4308-2BCA-45A9-DA872DB20715"; setAttr ".ihi" 0; setAttr -k off ".v"; setAttr ".ove" yes; @@ -7418,18 +7364,18 @@ createNode nurbsCurve -n "footBack_L0_1_loc21_1crvShape" -p "footBack_L0_1_loc"; 0 0 -0.1875 ; createNode transform -n "footBack_L0_crv" -p "footBack_L0_root"; - rename -uid "8431B7B2-43DD-B732-685D-44922C80F1FF"; + rename -uid "550841A1-4EE3-98F2-1D8D-00A526AB2298"; setAttr ".ovdt" 1; setAttr ".ove" yes; - setAttr ".t" -type "double3" -10.980332218718949 -0.49678747209358587 11.584116504196627 ; - setAttr ".s" -type "double3" 8.6433157474725757 8.6433157474725757 8.6433157474725792 ; + setAttr ".t" -type "double3" -10.980332218718948 -0.49678747209358604 11.584116504196629 ; + setAttr ".s" -type "double3" 8.6433157474725757 8.6433157474725757 8.6433157474725775 ; createNode nurbsCurve -n "footBack_L0_crvShape" -p "footBack_L0_crv"; - rename -uid "F813FE96-452B-73CE-95E4-31A9C88058A0"; + rename -uid "9C866AB6-4B02-9984-D6D5-B2A82478F7DF"; setAttr -k off ".v"; setAttr -s 4 ".iog[0].og"; setAttr ".tw" yes; createNode nurbsCurve -n "footBack_L0_crvShapeOrig" -p "footBack_L0_crv"; - rename -uid "CA337E73-457B-8A40-D337-1DAFDEDB9860"; + rename -uid "747A0734-4409-94F3-374A-B585A7B327BC"; setAttr -k off ".v"; setAttr ".io" yes; setAttr ".cc" -type "nurbsCurve" @@ -7441,10 +7387,10 @@ createNode nurbsCurve -n "footBack_L0_crvShapeOrig" -p "footBack_L0_crv"; 0 0 0 ; createNode transform -n "footBack_L0_heel" -p "footBack_L0_root"; - rename -uid "E69DC031-443D-F99A-7DE9-8EBFAA833BF7"; + rename -uid "07C4781C-4AE4-F396-6438-558999EA583A"; addAttr -ci true -sn "isGearGuide" -ln "isGearGuide" -dv 1 -min 0 -max 1 -at "bool"; setAttr -k off -cb on ".v"; - setAttr ".t" -type "double3" -1.9539925233402755e-014 -0.34547277013915645 -0.37260003933978325 ; + setAttr ".t" -type "double3" -1.9539925233402755e-014 -0.34547277013915656 -0.3726000393397797 ; setAttr -k off -cb on ".tx"; setAttr -k off -cb on ".ty"; setAttr -k off -cb on ".tz"; @@ -7452,12 +7398,12 @@ createNode transform -n "footBack_L0_heel" -p "footBack_L0_root"; setAttr -k off -cb on ".ry"; setAttr -k off -cb on ".rz"; setAttr -cb on ".ro"; - setAttr ".s" -type "double3" 0.99999999999999978 1.0000000000000002 1.0000000000000009 ; + setAttr ".s" -type "double3" 0.99999999999999978 1.0000000000000004 1.0000000000000007 ; setAttr -k off -cb on ".sx"; setAttr -k off -cb on ".sy"; setAttr -k off -cb on ".sz"; createNode nurbsCurve -n "footBack_L0_heelShape" -p "footBack_L0_heel"; - rename -uid "42A696E6-41DD-304A-618A-8DB31269F3FD"; + rename -uid "F8ABB6B3-48A4-F66C-57AD-2493C2EF9373"; setAttr ".ihi" 0; setAttr -k off ".v"; setAttr ".ove" yes; @@ -7469,8 +7415,8 @@ createNode nurbsCurve -n "footBack_L0_heelShape" -p "footBack_L0_heel"; 0.25 0 0 -0.25 0 0 ; -createNode nurbsCurve -n "footBack_L0_heel19Shape" -p "footBack_L0_heel"; - rename -uid "E0851BC1-439D-FFC1-B4C3-30A7BB6FDE4E"; +createNode nurbsCurve -n "footBack_L0_heel22Shape" -p "footBack_L0_heel"; + rename -uid "91E506B2-42AD-42BF-00F3-369DD0E17D36"; setAttr ".ihi" 0; setAttr -k off ".v"; setAttr ".ove" yes; @@ -7482,8 +7428,8 @@ createNode nurbsCurve -n "footBack_L0_heel19Shape" -p "footBack_L0_heel"; 0 0.25 0 0 -0.25 0 ; -createNode nurbsCurve -n "footBack_L0_heel20Shape" -p "footBack_L0_heel"; - rename -uid "6852CBB1-4A92-65D5-69CD-CE98C282D974"; +createNode nurbsCurve -n "footBack_L0_heel23Shape" -p "footBack_L0_heel"; + rename -uid "3470E01B-4C66-70AA-7AE5-51ADB187EA83"; setAttr ".ihi" 0; setAttr -k off ".v"; setAttr ".ove" yes; @@ -7495,8 +7441,8 @@ createNode nurbsCurve -n "footBack_L0_heel20Shape" -p "footBack_L0_heel"; 0 0 0.25 0 0 -0.25 ; -createNode nurbsCurve -n "footBack_L0_heel21Shape" -p "footBack_L0_heel"; - rename -uid "1F25FD35-47F7-493B-BA97-0BB00B7DE992"; +createNode nurbsCurve -n "footBack_L0_heel24Shape" -p "footBack_L0_heel"; + rename -uid "9C524D82-4ED3-30A8-8EE2-119AFAAEC384"; setAttr ".ihi" 0; setAttr -k off ".v"; setAttr ".ove" yes; @@ -7513,8 +7459,8 @@ createNode nurbsCurve -n "footBack_L0_heel21Shape" -p "footBack_L0_heel"; 0 -0.1875 0 -0.1875 0 0 ; -createNode nurbsCurve -n "footBack_L0_heel21_0crvShape" -p "footBack_L0_heel"; - rename -uid "730561AE-48DC-D54E-925E-AC9D56DA19A6"; +createNode nurbsCurve -n "footBack_L0_heel24_0crvShape" -p "footBack_L0_heel"; + rename -uid "0A1155F6-4EDA-2612-9B1F-12AE2B10494E"; setAttr ".ihi" 0; setAttr -k off ".v"; setAttr ".ove" yes; @@ -7531,8 +7477,8 @@ createNode nurbsCurve -n "footBack_L0_heel21_0crvShape" -p "footBack_L0_heel"; 0 0 -0.1875 -0.1875 0 0 ; -createNode nurbsCurve -n "footBack_L0_heel21_1crvShape" -p "footBack_L0_heel"; - rename -uid "E1A156B4-4076-EF0A-132E-53BFA0BB36BE"; +createNode nurbsCurve -n "footBack_L0_heel24_1crvShape" -p "footBack_L0_heel"; + rename -uid "63A2CE5D-44A4-B315-B1F5-0D92D21458B3"; setAttr ".ihi" 0; setAttr -k off ".v"; setAttr ".ove" yes; @@ -7550,10 +7496,10 @@ createNode nurbsCurve -n "footBack_L0_heel21_1crvShape" -p "footBack_L0_heel"; 0 0 -0.1875 ; createNode transform -n "footBack_L0_outpivot" -p "footBack_L0_root"; - rename -uid "B7886E06-4F18-3AB6-3281-3BA39035267D"; + rename -uid "1E845418-4932-9E51-A651-68AC31876889"; addAttr -ci true -sn "isGearGuide" -ln "isGearGuide" -dv 1 -min 0 -max 1 -at "bool"; setAttr -k off -cb on ".v"; - setAttr ".t" -type "double3" 1.0422206583139726 -0.34547277013915523 0.11497296198779061 ; + setAttr ".t" -type "double3" 1.0422206583139726 -0.34547277013915534 0.11497296198779416 ; setAttr -k off -cb on ".tx"; setAttr -k off -cb on ".ty"; setAttr -k off -cb on ".tz"; @@ -7561,12 +7507,12 @@ createNode transform -n "footBack_L0_outpivot" -p "footBack_L0_root"; setAttr -k off -cb on ".ry"; setAttr -k off -cb on ".rz"; setAttr -cb on ".ro"; - setAttr ".s" -type "double3" 0.99999999999999978 1.0000000000000002 1.0000000000000009 ; + setAttr ".s" -type "double3" 0.99999999999999978 1.0000000000000004 1.0000000000000007 ; setAttr -k off -cb on ".sx"; setAttr -k off -cb on ".sy"; setAttr -k off -cb on ".sz"; createNode nurbsCurve -n "footBack_L0_outpivotShape" -p "footBack_L0_outpivot"; - rename -uid "8B50CE45-4CA3-1BBD-7C6E-AEA8DE0096C2"; + rename -uid "821CF5B0-4C22-A2DF-92A3-57AF7EF578A0"; setAttr ".ihi" 0; setAttr -k off ".v"; setAttr ".ove" yes; @@ -7578,8 +7524,8 @@ createNode nurbsCurve -n "footBack_L0_outpivotShape" -p "footBack_L0_outpivot"; 0.25 0 0 -0.25 0 0 ; -createNode nurbsCurve -n "footBack_L0_outpivot19Shape" -p "footBack_L0_outpivot"; - rename -uid "1FD910E3-433A-07AA-42C4-E39A34BD6CF1"; +createNode nurbsCurve -n "footBack_L0_outpivot22Shape" -p "footBack_L0_outpivot"; + rename -uid "032B1972-4755-DE9D-3D1D-C5A0280CCF32"; setAttr ".ihi" 0; setAttr -k off ".v"; setAttr ".ove" yes; @@ -7591,8 +7537,8 @@ createNode nurbsCurve -n "footBack_L0_outpivot19Shape" -p "footBack_L0_outpivot" 0 0.25 0 0 -0.25 0 ; -createNode nurbsCurve -n "footBack_L0_outpivot20Shape" -p "footBack_L0_outpivot"; - rename -uid "584FB068-4286-98BA-1A81-80BD9A829C06"; +createNode nurbsCurve -n "footBack_L0_outpivot23Shape" -p "footBack_L0_outpivot"; + rename -uid "74236917-4AD9-072B-03A1-7EAF03ABDC22"; setAttr ".ihi" 0; setAttr -k off ".v"; setAttr ".ove" yes; @@ -7604,8 +7550,8 @@ createNode nurbsCurve -n "footBack_L0_outpivot20Shape" -p "footBack_L0_outpivot" 0 0 0.25 0 0 -0.25 ; -createNode nurbsCurve -n "footBack_L0_outpivot21Shape" -p "footBack_L0_outpivot"; - rename -uid "9C32BC3F-4C5C-BDB5-AF9D-17A89535AED8"; +createNode nurbsCurve -n "footBack_L0_outpivot24Shape" -p "footBack_L0_outpivot"; + rename -uid "F075F2EF-495B-490D-E4EB-33A237EEC662"; setAttr ".ihi" 0; setAttr -k off ".v"; setAttr ".ove" yes; @@ -7622,8 +7568,8 @@ createNode nurbsCurve -n "footBack_L0_outpivot21Shape" -p "footBack_L0_outpivot" 0 -0.1875 0 -0.1875 0 0 ; -createNode nurbsCurve -n "footBack_L0_outpivot21_0crvShape" -p "footBack_L0_outpivot"; - rename -uid "2BDB9D6C-493B-4033-150E-E285CD3F4482"; +createNode nurbsCurve -n "footBack_L0_outpivot24_0crvShape" -p "footBack_L0_outpivot"; + rename -uid "0A50A87C-4CD3-A78A-8F1E-7283E0C1805E"; setAttr ".ihi" 0; setAttr -k off ".v"; setAttr ".ove" yes; @@ -7640,8 +7586,8 @@ createNode nurbsCurve -n "footBack_L0_outpivot21_0crvShape" -p "footBack_L0_outp 0 0 -0.1875 -0.1875 0 0 ; -createNode nurbsCurve -n "footBack_L0_outpivot21_1crvShape" -p "footBack_L0_outpivot"; - rename -uid "6DACE284-4401-5E56-FAA2-1FB8D0FA8D58"; +createNode nurbsCurve -n "footBack_L0_outpivot24_1crvShape" -p "footBack_L0_outpivot"; + rename -uid "1EFF2A35-4951-92D7-94E8-A0BECD0EA09D"; setAttr ".ihi" 0; setAttr -k off ".v"; setAttr ".ove" yes; @@ -7659,10 +7605,10 @@ createNode nurbsCurve -n "footBack_L0_outpivot21_1crvShape" -p "footBack_L0_outp 0 0 -0.1875 ; createNode transform -n "footBack_L0_inpivot" -p "footBack_L0_root"; - rename -uid "D33DB17B-413C-15D4-0FC6-43A3EFBB812B"; + rename -uid "1E38A98F-4292-985F-124B-9AAA3BC5A6F2"; addAttr -ci true -sn "isGearGuide" -ln "isGearGuide" -dv 1 -min 0 -max 1 -at "bool"; setAttr -k off -cb on ".v"; - setAttr ".t" -type "double3" -1.1682146826215725 -0.34547277013915723 0.21228136011732168 ; + setAttr ".t" -type "double3" -1.1682146826215742 -0.34547277013915734 0.21228136011732524 ; setAttr -k off -cb on ".tx"; setAttr -k off -cb on ".ty"; setAttr -k off -cb on ".tz"; @@ -7670,12 +7616,12 @@ createNode transform -n "footBack_L0_inpivot" -p "footBack_L0_root"; setAttr -k off -cb on ".ry"; setAttr -k off -cb on ".rz"; setAttr -cb on ".ro"; - setAttr ".s" -type "double3" 0.99999999999999978 1.0000000000000002 1.0000000000000009 ; + setAttr ".s" -type "double3" 0.99999999999999978 1.0000000000000004 1.0000000000000007 ; setAttr -k off -cb on ".sx"; setAttr -k off -cb on ".sy"; setAttr -k off -cb on ".sz"; createNode nurbsCurve -n "footBack_L0_inpivotShape" -p "footBack_L0_inpivot"; - rename -uid "602EA6E5-42FB-AF2B-4324-DE9683B15142"; + rename -uid "8135752A-4A17-0A3B-F189-BD82AA9ACF69"; setAttr ".ihi" 0; setAttr -k off ".v"; setAttr ".ove" yes; @@ -7687,8 +7633,8 @@ createNode nurbsCurve -n "footBack_L0_inpivotShape" -p "footBack_L0_inpivot"; 0.25 0 0 -0.25 0 0 ; -createNode nurbsCurve -n "footBack_L0_inpivot19Shape" -p "footBack_L0_inpivot"; - rename -uid "98675451-405C-E392-6205-EDA9FAA37C01"; +createNode nurbsCurve -n "footBack_L0_inpivot22Shape" -p "footBack_L0_inpivot"; + rename -uid "E26CC19B-407B-96D1-BCEA-EF92CB941EE5"; setAttr ".ihi" 0; setAttr -k off ".v"; setAttr ".ove" yes; @@ -7700,8 +7646,8 @@ createNode nurbsCurve -n "footBack_L0_inpivot19Shape" -p "footBack_L0_inpivot"; 0 0.25 0 0 -0.25 0 ; -createNode nurbsCurve -n "footBack_L0_inpivot20Shape" -p "footBack_L0_inpivot"; - rename -uid "174ABD0B-4B98-617D-A384-F197CBF9C908"; +createNode nurbsCurve -n "footBack_L0_inpivot23Shape" -p "footBack_L0_inpivot"; + rename -uid "14904978-488B-A94E-C3A1-74874D2A259E"; setAttr ".ihi" 0; setAttr -k off ".v"; setAttr ".ove" yes; @@ -7713,8 +7659,8 @@ createNode nurbsCurve -n "footBack_L0_inpivot20Shape" -p "footBack_L0_inpivot"; 0 0 0.25 0 0 -0.25 ; -createNode nurbsCurve -n "footBack_L0_inpivot21Shape" -p "footBack_L0_inpivot"; - rename -uid "7097AB6E-497F-C370-2C10-A49BFE43032F"; +createNode nurbsCurve -n "footBack_L0_inpivot24Shape" -p "footBack_L0_inpivot"; + rename -uid "3F599A75-4BE2-FA5E-6456-3FBFF8D95B2C"; setAttr ".ihi" 0; setAttr -k off ".v"; setAttr ".ove" yes; @@ -7731,8 +7677,8 @@ createNode nurbsCurve -n "footBack_L0_inpivot21Shape" -p "footBack_L0_inpivot"; 0 -0.1875 0 -0.1875 0 0 ; -createNode nurbsCurve -n "footBack_L0_inpivot21_0crvShape" -p "footBack_L0_inpivot"; - rename -uid "EF29CA29-4167-1B2F-68F4-5799A96BA8B6"; +createNode nurbsCurve -n "footBack_L0_inpivot24_0crvShape" -p "footBack_L0_inpivot"; + rename -uid "8C1E2156-44F0-B771-D1AB-038839CEC295"; setAttr ".ihi" 0; setAttr -k off ".v"; setAttr ".ove" yes; @@ -7749,8 +7695,8 @@ createNode nurbsCurve -n "footBack_L0_inpivot21_0crvShape" -p "footBack_L0_inpiv 0 0 -0.1875 -0.1875 0 0 ; -createNode nurbsCurve -n "footBack_L0_inpivot21_1crvShape" -p "footBack_L0_inpivot"; - rename -uid "582DFBB6-4084-A3C1-983B-C189F3A18262"; +createNode nurbsCurve -n "footBack_L0_inpivot24_1crvShape" -p "footBack_L0_inpivot"; + rename -uid "DB4CD451-4354-5100-3BD9-50B843AC5402"; setAttr ".ihi" 0; setAttr -k off ".v"; setAttr ".ove" yes; @@ -7768,18 +7714,18 @@ createNode nurbsCurve -n "footBack_L0_inpivot21_1crvShape" -p "footBack_L0_inpiv 0 0 -0.1875 ; createNode transform -n "footBack_L0_1" -p "footBack_L0_root"; - rename -uid "C2F826E6-4EC5-C1C0-26D6-D3A0DF1F260B"; + rename -uid "E2463FCF-472C-3D45-32C4-0B8FA08D01FB"; setAttr ".ovdt" 1; setAttr ".ove" yes; - setAttr ".t" -type "double3" -10.980332218718949 -0.49678747209358587 11.584116504196627 ; - setAttr ".s" -type "double3" 8.6433157474725757 8.6433157474725757 8.6433157474725792 ; + setAttr ".t" -type "double3" -10.980332218718948 -0.49678747209358604 11.584116504196629 ; + setAttr ".s" -type "double3" 8.6433157474725757 8.6433157474725757 8.6433157474725775 ; createNode nurbsCurve -n "footBack_L0_Shape1" -p "footBack_L0_1"; - rename -uid "29546393-41C4-BB4A-BC90-F4B3C0AE6753"; + rename -uid "CECBDBED-4E02-9D69-B572-CCB060CD353E"; setAttr -k off ".v"; setAttr -s 4 ".iog[0].og"; setAttr ".tw" yes; -createNode nurbsCurve -n "footBack_L0_Shape1Orig1" -p "footBack_L0_1"; - rename -uid "35625F3C-48E3-34DF-71A3-AEB571F5B8F7"; +createNode nurbsCurve -n "footBack_L0_Shape1Orig" -p "footBack_L0_1"; + rename -uid "7155103C-4707-F8CF-5C53-F1A0E7B8FE7F"; setAttr -k off ".v"; setAttr ".io" yes; setAttr ".cc" -type "nurbsCurve" @@ -7793,7 +7739,7 @@ createNode nurbsCurve -n "footBack_L0_Shape1Orig1" -p "footBack_L0_1"; 0 0 0 ; createNode transform -n "backLegUI_L0_root" -p "footBack_L0_root"; - rename -uid "499AA056-4EE3-83B3-61BB-C6A197D2866E"; + rename -uid "380D9C8C-4B72-B969-89A5-0A8785D162DC"; addAttr -ci true -sn "isGearGuide" -ln "isGearGuide" -dv 1 -min 0 -max 1 -at "bool"; addAttr -ci true -sn "comp_type" -ln "comp_type" -dt "string"; addAttr -ci true -sn "comp_name" -ln "comp_name" -dt "string"; @@ -7805,7 +7751,7 @@ createNode transform -n "backLegUI_L0_root" -p "footBack_L0_root"; addAttr -ci true -sn "icon" -ln "icon" -dt "string"; addAttr -ci true -sn "ikrefarray" -ln "ikrefarray" -dt "string"; addAttr -ci true -sn "joint" -ln "joint" -min 0 -max 1 -at "bool"; - addAttr -ci true -sn "uniScale" -ln "uniScale" -min 0 -max 1 -at "bool"; + addAttr -ci true -sn "uniScale" -ln "uniScale" -dv 1 -min 0 -max 1 -at "bool"; addAttr -ci true -sn "k_tx" -ln "k_tx" -min 0 -max 1 -at "bool"; addAttr -ci true -sn "k_ty" -ln "k_ty" -min 0 -max 1 -at "bool"; addAttr -ci true -sn "k_tz" -ln "k_tz" -min 0 -max 1 -at "bool"; @@ -7817,12 +7763,14 @@ createNode transform -n "backLegUI_L0_root" -p "footBack_L0_root"; addAttr -ci true -sn "k_sy" -ln "k_sy" -min 0 -max 1 -at "bool"; addAttr -ci true -sn "k_sz" -ln "k_sz" -min 0 -max 1 -at "bool"; addAttr -ci true -sn "default_rotorder" -ln "default_rotorder" -min 0 -max 5 -at "long"; - addAttr -ci true -sn "neutralRotation" -ln "neutralRotation" -min 0 -max 1 -at "bool"; - addAttr -ci true -sn "ctlSize" -ln "ctlSize" -at "double"; + addAttr -ci true -sn "neutralRotation" -ln "neutralRotation" -dv 1 -min 0 -max 1 + -at "bool"; + addAttr -ci true -sn "mirrorBehaviour" -ln "mirrorBehaviour" -min 0 -max 1 -at "bool"; + addAttr -ci true -sn "ctlSize" -ln "ctlSize" -dv 0.5 -at "double"; addAttr -ci true -sn "useIndex" -ln "useIndex" -min 0 -max 1 -at "bool"; - addAttr -ci true -sn "parentJointIndex" -ln "parentJointIndex" -at "long"; + addAttr -ci true -sn "parentJointIndex" -ln "parentJointIndex" -dv -1 -at "long"; setAttr -k off -cb on ".v"; - setAttr ".t" -type "double3" 7.9148715870389701 6.0337539388988626 -0.92016921390297313 ; + setAttr ".t" -type "double3" 7.9148715870389683 6.0337539388988635 -0.92016921390296957 ; setAttr -k off -cb on ".tx"; setAttr -k off -cb on ".ty"; setAttr -k off -cb on ".tz"; @@ -7830,7 +7778,7 @@ createNode transform -n "backLegUI_L0_root" -p "footBack_L0_root"; setAttr -k off -cb on ".ry"; setAttr -k off -cb on ".rz"; setAttr -cb on ".ro"; - setAttr ".s" -type "double3" 8.6433157474725739 8.6433157474725792 8.6433157474725828 ; + setAttr ".s" -type "double3" 8.6433157474725739 8.643315747472581 8.643315747472581 ; setAttr -k off -cb on ".sx"; setAttr -k off -cb on ".sy"; setAttr -k off -cb on ".sz"; @@ -7842,12 +7790,8 @@ createNode transform -n "backLegUI_L0_root" -p "footBack_L0_root"; setAttr ".ctlGrp" -type "string" ""; setAttr ".icon" -type "string" "cross"; setAttr ".ikrefarray" -type "string" ""; - setAttr ".uniScale" yes; - setAttr ".neutralRotation" yes; - setAttr ".ctlSize" 0.5; - setAttr ".parentJointIndex" -1; createNode nurbsCurve -n "backLegUI_L0_rootShape" -p "backLegUI_L0_root"; - rename -uid "B133EE6C-4BA8-128A-3A37-62B6C2331CC3"; + rename -uid "B135A542-4318-F4E1-5EA6-3C94265C74EC"; setAttr ".ihi" 0; setAttr -k off ".v"; setAttr ".ove" yes; @@ -7859,8 +7803,8 @@ createNode nurbsCurve -n "backLegUI_L0_rootShape" -p "backLegUI_L0_root"; 0.25 0 0 -0.25 0 0 ; -createNode nurbsCurve -n "backLegUI_L0_root19Shape" -p "backLegUI_L0_root"; - rename -uid "365B133E-41E7-461D-344D-14A1CEE508F8"; +createNode nurbsCurve -n "backLegUI_L0_root22Shape" -p "backLegUI_L0_root"; + rename -uid "13E428A0-4E9A-916D-15AE-52A9560FC787"; setAttr ".ihi" 0; setAttr -k off ".v"; setAttr ".ove" yes; @@ -7872,8 +7816,8 @@ createNode nurbsCurve -n "backLegUI_L0_root19Shape" -p "backLegUI_L0_root"; 0 0.25 0 0 -0.25 0 ; -createNode nurbsCurve -n "backLegUI_L0_root20Shape" -p "backLegUI_L0_root"; - rename -uid "3B0E94E0-424E-F7D2-7998-ADA46503078A"; +createNode nurbsCurve -n "backLegUI_L0_root23Shape" -p "backLegUI_L0_root"; + rename -uid "6BB7EEE1-405E-B6D0-3E30-58B9C22C58D9"; setAttr ".ihi" 0; setAttr -k off ".v"; setAttr ".ove" yes; @@ -7885,8 +7829,8 @@ createNode nurbsCurve -n "backLegUI_L0_root20Shape" -p "backLegUI_L0_root"; 0 0 0.25 0 0 -0.25 ; -createNode nurbsCurve -n "backLegUI_L0_root21Shape" -p "backLegUI_L0_root"; - rename -uid "81CC9C7B-4EDE-8C8D-D4C1-308B2D5ECC00"; +createNode nurbsCurve -n "backLegUI_L0_root24Shape" -p "backLegUI_L0_root"; + rename -uid "F06B8B07-4B0F-7654-865E-1ABFF181A46D"; setAttr ".ihi" 0; setAttr -k off ".v"; setAttr ".ove" yes; @@ -7913,10 +7857,10 @@ createNode nurbsCurve -n "backLegUI_L0_root21Shape" -p "backLegUI_L0_root"; -0.125 -0.125 -0.125 ; createNode transform -n "backLegUI_L0_sizeRef" -p "backLegUI_L0_root"; - rename -uid "728B3BB0-44CE-B73A-17C2-77B59F4D89E6"; + rename -uid "754E3199-4FF7-B2C8-FED1-5E94D8BF0230"; addAttr -ci true -sn "isGearGuide" -ln "isGearGuide" -dv 1 -min 0 -max 1 -at "bool"; setAttr -k off -cb on ".v"; - setAttr ".t" -type "double3" 4.4408920985006262e-016 3.3306690738754696e-016 0.99999999999999956 ; + setAttr ".t" -type "double3" 4.4408920985006262e-016 3.3306690738754696e-016 1 ; setAttr -k off -cb on ".tx"; setAttr -k off -cb on ".ty"; setAttr -k off -cb on ".tz"; @@ -7924,23 +7868,23 @@ createNode transform -n "backLegUI_L0_sizeRef" -p "backLegUI_L0_root"; setAttr -k off -cb on ".ry"; setAttr -k off -cb on ".rz"; setAttr -cb on ".ro"; - setAttr ".s" -type "double3" 1.0000000000000002 0.99999999999999933 0.99999999999999956 ; + setAttr ".s" -type "double3" 1.0000000000000002 0.99999999999999911 0.99999999999999956 ; setAttr -k off -cb on ".sx"; setAttr -k off -cb on ".sy"; setAttr -k off -cb on ".sz"; createNode transform -n "legBack_L0_crv1" -p "legBack_L0_root"; - rename -uid "1DBBB5A4-447F-042B-3B55-62A7AE8C52A3"; + rename -uid "D4F3DA5A-4EB0-63ED-5FA0-8C8994A4F04D"; setAttr ".ovdt" 1; setAttr ".ove" yes; setAttr ".t" -type "double3" -1.7959711117807502 -3.2803056907023973 1.8090460715460559 ; setAttr ".s" -type "double3" 1.4137227438343885 1.4137227438343878 1.4137227438343878 ; createNode nurbsCurve -n "legBack_L0_crvShape1" -p "legBack_L0_crv1"; - rename -uid "9924AF2D-479A-DFB8-700E-78906282D8FE"; + rename -uid "C1958170-4DC7-426E-52A9-B09B27CC062A"; setAttr -k off ".v"; setAttr -s 4 ".iog[0].og"; setAttr ".tw" yes; -createNode nurbsCurve -n "legBack_L0_crvShape1Orig1" -p "legBack_L0_crv1"; - rename -uid "BA92EA3F-4414-7064-6E51-C99DF6552AA8"; +createNode nurbsCurve -n "legBack_L0_crvShape1Orig" -p "legBack_L0_crv1"; + rename -uid "4E361CFA-4986-2D6E-CCD7-3095FAA3BE90"; setAttr -k off ".v"; setAttr ".io" yes; setAttr ".cc" -type "nurbsCurve" @@ -7954,7 +7898,7 @@ createNode nurbsCurve -n "legBack_L0_crvShape1Orig1" -p "legBack_L0_crv1"; 0 0 0 ; createNode transform -n "legBack_R0_root" -p "spine_C0_root"; - rename -uid "0E73891C-46B9-E14E-A683-FC9DA99D8622"; + rename -uid "D4BAAD52-44AB-B482-22C5-61A633A9359F"; addAttr -ci true -sn "isGearGuide" -ln "isGearGuide" -dv 1 -min 0 -max 1 -at "bool"; addAttr -ci true -sn "comp_type" -ln "comp_type" -dt "string"; addAttr -ci true -sn "comp_name" -ln "comp_name" -dt "string"; @@ -7963,27 +7907,27 @@ createNode transform -n "legBack_R0_root" -p "spine_C0_root"; addAttr -ci true -sn "connector" -ln "connector" -dt "string"; addAttr -ci true -sn "ui_host" -ln "ui_host" -dt "string"; addAttr -ci true -sn "ctlGrp" -ln "ctlGrp" -dt "string"; - addAttr -ci true -sn "blend" -ln "blend" -min 0 -max 1 -at "double"; - addAttr -ci true -sn "full3BonesIK" -ln "full3BonesIK" -min 0 -max 1 -at "double"; + addAttr -ci true -sn "blend" -ln "blend" -dv 1 -min 0 -max 1 -at "double"; + addAttr -ci true -sn "full3BonesIK" -ln "full3BonesIK" -dv 1 -min 0 -max 1 -at "double"; addAttr -ci true -sn "ikrefarray" -ln "ikrefarray" -dt "string"; addAttr -ci true -sn "upvrefarray" -ln "upvrefarray" -dt "string"; - addAttr -ci true -sn "maxstretch" -ln "maxstretch" -dv 1 -min 1 -at "double"; + addAttr -ci true -sn "maxstretch" -ln "maxstretch" -dv 1.5 -min 1 -at "double"; addAttr -ci true -k true -sn "ikSolver" -ln "ikSolver" -min 0 -max 1 -en "IK Spring:IK Rotation Plane" -at "enum"; - addAttr -ci true -sn "ikOri" -ln "ikOri" -min 0 -max 1 -at "bool"; - addAttr -ci true -sn "div0" -ln "div0" -dv 1 -min 1 -at "long"; - addAttr -ci true -sn "div1" -ln "div1" -dv 1 -min 1 -at "long"; - addAttr -ci true -sn "div2" -ln "div2" -dv 1 -min 1 -at "long"; + addAttr -ci true -sn "ikOri" -ln "ikOri" -dv 1 -min 0 -max 1 -at "bool"; + addAttr -ci true -sn "div0" -ln "div0" -dv 2 -min 1 -at "long"; + addAttr -ci true -sn "div1" -ln "div1" -dv 2 -min 1 -at "long"; + addAttr -ci true -sn "div2" -ln "div2" -dv 2 -min 1 -at "long"; addAttr -ci true -k true -sn "st_profile" -ln "st_profile" -at "double"; addAttr -ci true -k true -sn "sq_profile" -ln "sq_profile" -at "double"; addAttr -ci true -sn "useIndex" -ln "useIndex" -min 0 -max 1 -at "bool"; - addAttr -ci true -sn "parentJointIndex" -ln "parentJointIndex" -at "long"; + addAttr -ci true -sn "parentJointIndex" -ln "parentJointIndex" -dv -1 -at "long"; setAttr -k off -cb on ".v"; setAttr ".t" -type "double3" 0.21090213141048153 -0.09792717804704365 2.6808811877076875 ; setAttr -k off -cb on ".tx"; setAttr -k off -cb on ".ty"; setAttr -k off -cb on ".tz"; - setAttr ".r" -type "double3" 89.999999999999986 -89.999999999999957 0 ; + setAttr ".r" -type "double3" 90 -89.999999999999972 0 ; setAttr -k off -cb on ".rx"; setAttr -k off -cb on ".ry"; setAttr -k off -cb on ".rz"; @@ -7998,20 +7942,12 @@ createNode transform -n "legBack_R0_root" -p "spine_C0_root"; setAttr ".connector" -type "string" "standard"; setAttr ".ui_host" -type "string" "backLegUI_R0_root"; setAttr ".ctlGrp" -type "string" ""; - setAttr ".blend" 1; - setAttr ".full3BonesIK" 1; setAttr ".ikrefarray" -type "string" "local_C0_root,spine_C0_root,global_C0_root"; setAttr ".upvrefarray" -type "string" "local_C0_root,spine_C0_root,global_C0_root"; - setAttr ".maxstretch" 1.5; - setAttr ".ikOri" yes; - setAttr ".div0" 2; - setAttr ".div1" 2; - setAttr ".div2" 2; setAttr -k on ".st_profile"; setAttr -k on ".sq_profile"; - setAttr ".parentJointIndex" -1; createNode nurbsCurve -n "legBack_R0_rootShape" -p "legBack_R0_root"; - rename -uid "FAAD7EB7-4ACD-05CD-BBFA-E8949DDC1632"; + rename -uid "709734FF-4810-D3D3-4BAD-E4AFA1995DA5"; setAttr ".ihi" 0; setAttr -k off ".v"; setAttr ".ove" yes; @@ -8023,8 +7959,8 @@ createNode nurbsCurve -n "legBack_R0_rootShape" -p "legBack_R0_root"; 0.25 0 0 -0.25 0 0 ; -createNode nurbsCurve -n "legBack_R0_root1Shape" -p "legBack_R0_root"; - rename -uid "F1A58CC0-4621-523B-CF36-55A8286BF59B"; +createNode nurbsCurve -n "legBack_R0_root4Shape" -p "legBack_R0_root"; + rename -uid "AAE230B2-4470-F58A-C9E8-EF9138B8F4D6"; setAttr ".ihi" 0; setAttr -k off ".v"; setAttr ".ove" yes; @@ -8036,8 +7972,8 @@ createNode nurbsCurve -n "legBack_R0_root1Shape" -p "legBack_R0_root"; 0 0.25 0 0 -0.25 0 ; -createNode nurbsCurve -n "legBack_R0_root2Shape" -p "legBack_R0_root"; - rename -uid "DD303FF3-4572-0DFC-DB34-B9957848CFF7"; +createNode nurbsCurve -n "legBack_R0_root5Shape" -p "legBack_R0_root"; + rename -uid "9B8780FA-4388-AC0C-F85F-A1A8803A4FB7"; setAttr ".ihi" 0; setAttr -k off ".v"; setAttr ".ove" yes; @@ -8049,8 +7985,8 @@ createNode nurbsCurve -n "legBack_R0_root2Shape" -p "legBack_R0_root"; 0 0 0.25 0 0 -0.25 ; -createNode nurbsCurve -n "legBack_R0_root3Shape" -p "legBack_R0_root"; - rename -uid "EF467F6C-4214-EF7E-8699-A78A1CEC0B82"; +createNode nurbsCurve -n "legBack_R0_root6Shape" -p "legBack_R0_root"; + rename -uid "D949972A-4DE1-EDAC-AA5B-D79C0E02ED60"; setAttr ".ihi" 0; setAttr -k off ".v"; setAttr ".ove" yes; @@ -8077,10 +8013,10 @@ createNode nurbsCurve -n "legBack_R0_root3Shape" -p "legBack_R0_root"; -0.125 -0.125 -0.125 ; createNode transform -n "legBack_R0_knee" -p "legBack_R0_root"; - rename -uid "946AF9FC-4EBA-3BAA-EA14-B19C99228381"; + rename -uid "B87985BB-461D-407E-5ECD-0DA613DFB201"; addAttr -ci true -sn "isGearGuide" -ln "isGearGuide" -dv 1 -min 0 -max 1 -at "bool"; setAttr -k off -cb on ".v"; - setAttr ".t" -type "double3" 3.5527136788005009e-015 -1.1559508743798506 0.33714517700502222 ; + setAttr ".t" -type "double3" 3.1086244689504383e-015 -1.1559508743798506 0.337145177005022 ; setAttr -l on -k off -cb on ".tx"; setAttr -k off -cb on ".ty"; setAttr -k off -cb on ".tz"; @@ -8088,12 +8024,12 @@ createNode transform -n "legBack_R0_knee" -p "legBack_R0_root"; setAttr -l on -k off -cb on ".ry"; setAttr -l on -k off -cb on ".rz"; setAttr -cb on ".ro"; - setAttr ".s" -type "double3" 1.0000000000000007 1.0000000000000007 1.0000000000000004 ; + setAttr ".s" -type "double3" 1.0000000000000007 1.0000000000000009 1.0000000000000004 ; setAttr -k off -cb on ".sx"; setAttr -k off -cb on ".sy"; setAttr -k off -cb on ".sz"; createNode nurbsCurve -n "legBack_R0_kneeShape" -p "legBack_R0_knee"; - rename -uid "F684946D-4D6B-899F-6C81-02BB6B2BCBB6"; + rename -uid "7F09D014-49A7-194E-3611-34AD3D164DF4"; setAttr ".ihi" 0; setAttr -k off ".v"; setAttr ".ove" yes; @@ -8105,8 +8041,8 @@ createNode nurbsCurve -n "legBack_R0_kneeShape" -p "legBack_R0_knee"; 0.25 0 0 -0.25 0 0 ; -createNode nurbsCurve -n "legBack_R0_knee1Shape" -p "legBack_R0_knee"; - rename -uid "1D286B1E-4414-6C03-1FB2-3AB4122EFB9B"; +createNode nurbsCurve -n "legBack_R0_knee4Shape" -p "legBack_R0_knee"; + rename -uid "253B479A-46F1-323C-6B17-F48068A2B39B"; setAttr ".ihi" 0; setAttr -k off ".v"; setAttr ".ove" yes; @@ -8118,8 +8054,8 @@ createNode nurbsCurve -n "legBack_R0_knee1Shape" -p "legBack_R0_knee"; 0 0.25 0 0 -0.25 0 ; -createNode nurbsCurve -n "legBack_R0_knee2Shape" -p "legBack_R0_knee"; - rename -uid "A712AB77-4C83-3610-26F8-44AE8AF68FE8"; +createNode nurbsCurve -n "legBack_R0_knee5Shape" -p "legBack_R0_knee"; + rename -uid "7750FECD-40D9-4BC6-2297-2C859FCC9AF9"; setAttr ".ihi" 0; setAttr -k off ".v"; setAttr ".ove" yes; @@ -8131,8 +8067,8 @@ createNode nurbsCurve -n "legBack_R0_knee2Shape" -p "legBack_R0_knee"; 0 0 0.25 0 0 -0.25 ; -createNode nurbsCurve -n "legBack_R0_knee3Shape" -p "legBack_R0_knee"; - rename -uid "852C6E81-45BD-4FBC-67CD-87A2643AC005"; +createNode nurbsCurve -n "legBack_R0_knee6Shape" -p "legBack_R0_knee"; + rename -uid "54E4F0F3-425A-26FB-A95C-399E54134F72"; setAttr ".ihi" 0; setAttr -k off ".v"; setAttr ".ove" yes; @@ -8149,8 +8085,8 @@ createNode nurbsCurve -n "legBack_R0_knee3Shape" -p "legBack_R0_knee"; 0 -0.1875 0 -0.1875 0 0 ; -createNode nurbsCurve -n "legBack_R0_knee3_0crvShape" -p "legBack_R0_knee"; - rename -uid "861EFFF2-4982-942E-ABC7-FD911A291A13"; +createNode nurbsCurve -n "legBack_R0_knee6_0crvShape" -p "legBack_R0_knee"; + rename -uid "6D24539D-452D-77DD-C598-438CB0445DA3"; setAttr ".ihi" 0; setAttr -k off ".v"; setAttr ".ove" yes; @@ -8167,8 +8103,8 @@ createNode nurbsCurve -n "legBack_R0_knee3_0crvShape" -p "legBack_R0_knee"; 0 0 -0.1875 -0.1875 0 0 ; -createNode nurbsCurve -n "legBack_R0_knee3_1crvShape" -p "legBack_R0_knee"; - rename -uid "121C6BB3-4CD2-AC23-76E0-3A920F8AB7E9"; +createNode nurbsCurve -n "legBack_R0_knee6_1crvShape" -p "legBack_R0_knee"; + rename -uid "1A6AF126-45F5-269B-1142-FD9E637009D1"; setAttr ".ihi" 0; setAttr -k off ".v"; setAttr ".ove" yes; @@ -8186,10 +8122,10 @@ createNode nurbsCurve -n "legBack_R0_knee3_1crvShape" -p "legBack_R0_knee"; 0 0 -0.1875 ; createNode transform -n "legBack_R0_ankle" -p "legBack_R0_knee"; - rename -uid "A76AA381-41D1-9758-1A6F-4993888908B0"; + rename -uid "C4A0FEA1-46C7-30B0-4A25-698E9DBE5AF6"; addAttr -ci true -sn "isGearGuide" -ln "isGearGuide" -dv 1 -min 0 -max 1 -at "bool"; setAttr -k off -cb on ".v"; - setAttr ".t" -type "double3" 2.2204460492503131e-015 -1.4950431842245462 -0.57333193410462346 ; + setAttr ".t" -type "double3" 2.2204460492503131e-015 -1.4950431842245453 -0.57333193410462324 ; setAttr -l on -k off -cb on ".tx"; setAttr -k off -cb on ".ty"; setAttr -k off -cb on ".tz"; @@ -8197,12 +8133,12 @@ createNode transform -n "legBack_R0_ankle" -p "legBack_R0_knee"; setAttr -l on -k off -cb on ".ry"; setAttr -l on -k off -cb on ".rz"; setAttr -cb on ".ro"; - setAttr ".s" -type "double3" 1.0000000000000004 0.99999999999999989 1.0000000000000004 ; + setAttr ".s" -type "double3" 1.0000000000000004 0.99999999999999944 1.0000000000000007 ; setAttr -k off -cb on ".sx"; setAttr -k off -cb on ".sy"; setAttr -k off -cb on ".sz"; createNode nurbsCurve -n "legBack_R0_ankleShape" -p "legBack_R0_ankle"; - rename -uid "45D2296C-457F-52AC-DBB2-9AA88833393E"; + rename -uid "AA2BD92B-4F1E-598E-D7C1-3FBB25F67EA3"; setAttr ".ihi" 0; setAttr -k off ".v"; setAttr ".ove" yes; @@ -8214,8 +8150,8 @@ createNode nurbsCurve -n "legBack_R0_ankleShape" -p "legBack_R0_ankle"; 0.25 0 0 -0.25 0 0 ; -createNode nurbsCurve -n "legBack_R0_ankle1Shape" -p "legBack_R0_ankle"; - rename -uid "05DBDA7F-43A8-EA98-97FE-18A5B75FD222"; +createNode nurbsCurve -n "legBack_R0_ankle4Shape" -p "legBack_R0_ankle"; + rename -uid "D06DA2A7-4F98-F51B-E3EC-CB9F7D33AADA"; setAttr ".ihi" 0; setAttr -k off ".v"; setAttr ".ove" yes; @@ -8227,8 +8163,8 @@ createNode nurbsCurve -n "legBack_R0_ankle1Shape" -p "legBack_R0_ankle"; 0 0.25 0 0 -0.25 0 ; -createNode nurbsCurve -n "legBack_R0_ankle2Shape" -p "legBack_R0_ankle"; - rename -uid "568E0EA0-4396-81E9-B347-62BE30DE37CB"; +createNode nurbsCurve -n "legBack_R0_ankle5Shape" -p "legBack_R0_ankle"; + rename -uid "FB422D33-4C07-0A9E-BAE3-C5A6D6B18C24"; setAttr ".ihi" 0; setAttr -k off ".v"; setAttr ".ove" yes; @@ -8240,8 +8176,8 @@ createNode nurbsCurve -n "legBack_R0_ankle2Shape" -p "legBack_R0_ankle"; 0 0 0.25 0 0 -0.25 ; -createNode nurbsCurve -n "legBack_R0_ankle3Shape" -p "legBack_R0_ankle"; - rename -uid "8E9953D7-4B67-6ABF-D8C4-0EBE25242808"; +createNode nurbsCurve -n "legBack_R0_ankle6Shape" -p "legBack_R0_ankle"; + rename -uid "FAB98D6B-4068-2CDD-EF6F-C89BDF436059"; setAttr ".ihi" 0; setAttr -k off ".v"; setAttr ".ove" yes; @@ -8258,8 +8194,8 @@ createNode nurbsCurve -n "legBack_R0_ankle3Shape" -p "legBack_R0_ankle"; 0 -0.1875 0 -0.1875 0 0 ; -createNode nurbsCurve -n "legBack_R0_ankle3_0crvShape" -p "legBack_R0_ankle"; - rename -uid "378F45F0-4C32-AF86-AB67-529CE23985C3"; +createNode nurbsCurve -n "legBack_R0_ankle6_0crvShape" -p "legBack_R0_ankle"; + rename -uid "244579BD-47E4-5009-E4F1-7388DCE2F34D"; setAttr ".ihi" 0; setAttr -k off ".v"; setAttr ".ove" yes; @@ -8276,8 +8212,8 @@ createNode nurbsCurve -n "legBack_R0_ankle3_0crvShape" -p "legBack_R0_ankle"; 0 0 -0.1875 -0.1875 0 0 ; -createNode nurbsCurve -n "legBack_R0_ankle3_1crvShape" -p "legBack_R0_ankle"; - rename -uid "ADA943AD-4CBB-09B0-1E61-2AA7AFAD9FC3"; +createNode nurbsCurve -n "legBack_R0_ankle6_1crvShape" -p "legBack_R0_ankle"; + rename -uid "D949142E-4F7C-F31F-F755-45833E4F15D8"; setAttr ".ihi" 0; setAttr -k off ".v"; setAttr ".ove" yes; @@ -8295,10 +8231,10 @@ createNode nurbsCurve -n "legBack_R0_ankle3_1crvShape" -p "legBack_R0_ankle"; 0 0 -0.1875 ; createNode transform -n "legBack_R0_foot" -p "legBack_R0_ankle"; - rename -uid "1620AE42-442D-7F2B-1B0F-60A0EB9BDAC6"; + rename -uid "48514193-4A22-FBEA-2024-3D8D8A611285"; addAttr -ci true -sn "isGearGuide" -ln "isGearGuide" -dv 1 -min 0 -max 1 -at "bool"; setAttr -k off -cb on ".v"; - setAttr ".t" -type "double3" 1.3322676295501878e-015 -0.54805580751979255 0.1505052208987292 ; + setAttr ".t" -type "double3" 1.1102230246251565e-015 -0.54805580751979266 0.15050522089872898 ; setAttr -l on -k off -cb on ".tx"; setAttr -k off -cb on ".ty"; setAttr -k off -cb on ".tz"; @@ -8306,12 +8242,12 @@ createNode transform -n "legBack_R0_foot" -p "legBack_R0_ankle"; setAttr -l on -k off -cb on ".ry"; setAttr -l on -k off -cb on ".rz"; setAttr -cb on ".ro"; - setAttr ".s" -type "double3" 0.99999999999999956 1.0000000000000007 1 ; + setAttr ".s" -type "double3" 0.99999999999999956 1.0000000000000009 0.99999999999999989 ; setAttr -k off -cb on ".sx"; setAttr -k off -cb on ".sy"; setAttr -k off -cb on ".sz"; createNode nurbsCurve -n "legBack_R0_footShape" -p "legBack_R0_foot"; - rename -uid "BD877DCC-420E-1E1A-1897-32AC0EC1324B"; + rename -uid "3DB28E7C-4FAC-4DDC-458C-739F4115A35E"; setAttr ".ihi" 0; setAttr -k off ".v"; setAttr ".ove" yes; @@ -8323,8 +8259,8 @@ createNode nurbsCurve -n "legBack_R0_footShape" -p "legBack_R0_foot"; 0.25 0 0 -0.25 0 0 ; -createNode nurbsCurve -n "legBack_R0_foot1Shape" -p "legBack_R0_foot"; - rename -uid "275D82A1-4497-18AB-8D78-359E4F106FC1"; +createNode nurbsCurve -n "legBack_R0_foot4Shape" -p "legBack_R0_foot"; + rename -uid "ED5EFD9D-4443-DDCB-3C7D-EAA4C694D157"; setAttr ".ihi" 0; setAttr -k off ".v"; setAttr ".ove" yes; @@ -8336,8 +8272,8 @@ createNode nurbsCurve -n "legBack_R0_foot1Shape" -p "legBack_R0_foot"; 0 0.25 0 0 -0.25 0 ; -createNode nurbsCurve -n "legBack_R0_foot2Shape" -p "legBack_R0_foot"; - rename -uid "B7CD5F18-42D8-BBF2-5EFB-0CBB9D8D6B5E"; +createNode nurbsCurve -n "legBack_R0_foot5Shape" -p "legBack_R0_foot"; + rename -uid "8FB8BD24-47AD-83FA-7C4F-14B45C4D29C9"; setAttr ".ihi" 0; setAttr -k off ".v"; setAttr ".ove" yes; @@ -8349,8 +8285,8 @@ createNode nurbsCurve -n "legBack_R0_foot2Shape" -p "legBack_R0_foot"; 0 0 0.25 0 0 -0.25 ; -createNode nurbsCurve -n "legBack_R0_foot3Shape" -p "legBack_R0_foot"; - rename -uid "09CD6890-48C7-0DE2-4AA4-50AB1C730B19"; +createNode nurbsCurve -n "legBack_R0_foot6Shape" -p "legBack_R0_foot"; + rename -uid "93409780-4929-5FC1-6648-3481F3DEBD14"; setAttr ".ihi" 0; setAttr -k off ".v"; setAttr ".ove" yes; @@ -8367,8 +8303,8 @@ createNode nurbsCurve -n "legBack_R0_foot3Shape" -p "legBack_R0_foot"; 0 -0.1875 0 -0.1875 0 0 ; -createNode nurbsCurve -n "legBack_R0_foot3_0crvShape" -p "legBack_R0_foot"; - rename -uid "BA9D2656-4740-C212-039F-A0A8264C9DE0"; +createNode nurbsCurve -n "legBack_R0_foot6_0crvShape" -p "legBack_R0_foot"; + rename -uid "390C8D1C-44B6-217D-33B9-FC8CF03EC443"; setAttr ".ihi" 0; setAttr -k off ".v"; setAttr ".ove" yes; @@ -8385,8 +8321,8 @@ createNode nurbsCurve -n "legBack_R0_foot3_0crvShape" -p "legBack_R0_foot"; 0 0 -0.1875 -0.1875 0 0 ; -createNode nurbsCurve -n "legBack_R0_foot3_1crvShape" -p "legBack_R0_foot"; - rename -uid "05D315E4-4CA9-E090-66AC-F3BF8C6E9FC2"; +createNode nurbsCurve -n "legBack_R0_foot6_1crvShape" -p "legBack_R0_foot"; + rename -uid "6AC0ACCB-4B70-A31F-C6C8-C387AD96F1B5"; setAttr ".ihi" 0; setAttr -k off ".v"; setAttr ".ove" yes; @@ -8404,10 +8340,10 @@ createNode nurbsCurve -n "legBack_R0_foot3_1crvShape" -p "legBack_R0_foot"; 0 0 -0.1875 ; createNode transform -n "legBack_R0_eff" -p "legBack_R0_foot"; - rename -uid "2AADA600-443E-E6D7-351D-1C8D62EA5574"; + rename -uid "F99FEB71-4A08-3100-EC86-17BBF050CBF6"; addAttr -ci true -sn "isGearGuide" -ln "isGearGuide" -dv 1 -min 0 -max 1 -at "bool"; setAttr -k off -cb on ".v"; - setAttr ".t" -type "double3" 1.7763568394002505e-015 7.6327832942979512e-016 0.28135643819707457 ; + setAttr ".t" -type "double3" 1.3322676295501878e-015 6.9388939039072284e-016 0.28135643819707479 ; setAttr -k off -cb on ".tx"; setAttr -k off -cb on ".ty"; setAttr -k off -cb on ".tz"; @@ -8415,12 +8351,12 @@ createNode transform -n "legBack_R0_eff" -p "legBack_R0_foot"; setAttr -k off -cb on ".ry"; setAttr -k off -cb on ".rz"; setAttr -cb on ".ro"; - setAttr ".s" -type "double3" 0.99999999999999967 0.99999999999999911 0.99999999999999911 ; + setAttr ".s" -type "double3" 0.99999999999999956 0.99999999999999889 0.99999999999999889 ; setAttr -k off -cb on ".sx"; setAttr -k off -cb on ".sy"; setAttr -k off -cb on ".sz"; createNode nurbsCurve -n "legBack_R0_effShape" -p "legBack_R0_eff"; - rename -uid "38B951FA-4300-DEB4-BF4A-62B5FB74B70F"; + rename -uid "63165659-487D-3070-CC1E-E0A3EB006383"; setAttr ".ihi" 0; setAttr -k off ".v"; setAttr ".ove" yes; @@ -8432,8 +8368,8 @@ createNode nurbsCurve -n "legBack_R0_effShape" -p "legBack_R0_eff"; 0.25 0 0 -0.25 0 0 ; -createNode nurbsCurve -n "legBack_R0_eff1Shape" -p "legBack_R0_eff"; - rename -uid "DDC65033-475A-AB40-5637-DC9716F12AA3"; +createNode nurbsCurve -n "legBack_R0_eff4Shape" -p "legBack_R0_eff"; + rename -uid "47CBFA3F-4D11-641E-8E74-04B6180AC8D6"; setAttr ".ihi" 0; setAttr -k off ".v"; setAttr ".ove" yes; @@ -8445,8 +8381,8 @@ createNode nurbsCurve -n "legBack_R0_eff1Shape" -p "legBack_R0_eff"; 0 0.25 0 0 -0.25 0 ; -createNode nurbsCurve -n "legBack_R0_eff2Shape" -p "legBack_R0_eff"; - rename -uid "57E4C922-4B29-CC70-A2ED-F1B10311644D"; +createNode nurbsCurve -n "legBack_R0_eff5Shape" -p "legBack_R0_eff"; + rename -uid "C1D213BF-429D-BDAA-AD8F-6F98C40F5E34"; setAttr ".ihi" 0; setAttr -k off ".v"; setAttr ".ove" yes; @@ -8458,8 +8394,8 @@ createNode nurbsCurve -n "legBack_R0_eff2Shape" -p "legBack_R0_eff"; 0 0 0.25 0 0 -0.25 ; -createNode nurbsCurve -n "legBack_R0_eff3Shape" -p "legBack_R0_eff"; - rename -uid "F7C8DF6A-46E1-9800-BA74-33A2B72C9F9C"; +createNode nurbsCurve -n "legBack_R0_eff6Shape" -p "legBack_R0_eff"; + rename -uid "05F9BC79-43D1-FFF2-8E5E-5A9A089667FE"; setAttr ".ihi" 0; setAttr -k off ".v"; setAttr ".ove" yes; @@ -8476,8 +8412,8 @@ createNode nurbsCurve -n "legBack_R0_eff3Shape" -p "legBack_R0_eff"; 0 -0.1875 0 -0.1875 0 0 ; -createNode nurbsCurve -n "legBack_R0_eff3_0crvShape" -p "legBack_R0_eff"; - rename -uid "47A96C66-40BD-EC68-F3FF-8D92AF30E17A"; +createNode nurbsCurve -n "legBack_R0_eff6_0crvShape" -p "legBack_R0_eff"; + rename -uid "EA8A3A6F-45CC-06AA-3D7B-4B921FA606E8"; setAttr ".ihi" 0; setAttr -k off ".v"; setAttr ".ove" yes; @@ -8494,8 +8430,8 @@ createNode nurbsCurve -n "legBack_R0_eff3_0crvShape" -p "legBack_R0_eff"; 0 0 -0.1875 -0.1875 0 0 ; -createNode nurbsCurve -n "legBack_R0_eff3_1crvShape" -p "legBack_R0_eff"; - rename -uid "45E62EB3-422D-EED7-7D0A-C6B0FB1E8D0F"; +createNode nurbsCurve -n "legBack_R0_eff6_1crvShape" -p "legBack_R0_eff"; + rename -uid "9D8E096C-427D-5B43-7207-DDA0FC30F890"; setAttr ".ihi" 0; setAttr -k off ".v"; setAttr ".ove" yes; @@ -8513,7 +8449,7 @@ createNode nurbsCurve -n "legBack_R0_eff3_1crvShape" -p "legBack_R0_eff"; 0 0 -0.1875 ; createNode transform -n "footBack_R0_root" -p "legBack_R0_foot"; - rename -uid "69E1D63E-4FE5-22DB-AD35-5A94F468CBAA"; + rename -uid "F285FA53-405F-8783-4104-3C9C9A84DA07"; addAttr -ci true -sn "isGearGuide" -ln "isGearGuide" -dv 1 -min 0 -max 1 -at "bool"; addAttr -ci true -sn "comp_type" -ln "comp_type" -dt "string"; addAttr -ci true -sn "comp_name" -ln "comp_name" -dt "string"; @@ -8522,11 +8458,11 @@ createNode transform -n "footBack_R0_root" -p "legBack_R0_foot"; addAttr -ci true -sn "connector" -ln "connector" -dt "string"; addAttr -ci true -sn "ui_host" -ln "ui_host" -dt "string"; addAttr -ci true -sn "ctlGrp" -ln "ctlGrp" -dt "string"; - addAttr -ci true -sn "useRollCtl" -ln "useRollCtl" -min 0 -max 1 -at "bool"; + addAttr -ci true -sn "useRollCtl" -ln "useRollCtl" -dv 1 -min 0 -max 1 -at "bool"; addAttr -ci true -sn "useIndex" -ln "useIndex" -min 0 -max 1 -at "bool"; - addAttr -ci true -sn "parentJointIndex" -ln "parentJointIndex" -at "long"; + addAttr -ci true -sn "parentJointIndex" -ln "parentJointIndex" -dv -1 -at "long"; setAttr -k off -cb on ".v"; - setAttr ".t" -type "double3" 8.8817841970012523e-016 8.0491169285323849e-016 -4.4408920985006262e-016 ; + setAttr ".t" -type "double3" 6.6613381477509392e-016 8.1878948066105295e-016 -2.2204460492503131e-016 ; setAttr -k off -cb on ".tx"; setAttr -k off -cb on ".ty"; setAttr -k off -cb on ".tz"; @@ -8534,7 +8470,7 @@ createNode transform -n "footBack_R0_root" -p "legBack_R0_foot"; setAttr -k off -cb on ".ry"; setAttr -k off -cb on ".rz"; setAttr -cb on ".ro"; - setAttr ".s" -type "double3" 0.16356254765398096 0.16356254765398087 0.16356254765398084 ; + setAttr ".s" -type "double3" 0.16356254765398093 0.16356254765398084 0.16356254765398082 ; setAttr -k off -cb on ".sx"; setAttr -k off -cb on ".sy"; setAttr -k off -cb on ".sz"; @@ -8544,10 +8480,8 @@ createNode transform -n "footBack_R0_root" -p "legBack_R0_foot"; setAttr ".connector" -type "string" "leg_3jnt_01"; setAttr ".ui_host" -type "string" "backLegUI_R0_root"; setAttr ".ctlGrp" -type "string" ""; - setAttr ".useRollCtl" yes; - setAttr ".parentJointIndex" -1; createNode nurbsCurve -n "footBack_R0_rootShape" -p "footBack_R0_root"; - rename -uid "A155AD28-4C4E-4E8F-7696-7AB999F8F8C3"; + rename -uid "AA947537-4AEB-6315-4A80-3585AF363EA9"; setAttr ".ihi" 0; setAttr -k off ".v"; setAttr ".ove" yes; @@ -8559,8 +8493,8 @@ createNode nurbsCurve -n "footBack_R0_rootShape" -p "footBack_R0_root"; 0.25 0 0 -0.25 0 0 ; -createNode nurbsCurve -n "footBack_R0_root1Shape" -p "footBack_R0_root"; - rename -uid "A6D0F45F-4A45-0124-7CFD-2AB5614ED412"; +createNode nurbsCurve -n "footBack_R0_root4Shape" -p "footBack_R0_root"; + rename -uid "D9951079-4747-8ECD-C4D0-3BB8495040D8"; setAttr ".ihi" 0; setAttr -k off ".v"; setAttr ".ove" yes; @@ -8572,8 +8506,8 @@ createNode nurbsCurve -n "footBack_R0_root1Shape" -p "footBack_R0_root"; 0 0.25 0 0 -0.25 0 ; -createNode nurbsCurve -n "footBack_R0_root2Shape" -p "footBack_R0_root"; - rename -uid "2BFF6121-4609-6A31-8525-0FB3738FB914"; +createNode nurbsCurve -n "footBack_R0_root5Shape" -p "footBack_R0_root"; + rename -uid "47591DAF-4407-294A-E0E2-24ADAB6A78F1"; setAttr ".ihi" 0; setAttr -k off ".v"; setAttr ".ove" yes; @@ -8585,8 +8519,8 @@ createNode nurbsCurve -n "footBack_R0_root2Shape" -p "footBack_R0_root"; 0 0 0.25 0 0 -0.25 ; -createNode nurbsCurve -n "footBack_R0_root3Shape" -p "footBack_R0_root"; - rename -uid "CBF2063E-4875-48E7-BBCF-4ABF18D6DFBB"; +createNode nurbsCurve -n "footBack_R0_root6Shape" -p "footBack_R0_root"; + rename -uid "DFD0AABD-4518-C0A9-9AC2-2E8C7DA366DC"; setAttr ".ihi" 0; setAttr -k off ".v"; setAttr ".ove" yes; @@ -8613,10 +8547,10 @@ createNode nurbsCurve -n "footBack_R0_root3Shape" -p "footBack_R0_root"; -0.125 -0.125 -0.125 ; createNode transform -n "footBack_R0_0_loc" -p "footBack_R0_root"; - rename -uid "493AAD14-49FB-CF8D-9A19-B3B594438EC8"; + rename -uid "0BB011C3-4A43-1085-4833-A6B2F554A06D"; addAttr -ci true -sn "isGearGuide" -ln "isGearGuide" -dv 1 -min 0 -max 1 -at "bool"; setAttr -k off -cb on ".v"; - setAttr ".t" -type "double3" -1.5987211554602254e-014 1.1102230246251565e-016 0.54565565303279762 ; + setAttr ".t" -type "double3" -1.4210854715202004e-014 -5.5511151231257827e-017 0.54565565303279584 ; setAttr -k off -cb on ".tx"; setAttr -k off -cb on ".ty"; setAttr -k off -cb on ".tz"; @@ -8624,12 +8558,12 @@ createNode transform -n "footBack_R0_0_loc" -p "footBack_R0_root"; setAttr -k off -cb on ".ry"; setAttr -k off -cb on ".rz"; setAttr -cb on ".ro"; - setAttr ".s" -type "double3" 0.99999999999999989 1.0000000000000002 1.0000000000000007 ; + setAttr ".s" -type "double3" 0.99999999999999978 1.0000000000000002 1.0000000000000009 ; setAttr -k off -cb on ".sx"; setAttr -k off -cb on ".sy"; setAttr -k off -cb on ".sz"; createNode nurbsCurve -n "footBack_R0_0_locShape" -p "footBack_R0_0_loc"; - rename -uid "309B5ABC-47B5-3A3B-674C-E58774A939AD"; + rename -uid "5E40C53A-43CB-0413-64FA-44BC5BC6AD6D"; setAttr ".ihi" 0; setAttr -k off ".v"; setAttr ".ove" yes; @@ -8641,8 +8575,8 @@ createNode nurbsCurve -n "footBack_R0_0_locShape" -p "footBack_R0_0_loc"; 0.25 0 0 -0.25 0 0 ; -createNode nurbsCurve -n "footBack_R0_0_loc1Shape" -p "footBack_R0_0_loc"; - rename -uid "7AD4BAB5-4665-340F-7E82-3DABFF3BAD5E"; +createNode nurbsCurve -n "footBack_R0_0_loc4Shape" -p "footBack_R0_0_loc"; + rename -uid "68EF8543-46B8-39F4-BF27-D9950C68F697"; setAttr ".ihi" 0; setAttr -k off ".v"; setAttr ".ove" yes; @@ -8654,8 +8588,8 @@ createNode nurbsCurve -n "footBack_R0_0_loc1Shape" -p "footBack_R0_0_loc"; 0 0.25 0 0 -0.25 0 ; -createNode nurbsCurve -n "footBack_R0_0_loc2Shape" -p "footBack_R0_0_loc"; - rename -uid "4D7F4FF4-483D-DCF0-0A21-2690526B394F"; +createNode nurbsCurve -n "footBack_R0_0_loc5Shape" -p "footBack_R0_0_loc"; + rename -uid "981F86E0-4AB5-1C93-6D1E-C8860DD6251A"; setAttr ".ihi" 0; setAttr -k off ".v"; setAttr ".ove" yes; @@ -8667,8 +8601,8 @@ createNode nurbsCurve -n "footBack_R0_0_loc2Shape" -p "footBack_R0_0_loc"; 0 0 0.25 0 0 -0.25 ; -createNode nurbsCurve -n "footBack_R0_0_loc3Shape" -p "footBack_R0_0_loc"; - rename -uid "83BE8EF0-4FE2-C430-9F81-91AE78C48F3B"; +createNode nurbsCurve -n "footBack_R0_0_loc6Shape" -p "footBack_R0_0_loc"; + rename -uid "7FBC2386-4096-B3F7-38D5-B780763E6C06"; setAttr ".ihi" 0; setAttr -k off ".v"; setAttr ".ove" yes; @@ -8685,8 +8619,8 @@ createNode nurbsCurve -n "footBack_R0_0_loc3Shape" -p "footBack_R0_0_loc"; 0 -0.1875 0 -0.1875 0 0 ; -createNode nurbsCurve -n "footBack_R0_0_loc3_0crvShape" -p "footBack_R0_0_loc"; - rename -uid "12913D4B-4E1F-7D35-D568-E08104A09AFF"; +createNode nurbsCurve -n "footBack_R0_0_loc6_0crvShape" -p "footBack_R0_0_loc"; + rename -uid "EDA26D41-4595-D3F0-38E8-678CF4C4E1E4"; setAttr ".ihi" 0; setAttr -k off ".v"; setAttr ".ove" yes; @@ -8703,8 +8637,8 @@ createNode nurbsCurve -n "footBack_R0_0_loc3_0crvShape" -p "footBack_R0_0_loc"; 0 0 -0.1875 -0.1875 0 0 ; -createNode nurbsCurve -n "footBack_R0_0_loc3_1crvShape" -p "footBack_R0_0_loc"; - rename -uid "904A28FA-4322-2D78-C64E-778087A29025"; +createNode nurbsCurve -n "footBack_R0_0_loc6_1crvShape" -p "footBack_R0_0_loc"; + rename -uid "B4DB6B4A-4F72-9D71-5BB7-B984F1CDC8F4"; setAttr ".ihi" 0; setAttr -k off ".v"; setAttr ".ove" yes; @@ -8722,10 +8656,10 @@ createNode nurbsCurve -n "footBack_R0_0_loc3_1crvShape" -p "footBack_R0_0_loc"; 0 0 -0.1875 ; createNode transform -n "footBack_R0_1_loc" -p "footBack_R0_0_loc"; - rename -uid "63C175AE-492A-5A40-2A3E-D887E35616F5"; + rename -uid "99083FC0-431B-6FCC-20B5-A1B6361E083A"; addAttr -ci true -sn "isGearGuide" -ln "isGearGuide" -dv 1 -min 0 -max 1 -at "bool"; setAttr -k off -cb on ".v"; - setAttr ".t" -type "double3" 3.5527136788005009e-015 -0.34547277013915567 0.77046072389793174 ; + setAttr ".t" -type "double3" 1.7763568394002505e-015 -0.34547277013915595 0.77046072389793352 ; setAttr -k off -cb on ".tx"; setAttr -k off -cb on ".ty"; setAttr -k off -cb on ".tz"; @@ -8733,12 +8667,12 @@ createNode transform -n "footBack_R0_1_loc" -p "footBack_R0_0_loc"; setAttr -k off -cb on ".ry"; setAttr -k off -cb on ".rz"; setAttr -cb on ".ro"; - setAttr ".s" -type "double3" 1.0000000000000009 0.99999999999999978 1.0000000000000004 ; + setAttr ".s" -type "double3" 1.0000000000000011 0.99999999999999978 1.0000000000000004 ; setAttr -k off -cb on ".sx"; setAttr -k off -cb on ".sy"; setAttr -k off -cb on ".sz"; createNode nurbsCurve -n "footBack_R0_1_locShape" -p "footBack_R0_1_loc"; - rename -uid "0E78D748-4822-6211-08E6-2990EFDB37E8"; + rename -uid "CF1272F9-4567-AFE6-FFF3-E8A2A7A1ADAE"; setAttr ".ihi" 0; setAttr -k off ".v"; setAttr ".ove" yes; @@ -8750,8 +8684,8 @@ createNode nurbsCurve -n "footBack_R0_1_locShape" -p "footBack_R0_1_loc"; 0.25 0 0 -0.25 0 0 ; -createNode nurbsCurve -n "footBack_R0_1_loc1Shape" -p "footBack_R0_1_loc"; - rename -uid "5DB8FA90-4E2C-16EC-09E8-5C88FE8C8030"; +createNode nurbsCurve -n "footBack_R0_1_loc4Shape" -p "footBack_R0_1_loc"; + rename -uid "5C87CFAF-473C-E9B2-FF43-6198D68630EB"; setAttr ".ihi" 0; setAttr -k off ".v"; setAttr ".ove" yes; @@ -8763,8 +8697,8 @@ createNode nurbsCurve -n "footBack_R0_1_loc1Shape" -p "footBack_R0_1_loc"; 0 0.25 0 0 -0.25 0 ; -createNode nurbsCurve -n "footBack_R0_1_loc2Shape" -p "footBack_R0_1_loc"; - rename -uid "16DB8866-40EE-3CE6-279E-3FB3CD4BDFDA"; +createNode nurbsCurve -n "footBack_R0_1_loc5Shape" -p "footBack_R0_1_loc"; + rename -uid "140C8FB8-4FDD-2D3D-52A1-FC82C682AB72"; setAttr ".ihi" 0; setAttr -k off ".v"; setAttr ".ove" yes; @@ -8776,8 +8710,8 @@ createNode nurbsCurve -n "footBack_R0_1_loc2Shape" -p "footBack_R0_1_loc"; 0 0 0.25 0 0 -0.25 ; -createNode nurbsCurve -n "footBack_R0_1_loc3Shape" -p "footBack_R0_1_loc"; - rename -uid "C4BABFA6-45CD-3D20-057F-9DB95FBC446C"; +createNode nurbsCurve -n "footBack_R0_1_loc6Shape" -p "footBack_R0_1_loc"; + rename -uid "B510D63C-4AD8-DE27-879B-5EA11782D537"; setAttr ".ihi" 0; setAttr -k off ".v"; setAttr ".ove" yes; @@ -8794,8 +8728,8 @@ createNode nurbsCurve -n "footBack_R0_1_loc3Shape" -p "footBack_R0_1_loc"; 0 -0.1875 0 -0.1875 0 0 ; -createNode nurbsCurve -n "footBack_R0_1_loc3_0crvShape" -p "footBack_R0_1_loc"; - rename -uid "A0F1F342-4F78-290D-C7F7-B4A3E2285F19"; +createNode nurbsCurve -n "footBack_R0_1_loc6_0crvShape" -p "footBack_R0_1_loc"; + rename -uid "DCDAA76B-4890-A558-210C-4A8B69DE4F36"; setAttr ".ihi" 0; setAttr -k off ".v"; setAttr ".ove" yes; @@ -8812,8 +8746,8 @@ createNode nurbsCurve -n "footBack_R0_1_loc3_0crvShape" -p "footBack_R0_1_loc"; 0 0 -0.1875 -0.1875 0 0 ; -createNode nurbsCurve -n "footBack_R0_1_loc3_1crvShape" -p "footBack_R0_1_loc"; - rename -uid "CD69AB85-4E96-94A1-FD84-0693199E01D9"; +createNode nurbsCurve -n "footBack_R0_1_loc6_1crvShape" -p "footBack_R0_1_loc"; + rename -uid "8555527F-4148-5582-AFC8-8CADB827AF9A"; setAttr ".ihi" 0; setAttr -k off ".v"; setAttr ".ove" yes; @@ -8831,19 +8765,19 @@ createNode nurbsCurve -n "footBack_R0_1_loc3_1crvShape" -p "footBack_R0_1_loc"; 0 0 -0.1875 ; createNode transform -n "footBack_R0_crv" -p "footBack_R0_root"; - rename -uid "FCD1B155-41B3-DEE8-4260-EEA2A0B8A43B"; + rename -uid "1A0872BE-424E-C547-F070-70AA296A6783"; setAttr ".ovdt" 1; setAttr ".ove" yes; - setAttr ".t" -type "double3" -10.980332218718958 -0.49678747209357621 11.584116504196617 ; + setAttr ".t" -type "double3" -10.980332218718956 -0.49678747209357832 11.584116504196617 ; setAttr ".r" -type "double3" 0 179.99999999999997 0 ; - setAttr ".s" -type "double3" 8.6433157474725775 8.6433157474725739 -8.6433157474725775 ; + setAttr ".s" -type "double3" 8.6433157474725775 8.6433157474725739 -8.6433157474725792 ; createNode nurbsCurve -n "footBack_R0_crvShape" -p "footBack_R0_crv"; - rename -uid "2B2B049D-4914-A2EB-6869-05A14D571FEF"; + rename -uid "74BBB355-4B78-9DAB-3C14-73A5A18321B5"; setAttr -k off ".v"; setAttr -s 4 ".iog[0].og"; setAttr ".tw" yes; createNode nurbsCurve -n "footBack_R0_crvShapeOrig" -p "footBack_R0_crv"; - rename -uid "042AC039-4920-8AA8-F15C-88934C25896F"; + rename -uid "B3CBEAB9-4F8F-56A0-A203-6BA30870C288"; setAttr -k off ".v"; setAttr ".io" yes; setAttr ".cc" -type "nurbsCurve" @@ -8855,10 +8789,10 @@ createNode nurbsCurve -n "footBack_R0_crvShapeOrig" -p "footBack_R0_crv"; 0 0 0 ; createNode transform -n "footBack_R0_heel" -p "footBack_R0_root"; - rename -uid "AADA33A1-4B6F-DF07-146C-A9BD84F4B0CD"; + rename -uid "CDBE241D-446E-EF0F-5379-99B86705E9C5"; addAttr -ci true -sn "isGearGuide" -ln "isGearGuide" -dv 1 -min 0 -max 1 -at "bool"; setAttr -k off -cb on ".v"; - setAttr ".t" -type "double3" -1.7763568394002505e-014 -0.34547277013915656 -0.37260003933978325 ; + setAttr ".t" -type "double3" -1.5987211554602254e-014 -0.34547277013915645 -0.37260003933978503 ; setAttr -k off -cb on ".tx"; setAttr -k off -cb on ".ty"; setAttr -k off -cb on ".tz"; @@ -8866,12 +8800,12 @@ createNode transform -n "footBack_R0_heel" -p "footBack_R0_root"; setAttr -k off -cb on ".ry"; setAttr -k off -cb on ".rz"; setAttr -cb on ".ro"; - setAttr ".s" -type "double3" 0.99999999999999989 1.0000000000000002 1.0000000000000007 ; + setAttr ".s" -type "double3" 0.99999999999999978 1.0000000000000002 1.0000000000000009 ; setAttr -k off -cb on ".sx"; setAttr -k off -cb on ".sy"; setAttr -k off -cb on ".sz"; createNode nurbsCurve -n "footBack_R0_heelShape" -p "footBack_R0_heel"; - rename -uid "7C15FDF4-4832-E6F2-E827-DB9E9EC0C8C0"; + rename -uid "18BA8C64-484A-14C2-1E86-FF9BFDF4C32C"; setAttr ".ihi" 0; setAttr -k off ".v"; setAttr ".ove" yes; @@ -8883,8 +8817,8 @@ createNode nurbsCurve -n "footBack_R0_heelShape" -p "footBack_R0_heel"; 0.25 0 0 -0.25 0 0 ; -createNode nurbsCurve -n "footBack_R0_heel1Shape" -p "footBack_R0_heel"; - rename -uid "6AA87FAC-429A-50F8-6771-15B10B75205C"; +createNode nurbsCurve -n "footBack_R0_heel4Shape" -p "footBack_R0_heel"; + rename -uid "8DF61FC1-4A34-00BF-EF15-05BD7506AC8C"; setAttr ".ihi" 0; setAttr -k off ".v"; setAttr ".ove" yes; @@ -8896,8 +8830,8 @@ createNode nurbsCurve -n "footBack_R0_heel1Shape" -p "footBack_R0_heel"; 0 0.25 0 0 -0.25 0 ; -createNode nurbsCurve -n "footBack_R0_heel2Shape" -p "footBack_R0_heel"; - rename -uid "425CB78B-40FD-EE8A-6E90-4F801988B6F1"; +createNode nurbsCurve -n "footBack_R0_heel5Shape" -p "footBack_R0_heel"; + rename -uid "999F91BF-4FD8-EABD-0831-47AEFC68A4BC"; setAttr ".ihi" 0; setAttr -k off ".v"; setAttr ".ove" yes; @@ -8909,8 +8843,8 @@ createNode nurbsCurve -n "footBack_R0_heel2Shape" -p "footBack_R0_heel"; 0 0 0.25 0 0 -0.25 ; -createNode nurbsCurve -n "footBack_R0_heel3Shape" -p "footBack_R0_heel"; - rename -uid "1FE38401-465E-45F9-9785-8592D15E38BA"; +createNode nurbsCurve -n "footBack_R0_heel6Shape" -p "footBack_R0_heel"; + rename -uid "3073D05E-4CE2-CD2D-1C5E-88A155E8E604"; setAttr ".ihi" 0; setAttr -k off ".v"; setAttr ".ove" yes; @@ -8927,8 +8861,8 @@ createNode nurbsCurve -n "footBack_R0_heel3Shape" -p "footBack_R0_heel"; 0 -0.1875 0 -0.1875 0 0 ; -createNode nurbsCurve -n "footBack_R0_heel3_0crvShape" -p "footBack_R0_heel"; - rename -uid "47773F2A-4FE9-352E-3E9B-09BAEBCCB9AD"; +createNode nurbsCurve -n "footBack_R0_heel6_0crvShape" -p "footBack_R0_heel"; + rename -uid "8E1BBAEF-4CB7-C4A5-5E48-D58AE574FCA9"; setAttr ".ihi" 0; setAttr -k off ".v"; setAttr ".ove" yes; @@ -8945,8 +8879,8 @@ createNode nurbsCurve -n "footBack_R0_heel3_0crvShape" -p "footBack_R0_heel"; 0 0 -0.1875 -0.1875 0 0 ; -createNode nurbsCurve -n "footBack_R0_heel3_1crvShape" -p "footBack_R0_heel"; - rename -uid "7A72A506-43B8-0E7B-B59A-EE9E0D015A7D"; +createNode nurbsCurve -n "footBack_R0_heel6_1crvShape" -p "footBack_R0_heel"; + rename -uid "A2E9A7E7-4C34-7709-9AAD-A18A1C6D3F34"; setAttr ".ihi" 0; setAttr -k off ".v"; setAttr ".ove" yes; @@ -8964,10 +8898,10 @@ createNode nurbsCurve -n "footBack_R0_heel3_1crvShape" -p "footBack_R0_heel"; 0 0 -0.1875 ; createNode transform -n "footBack_R0_outpivot" -p "footBack_R0_root"; - rename -uid "40616D99-4F3F-D697-5816-D5A063C7EFF0"; + rename -uid "92CDCE67-410A-0FC4-CFE1-09B0716090B9"; addAttr -ci true -sn "isGearGuide" -ln "isGearGuide" -dv 1 -min 0 -max 1 -at "bool"; setAttr -k off -cb on ".v"; - setAttr ".t" -type "double3" 1.0422206583139744 -0.34547277013915628 0.11497296198779239 ; + setAttr ".t" -type "double3" 1.0422206583139761 -0.3454727701391565 0.11497296198779061 ; setAttr -k off -cb on ".tx"; setAttr -k off -cb on ".ty"; setAttr -k off -cb on ".tz"; @@ -8975,12 +8909,12 @@ createNode transform -n "footBack_R0_outpivot" -p "footBack_R0_root"; setAttr -k off -cb on ".ry"; setAttr -k off -cb on ".rz"; setAttr -cb on ".ro"; - setAttr ".s" -type "double3" 0.99999999999999989 1.0000000000000002 1.0000000000000007 ; + setAttr ".s" -type "double3" 0.99999999999999978 1.0000000000000002 1.0000000000000009 ; setAttr -k off -cb on ".sx"; setAttr -k off -cb on ".sy"; setAttr -k off -cb on ".sz"; createNode nurbsCurve -n "footBack_R0_outpivotShape" -p "footBack_R0_outpivot"; - rename -uid "BE08395A-4D68-D372-1A3E-FF92A90BE0D1"; + rename -uid "5A53B976-4964-EC1F-32E3-3294873E65A6"; setAttr ".ihi" 0; setAttr -k off ".v"; setAttr ".ove" yes; @@ -8992,8 +8926,8 @@ createNode nurbsCurve -n "footBack_R0_outpivotShape" -p "footBack_R0_outpivot"; 0.25 0 0 -0.25 0 0 ; -createNode nurbsCurve -n "footBack_R0_outpivot1Shape" -p "footBack_R0_outpivot"; - rename -uid "B1B14E15-44D0-53B4-CAF0-A1A9C231EFA8"; +createNode nurbsCurve -n "footBack_R0_outpivot4Shape" -p "footBack_R0_outpivot"; + rename -uid "60A2EC1E-4603-53B5-31F5-E5945F3BBC80"; setAttr ".ihi" 0; setAttr -k off ".v"; setAttr ".ove" yes; @@ -9005,8 +8939,8 @@ createNode nurbsCurve -n "footBack_R0_outpivot1Shape" -p "footBack_R0_outpivot"; 0 0.25 0 0 -0.25 0 ; -createNode nurbsCurve -n "footBack_R0_outpivot2Shape" -p "footBack_R0_outpivot"; - rename -uid "9EF62CD0-4FE8-340B-572E-778CC372CC76"; +createNode nurbsCurve -n "footBack_R0_outpivot5Shape" -p "footBack_R0_outpivot"; + rename -uid "32E378AE-402D-D459-1E9A-A0B20C38CFB1"; setAttr ".ihi" 0; setAttr -k off ".v"; setAttr ".ove" yes; @@ -9018,8 +8952,8 @@ createNode nurbsCurve -n "footBack_R0_outpivot2Shape" -p "footBack_R0_outpivot"; 0 0 0.25 0 0 -0.25 ; -createNode nurbsCurve -n "footBack_R0_outpivot3Shape" -p "footBack_R0_outpivot"; - rename -uid "0BE48FFB-4495-8AA1-E9CA-6B91D067670E"; +createNode nurbsCurve -n "footBack_R0_outpivot6Shape" -p "footBack_R0_outpivot"; + rename -uid "FD678B76-4C97-2012-9DE7-3CB92F7CC17B"; setAttr ".ihi" 0; setAttr -k off ".v"; setAttr ".ove" yes; @@ -9036,8 +8970,8 @@ createNode nurbsCurve -n "footBack_R0_outpivot3Shape" -p "footBack_R0_outpivot"; 0 -0.1875 0 -0.1875 0 0 ; -createNode nurbsCurve -n "footBack_R0_outpivot3_0crvShape" -p "footBack_R0_outpivot"; - rename -uid "2D95104B-4982-7DCA-F8F8-138BF031E179"; +createNode nurbsCurve -n "footBack_R0_outpivot6_0crvShape" -p "footBack_R0_outpivot"; + rename -uid "5EC4FA04-4BB0-4085-2021-1D81D7F63461"; setAttr ".ihi" 0; setAttr -k off ".v"; setAttr ".ove" yes; @@ -9054,8 +8988,8 @@ createNode nurbsCurve -n "footBack_R0_outpivot3_0crvShape" -p "footBack_R0_outpi 0 0 -0.1875 -0.1875 0 0 ; -createNode nurbsCurve -n "footBack_R0_outpivot3_1crvShape" -p "footBack_R0_outpivot"; - rename -uid "68B541CF-4F87-C175-7604-FB98074FB65E"; +createNode nurbsCurve -n "footBack_R0_outpivot6_1crvShape" -p "footBack_R0_outpivot"; + rename -uid "3AF9588E-49D4-787C-99A0-5CAC1E1C17A9"; setAttr ".ihi" 0; setAttr -k off ".v"; setAttr ".ove" yes; @@ -9073,10 +9007,10 @@ createNode nurbsCurve -n "footBack_R0_outpivot3_1crvShape" -p "footBack_R0_outpi 0 0 -0.1875 ; createNode transform -n "footBack_R0_inpivot" -p "footBack_R0_root"; - rename -uid "6401BF6B-4B25-EDA8-59B9-34ADBC55245C"; + rename -uid "093A094B-4EA4-A47A-C9AD-1B912E7DEDFE"; addAttr -ci true -sn "isGearGuide" -ln "isGearGuide" -dv 1 -min 0 -max 1 -at "bool"; setAttr -k off -cb on ".v"; - setAttr ".t" -type "double3" -1.1682146826215707 -0.34547277013915628 0.21228136011731991 ; + setAttr ".t" -type "double3" -1.1682146826215689 -0.34547277013915628 0.21228136011731813 ; setAttr -k off -cb on ".tx"; setAttr -k off -cb on ".ty"; setAttr -k off -cb on ".tz"; @@ -9084,12 +9018,12 @@ createNode transform -n "footBack_R0_inpivot" -p "footBack_R0_root"; setAttr -k off -cb on ".ry"; setAttr -k off -cb on ".rz"; setAttr -cb on ".ro"; - setAttr ".s" -type "double3" 0.99999999999999989 1.0000000000000002 1.0000000000000007 ; + setAttr ".s" -type "double3" 0.99999999999999978 1.0000000000000002 1.0000000000000009 ; setAttr -k off -cb on ".sx"; setAttr -k off -cb on ".sy"; setAttr -k off -cb on ".sz"; createNode nurbsCurve -n "footBack_R0_inpivotShape" -p "footBack_R0_inpivot"; - rename -uid "7C3341B9-4966-A630-9F12-8CB2E5CBF514"; + rename -uid "DDC3925B-4EDF-E076-46EB-84978305EEAD"; setAttr ".ihi" 0; setAttr -k off ".v"; setAttr ".ove" yes; @@ -9101,8 +9035,8 @@ createNode nurbsCurve -n "footBack_R0_inpivotShape" -p "footBack_R0_inpivot"; 0.25 0 0 -0.25 0 0 ; -createNode nurbsCurve -n "footBack_R0_inpivot1Shape" -p "footBack_R0_inpivot"; - rename -uid "99612423-49C7-33EF-0AD9-E98E456E511F"; +createNode nurbsCurve -n "footBack_R0_inpivot4Shape" -p "footBack_R0_inpivot"; + rename -uid "BAF45AF7-4A12-65AB-DF37-CFB22ACC30E5"; setAttr ".ihi" 0; setAttr -k off ".v"; setAttr ".ove" yes; @@ -9114,8 +9048,8 @@ createNode nurbsCurve -n "footBack_R0_inpivot1Shape" -p "footBack_R0_inpivot"; 0 0.25 0 0 -0.25 0 ; -createNode nurbsCurve -n "footBack_R0_inpivot2Shape" -p "footBack_R0_inpivot"; - rename -uid "7BDE0DF0-4A88-91D2-63B3-0C81874FA138"; +createNode nurbsCurve -n "footBack_R0_inpivot5Shape" -p "footBack_R0_inpivot"; + rename -uid "AD3F1EC7-457F-79AB-1EB0-BC9B20EE9A9A"; setAttr ".ihi" 0; setAttr -k off ".v"; setAttr ".ove" yes; @@ -9127,8 +9061,8 @@ createNode nurbsCurve -n "footBack_R0_inpivot2Shape" -p "footBack_R0_inpivot"; 0 0 0.25 0 0 -0.25 ; -createNode nurbsCurve -n "footBack_R0_inpivot3Shape" -p "footBack_R0_inpivot"; - rename -uid "98484AF7-42C9-7423-D3F5-9C9DFDAADA37"; +createNode nurbsCurve -n "footBack_R0_inpivot6Shape" -p "footBack_R0_inpivot"; + rename -uid "7578B2BE-4DDE-7EE5-7010-A194812470FC"; setAttr ".ihi" 0; setAttr -k off ".v"; setAttr ".ove" yes; @@ -9145,8 +9079,8 @@ createNode nurbsCurve -n "footBack_R0_inpivot3Shape" -p "footBack_R0_inpivot"; 0 -0.1875 0 -0.1875 0 0 ; -createNode nurbsCurve -n "footBack_R0_inpivot3_0crvShape" -p "footBack_R0_inpivot"; - rename -uid "8FE0752D-47B4-5131-9DE4-9C9B079E6CC0"; +createNode nurbsCurve -n "footBack_R0_inpivot6_0crvShape" -p "footBack_R0_inpivot"; + rename -uid "2810C542-4FA1-D67B-0178-7CB056EEEBFC"; setAttr ".ihi" 0; setAttr -k off ".v"; setAttr ".ove" yes; @@ -9163,8 +9097,8 @@ createNode nurbsCurve -n "footBack_R0_inpivot3_0crvShape" -p "footBack_R0_inpivo 0 0 -0.1875 -0.1875 0 0 ; -createNode nurbsCurve -n "footBack_R0_inpivot3_1crvShape" -p "footBack_R0_inpivot"; - rename -uid "17B03CEC-4AFC-C076-D302-92B89D6756C4"; +createNode nurbsCurve -n "footBack_R0_inpivot6_1crvShape" -p "footBack_R0_inpivot"; + rename -uid "15FD54D8-4F8C-E139-C8EB-DD96721AA8E8"; setAttr ".ihi" 0; setAttr -k off ".v"; setAttr ".ove" yes; @@ -9182,19 +9116,19 @@ createNode nurbsCurve -n "footBack_R0_inpivot3_1crvShape" -p "footBack_R0_inpivo 0 0 -0.1875 ; createNode transform -n "footBack_R0_1" -p "footBack_R0_root"; - rename -uid "BC52FE92-4D8C-8CA5-5C4F-4195206BBEF0"; + rename -uid "FAC4F949-4FDF-8881-5EBF-ECB41C1EFB35"; setAttr ".ovdt" 1; setAttr ".ove" yes; - setAttr ".t" -type "double3" -10.980332218718958 -0.49678747209357621 11.584116504196617 ; + setAttr ".t" -type "double3" -10.980332218718956 -0.49678747209357832 11.584116504196617 ; setAttr ".r" -type "double3" 0 179.99999999999997 0 ; - setAttr ".s" -type "double3" 8.6433157474725775 8.6433157474725739 -8.6433157474725775 ; + setAttr ".s" -type "double3" 8.6433157474725775 8.6433157474725739 -8.6433157474725792 ; createNode nurbsCurve -n "footBack_R0_Shape1" -p "footBack_R0_1"; - rename -uid "E4F4E065-4022-0BCB-6184-91ACFEB2C46E"; + rename -uid "E7C7F59D-4673-D762-C667-1D939176D8BD"; setAttr -k off ".v"; setAttr -s 4 ".iog[0].og"; setAttr ".tw" yes; createNode nurbsCurve -n "footBack_R0_Shape1Orig" -p "footBack_R0_1"; - rename -uid "8E123112-4F18-5BD6-0FFC-9A95FB167AE6"; + rename -uid "F8F04B7C-4354-B320-4B88-1BA308B3DA22"; setAttr -k off ".v"; setAttr ".io" yes; setAttr ".cc" -type "nurbsCurve" @@ -9208,7 +9142,7 @@ createNode nurbsCurve -n "footBack_R0_Shape1Orig" -p "footBack_R0_1"; 0 0 0 ; createNode transform -n "backLegUI_R0_root" -p "footBack_R0_root"; - rename -uid "6021D261-40D9-B0AA-7D2E-F7902BA115F7"; + rename -uid "628CC7A1-4B8B-D00E-AFA2-B3BAEC6F13FE"; addAttr -ci true -sn "isGearGuide" -ln "isGearGuide" -dv 1 -min 0 -max 1 -at "bool"; addAttr -ci true -sn "comp_type" -ln "comp_type" -dt "string"; addAttr -ci true -sn "comp_name" -ln "comp_name" -dt "string"; @@ -9220,7 +9154,7 @@ createNode transform -n "backLegUI_R0_root" -p "footBack_R0_root"; addAttr -ci true -sn "icon" -ln "icon" -dt "string"; addAttr -ci true -sn "ikrefarray" -ln "ikrefarray" -dt "string"; addAttr -ci true -sn "joint" -ln "joint" -min 0 -max 1 -at "bool"; - addAttr -ci true -sn "uniScale" -ln "uniScale" -min 0 -max 1 -at "bool"; + addAttr -ci true -sn "uniScale" -ln "uniScale" -dv 1 -min 0 -max 1 -at "bool"; addAttr -ci true -sn "k_tx" -ln "k_tx" -min 0 -max 1 -at "bool"; addAttr -ci true -sn "k_ty" -ln "k_ty" -min 0 -max 1 -at "bool"; addAttr -ci true -sn "k_tz" -ln "k_tz" -min 0 -max 1 -at "bool"; @@ -9232,12 +9166,14 @@ createNode transform -n "backLegUI_R0_root" -p "footBack_R0_root"; addAttr -ci true -sn "k_sy" -ln "k_sy" -min 0 -max 1 -at "bool"; addAttr -ci true -sn "k_sz" -ln "k_sz" -min 0 -max 1 -at "bool"; addAttr -ci true -sn "default_rotorder" -ln "default_rotorder" -min 0 -max 5 -at "long"; - addAttr -ci true -sn "neutralRotation" -ln "neutralRotation" -min 0 -max 1 -at "bool"; - addAttr -ci true -sn "ctlSize" -ln "ctlSize" -at "double"; + addAttr -ci true -sn "neutralRotation" -ln "neutralRotation" -dv 1 -min 0 -max 1 + -at "bool"; + addAttr -ci true -sn "mirrorBehaviour" -ln "mirrorBehaviour" -min 0 -max 1 -at "bool"; + addAttr -ci true -sn "ctlSize" -ln "ctlSize" -dv 0.5 -at "double"; addAttr -ci true -sn "useIndex" -ln "useIndex" -min 0 -max 1 -at "bool"; - addAttr -ci true -sn "parentJointIndex" -ln "parentJointIndex" -at "long"; + addAttr -ci true -sn "parentJointIndex" -ln "parentJointIndex" -dv -1 -at "long"; setAttr -k off -cb on ".v"; - setAttr ".t" -type "double3" 7.914871587038979 6.0337539388988555 -0.92016921390296424 ; + setAttr ".t" -type "double3" 7.9148715870389807 6.0337539388988546 -0.92016921390296602 ; setAttr -k off -cb on ".tx"; setAttr -k off -cb on ".ty"; setAttr -k off -cb on ".tz"; @@ -9245,7 +9181,7 @@ createNode transform -n "backLegUI_R0_root" -p "footBack_R0_root"; setAttr -k off -cb on ".ry"; setAttr -k off -cb on ".rz"; setAttr -cb on ".ro"; - setAttr ".s" -type "double3" 8.6433157474725757 8.6433157474725792 8.643315747472581 ; + setAttr ".s" -type "double3" 8.6433157474725757 8.6433157474725792 8.6433157474725828 ; setAttr -k off -cb on ".sx"; setAttr -k off -cb on ".sy"; setAttr -k off -cb on ".sz"; @@ -9257,12 +9193,8 @@ createNode transform -n "backLegUI_R0_root" -p "footBack_R0_root"; setAttr ".ctlGrp" -type "string" ""; setAttr ".icon" -type "string" "cross"; setAttr ".ikrefarray" -type "string" ""; - setAttr ".uniScale" yes; - setAttr ".neutralRotation" yes; - setAttr ".ctlSize" 0.5; - setAttr ".parentJointIndex" -1; createNode nurbsCurve -n "backLegUI_R0_rootShape" -p "backLegUI_R0_root"; - rename -uid "6372446E-4EEC-C6DE-C6EC-B39C18F3AB4D"; + rename -uid "9D15BB8A-46CF-F23F-9AE1-02A4A2D06442"; setAttr ".ihi" 0; setAttr -k off ".v"; setAttr ".ove" yes; @@ -9274,8 +9206,8 @@ createNode nurbsCurve -n "backLegUI_R0_rootShape" -p "backLegUI_R0_root"; 0.25 0 0 -0.25 0 0 ; -createNode nurbsCurve -n "backLegUI_R0_root1Shape" -p "backLegUI_R0_root"; - rename -uid "8804CEC8-48E2-E9C3-A888-BB8AC8A213AB"; +createNode nurbsCurve -n "backLegUI_R0_root4Shape" -p "backLegUI_R0_root"; + rename -uid "7D00E214-4177-DCA9-1B5B-82B72A8F5724"; setAttr ".ihi" 0; setAttr -k off ".v"; setAttr ".ove" yes; @@ -9287,8 +9219,8 @@ createNode nurbsCurve -n "backLegUI_R0_root1Shape" -p "backLegUI_R0_root"; 0 0.25 0 0 -0.25 0 ; -createNode nurbsCurve -n "backLegUI_R0_root2Shape" -p "backLegUI_R0_root"; - rename -uid "DAA0D081-4E3D-C218-5439-8D816BB18BF0"; +createNode nurbsCurve -n "backLegUI_R0_root5Shape" -p "backLegUI_R0_root"; + rename -uid "E59E0832-4952-B571-C7ED-DF9193ACF4FD"; setAttr ".ihi" 0; setAttr -k off ".v"; setAttr ".ove" yes; @@ -9300,8 +9232,8 @@ createNode nurbsCurve -n "backLegUI_R0_root2Shape" -p "backLegUI_R0_root"; 0 0 0.25 0 0 -0.25 ; -createNode nurbsCurve -n "backLegUI_R0_root3Shape" -p "backLegUI_R0_root"; - rename -uid "7167A3F5-4BEB-1917-B3BD-B7B13A576667"; +createNode nurbsCurve -n "backLegUI_R0_root6Shape" -p "backLegUI_R0_root"; + rename -uid "6E8B09ED-426B-39D0-0226-9F9E7A0534E2"; setAttr ".ihi" 0; setAttr -k off ".v"; setAttr ".ove" yes; @@ -9328,10 +9260,10 @@ createNode nurbsCurve -n "backLegUI_R0_root3Shape" -p "backLegUI_R0_root"; -0.125 -0.125 -0.125 ; createNode transform -n "backLegUI_R0_sizeRef" -p "backLegUI_R0_root"; - rename -uid "41E4CB50-42ED-5A2D-CB63-94959B9CDEFF"; + rename -uid "F8A26303-41E0-7716-33D4-C5BF602E3784"; addAttr -ci true -sn "isGearGuide" -ln "isGearGuide" -dv 1 -min 0 -max 1 -at "bool"; setAttr -k off -cb on ".v"; - setAttr ".t" -type "double3" -4.4408920985006262e-016 4.4408920985006262e-016 0.99999999999999933 ; + setAttr ".t" -type "double3" -4.4408920985006262e-016 1.1102230246251565e-016 0.99999999999999956 ; setAttr -k off -cb on ".tx"; setAttr -k off -cb on ".ty"; setAttr -k off -cb on ".tz"; @@ -9339,24 +9271,24 @@ createNode transform -n "backLegUI_R0_sizeRef" -p "backLegUI_R0_root"; setAttr -k off -cb on ".ry"; setAttr -k off -cb on ".rz"; setAttr -cb on ".ro"; - setAttr ".s" -type "double3" 1.0000000000000002 0.99999999999999944 0.99999999999999967 ; + setAttr ".s" -type "double3" 1.0000000000000004 0.99999999999999933 0.99999999999999967 ; setAttr -k off -cb on ".sx"; setAttr -k off -cb on ".sy"; setAttr -k off -cb on ".sz"; createNode transform -n "legBack_R0_crv1" -p "legBack_R0_root"; - rename -uid "E91CC31B-4412-5F60-DD0B-B589A305516F"; + rename -uid "930F6C49-418E-9381-14A6-1B8BE78F1958"; setAttr ".ovdt" 1; setAttr ".ove" yes; - setAttr ".t" -type "double3" -1.7959711117807546 -3.2803056907023964 1.8090460715460548 ; + setAttr ".t" -type "double3" -1.7959711117807555 -3.2803056907023964 1.8090460715460541 ; setAttr ".r" -type "double3" 0 180 0 ; setAttr ".s" -type "double3" 1.4137227438343885 1.413722743834388 -1.4137227438343878 ; createNode nurbsCurve -n "legBack_R0_crvShape1" -p "legBack_R0_crv1"; - rename -uid "CF348A42-4EEE-62BA-E76F-90AB72AEA3C2"; + rename -uid "348D1718-41BA-0000-3C0C-EAAED36C94D0"; setAttr -k off ".v"; setAttr -s 4 ".iog[0].og"; setAttr ".tw" yes; createNode nurbsCurve -n "legBack_R0_crvShape1Orig" -p "legBack_R0_crv1"; - rename -uid "35AD983C-43B3-A6F6-643F-1A87E6C9C177"; + rename -uid "D63B35F1-488E-35A1-34CD-F5AACD167CBD"; setAttr -k off ".v"; setAttr ".io" yes; setAttr ".cc" -type "nurbsCurve" @@ -9369,699 +9301,796 @@ createNode nurbsCurve -n "legBack_R0_crvShape1Orig" -p "legBack_R0_crv1"; 0 0 0 0 0 0 ; -createNode animCurveUU -n "spine_C0_root_st_profile"; - rename -uid "363D8BE3-42AD-1BFA-1E4A-54A9AE6EC631"; +createNode lightLinker -s -n "lightLinker1"; + rename -uid "6928B63B-4CB2-C38C-B04D-5F9986479C4D"; + setAttr -s 2 ".lnk"; + setAttr -s 2 ".slnk"; +createNode shapeEditorManager -n "shapeEditorManager"; + rename -uid "4F2FCCC8-4693-A422-5E13-CFA0ACE59619"; +createNode poseInterpolatorManager -n "poseInterpolatorManager"; + rename -uid "8B00DE24-422B-77A1-CE2B-12B4188D2ADC"; +createNode displayLayerManager -n "layerManager"; + rename -uid "EC538FE5-4F66-16B0-D0EE-F8AC8150FD3D"; +createNode displayLayer -n "defaultLayer"; + rename -uid "160727EA-4568-0465-2638-FBA688FB6A44"; +createNode renderLayerManager -n "renderLayerManager"; + rename -uid "3B0A98D0-4187-DEBD-63B7-289C7032E904"; +createNode renderLayer -n "defaultRenderLayer"; + rename -uid "148C8E50-48C3-2544-0ED2-E59E92D8DE71"; + setAttr ".g" yes; +createNode animCurveUU -n "spine_C0_root_st_profile1"; + rename -uid "C9D17E97-469F-3D0F-2DC2-FCAFEB60B7BA"; setAttr ".tan" 18; setAttr ".wgt" no; setAttr -s 3 ".ktv[0:2]" 0 0 0.5 -1 1 0; -createNode animCurveUU -n "spine_C0_root_sq_profile"; - rename -uid "FAE224E6-4AFE-4E58-E28B-D7A8F298F713"; +createNode animCurveUU -n "spine_C0_root_sq_profile1"; + rename -uid "FA2FBC20-4ECA-B559-904F-69BF682D153F"; setAttr ".tan" 18; setAttr ".wgt" no; setAttr -s 3 ".ktv[0:2]" 0 0 0.5 1 1 0; -createNode animCurveUU -n "neck_C0_root_st_profile"; - rename -uid "6D4B1784-41A8-F6CA-50EB-77B39C20FDC6"; +createNode unitConversion -n "unitConversion32"; + rename -uid "7454BA6C-4D72-A2E8-A2AA-EE893B82938C"; + setAttr ".cf" 0.017453292519943295; +createNode mgear_curveCns -n "mgear_curveCns183"; + rename -uid "B4A759DC-496B-0B8B-3D8B-C198F74F96BD"; + setAttr -s 2 ".inputs"; +createNode tweak -n "tweak183"; + rename -uid "50464DC8-432D-AF0D-FF1A-49B546659065"; +createNode objectSet -n "mgear_curveCns183Set"; + rename -uid "F7F6BC47-4CBA-8D0C-1A8B-32AF1C5E5BD8"; + setAttr ".ihi" 0; + setAttr ".vo" yes; +createNode groupId -n "mgear_curveCns183GroupId"; + rename -uid "F4B09369-4112-C8A1-31B5-33BC8A558620"; + setAttr ".ihi" 0; +createNode groupParts -n "mgear_curveCns183GroupParts"; + rename -uid "79688A10-495A-2EED-5C6F-008466AECCB9"; + setAttr ".ihi" 0; + setAttr ".ic" -type "componentList" 1 "cv[*]"; +createNode objectSet -n "tweakSet183"; + rename -uid "62943B6F-420C-8572-F67A-8683A7F3A47F"; + setAttr ".ihi" 0; + setAttr ".vo" yes; +createNode groupId -n "groupId366"; + rename -uid "13B73348-4D64-813B-E78A-8E84AA0B6BB9"; + setAttr ".ihi" 0; +createNode groupParts -n "groupParts366"; + rename -uid "D0FBBE72-467D-D922-4E8F-4FBD9F2B52D7"; + setAttr ".ihi" 0; + setAttr ".ic" -type "componentList" 1 "cv[*]"; +createNode animCurveUU -n "neck_C0_root_st_profile1"; + rename -uid "EB6281D9-45F2-003A-4F15-5F966FD1C198"; setAttr ".tan" 18; setAttr ".wgt" no; setAttr -s 3 ".ktv[0:2]" 0 0 0.5 -1 1 0; -createNode animCurveUU -n "neck_C0_root_sq_profile"; - rename -uid "9E00FCB7-40CC-9F3E-FE45-58986C589F0F"; +createNode animCurveUU -n "neck_C0_root_sq_profile1"; + rename -uid "BAB1C044-4DED-C3C4-78B6-BDA14C20948A"; setAttr ".tan" 18; setAttr ".wgt" no; setAttr -s 3 ".ktv[0:2]" 0 0 0.5 1 1 0; -createNode mgear_curveCns -n "mgear_curveCns160"; - rename -uid "C46AC291-4433-44E9-FF1E-DCA6AFD8F87D"; - setAttr -s 2 ".inputs"; -createNode objectSet -n "mgear_curveCns160Set"; - rename -uid "6826E33F-4CCB-EAD9-4C7F-8CAFBA7B8129"; +createNode unitConversion -n "unitConversion33"; + rename -uid "5B295E9F-43A9-BCB4-23D4-9A8F677A8C4F"; + setAttr ".cf" 0.017453292519943295; +createNode mgear_curveCns -n "mgear_curveCns184"; + rename -uid "3EEEC1A5-46CA-DF93-E556-8BB32982BA3D"; + setAttr -s 4 ".inputs"; +createNode tweak -n "tweak184"; + rename -uid "B8257E47-4BEB-EBE5-AC34-1B822B146168"; +createNode objectSet -n "mgear_curveCns184Set"; + rename -uid "D1A3C72F-4C62-67A7-3A8F-B88FE5CB7E9B"; + setAttr ".ihi" 0; + setAttr ".vo" yes; +createNode groupId -n "mgear_curveCns184GroupId"; + rename -uid "EE6D18CF-4D4B-BD23-86CE-6488747797DE"; + setAttr ".ihi" 0; +createNode groupParts -n "mgear_curveCns184GroupParts"; + rename -uid "6D45AECD-465A-50EC-1381-6F9432533BB7"; + setAttr ".ihi" 0; + setAttr ".ic" -type "componentList" 1 "cv[*]"; +createNode objectSet -n "tweakSet184"; + rename -uid "54C6802E-43D8-843C-0568-A3BA7B0A9A87"; setAttr ".ihi" 0; setAttr ".vo" yes; -createNode groupId -n "mgear_curveCns160GroupId"; - rename -uid "307AF40B-48E2-1D2F-48D3-A1815FDE8DEC"; +createNode groupId -n "groupId368"; + rename -uid "47900F31-490E-FAAE-81B9-1DAABA9E6414"; setAttr ".ihi" 0; -createNode groupParts -n "mgear_curveCns160GroupParts"; - rename -uid "59BE1B5E-41E0-6E14-5378-1EAFF2668EB1"; +createNode groupParts -n "groupParts368"; + rename -uid "99865061-4384-0F39-8160-59B80D31EA0F"; setAttr ".ihi" 0; setAttr ".ic" -type "componentList" 1 "cv[*]"; -createNode tweak -n "tweak160"; - rename -uid "44AD54D5-4AA6-A052-1778-2DBF9B481F81"; -createNode objectSet -n "tweakSet160"; - rename -uid "95985CC6-4D03-DDF8-16A2-3DB69DB41561"; +createNode mgear_curveCns -n "mgear_curveCns185"; + rename -uid "FE94D78B-4D16-5587-5A29-F7BEB733DA9E"; + setAttr -s 3 ".inputs"; +createNode tweak -n "tweak185"; + rename -uid "25CB3D37-4CBF-CA0D-01F5-A4BA34D17DDA"; +createNode objectSet -n "mgear_curveCns185Set"; + rename -uid "AF9E256D-40BD-C01B-9F53-29BFA198E86F"; setAttr ".ihi" 0; setAttr ".vo" yes; -createNode groupId -n "groupId320"; - rename -uid "673497D6-4E08-99EA-C8A5-4183E2771DFC"; +createNode groupId -n "mgear_curveCns185GroupId"; + rename -uid "67760A5E-49C7-FEF3-1CFE-DBBBBC1F0399"; setAttr ".ihi" 0; -createNode groupParts -n "groupParts320"; - rename -uid "EA1DFB82-420A-B4A9-D346-44928D49F123"; +createNode groupParts -n "mgear_curveCns185GroupParts"; + rename -uid "466FB98F-4560-9A26-69E0-32A80BA63863"; setAttr ".ihi" 0; setAttr ".ic" -type "componentList" 1 "cv[*]"; -createNode mgear_curveCns -n "mgear_curveCns161"; - rename -uid "908F2D89-49BA-C0BE-9236-368F10887F22"; +createNode objectSet -n "tweakSet185"; + rename -uid "5DFCD5F2-40E3-51D8-79AE-918E17F97A31"; + setAttr ".ihi" 0; + setAttr ".vo" yes; +createNode groupId -n "groupId370"; + rename -uid "EAFB591D-491F-CBA0-3DC5-4288F3BEA2FF"; + setAttr ".ihi" 0; +createNode groupParts -n "groupParts370"; + rename -uid "8499E0F4-48D6-834B-8B70-5F8D552B8665"; + setAttr ".ihi" 0; + setAttr ".ic" -type "componentList" 1 "cv[*]"; +createNode mgear_curveCns -n "mgear_curveCns186"; + rename -uid "A8846675-4F02-7EB3-7769-FEB44605E577"; setAttr -s 2 ".inputs"; -createNode objectSet -n "mgear_curveCns161Set"; - rename -uid "DD847B68-4BD9-50DB-0941-7F9B029D6F4D"; +createNode tweak -n "tweak186"; + rename -uid "7A3048D5-4541-FCD3-BC43-42AA7E2B6CE1"; +createNode objectSet -n "mgear_curveCns186Set"; + rename -uid "CB97DA2C-4EFA-F696-E538-4EB17C143715"; setAttr ".ihi" 0; setAttr ".vo" yes; -createNode groupId -n "mgear_curveCns161GroupId"; - rename -uid "57BFCF22-4E17-4CC0-C9C3-C0828E9C61FA"; +createNode groupId -n "mgear_curveCns186GroupId"; + rename -uid "8C132B31-4664-8F63-E939-BB946EFAE8DE"; setAttr ".ihi" 0; -createNode groupParts -n "mgear_curveCns161GroupParts"; - rename -uid "8130A0FE-441D-2D39-A8C1-D2B55FBB6EC3"; +createNode groupParts -n "mgear_curveCns186GroupParts"; + rename -uid "B2C10EBB-45C3-B6F3-23AA-FE8F96A26772"; setAttr ".ihi" 0; setAttr ".ic" -type "componentList" 1 "cv[*]"; -createNode tweak -n "tweak161"; - rename -uid "5CC9D03B-415D-E573-09E7-698670E10528"; -createNode objectSet -n "tweakSet161"; - rename -uid "BAD98D06-4C0B-74D2-648E-6D973F5F943C"; +createNode objectSet -n "tweakSet186"; + rename -uid "08B48BC0-484E-AFF7-34E4-9C9D2BB434AC"; setAttr ".ihi" 0; setAttr ".vo" yes; -createNode groupId -n "groupId322"; - rename -uid "94D9D31E-43BD-CAF7-1545-5B9AAE5ABDD5"; +createNode groupId -n "groupId372"; + rename -uid "898EB5D0-4080-878C-1030-028A6EAF8E25"; setAttr ".ihi" 0; -createNode groupParts -n "groupParts322"; - rename -uid "993C91DF-4AB9-120F-A2B3-828B2C77B730"; +createNode groupParts -n "groupParts372"; + rename -uid "BCAA02C9-4CBC-F222-51CE-EA946FAE6B82"; setAttr ".ihi" 0; setAttr ".ic" -type "componentList" 1 "cv[*]"; -createNode mgear_curveCns -n "mgear_curveCns159"; - rename -uid "F4C586A0-4F43-E0A7-3582-80A145B97C1A"; +createNode mgear_curveCns -n "mgear_curveCns187"; + rename -uid "591040AE-4077-EB3E-9CBE-A6943786490A"; setAttr -s 2 ".inputs"; -createNode objectSet -n "mgear_curveCns159Set"; - rename -uid "C394FA65-48C7-075F-A882-0AAD6861F2EF"; +createNode tweak -n "tweak187"; + rename -uid "79C8B6F1-4734-CCED-EC53-0DBC353CFD52"; +createNode objectSet -n "mgear_curveCns187Set"; + rename -uid "E9D78926-4F8B-2F46-11C1-56AFB1F48C35"; setAttr ".ihi" 0; setAttr ".vo" yes; -createNode groupId -n "mgear_curveCns159GroupId"; - rename -uid "A049A75F-44E2-70CF-5B10-958A3ADD9E38"; +createNode groupId -n "mgear_curveCns187GroupId"; + rename -uid "C07F1610-4DF4-2B37-9904-F4BADEF8927D"; setAttr ".ihi" 0; -createNode groupParts -n "mgear_curveCns159GroupParts"; - rename -uid "0E2D47A4-473C-D106-F10F-1CA0533E7CF5"; +createNode groupParts -n "mgear_curveCns187GroupParts"; + rename -uid "6DF8C15B-47B3-1B9B-134F-2E9E85DC9AC1"; setAttr ".ihi" 0; setAttr ".ic" -type "componentList" 1 "cv[*]"; -createNode tweak -n "tweak159"; - rename -uid "CC685F0D-4DE9-2CE9-605E-A88B905F0819"; -createNode objectSet -n "tweakSet159"; - rename -uid "4FF90709-45CF-A5A8-51E9-5E83DB705890"; +createNode objectSet -n "tweakSet187"; + rename -uid "9351A3FD-43C7-087E-EEC1-FD825FAE55D8"; setAttr ".ihi" 0; setAttr ".vo" yes; -createNode groupId -n "groupId318"; - rename -uid "63F17790-4415-8291-AE86-24852E455482"; +createNode groupId -n "groupId374"; + rename -uid "EE4E7482-4D7B-8EAE-8CCD-78BB043983B2"; setAttr ".ihi" 0; -createNode groupParts -n "groupParts318"; - rename -uid "6CC99F85-4883-0097-1AFD-738BF064479F"; +createNode groupParts -n "groupParts374"; + rename -uid "0C6A370B-48A2-FD2D-BBF0-9193336918C5"; setAttr ".ihi" 0; setAttr ".ic" -type "componentList" 1 "cv[*]"; -createNode mgear_curveCns -n "mgear_curveCns162"; - rename -uid "3B61B18F-42E5-CBAA-9DD1-A6A4FD988F8C"; +createNode mgear_curveCns -n "mgear_curveCns188"; + rename -uid "3856F211-4DB8-DC53-AA5E-2C85B81AD51F"; setAttr -s 2 ".inputs"; -createNode objectSet -n "mgear_curveCns162Set"; - rename -uid "27D8D7F7-4FFF-3D12-7BC5-C1920880A4A7"; +createNode tweak -n "tweak188"; + rename -uid "DB52CD60-46C3-76AD-C096-5EA19F1A08D3"; +createNode objectSet -n "mgear_curveCns188Set"; + rename -uid "C4A57F10-4D04-BA54-229B-64A809773EBC"; setAttr ".ihi" 0; setAttr ".vo" yes; -createNode groupId -n "mgear_curveCns162GroupId"; - rename -uid "917207FB-47B7-ECAB-5EFE-8F888AE09624"; +createNode groupId -n "mgear_curveCns188GroupId"; + rename -uid "5E8CDD3D-4587-037B-EB08-4AB7BB9C4ACB"; setAttr ".ihi" 0; -createNode groupParts -n "mgear_curveCns162GroupParts"; - rename -uid "E6773AD2-40B2-6CB1-0005-A89FFB68AB4C"; +createNode groupParts -n "mgear_curveCns188GroupParts"; + rename -uid "AEC4F2D1-4432-750A-952F-B39890749C79"; setAttr ".ihi" 0; setAttr ".ic" -type "componentList" 1 "cv[*]"; -createNode tweak -n "tweak162"; - rename -uid "22DC21A4-40F5-03E5-4EAF-93AFBDF32855"; -createNode objectSet -n "tweakSet162"; - rename -uid "8E8AE1EC-4EF0-8231-C992-E19E3F3BC5A0"; +createNode objectSet -n "tweakSet188"; + rename -uid "CECE9CCB-4006-BD9A-610E-0FBF3477D1B3"; setAttr ".ihi" 0; setAttr ".vo" yes; -createNode groupId -n "groupId324"; - rename -uid "985B9375-4C26-BE9F-F1F1-D598F516BF4A"; +createNode groupId -n "groupId376"; + rename -uid "8282C970-4A10-EA12-013C-14AA9990F048"; setAttr ".ihi" 0; -createNode groupParts -n "groupParts324"; - rename -uid "B7843D6B-443D-25E6-979A-F896D35ECD17"; +createNode groupParts -n "groupParts376"; + rename -uid "4283FC60-4E8E-A021-65F4-C399CDB06E92"; setAttr ".ihi" 0; setAttr ".ic" -type "componentList" 1 "cv[*]"; -createNode mgear_curveCns -n "mgear_curveCns163"; - rename -uid "2653008B-4016-9DE4-4B36-B3ACF65134A9"; +createNode mgear_curveCns -n "mgear_curveCns189"; + rename -uid "A1CA27B2-496A-6BB9-5707-39A1577C24E6"; setAttr -s 2 ".inputs"; -createNode objectSet -n "mgear_curveCns163Set"; - rename -uid "D73863DB-406C-2C11-BE4F-E1B2A8D5F421"; +createNode tweak -n "tweak189"; + rename -uid "60DD30BA-43B8-B13E-2FB8-1B9F8EA8A393"; +createNode objectSet -n "mgear_curveCns189Set"; + rename -uid "270CA835-4F89-0E86-ED5B-8D932FE1BC5D"; setAttr ".ihi" 0; setAttr ".vo" yes; -createNode groupId -n "mgear_curveCns163GroupId"; - rename -uid "525FDB94-4230-A756-5A47-DBAD39FDFE5A"; +createNode groupId -n "mgear_curveCns189GroupId"; + rename -uid "1244F9A0-49A6-F404-5878-B28F98167790"; setAttr ".ihi" 0; -createNode groupParts -n "mgear_curveCns163GroupParts"; - rename -uid "FCE55CC8-4A2D-8573-E8D9-3F84A85A7175"; +createNode groupParts -n "mgear_curveCns189GroupParts"; + rename -uid "81D9EB80-4B01-F426-F937-E9B060AECD49"; setAttr ".ihi" 0; setAttr ".ic" -type "componentList" 1 "cv[*]"; -createNode tweak -n "tweak163"; - rename -uid "0ECAF168-4123-ABC3-10CE-33AF7F6CB2BF"; -createNode objectSet -n "tweakSet163"; - rename -uid "5FE1AAAA-4C5C-6129-36DF-CDAB88C86F59"; +createNode objectSet -n "tweakSet189"; + rename -uid "FAD0A8F7-4AB9-4978-DE08-37A9BA3AB752"; setAttr ".ihi" 0; setAttr ".vo" yes; -createNode groupId -n "groupId326"; - rename -uid "E4459752-43E6-CA6E-76B5-DB8B4865FB81"; +createNode groupId -n "groupId378"; + rename -uid "320E830A-46E8-C88F-7369-F48E17186773"; setAttr ".ihi" 0; -createNode groupParts -n "groupParts326"; - rename -uid "40EF6680-41E8-966A-2969-67931DC40153"; +createNode groupParts -n "groupParts378"; + rename -uid "943192C7-4F36-742F-6F68-A99DEA81CD58"; setAttr ".ihi" 0; setAttr ".ic" -type "componentList" 1 "cv[*]"; -createNode mgear_curveCns -n "mgear_curveCns164"; - rename -uid "5603AA79-46B0-A7E1-E68F-BD921E6CFB2C"; +createNode mgear_curveCns -n "mgear_curveCns190"; + rename -uid "C84B6EA3-4F8F-74B5-3928-9C97AEA5AF4D"; setAttr -s 2 ".inputs"; -createNode objectSet -n "mgear_curveCns164Set"; - rename -uid "CB8BB0A0-42E8-2FC1-11D8-B3AC7A2FA67B"; +createNode tweak -n "tweak190"; + rename -uid "3F543231-44E3-C4CB-3D69-439B386686E4"; +createNode objectSet -n "mgear_curveCns190Set"; + rename -uid "94326E95-43B1-1064-CDCA-B5ACCC55C495"; setAttr ".ihi" 0; setAttr ".vo" yes; -createNode groupId -n "mgear_curveCns164GroupId"; - rename -uid "D7CFA8DF-4AF0-BC39-E9B3-2AAD699D3D08"; +createNode groupId -n "mgear_curveCns190GroupId"; + rename -uid "3BBFE3D2-4EC2-005D-8CA9-0D8B5C314502"; setAttr ".ihi" 0; -createNode groupParts -n "mgear_curveCns164GroupParts"; - rename -uid "FD3A7C4F-42B0-CAC6-FCB6-8B96A27F20EF"; +createNode groupParts -n "mgear_curveCns190GroupParts"; + rename -uid "7BBA29C4-4591-4E56-551B-99A2B527ED22"; setAttr ".ihi" 0; setAttr ".ic" -type "componentList" 1 "cv[*]"; -createNode tweak -n "tweak164"; - rename -uid "019A7635-4EFC-222E-A39C-F8AEBD6AD664"; -createNode objectSet -n "tweakSet164"; - rename -uid "BFBA2FE3-452E-3AEC-13D8-09BE1C1569AF"; +createNode objectSet -n "tweakSet190"; + rename -uid "F9C7471D-4FFC-7607-BAC7-4D9982022CCD"; setAttr ".ihi" 0; setAttr ".vo" yes; -createNode groupId -n "groupId328"; - rename -uid "4D20A1F8-46CE-D6AC-B2EE-378AF98E7307"; +createNode groupId -n "groupId380"; + rename -uid "5D60552F-45AF-B8B0-1BA2-7BBF5C741C9D"; setAttr ".ihi" 0; -createNode groupParts -n "groupParts328"; - rename -uid "B8B7E4E1-4812-0522-3CE1-4B817AC422D2"; +createNode groupParts -n "groupParts380"; + rename -uid "371C4504-4BF6-2DAB-7B3F-96BBAF1988DD"; setAttr ".ihi" 0; setAttr ".ic" -type "componentList" 1 "cv[*]"; -createNode mgear_curveCns -n "mgear_curveCns158"; - rename -uid "C6C446CA-415A-9B5E-8704-9C8BA7A5C1C8"; - setAttr -s 3 ".inputs"; -createNode objectSet -n "mgear_curveCns158Set"; - rename -uid "B5975822-487B-4440-0225-548F137BDC5B"; +createNode mgear_curveCns -n "mgear_curveCns191"; + rename -uid "465FB26C-4701-16F6-5BE8-32BD7E4666D7"; + setAttr -s 2 ".inputs"; +createNode tweak -n "tweak191"; + rename -uid "7E3D0E1F-49A8-DC60-3AB8-4D9287C62052"; +createNode objectSet -n "mgear_curveCns191Set"; + rename -uid "7E0BBC2F-4153-EC0E-8E7C-B7BDC3BADCEF"; setAttr ".ihi" 0; setAttr ".vo" yes; -createNode groupId -n "mgear_curveCns158GroupId"; - rename -uid "8687D40B-46FC-7CF7-58FD-6F9F7FA43950"; +createNode groupId -n "mgear_curveCns191GroupId"; + rename -uid "165EB922-4B58-6D84-C1B4-078F9E40AEED"; setAttr ".ihi" 0; -createNode groupParts -n "mgear_curveCns158GroupParts"; - rename -uid "D8CAFC25-417C-20BF-C0BD-799807C1C71B"; +createNode groupParts -n "mgear_curveCns191GroupParts"; + rename -uid "2CADA8D3-4937-82E5-0FCC-85B91F67DDFE"; setAttr ".ihi" 0; setAttr ".ic" -type "componentList" 1 "cv[*]"; -createNode tweak -n "tweak158"; - rename -uid "BC1DA409-4734-8B52-805A-27AB3750FBA4"; -createNode objectSet -n "tweakSet158"; - rename -uid "296E3D4C-4C13-294F-C2A9-2ABA6E4048F0"; +createNode objectSet -n "tweakSet191"; + rename -uid "7937EE14-451E-A510-604D-84A66762F47A"; setAttr ".ihi" 0; setAttr ".vo" yes; -createNode groupId -n "groupId316"; - rename -uid "1F4CEA8B-4A98-2E6A-856B-5585D85D805A"; +createNode groupId -n "groupId382"; + rename -uid "3815AE70-46EE-7BB3-C8DF-5DBB633F0082"; setAttr ".ihi" 0; -createNode groupParts -n "groupParts316"; - rename -uid "2E9742A0-4F52-129E-3363-64A9E8072665"; +createNode groupParts -n "groupParts382"; + rename -uid "A6F2300E-42E0-97A3-06CF-AB9C99350BAF"; setAttr ".ihi" 0; setAttr ".ic" -type "componentList" 1 "cv[*]"; -createNode unitConversion -n "unitConversion29"; - rename -uid "7AF7FEA0-49FC-A487-C1A1-E6926B2DF954"; +createNode unitConversion -n "unitConversion34"; + rename -uid "2CE2613C-4CB8-E67D-07EC-A9BB9EBF9F7E"; setAttr ".cf" 0.017453292519943295; -createNode mgear_curveCns -n "mgear_curveCns157"; - rename -uid "7A73DC31-4088-D407-FF14-9DB62E92CBB7"; - setAttr -s 4 ".inputs"; -createNode objectSet -n "mgear_curveCns157Set"; - rename -uid "A2AF4E0F-4418-30AB-3370-7BB313F9435E"; +createNode mgear_curveCns -n "mgear_curveCns192"; + rename -uid "183D9DF5-49ED-31FA-DEF2-2481CE9D1029"; + setAttr -s 2 ".inputs"; +createNode tweak -n "tweak192"; + rename -uid "5DEBB05C-4588-CB71-DB04-38B57024D3C9"; +createNode objectSet -n "mgear_curveCns192Set"; + rename -uid "85459B48-4AB8-B38D-88E9-FFA80B1EB8DB"; setAttr ".ihi" 0; setAttr ".vo" yes; -createNode groupId -n "mgear_curveCns157GroupId"; - rename -uid "6CABBFC3-4B20-031D-DBC9-288144B0C6D3"; +createNode groupId -n "mgear_curveCns192GroupId"; + rename -uid "D80DBBFE-4592-EA10-70D9-A2971180E36F"; setAttr ".ihi" 0; -createNode groupParts -n "mgear_curveCns157GroupParts"; - rename -uid "C8F6CF37-4C37-5402-B2A8-DAAEE98F898A"; +createNode groupParts -n "mgear_curveCns192GroupParts"; + rename -uid "D3D9B12C-40C5-F232-D330-8CAD1CDCE7B2"; setAttr ".ihi" 0; setAttr ".ic" -type "componentList" 1 "cv[*]"; -createNode tweak -n "tweak157"; - rename -uid "480C1663-49F2-49F5-4099-719DAD5B6B42"; -createNode objectSet -n "tweakSet157"; - rename -uid "FF137071-4C87-4082-8975-28BA025434E7"; +createNode objectSet -n "tweakSet192"; + rename -uid "E3D17D87-404C-11EB-041C-F89335D43487"; setAttr ".ihi" 0; setAttr ".vo" yes; -createNode groupId -n "groupId314"; - rename -uid "0AB5411C-4208-273E-E88C-A4BCBC06F73D"; +createNode groupId -n "groupId384"; + rename -uid "403342E4-4278-1FA3-BFD7-B28F1D8E3F79"; setAttr ".ihi" 0; -createNode groupParts -n "groupParts314"; - rename -uid "8659180E-4237-17D1-EA9B-EEACD1FE2B7C"; +createNode groupParts -n "groupParts384"; + rename -uid "D7C832AB-4C86-E9EC-E295-E5A40801A6B0"; setAttr ".ihi" 0; setAttr ".ic" -type "componentList" 1 "cv[*]"; -createNode animCurveUU -n "legFront_L0_root_st_profile"; - rename -uid "3DA6E3E1-4AAF-C983-9E40-948DC970F079"; +createNode animCurveUU -n "legFront_L0_root_st_profile1"; + rename -uid "F7F5A93E-4C11-87E7-58B0-B48781E4E4EB"; setAttr ".tan" 18; setAttr ".wgt" no; setAttr -s 3 ".ktv[0:2]" 0 0 0.5 -1 1 0; -createNode animCurveUU -n "legFront_L0_root_sq_profile"; - rename -uid "B0FEEB05-4ADC-7164-51D9-288F396AB80C"; +createNode animCurveUU -n "legFront_L0_root_sq_profile1"; + rename -uid "A5EA90AB-46F8-ADC3-6AD3-9588B1DE16D0"; setAttr ".tan" 18; setAttr ".wgt" no; setAttr -s 3 ".ktv[0:2]" 0 0 0.5 1 1 0; -createNode mgear_curveCns -n "mgear_curveCns167"; - rename -uid "54D079CD-4B19-B6FA-900E-9584BEE86610"; - setAttr -s 3 ".inputs"; -createNode objectSet -n "mgear_curveCns167Set"; - rename -uid "B594DF1D-45BC-3264-A322-8D9D6D6B5FCE"; +createNode mgear_curveCns -n "mgear_curveCns193"; + rename -uid "4D953076-468C-1A27-4607-B884CF1F7874"; + setAttr -s 5 ".inputs"; +createNode tweak -n "tweak193"; + rename -uid "0C833A5B-471B-FA2C-B560-DABBE087A13C"; +createNode objectSet -n "mgear_curveCns193Set"; + rename -uid "87DF384F-450C-3631-FFF2-ECB3B716B379"; setAttr ".ihi" 0; setAttr ".vo" yes; -createNode groupId -n "mgear_curveCns167GroupId"; - rename -uid "4C3A2D90-4401-7AEF-FE71-D49BF3FB5CA1"; +createNode groupId -n "mgear_curveCns193GroupId"; + rename -uid "4EBDE493-49C2-1801-E65A-C2A8BCD8B76D"; setAttr ".ihi" 0; -createNode groupParts -n "mgear_curveCns167GroupParts"; - rename -uid "B1EEFD03-4A1C-3CD6-EAB1-5A9E627CCE16"; +createNode groupParts -n "mgear_curveCns193GroupParts"; + rename -uid "37EF4893-451B-6A3E-D569-D0A4EAD2CE3F"; setAttr ".ihi" 0; setAttr ".ic" -type "componentList" 1 "cv[*]"; -createNode tweak -n "tweak167"; - rename -uid "1DBC11CF-43EC-0D20-CECB-C2B42B0EC610"; -createNode objectSet -n "tweakSet167"; - rename -uid "6A5F9980-48EF-B90F-792A-82BA13D1496E"; +createNode objectSet -n "tweakSet193"; + rename -uid "86B22D4F-4B82-298E-04DB-6186DDACBBF7"; setAttr ".ihi" 0; setAttr ".vo" yes; -createNode groupId -n "groupId334"; - rename -uid "3F08CA25-402A-FBE4-387A-31A0BBC1B70D"; +createNode groupId -n "groupId386"; + rename -uid "7DB88CB3-4F9F-D65F-C716-8588C4334413"; setAttr ".ihi" 0; -createNode groupParts -n "groupParts334"; - rename -uid "F52CA01A-4268-CA4D-5C28-3BB9AC366688"; +createNode groupParts -n "groupParts386"; + rename -uid "CC0D316B-4FA8-8AF0-2DBB-2799F39EEA79"; setAttr ".ihi" 0; setAttr ".ic" -type "componentList" 1 "cv[*]"; -createNode mgear_curveCns -n "mgear_curveCns168"; - rename -uid "52A8046E-4112-B68D-E401-9FA15B460BCB"; - setAttr -s 5 ".inputs"; -createNode objectSet -n "mgear_curveCns168Set"; - rename -uid "8759E934-4800-49C6-A0A0-B68270CF199B"; +createNode mgear_curveCns -n "mgear_curveCns194"; + rename -uid "6665B84D-479B-4CB4-D16C-F9A6CD3E5C73"; + setAttr -s 3 ".inputs"; +createNode tweak -n "tweak194"; + rename -uid "740991D3-4247-7074-DD6D-E38CDA300760"; +createNode objectSet -n "mgear_curveCns194Set"; + rename -uid "5248003A-40BC-698C-1865-0585754ED983"; setAttr ".ihi" 0; setAttr ".vo" yes; -createNode groupId -n "mgear_curveCns168GroupId"; - rename -uid "EEE59D47-4929-3235-B9CD-2B926B087977"; +createNode groupId -n "mgear_curveCns194GroupId"; + rename -uid "E3C39CA2-4C96-11BD-BFF9-508C314786C1"; setAttr ".ihi" 0; -createNode groupParts -n "mgear_curveCns168GroupParts"; - rename -uid "17C0F96A-4C65-F4A8-8537-0BBFE534E6EC"; +createNode groupParts -n "mgear_curveCns194GroupParts"; + rename -uid "D2A38D49-4BBB-94C8-F80C-34A90A68B89C"; setAttr ".ihi" 0; setAttr ".ic" -type "componentList" 1 "cv[*]"; -createNode tweak -n "tweak168"; - rename -uid "7F3EF21B-470A-57DD-5D1F-D5A1FF9AFB98"; -createNode objectSet -n "tweakSet168"; - rename -uid "9B2F7C82-4F69-25F2-FE51-4CBB79B2C7FE"; +createNode objectSet -n "tweakSet194"; + rename -uid "B2C5BA6A-46AD-81E0-C1B2-29928DFA64FA"; setAttr ".ihi" 0; setAttr ".vo" yes; -createNode groupId -n "groupId336"; - rename -uid "6E42BE75-4F10-36C6-9A38-A78FD5A8277E"; +createNode groupId -n "groupId388"; + rename -uid "F43DB70F-4705-C981-B684-258C29873E3F"; setAttr ".ihi" 0; -createNode groupParts -n "groupParts336"; - rename -uid "060A07F8-46A2-B3BB-F06E-24A2D405428E"; +createNode groupParts -n "groupParts388"; + rename -uid "36EF0DEE-4620-5484-504F-BD9C8BE9BCD6"; setAttr ".ihi" 0; setAttr ".ic" -type "componentList" 1 "cv[*]"; -createNode mgear_curveCns -n "mgear_curveCns166"; - rename -uid "E0668C8C-4F11-03EA-D283-68A1D30EFEFE"; +createNode mgear_curveCns -n "mgear_curveCns195"; + rename -uid "DD725DA7-4EF1-BF51-E708-029D55AF9B57"; setAttr -s 5 ".inputs"; -createNode objectSet -n "mgear_curveCns166Set"; - rename -uid "7194ED0B-4A54-6D16-12B8-F38BE30489EB"; +createNode tweak -n "tweak195"; + rename -uid "50752A76-4E45-2F02-6808-3498ED398A2A"; +createNode objectSet -n "mgear_curveCns195Set"; + rename -uid "7504D07A-42F3-31A8-B114-D383B996B09C"; setAttr ".ihi" 0; setAttr ".vo" yes; -createNode groupId -n "mgear_curveCns166GroupId"; - rename -uid "A9052CB1-4339-A57B-893B-9C882FD18C04"; +createNode groupId -n "mgear_curveCns195GroupId"; + rename -uid "6C28D4BD-43EA-918A-9E35-2A8FC10D5FB9"; setAttr ".ihi" 0; -createNode groupParts -n "mgear_curveCns166GroupParts"; - rename -uid "C620E0EF-457B-83DE-FCD0-FEB19DC09758"; +createNode groupParts -n "mgear_curveCns195GroupParts"; + rename -uid "F5DBDC78-46FD-3E3E-F835-0A8A7B9F2299"; setAttr ".ihi" 0; setAttr ".ic" -type "componentList" 1 "cv[*]"; -createNode tweak -n "tweak166"; - rename -uid "EAAC516D-4B56-A789-2217-7B9806E2D23D"; -createNode objectSet -n "tweakSet166"; - rename -uid "9D8EEABC-4B3A-B759-0E72-A7BA9CF93E0A"; +createNode objectSet -n "tweakSet195"; + rename -uid "603C8EA7-4B4E-F029-2743-9E9420DC1804"; setAttr ".ihi" 0; setAttr ".vo" yes; -createNode groupId -n "groupId332"; - rename -uid "1B433BC0-43C8-6735-198C-F1A23A7212B4"; +createNode groupId -n "groupId390"; + rename -uid "5D6968F4-4233-6868-5705-0BAFFAC45D43"; setAttr ".ihi" 0; -createNode groupParts -n "groupParts332"; - rename -uid "6733726F-4891-2924-1249-7AB4BE217B5A"; +createNode groupParts -n "groupParts390"; + rename -uid "6D86B320-4A08-28C1-137E-6FA3C48865D3"; setAttr ".ihi" 0; setAttr ".ic" -type "componentList" 1 "cv[*]"; -createNode unitConversion -n "unitConversion30"; - rename -uid "AF6ECFCF-4483-0887-7CE0-31991CB1C331"; +createNode unitConversion -n "unitConversion35"; + rename -uid "1A60D4D8-4BCC-7839-5AAB-8EABC7FA4200"; setAttr ".cf" 0.017453292519943295; -createNode mgear_curveCns -n "mgear_curveCns165"; - rename -uid "124306B8-4B4D-F202-2595-478B28FB5072"; +createNode mgear_curveCns -n "mgear_curveCns196"; + rename -uid "838F2F68-4BD7-9779-DD61-D6936A4ADCAB"; setAttr -s 2 ".inputs"; -createNode objectSet -n "mgear_curveCns165Set"; - rename -uid "713ACCF4-4837-512E-6910-E6BBD3842969"; +createNode tweak -n "tweak196"; + rename -uid "2200686D-4E89-CEC0-1FCE-50A1EC26E467"; +createNode objectSet -n "mgear_curveCns196Set"; + rename -uid "17C06CC9-4F1F-9597-C50F-8FBBD5718657"; setAttr ".ihi" 0; setAttr ".vo" yes; -createNode groupId -n "mgear_curveCns165GroupId"; - rename -uid "5F402620-4E22-AFAC-055D-EC8B4D2F43F4"; +createNode groupId -n "mgear_curveCns196GroupId"; + rename -uid "422D0EA8-4C26-D192-B60A-85B060D4AC95"; setAttr ".ihi" 0; -createNode groupParts -n "mgear_curveCns165GroupParts"; - rename -uid "B649ED2E-44B1-36C3-02E7-28B2513D16F6"; +createNode groupParts -n "mgear_curveCns196GroupParts"; + rename -uid "66E992B4-4699-75AD-5C21-9D91BF9A4FD6"; setAttr ".ihi" 0; setAttr ".ic" -type "componentList" 1 "cv[*]"; -createNode tweak -n "tweak165"; - rename -uid "CAE6AC97-40F3-03A4-1DDD-1B84A4409BC3"; -createNode objectSet -n "tweakSet165"; - rename -uid "91735C0D-475E-21AB-0D9F-B8A576F79503"; +createNode objectSet -n "tweakSet196"; + rename -uid "0A7D1DA3-4B97-AE86-30AA-27AC6B39B10B"; setAttr ".ihi" 0; setAttr ".vo" yes; -createNode groupId -n "groupId330"; - rename -uid "824FECEE-4CB4-D725-1D29-A28BEFA6F423"; +createNode groupId -n "groupId392"; + rename -uid "6BE19E6B-445E-D05D-D0EA-3DBCE82F9A58"; setAttr ".ihi" 0; -createNode groupParts -n "groupParts330"; - rename -uid "3D9666AB-426A-6805-468C-9D97AE1379AB"; +createNode groupParts -n "groupParts392"; + rename -uid "D4DD9505-4F3C-4B8F-F301-23AB39EA0609"; setAttr ".ihi" 0; setAttr ".ic" -type "componentList" 1 "cv[*]"; -createNode animCurveUU -n "legFront_R0_root_st_profile"; - rename -uid "0AF51226-425F-A45D-D468-FFA21B905555"; +createNode animCurveUU -n "legFront_R0_root_st_profile1"; + rename -uid "9E7CFC7D-4AAC-4324-710B-FBB924DFCD76"; setAttr ".tan" 18; setAttr ".wgt" no; setAttr -s 3 ".ktv[0:2]" 0 0 0.5 -1 1 0; -createNode animCurveUU -n "legFront_R0_root_sq_profile"; - rename -uid "3CEE7719-4CFC-4B9B-0836-F1B91F601A81"; +createNode animCurveUU -n "legFront_R0_root_sq_profile1"; + rename -uid "16B19B37-413D-C191-14D1-3C8C0A89E044"; setAttr ".tan" 18; setAttr ".wgt" no; setAttr -s 3 ".ktv[0:2]" 0 0 0.5 1 1 0; -createNode mgear_curveCns -n "mgear_curveCns181"; - rename -uid "3CF4FE84-4135-80A5-1071-15B92F0B4EE0"; - setAttr -s 3 ".inputs"; -createNode objectSet -n "mgear_curveCns181Set"; - rename -uid "0721F6EB-4B88-9D26-B7C5-E9B25E702EA1"; - setAttr ".ihi" 0; - setAttr ".vo" yes; -createNode groupId -n "mgear_curveCns181GroupId"; - rename -uid "58CC08FC-4C44-A721-1269-268859C52243"; - setAttr ".ihi" 0; -createNode groupParts -n "mgear_curveCns181GroupParts"; - rename -uid "A74D9551-4729-3AB7-733B-53BCF10D609A"; - setAttr ".ihi" 0; - setAttr ".ic" -type "componentList" 1 "cv[*]"; -createNode tweak -n "tweak181"; - rename -uid "07AA57F1-497E-FE5E-EF5E-DA9695D59E96"; -createNode objectSet -n "tweakSet181"; - rename -uid "ED488B69-42E0-F866-BD51-00804CE066CF"; - setAttr ".ihi" 0; - setAttr ".vo" yes; -createNode groupId -n "groupId362"; - rename -uid "8ADEB8EB-41BF-1F02-2D86-EFB011767CA6"; - setAttr ".ihi" 0; -createNode groupParts -n "groupParts362"; - rename -uid "1FF55FDA-4B05-F551-139B-9BA3D21814C6"; - setAttr ".ihi" 0; - setAttr ".ic" -type "componentList" 1 "cv[*]"; -createNode mgear_curveCns -n "mgear_curveCns182"; - rename -uid "EC0B0441-4F99-6242-82E8-1292D1414F47"; - setAttr -s 5 ".inputs"; -createNode objectSet -n "mgear_curveCns182Set"; - rename -uid "80F9D3E0-4B68-643A-FC5A-08B948487824"; - setAttr ".ihi" 0; - setAttr ".vo" yes; -createNode groupId -n "mgear_curveCns182GroupId"; - rename -uid "A9F47892-4B95-8E21-FAD4-0BB5076F1758"; - setAttr ".ihi" 0; -createNode groupParts -n "mgear_curveCns182GroupParts"; - rename -uid "D1A45C24-498B-61C7-275F-FE8D622D3127"; - setAttr ".ihi" 0; - setAttr ".ic" -type "componentList" 1 "cv[*]"; -createNode tweak -n "tweak182"; - rename -uid "DE06A261-49E6-C5F9-A804-AE83D6E19309"; -createNode objectSet -n "tweakSet182"; - rename -uid "1FB48147-4C5A-41B8-4B12-B69A470ED569"; - setAttr ".ihi" 0; - setAttr ".vo" yes; -createNode groupId -n "groupId364"; - rename -uid "07597A06-459F-DCF7-4B5D-A9928EB0ACDB"; - setAttr ".ihi" 0; -createNode groupParts -n "groupParts364"; - rename -uid "EE2FCECC-4C28-70CD-C98F-45B9B11E0167"; - setAttr ".ihi" 0; - setAttr ".ic" -type "componentList" 1 "cv[*]"; -createNode mgear_curveCns -n "mgear_curveCns180"; - rename -uid "7747F8EA-4D61-7636-BA00-FBB26251EA17"; +createNode mgear_curveCns -n "mgear_curveCns197"; + rename -uid "F021B733-47A6-75A0-1D40-97BF57FFEF54"; setAttr -s 5 ".inputs"; -createNode objectSet -n "mgear_curveCns180Set"; - rename -uid "7B72800E-40AC-12E6-28C5-49A60C99618F"; +createNode tweak -n "tweak197"; + rename -uid "FFE48F12-48DC-B8E2-5A8B-AFAFA65077CF"; +createNode objectSet -n "mgear_curveCns197Set"; + rename -uid "F416CAD4-41E9-AE88-D526-53814E65808D"; setAttr ".ihi" 0; setAttr ".vo" yes; -createNode groupId -n "mgear_curveCns180GroupId"; - rename -uid "2E5F0CD5-4D21-071E-F14D-5496EDC62475"; +createNode groupId -n "mgear_curveCns197GroupId"; + rename -uid "97E2B5A3-49D4-1372-6EB8-D3AB4669792A"; setAttr ".ihi" 0; -createNode groupParts -n "mgear_curveCns180GroupParts"; - rename -uid "1463EA88-4E3F-4C9D-F33E-33AF974B63EB"; +createNode groupParts -n "mgear_curveCns197GroupParts"; + rename -uid "A25AF003-497F-4EBA-C237-BCA73C4DEFE8"; setAttr ".ihi" 0; setAttr ".ic" -type "componentList" 1 "cv[*]"; -createNode tweak -n "tweak180"; - rename -uid "59284B5E-4D9A-FA81-003B-89953941C0A2"; -createNode objectSet -n "tweakSet180"; - rename -uid "C334CF08-4C50-5D6A-41B3-7AB8E30F01B8"; +createNode objectSet -n "tweakSet197"; + rename -uid "EA65AC90-461D-2A0A-7405-6080B9A38D30"; setAttr ".ihi" 0; setAttr ".vo" yes; -createNode groupId -n "groupId360"; - rename -uid "CAA03350-45EE-DB1D-701C-FFA1401106C8"; +createNode groupId -n "groupId394"; + rename -uid "4A2EF0D4-43C9-8077-E807-61BAB3879CB1"; setAttr ".ihi" 0; -createNode groupParts -n "groupParts360"; - rename -uid "E1608407-42ED-47D0-0130-ACB675F7C3E1"; +createNode groupParts -n "groupParts394"; + rename -uid "821D8376-47B1-0EEC-98C8-829965089C7B"; setAttr ".ihi" 0; setAttr ".ic" -type "componentList" 1 "cv[*]"; -createNode unitConversion -n "unitConversion31"; - rename -uid "655C4B38-416D-FC2B-303E-56B2DFDFDC4D"; - setAttr ".cf" 0.017453292519943295; -createNode mgear_curveCns -n "mgear_curveCns179"; - rename -uid "C3773446-44EA-3DE6-3610-52B820946FBE"; - setAttr -s 2 ".inputs"; -createNode objectSet -n "mgear_curveCns179Set"; - rename -uid "D7D6D510-4EAE-6894-A072-BDBFBDCB6C0A"; +createNode mgear_curveCns -n "mgear_curveCns198"; + rename -uid "864A0153-4870-DB45-D813-52850C466A02"; + setAttr -s 3 ".inputs"; +createNode tweak -n "tweak198"; + rename -uid "1CB7503B-43A3-ECFE-78CD-34942379508C"; +createNode objectSet -n "mgear_curveCns198Set"; + rename -uid "580384FC-44B6-8EA0-63CE-5A90BB2C7E4F"; setAttr ".ihi" 0; setAttr ".vo" yes; -createNode groupId -n "mgear_curveCns179GroupId"; - rename -uid "D03FE963-463F-10B2-4D3B-00B34B7524BE"; +createNode groupId -n "mgear_curveCns198GroupId"; + rename -uid "D1F70E33-4D58-D433-A53B-159FBA2016F0"; setAttr ".ihi" 0; -createNode groupParts -n "mgear_curveCns179GroupParts"; - rename -uid "DE4DC584-476F-BED4-BD59-1C9241628023"; +createNode groupParts -n "mgear_curveCns198GroupParts"; + rename -uid "30D2F809-47A7-0D47-2F20-2597F7E14E38"; setAttr ".ihi" 0; setAttr ".ic" -type "componentList" 1 "cv[*]"; -createNode tweak -n "tweak179"; - rename -uid "B53413C0-41D1-8527-E895-D997A00F8E7A"; -createNode objectSet -n "tweakSet179"; - rename -uid "F0D14227-4319-6EBE-B0C8-B1BFF8783DB3"; +createNode objectSet -n "tweakSet198"; + rename -uid "75776081-438D-3618-FEF6-F3B2BEB47375"; setAttr ".ihi" 0; setAttr ".vo" yes; -createNode groupId -n "groupId358"; - rename -uid "6BCC3E70-4234-C89F-BB5C-879FBE4B6F57"; +createNode groupId -n "groupId396"; + rename -uid "286ECEE2-4D96-4194-BF1C-FEB242579148"; setAttr ".ihi" 0; -createNode groupParts -n "groupParts358"; - rename -uid "0A7BE987-4FFC-1B2F-F973-BE9CB75CE863"; +createNode groupParts -n "groupParts396"; + rename -uid "392053D1-44F8-2B1E-3A19-1C8DF3540447"; setAttr ".ihi" 0; setAttr ".ic" -type "componentList" 1 "cv[*]"; -createNode unitConversion -n "unitConversion28"; - rename -uid "AC700A5C-426B-E3D6-A5F8-31AAA1480F7A"; - setAttr ".cf" 0.017453292519943295; -createNode mgear_curveCns -n "mgear_curveCns156"; - rename -uid "D12ADECD-4CA4-929B-2680-EFBC0F2E749A"; - setAttr -s 2 ".inputs"; -createNode objectSet -n "mgear_curveCns156Set"; - rename -uid "785B099B-4163-470B-2140-FD87B21DF44A"; +createNode mgear_curveCns -n "mgear_curveCns199"; + rename -uid "44373E99-410D-A4D1-147C-569AD4C6647E"; + setAttr -s 5 ".inputs"; +createNode tweak -n "tweak199"; + rename -uid "8C620EA3-42F0-958B-E12D-A1A7A0E7DC6C"; +createNode objectSet -n "mgear_curveCns199Set"; + rename -uid "A644DB62-42D4-78F3-5912-959E17387D30"; setAttr ".ihi" 0; setAttr ".vo" yes; -createNode groupId -n "mgear_curveCns156GroupId"; - rename -uid "982F78D9-4468-0936-8937-8ABEC12372DD"; +createNode groupId -n "mgear_curveCns199GroupId"; + rename -uid "B1CFF983-4B8B-9827-15EC-5CB003A6F216"; setAttr ".ihi" 0; -createNode groupParts -n "mgear_curveCns156GroupParts"; - rename -uid "ADCE644F-442F-18E7-3FEB-00B481421712"; +createNode groupParts -n "mgear_curveCns199GroupParts"; + rename -uid "34E3E80B-4605-9098-0F80-E7A72223DC63"; setAttr ".ihi" 0; setAttr ".ic" -type "componentList" 1 "cv[*]"; -createNode tweak -n "tweak156"; - rename -uid "BD12A9FC-4DB5-0DF9-6DF4-8ABFD3E442C7"; -createNode objectSet -n "tweakSet156"; - rename -uid "4B1C65A4-4CC2-F463-895F-4BBCA7A79B5D"; +createNode objectSet -n "tweakSet199"; + rename -uid "09FD9EE3-47A4-82F0-14BF-E2AB03CEBB5F"; setAttr ".ihi" 0; setAttr ".vo" yes; -createNode groupId -n "groupId312"; - rename -uid "27F624E7-4C50-B868-BEA3-6AA8C8C19C83"; +createNode groupId -n "groupId398"; + rename -uid "E843ECE3-4D95-69EF-B5CD-199FED311FB5"; setAttr ".ihi" 0; -createNode groupParts -n "groupParts312"; - rename -uid "F0679B82-4B3E-752A-5968-D3A33F345E0B"; +createNode groupParts -n "groupParts398"; + rename -uid "1A6F68EE-49B9-7AC6-0924-D5BDF324A168"; setAttr ".ihi" 0; setAttr ".ic" -type "componentList" 1 "cv[*]"; -createNode animCurveUU -n "legBack_L0_root_st_profile"; - rename -uid "2B3162D3-4F8A-7F71-07A4-1E890FE4CC63"; +createNode animCurveUU -n "legBack_L0_root_st_profile1"; + rename -uid "63753751-43C6-81C1-8631-AAADBC494538"; setAttr ".tan" 18; setAttr ".wgt" no; setAttr -s 3 ".ktv[0:2]" 0 0 0.5 -1 1 0; -createNode animCurveUU -n "legBack_L0_root_sq_profile"; - rename -uid "4F295B79-4E35-3556-7877-01B279A4C390"; +createNode animCurveUU -n "legBack_L0_root_sq_profile1"; + rename -uid "754BF9F3-4ABE-2C6D-9510-47B1DC667B14"; setAttr ".tan" 18; setAttr ".wgt" no; setAttr -s 3 ".ktv[0:2]" 0 0 0.5 1 1 0; -createNode mgear_curveCns -n "mgear_curveCns174"; - rename -uid "F2F384C3-42E3-0ABC-C7E0-C8827A99369E"; - setAttr -s 3 ".inputs"; -createNode objectSet -n "mgear_curveCns174Set"; - rename -uid "E78AD091-4AE6-052B-12CF-71A0B45C9D2F"; +createNode mgear_curveCns -n "mgear_curveCns200"; + rename -uid "59538381-4D37-CE33-2707-A1A80EBDBDC4"; + setAttr -s 5 ".inputs"; +createNode tweak -n "tweak200"; + rename -uid "17E622B4-45D9-7248-EA40-69B3552075EC"; +createNode objectSet -n "mgear_curveCns200Set"; + rename -uid "710E5537-4B48-A311-E15D-E3936AB1E1E1"; setAttr ".ihi" 0; setAttr ".vo" yes; -createNode groupId -n "mgear_curveCns174GroupId"; - rename -uid "C4DC0AD8-4FBE-ED1D-936D-F89D04B4967C"; +createNode groupId -n "mgear_curveCns200GroupId"; + rename -uid "2EF4A523-4174-F2B8-F0A7-C59F0B4A8E95"; setAttr ".ihi" 0; -createNode groupParts -n "mgear_curveCns174GroupParts"; - rename -uid "98867574-4C7A-6C69-325F-94B03BEBFBB0"; +createNode groupParts -n "mgear_curveCns200GroupParts"; + rename -uid "70F7F6C1-4FC6-FB9E-756E-528859E779CC"; setAttr ".ihi" 0; setAttr ".ic" -type "componentList" 1 "cv[*]"; -createNode tweak -n "tweak174"; - rename -uid "63AB8AD1-42BC-322C-362A-D182C9AC65B6"; -createNode objectSet -n "tweakSet174"; - rename -uid "50D8C6D8-42BF-2C59-0216-B3BE7FA43151"; +createNode objectSet -n "tweakSet200"; + rename -uid "124AF794-40D0-9137-C69B-FEA79CDEF9BE"; setAttr ".ihi" 0; setAttr ".vo" yes; -createNode groupId -n "groupId348"; - rename -uid "6843F2F9-4246-1ECE-F54F-D7A79B531EED"; +createNode groupId -n "groupId400"; + rename -uid "777C0B77-41E4-E081-732A-7B8387DC59EC"; setAttr ".ihi" 0; -createNode groupParts -n "groupParts348"; - rename -uid "C83801FA-45E0-B3C4-F4F2-0290627FE6B1"; +createNode groupParts -n "groupParts400"; + rename -uid "BECCA4A3-432D-7553-75B7-33ADA4A71117"; setAttr ".ihi" 0; setAttr ".ic" -type "componentList" 1 "cv[*]"; -createNode mgear_curveCns -n "mgear_curveCns175"; - rename -uid "EEFD214C-48DC-E80D-30C8-D6B8CB96F5BD"; - setAttr -s 5 ".inputs"; -createNode objectSet -n "mgear_curveCns175Set"; - rename -uid "18DF929A-41D7-EAB0-8763-52A40FA53B53"; +createNode mgear_curveCns -n "mgear_curveCns201"; + rename -uid "C93EB88D-46F3-5D97-90BF-648DD5CE9566"; + setAttr -s 3 ".inputs"; +createNode tweak -n "tweak201"; + rename -uid "E2C3C30F-4263-A620-3F1C-F8AFA38DB8D1"; +createNode objectSet -n "mgear_curveCns201Set"; + rename -uid "7E5A9F10-4B3B-A5BF-A449-DC8E0DAC91B0"; setAttr ".ihi" 0; setAttr ".vo" yes; -createNode groupId -n "mgear_curveCns175GroupId"; - rename -uid "19B36CC8-4451-0EF4-2A96-76BC2650A5AB"; +createNode groupId -n "mgear_curveCns201GroupId"; + rename -uid "17C29421-48B7-FA2F-F4E6-FA88463BB1C8"; setAttr ".ihi" 0; -createNode groupParts -n "mgear_curveCns175GroupParts"; - rename -uid "D9D17387-4183-B2C9-4F3D-79AECBF611F0"; +createNode groupParts -n "mgear_curveCns201GroupParts"; + rename -uid "BF0FC7E0-43EC-2F7D-35A9-3D9F6473E0A9"; setAttr ".ihi" 0; setAttr ".ic" -type "componentList" 1 "cv[*]"; -createNode tweak -n "tweak175"; - rename -uid "B85D4286-4549-39C1-F2FC-2187010B0646"; -createNode objectSet -n "tweakSet175"; - rename -uid "1D098C6D-4856-6298-D952-D1BC05701041"; +createNode objectSet -n "tweakSet201"; + rename -uid "4969C409-42B6-1CA3-C6DD-CD85F1071D91"; setAttr ".ihi" 0; setAttr ".vo" yes; -createNode groupId -n "groupId350"; - rename -uid "7D026C50-43B7-57A6-C8DA-34A35AA6C521"; +createNode groupId -n "groupId402"; + rename -uid "6B9D457E-4DDA-671A-BF75-F383B57CDEDB"; setAttr ".ihi" 0; -createNode groupParts -n "groupParts350"; - rename -uid "F2FE0293-4661-36F2-3972-9E85920DE412"; +createNode groupParts -n "groupParts402"; + rename -uid "98F76D13-4141-AE05-EB34-2F80034DEF0F"; setAttr ".ihi" 0; setAttr ".ic" -type "componentList" 1 "cv[*]"; -createNode mgear_curveCns -n "mgear_curveCns173"; - rename -uid "E2F7CD4A-4392-6E09-9475-11990E518576"; +createNode mgear_curveCns -n "mgear_curveCns202"; + rename -uid "8A38D017-4C1E-1722-A46A-B58A8411EFA0"; setAttr -s 5 ".inputs"; -createNode objectSet -n "mgear_curveCns173Set"; - rename -uid "110C8EE0-495A-BBB3-D08C-44B11AAB3078"; +createNode tweak -n "tweak202"; + rename -uid "6B0306D7-46D0-8760-E899-29B958429795"; +createNode objectSet -n "mgear_curveCns202Set"; + rename -uid "FDA6F2C3-45D8-18BE-4120-0ABC757D2D9B"; setAttr ".ihi" 0; setAttr ".vo" yes; -createNode groupId -n "mgear_curveCns173GroupId"; - rename -uid "8A23A1AD-4733-8DB0-413A-F5B064DBAA47"; +createNode groupId -n "mgear_curveCns202GroupId"; + rename -uid "D2390497-4C11-7BBC-5FCB-8C807379D377"; setAttr ".ihi" 0; -createNode groupParts -n "mgear_curveCns173GroupParts"; - rename -uid "65EB290D-47ED-A250-C48F-389CB3D137A1"; +createNode groupParts -n "mgear_curveCns202GroupParts"; + rename -uid "F0200884-4811-BD41-2945-9AB4020D925A"; setAttr ".ihi" 0; setAttr ".ic" -type "componentList" 1 "cv[*]"; -createNode tweak -n "tweak173"; - rename -uid "94A35894-4518-B00D-D9CF-2588B5762F55"; -createNode objectSet -n "tweakSet173"; - rename -uid "F89BD380-479E-9507-2A41-029BE535C785"; +createNode objectSet -n "tweakSet202"; + rename -uid "B74F179E-4301-F308-85F7-74A0BD95CCC9"; setAttr ".ihi" 0; setAttr ".vo" yes; -createNode groupId -n "groupId346"; - rename -uid "6F548DAB-49F7-3D2A-CBCF-11BD75F27D9E"; +createNode groupId -n "groupId404"; + rename -uid "FF40C057-41A6-F9DE-7301-A989619F3022"; setAttr ".ihi" 0; -createNode groupParts -n "groupParts346"; - rename -uid "70EA9388-4A2B-D1C4-1B05-B68EF0A94A44"; +createNode groupParts -n "groupParts404"; + rename -uid "16DCCB9C-49F6-AECE-9704-A6A67CC94F53"; setAttr ".ihi" 0; setAttr ".ic" -type "componentList" 1 "cv[*]"; -createNode animCurveUU -n "legBack_R0_root_st_profile"; - rename -uid "087816FF-49C3-6C6C-F5E3-5AAF325C6849"; +createNode animCurveUU -n "legBack_R0_root_st_profile1"; + rename -uid "AB613EC9-4EC5-C65C-C865-18B78AB7D01D"; setAttr ".tan" 18; setAttr ".wgt" no; setAttr -s 3 ".ktv[0:2]" 0 0 0.5 -1 1 0; -createNode animCurveUU -n "legBack_R0_root_sq_profile"; - rename -uid "B8CE86A9-456E-A52F-9677-6F9A0D2E5941"; +createNode animCurveUU -n "legBack_R0_root_sq_profile1"; + rename -uid "63D80007-4272-E7D5-463F-8980C0546355"; setAttr ".tan" 18; setAttr ".wgt" no; setAttr -s 3 ".ktv[0:2]" 0 0 0.5 1 1 0; -createNode mgear_curveCns -n "mgear_curveCns177"; - rename -uid "BA8C5C94-4867-7C5C-5B2F-D5827109AC20"; - setAttr -s 3 ".inputs"; -createNode objectSet -n "mgear_curveCns177Set"; - rename -uid "CFB17882-46A1-09AA-6A85-12873EEAD3D5"; +createNode mgear_curveCns -n "mgear_curveCns203"; + rename -uid "B5BD0D76-4CB8-73CE-23AE-F0B57234E7C3"; + setAttr -s 5 ".inputs"; +createNode tweak -n "tweak203"; + rename -uid "69B612D3-414A-73B2-FC72-E3AE37CBB476"; +createNode objectSet -n "mgear_curveCns203Set"; + rename -uid "CFDFC27B-4C6F-6AE1-C062-ECA30AF28EDF"; setAttr ".ihi" 0; setAttr ".vo" yes; -createNode groupId -n "mgear_curveCns177GroupId"; - rename -uid "B179D96B-4008-0A38-EDB8-4DBE75D06679"; +createNode groupId -n "mgear_curveCns203GroupId"; + rename -uid "858FCD7E-4821-3DB6-3737-7AA1D132890A"; setAttr ".ihi" 0; -createNode groupParts -n "mgear_curveCns177GroupParts"; - rename -uid "92EE38C0-45C9-2FD9-8BD6-9D8BCB40FDC6"; +createNode groupParts -n "mgear_curveCns203GroupParts"; + rename -uid "ACE3E8F7-435B-6E27-7D3E-D18EE454DC4D"; setAttr ".ihi" 0; setAttr ".ic" -type "componentList" 1 "cv[*]"; -createNode tweak -n "tweak177"; - rename -uid "ACE37B7E-4E37-C680-FC05-FBBCB0F7CFAA"; -createNode objectSet -n "tweakSet177"; - rename -uid "1C02325F-4904-DF93-84D1-8AA51DFAE29A"; +createNode objectSet -n "tweakSet203"; + rename -uid "FD62A262-4B76-C1EA-DCF6-388EAA0ED048"; setAttr ".ihi" 0; setAttr ".vo" yes; -createNode groupId -n "groupId354"; - rename -uid "34B6C12C-4D53-3110-C336-02BD00587C65"; +createNode groupId -n "groupId406"; + rename -uid "F89D4A34-43D9-1540-E284-9CBB96C3D770"; setAttr ".ihi" 0; -createNode groupParts -n "groupParts354"; - rename -uid "91038817-405F-2484-6FEA-99BD0AD7123C"; +createNode groupParts -n "groupParts406"; + rename -uid "C455165E-44C6-B92F-7685-59A40013735B"; setAttr ".ihi" 0; setAttr ".ic" -type "componentList" 1 "cv[*]"; -createNode mgear_curveCns -n "mgear_curveCns178"; - rename -uid "B6717E75-4B4D-9C6D-E0C4-5E947A8F1610"; - setAttr -s 5 ".inputs"; -createNode objectSet -n "mgear_curveCns178Set"; - rename -uid "9EDF373D-4274-C9AE-28B9-729B79EA3C76"; +createNode mgear_curveCns -n "mgear_curveCns204"; + rename -uid "58CA756D-4320-370A-0C92-9EBDDFA9F960"; + setAttr -s 3 ".inputs"; +createNode tweak -n "tweak204"; + rename -uid "77B337D4-408A-9FC5-8078-3784AD709307"; +createNode objectSet -n "mgear_curveCns204Set"; + rename -uid "E43362B7-4844-3EB4-EE24-22915DCF8DDA"; setAttr ".ihi" 0; setAttr ".vo" yes; -createNode groupId -n "mgear_curveCns178GroupId"; - rename -uid "6F59A620-4EBE-82C2-2601-04B69AB6A0A7"; +createNode groupId -n "mgear_curveCns204GroupId"; + rename -uid "746C564D-4781-09D7-5A7C-589F6E46D923"; setAttr ".ihi" 0; -createNode groupParts -n "mgear_curveCns178GroupParts"; - rename -uid "A8100D75-436E-1388-278C-E6AC5DBCF768"; +createNode groupParts -n "mgear_curveCns204GroupParts"; + rename -uid "5E50172D-444A-DDA6-21F6-F7BF094D2155"; setAttr ".ihi" 0; setAttr ".ic" -type "componentList" 1 "cv[*]"; -createNode tweak -n "tweak178"; - rename -uid "6B8C4424-45A0-6E6A-1DBA-CCB79870B86B"; -createNode objectSet -n "tweakSet178"; - rename -uid "9D5C2CA9-44BE-82B0-2245-3FA768428411"; +createNode objectSet -n "tweakSet204"; + rename -uid "786B8472-4114-07E6-5D8D-90A5E6EF6218"; setAttr ".ihi" 0; setAttr ".vo" yes; -createNode groupId -n "groupId356"; - rename -uid "8B41E987-4D7A-DE11-05C0-4D9C04EBE168"; +createNode groupId -n "groupId408"; + rename -uid "BCDDAF94-4BD2-14B3-BD9C-0084767D779C"; setAttr ".ihi" 0; -createNode groupParts -n "groupParts356"; - rename -uid "CB0D8B1B-4B04-5219-C9BB-149625869ED3"; +createNode groupParts -n "groupParts408"; + rename -uid "5B6ABFB3-4743-44A7-C4A0-8BB645A3EBE8"; setAttr ".ihi" 0; setAttr ".ic" -type "componentList" 1 "cv[*]"; -createNode mgear_curveCns -n "mgear_curveCns176"; - rename -uid "5816E2B6-4181-1C2A-343A-B8B3BA8C8863"; +createNode mgear_curveCns -n "mgear_curveCns205"; + rename -uid "AE4CEC41-4FD6-6751-A7B4-A79EEFC27C1A"; setAttr -s 5 ".inputs"; -createNode objectSet -n "mgear_curveCns176Set"; - rename -uid "48C89000-4364-326A-0E15-5E86791C4794"; +createNode tweak -n "tweak205"; + rename -uid "67DC8234-449C-E2BC-98DA-B382B7E21F5D"; +createNode objectSet -n "mgear_curveCns205Set"; + rename -uid "09E0ADDE-4A50-AFBC-7F97-829EDAED0424"; setAttr ".ihi" 0; setAttr ".vo" yes; -createNode groupId -n "mgear_curveCns176GroupId"; - rename -uid "EBE02648-4C32-B36F-4AF0-35A7B38635B0"; +createNode groupId -n "mgear_curveCns205GroupId"; + rename -uid "964C6F63-48E8-551E-53DA-8A826946B5D4"; setAttr ".ihi" 0; -createNode groupParts -n "mgear_curveCns176GroupParts"; - rename -uid "09EFF952-4FE4-F39D-AF98-1EA830A29946"; +createNode groupParts -n "mgear_curveCns205GroupParts"; + rename -uid "29EF41E9-44F2-5C80-A379-EBB087824CF0"; setAttr ".ihi" 0; setAttr ".ic" -type "componentList" 1 "cv[*]"; -createNode tweak -n "tweak176"; - rename -uid "D4C28885-4BE5-DA99-6856-DB9721538219"; -createNode objectSet -n "tweakSet176"; - rename -uid "2B6260AA-4736-1683-B284-97AC3F46846B"; +createNode objectSet -n "tweakSet205"; + rename -uid "0D231BD4-4193-63AA-85C8-CB8D8F7EFF52"; setAttr ".ihi" 0; setAttr ".vo" yes; -createNode groupId -n "groupId352"; - rename -uid "A446A3C0-494C-FDEF-FCE2-3889A74219E2"; +createNode groupId -n "groupId410"; + rename -uid "12667403-4AFD-7524-9712-30A5BCC2D350"; setAttr ".ihi" 0; -createNode groupParts -n "groupParts352"; - rename -uid "451E1D0B-4CBC-A8D0-9AB8-948075B9FEF9"; +createNode groupParts -n "groupParts410"; + rename -uid "D32F9A9F-4A55-0D37-50D1-47AAEE96DEB2"; setAttr ".ihi" 0; setAttr ".ic" -type "componentList" 1 "cv[*]"; +createNode script -n "uiConfigurationScriptNode"; + rename -uid "1F8008E2-497C-466B-5D53-D49D1586B774"; + setAttr ".b" -type "string" ( + "// Maya Mel UI Configuration File.\n//\n// This script is machine generated. Edit at your own risk.\n//\n//\n\nglobal string $gMainPane;\nif (`paneLayout -exists $gMainPane`) {\n\n\tglobal int $gUseScenePanelConfig;\n\tint $useSceneConfig = $gUseScenePanelConfig;\n\tint $menusOkayInPanels = `optionVar -q allowMenusInPanels`;\tint $nVisPanes = `paneLayout -q -nvp $gMainPane`;\n\tint $nPanes = 0;\n\tstring $editorName;\n\tstring $panelName;\n\tstring $itemFilterName;\n\tstring $panelConfig;\n\n\t//\n\t// get current state of the UI\n\t//\n\tsceneUIReplacement -update $gMainPane;\n\n\t$panelName = `sceneUIReplacement -getNextPanel \"modelPanel\" (localizedPanelLabel(\"Top View\")) `;\n\tif (\"\" == $panelName) {\n\t\tif ($useSceneConfig) {\n\t\t\t$panelName = `modelPanel -unParent -l (localizedPanelLabel(\"Top View\")) -mbv $menusOkayInPanels `;\n\t\t\t$editorName = $panelName;\n modelEditor -e \n -camera \"top\" \n -useInteractiveMode 0\n -displayLights \"default\" \n -displayAppearance \"smoothShaded\" \n" + + " -activeOnly 0\n -ignorePanZoom 0\n -wireframeOnShaded 0\n -headsUpDisplay 1\n -holdOuts 1\n -selectionHiliteDisplay 1\n -useDefaultMaterial 0\n -bufferMode \"double\" \n -twoSidedLighting 0\n -backfaceCulling 0\n -xray 0\n -jointXray 0\n -activeComponentsXray 0\n -displayTextures 0\n -smoothWireframe 0\n -lineWidth 1\n -textureAnisotropic 0\n -textureHilight 1\n -textureSampling 2\n -textureDisplay \"modulate\" \n -textureMaxSize 32768\n -fogging 0\n -fogSource \"fragment\" \n -fogMode \"linear\" \n -fogStart 0\n -fogEnd 100\n -fogDensity 0.1\n -fogColor 0.5 0.5 0.5 1 \n -depthOfFieldPreview 1\n -maxConstantTransparency 1\n" + + " -rendererName \"vp2Renderer\" \n -objectFilterShowInHUD 1\n -isFiltered 0\n -colorResolution 256 256 \n -bumpResolution 512 512 \n -textureCompression 0\n -transparencyAlgorithm \"frontAndBackCull\" \n -transpInShadows 0\n -cullingOverride \"none\" \n -lowQualityLighting 0\n -maximumNumHardwareLights 1\n -occlusionCulling 0\n -shadingModel 0\n -useBaseRenderer 0\n -useReducedRenderer 0\n -smallObjectCulling 0\n -smallObjectThreshold -1 \n -interactiveDisableShadows 0\n -interactiveBackFaceCull 0\n -sortTransparent 1\n -nurbsCurves 1\n -nurbsSurfaces 1\n -polymeshes 1\n -subdivSurfaces 1\n -planes 1\n -lights 1\n -cameras 1\n -controlVertices 1\n" + + " -hulls 1\n -grid 1\n -imagePlane 1\n -joints 1\n -ikHandles 1\n -deformers 1\n -dynamics 1\n -particleInstancers 1\n -fluids 1\n -hairSystems 1\n -follicles 1\n -nCloths 1\n -nParticles 1\n -nRigids 1\n -dynamicConstraints 1\n -locators 1\n -manipulators 1\n -pluginShapes 1\n -dimensions 1\n -handles 1\n -pivots 1\n -textures 1\n -strokes 1\n -motionTrails 1\n -clipGhosts 1\n -greasePencils 1\n -shadows 0\n -captureSequenceNumber -1\n -width 1\n -height 1\n -sceneRenderFilter 0\n $editorName;\n modelEditor -e -viewSelected 0 $editorName;\n modelEditor -e \n" + + " -pluginObjects \"gpuCacheDisplayFilter\" 1 \n $editorName;\n\t\t}\n\t} else {\n\t\t$label = `panel -q -label $panelName`;\n\t\tmodelPanel -edit -l (localizedPanelLabel(\"Top View\")) -mbv $menusOkayInPanels $panelName;\n\t\t$editorName = $panelName;\n modelEditor -e \n -camera \"top\" \n -useInteractiveMode 0\n -displayLights \"default\" \n -displayAppearance \"smoothShaded\" \n -activeOnly 0\n -ignorePanZoom 0\n -wireframeOnShaded 0\n -headsUpDisplay 1\n -holdOuts 1\n -selectionHiliteDisplay 1\n -useDefaultMaterial 0\n -bufferMode \"double\" \n -twoSidedLighting 0\n -backfaceCulling 0\n -xray 0\n -jointXray 0\n -activeComponentsXray 0\n -displayTextures 0\n -smoothWireframe 0\n -lineWidth 1\n -textureAnisotropic 0\n -textureHilight 1\n -textureSampling 2\n -textureDisplay \"modulate\" \n" + + " -textureMaxSize 32768\n -fogging 0\n -fogSource \"fragment\" \n -fogMode \"linear\" \n -fogStart 0\n -fogEnd 100\n -fogDensity 0.1\n -fogColor 0.5 0.5 0.5 1 \n -depthOfFieldPreview 1\n -maxConstantTransparency 1\n -rendererName \"vp2Renderer\" \n -objectFilterShowInHUD 1\n -isFiltered 0\n -colorResolution 256 256 \n -bumpResolution 512 512 \n -textureCompression 0\n -transparencyAlgorithm \"frontAndBackCull\" \n -transpInShadows 0\n -cullingOverride \"none\" \n -lowQualityLighting 0\n -maximumNumHardwareLights 1\n -occlusionCulling 0\n -shadingModel 0\n -useBaseRenderer 0\n -useReducedRenderer 0\n -smallObjectCulling 0\n -smallObjectThreshold -1 \n -interactiveDisableShadows 0\n -interactiveBackFaceCull 0\n -sortTransparent 1\n" + + " -nurbsCurves 1\n -nurbsSurfaces 1\n -polymeshes 1\n -subdivSurfaces 1\n -planes 1\n -lights 1\n -cameras 1\n -controlVertices 1\n -hulls 1\n -grid 1\n -imagePlane 1\n -joints 1\n -ikHandles 1\n -deformers 1\n -dynamics 1\n -particleInstancers 1\n -fluids 1\n -hairSystems 1\n -follicles 1\n -nCloths 1\n -nParticles 1\n -nRigids 1\n -dynamicConstraints 1\n -locators 1\n -manipulators 1\n -pluginShapes 1\n -dimensions 1\n -handles 1\n -pivots 1\n -textures 1\n -strokes 1\n -motionTrails 1\n -clipGhosts 1\n -greasePencils 1\n -shadows 0\n -captureSequenceNumber -1\n -width 1\n -height 1\n -sceneRenderFilter 0\n $editorName;\n" + + " modelEditor -e -viewSelected 0 $editorName;\n modelEditor -e \n -pluginObjects \"gpuCacheDisplayFilter\" 1 \n $editorName;\n\t\tif (!$useSceneConfig) {\n\t\t\tpanel -e -l $label $panelName;\n\t\t}\n\t}\n\n\n\t$panelName = `sceneUIReplacement -getNextPanel \"modelPanel\" (localizedPanelLabel(\"Side View\")) `;\n\tif (\"\" == $panelName) {\n\t\tif ($useSceneConfig) {\n\t\t\t$panelName = `modelPanel -unParent -l (localizedPanelLabel(\"Side View\")) -mbv $menusOkayInPanels `;\n\t\t\t$editorName = $panelName;\n modelEditor -e \n -camera \"side\" \n -useInteractiveMode 0\n -displayLights \"default\" \n -displayAppearance \"smoothShaded\" \n -activeOnly 0\n -ignorePanZoom 0\n -wireframeOnShaded 0\n -headsUpDisplay 1\n -holdOuts 1\n -selectionHiliteDisplay 1\n -useDefaultMaterial 0\n -bufferMode \"double\" \n -twoSidedLighting 0\n -backfaceCulling 0\n" + + " -xray 0\n -jointXray 0\n -activeComponentsXray 0\n -displayTextures 0\n -smoothWireframe 0\n -lineWidth 1\n -textureAnisotropic 0\n -textureHilight 1\n -textureSampling 2\n -textureDisplay \"modulate\" \n -textureMaxSize 32768\n -fogging 0\n -fogSource \"fragment\" \n -fogMode \"linear\" \n -fogStart 0\n -fogEnd 100\n -fogDensity 0.1\n -fogColor 0.5 0.5 0.5 1 \n -depthOfFieldPreview 1\n -maxConstantTransparency 1\n -rendererName \"vp2Renderer\" \n -objectFilterShowInHUD 1\n -isFiltered 0\n -colorResolution 256 256 \n -bumpResolution 512 512 \n -textureCompression 0\n -transparencyAlgorithm \"frontAndBackCull\" \n -transpInShadows 0\n -cullingOverride \"none\" \n" + + " -lowQualityLighting 0\n -maximumNumHardwareLights 1\n -occlusionCulling 0\n -shadingModel 0\n -useBaseRenderer 0\n -useReducedRenderer 0\n -smallObjectCulling 0\n -smallObjectThreshold -1 \n -interactiveDisableShadows 0\n -interactiveBackFaceCull 0\n -sortTransparent 1\n -nurbsCurves 1\n -nurbsSurfaces 1\n -polymeshes 1\n -subdivSurfaces 1\n -planes 1\n -lights 1\n -cameras 1\n -controlVertices 1\n -hulls 1\n -grid 1\n -imagePlane 1\n -joints 1\n -ikHandles 1\n -deformers 1\n -dynamics 1\n -particleInstancers 1\n -fluids 1\n -hairSystems 1\n -follicles 1\n -nCloths 1\n -nParticles 1\n" + + " -nRigids 1\n -dynamicConstraints 1\n -locators 1\n -manipulators 1\n -pluginShapes 1\n -dimensions 1\n -handles 1\n -pivots 1\n -textures 1\n -strokes 1\n -motionTrails 1\n -clipGhosts 1\n -greasePencils 1\n -shadows 0\n -captureSequenceNumber -1\n -width 1\n -height 1\n -sceneRenderFilter 0\n $editorName;\n modelEditor -e -viewSelected 0 $editorName;\n modelEditor -e \n -pluginObjects \"gpuCacheDisplayFilter\" 1 \n $editorName;\n\t\t}\n\t} else {\n\t\t$label = `panel -q -label $panelName`;\n\t\tmodelPanel -edit -l (localizedPanelLabel(\"Side View\")) -mbv $menusOkayInPanels $panelName;\n\t\t$editorName = $panelName;\n modelEditor -e \n -camera \"side\" \n -useInteractiveMode 0\n -displayLights \"default\" \n" + + " -displayAppearance \"smoothShaded\" \n -activeOnly 0\n -ignorePanZoom 0\n -wireframeOnShaded 0\n -headsUpDisplay 1\n -holdOuts 1\n -selectionHiliteDisplay 1\n -useDefaultMaterial 0\n -bufferMode \"double\" \n -twoSidedLighting 0\n -backfaceCulling 0\n -xray 0\n -jointXray 0\n -activeComponentsXray 0\n -displayTextures 0\n -smoothWireframe 0\n -lineWidth 1\n -textureAnisotropic 0\n -textureHilight 1\n -textureSampling 2\n -textureDisplay \"modulate\" \n -textureMaxSize 32768\n -fogging 0\n -fogSource \"fragment\" \n -fogMode \"linear\" \n -fogStart 0\n -fogEnd 100\n -fogDensity 0.1\n -fogColor 0.5 0.5 0.5 1 \n -depthOfFieldPreview 1\n -maxConstantTransparency 1\n -rendererName \"vp2Renderer\" \n -objectFilterShowInHUD 1\n" + + " -isFiltered 0\n -colorResolution 256 256 \n -bumpResolution 512 512 \n -textureCompression 0\n -transparencyAlgorithm \"frontAndBackCull\" \n -transpInShadows 0\n -cullingOverride \"none\" \n -lowQualityLighting 0\n -maximumNumHardwareLights 1\n -occlusionCulling 0\n -shadingModel 0\n -useBaseRenderer 0\n -useReducedRenderer 0\n -smallObjectCulling 0\n -smallObjectThreshold -1 \n -interactiveDisableShadows 0\n -interactiveBackFaceCull 0\n -sortTransparent 1\n -nurbsCurves 1\n -nurbsSurfaces 1\n -polymeshes 1\n -subdivSurfaces 1\n -planes 1\n -lights 1\n -cameras 1\n -controlVertices 1\n -hulls 1\n -grid 1\n -imagePlane 1\n -joints 1\n -ikHandles 1\n -deformers 1\n -dynamics 1\n -particleInstancers 1\n" + + " -fluids 1\n -hairSystems 1\n -follicles 1\n -nCloths 1\n -nParticles 1\n -nRigids 1\n -dynamicConstraints 1\n -locators 1\n -manipulators 1\n -pluginShapes 1\n -dimensions 1\n -handles 1\n -pivots 1\n -textures 1\n -strokes 1\n -motionTrails 1\n -clipGhosts 1\n -greasePencils 1\n -shadows 0\n -captureSequenceNumber -1\n -width 1\n -height 1\n -sceneRenderFilter 0\n $editorName;\n modelEditor -e -viewSelected 0 $editorName;\n modelEditor -e \n -pluginObjects \"gpuCacheDisplayFilter\" 1 \n $editorName;\n\t\tif (!$useSceneConfig) {\n\t\t\tpanel -e -l $label $panelName;\n\t\t}\n\t}\n\n\n\t$panelName = `sceneUIReplacement -getNextPanel \"modelPanel\" (localizedPanelLabel(\"Front View\")) `;\n\tif (\"\" == $panelName) {\n\t\tif ($useSceneConfig) {\n\t\t\t$panelName = `modelPanel -unParent -l (localizedPanelLabel(\"Front View\")) -mbv $menusOkayInPanels `;\n" + + "\t\t\t$editorName = $panelName;\n modelEditor -e \n -camera \"front\" \n -useInteractiveMode 0\n -displayLights \"default\" \n -displayAppearance \"smoothShaded\" \n -activeOnly 0\n -ignorePanZoom 0\n -wireframeOnShaded 0\n -headsUpDisplay 1\n -holdOuts 1\n -selectionHiliteDisplay 1\n -useDefaultMaterial 0\n -bufferMode \"double\" \n -twoSidedLighting 0\n -backfaceCulling 0\n -xray 0\n -jointXray 0\n -activeComponentsXray 0\n -displayTextures 0\n -smoothWireframe 0\n -lineWidth 1\n -textureAnisotropic 0\n -textureHilight 1\n -textureSampling 2\n -textureDisplay \"modulate\" \n -textureMaxSize 32768\n -fogging 0\n -fogSource \"fragment\" \n -fogMode \"linear\" \n" + + " -fogStart 0\n -fogEnd 100\n -fogDensity 0.1\n -fogColor 0.5 0.5 0.5 1 \n -depthOfFieldPreview 1\n -maxConstantTransparency 1\n -rendererName \"vp2Renderer\" \n -objectFilterShowInHUD 1\n -isFiltered 0\n -colorResolution 256 256 \n -bumpResolution 512 512 \n -textureCompression 0\n -transparencyAlgorithm \"frontAndBackCull\" \n -transpInShadows 0\n -cullingOverride \"none\" \n -lowQualityLighting 0\n -maximumNumHardwareLights 1\n -occlusionCulling 0\n -shadingModel 0\n -useBaseRenderer 0\n -useReducedRenderer 0\n -smallObjectCulling 0\n -smallObjectThreshold -1 \n -interactiveDisableShadows 0\n -interactiveBackFaceCull 0\n -sortTransparent 1\n -nurbsCurves 1\n" + + " -nurbsSurfaces 1\n -polymeshes 1\n -subdivSurfaces 1\n -planes 1\n -lights 1\n -cameras 1\n -controlVertices 1\n -hulls 1\n -grid 1\n -imagePlane 1\n -joints 1\n -ikHandles 1\n -deformers 1\n -dynamics 1\n -particleInstancers 1\n -fluids 1\n -hairSystems 1\n -follicles 1\n -nCloths 1\n -nParticles 1\n -nRigids 1\n -dynamicConstraints 1\n -locators 1\n -manipulators 1\n -pluginShapes 1\n -dimensions 1\n -handles 1\n -pivots 1\n -textures 1\n -strokes 1\n -motionTrails 1\n -clipGhosts 1\n -greasePencils 1\n -shadows 0\n -captureSequenceNumber -1\n" + + " -width 1\n -height 1\n -sceneRenderFilter 0\n $editorName;\n modelEditor -e -viewSelected 0 $editorName;\n modelEditor -e \n -pluginObjects \"gpuCacheDisplayFilter\" 1 \n $editorName;\n\t\t}\n\t} else {\n\t\t$label = `panel -q -label $panelName`;\n\t\tmodelPanel -edit -l (localizedPanelLabel(\"Front View\")) -mbv $menusOkayInPanels $panelName;\n\t\t$editorName = $panelName;\n modelEditor -e \n -camera \"front\" \n -useInteractiveMode 0\n -displayLights \"default\" \n -displayAppearance \"smoothShaded\" \n -activeOnly 0\n -ignorePanZoom 0\n -wireframeOnShaded 0\n -headsUpDisplay 1\n -holdOuts 1\n -selectionHiliteDisplay 1\n -useDefaultMaterial 0\n -bufferMode \"double\" \n -twoSidedLighting 0\n -backfaceCulling 0\n -xray 0\n -jointXray 0\n -activeComponentsXray 0\n" + + " -displayTextures 0\n -smoothWireframe 0\n -lineWidth 1\n -textureAnisotropic 0\n -textureHilight 1\n -textureSampling 2\n -textureDisplay \"modulate\" \n -textureMaxSize 32768\n -fogging 0\n -fogSource \"fragment\" \n -fogMode \"linear\" \n -fogStart 0\n -fogEnd 100\n -fogDensity 0.1\n -fogColor 0.5 0.5 0.5 1 \n -depthOfFieldPreview 1\n -maxConstantTransparency 1\n -rendererName \"vp2Renderer\" \n -objectFilterShowInHUD 1\n -isFiltered 0\n -colorResolution 256 256 \n -bumpResolution 512 512 \n -textureCompression 0\n -transparencyAlgorithm \"frontAndBackCull\" \n -transpInShadows 0\n -cullingOverride \"none\" \n -lowQualityLighting 0\n -maximumNumHardwareLights 1\n -occlusionCulling 0\n -shadingModel 0\n -useBaseRenderer 0\n" + + " -useReducedRenderer 0\n -smallObjectCulling 0\n -smallObjectThreshold -1 \n -interactiveDisableShadows 0\n -interactiveBackFaceCull 0\n -sortTransparent 1\n -nurbsCurves 1\n -nurbsSurfaces 1\n -polymeshes 1\n -subdivSurfaces 1\n -planes 1\n -lights 1\n -cameras 1\n -controlVertices 1\n -hulls 1\n -grid 1\n -imagePlane 1\n -joints 1\n -ikHandles 1\n -deformers 1\n -dynamics 1\n -particleInstancers 1\n -fluids 1\n -hairSystems 1\n -follicles 1\n -nCloths 1\n -nParticles 1\n -nRigids 1\n -dynamicConstraints 1\n -locators 1\n -manipulators 1\n -pluginShapes 1\n -dimensions 1\n -handles 1\n -pivots 1\n -textures 1\n -strokes 1\n -motionTrails 1\n" + + " -clipGhosts 1\n -greasePencils 1\n -shadows 0\n -captureSequenceNumber -1\n -width 1\n -height 1\n -sceneRenderFilter 0\n $editorName;\n modelEditor -e -viewSelected 0 $editorName;\n modelEditor -e \n -pluginObjects \"gpuCacheDisplayFilter\" 1 \n $editorName;\n\t\tif (!$useSceneConfig) {\n\t\t\tpanel -e -l $label $panelName;\n\t\t}\n\t}\n\n\n\t$panelName = `sceneUIReplacement -getNextPanel \"modelPanel\" (localizedPanelLabel(\"Persp View\")) `;\n\tif (\"\" == $panelName) {\n\t\tif ($useSceneConfig) {\n\t\t\t$panelName = `modelPanel -unParent -l (localizedPanelLabel(\"Persp View\")) -mbv $menusOkayInPanels `;\n\t\t\t$editorName = $panelName;\n modelEditor -e \n -camera \"persp\" \n -useInteractiveMode 0\n -displayLights \"default\" \n -displayAppearance \"smoothShaded\" \n -activeOnly 0\n -ignorePanZoom 0\n -wireframeOnShaded 0\n -headsUpDisplay 1\n" + + " -holdOuts 1\n -selectionHiliteDisplay 1\n -useDefaultMaterial 0\n -bufferMode \"double\" \n -twoSidedLighting 0\n -backfaceCulling 0\n -xray 0\n -jointXray 0\n -activeComponentsXray 0\n -displayTextures 0\n -smoothWireframe 0\n -lineWidth 1\n -textureAnisotropic 0\n -textureHilight 1\n -textureSampling 2\n -textureDisplay \"modulate\" \n -textureMaxSize 32768\n -fogging 0\n -fogSource \"fragment\" \n -fogMode \"linear\" \n -fogStart 0\n -fogEnd 100\n -fogDensity 0.1\n -fogColor 0.5 0.5 0.5 1 \n -depthOfFieldPreview 1\n -maxConstantTransparency 1\n -rendererName \"vp2Renderer\" \n -objectFilterShowInHUD 1\n -isFiltered 0\n" + + " -colorResolution 256 256 \n -bumpResolution 512 512 \n -textureCompression 0\n -transparencyAlgorithm \"frontAndBackCull\" \n -transpInShadows 0\n -cullingOverride \"none\" \n -lowQualityLighting 0\n -maximumNumHardwareLights 1\n -occlusionCulling 0\n -shadingModel 0\n -useBaseRenderer 0\n -useReducedRenderer 0\n -smallObjectCulling 0\n -smallObjectThreshold -1 \n -interactiveDisableShadows 0\n -interactiveBackFaceCull 0\n -sortTransparent 1\n -nurbsCurves 1\n -nurbsSurfaces 1\n -polymeshes 1\n -subdivSurfaces 1\n -planes 1\n -lights 1\n -cameras 1\n -controlVertices 1\n -hulls 1\n -grid 1\n -imagePlane 1\n -joints 1\n" + + " -ikHandles 1\n -deformers 1\n -dynamics 1\n -particleInstancers 1\n -fluids 1\n -hairSystems 1\n -follicles 1\n -nCloths 1\n -nParticles 1\n -nRigids 1\n -dynamicConstraints 1\n -locators 1\n -manipulators 1\n -pluginShapes 1\n -dimensions 1\n -handles 1\n -pivots 1\n -textures 1\n -strokes 1\n -motionTrails 1\n -clipGhosts 1\n -greasePencils 1\n -shadows 0\n -captureSequenceNumber -1\n -width 1300\n -height 740\n -sceneRenderFilter 0\n $editorName;\n modelEditor -e -viewSelected 0 $editorName;\n modelEditor -e \n -pluginObjects \"gpuCacheDisplayFilter\" 1 \n $editorName;\n\t\t}\n\t} else {\n" + + "\t\t$label = `panel -q -label $panelName`;\n\t\tmodelPanel -edit -l (localizedPanelLabel(\"Persp View\")) -mbv $menusOkayInPanels $panelName;\n\t\t$editorName = $panelName;\n modelEditor -e \n -camera \"persp\" \n -useInteractiveMode 0\n -displayLights \"default\" \n -displayAppearance \"smoothShaded\" \n -activeOnly 0\n -ignorePanZoom 0\n -wireframeOnShaded 0\n -headsUpDisplay 1\n -holdOuts 1\n -selectionHiliteDisplay 1\n -useDefaultMaterial 0\n -bufferMode \"double\" \n -twoSidedLighting 0\n -backfaceCulling 0\n -xray 0\n -jointXray 0\n -activeComponentsXray 0\n -displayTextures 0\n -smoothWireframe 0\n -lineWidth 1\n -textureAnisotropic 0\n -textureHilight 1\n -textureSampling 2\n -textureDisplay \"modulate\" \n -textureMaxSize 32768\n -fogging 0\n -fogSource \"fragment\" \n" + + " -fogMode \"linear\" \n -fogStart 0\n -fogEnd 100\n -fogDensity 0.1\n -fogColor 0.5 0.5 0.5 1 \n -depthOfFieldPreview 1\n -maxConstantTransparency 1\n -rendererName \"vp2Renderer\" \n -objectFilterShowInHUD 1\n -isFiltered 0\n -colorResolution 256 256 \n -bumpResolution 512 512 \n -textureCompression 0\n -transparencyAlgorithm \"frontAndBackCull\" \n -transpInShadows 0\n -cullingOverride \"none\" \n -lowQualityLighting 0\n -maximumNumHardwareLights 1\n -occlusionCulling 0\n -shadingModel 0\n -useBaseRenderer 0\n -useReducedRenderer 0\n -smallObjectCulling 0\n -smallObjectThreshold -1 \n -interactiveDisableShadows 0\n -interactiveBackFaceCull 0\n -sortTransparent 1\n -nurbsCurves 1\n -nurbsSurfaces 1\n -polymeshes 1\n -subdivSurfaces 1\n" + + " -planes 1\n -lights 1\n -cameras 1\n -controlVertices 1\n -hulls 1\n -grid 1\n -imagePlane 1\n -joints 1\n -ikHandles 1\n -deformers 1\n -dynamics 1\n -particleInstancers 1\n -fluids 1\n -hairSystems 1\n -follicles 1\n -nCloths 1\n -nParticles 1\n -nRigids 1\n -dynamicConstraints 1\n -locators 1\n -manipulators 1\n -pluginShapes 1\n -dimensions 1\n -handles 1\n -pivots 1\n -textures 1\n -strokes 1\n -motionTrails 1\n -clipGhosts 1\n -greasePencils 1\n -shadows 0\n -captureSequenceNumber -1\n -width 1300\n -height 740\n -sceneRenderFilter 0\n $editorName;\n modelEditor -e -viewSelected 0 $editorName;\n modelEditor -e \n -pluginObjects \"gpuCacheDisplayFilter\" 1 \n" + + " $editorName;\n\t\tif (!$useSceneConfig) {\n\t\t\tpanel -e -l $label $panelName;\n\t\t}\n\t}\n\n\n\t$panelName = `sceneUIReplacement -getNextPanel \"outlinerPanel\" (localizedPanelLabel(\"Outliner\")) `;\n\tif (\"\" == $panelName) {\n\t\tif ($useSceneConfig) {\n\t\t\t$panelName = `outlinerPanel -unParent -l (localizedPanelLabel(\"Outliner\")) -mbv $menusOkayInPanels `;\n\t\t\t$editorName = $panelName;\n outlinerEditor -e \n -docTag \"isolOutln_fromSeln\" \n -showShapes 0\n -showAssignedMaterials 0\n -showReferenceNodes 1\n -showReferenceMembers 1\n -showAttributes 0\n -showConnected 0\n -showAnimCurvesOnly 0\n -showMuteInfo 0\n -organizeByLayer 1\n -showAnimLayerWeight 1\n -autoExpandLayers 1\n -autoExpand 0\n -showDagOnly 1\n -showAssets 1\n -showContainedOnly 1\n -showPublishedAsConnected 0\n -showContainerContents 1\n" + + " -ignoreDagHierarchy 0\n -expandConnections 0\n -showUpstreamCurves 1\n -showUnitlessCurves 1\n -showCompounds 1\n -showLeafs 1\n -showNumericAttrsOnly 0\n -highlightActive 1\n -autoSelectNewObjects 0\n -doNotSelectNewObjects 0\n -dropIsParent 1\n -transmitFilters 0\n -setFilter \"defaultSetFilter\" \n -showSetMembers 1\n -allowMultiSelection 1\n -alwaysToggleSelect 0\n -directSelect 0\n -isSet 0\n -isSetMember 0\n -displayMode \"DAG\" \n -expandObjects 0\n -setsIgnoreFilters 1\n -containersIgnoreFilters 0\n -editAttrName 0\n -showAttrValues 0\n -highlightSecondary 0\n -showUVAttrsOnly 0\n -showTextureNodesOnly 0\n -attrAlphaOrder \"default\" \n" + + " -animLayerFilterOptions \"allAffecting\" \n -sortOrder \"none\" \n -longNames 0\n -niceNames 1\n -showNamespace 1\n -showPinIcons 0\n -mapMotionTrails 0\n -ignoreHiddenAttribute 0\n -ignoreOutlinerColor 0\n -renderFilterVisible 0\n -renderFilterIndex 0\n -selectionOrder \"chronological\" \n -expandAttribute 0\n $editorName;\n\t\t}\n\t} else {\n\t\t$label = `panel -q -label $panelName`;\n\t\toutlinerPanel -edit -l (localizedPanelLabel(\"Outliner\")) -mbv $menusOkayInPanels $panelName;\n\t\t$editorName = $panelName;\n outlinerEditor -e \n -docTag \"isolOutln_fromSeln\" \n -showShapes 0\n -showAssignedMaterials 0\n -showReferenceNodes 1\n -showReferenceMembers 1\n -showAttributes 0\n -showConnected 0\n -showAnimCurvesOnly 0\n -showMuteInfo 0\n -organizeByLayer 1\n" + + " -showAnimLayerWeight 1\n -autoExpandLayers 1\n -autoExpand 0\n -showDagOnly 1\n -showAssets 1\n -showContainedOnly 1\n -showPublishedAsConnected 0\n -showContainerContents 1\n -ignoreDagHierarchy 0\n -expandConnections 0\n -showUpstreamCurves 1\n -showUnitlessCurves 1\n -showCompounds 1\n -showLeafs 1\n -showNumericAttrsOnly 0\n -highlightActive 1\n -autoSelectNewObjects 0\n -doNotSelectNewObjects 0\n -dropIsParent 1\n -transmitFilters 0\n -setFilter \"defaultSetFilter\" \n -showSetMembers 1\n -allowMultiSelection 1\n -alwaysToggleSelect 0\n -directSelect 0\n -isSet 0\n -isSetMember 0\n -displayMode \"DAG\" \n -expandObjects 0\n -setsIgnoreFilters 1\n -containersIgnoreFilters 0\n -editAttrName 0\n -showAttrValues 0\n" + + " -highlightSecondary 0\n -showUVAttrsOnly 0\n -showTextureNodesOnly 0\n -attrAlphaOrder \"default\" \n -animLayerFilterOptions \"allAffecting\" \n -sortOrder \"none\" \n -longNames 0\n -niceNames 1\n -showNamespace 1\n -showPinIcons 0\n -mapMotionTrails 0\n -ignoreHiddenAttribute 0\n -ignoreOutlinerColor 0\n -renderFilterVisible 0\n -renderFilterIndex 0\n -selectionOrder \"chronological\" \n -expandAttribute 0\n $editorName;\n\t\tif (!$useSceneConfig) {\n\t\t\tpanel -e -l $label $panelName;\n\t\t}\n\t}\n\n\n\t$panelName = `sceneUIReplacement -getNextScriptedPanel \"graphEditor\" (localizedPanelLabel(\"Graph Editor\")) `;\n\tif (\"\" == $panelName) {\n\t\tif ($useSceneConfig) {\n\t\t\t$panelName = `scriptedPanel -unParent -type \"graphEditor\" -l (localizedPanelLabel(\"Graph Editor\")) -mbv $menusOkayInPanels `;\n\n\t\t\t$editorName = ($panelName+\"OutlineEd\");\n outlinerEditor -e \n" + + " -showShapes 1\n -showAssignedMaterials 0\n -showReferenceNodes 0\n -showReferenceMembers 0\n -showAttributes 1\n -showConnected 1\n -showAnimCurvesOnly 1\n -showMuteInfo 0\n -organizeByLayer 1\n -showAnimLayerWeight 1\n -autoExpandLayers 1\n -autoExpand 1\n -showDagOnly 0\n -showAssets 1\n -showContainedOnly 0\n -showPublishedAsConnected 0\n -showContainerContents 0\n -ignoreDagHierarchy 0\n -expandConnections 1\n -showUpstreamCurves 1\n -showUnitlessCurves 1\n -showCompounds 0\n -showLeafs 1\n -showNumericAttrsOnly 1\n -highlightActive 0\n -autoSelectNewObjects 1\n -doNotSelectNewObjects 0\n -dropIsParent 1\n -transmitFilters 1\n" + + " -setFilter \"0\" \n -showSetMembers 0\n -allowMultiSelection 1\n -alwaysToggleSelect 0\n -directSelect 0\n -displayMode \"DAG\" \n -expandObjects 0\n -setsIgnoreFilters 1\n -containersIgnoreFilters 0\n -editAttrName 0\n -showAttrValues 0\n -highlightSecondary 0\n -showUVAttrsOnly 0\n -showTextureNodesOnly 0\n -attrAlphaOrder \"default\" \n -animLayerFilterOptions \"allAffecting\" \n -sortOrder \"none\" \n -longNames 0\n -niceNames 1\n -showNamespace 1\n -showPinIcons 1\n -mapMotionTrails 1\n -ignoreHiddenAttribute 0\n -ignoreOutlinerColor 0\n -renderFilterVisible 0\n $editorName;\n\n\t\t\t$editorName = ($panelName+\"GraphEd\");\n animCurveEditor -e \n -displayKeys 1\n" + + " -displayTangents 0\n -displayActiveKeys 0\n -displayActiveKeyTangents 1\n -displayInfinities 0\n -displayValues 0\n -autoFit 0\n -snapTime \"integer\" \n -snapValue \"none\" \n -showResults \"off\" \n -showBufferCurves \"off\" \n -smoothness \"fine\" \n -resultSamples 1\n -resultScreenSamples 0\n -resultUpdate \"delayed\" \n -showUpstreamCurves 1\n -showCurveNames 0\n -showActiveCurveNames 0\n -stackedCurves 0\n -stackedCurvesMin -1\n -stackedCurvesMax 1\n -stackedCurvesSpace 0.2\n -displayNormalized 0\n -preSelectionHighlight 0\n -constrainDrag 0\n -classicMode 1\n $editorName;\n\t\t}\n\t} else {\n\t\t$label = `panel -q -label $panelName`;\n\t\tscriptedPanel -edit -l (localizedPanelLabel(\"Graph Editor\")) -mbv $menusOkayInPanels $panelName;\n" + + "\n\t\t\t$editorName = ($panelName+\"OutlineEd\");\n outlinerEditor -e \n -showShapes 1\n -showAssignedMaterials 0\n -showReferenceNodes 0\n -showReferenceMembers 0\n -showAttributes 1\n -showConnected 1\n -showAnimCurvesOnly 1\n -showMuteInfo 0\n -organizeByLayer 1\n -showAnimLayerWeight 1\n -autoExpandLayers 1\n -autoExpand 1\n -showDagOnly 0\n -showAssets 1\n -showContainedOnly 0\n -showPublishedAsConnected 0\n -showContainerContents 0\n -ignoreDagHierarchy 0\n -expandConnections 1\n -showUpstreamCurves 1\n -showUnitlessCurves 1\n -showCompounds 0\n -showLeafs 1\n -showNumericAttrsOnly 1\n -highlightActive 0\n -autoSelectNewObjects 1\n -doNotSelectNewObjects 0\n" + + " -dropIsParent 1\n -transmitFilters 1\n -setFilter \"0\" \n -showSetMembers 0\n -allowMultiSelection 1\n -alwaysToggleSelect 0\n -directSelect 0\n -displayMode \"DAG\" \n -expandObjects 0\n -setsIgnoreFilters 1\n -containersIgnoreFilters 0\n -editAttrName 0\n -showAttrValues 0\n -highlightSecondary 0\n -showUVAttrsOnly 0\n -showTextureNodesOnly 0\n -attrAlphaOrder \"default\" \n -animLayerFilterOptions \"allAffecting\" \n -sortOrder \"none\" \n -longNames 0\n -niceNames 1\n -showNamespace 1\n -showPinIcons 1\n -mapMotionTrails 1\n -ignoreHiddenAttribute 0\n -ignoreOutlinerColor 0\n -renderFilterVisible 0\n $editorName;\n\n\t\t\t$editorName = ($panelName+\"GraphEd\");\n" + + " animCurveEditor -e \n -displayKeys 1\n -displayTangents 0\n -displayActiveKeys 0\n -displayActiveKeyTangents 1\n -displayInfinities 0\n -displayValues 0\n -autoFit 0\n -snapTime \"integer\" \n -snapValue \"none\" \n -showResults \"off\" \n -showBufferCurves \"off\" \n -smoothness \"fine\" \n -resultSamples 1\n -resultScreenSamples 0\n -resultUpdate \"delayed\" \n -showUpstreamCurves 1\n -showCurveNames 0\n -showActiveCurveNames 0\n -stackedCurves 0\n -stackedCurvesMin -1\n -stackedCurvesMax 1\n -stackedCurvesSpace 0.2\n -displayNormalized 0\n -preSelectionHighlight 0\n -constrainDrag 0\n -classicMode 1\n $editorName;\n\t\tif (!$useSceneConfig) {\n" + + "\t\t\tpanel -e -l $label $panelName;\n\t\t}\n\t}\n\n\n\t$panelName = `sceneUIReplacement -getNextScriptedPanel \"dopeSheetPanel\" (localizedPanelLabel(\"Dope Sheet\")) `;\n\tif (\"\" == $panelName) {\n\t\tif ($useSceneConfig) {\n\t\t\t$panelName = `scriptedPanel -unParent -type \"dopeSheetPanel\" -l (localizedPanelLabel(\"Dope Sheet\")) -mbv $menusOkayInPanels `;\n\n\t\t\t$editorName = ($panelName+\"OutlineEd\");\n outlinerEditor -e \n -showShapes 1\n -showAssignedMaterials 0\n -showReferenceNodes 0\n -showReferenceMembers 0\n -showAttributes 1\n -showConnected 1\n -showAnimCurvesOnly 1\n -showMuteInfo 0\n -organizeByLayer 1\n -showAnimLayerWeight 1\n -autoExpandLayers 1\n -autoExpand 0\n -showDagOnly 0\n -showAssets 1\n -showContainedOnly 0\n -showPublishedAsConnected 0\n -showContainerContents 0\n -ignoreDagHierarchy 0\n" + + " -expandConnections 1\n -showUpstreamCurves 1\n -showUnitlessCurves 0\n -showCompounds 1\n -showLeafs 1\n -showNumericAttrsOnly 1\n -highlightActive 0\n -autoSelectNewObjects 0\n -doNotSelectNewObjects 1\n -dropIsParent 1\n -transmitFilters 0\n -setFilter \"0\" \n -showSetMembers 0\n -allowMultiSelection 1\n -alwaysToggleSelect 0\n -directSelect 0\n -displayMode \"DAG\" \n -expandObjects 0\n -setsIgnoreFilters 1\n -containersIgnoreFilters 0\n -editAttrName 0\n -showAttrValues 0\n -highlightSecondary 0\n -showUVAttrsOnly 0\n -showTextureNodesOnly 0\n -attrAlphaOrder \"default\" \n -animLayerFilterOptions \"allAffecting\" \n -sortOrder \"none\" \n" + + " -longNames 0\n -niceNames 1\n -showNamespace 1\n -showPinIcons 0\n -mapMotionTrails 1\n -ignoreHiddenAttribute 0\n -ignoreOutlinerColor 0\n -renderFilterVisible 0\n $editorName;\n\n\t\t\t$editorName = ($panelName+\"DopeSheetEd\");\n dopeSheetEditor -e \n -displayKeys 1\n -displayTangents 0\n -displayActiveKeys 0\n -displayActiveKeyTangents 0\n -displayInfinities 0\n -displayValues 0\n -autoFit 0\n -snapTime \"integer\" \n -snapValue \"none\" \n -outliner \"dopeSheetPanel1OutlineEd\" \n -showSummary 1\n -showScene 0\n -hierarchyBelow 0\n -showTicks 1\n -selectionWindow 0 0 0 0 \n $editorName;\n\t\t}\n\t} else {\n\t\t$label = `panel -q -label $panelName`;\n\t\tscriptedPanel -edit -l (localizedPanelLabel(\"Dope Sheet\")) -mbv $menusOkayInPanels $panelName;\n" + + "\n\t\t\t$editorName = ($panelName+\"OutlineEd\");\n outlinerEditor -e \n -showShapes 1\n -showAssignedMaterials 0\n -showReferenceNodes 0\n -showReferenceMembers 0\n -showAttributes 1\n -showConnected 1\n -showAnimCurvesOnly 1\n -showMuteInfo 0\n -organizeByLayer 1\n -showAnimLayerWeight 1\n -autoExpandLayers 1\n -autoExpand 0\n -showDagOnly 0\n -showAssets 1\n -showContainedOnly 0\n -showPublishedAsConnected 0\n -showContainerContents 0\n -ignoreDagHierarchy 0\n -expandConnections 1\n -showUpstreamCurves 1\n -showUnitlessCurves 0\n -showCompounds 1\n -showLeafs 1\n -showNumericAttrsOnly 1\n -highlightActive 0\n -autoSelectNewObjects 0\n -doNotSelectNewObjects 1\n" + + " -dropIsParent 1\n -transmitFilters 0\n -setFilter \"0\" \n -showSetMembers 0\n -allowMultiSelection 1\n -alwaysToggleSelect 0\n -directSelect 0\n -displayMode \"DAG\" \n -expandObjects 0\n -setsIgnoreFilters 1\n -containersIgnoreFilters 0\n -editAttrName 0\n -showAttrValues 0\n -highlightSecondary 0\n -showUVAttrsOnly 0\n -showTextureNodesOnly 0\n -attrAlphaOrder \"default\" \n -animLayerFilterOptions \"allAffecting\" \n -sortOrder \"none\" \n -longNames 0\n -niceNames 1\n -showNamespace 1\n -showPinIcons 0\n -mapMotionTrails 1\n -ignoreHiddenAttribute 0\n -ignoreOutlinerColor 0\n -renderFilterVisible 0\n $editorName;\n\n\t\t\t$editorName = ($panelName+\"DopeSheetEd\");\n" + + " dopeSheetEditor -e \n -displayKeys 1\n -displayTangents 0\n -displayActiveKeys 0\n -displayActiveKeyTangents 0\n -displayInfinities 0\n -displayValues 0\n -autoFit 0\n -snapTime \"integer\" \n -snapValue \"none\" \n -outliner \"dopeSheetPanel1OutlineEd\" \n -showSummary 1\n -showScene 0\n -hierarchyBelow 0\n -showTicks 1\n -selectionWindow 0 0 0 0 \n $editorName;\n\t\tif (!$useSceneConfig) {\n\t\t\tpanel -e -l $label $panelName;\n\t\t}\n\t}\n\n\n\t$panelName = `sceneUIReplacement -getNextScriptedPanel \"clipEditorPanel\" (localizedPanelLabel(\"Trax Editor\")) `;\n\tif (\"\" == $panelName) {\n\t\tif ($useSceneConfig) {\n\t\t\t$panelName = `scriptedPanel -unParent -type \"clipEditorPanel\" -l (localizedPanelLabel(\"Trax Editor\")) -mbv $menusOkayInPanels `;\n\n\t\t\t$editorName = clipEditorNameFromPanel($panelName);\n clipEditor -e \n" + + " -displayKeys 0\n -displayTangents 0\n -displayActiveKeys 0\n -displayActiveKeyTangents 0\n -displayInfinities 0\n -displayValues 0\n -autoFit 0\n -snapTime \"none\" \n -snapValue \"none\" \n -initialized 0\n -manageSequencer 0 \n $editorName;\n\t\t}\n\t} else {\n\t\t$label = `panel -q -label $panelName`;\n\t\tscriptedPanel -edit -l (localizedPanelLabel(\"Trax Editor\")) -mbv $menusOkayInPanels $panelName;\n\n\t\t\t$editorName = clipEditorNameFromPanel($panelName);\n clipEditor -e \n -displayKeys 0\n -displayTangents 0\n -displayActiveKeys 0\n -displayActiveKeyTangents 0\n -displayInfinities 0\n -displayValues 0\n -autoFit 0\n -snapTime \"none\" \n -snapValue \"none\" \n -initialized 0\n -manageSequencer 0 \n" + + " $editorName;\n\t\tif (!$useSceneConfig) {\n\t\t\tpanel -e -l $label $panelName;\n\t\t}\n\t}\n\n\n\t$panelName = `sceneUIReplacement -getNextScriptedPanel \"sequenceEditorPanel\" (localizedPanelLabel(\"Camera Sequencer\")) `;\n\tif (\"\" == $panelName) {\n\t\tif ($useSceneConfig) {\n\t\t\t$panelName = `scriptedPanel -unParent -type \"sequenceEditorPanel\" -l (localizedPanelLabel(\"Camera Sequencer\")) -mbv $menusOkayInPanels `;\n\n\t\t\t$editorName = sequenceEditorNameFromPanel($panelName);\n clipEditor -e \n -displayKeys 0\n -displayTangents 0\n -displayActiveKeys 0\n -displayActiveKeyTangents 0\n -displayInfinities 0\n -displayValues 0\n -autoFit 0\n -snapTime \"none\" \n -snapValue \"none\" \n -initialized 0\n -manageSequencer 1 \n $editorName;\n\t\t}\n\t} else {\n\t\t$label = `panel -q -label $panelName`;\n\t\tscriptedPanel -edit -l (localizedPanelLabel(\"Camera Sequencer\")) -mbv $menusOkayInPanels $panelName;\n" + + "\n\t\t\t$editorName = sequenceEditorNameFromPanel($panelName);\n clipEditor -e \n -displayKeys 0\n -displayTangents 0\n -displayActiveKeys 0\n -displayActiveKeyTangents 0\n -displayInfinities 0\n -displayValues 0\n -autoFit 0\n -snapTime \"none\" \n -snapValue \"none\" \n -initialized 0\n -manageSequencer 1 \n $editorName;\n\t\tif (!$useSceneConfig) {\n\t\t\tpanel -e -l $label $panelName;\n\t\t}\n\t}\n\n\n\t$panelName = `sceneUIReplacement -getNextScriptedPanel \"hyperGraphPanel\" (localizedPanelLabel(\"Hypergraph Hierarchy\")) `;\n\tif (\"\" == $panelName) {\n\t\tif ($useSceneConfig) {\n\t\t\t$panelName = `scriptedPanel -unParent -type \"hyperGraphPanel\" -l (localizedPanelLabel(\"Hypergraph Hierarchy\")) -mbv $menusOkayInPanels `;\n\n\t\t\t$editorName = ($panelName+\"HyperGraphEd\");\n hyperGraph -e \n -graphLayoutStyle \"hierarchicalLayout\" \n -orientation \"horiz\" \n" + + " -mergeConnections 0\n -zoom 1\n -animateTransition 0\n -showRelationships 1\n -showShapes 0\n -showDeformers 0\n -showExpressions 0\n -showConstraints 0\n -showConnectionFromSelected 0\n -showConnectionToSelected 0\n -showConstraintLabels 0\n -showUnderworld 0\n -showInvisible 0\n -transitionFrames 1\n -opaqueContainers 0\n -freeform 0\n -imagePosition 0 0 \n -imageScale 1\n -imageEnabled 0\n -graphType \"DAG\" \n -heatMapDisplay 0\n -updateSelection 1\n -updateNodeAdded 1\n -useDrawOverrideColor 0\n -limitGraphTraversal -1\n -range 0 0 \n -iconSize \"smallIcons\" \n -showCachedConnections 0\n $editorName;\n\t\t}\n\t} else {\n" + + "\t\t$label = `panel -q -label $panelName`;\n\t\tscriptedPanel -edit -l (localizedPanelLabel(\"Hypergraph Hierarchy\")) -mbv $menusOkayInPanels $panelName;\n\n\t\t\t$editorName = ($panelName+\"HyperGraphEd\");\n hyperGraph -e \n -graphLayoutStyle \"hierarchicalLayout\" \n -orientation \"horiz\" \n -mergeConnections 0\n -zoom 1\n -animateTransition 0\n -showRelationships 1\n -showShapes 0\n -showDeformers 0\n -showExpressions 0\n -showConstraints 0\n -showConnectionFromSelected 0\n -showConnectionToSelected 0\n -showConstraintLabels 0\n -showUnderworld 0\n -showInvisible 0\n -transitionFrames 1\n -opaqueContainers 0\n -freeform 0\n -imagePosition 0 0 \n -imageScale 1\n -imageEnabled 0\n -graphType \"DAG\" \n -heatMapDisplay 0\n" + + " -updateSelection 1\n -updateNodeAdded 1\n -useDrawOverrideColor 0\n -limitGraphTraversal -1\n -range 0 0 \n -iconSize \"smallIcons\" \n -showCachedConnections 0\n $editorName;\n\t\tif (!$useSceneConfig) {\n\t\t\tpanel -e -l $label $panelName;\n\t\t}\n\t}\n\n\n\t$panelName = `sceneUIReplacement -getNextScriptedPanel \"visorPanel\" (localizedPanelLabel(\"Visor\")) `;\n\tif (\"\" == $panelName) {\n\t\tif ($useSceneConfig) {\n\t\t\t$panelName = `scriptedPanel -unParent -type \"visorPanel\" -l (localizedPanelLabel(\"Visor\")) -mbv $menusOkayInPanels `;\n\t\t}\n\t} else {\n\t\t$label = `panel -q -label $panelName`;\n\t\tscriptedPanel -edit -l (localizedPanelLabel(\"Visor\")) -mbv $menusOkayInPanels $panelName;\n\t\tif (!$useSceneConfig) {\n\t\t\tpanel -e -l $label $panelName;\n\t\t}\n\t}\n\n\n\t$panelName = `sceneUIReplacement -getNextScriptedPanel \"createNodePanel\" (localizedPanelLabel(\"Create Node\")) `;\n\tif (\"\" == $panelName) {\n\t\tif ($useSceneConfig) {\n\t\t\t$panelName = `scriptedPanel -unParent -type \"createNodePanel\" -l (localizedPanelLabel(\"Create Node\")) -mbv $menusOkayInPanels `;\n" + + "\t\t}\n\t} else {\n\t\t$label = `panel -q -label $panelName`;\n\t\tscriptedPanel -edit -l (localizedPanelLabel(\"Create Node\")) -mbv $menusOkayInPanels $panelName;\n\t\tif (!$useSceneConfig) {\n\t\t\tpanel -e -l $label $panelName;\n\t\t}\n\t}\n\n\n\t$panelName = `sceneUIReplacement -getNextScriptedPanel \"polyTexturePlacementPanel\" (localizedPanelLabel(\"UV Editor\")) `;\n\tif (\"\" == $panelName) {\n\t\tif ($useSceneConfig) {\n\t\t\t$panelName = `scriptedPanel -unParent -type \"polyTexturePlacementPanel\" -l (localizedPanelLabel(\"UV Editor\")) -mbv $menusOkayInPanels `;\n\t\t}\n\t} else {\n\t\t$label = `panel -q -label $panelName`;\n\t\tscriptedPanel -edit -l (localizedPanelLabel(\"UV Editor\")) -mbv $menusOkayInPanels $panelName;\n\t\tif (!$useSceneConfig) {\n\t\t\tpanel -e -l $label $panelName;\n\t\t}\n\t}\n\n\n\t$panelName = `sceneUIReplacement -getNextScriptedPanel \"renderWindowPanel\" (localizedPanelLabel(\"Render View\")) `;\n\tif (\"\" == $panelName) {\n\t\tif ($useSceneConfig) {\n\t\t\t$panelName = `scriptedPanel -unParent -type \"renderWindowPanel\" -l (localizedPanelLabel(\"Render View\")) -mbv $menusOkayInPanels `;\n" + + "\t\t}\n\t} else {\n\t\t$label = `panel -q -label $panelName`;\n\t\tscriptedPanel -edit -l (localizedPanelLabel(\"Render View\")) -mbv $menusOkayInPanels $panelName;\n\t\tif (!$useSceneConfig) {\n\t\t\tpanel -e -l $label $panelName;\n\t\t}\n\t}\n\n\n\t$panelName = `sceneUIReplacement -getNextPanel \"shapePanel\" (localizedPanelLabel(\"Shape Editor\")) `;\n\tif (\"\" == $panelName) {\n\t\tif ($useSceneConfig) {\n\t\t\tshapePanel -unParent -l (localizedPanelLabel(\"Shape Editor\")) -mbv $menusOkayInPanels ;\n\t\t}\n\t} else {\n\t\t$label = `panel -q -label $panelName`;\n\t\tshapePanel -edit -l (localizedPanelLabel(\"Shape Editor\")) -mbv $menusOkayInPanels $panelName;\n\t\tif (!$useSceneConfig) {\n\t\t\tpanel -e -l $label $panelName;\n\t\t}\n\t}\n\n\n\t$panelName = `sceneUIReplacement -getNextPanel \"posePanel\" (localizedPanelLabel(\"Pose Editor\")) `;\n\tif (\"\" == $panelName) {\n\t\tif ($useSceneConfig) {\n\t\t\tposePanel -unParent -l (localizedPanelLabel(\"Pose Editor\")) -mbv $menusOkayInPanels ;\n\t\t}\n\t} else {\n\t\t$label = `panel -q -label $panelName`;\n\t\tposePanel -edit -l (localizedPanelLabel(\"Pose Editor\")) -mbv $menusOkayInPanels $panelName;\n" + + "\t\tif (!$useSceneConfig) {\n\t\t\tpanel -e -l $label $panelName;\n\t\t}\n\t}\n\n\n\t$panelName = `sceneUIReplacement -getNextScriptedPanel \"dynRelEdPanel\" (localizedPanelLabel(\"Dynamic Relationships\")) `;\n\tif (\"\" == $panelName) {\n\t\tif ($useSceneConfig) {\n\t\t\t$panelName = `scriptedPanel -unParent -type \"dynRelEdPanel\" -l (localizedPanelLabel(\"Dynamic Relationships\")) -mbv $menusOkayInPanels `;\n\t\t}\n\t} else {\n\t\t$label = `panel -q -label $panelName`;\n\t\tscriptedPanel -edit -l (localizedPanelLabel(\"Dynamic Relationships\")) -mbv $menusOkayInPanels $panelName;\n\t\tif (!$useSceneConfig) {\n\t\t\tpanel -e -l $label $panelName;\n\t\t}\n\t}\n\n\n\t$panelName = `sceneUIReplacement -getNextScriptedPanel \"relationshipPanel\" (localizedPanelLabel(\"Relationship Editor\")) `;\n\tif (\"\" == $panelName) {\n\t\tif ($useSceneConfig) {\n\t\t\t$panelName = `scriptedPanel -unParent -type \"relationshipPanel\" -l (localizedPanelLabel(\"Relationship Editor\")) -mbv $menusOkayInPanels `;\n\t\t}\n\t} else {\n\t\t$label = `panel -q -label $panelName`;\n\t\tscriptedPanel -edit -l (localizedPanelLabel(\"Relationship Editor\")) -mbv $menusOkayInPanels $panelName;\n" + + "\t\tif (!$useSceneConfig) {\n\t\t\tpanel -e -l $label $panelName;\n\t\t}\n\t}\n\n\n\t$panelName = `sceneUIReplacement -getNextScriptedPanel \"referenceEditorPanel\" (localizedPanelLabel(\"Reference Editor\")) `;\n\tif (\"\" == $panelName) {\n\t\tif ($useSceneConfig) {\n\t\t\t$panelName = `scriptedPanel -unParent -type \"referenceEditorPanel\" -l (localizedPanelLabel(\"Reference Editor\")) -mbv $menusOkayInPanels `;\n\t\t}\n\t} else {\n\t\t$label = `panel -q -label $panelName`;\n\t\tscriptedPanel -edit -l (localizedPanelLabel(\"Reference Editor\")) -mbv $menusOkayInPanels $panelName;\n\t\tif (!$useSceneConfig) {\n\t\t\tpanel -e -l $label $panelName;\n\t\t}\n\t}\n\n\n\t$panelName = `sceneUIReplacement -getNextScriptedPanel \"componentEditorPanel\" (localizedPanelLabel(\"Component Editor\")) `;\n\tif (\"\" == $panelName) {\n\t\tif ($useSceneConfig) {\n\t\t\t$panelName = `scriptedPanel -unParent -type \"componentEditorPanel\" -l (localizedPanelLabel(\"Component Editor\")) -mbv $menusOkayInPanels `;\n\t\t}\n\t} else {\n\t\t$label = `panel -q -label $panelName`;\n\t\tscriptedPanel -edit -l (localizedPanelLabel(\"Component Editor\")) -mbv $menusOkayInPanels $panelName;\n" + + "\t\tif (!$useSceneConfig) {\n\t\t\tpanel -e -l $label $panelName;\n\t\t}\n\t}\n\n\n\t$panelName = `sceneUIReplacement -getNextScriptedPanel \"dynPaintScriptedPanelType\" (localizedPanelLabel(\"Paint Effects\")) `;\n\tif (\"\" == $panelName) {\n\t\tif ($useSceneConfig) {\n\t\t\t$panelName = `scriptedPanel -unParent -type \"dynPaintScriptedPanelType\" -l (localizedPanelLabel(\"Paint Effects\")) -mbv $menusOkayInPanels `;\n\t\t}\n\t} else {\n\t\t$label = `panel -q -label $panelName`;\n\t\tscriptedPanel -edit -l (localizedPanelLabel(\"Paint Effects\")) -mbv $menusOkayInPanels $panelName;\n\t\tif (!$useSceneConfig) {\n\t\t\tpanel -e -l $label $panelName;\n\t\t}\n\t}\n\n\n\t$panelName = `sceneUIReplacement -getNextScriptedPanel \"scriptEditorPanel\" (localizedPanelLabel(\"Script Editor\")) `;\n\tif (\"\" == $panelName) {\n\t\tif ($useSceneConfig) {\n\t\t\t$panelName = `scriptedPanel -unParent -type \"scriptEditorPanel\" -l (localizedPanelLabel(\"Script Editor\")) -mbv $menusOkayInPanels `;\n\t\t}\n\t} else {\n\t\t$label = `panel -q -label $panelName`;\n\t\tscriptedPanel -edit -l (localizedPanelLabel(\"Script Editor\")) -mbv $menusOkayInPanels $panelName;\n" + + "\t\tif (!$useSceneConfig) {\n\t\t\tpanel -e -l $label $panelName;\n\t\t}\n\t}\n\n\n\t$panelName = `sceneUIReplacement -getNextScriptedPanel \"profilerPanel\" (localizedPanelLabel(\"Profiler Tool\")) `;\n\tif (\"\" == $panelName) {\n\t\tif ($useSceneConfig) {\n\t\t\t$panelName = `scriptedPanel -unParent -type \"profilerPanel\" -l (localizedPanelLabel(\"Profiler Tool\")) -mbv $menusOkayInPanels `;\n\t\t}\n\t} else {\n\t\t$label = `panel -q -label $panelName`;\n\t\tscriptedPanel -edit -l (localizedPanelLabel(\"Profiler Tool\")) -mbv $menusOkayInPanels $panelName;\n\t\tif (!$useSceneConfig) {\n\t\t\tpanel -e -l $label $panelName;\n\t\t}\n\t}\n\n\n\t$panelName = `sceneUIReplacement -getNextScriptedPanel \"contentBrowserPanel\" (localizedPanelLabel(\"Content Browser\")) `;\n\tif (\"\" == $panelName) {\n\t\tif ($useSceneConfig) {\n\t\t\t$panelName = `scriptedPanel -unParent -type \"contentBrowserPanel\" -l (localizedPanelLabel(\"Content Browser\")) -mbv $menusOkayInPanels `;\n\t\t}\n\t} else {\n\t\t$label = `panel -q -label $panelName`;\n\t\tscriptedPanel -edit -l (localizedPanelLabel(\"Content Browser\")) -mbv $menusOkayInPanels $panelName;\n" + + "\t\tif (!$useSceneConfig) {\n\t\t\tpanel -e -l $label $panelName;\n\t\t}\n\t}\n\n\n\t$panelName = `sceneUIReplacement -getNextScriptedPanel \"Stereo\" (localizedPanelLabel(\"Stereo\")) `;\n\tif (\"\" == $panelName) {\n\t\tif ($useSceneConfig) {\n\t\t\t$panelName = `scriptedPanel -unParent -type \"Stereo\" -l (localizedPanelLabel(\"Stereo\")) -mbv $menusOkayInPanels `;\nstring $editorName = ($panelName+\"Editor\");\n stereoCameraView -e \n -camera \"persp\" \n -useInteractiveMode 0\n -displayLights \"default\" \n -displayAppearance \"smoothShaded\" \n -activeOnly 0\n -ignorePanZoom 0\n -wireframeOnShaded 0\n -headsUpDisplay 1\n -holdOuts 1\n -selectionHiliteDisplay 1\n -useDefaultMaterial 0\n -bufferMode \"double\" \n -twoSidedLighting 0\n -backfaceCulling 0\n -xray 0\n -jointXray 0\n -activeComponentsXray 0\n -displayTextures 0\n" + + " -smoothWireframe 0\n -lineWidth 1\n -textureAnisotropic 0\n -textureHilight 1\n -textureSampling 2\n -textureDisplay \"modulate\" \n -textureMaxSize 32768\n -fogging 0\n -fogSource \"fragment\" \n -fogMode \"linear\" \n -fogStart 0\n -fogEnd 100\n -fogDensity 0.1\n -fogColor 0.5 0.5 0.5 1 \n -depthOfFieldPreview 1\n -maxConstantTransparency 1\n -objectFilterShowInHUD 1\n -isFiltered 0\n -colorResolution 4 4 \n -bumpResolution 4 4 \n -textureCompression 0\n -transparencyAlgorithm \"frontAndBackCull\" \n -transpInShadows 0\n -cullingOverride \"none\" \n -lowQualityLighting 0\n -maximumNumHardwareLights 0\n -occlusionCulling 0\n -shadingModel 0\n" + + " -useBaseRenderer 0\n -useReducedRenderer 0\n -smallObjectCulling 0\n -smallObjectThreshold -1 \n -interactiveDisableShadows 0\n -interactiveBackFaceCull 0\n -sortTransparent 1\n -nurbsCurves 1\n -nurbsSurfaces 1\n -polymeshes 1\n -subdivSurfaces 1\n -planes 1\n -lights 1\n -cameras 1\n -controlVertices 1\n -hulls 1\n -grid 1\n -imagePlane 1\n -joints 1\n -ikHandles 1\n -deformers 1\n -dynamics 1\n -particleInstancers 1\n -fluids 1\n -hairSystems 1\n -follicles 1\n -nCloths 1\n -nParticles 1\n -nRigids 1\n -dynamicConstraints 1\n -locators 1\n -manipulators 1\n -pluginShapes 1\n" + + " -dimensions 1\n -handles 1\n -pivots 1\n -textures 1\n -strokes 1\n -motionTrails 1\n -clipGhosts 1\n -greasePencils 1\n -shadows 0\n -captureSequenceNumber -1\n -width 0\n -height 0\n -sceneRenderFilter 0\n -displayMode \"centerEye\" \n -viewColor 0 0 0 1 \n -useCustomBackground 1\n $editorName;\n stereoCameraView -e -viewSelected 0 $editorName;\n stereoCameraView -e \n -pluginObjects \"gpuCacheDisplayFilter\" 1 \n $editorName;\n\t\t}\n\t} else {\n\t\t$label = `panel -q -label $panelName`;\n\t\tscriptedPanel -edit -l (localizedPanelLabel(\"Stereo\")) -mbv $menusOkayInPanels $panelName;\nstring $editorName = ($panelName+\"Editor\");\n stereoCameraView -e \n -camera \"persp\" \n -useInteractiveMode 0\n -displayLights \"default\" \n" + + " -displayAppearance \"smoothShaded\" \n -activeOnly 0\n -ignorePanZoom 0\n -wireframeOnShaded 0\n -headsUpDisplay 1\n -holdOuts 1\n -selectionHiliteDisplay 1\n -useDefaultMaterial 0\n -bufferMode \"double\" \n -twoSidedLighting 0\n -backfaceCulling 0\n -xray 0\n -jointXray 0\n -activeComponentsXray 0\n -displayTextures 0\n -smoothWireframe 0\n -lineWidth 1\n -textureAnisotropic 0\n -textureHilight 1\n -textureSampling 2\n -textureDisplay \"modulate\" \n -textureMaxSize 32768\n -fogging 0\n -fogSource \"fragment\" \n -fogMode \"linear\" \n -fogStart 0\n -fogEnd 100\n -fogDensity 0.1\n -fogColor 0.5 0.5 0.5 1 \n -depthOfFieldPreview 1\n" + + " -maxConstantTransparency 1\n -objectFilterShowInHUD 1\n -isFiltered 0\n -colorResolution 4 4 \n -bumpResolution 4 4 \n -textureCompression 0\n -transparencyAlgorithm \"frontAndBackCull\" \n -transpInShadows 0\n -cullingOverride \"none\" \n -lowQualityLighting 0\n -maximumNumHardwareLights 0\n -occlusionCulling 0\n -shadingModel 0\n -useBaseRenderer 0\n -useReducedRenderer 0\n -smallObjectCulling 0\n -smallObjectThreshold -1 \n -interactiveDisableShadows 0\n -interactiveBackFaceCull 0\n -sortTransparent 1\n -nurbsCurves 1\n -nurbsSurfaces 1\n -polymeshes 1\n -subdivSurfaces 1\n -planes 1\n -lights 1\n -cameras 1\n -controlVertices 1\n" + + " -hulls 1\n -grid 1\n -imagePlane 1\n -joints 1\n -ikHandles 1\n -deformers 1\n -dynamics 1\n -particleInstancers 1\n -fluids 1\n -hairSystems 1\n -follicles 1\n -nCloths 1\n -nParticles 1\n -nRigids 1\n -dynamicConstraints 1\n -locators 1\n -manipulators 1\n -pluginShapes 1\n -dimensions 1\n -handles 1\n -pivots 1\n -textures 1\n -strokes 1\n -motionTrails 1\n -clipGhosts 1\n -greasePencils 1\n -shadows 0\n -captureSequenceNumber -1\n -width 0\n -height 0\n -sceneRenderFilter 0\n -displayMode \"centerEye\" \n -viewColor 0 0 0 1 \n -useCustomBackground 1\n" + + " $editorName;\n stereoCameraView -e -viewSelected 0 $editorName;\n stereoCameraView -e \n -pluginObjects \"gpuCacheDisplayFilter\" 1 \n $editorName;\n\t\tif (!$useSceneConfig) {\n\t\t\tpanel -e -l $label $panelName;\n\t\t}\n\t}\n\n\n\t$panelName = `sceneUIReplacement -getNextScriptedPanel \"hyperShadePanel\" (localizedPanelLabel(\"Hypershade\")) `;\n\tif (\"\" == $panelName) {\n\t\tif ($useSceneConfig) {\n\t\t\t$panelName = `scriptedPanel -unParent -type \"hyperShadePanel\" -l (localizedPanelLabel(\"Hypershade\")) -mbv $menusOkayInPanels `;\n\t\t}\n\t} else {\n\t\t$label = `panel -q -label $panelName`;\n\t\tscriptedPanel -edit -l (localizedPanelLabel(\"Hypershade\")) -mbv $menusOkayInPanels $panelName;\n\t\tif (!$useSceneConfig) {\n\t\t\tpanel -e -l $label $panelName;\n\t\t}\n\t}\n\n\n\t$panelName = `sceneUIReplacement -getNextScriptedPanel \"nodeEditorPanel\" (localizedPanelLabel(\"Node Editor\")) `;\n\tif (\"\" == $panelName) {\n\t\tif ($useSceneConfig) {\n\t\t\t$panelName = `scriptedPanel -unParent -type \"nodeEditorPanel\" -l (localizedPanelLabel(\"Node Editor\")) -mbv $menusOkayInPanels `;\n" + + "\n\t\t\t$editorName = ($panelName+\"NodeEditorEd\");\n nodeEditor -e \n -allAttributes 0\n -allNodes 0\n -autoSizeNodes 1\n -consistentNameSize 1\n -createNodeCommand \"nodeEdCreateNodeCommand\" \n -defaultPinnedState 0\n -additiveGraphingMode 0\n -settingsChangedCallback \"nodeEdSyncControls\" \n -traversalDepthLimit -1\n -keyPressCommand \"nodeEdKeyPressCommand\" \n -nodeTitleMode \"name\" \n -gridSnap 0\n -gridVisibility 1\n -popupMenuScript \"nodeEdBuildPanelMenus\" \n -showNamespace 1\n -showShapes 1\n -showSGShapes 0\n -showTransforms 1\n -useAssets 1\n -syncedSelection 1\n -extendToShapes 1\n -activeTab -1\n -editorMode \"default\" \n $editorName;\n\t\t}\n\t} else {\n\t\t$label = `panel -q -label $panelName`;\n" + + "\t\tscriptedPanel -edit -l (localizedPanelLabel(\"Node Editor\")) -mbv $menusOkayInPanels $panelName;\n\n\t\t\t$editorName = ($panelName+\"NodeEditorEd\");\n nodeEditor -e \n -allAttributes 0\n -allNodes 0\n -autoSizeNodes 1\n -consistentNameSize 1\n -createNodeCommand \"nodeEdCreateNodeCommand\" \n -defaultPinnedState 0\n -additiveGraphingMode 0\n -settingsChangedCallback \"nodeEdSyncControls\" \n -traversalDepthLimit -1\n -keyPressCommand \"nodeEdKeyPressCommand\" \n -nodeTitleMode \"name\" \n -gridSnap 0\n -gridVisibility 1\n -popupMenuScript \"nodeEdBuildPanelMenus\" \n -showNamespace 1\n -showShapes 1\n -showSGShapes 0\n -showTransforms 1\n -useAssets 1\n -syncedSelection 1\n -extendToShapes 1\n -activeTab -1\n -editorMode \"default\" \n" + + " $editorName;\n\t\tif (!$useSceneConfig) {\n\t\t\tpanel -e -l $label $panelName;\n\t\t}\n\t}\n\n\n\tif ($useSceneConfig) {\n string $configName = `getPanel -cwl (localizedPanelLabel(\"Current Layout\"))`;\n if (\"\" != $configName) {\n\t\t\tpanelConfiguration -edit -label (localizedPanelLabel(\"Current Layout\")) \n\t\t\t\t-defaultImage \"\"\n\t\t\t\t-image \"\"\n\t\t\t\t-sc false\n\t\t\t\t-configString \"global string $gMainPane; paneLayout -e -cn \\\"left3\\\" -ps 1 80 78 -ps 2 20 100 -ps 3 80 22 $gMainPane;\"\n\t\t\t\t-removeAllPanels\n\t\t\t\t-ap true\n\t\t\t\t\t(localizedPanelLabel(\"Persp View\")) \n\t\t\t\t\t\"modelPanel\"\n" + + "\t\t\t\t\t\"$panelName = `modelPanel -unParent -l (localizedPanelLabel(\\\"Persp View\\\")) -mbv $menusOkayInPanels `;\\n$editorName = $panelName;\\nmodelEditor -e \\n -cam `findStartUpCamera persp` \\n -useInteractiveMode 0\\n -displayLights \\\"default\\\" \\n -displayAppearance \\\"smoothShaded\\\" \\n -activeOnly 0\\n -ignorePanZoom 0\\n -wireframeOnShaded 0\\n -headsUpDisplay 1\\n -holdOuts 1\\n -selectionHiliteDisplay 1\\n -useDefaultMaterial 0\\n -bufferMode \\\"double\\\" \\n -twoSidedLighting 0\\n -backfaceCulling 0\\n -xray 0\\n -jointXray 0\\n -activeComponentsXray 0\\n -displayTextures 0\\n -smoothWireframe 0\\n -lineWidth 1\\n -textureAnisotropic 0\\n -textureHilight 1\\n -textureSampling 2\\n -textureDisplay \\\"modulate\\\" \\n -textureMaxSize 32768\\n -fogging 0\\n -fogSource \\\"fragment\\\" \\n -fogMode \\\"linear\\\" \\n -fogStart 0\\n -fogEnd 100\\n -fogDensity 0.1\\n -fogColor 0.5 0.5 0.5 1 \\n -depthOfFieldPreview 1\\n -maxConstantTransparency 1\\n -rendererName \\\"vp2Renderer\\\" \\n -objectFilterShowInHUD 1\\n -isFiltered 0\\n -colorResolution 256 256 \\n -bumpResolution 512 512 \\n -textureCompression 0\\n -transparencyAlgorithm \\\"frontAndBackCull\\\" \\n -transpInShadows 0\\n -cullingOverride \\\"none\\\" \\n -lowQualityLighting 0\\n -maximumNumHardwareLights 1\\n -occlusionCulling 0\\n -shadingModel 0\\n -useBaseRenderer 0\\n -useReducedRenderer 0\\n -smallObjectCulling 0\\n -smallObjectThreshold -1 \\n -interactiveDisableShadows 0\\n -interactiveBackFaceCull 0\\n -sortTransparent 1\\n -nurbsCurves 1\\n -nurbsSurfaces 1\\n -polymeshes 1\\n -subdivSurfaces 1\\n -planes 1\\n -lights 1\\n -cameras 1\\n -controlVertices 1\\n -hulls 1\\n -grid 1\\n -imagePlane 1\\n -joints 1\\n -ikHandles 1\\n -deformers 1\\n -dynamics 1\\n -particleInstancers 1\\n -fluids 1\\n -hairSystems 1\\n -follicles 1\\n -nCloths 1\\n -nParticles 1\\n -nRigids 1\\n -dynamicConstraints 1\\n -locators 1\\n -manipulators 1\\n -pluginShapes 1\\n -dimensions 1\\n -handles 1\\n -pivots 1\\n -textures 1\\n -strokes 1\\n -motionTrails 1\\n -clipGhosts 1\\n -greasePencils 1\\n -shadows 0\\n -captureSequenceNumber -1\\n -width 1300\\n -height 740\\n -sceneRenderFilter 0\\n $editorName;\\nmodelEditor -e -viewSelected 0 $editorName;\\nmodelEditor -e \\n -pluginObjects \\\"gpuCacheDisplayFilter\\\" 1 \\n $editorName\"\n" + + "\t\t\t\t\t\"modelPanel -edit -l (localizedPanelLabel(\\\"Persp View\\\")) -mbv $menusOkayInPanels $panelName;\\n$editorName = $panelName;\\nmodelEditor -e \\n -cam `findStartUpCamera persp` \\n -useInteractiveMode 0\\n -displayLights \\\"default\\\" \\n -displayAppearance \\\"smoothShaded\\\" \\n -activeOnly 0\\n -ignorePanZoom 0\\n -wireframeOnShaded 0\\n -headsUpDisplay 1\\n -holdOuts 1\\n -selectionHiliteDisplay 1\\n -useDefaultMaterial 0\\n -bufferMode \\\"double\\\" \\n -twoSidedLighting 0\\n -backfaceCulling 0\\n -xray 0\\n -jointXray 0\\n -activeComponentsXray 0\\n -displayTextures 0\\n -smoothWireframe 0\\n -lineWidth 1\\n -textureAnisotropic 0\\n -textureHilight 1\\n -textureSampling 2\\n -textureDisplay \\\"modulate\\\" \\n -textureMaxSize 32768\\n -fogging 0\\n -fogSource \\\"fragment\\\" \\n -fogMode \\\"linear\\\" \\n -fogStart 0\\n -fogEnd 100\\n -fogDensity 0.1\\n -fogColor 0.5 0.5 0.5 1 \\n -depthOfFieldPreview 1\\n -maxConstantTransparency 1\\n -rendererName \\\"vp2Renderer\\\" \\n -objectFilterShowInHUD 1\\n -isFiltered 0\\n -colorResolution 256 256 \\n -bumpResolution 512 512 \\n -textureCompression 0\\n -transparencyAlgorithm \\\"frontAndBackCull\\\" \\n -transpInShadows 0\\n -cullingOverride \\\"none\\\" \\n -lowQualityLighting 0\\n -maximumNumHardwareLights 1\\n -occlusionCulling 0\\n -shadingModel 0\\n -useBaseRenderer 0\\n -useReducedRenderer 0\\n -smallObjectCulling 0\\n -smallObjectThreshold -1 \\n -interactiveDisableShadows 0\\n -interactiveBackFaceCull 0\\n -sortTransparent 1\\n -nurbsCurves 1\\n -nurbsSurfaces 1\\n -polymeshes 1\\n -subdivSurfaces 1\\n -planes 1\\n -lights 1\\n -cameras 1\\n -controlVertices 1\\n -hulls 1\\n -grid 1\\n -imagePlane 1\\n -joints 1\\n -ikHandles 1\\n -deformers 1\\n -dynamics 1\\n -particleInstancers 1\\n -fluids 1\\n -hairSystems 1\\n -follicles 1\\n -nCloths 1\\n -nParticles 1\\n -nRigids 1\\n -dynamicConstraints 1\\n -locators 1\\n -manipulators 1\\n -pluginShapes 1\\n -dimensions 1\\n -handles 1\\n -pivots 1\\n -textures 1\\n -strokes 1\\n -motionTrails 1\\n -clipGhosts 1\\n -greasePencils 1\\n -shadows 0\\n -captureSequenceNumber -1\\n -width 1300\\n -height 740\\n -sceneRenderFilter 0\\n $editorName;\\nmodelEditor -e -viewSelected 0 $editorName;\\nmodelEditor -e \\n -pluginObjects \\\"gpuCacheDisplayFilter\\\" 1 \\n $editorName\"\n" + + "\t\t\t\t-ap false\n\t\t\t\t\t(localizedPanelLabel(\"Outliner\")) \n\t\t\t\t\t\"outlinerPanel\"\n\t\t\t\t\t\"$panelName = `outlinerPanel -unParent -l (localizedPanelLabel(\\\"Outliner\\\")) -mbv $menusOkayInPanels `;\\n$editorName = $panelName;\\noutlinerEditor -e \\n -docTag \\\"isolOutln_fromSeln\\\" \\n -showShapes 0\\n -showAssignedMaterials 0\\n -showReferenceNodes 1\\n -showReferenceMembers 1\\n -showAttributes 0\\n -showConnected 0\\n -showAnimCurvesOnly 0\\n -showMuteInfo 0\\n -organizeByLayer 1\\n -showAnimLayerWeight 1\\n -autoExpandLayers 1\\n -autoExpand 0\\n -showDagOnly 1\\n -showAssets 1\\n -showContainedOnly 1\\n -showPublishedAsConnected 0\\n -showContainerContents 1\\n -ignoreDagHierarchy 0\\n -expandConnections 0\\n -showUpstreamCurves 1\\n -showUnitlessCurves 1\\n -showCompounds 1\\n -showLeafs 1\\n -showNumericAttrsOnly 0\\n -highlightActive 1\\n -autoSelectNewObjects 0\\n -doNotSelectNewObjects 0\\n -dropIsParent 1\\n -transmitFilters 0\\n -setFilter \\\"defaultSetFilter\\\" \\n -showSetMembers 1\\n -allowMultiSelection 1\\n -alwaysToggleSelect 0\\n -directSelect 0\\n -isSet 0\\n -isSetMember 0\\n -displayMode \\\"DAG\\\" \\n -expandObjects 0\\n -setsIgnoreFilters 1\\n -containersIgnoreFilters 0\\n -editAttrName 0\\n -showAttrValues 0\\n -highlightSecondary 0\\n -showUVAttrsOnly 0\\n -showTextureNodesOnly 0\\n -attrAlphaOrder \\\"default\\\" \\n -animLayerFilterOptions \\\"allAffecting\\\" \\n -sortOrder \\\"none\\\" \\n -longNames 0\\n -niceNames 1\\n -showNamespace 1\\n -showPinIcons 0\\n -mapMotionTrails 0\\n -ignoreHiddenAttribute 0\\n -ignoreOutlinerColor 0\\n -renderFilterVisible 0\\n -renderFilterIndex 0\\n -selectionOrder \\\"chronological\\\" \\n -expandAttribute 0\\n $editorName\"\n" + + "\t\t\t\t\t\"outlinerPanel -edit -l (localizedPanelLabel(\\\"Outliner\\\")) -mbv $menusOkayInPanels $panelName;\\n$editorName = $panelName;\\noutlinerEditor -e \\n -docTag \\\"isolOutln_fromSeln\\\" \\n -showShapes 0\\n -showAssignedMaterials 0\\n -showReferenceNodes 1\\n -showReferenceMembers 1\\n -showAttributes 0\\n -showConnected 0\\n -showAnimCurvesOnly 0\\n -showMuteInfo 0\\n -organizeByLayer 1\\n -showAnimLayerWeight 1\\n -autoExpandLayers 1\\n -autoExpand 0\\n -showDagOnly 1\\n -showAssets 1\\n -showContainedOnly 1\\n -showPublishedAsConnected 0\\n -showContainerContents 1\\n -ignoreDagHierarchy 0\\n -expandConnections 0\\n -showUpstreamCurves 1\\n -showUnitlessCurves 1\\n -showCompounds 1\\n -showLeafs 1\\n -showNumericAttrsOnly 0\\n -highlightActive 1\\n -autoSelectNewObjects 0\\n -doNotSelectNewObjects 0\\n -dropIsParent 1\\n -transmitFilters 0\\n -setFilter \\\"defaultSetFilter\\\" \\n -showSetMembers 1\\n -allowMultiSelection 1\\n -alwaysToggleSelect 0\\n -directSelect 0\\n -isSet 0\\n -isSetMember 0\\n -displayMode \\\"DAG\\\" \\n -expandObjects 0\\n -setsIgnoreFilters 1\\n -containersIgnoreFilters 0\\n -editAttrName 0\\n -showAttrValues 0\\n -highlightSecondary 0\\n -showUVAttrsOnly 0\\n -showTextureNodesOnly 0\\n -attrAlphaOrder \\\"default\\\" \\n -animLayerFilterOptions \\\"allAffecting\\\" \\n -sortOrder \\\"none\\\" \\n -longNames 0\\n -niceNames 1\\n -showNamespace 1\\n -showPinIcons 0\\n -mapMotionTrails 0\\n -ignoreHiddenAttribute 0\\n -ignoreOutlinerColor 0\\n -renderFilterVisible 0\\n -renderFilterIndex 0\\n -selectionOrder \\\"chronological\\\" \\n -expandAttribute 0\\n $editorName\"\n" + + "\t\t\t\t-ap false\n\t\t\t\t\t(localizedPanelLabel(\"Script Editor\")) \n\t\t\t\t\t\"scriptedPanel\"\n\t\t\t\t\t\"$panelName = `scriptedPanel -unParent -type \\\"scriptEditorPanel\\\" -l (localizedPanelLabel(\\\"Script Editor\\\")) -mbv $menusOkayInPanels `\"\n\t\t\t\t\t\"scriptedPanel -edit -l (localizedPanelLabel(\\\"Script Editor\\\")) -mbv $menusOkayInPanels $panelName\"\n\t\t\t\t$configName;\n\n setNamedPanelLayout (localizedPanelLabel(\"Current Layout\"));\n }\n\n panelHistory -e -clear mainPanelHistory;\n setFocus `paneLayout -q -p1 $gMainPane`;\n sceneUIReplacement -deleteRemaining;\n sceneUIReplacement -clear;\n\t}\n\n\ngrid -spacing 5 -size 12 -divisions 5 -displayAxes yes -displayGridLines yes -displayDivisionLines yes -displayPerspectiveLabels no -displayOrthographicLabels no -displayAxesBold yes -perspectiveLabelPosition axis -orthographicLabelPosition edge;\nviewManip -drawCompass 0 -compassAngle 0 -frontParameters \"\" -homeParameters \"\" -selectionLockParameters \"\";\n}\n"); + setAttr ".st" 3; +createNode script -n "sceneConfigurationScriptNode"; + rename -uid "3E12F2DC-41AF-B7A5-408C-939B47AC531D"; + setAttr ".b" -type "string" "playbackOptions -min 1 -max 120 -ast 1 -aet 200 "; + setAttr ".st" 6; select -ne :time1; setAttr ".o" 1; setAttr ".unw" 1; @@ -10079,7 +10108,6 @@ select -ne :defaultShaderList1; select -ne :postProcessList1; setAttr -s 2 ".p"; select -ne :defaultRenderingList1; - setAttr -s 2 ".r"; select -ne :initialShadingGroup; setAttr ".ro" yes; select -ne :initialParticleSE; @@ -10089,712 +10117,717 @@ select -ne :defaultResolution; select -ne :hardwareRenderGlobals; setAttr ".ctrs" 256; setAttr ".btrs" 512; -select -ne :ikSystem; - setAttr -s 4 ".sol"; -connectAttr "spine_C0_root_st_profile.o" "spine_C0_root.st_profile"; -connectAttr "spine_C0_root_sq_profile.o" "spine_C0_root.sq_profile"; -connectAttr "neck_C0_root_st_profile.o" "neck_C0_root.st_profile"; -connectAttr "neck_C0_root_sq_profile.o" "neck_C0_root.sq_profile"; -connectAttr "mgear_curveCns160.og[0]" "|guide|global_C0_root|local_C0_root|body_C0_root|spine_C0_root|spine_C0_eff|neck_C0_root|neck_C0_neck|neck_C0_head|mouth_C0_root|mouth_C0_rotcenter|mouth_C0_lipup|mouth_C0_crv|mouth_C0_crvShape.cr" - ; -connectAttr "tweak160.pl[0].cp[0]" "|guide|global_C0_root|local_C0_root|body_C0_root|spine_C0_root|spine_C0_eff|neck_C0_root|neck_C0_neck|neck_C0_head|mouth_C0_root|mouth_C0_rotcenter|mouth_C0_lipup|mouth_C0_crv|mouth_C0_crvShape.twl" - ; -connectAttr "mgear_curveCns160GroupId.id" "|guide|global_C0_root|local_C0_root|body_C0_root|spine_C0_root|spine_C0_eff|neck_C0_root|neck_C0_neck|neck_C0_head|mouth_C0_root|mouth_C0_rotcenter|mouth_C0_lipup|mouth_C0_crv|mouth_C0_crvShape.iog.og[0].gid" - ; -connectAttr "mgear_curveCns160Set.mwc" "|guide|global_C0_root|local_C0_root|body_C0_root|spine_C0_root|spine_C0_eff|neck_C0_root|neck_C0_neck|neck_C0_head|mouth_C0_root|mouth_C0_rotcenter|mouth_C0_lipup|mouth_C0_crv|mouth_C0_crvShape.iog.og[0].gco" - ; -connectAttr "groupId320.id" "|guide|global_C0_root|local_C0_root|body_C0_root|spine_C0_root|spine_C0_eff|neck_C0_root|neck_C0_neck|neck_C0_head|mouth_C0_root|mouth_C0_rotcenter|mouth_C0_lipup|mouth_C0_crv|mouth_C0_crvShape.iog.og[1].gid" - ; -connectAttr "tweakSet160.mwc" "|guide|global_C0_root|local_C0_root|body_C0_root|spine_C0_root|spine_C0_eff|neck_C0_root|neck_C0_neck|neck_C0_head|mouth_C0_root|mouth_C0_rotcenter|mouth_C0_lipup|mouth_C0_crv|mouth_C0_crvShape.iog.og[1].gco" - ; -connectAttr "mgear_curveCns161.og[0]" "|guide|global_C0_root|local_C0_root|body_C0_root|spine_C0_root|spine_C0_eff|neck_C0_root|neck_C0_neck|neck_C0_head|mouth_C0_root|mouth_C0_rotcenter|mouth_C0_liplow|mouth_C0_crv|mouth_C0_crvShape.cr" - ; -connectAttr "tweak161.pl[0].cp[0]" "|guide|global_C0_root|local_C0_root|body_C0_root|spine_C0_root|spine_C0_eff|neck_C0_root|neck_C0_neck|neck_C0_head|mouth_C0_root|mouth_C0_rotcenter|mouth_C0_liplow|mouth_C0_crv|mouth_C0_crvShape.twl" - ; -connectAttr "mgear_curveCns161GroupId.id" "|guide|global_C0_root|local_C0_root|body_C0_root|spine_C0_root|spine_C0_eff|neck_C0_root|neck_C0_neck|neck_C0_head|mouth_C0_root|mouth_C0_rotcenter|mouth_C0_liplow|mouth_C0_crv|mouth_C0_crvShape.iog.og[0].gid" - ; -connectAttr "mgear_curveCns161Set.mwc" "|guide|global_C0_root|local_C0_root|body_C0_root|spine_C0_root|spine_C0_eff|neck_C0_root|neck_C0_neck|neck_C0_head|mouth_C0_root|mouth_C0_rotcenter|mouth_C0_liplow|mouth_C0_crv|mouth_C0_crvShape.iog.og[0].gco" - ; -connectAttr "groupId322.id" "|guide|global_C0_root|local_C0_root|body_C0_root|spine_C0_root|spine_C0_eff|neck_C0_root|neck_C0_neck|neck_C0_head|mouth_C0_root|mouth_C0_rotcenter|mouth_C0_liplow|mouth_C0_crv|mouth_C0_crvShape.iog.og[1].gid" - ; -connectAttr "tweakSet161.mwc" "|guide|global_C0_root|local_C0_root|body_C0_root|spine_C0_root|spine_C0_eff|neck_C0_root|neck_C0_neck|neck_C0_head|mouth_C0_root|mouth_C0_rotcenter|mouth_C0_liplow|mouth_C0_crv|mouth_C0_crvShape.iog.og[1].gco" - ; -connectAttr "mgear_curveCns159.og[0]" "|guide|global_C0_root|local_C0_root|body_C0_root|spine_C0_root|spine_C0_eff|neck_C0_root|neck_C0_neck|neck_C0_head|mouth_C0_root|mouth_C0_crv|mouth_C0_crvShape.cr" - ; -connectAttr "tweak159.pl[0].cp[0]" "|guide|global_C0_root|local_C0_root|body_C0_root|spine_C0_root|spine_C0_eff|neck_C0_root|neck_C0_neck|neck_C0_head|mouth_C0_root|mouth_C0_crv|mouth_C0_crvShape.twl" - ; -connectAttr "mgear_curveCns159GroupId.id" "|guide|global_C0_root|local_C0_root|body_C0_root|spine_C0_root|spine_C0_eff|neck_C0_root|neck_C0_neck|neck_C0_head|mouth_C0_root|mouth_C0_crv|mouth_C0_crvShape.iog.og[0].gid" - ; -connectAttr "mgear_curveCns159Set.mwc" "|guide|global_C0_root|local_C0_root|body_C0_root|spine_C0_root|spine_C0_eff|neck_C0_root|neck_C0_neck|neck_C0_head|mouth_C0_root|mouth_C0_crv|mouth_C0_crvShape.iog.og[0].gco" - ; -connectAttr "groupId318.id" "|guide|global_C0_root|local_C0_root|body_C0_root|spine_C0_root|spine_C0_eff|neck_C0_root|neck_C0_neck|neck_C0_head|mouth_C0_root|mouth_C0_crv|mouth_C0_crvShape.iog.og[1].gid" - ; -connectAttr "tweakSet159.mwc" "|guide|global_C0_root|local_C0_root|body_C0_root|spine_C0_root|spine_C0_eff|neck_C0_root|neck_C0_neck|neck_C0_head|mouth_C0_root|mouth_C0_crv|mouth_C0_crvShape.iog.og[1].gco" - ; -connectAttr "mgear_curveCns162.og[0]" "mouth_C0_crv7Shape.cr"; -connectAttr "tweak162.pl[0].cp[0]" "mouth_C0_crv7Shape.twl"; -connectAttr "mgear_curveCns162GroupId.id" "mouth_C0_crv7Shape.iog.og[0].gid"; -connectAttr "mgear_curveCns162Set.mwc" "mouth_C0_crv7Shape.iog.og[0].gco"; -connectAttr "groupId324.id" "mouth_C0_crv7Shape.iog.og[1].gid"; -connectAttr "tweakSet162.mwc" "mouth_C0_crv7Shape.iog.og[1].gco"; -connectAttr "mgear_curveCns163.og[0]" "eye_L0_crvShape.cr"; -connectAttr "tweak163.pl[0].cp[0]" "eye_L0_crvShape.twl"; -connectAttr "mgear_curveCns163GroupId.id" "eye_L0_crvShape.iog.og[0].gid"; -connectAttr "mgear_curveCns163Set.mwc" "eye_L0_crvShape.iog.og[0].gco"; -connectAttr "groupId326.id" "eye_L0_crvShape.iog.og[1].gid"; -connectAttr "tweakSet163.mwc" "eye_L0_crvShape.iog.og[1].gco"; -connectAttr "mgear_curveCns164.og[0]" "eye_R0_crvShape.cr"; -connectAttr "tweak164.pl[0].cp[0]" "eye_R0_crvShape.twl"; -connectAttr "mgear_curveCns164GroupId.id" "eye_R0_crvShape.iog.og[0].gid"; -connectAttr "mgear_curveCns164Set.mwc" "eye_R0_crvShape.iog.og[0].gco"; -connectAttr "groupId328.id" "eye_R0_crvShape.iog.og[1].gid"; -connectAttr "tweakSet164.mwc" "eye_R0_crvShape.iog.og[1].gco"; -connectAttr "mgear_curveCns158.og[0]" "neck_C0_head_crvShape.cr"; -connectAttr "tweak158.pl[0].cp[0]" "neck_C0_head_crvShape.twl"; -connectAttr "mgear_curveCns158GroupId.id" "neck_C0_head_crvShape.iog.og[0].gid"; -connectAttr "mgear_curveCns158Set.mwc" "neck_C0_head_crvShape.iog.og[0].gco"; -connectAttr "groupId316.id" "neck_C0_head_crvShape.iog.og[1].gid"; -connectAttr "tweakSet158.mwc" "neck_C0_head_crvShape.iog.og[1].gco"; -connectAttr "neck_C0_blade_pointConstraint7.ctx" "neck_C0_blade.tx" -l on; -connectAttr "neck_C0_blade_pointConstraint7.cty" "neck_C0_blade.ty" -l on; -connectAttr "neck_C0_blade_pointConstraint7.ctz" "neck_C0_blade.tz" -l on; -connectAttr "neck_C0_blade_aimConstraint7.crx" "neck_C0_blade.rx" -l on; -connectAttr "neck_C0_blade_aimConstraint7.cry" "neck_C0_blade.ry" -l on; -connectAttr "neck_C0_blade_aimConstraint7.crz" "neck_C0_blade.rz" -l on; -connectAttr "neck_C0_blade.pim" "neck_C0_blade_aimConstraint7.cpim"; -connectAttr "neck_C0_blade.t" "neck_C0_blade_aimConstraint7.ct"; -connectAttr "neck_C0_blade.rp" "neck_C0_blade_aimConstraint7.crp"; -connectAttr "neck_C0_blade.rpt" "neck_C0_blade_aimConstraint7.crt"; -connectAttr "neck_C0_blade.ro" "neck_C0_blade_aimConstraint7.cro"; -connectAttr "neck_C0_tan0.t" "neck_C0_blade_aimConstraint7.tg[0].tt"; -connectAttr "neck_C0_tan0.rp" "neck_C0_blade_aimConstraint7.tg[0].trp"; -connectAttr "neck_C0_tan0.rpt" "neck_C0_blade_aimConstraint7.tg[0].trt"; -connectAttr "neck_C0_tan0.pm" "neck_C0_blade_aimConstraint7.tg[0].tpm"; -connectAttr "neck_C0_blade_aimConstraint7.w0" "neck_C0_blade_aimConstraint7.tg[0].tw" - ; -connectAttr "neck_C0_root.wm" "neck_C0_blade_aimConstraint7.wum"; -connectAttr "unitConversion29.o" "neck_C0_blade_aimConstraint7.ox"; -connectAttr "neck_C0_blade.pim" "neck_C0_blade_pointConstraint7.cpim"; -connectAttr "neck_C0_blade.rp" "neck_C0_blade_pointConstraint7.crp"; -connectAttr "neck_C0_blade.rpt" "neck_C0_blade_pointConstraint7.crt"; -connectAttr "neck_C0_root.t" "neck_C0_blade_pointConstraint7.tg[0].tt"; -connectAttr "neck_C0_root.rp" "neck_C0_blade_pointConstraint7.tg[0].trp"; -connectAttr "neck_C0_root.rpt" "neck_C0_blade_pointConstraint7.tg[0].trt"; -connectAttr "neck_C0_root.pm" "neck_C0_blade_pointConstraint7.tg[0].tpm"; -connectAttr "neck_C0_blade_pointConstraint7.w0" "neck_C0_blade_pointConstraint7.tg[0].tw" - ; -connectAttr "mgear_curveCns157.og[0]" "neck_C0_neck_crvShape.cr"; -connectAttr "tweak157.pl[0].cp[0]" "neck_C0_neck_crvShape.twl"; -connectAttr "mgear_curveCns157GroupId.id" "neck_C0_neck_crvShape.iog.og[0].gid"; -connectAttr "mgear_curveCns157Set.mwc" "neck_C0_neck_crvShape.iog.og[0].gco"; -connectAttr "groupId314.id" "neck_C0_neck_crvShape.iog.og[1].gid"; -connectAttr "tweakSet157.mwc" "neck_C0_neck_crvShape.iog.og[1].gco"; -connectAttr "legFront_L0_root_st_profile.o" "legFront_L0_root.st_profile"; -connectAttr "legFront_L0_root_sq_profile.o" "legFront_L0_root.sq_profile"; -connectAttr "mgear_curveCns167.og[0]" "footFront_L0_crvShape.cr"; -connectAttr "tweak167.pl[0].cp[0]" "footFront_L0_crvShape.twl"; -connectAttr "mgear_curveCns167GroupId.id" "footFront_L0_crvShape.iog.og[0].gid"; -connectAttr "mgear_curveCns167Set.mwc" "footFront_L0_crvShape.iog.og[0].gco"; -connectAttr "groupId334.id" "footFront_L0_crvShape.iog.og[1].gid"; -connectAttr "tweakSet167.mwc" "footFront_L0_crvShape.iog.og[1].gco"; -connectAttr "mgear_curveCns168.og[0]" "footFront_L0_Shape1.cr"; -connectAttr "tweak168.pl[0].cp[0]" "footFront_L0_Shape1.twl"; -connectAttr "mgear_curveCns168GroupId.id" "footFront_L0_Shape1.iog.og[0].gid"; -connectAttr "mgear_curveCns168Set.mwc" "footFront_L0_Shape1.iog.og[0].gco"; -connectAttr "groupId336.id" "footFront_L0_Shape1.iog.og[1].gid"; -connectAttr "tweakSet168.mwc" "footFront_L0_Shape1.iog.og[1].gco"; -connectAttr "mgear_curveCns166.og[0]" "legFront_L0_crvShape1.cr"; -connectAttr "tweak166.pl[0].cp[0]" "legFront_L0_crvShape1.twl"; -connectAttr "mgear_curveCns166GroupId.id" "legFront_L0_crvShape1.iog.og[0].gid"; -connectAttr "mgear_curveCns166Set.mwc" "legFront_L0_crvShape1.iog.og[0].gco"; -connectAttr "groupId332.id" "legFront_L0_crvShape1.iog.og[1].gid"; -connectAttr "tweakSet166.mwc" "legFront_L0_crvShape1.iog.og[1].gco"; -connectAttr "shoulder_L0_blade_pointConstraint7.ctx" "shoulder_L0_blade.tx" -l on - ; -connectAttr "shoulder_L0_blade_pointConstraint7.cty" "shoulder_L0_blade.ty" -l on - ; -connectAttr "shoulder_L0_blade_pointConstraint7.ctz" "shoulder_L0_blade.tz" -l on - ; -connectAttr "shoulder_L0_blade_aimConstraint7.crx" "shoulder_L0_blade.rx" -l on; -connectAttr "shoulder_L0_blade_aimConstraint7.cry" "shoulder_L0_blade.ry" -l on; -connectAttr "shoulder_L0_blade_aimConstraint7.crz" "shoulder_L0_blade.rz" -l on; -connectAttr "shoulder_L0_blade.pim" "shoulder_L0_blade_aimConstraint7.cpim"; -connectAttr "shoulder_L0_blade.t" "shoulder_L0_blade_aimConstraint7.ct"; -connectAttr "shoulder_L0_blade.rp" "shoulder_L0_blade_aimConstraint7.crp"; -connectAttr "shoulder_L0_blade.rpt" "shoulder_L0_blade_aimConstraint7.crt"; -connectAttr "shoulder_L0_blade.ro" "shoulder_L0_blade_aimConstraint7.cro"; -connectAttr "shoulder_L0_0_loc.t" "shoulder_L0_blade_aimConstraint7.tg[0].tt"; -connectAttr "shoulder_L0_0_loc.rp" "shoulder_L0_blade_aimConstraint7.tg[0].trp"; -connectAttr "shoulder_L0_0_loc.rpt" "shoulder_L0_blade_aimConstraint7.tg[0].trt" - ; -connectAttr "shoulder_L0_0_loc.pm" "shoulder_L0_blade_aimConstraint7.tg[0].tpm"; -connectAttr "shoulder_L0_blade_aimConstraint7.w0" "shoulder_L0_blade_aimConstraint7.tg[0].tw" - ; -connectAttr "shoulder_L0_root.wm" "shoulder_L0_blade_aimConstraint7.wum"; -connectAttr "unitConversion30.o" "shoulder_L0_blade_aimConstraint7.ox"; -connectAttr "shoulder_L0_blade.pim" "shoulder_L0_blade_pointConstraint7.cpim"; -connectAttr "shoulder_L0_blade.rp" "shoulder_L0_blade_pointConstraint7.crp"; -connectAttr "shoulder_L0_blade.rpt" "shoulder_L0_blade_pointConstraint7.crt"; -connectAttr "shoulder_L0_root.t" "shoulder_L0_blade_pointConstraint7.tg[0].tt"; -connectAttr "shoulder_L0_root.rp" "shoulder_L0_blade_pointConstraint7.tg[0].trp" - ; -connectAttr "shoulder_L0_root.rpt" "shoulder_L0_blade_pointConstraint7.tg[0].trt" - ; -connectAttr "shoulder_L0_root.pm" "shoulder_L0_blade_pointConstraint7.tg[0].tpm" - ; -connectAttr "shoulder_L0_blade_pointConstraint7.w0" "shoulder_L0_blade_pointConstraint7.tg[0].tw" - ; -connectAttr "mgear_curveCns165.og[0]" "shoulder_L0_crvShape.cr"; -connectAttr "tweak165.pl[0].cp[0]" "shoulder_L0_crvShape.twl"; -connectAttr "mgear_curveCns165GroupId.id" "shoulder_L0_crvShape.iog.og[0].gid"; -connectAttr "mgear_curveCns165Set.mwc" "shoulder_L0_crvShape.iog.og[0].gco"; -connectAttr "groupId330.id" "shoulder_L0_crvShape.iog.og[1].gid"; -connectAttr "tweakSet165.mwc" "shoulder_L0_crvShape.iog.og[1].gco"; -connectAttr "legFront_R0_root_st_profile.o" "legFront_R0_root.st_profile"; -connectAttr "legFront_R0_root_sq_profile.o" "legFront_R0_root.sq_profile"; -connectAttr "mgear_curveCns181.og[0]" "footFront_R0_crvShape.cr"; -connectAttr "tweak181.pl[0].cp[0]" "footFront_R0_crvShape.twl"; -connectAttr "mgear_curveCns181GroupId.id" "footFront_R0_crvShape.iog.og[0].gid"; -connectAttr "mgear_curveCns181Set.mwc" "footFront_R0_crvShape.iog.og[0].gco"; -connectAttr "groupId362.id" "footFront_R0_crvShape.iog.og[1].gid"; -connectAttr "tweakSet181.mwc" "footFront_R0_crvShape.iog.og[1].gco"; -connectAttr "mgear_curveCns182.og[0]" "footFront_R0_Shape1.cr"; -connectAttr "tweak182.pl[0].cp[0]" "footFront_R0_Shape1.twl"; -connectAttr "mgear_curveCns182GroupId.id" "footFront_R0_Shape1.iog.og[0].gid"; -connectAttr "mgear_curveCns182Set.mwc" "footFront_R0_Shape1.iog.og[0].gco"; -connectAttr "groupId364.id" "footFront_R0_Shape1.iog.og[1].gid"; -connectAttr "tweakSet182.mwc" "footFront_R0_Shape1.iog.og[1].gco"; -connectAttr "mgear_curveCns180.og[0]" "legFront_R0_crvShape1.cr"; -connectAttr "tweak180.pl[0].cp[0]" "legFront_R0_crvShape1.twl"; -connectAttr "mgear_curveCns180GroupId.id" "legFront_R0_crvShape1.iog.og[0].gid"; -connectAttr "mgear_curveCns180Set.mwc" "legFront_R0_crvShape1.iog.og[0].gco"; -connectAttr "groupId360.id" "legFront_R0_crvShape1.iog.og[1].gid"; -connectAttr "tweakSet180.mwc" "legFront_R0_crvShape1.iog.og[1].gco"; -connectAttr "shoulder_R0_blade_pointConstraint1.ctx" "shoulder_R0_blade.tx" -l on - ; -connectAttr "shoulder_R0_blade_pointConstraint1.cty" "shoulder_R0_blade.ty" -l on - ; -connectAttr "shoulder_R0_blade_pointConstraint1.ctz" "shoulder_R0_blade.tz" -l on - ; -connectAttr "shoulder_R0_blade_aimConstraint1.crx" "shoulder_R0_blade.rx" -l on; -connectAttr "shoulder_R0_blade_aimConstraint1.cry" "shoulder_R0_blade.ry" -l on; -connectAttr "shoulder_R0_blade_aimConstraint1.crz" "shoulder_R0_blade.rz" -l on; -connectAttr "shoulder_R0_blade.pim" "shoulder_R0_blade_aimConstraint1.cpim"; -connectAttr "shoulder_R0_blade.t" "shoulder_R0_blade_aimConstraint1.ct"; -connectAttr "shoulder_R0_blade.rp" "shoulder_R0_blade_aimConstraint1.crp"; -connectAttr "shoulder_R0_blade.rpt" "shoulder_R0_blade_aimConstraint1.crt"; -connectAttr "shoulder_R0_blade.ro" "shoulder_R0_blade_aimConstraint1.cro"; -connectAttr "shoulder_R0_0_loc.t" "shoulder_R0_blade_aimConstraint1.tg[0].tt"; -connectAttr "shoulder_R0_0_loc.rp" "shoulder_R0_blade_aimConstraint1.tg[0].trp"; -connectAttr "shoulder_R0_0_loc.rpt" "shoulder_R0_blade_aimConstraint1.tg[0].trt" - ; -connectAttr "shoulder_R0_0_loc.pm" "shoulder_R0_blade_aimConstraint1.tg[0].tpm"; -connectAttr "shoulder_R0_blade_aimConstraint1.w0" "shoulder_R0_blade_aimConstraint1.tg[0].tw" - ; -connectAttr "shoulder_R0_root.wm" "shoulder_R0_blade_aimConstraint1.wum"; -connectAttr "unitConversion31.o" "shoulder_R0_blade_aimConstraint1.ox"; -connectAttr "shoulder_R0_blade.pim" "shoulder_R0_blade_pointConstraint1.cpim"; -connectAttr "shoulder_R0_blade.rp" "shoulder_R0_blade_pointConstraint1.crp"; -connectAttr "shoulder_R0_blade.rpt" "shoulder_R0_blade_pointConstraint1.crt"; -connectAttr "shoulder_R0_root.t" "shoulder_R0_blade_pointConstraint1.tg[0].tt"; -connectAttr "shoulder_R0_root.rp" "shoulder_R0_blade_pointConstraint1.tg[0].trp" - ; -connectAttr "shoulder_R0_root.rpt" "shoulder_R0_blade_pointConstraint1.tg[0].trt" - ; -connectAttr "shoulder_R0_root.pm" "shoulder_R0_blade_pointConstraint1.tg[0].tpm" - ; -connectAttr "shoulder_R0_blade_pointConstraint1.w0" "shoulder_R0_blade_pointConstraint1.tg[0].tw" - ; -connectAttr "mgear_curveCns179.og[0]" "shoulder_R0_crvShape.cr"; -connectAttr "tweak179.pl[0].cp[0]" "shoulder_R0_crvShape.twl"; -connectAttr "mgear_curveCns179GroupId.id" "shoulder_R0_crvShape.iog.og[0].gid"; -connectAttr "mgear_curveCns179Set.mwc" "shoulder_R0_crvShape.iog.og[0].gco"; -connectAttr "groupId358.id" "shoulder_R0_crvShape.iog.og[1].gid"; -connectAttr "tweakSet179.mwc" "shoulder_R0_crvShape.iog.og[1].gco"; -connectAttr "spine_C0_blade_pointConstraint7.ctx" "spine_C0_blade.tx" -l on; -connectAttr "spine_C0_blade_pointConstraint7.cty" "spine_C0_blade.ty" -l on; -connectAttr "spine_C0_blade_pointConstraint7.ctz" "spine_C0_blade.tz" -l on; -connectAttr "spine_C0_blade_aimConstraint7.crx" "spine_C0_blade.rx" -l on; -connectAttr "spine_C0_blade_aimConstraint7.cry" "spine_C0_blade.ry" -l on; -connectAttr "spine_C0_blade_aimConstraint7.crz" "spine_C0_blade.rz" -l on; -connectAttr "spine_C0_blade.pim" "spine_C0_blade_aimConstraint7.cpim"; -connectAttr "spine_C0_blade.t" "spine_C0_blade_aimConstraint7.ct"; -connectAttr "spine_C0_blade.rp" "spine_C0_blade_aimConstraint7.crp"; -connectAttr "spine_C0_blade.rpt" "spine_C0_blade_aimConstraint7.crt"; -connectAttr "spine_C0_blade.ro" "spine_C0_blade_aimConstraint7.cro"; -connectAttr "spine_C0_eff.t" "spine_C0_blade_aimConstraint7.tg[0].tt"; -connectAttr "spine_C0_eff.rp" "spine_C0_blade_aimConstraint7.tg[0].trp"; -connectAttr "spine_C0_eff.rpt" "spine_C0_blade_aimConstraint7.tg[0].trt"; -connectAttr "spine_C0_eff.pm" "spine_C0_blade_aimConstraint7.tg[0].tpm"; -connectAttr "spine_C0_blade_aimConstraint7.w0" "spine_C0_blade_aimConstraint7.tg[0].tw" - ; -connectAttr "spine_C0_root.wm" "spine_C0_blade_aimConstraint7.wum"; -connectAttr "unitConversion28.o" "spine_C0_blade_aimConstraint7.ox"; -connectAttr "spine_C0_blade.pim" "spine_C0_blade_pointConstraint7.cpim"; -connectAttr "spine_C0_blade.rp" "spine_C0_blade_pointConstraint7.crp"; -connectAttr "spine_C0_blade.rpt" "spine_C0_blade_pointConstraint7.crt"; -connectAttr "spine_C0_root.t" "spine_C0_blade_pointConstraint7.tg[0].tt"; -connectAttr "spine_C0_root.rp" "spine_C0_blade_pointConstraint7.tg[0].trp"; -connectAttr "spine_C0_root.rpt" "spine_C0_blade_pointConstraint7.tg[0].trt"; -connectAttr "spine_C0_root.pm" "spine_C0_blade_pointConstraint7.tg[0].tpm"; -connectAttr "spine_C0_blade_pointConstraint7.w0" "spine_C0_blade_pointConstraint7.tg[0].tw" - ; -connectAttr "mgear_curveCns156.og[0]" "spine_C0_crvShape.cr"; -connectAttr "tweak156.pl[0].cp[0]" "spine_C0_crvShape.twl"; -connectAttr "mgear_curveCns156GroupId.id" "spine_C0_crvShape.iog.og[0].gid"; -connectAttr "mgear_curveCns156Set.mwc" "spine_C0_crvShape.iog.og[0].gco"; -connectAttr "groupId312.id" "spine_C0_crvShape.iog.og[1].gid"; -connectAttr "tweakSet156.mwc" "spine_C0_crvShape.iog.og[1].gco"; -connectAttr "legBack_L0_root_st_profile.o" "legBack_L0_root.st_profile"; -connectAttr "legBack_L0_root_sq_profile.o" "legBack_L0_root.sq_profile"; -connectAttr "mgear_curveCns174.og[0]" "footBack_L0_crvShape.cr"; -connectAttr "tweak174.pl[0].cp[0]" "footBack_L0_crvShape.twl"; -connectAttr "mgear_curveCns174GroupId.id" "footBack_L0_crvShape.iog.og[0].gid"; -connectAttr "mgear_curveCns174Set.mwc" "footBack_L0_crvShape.iog.og[0].gco"; -connectAttr "groupId348.id" "footBack_L0_crvShape.iog.og[1].gid"; -connectAttr "tweakSet174.mwc" "footBack_L0_crvShape.iog.og[1].gco"; -connectAttr "mgear_curveCns175.og[0]" "footBack_L0_Shape1.cr"; -connectAttr "tweak175.pl[0].cp[0]" "footBack_L0_Shape1.twl"; -connectAttr "mgear_curveCns175GroupId.id" "footBack_L0_Shape1.iog.og[0].gid"; -connectAttr "mgear_curveCns175Set.mwc" "footBack_L0_Shape1.iog.og[0].gco"; -connectAttr "groupId350.id" "footBack_L0_Shape1.iog.og[1].gid"; -connectAttr "tweakSet175.mwc" "footBack_L0_Shape1.iog.og[1].gco"; -connectAttr "mgear_curveCns173.og[0]" "legBack_L0_crvShape1.cr"; -connectAttr "tweak173.pl[0].cp[0]" "legBack_L0_crvShape1.twl"; -connectAttr "mgear_curveCns173GroupId.id" "legBack_L0_crvShape1.iog.og[0].gid"; -connectAttr "mgear_curveCns173Set.mwc" "legBack_L0_crvShape1.iog.og[0].gco"; -connectAttr "groupId346.id" "legBack_L0_crvShape1.iog.og[1].gid"; -connectAttr "tweakSet173.mwc" "legBack_L0_crvShape1.iog.og[1].gco"; -connectAttr "legBack_R0_root_st_profile.o" "legBack_R0_root.st_profile"; -connectAttr "legBack_R0_root_sq_profile.o" "legBack_R0_root.sq_profile"; -connectAttr "mgear_curveCns177.og[0]" "footBack_R0_crvShape.cr"; -connectAttr "tweak177.pl[0].cp[0]" "footBack_R0_crvShape.twl"; -connectAttr "mgear_curveCns177GroupId.id" "footBack_R0_crvShape.iog.og[0].gid"; -connectAttr "mgear_curveCns177Set.mwc" "footBack_R0_crvShape.iog.og[0].gco"; -connectAttr "groupId354.id" "footBack_R0_crvShape.iog.og[1].gid"; -connectAttr "tweakSet177.mwc" "footBack_R0_crvShape.iog.og[1].gco"; -connectAttr "mgear_curveCns178.og[0]" "footBack_R0_Shape1.cr"; -connectAttr "tweak178.pl[0].cp[0]" "footBack_R0_Shape1.twl"; -connectAttr "mgear_curveCns178GroupId.id" "footBack_R0_Shape1.iog.og[0].gid"; -connectAttr "mgear_curveCns178Set.mwc" "footBack_R0_Shape1.iog.og[0].gco"; -connectAttr "groupId356.id" "footBack_R0_Shape1.iog.og[1].gid"; -connectAttr "tweakSet178.mwc" "footBack_R0_Shape1.iog.og[1].gco"; -connectAttr "mgear_curveCns176.og[0]" "legBack_R0_crvShape1.cr"; -connectAttr "tweak176.pl[0].cp[0]" "legBack_R0_crvShape1.twl"; -connectAttr "mgear_curveCns176GroupId.id" "legBack_R0_crvShape1.iog.og[0].gid"; -connectAttr "mgear_curveCns176Set.mwc" "legBack_R0_crvShape1.iog.og[0].gco"; -connectAttr "groupId352.id" "legBack_R0_crvShape1.iog.og[1].gid"; -connectAttr "tweakSet176.mwc" "legBack_R0_crvShape1.iog.og[1].gco"; -connectAttr "mgear_curveCns160GroupParts.og" "mgear_curveCns160.ip[0].ig"; -connectAttr "mgear_curveCns160GroupId.id" "mgear_curveCns160.ip[0].gi"; -connectAttr "mouth_C0_lipup.wm" "mgear_curveCns160.inputs[0]"; -connectAttr "mouth_C0_rotcenter.wm" "mgear_curveCns160.inputs[1]"; -connectAttr "mgear_curveCns160GroupId.msg" "mgear_curveCns160Set.gn" -na; -connectAttr "|guide|global_C0_root|local_C0_root|body_C0_root|spine_C0_root|spine_C0_eff|neck_C0_root|neck_C0_neck|neck_C0_head|mouth_C0_root|mouth_C0_rotcenter|mouth_C0_lipup|mouth_C0_crv|mouth_C0_crvShape.iog.og[0]" "mgear_curveCns160Set.dsm" +connectAttr "spine_C0_root_st_profile1.o" "spine_C0_root.st_profile"; +connectAttr "spine_C0_root_sq_profile1.o" "spine_C0_root.sq_profile"; +connectAttr "neck_C0_root_st_profile1.o" "neck_C0_root.st_profile"; +connectAttr "neck_C0_root_sq_profile1.o" "neck_C0_root.sq_profile"; +connectAttr "mgear_curveCns187.og[0]" "|guide|global_C0_root|local_C0_root|body_C0_root|spine_C0_root|spine_C0_eff|neck_C0_root|neck_C0_neck|neck_C0_head|mouth_C0_root|mouth_C0_rotcenter|mouth_C0_lipup|mouth_C0_crv|mouth_C0_crvShape.cr" + ; +connectAttr "tweak187.pl[0].cp[0]" "|guide|global_C0_root|local_C0_root|body_C0_root|spine_C0_root|spine_C0_eff|neck_C0_root|neck_C0_neck|neck_C0_head|mouth_C0_root|mouth_C0_rotcenter|mouth_C0_lipup|mouth_C0_crv|mouth_C0_crvShape.twl" + ; +connectAttr "mgear_curveCns187GroupId.id" "|guide|global_C0_root|local_C0_root|body_C0_root|spine_C0_root|spine_C0_eff|neck_C0_root|neck_C0_neck|neck_C0_head|mouth_C0_root|mouth_C0_rotcenter|mouth_C0_lipup|mouth_C0_crv|mouth_C0_crvShape.iog.og[0].gid" + ; +connectAttr "mgear_curveCns187Set.mwc" "|guide|global_C0_root|local_C0_root|body_C0_root|spine_C0_root|spine_C0_eff|neck_C0_root|neck_C0_neck|neck_C0_head|mouth_C0_root|mouth_C0_rotcenter|mouth_C0_lipup|mouth_C0_crv|mouth_C0_crvShape.iog.og[0].gco" + ; +connectAttr "groupId374.id" "|guide|global_C0_root|local_C0_root|body_C0_root|spine_C0_root|spine_C0_eff|neck_C0_root|neck_C0_neck|neck_C0_head|mouth_C0_root|mouth_C0_rotcenter|mouth_C0_lipup|mouth_C0_crv|mouth_C0_crvShape.iog.og[1].gid" + ; +connectAttr "tweakSet187.mwc" "|guide|global_C0_root|local_C0_root|body_C0_root|spine_C0_root|spine_C0_eff|neck_C0_root|neck_C0_neck|neck_C0_head|mouth_C0_root|mouth_C0_rotcenter|mouth_C0_lipup|mouth_C0_crv|mouth_C0_crvShape.iog.og[1].gco" + ; +connectAttr "mgear_curveCns188.og[0]" "|guide|global_C0_root|local_C0_root|body_C0_root|spine_C0_root|spine_C0_eff|neck_C0_root|neck_C0_neck|neck_C0_head|mouth_C0_root|mouth_C0_rotcenter|mouth_C0_liplow|mouth_C0_crv|mouth_C0_crvShape.cr" + ; +connectAttr "tweak188.pl[0].cp[0]" "|guide|global_C0_root|local_C0_root|body_C0_root|spine_C0_root|spine_C0_eff|neck_C0_root|neck_C0_neck|neck_C0_head|mouth_C0_root|mouth_C0_rotcenter|mouth_C0_liplow|mouth_C0_crv|mouth_C0_crvShape.twl" + ; +connectAttr "mgear_curveCns188GroupId.id" "|guide|global_C0_root|local_C0_root|body_C0_root|spine_C0_root|spine_C0_eff|neck_C0_root|neck_C0_neck|neck_C0_head|mouth_C0_root|mouth_C0_rotcenter|mouth_C0_liplow|mouth_C0_crv|mouth_C0_crvShape.iog.og[0].gid" + ; +connectAttr "mgear_curveCns188Set.mwc" "|guide|global_C0_root|local_C0_root|body_C0_root|spine_C0_root|spine_C0_eff|neck_C0_root|neck_C0_neck|neck_C0_head|mouth_C0_root|mouth_C0_rotcenter|mouth_C0_liplow|mouth_C0_crv|mouth_C0_crvShape.iog.og[0].gco" + ; +connectAttr "groupId376.id" "|guide|global_C0_root|local_C0_root|body_C0_root|spine_C0_root|spine_C0_eff|neck_C0_root|neck_C0_neck|neck_C0_head|mouth_C0_root|mouth_C0_rotcenter|mouth_C0_liplow|mouth_C0_crv|mouth_C0_crvShape.iog.og[1].gid" + ; +connectAttr "tweakSet188.mwc" "|guide|global_C0_root|local_C0_root|body_C0_root|spine_C0_root|spine_C0_eff|neck_C0_root|neck_C0_neck|neck_C0_head|mouth_C0_root|mouth_C0_rotcenter|mouth_C0_liplow|mouth_C0_crv|mouth_C0_crvShape.iog.og[1].gco" + ; +connectAttr "mgear_curveCns186.og[0]" "|guide|global_C0_root|local_C0_root|body_C0_root|spine_C0_root|spine_C0_eff|neck_C0_root|neck_C0_neck|neck_C0_head|mouth_C0_root|mouth_C0_crv|mouth_C0_crvShape.cr" + ; +connectAttr "tweak186.pl[0].cp[0]" "|guide|global_C0_root|local_C0_root|body_C0_root|spine_C0_root|spine_C0_eff|neck_C0_root|neck_C0_neck|neck_C0_head|mouth_C0_root|mouth_C0_crv|mouth_C0_crvShape.twl" + ; +connectAttr "mgear_curveCns186GroupId.id" "|guide|global_C0_root|local_C0_root|body_C0_root|spine_C0_root|spine_C0_eff|neck_C0_root|neck_C0_neck|neck_C0_head|mouth_C0_root|mouth_C0_crv|mouth_C0_crvShape.iog.og[0].gid" + ; +connectAttr "mgear_curveCns186Set.mwc" "|guide|global_C0_root|local_C0_root|body_C0_root|spine_C0_root|spine_C0_eff|neck_C0_root|neck_C0_neck|neck_C0_head|mouth_C0_root|mouth_C0_crv|mouth_C0_crvShape.iog.og[0].gco" + ; +connectAttr "groupId372.id" "|guide|global_C0_root|local_C0_root|body_C0_root|spine_C0_root|spine_C0_eff|neck_C0_root|neck_C0_neck|neck_C0_head|mouth_C0_root|mouth_C0_crv|mouth_C0_crvShape.iog.og[1].gid" + ; +connectAttr "tweakSet186.mwc" "|guide|global_C0_root|local_C0_root|body_C0_root|spine_C0_root|spine_C0_eff|neck_C0_root|neck_C0_neck|neck_C0_head|mouth_C0_root|mouth_C0_crv|mouth_C0_crvShape.iog.og[1].gco" + ; +connectAttr "mgear_curveCns189.og[0]" "mouth_C0_crv8Shape.cr"; +connectAttr "tweak189.pl[0].cp[0]" "mouth_C0_crv8Shape.twl"; +connectAttr "mgear_curveCns189GroupId.id" "mouth_C0_crv8Shape.iog.og[0].gid"; +connectAttr "mgear_curveCns189Set.mwc" "mouth_C0_crv8Shape.iog.og[0].gco"; +connectAttr "groupId378.id" "mouth_C0_crv8Shape.iog.og[1].gid"; +connectAttr "tweakSet189.mwc" "mouth_C0_crv8Shape.iog.og[1].gco"; +connectAttr "mgear_curveCns190.og[0]" "eye_L0_crvShape.cr"; +connectAttr "tweak190.pl[0].cp[0]" "eye_L0_crvShape.twl"; +connectAttr "mgear_curveCns190GroupId.id" "eye_L0_crvShape.iog.og[0].gid"; +connectAttr "mgear_curveCns190Set.mwc" "eye_L0_crvShape.iog.og[0].gco"; +connectAttr "groupId380.id" "eye_L0_crvShape.iog.og[1].gid"; +connectAttr "tweakSet190.mwc" "eye_L0_crvShape.iog.og[1].gco"; +connectAttr "mgear_curveCns191.og[0]" "eye_R0_crvShape.cr"; +connectAttr "tweak191.pl[0].cp[0]" "eye_R0_crvShape.twl"; +connectAttr "mgear_curveCns191GroupId.id" "eye_R0_crvShape.iog.og[0].gid"; +connectAttr "mgear_curveCns191Set.mwc" "eye_R0_crvShape.iog.og[0].gco"; +connectAttr "groupId382.id" "eye_R0_crvShape.iog.og[1].gid"; +connectAttr "tweakSet191.mwc" "eye_R0_crvShape.iog.og[1].gco"; +connectAttr "mgear_curveCns185.og[0]" "neck_C0_head_crvShape.cr"; +connectAttr "tweak185.pl[0].cp[0]" "neck_C0_head_crvShape.twl"; +connectAttr "mgear_curveCns185GroupId.id" "neck_C0_head_crvShape.iog.og[0].gid"; +connectAttr "mgear_curveCns185Set.mwc" "neck_C0_head_crvShape.iog.og[0].gco"; +connectAttr "groupId370.id" "neck_C0_head_crvShape.iog.og[1].gid"; +connectAttr "tweakSet185.mwc" "neck_C0_head_crvShape.iog.og[1].gco"; +connectAttr "neck_C0_blade_pointConstraint8.ctx" "neck_C0_blade.tx" -l on; +connectAttr "neck_C0_blade_pointConstraint8.cty" "neck_C0_blade.ty" -l on; +connectAttr "neck_C0_blade_pointConstraint8.ctz" "neck_C0_blade.tz" -l on; +connectAttr "neck_C0_blade_aimConstraint8.crx" "neck_C0_blade.rx" -l on; +connectAttr "neck_C0_blade_aimConstraint8.cry" "neck_C0_blade.ry" -l on; +connectAttr "neck_C0_blade_aimConstraint8.crz" "neck_C0_blade.rz" -l on; +connectAttr "neck_C0_blade.pim" "neck_C0_blade_aimConstraint8.cpim"; +connectAttr "neck_C0_blade.t" "neck_C0_blade_aimConstraint8.ct"; +connectAttr "neck_C0_blade.rp" "neck_C0_blade_aimConstraint8.crp"; +connectAttr "neck_C0_blade.rpt" "neck_C0_blade_aimConstraint8.crt"; +connectAttr "neck_C0_blade.ro" "neck_C0_blade_aimConstraint8.cro"; +connectAttr "neck_C0_tan0.t" "neck_C0_blade_aimConstraint8.tg[0].tt"; +connectAttr "neck_C0_tan0.rp" "neck_C0_blade_aimConstraint8.tg[0].trp"; +connectAttr "neck_C0_tan0.rpt" "neck_C0_blade_aimConstraint8.tg[0].trt"; +connectAttr "neck_C0_tan0.pm" "neck_C0_blade_aimConstraint8.tg[0].tpm"; +connectAttr "neck_C0_blade_aimConstraint8.w0" "neck_C0_blade_aimConstraint8.tg[0].tw" + ; +connectAttr "neck_C0_root.wm" "neck_C0_blade_aimConstraint8.wum"; +connectAttr "unitConversion33.o" "neck_C0_blade_aimConstraint8.ox"; +connectAttr "neck_C0_blade.pim" "neck_C0_blade_pointConstraint8.cpim"; +connectAttr "neck_C0_blade.rp" "neck_C0_blade_pointConstraint8.crp"; +connectAttr "neck_C0_blade.rpt" "neck_C0_blade_pointConstraint8.crt"; +connectAttr "neck_C0_root.t" "neck_C0_blade_pointConstraint8.tg[0].tt"; +connectAttr "neck_C0_root.rp" "neck_C0_blade_pointConstraint8.tg[0].trp"; +connectAttr "neck_C0_root.rpt" "neck_C0_blade_pointConstraint8.tg[0].trt"; +connectAttr "neck_C0_root.pm" "neck_C0_blade_pointConstraint8.tg[0].tpm"; +connectAttr "neck_C0_blade_pointConstraint8.w0" "neck_C0_blade_pointConstraint8.tg[0].tw" + ; +connectAttr "mgear_curveCns184.og[0]" "neck_C0_neck_crvShape.cr"; +connectAttr "tweak184.pl[0].cp[0]" "neck_C0_neck_crvShape.twl"; +connectAttr "mgear_curveCns184GroupId.id" "neck_C0_neck_crvShape.iog.og[0].gid"; +connectAttr "mgear_curveCns184Set.mwc" "neck_C0_neck_crvShape.iog.og[0].gco"; +connectAttr "groupId368.id" "neck_C0_neck_crvShape.iog.og[1].gid"; +connectAttr "tweakSet184.mwc" "neck_C0_neck_crvShape.iog.og[1].gco"; +connectAttr "legFront_L0_root_st_profile1.o" "legFront_L0_root.st_profile"; +connectAttr "legFront_L0_root_sq_profile1.o" "legFront_L0_root.sq_profile"; +connectAttr "mgear_curveCns194.og[0]" "footFront_L0_crvShape.cr"; +connectAttr "tweak194.pl[0].cp[0]" "footFront_L0_crvShape.twl"; +connectAttr "mgear_curveCns194GroupId.id" "footFront_L0_crvShape.iog.og[0].gid"; +connectAttr "mgear_curveCns194Set.mwc" "footFront_L0_crvShape.iog.og[0].gco"; +connectAttr "groupId388.id" "footFront_L0_crvShape.iog.og[1].gid"; +connectAttr "tweakSet194.mwc" "footFront_L0_crvShape.iog.og[1].gco"; +connectAttr "mgear_curveCns195.og[0]" "footFront_L0_Shape1.cr"; +connectAttr "tweak195.pl[0].cp[0]" "footFront_L0_Shape1.twl"; +connectAttr "mgear_curveCns195GroupId.id" "footFront_L0_Shape1.iog.og[0].gid"; +connectAttr "mgear_curveCns195Set.mwc" "footFront_L0_Shape1.iog.og[0].gco"; +connectAttr "groupId390.id" "footFront_L0_Shape1.iog.og[1].gid"; +connectAttr "tweakSet195.mwc" "footFront_L0_Shape1.iog.og[1].gco"; +connectAttr "mgear_curveCns193.og[0]" "legFront_L0_crvShape1.cr"; +connectAttr "tweak193.pl[0].cp[0]" "legFront_L0_crvShape1.twl"; +connectAttr "mgear_curveCns193GroupId.id" "legFront_L0_crvShape1.iog.og[0].gid"; +connectAttr "mgear_curveCns193Set.mwc" "legFront_L0_crvShape1.iog.og[0].gco"; +connectAttr "groupId386.id" "legFront_L0_crvShape1.iog.og[1].gid"; +connectAttr "tweakSet193.mwc" "legFront_L0_crvShape1.iog.og[1].gco"; +connectAttr "shoulder_L0_blade_pointConstraint8.ctx" "shoulder_L0_blade.tx" -l on + ; +connectAttr "shoulder_L0_blade_pointConstraint8.cty" "shoulder_L0_blade.ty" -l on + ; +connectAttr "shoulder_L0_blade_pointConstraint8.ctz" "shoulder_L0_blade.tz" -l on + ; +connectAttr "shoulder_L0_blade_aimConstraint8.crx" "shoulder_L0_blade.rx" -l on; +connectAttr "shoulder_L0_blade_aimConstraint8.cry" "shoulder_L0_blade.ry" -l on; +connectAttr "shoulder_L0_blade_aimConstraint8.crz" "shoulder_L0_blade.rz" -l on; +connectAttr "shoulder_L0_blade.pim" "shoulder_L0_blade_aimConstraint8.cpim"; +connectAttr "shoulder_L0_blade.t" "shoulder_L0_blade_aimConstraint8.ct"; +connectAttr "shoulder_L0_blade.rp" "shoulder_L0_blade_aimConstraint8.crp"; +connectAttr "shoulder_L0_blade.rpt" "shoulder_L0_blade_aimConstraint8.crt"; +connectAttr "shoulder_L0_blade.ro" "shoulder_L0_blade_aimConstraint8.cro"; +connectAttr "shoulder_L0_0_loc.t" "shoulder_L0_blade_aimConstraint8.tg[0].tt"; +connectAttr "shoulder_L0_0_loc.rp" "shoulder_L0_blade_aimConstraint8.tg[0].trp"; +connectAttr "shoulder_L0_0_loc.rpt" "shoulder_L0_blade_aimConstraint8.tg[0].trt" + ; +connectAttr "shoulder_L0_0_loc.pm" "shoulder_L0_blade_aimConstraint8.tg[0].tpm"; +connectAttr "shoulder_L0_blade_aimConstraint8.w0" "shoulder_L0_blade_aimConstraint8.tg[0].tw" + ; +connectAttr "shoulder_L0_root.wm" "shoulder_L0_blade_aimConstraint8.wum"; +connectAttr "unitConversion34.o" "shoulder_L0_blade_aimConstraint8.ox"; +connectAttr "shoulder_L0_blade.pim" "shoulder_L0_blade_pointConstraint8.cpim"; +connectAttr "shoulder_L0_blade.rp" "shoulder_L0_blade_pointConstraint8.crp"; +connectAttr "shoulder_L0_blade.rpt" "shoulder_L0_blade_pointConstraint8.crt"; +connectAttr "shoulder_L0_root.t" "shoulder_L0_blade_pointConstraint8.tg[0].tt"; +connectAttr "shoulder_L0_root.rp" "shoulder_L0_blade_pointConstraint8.tg[0].trp" + ; +connectAttr "shoulder_L0_root.rpt" "shoulder_L0_blade_pointConstraint8.tg[0].trt" + ; +connectAttr "shoulder_L0_root.pm" "shoulder_L0_blade_pointConstraint8.tg[0].tpm" + ; +connectAttr "shoulder_L0_blade_pointConstraint8.w0" "shoulder_L0_blade_pointConstraint8.tg[0].tw" + ; +connectAttr "mgear_curveCns192.og[0]" "shoulder_L0_crvShape.cr"; +connectAttr "tweak192.pl[0].cp[0]" "shoulder_L0_crvShape.twl"; +connectAttr "mgear_curveCns192GroupId.id" "shoulder_L0_crvShape.iog.og[0].gid"; +connectAttr "mgear_curveCns192Set.mwc" "shoulder_L0_crvShape.iog.og[0].gco"; +connectAttr "groupId384.id" "shoulder_L0_crvShape.iog.og[1].gid"; +connectAttr "tweakSet192.mwc" "shoulder_L0_crvShape.iog.og[1].gco"; +connectAttr "legFront_R0_root_st_profile1.o" "legFront_R0_root.st_profile"; +connectAttr "legFront_R0_root_sq_profile1.o" "legFront_R0_root.sq_profile"; +connectAttr "mgear_curveCns198.og[0]" "footFront_R0_crvShape.cr"; +connectAttr "tweak198.pl[0].cp[0]" "footFront_R0_crvShape.twl"; +connectAttr "mgear_curveCns198GroupId.id" "footFront_R0_crvShape.iog.og[0].gid"; +connectAttr "mgear_curveCns198Set.mwc" "footFront_R0_crvShape.iog.og[0].gco"; +connectAttr "groupId396.id" "footFront_R0_crvShape.iog.og[1].gid"; +connectAttr "tweakSet198.mwc" "footFront_R0_crvShape.iog.og[1].gco"; +connectAttr "mgear_curveCns199.og[0]" "footFront_R0_Shape1.cr"; +connectAttr "tweak199.pl[0].cp[0]" "footFront_R0_Shape1.twl"; +connectAttr "mgear_curveCns199GroupId.id" "footFront_R0_Shape1.iog.og[0].gid"; +connectAttr "mgear_curveCns199Set.mwc" "footFront_R0_Shape1.iog.og[0].gco"; +connectAttr "groupId398.id" "footFront_R0_Shape1.iog.og[1].gid"; +connectAttr "tweakSet199.mwc" "footFront_R0_Shape1.iog.og[1].gco"; +connectAttr "mgear_curveCns197.og[0]" "legFront_R0_crvShape1.cr"; +connectAttr "tweak197.pl[0].cp[0]" "legFront_R0_crvShape1.twl"; +connectAttr "mgear_curveCns197GroupId.id" "legFront_R0_crvShape1.iog.og[0].gid"; +connectAttr "mgear_curveCns197Set.mwc" "legFront_R0_crvShape1.iog.og[0].gco"; +connectAttr "groupId394.id" "legFront_R0_crvShape1.iog.og[1].gid"; +connectAttr "tweakSet197.mwc" "legFront_R0_crvShape1.iog.og[1].gco"; +connectAttr "shoulder_R0_blade_pointConstraint2.ctx" "shoulder_R0_blade.tx" -l on + ; +connectAttr "shoulder_R0_blade_pointConstraint2.cty" "shoulder_R0_blade.ty" -l on + ; +connectAttr "shoulder_R0_blade_pointConstraint2.ctz" "shoulder_R0_blade.tz" -l on + ; +connectAttr "shoulder_R0_blade_aimConstraint2.crx" "shoulder_R0_blade.rx" -l on; +connectAttr "shoulder_R0_blade_aimConstraint2.cry" "shoulder_R0_blade.ry" -l on; +connectAttr "shoulder_R0_blade_aimConstraint2.crz" "shoulder_R0_blade.rz" -l on; +connectAttr "shoulder_R0_blade.pim" "shoulder_R0_blade_aimConstraint2.cpim"; +connectAttr "shoulder_R0_blade.t" "shoulder_R0_blade_aimConstraint2.ct"; +connectAttr "shoulder_R0_blade.rp" "shoulder_R0_blade_aimConstraint2.crp"; +connectAttr "shoulder_R0_blade.rpt" "shoulder_R0_blade_aimConstraint2.crt"; +connectAttr "shoulder_R0_blade.ro" "shoulder_R0_blade_aimConstraint2.cro"; +connectAttr "shoulder_R0_0_loc.t" "shoulder_R0_blade_aimConstraint2.tg[0].tt"; +connectAttr "shoulder_R0_0_loc.rp" "shoulder_R0_blade_aimConstraint2.tg[0].trp"; +connectAttr "shoulder_R0_0_loc.rpt" "shoulder_R0_blade_aimConstraint2.tg[0].trt" + ; +connectAttr "shoulder_R0_0_loc.pm" "shoulder_R0_blade_aimConstraint2.tg[0].tpm"; +connectAttr "shoulder_R0_blade_aimConstraint2.w0" "shoulder_R0_blade_aimConstraint2.tg[0].tw" + ; +connectAttr "shoulder_R0_root.wm" "shoulder_R0_blade_aimConstraint2.wum"; +connectAttr "unitConversion35.o" "shoulder_R0_blade_aimConstraint2.ox"; +connectAttr "shoulder_R0_blade.pim" "shoulder_R0_blade_pointConstraint2.cpim"; +connectAttr "shoulder_R0_blade.rp" "shoulder_R0_blade_pointConstraint2.crp"; +connectAttr "shoulder_R0_blade.rpt" "shoulder_R0_blade_pointConstraint2.crt"; +connectAttr "shoulder_R0_root.t" "shoulder_R0_blade_pointConstraint2.tg[0].tt"; +connectAttr "shoulder_R0_root.rp" "shoulder_R0_blade_pointConstraint2.tg[0].trp" + ; +connectAttr "shoulder_R0_root.rpt" "shoulder_R0_blade_pointConstraint2.tg[0].trt" + ; +connectAttr "shoulder_R0_root.pm" "shoulder_R0_blade_pointConstraint2.tg[0].tpm" + ; +connectAttr "shoulder_R0_blade_pointConstraint2.w0" "shoulder_R0_blade_pointConstraint2.tg[0].tw" + ; +connectAttr "mgear_curveCns196.og[0]" "shoulder_R0_crvShape.cr"; +connectAttr "tweak196.pl[0].cp[0]" "shoulder_R0_crvShape.twl"; +connectAttr "mgear_curveCns196GroupId.id" "shoulder_R0_crvShape.iog.og[0].gid"; +connectAttr "mgear_curveCns196Set.mwc" "shoulder_R0_crvShape.iog.og[0].gco"; +connectAttr "groupId392.id" "shoulder_R0_crvShape.iog.og[1].gid"; +connectAttr "tweakSet196.mwc" "shoulder_R0_crvShape.iog.og[1].gco"; +connectAttr "spine_C0_blade_pointConstraint8.ctx" "spine_C0_blade.tx" -l on; +connectAttr "spine_C0_blade_pointConstraint8.cty" "spine_C0_blade.ty" -l on; +connectAttr "spine_C0_blade_pointConstraint8.ctz" "spine_C0_blade.tz" -l on; +connectAttr "spine_C0_blade_aimConstraint8.crx" "spine_C0_blade.rx" -l on; +connectAttr "spine_C0_blade_aimConstraint8.cry" "spine_C0_blade.ry" -l on; +connectAttr "spine_C0_blade_aimConstraint8.crz" "spine_C0_blade.rz" -l on; +connectAttr "spine_C0_blade.pim" "spine_C0_blade_aimConstraint8.cpim"; +connectAttr "spine_C0_blade.t" "spine_C0_blade_aimConstraint8.ct"; +connectAttr "spine_C0_blade.rp" "spine_C0_blade_aimConstraint8.crp"; +connectAttr "spine_C0_blade.rpt" "spine_C0_blade_aimConstraint8.crt"; +connectAttr "spine_C0_blade.ro" "spine_C0_blade_aimConstraint8.cro"; +connectAttr "spine_C0_eff.t" "spine_C0_blade_aimConstraint8.tg[0].tt"; +connectAttr "spine_C0_eff.rp" "spine_C0_blade_aimConstraint8.tg[0].trp"; +connectAttr "spine_C0_eff.rpt" "spine_C0_blade_aimConstraint8.tg[0].trt"; +connectAttr "spine_C0_eff.pm" "spine_C0_blade_aimConstraint8.tg[0].tpm"; +connectAttr "spine_C0_blade_aimConstraint8.w0" "spine_C0_blade_aimConstraint8.tg[0].tw" + ; +connectAttr "spine_C0_root.wm" "spine_C0_blade_aimConstraint8.wum"; +connectAttr "unitConversion32.o" "spine_C0_blade_aimConstraint8.ox"; +connectAttr "spine_C0_blade.pim" "spine_C0_blade_pointConstraint8.cpim"; +connectAttr "spine_C0_blade.rp" "spine_C0_blade_pointConstraint8.crp"; +connectAttr "spine_C0_blade.rpt" "spine_C0_blade_pointConstraint8.crt"; +connectAttr "spine_C0_root.t" "spine_C0_blade_pointConstraint8.tg[0].tt"; +connectAttr "spine_C0_root.rp" "spine_C0_blade_pointConstraint8.tg[0].trp"; +connectAttr "spine_C0_root.rpt" "spine_C0_blade_pointConstraint8.tg[0].trt"; +connectAttr "spine_C0_root.pm" "spine_C0_blade_pointConstraint8.tg[0].tpm"; +connectAttr "spine_C0_blade_pointConstraint8.w0" "spine_C0_blade_pointConstraint8.tg[0].tw" + ; +connectAttr "mgear_curveCns183.og[0]" "spine_C0_crvShape.cr"; +connectAttr "tweak183.pl[0].cp[0]" "spine_C0_crvShape.twl"; +connectAttr "mgear_curveCns183GroupId.id" "spine_C0_crvShape.iog.og[0].gid"; +connectAttr "mgear_curveCns183Set.mwc" "spine_C0_crvShape.iog.og[0].gco"; +connectAttr "groupId366.id" "spine_C0_crvShape.iog.og[1].gid"; +connectAttr "tweakSet183.mwc" "spine_C0_crvShape.iog.og[1].gco"; +connectAttr "legBack_L0_root_st_profile1.o" "legBack_L0_root.st_profile"; +connectAttr "legBack_L0_root_sq_profile1.o" "legBack_L0_root.sq_profile"; +connectAttr "mgear_curveCns201.og[0]" "footBack_L0_crvShape.cr"; +connectAttr "tweak201.pl[0].cp[0]" "footBack_L0_crvShape.twl"; +connectAttr "mgear_curveCns201GroupId.id" "footBack_L0_crvShape.iog.og[0].gid"; +connectAttr "mgear_curveCns201Set.mwc" "footBack_L0_crvShape.iog.og[0].gco"; +connectAttr "groupId402.id" "footBack_L0_crvShape.iog.og[1].gid"; +connectAttr "tweakSet201.mwc" "footBack_L0_crvShape.iog.og[1].gco"; +connectAttr "mgear_curveCns202.og[0]" "footBack_L0_Shape1.cr"; +connectAttr "tweak202.pl[0].cp[0]" "footBack_L0_Shape1.twl"; +connectAttr "mgear_curveCns202GroupId.id" "footBack_L0_Shape1.iog.og[0].gid"; +connectAttr "mgear_curveCns202Set.mwc" "footBack_L0_Shape1.iog.og[0].gco"; +connectAttr "groupId404.id" "footBack_L0_Shape1.iog.og[1].gid"; +connectAttr "tweakSet202.mwc" "footBack_L0_Shape1.iog.og[1].gco"; +connectAttr "mgear_curveCns200.og[0]" "legBack_L0_crvShape1.cr"; +connectAttr "tweak200.pl[0].cp[0]" "legBack_L0_crvShape1.twl"; +connectAttr "mgear_curveCns200GroupId.id" "legBack_L0_crvShape1.iog.og[0].gid"; +connectAttr "mgear_curveCns200Set.mwc" "legBack_L0_crvShape1.iog.og[0].gco"; +connectAttr "groupId400.id" "legBack_L0_crvShape1.iog.og[1].gid"; +connectAttr "tweakSet200.mwc" "legBack_L0_crvShape1.iog.og[1].gco"; +connectAttr "legBack_R0_root_st_profile1.o" "legBack_R0_root.st_profile"; +connectAttr "legBack_R0_root_sq_profile1.o" "legBack_R0_root.sq_profile"; +connectAttr "mgear_curveCns204.og[0]" "footBack_R0_crvShape.cr"; +connectAttr "tweak204.pl[0].cp[0]" "footBack_R0_crvShape.twl"; +connectAttr "mgear_curveCns204GroupId.id" "footBack_R0_crvShape.iog.og[0].gid"; +connectAttr "mgear_curveCns204Set.mwc" "footBack_R0_crvShape.iog.og[0].gco"; +connectAttr "groupId408.id" "footBack_R0_crvShape.iog.og[1].gid"; +connectAttr "tweakSet204.mwc" "footBack_R0_crvShape.iog.og[1].gco"; +connectAttr "mgear_curveCns205.og[0]" "footBack_R0_Shape1.cr"; +connectAttr "tweak205.pl[0].cp[0]" "footBack_R0_Shape1.twl"; +connectAttr "mgear_curveCns205GroupId.id" "footBack_R0_Shape1.iog.og[0].gid"; +connectAttr "mgear_curveCns205Set.mwc" "footBack_R0_Shape1.iog.og[0].gco"; +connectAttr "groupId410.id" "footBack_R0_Shape1.iog.og[1].gid"; +connectAttr "tweakSet205.mwc" "footBack_R0_Shape1.iog.og[1].gco"; +connectAttr "mgear_curveCns203.og[0]" "legBack_R0_crvShape1.cr"; +connectAttr "tweak203.pl[0].cp[0]" "legBack_R0_crvShape1.twl"; +connectAttr "mgear_curveCns203GroupId.id" "legBack_R0_crvShape1.iog.og[0].gid"; +connectAttr "mgear_curveCns203Set.mwc" "legBack_R0_crvShape1.iog.og[0].gco"; +connectAttr "groupId406.id" "legBack_R0_crvShape1.iog.og[1].gid"; +connectAttr "tweakSet203.mwc" "legBack_R0_crvShape1.iog.og[1].gco"; +relationship "link" ":lightLinker1" ":initialShadingGroup.message" ":defaultLightSet.message"; +relationship "link" ":lightLinker1" ":initialParticleSE.message" ":defaultLightSet.message"; +relationship "shadowLink" ":lightLinker1" ":initialShadingGroup.message" ":defaultLightSet.message"; +relationship "shadowLink" ":lightLinker1" ":initialParticleSE.message" ":defaultLightSet.message"; +connectAttr "layerManager.dli[0]" "defaultLayer.id"; +connectAttr "renderLayerManager.rlmi[0]" "defaultRenderLayer.rlid"; +connectAttr "spine_C0_blade.bladeRollOffset" "unitConversion32.i"; +connectAttr "mgear_curveCns183GroupParts.og" "mgear_curveCns183.ip[0].ig"; +connectAttr "mgear_curveCns183GroupId.id" "mgear_curveCns183.ip[0].gi"; +connectAttr "spine_C0_root.wm" "mgear_curveCns183.inputs[0]"; +connectAttr "spine_C0_eff.wm" "mgear_curveCns183.inputs[1]"; +connectAttr "groupParts366.og" "tweak183.ip[0].ig"; +connectAttr "groupId366.id" "tweak183.ip[0].gi"; +connectAttr "mgear_curveCns183GroupId.msg" "mgear_curveCns183Set.gn" -na; +connectAttr "spine_C0_crvShape.iog.og[0]" "mgear_curveCns183Set.dsm" -na; +connectAttr "mgear_curveCns183.msg" "mgear_curveCns183Set.ub[0]"; +connectAttr "tweak183.og[0]" "mgear_curveCns183GroupParts.ig"; +connectAttr "mgear_curveCns183GroupId.id" "mgear_curveCns183GroupParts.gi"; +connectAttr "groupId366.msg" "tweakSet183.gn" -na; +connectAttr "spine_C0_crvShape.iog.og[1]" "tweakSet183.dsm" -na; +connectAttr "tweak183.msg" "tweakSet183.ub[0]"; +connectAttr "spine_C0_crvShapeOrig.ws" "groupParts366.ig"; +connectAttr "groupId366.id" "groupParts366.gi"; +connectAttr "neck_C0_blade.bladeRollOffset" "unitConversion33.i"; +connectAttr "mgear_curveCns184GroupParts.og" "mgear_curveCns184.ip[0].ig"; +connectAttr "mgear_curveCns184GroupId.id" "mgear_curveCns184.ip[0].gi"; +connectAttr "neck_C0_root.wm" "mgear_curveCns184.inputs[0]"; +connectAttr "neck_C0_tan0.wm" "mgear_curveCns184.inputs[1]"; +connectAttr "neck_C0_tan1.wm" "mgear_curveCns184.inputs[2]"; +connectAttr "neck_C0_neck.wm" "mgear_curveCns184.inputs[3]"; +connectAttr "groupParts368.og" "tweak184.ip[0].ig"; +connectAttr "groupId368.id" "tweak184.ip[0].gi"; +connectAttr "mgear_curveCns184GroupId.msg" "mgear_curveCns184Set.gn" -na; +connectAttr "neck_C0_neck_crvShape.iog.og[0]" "mgear_curveCns184Set.dsm" -na; +connectAttr "mgear_curveCns184.msg" "mgear_curveCns184Set.ub[0]"; +connectAttr "tweak184.og[0]" "mgear_curveCns184GroupParts.ig"; +connectAttr "mgear_curveCns184GroupId.id" "mgear_curveCns184GroupParts.gi"; +connectAttr "groupId368.msg" "tweakSet184.gn" -na; +connectAttr "neck_C0_neck_crvShape.iog.og[1]" "tweakSet184.dsm" -na; +connectAttr "tweak184.msg" "tweakSet184.ub[0]"; +connectAttr "neck_C0_neck_crvShapeOrig.ws" "groupParts368.ig"; +connectAttr "groupId368.id" "groupParts368.gi"; +connectAttr "mgear_curveCns185GroupParts.og" "mgear_curveCns185.ip[0].ig"; +connectAttr "mgear_curveCns185GroupId.id" "mgear_curveCns185.ip[0].gi"; +connectAttr "neck_C0_neck.wm" "mgear_curveCns185.inputs[0]"; +connectAttr "neck_C0_head.wm" "mgear_curveCns185.inputs[1]"; +connectAttr "neck_C0_eff.wm" "mgear_curveCns185.inputs[2]"; +connectAttr "groupParts370.og" "tweak185.ip[0].ig"; +connectAttr "groupId370.id" "tweak185.ip[0].gi"; +connectAttr "mgear_curveCns185GroupId.msg" "mgear_curveCns185Set.gn" -na; +connectAttr "neck_C0_head_crvShape.iog.og[0]" "mgear_curveCns185Set.dsm" -na; +connectAttr "mgear_curveCns185.msg" "mgear_curveCns185Set.ub[0]"; +connectAttr "tweak185.og[0]" "mgear_curveCns185GroupParts.ig"; +connectAttr "mgear_curveCns185GroupId.id" "mgear_curveCns185GroupParts.gi"; +connectAttr "groupId370.msg" "tweakSet185.gn" -na; +connectAttr "neck_C0_head_crvShape.iog.og[1]" "tweakSet185.dsm" -na; +connectAttr "tweak185.msg" "tweakSet185.ub[0]"; +connectAttr "neck_C0_head_crvShapeOrig.ws" "groupParts370.ig"; +connectAttr "groupId370.id" "groupParts370.gi"; +connectAttr "mgear_curveCns186GroupParts.og" "mgear_curveCns186.ip[0].ig"; +connectAttr "mgear_curveCns186GroupId.id" "mgear_curveCns186.ip[0].gi"; +connectAttr "mouth_C0_root.wm" "mgear_curveCns186.inputs[0]"; +connectAttr "mouth_C0_rotcenter.wm" "mgear_curveCns186.inputs[1]"; +connectAttr "groupParts372.og" "tweak186.ip[0].ig"; +connectAttr "groupId372.id" "tweak186.ip[0].gi"; +connectAttr "mgear_curveCns186GroupId.msg" "mgear_curveCns186Set.gn" -na; +connectAttr "|guide|global_C0_root|local_C0_root|body_C0_root|spine_C0_root|spine_C0_eff|neck_C0_root|neck_C0_neck|neck_C0_head|mouth_C0_root|mouth_C0_crv|mouth_C0_crvShape.iog.og[0]" "mgear_curveCns186Set.dsm" -na; -connectAttr "mgear_curveCns160.msg" "mgear_curveCns160Set.ub[0]"; -connectAttr "tweak160.og[0]" "mgear_curveCns160GroupParts.ig"; -connectAttr "mgear_curveCns160GroupId.id" "mgear_curveCns160GroupParts.gi"; -connectAttr "groupParts320.og" "tweak160.ip[0].ig"; -connectAttr "groupId320.id" "tweak160.ip[0].gi"; -connectAttr "groupId320.msg" "tweakSet160.gn" -na; -connectAttr "|guide|global_C0_root|local_C0_root|body_C0_root|spine_C0_root|spine_C0_eff|neck_C0_root|neck_C0_neck|neck_C0_head|mouth_C0_root|mouth_C0_rotcenter|mouth_C0_lipup|mouth_C0_crv|mouth_C0_crvShape.iog.og[1]" "tweakSet160.dsm" +connectAttr "mgear_curveCns186.msg" "mgear_curveCns186Set.ub[0]"; +connectAttr "tweak186.og[0]" "mgear_curveCns186GroupParts.ig"; +connectAttr "mgear_curveCns186GroupId.id" "mgear_curveCns186GroupParts.gi"; +connectAttr "groupId372.msg" "tweakSet186.gn" -na; +connectAttr "|guide|global_C0_root|local_C0_root|body_C0_root|spine_C0_root|spine_C0_eff|neck_C0_root|neck_C0_neck|neck_C0_head|mouth_C0_root|mouth_C0_crv|mouth_C0_crvShape.iog.og[1]" "tweakSet186.dsm" -na; -connectAttr "tweak160.msg" "tweakSet160.ub[0]"; -connectAttr "|guide|global_C0_root|local_C0_root|body_C0_root|spine_C0_root|spine_C0_eff|neck_C0_root|neck_C0_neck|neck_C0_head|mouth_C0_root|mouth_C0_rotcenter|mouth_C0_lipup|mouth_C0_crv|mouth_C0_crvShapeOrig.ws" "groupParts320.ig" - ; -connectAttr "groupId320.id" "groupParts320.gi"; -connectAttr "mgear_curveCns161GroupParts.og" "mgear_curveCns161.ip[0].ig"; -connectAttr "mgear_curveCns161GroupId.id" "mgear_curveCns161.ip[0].gi"; -connectAttr "mouth_C0_liplow.wm" "mgear_curveCns161.inputs[0]"; -connectAttr "mouth_C0_rotcenter.wm" "mgear_curveCns161.inputs[1]"; -connectAttr "mgear_curveCns161GroupId.msg" "mgear_curveCns161Set.gn" -na; -connectAttr "|guide|global_C0_root|local_C0_root|body_C0_root|spine_C0_root|spine_C0_eff|neck_C0_root|neck_C0_neck|neck_C0_head|mouth_C0_root|mouth_C0_rotcenter|mouth_C0_liplow|mouth_C0_crv|mouth_C0_crvShape.iog.og[0]" "mgear_curveCns161Set.dsm" +connectAttr "tweak186.msg" "tweakSet186.ub[0]"; +connectAttr "|guide|global_C0_root|local_C0_root|body_C0_root|spine_C0_root|spine_C0_eff|neck_C0_root|neck_C0_neck|neck_C0_head|mouth_C0_root|mouth_C0_crv|mouth_C0_crvShapeOrig.ws" "groupParts372.ig" + ; +connectAttr "groupId372.id" "groupParts372.gi"; +connectAttr "mgear_curveCns187GroupParts.og" "mgear_curveCns187.ip[0].ig"; +connectAttr "mgear_curveCns187GroupId.id" "mgear_curveCns187.ip[0].gi"; +connectAttr "mouth_C0_lipup.wm" "mgear_curveCns187.inputs[0]"; +connectAttr "mouth_C0_rotcenter.wm" "mgear_curveCns187.inputs[1]"; +connectAttr "groupParts374.og" "tweak187.ip[0].ig"; +connectAttr "groupId374.id" "tweak187.ip[0].gi"; +connectAttr "mgear_curveCns187GroupId.msg" "mgear_curveCns187Set.gn" -na; +connectAttr "|guide|global_C0_root|local_C0_root|body_C0_root|spine_C0_root|spine_C0_eff|neck_C0_root|neck_C0_neck|neck_C0_head|mouth_C0_root|mouth_C0_rotcenter|mouth_C0_lipup|mouth_C0_crv|mouth_C0_crvShape.iog.og[0]" "mgear_curveCns187Set.dsm" -na; -connectAttr "mgear_curveCns161.msg" "mgear_curveCns161Set.ub[0]"; -connectAttr "tweak161.og[0]" "mgear_curveCns161GroupParts.ig"; -connectAttr "mgear_curveCns161GroupId.id" "mgear_curveCns161GroupParts.gi"; -connectAttr "groupParts322.og" "tweak161.ip[0].ig"; -connectAttr "groupId322.id" "tweak161.ip[0].gi"; -connectAttr "groupId322.msg" "tweakSet161.gn" -na; -connectAttr "|guide|global_C0_root|local_C0_root|body_C0_root|spine_C0_root|spine_C0_eff|neck_C0_root|neck_C0_neck|neck_C0_head|mouth_C0_root|mouth_C0_rotcenter|mouth_C0_liplow|mouth_C0_crv|mouth_C0_crvShape.iog.og[1]" "tweakSet161.dsm" +connectAttr "mgear_curveCns187.msg" "mgear_curveCns187Set.ub[0]"; +connectAttr "tweak187.og[0]" "mgear_curveCns187GroupParts.ig"; +connectAttr "mgear_curveCns187GroupId.id" "mgear_curveCns187GroupParts.gi"; +connectAttr "groupId374.msg" "tweakSet187.gn" -na; +connectAttr "|guide|global_C0_root|local_C0_root|body_C0_root|spine_C0_root|spine_C0_eff|neck_C0_root|neck_C0_neck|neck_C0_head|mouth_C0_root|mouth_C0_rotcenter|mouth_C0_lipup|mouth_C0_crv|mouth_C0_crvShape.iog.og[1]" "tweakSet187.dsm" -na; -connectAttr "tweak161.msg" "tweakSet161.ub[0]"; -connectAttr "|guide|global_C0_root|local_C0_root|body_C0_root|spine_C0_root|spine_C0_eff|neck_C0_root|neck_C0_neck|neck_C0_head|mouth_C0_root|mouth_C0_rotcenter|mouth_C0_liplow|mouth_C0_crv|mouth_C0_crvShapeOrig.ws" "groupParts322.ig" - ; -connectAttr "groupId322.id" "groupParts322.gi"; -connectAttr "mgear_curveCns159GroupParts.og" "mgear_curveCns159.ip[0].ig"; -connectAttr "mgear_curveCns159GroupId.id" "mgear_curveCns159.ip[0].gi"; -connectAttr "mouth_C0_root.wm" "mgear_curveCns159.inputs[0]"; -connectAttr "mouth_C0_rotcenter.wm" "mgear_curveCns159.inputs[1]"; -connectAttr "mgear_curveCns159GroupId.msg" "mgear_curveCns159Set.gn" -na; -connectAttr "|guide|global_C0_root|local_C0_root|body_C0_root|spine_C0_root|spine_C0_eff|neck_C0_root|neck_C0_neck|neck_C0_head|mouth_C0_root|mouth_C0_crv|mouth_C0_crvShape.iog.og[0]" "mgear_curveCns159Set.dsm" +connectAttr "tweak187.msg" "tweakSet187.ub[0]"; +connectAttr "|guide|global_C0_root|local_C0_root|body_C0_root|spine_C0_root|spine_C0_eff|neck_C0_root|neck_C0_neck|neck_C0_head|mouth_C0_root|mouth_C0_rotcenter|mouth_C0_lipup|mouth_C0_crv|mouth_C0_crvShapeOrig.ws" "groupParts374.ig" + ; +connectAttr "groupId374.id" "groupParts374.gi"; +connectAttr "mgear_curveCns188GroupParts.og" "mgear_curveCns188.ip[0].ig"; +connectAttr "mgear_curveCns188GroupId.id" "mgear_curveCns188.ip[0].gi"; +connectAttr "mouth_C0_liplow.wm" "mgear_curveCns188.inputs[0]"; +connectAttr "mouth_C0_rotcenter.wm" "mgear_curveCns188.inputs[1]"; +connectAttr "groupParts376.og" "tweak188.ip[0].ig"; +connectAttr "groupId376.id" "tweak188.ip[0].gi"; +connectAttr "mgear_curveCns188GroupId.msg" "mgear_curveCns188Set.gn" -na; +connectAttr "|guide|global_C0_root|local_C0_root|body_C0_root|spine_C0_root|spine_C0_eff|neck_C0_root|neck_C0_neck|neck_C0_head|mouth_C0_root|mouth_C0_rotcenter|mouth_C0_liplow|mouth_C0_crv|mouth_C0_crvShape.iog.og[0]" "mgear_curveCns188Set.dsm" -na; -connectAttr "mgear_curveCns159.msg" "mgear_curveCns159Set.ub[0]"; -connectAttr "tweak159.og[0]" "mgear_curveCns159GroupParts.ig"; -connectAttr "mgear_curveCns159GroupId.id" "mgear_curveCns159GroupParts.gi"; -connectAttr "groupParts318.og" "tweak159.ip[0].ig"; -connectAttr "groupId318.id" "tweak159.ip[0].gi"; -connectAttr "groupId318.msg" "tweakSet159.gn" -na; -connectAttr "|guide|global_C0_root|local_C0_root|body_C0_root|spine_C0_root|spine_C0_eff|neck_C0_root|neck_C0_neck|neck_C0_head|mouth_C0_root|mouth_C0_crv|mouth_C0_crvShape.iog.og[1]" "tweakSet159.dsm" +connectAttr "mgear_curveCns188.msg" "mgear_curveCns188Set.ub[0]"; +connectAttr "tweak188.og[0]" "mgear_curveCns188GroupParts.ig"; +connectAttr "mgear_curveCns188GroupId.id" "mgear_curveCns188GroupParts.gi"; +connectAttr "groupId376.msg" "tweakSet188.gn" -na; +connectAttr "|guide|global_C0_root|local_C0_root|body_C0_root|spine_C0_root|spine_C0_eff|neck_C0_root|neck_C0_neck|neck_C0_head|mouth_C0_root|mouth_C0_rotcenter|mouth_C0_liplow|mouth_C0_crv|mouth_C0_crvShape.iog.og[1]" "tweakSet188.dsm" -na; -connectAttr "tweak159.msg" "tweakSet159.ub[0]"; -connectAttr "|guide|global_C0_root|local_C0_root|body_C0_root|spine_C0_root|spine_C0_eff|neck_C0_root|neck_C0_neck|neck_C0_head|mouth_C0_root|mouth_C0_crv|mouth_C0_crvShapeOrig.ws" "groupParts318.ig" - ; -connectAttr "groupId318.id" "groupParts318.gi"; -connectAttr "mgear_curveCns162GroupParts.og" "mgear_curveCns162.ip[0].ig"; -connectAttr "mgear_curveCns162GroupId.id" "mgear_curveCns162.ip[0].gi"; -connectAttr "mouth_C0_root.wm" "mgear_curveCns162.inputs[0]"; -connectAttr "mouth_C0_jaw.wm" "mgear_curveCns162.inputs[1]"; -connectAttr "mgear_curveCns162GroupId.msg" "mgear_curveCns162Set.gn" -na; -connectAttr "mouth_C0_crv7Shape.iog.og[0]" "mgear_curveCns162Set.dsm" -na; -connectAttr "mgear_curveCns162.msg" "mgear_curveCns162Set.ub[0]"; -connectAttr "tweak162.og[0]" "mgear_curveCns162GroupParts.ig"; -connectAttr "mgear_curveCns162GroupId.id" "mgear_curveCns162GroupParts.gi"; -connectAttr "groupParts324.og" "tweak162.ip[0].ig"; -connectAttr "groupId324.id" "tweak162.ip[0].gi"; -connectAttr "groupId324.msg" "tweakSet162.gn" -na; -connectAttr "mouth_C0_crv7Shape.iog.og[1]" "tweakSet162.dsm" -na; -connectAttr "tweak162.msg" "tweakSet162.ub[0]"; -connectAttr "mouth_C0_crv7ShapeOrig.ws" "groupParts324.ig"; -connectAttr "groupId324.id" "groupParts324.gi"; -connectAttr "mgear_curveCns163GroupParts.og" "mgear_curveCns163.ip[0].ig"; -connectAttr "mgear_curveCns163GroupId.id" "mgear_curveCns163.ip[0].gi"; -connectAttr "eye_L0_root.wm" "mgear_curveCns163.inputs[0]"; -connectAttr "eye_L0_look.wm" "mgear_curveCns163.inputs[1]"; -connectAttr "mgear_curveCns163GroupId.msg" "mgear_curveCns163Set.gn" -na; -connectAttr "eye_L0_crvShape.iog.og[0]" "mgear_curveCns163Set.dsm" -na; -connectAttr "mgear_curveCns163.msg" "mgear_curveCns163Set.ub[0]"; -connectAttr "tweak163.og[0]" "mgear_curveCns163GroupParts.ig"; -connectAttr "mgear_curveCns163GroupId.id" "mgear_curveCns163GroupParts.gi"; -connectAttr "groupParts326.og" "tweak163.ip[0].ig"; -connectAttr "groupId326.id" "tweak163.ip[0].gi"; -connectAttr "groupId326.msg" "tweakSet163.gn" -na; -connectAttr "eye_L0_crvShape.iog.og[1]" "tweakSet163.dsm" -na; -connectAttr "tweak163.msg" "tweakSet163.ub[0]"; -connectAttr "eye_L0_crvShapeOrig.ws" "groupParts326.ig"; -connectAttr "groupId326.id" "groupParts326.gi"; -connectAttr "mgear_curveCns164GroupParts.og" "mgear_curveCns164.ip[0].ig"; -connectAttr "mgear_curveCns164GroupId.id" "mgear_curveCns164.ip[0].gi"; -connectAttr "eye_R0_root.wm" "mgear_curveCns164.inputs[0]"; -connectAttr "eye_R0_look.wm" "mgear_curveCns164.inputs[1]"; -connectAttr "mgear_curveCns164GroupId.msg" "mgear_curveCns164Set.gn" -na; -connectAttr "eye_R0_crvShape.iog.og[0]" "mgear_curveCns164Set.dsm" -na; -connectAttr "mgear_curveCns164.msg" "mgear_curveCns164Set.ub[0]"; -connectAttr "tweak164.og[0]" "mgear_curveCns164GroupParts.ig"; -connectAttr "mgear_curveCns164GroupId.id" "mgear_curveCns164GroupParts.gi"; -connectAttr "groupParts328.og" "tweak164.ip[0].ig"; -connectAttr "groupId328.id" "tweak164.ip[0].gi"; -connectAttr "groupId328.msg" "tweakSet164.gn" -na; -connectAttr "eye_R0_crvShape.iog.og[1]" "tweakSet164.dsm" -na; -connectAttr "tweak164.msg" "tweakSet164.ub[0]"; -connectAttr "eye_R0_crvShapeOrig.ws" "groupParts328.ig"; -connectAttr "groupId328.id" "groupParts328.gi"; -connectAttr "mgear_curveCns158GroupParts.og" "mgear_curveCns158.ip[0].ig"; -connectAttr "mgear_curveCns158GroupId.id" "mgear_curveCns158.ip[0].gi"; -connectAttr "neck_C0_neck.wm" "mgear_curveCns158.inputs[0]"; -connectAttr "neck_C0_head.wm" "mgear_curveCns158.inputs[1]"; -connectAttr "neck_C0_eff.wm" "mgear_curveCns158.inputs[2]"; -connectAttr "mgear_curveCns158GroupId.msg" "mgear_curveCns158Set.gn" -na; -connectAttr "neck_C0_head_crvShape.iog.og[0]" "mgear_curveCns158Set.dsm" -na; -connectAttr "mgear_curveCns158.msg" "mgear_curveCns158Set.ub[0]"; -connectAttr "tweak158.og[0]" "mgear_curveCns158GroupParts.ig"; -connectAttr "mgear_curveCns158GroupId.id" "mgear_curveCns158GroupParts.gi"; -connectAttr "groupParts316.og" "tweak158.ip[0].ig"; -connectAttr "groupId316.id" "tweak158.ip[0].gi"; -connectAttr "groupId316.msg" "tweakSet158.gn" -na; -connectAttr "neck_C0_head_crvShape.iog.og[1]" "tweakSet158.dsm" -na; -connectAttr "tweak158.msg" "tweakSet158.ub[0]"; -connectAttr "neck_C0_head_crvShapeOrig.ws" "groupParts316.ig"; -connectAttr "groupId316.id" "groupParts316.gi"; -connectAttr "neck_C0_blade.bladeRollOffset" "unitConversion29.i"; -connectAttr "mgear_curveCns157GroupParts.og" "mgear_curveCns157.ip[0].ig"; -connectAttr "mgear_curveCns157GroupId.id" "mgear_curveCns157.ip[0].gi"; -connectAttr "neck_C0_root.wm" "mgear_curveCns157.inputs[0]"; -connectAttr "neck_C0_tan0.wm" "mgear_curveCns157.inputs[1]"; -connectAttr "neck_C0_tan1.wm" "mgear_curveCns157.inputs[2]"; -connectAttr "neck_C0_neck.wm" "mgear_curveCns157.inputs[3]"; -connectAttr "mgear_curveCns157GroupId.msg" "mgear_curveCns157Set.gn" -na; -connectAttr "neck_C0_neck_crvShape.iog.og[0]" "mgear_curveCns157Set.dsm" -na; -connectAttr "mgear_curveCns157.msg" "mgear_curveCns157Set.ub[0]"; -connectAttr "tweak157.og[0]" "mgear_curveCns157GroupParts.ig"; -connectAttr "mgear_curveCns157GroupId.id" "mgear_curveCns157GroupParts.gi"; -connectAttr "groupParts314.og" "tweak157.ip[0].ig"; -connectAttr "groupId314.id" "tweak157.ip[0].gi"; -connectAttr "groupId314.msg" "tweakSet157.gn" -na; -connectAttr "neck_C0_neck_crvShape.iog.og[1]" "tweakSet157.dsm" -na; -connectAttr "tweak157.msg" "tweakSet157.ub[0]"; -connectAttr "neck_C0_neck_crvShapeOrig.ws" "groupParts314.ig"; -connectAttr "groupId314.id" "groupParts314.gi"; -connectAttr "mgear_curveCns167GroupParts.og" "mgear_curveCns167.ip[0].ig"; -connectAttr "mgear_curveCns167GroupId.id" "mgear_curveCns167.ip[0].gi"; -connectAttr "footFront_L0_root.wm" "mgear_curveCns167.inputs[0]"; -connectAttr "footFront_L0_0_loc.wm" "mgear_curveCns167.inputs[1]"; -connectAttr "footFront_L0_1_loc.wm" "mgear_curveCns167.inputs[2]"; -connectAttr "mgear_curveCns167GroupId.msg" "mgear_curveCns167Set.gn" -na; -connectAttr "footFront_L0_crvShape.iog.og[0]" "mgear_curveCns167Set.dsm" -na; -connectAttr "mgear_curveCns167.msg" "mgear_curveCns167Set.ub[0]"; -connectAttr "tweak167.og[0]" "mgear_curveCns167GroupParts.ig"; -connectAttr "mgear_curveCns167GroupId.id" "mgear_curveCns167GroupParts.gi"; -connectAttr "groupParts334.og" "tweak167.ip[0].ig"; -connectAttr "groupId334.id" "tweak167.ip[0].gi"; -connectAttr "groupId334.msg" "tweakSet167.gn" -na; -connectAttr "footFront_L0_crvShape.iog.og[1]" "tweakSet167.dsm" -na; -connectAttr "tweak167.msg" "tweakSet167.ub[0]"; -connectAttr "footFront_L0_crvShapeOrig.ws" "groupParts334.ig"; -connectAttr "groupId334.id" "groupParts334.gi"; -connectAttr "mgear_curveCns168GroupParts.og" "mgear_curveCns168.ip[0].ig"; -connectAttr "mgear_curveCns168GroupId.id" "mgear_curveCns168.ip[0].gi"; -connectAttr "footFront_L0_root.wm" "mgear_curveCns168.inputs[0]"; -connectAttr "footFront_L0_heel.wm" "mgear_curveCns168.inputs[1]"; -connectAttr "footFront_L0_outpivot.wm" "mgear_curveCns168.inputs[2]"; -connectAttr "footFront_L0_heel.wm" "mgear_curveCns168.inputs[3]"; -connectAttr "footFront_L0_inpivot.wm" "mgear_curveCns168.inputs[4]"; -connectAttr "mgear_curveCns168GroupId.msg" "mgear_curveCns168Set.gn" -na; -connectAttr "footFront_L0_Shape1.iog.og[0]" "mgear_curveCns168Set.dsm" -na; -connectAttr "mgear_curveCns168.msg" "mgear_curveCns168Set.ub[0]"; -connectAttr "tweak168.og[0]" "mgear_curveCns168GroupParts.ig"; -connectAttr "mgear_curveCns168GroupId.id" "mgear_curveCns168GroupParts.gi"; -connectAttr "groupParts336.og" "tweak168.ip[0].ig"; -connectAttr "groupId336.id" "tweak168.ip[0].gi"; -connectAttr "groupId336.msg" "tweakSet168.gn" -na; -connectAttr "footFront_L0_Shape1.iog.og[1]" "tweakSet168.dsm" -na; -connectAttr "tweak168.msg" "tweakSet168.ub[0]"; -connectAttr "footFront_L0_Shape1Orig1.ws" "groupParts336.ig"; -connectAttr "groupId336.id" "groupParts336.gi"; -connectAttr "mgear_curveCns166GroupParts.og" "mgear_curveCns166.ip[0].ig"; -connectAttr "mgear_curveCns166GroupId.id" "mgear_curveCns166.ip[0].gi"; -connectAttr "legFront_L0_root.wm" "mgear_curveCns166.inputs[0]"; -connectAttr "legFront_L0_knee.wm" "mgear_curveCns166.inputs[1]"; -connectAttr "legFront_L0_ankle.wm" "mgear_curveCns166.inputs[2]"; -connectAttr "legFront_L0_foot.wm" "mgear_curveCns166.inputs[3]"; -connectAttr "legFront_L0_eff.wm" "mgear_curveCns166.inputs[4]"; -connectAttr "mgear_curveCns166GroupId.msg" "mgear_curveCns166Set.gn" -na; -connectAttr "legFront_L0_crvShape1.iog.og[0]" "mgear_curveCns166Set.dsm" -na; -connectAttr "mgear_curveCns166.msg" "mgear_curveCns166Set.ub[0]"; -connectAttr "tweak166.og[0]" "mgear_curveCns166GroupParts.ig"; -connectAttr "mgear_curveCns166GroupId.id" "mgear_curveCns166GroupParts.gi"; -connectAttr "groupParts332.og" "tweak166.ip[0].ig"; -connectAttr "groupId332.id" "tweak166.ip[0].gi"; -connectAttr "groupId332.msg" "tweakSet166.gn" -na; -connectAttr "legFront_L0_crvShape1.iog.og[1]" "tweakSet166.dsm" -na; -connectAttr "tweak166.msg" "tweakSet166.ub[0]"; -connectAttr "legFront_L0_crvShape1Orig1.ws" "groupParts332.ig"; -connectAttr "groupId332.id" "groupParts332.gi"; -connectAttr "shoulder_L0_blade.bladeRollOffset" "unitConversion30.i"; -connectAttr "mgear_curveCns165GroupParts.og" "mgear_curveCns165.ip[0].ig"; -connectAttr "mgear_curveCns165GroupId.id" "mgear_curveCns165.ip[0].gi"; -connectAttr "shoulder_L0_root.wm" "mgear_curveCns165.inputs[0]"; -connectAttr "shoulder_L0_0_loc.wm" "mgear_curveCns165.inputs[1]"; -connectAttr "mgear_curveCns165GroupId.msg" "mgear_curveCns165Set.gn" -na; -connectAttr "shoulder_L0_crvShape.iog.og[0]" "mgear_curveCns165Set.dsm" -na; -connectAttr "mgear_curveCns165.msg" "mgear_curveCns165Set.ub[0]"; -connectAttr "tweak165.og[0]" "mgear_curveCns165GroupParts.ig"; -connectAttr "mgear_curveCns165GroupId.id" "mgear_curveCns165GroupParts.gi"; -connectAttr "groupParts330.og" "tweak165.ip[0].ig"; -connectAttr "groupId330.id" "tweak165.ip[0].gi"; -connectAttr "groupId330.msg" "tweakSet165.gn" -na; -connectAttr "shoulder_L0_crvShape.iog.og[1]" "tweakSet165.dsm" -na; -connectAttr "tweak165.msg" "tweakSet165.ub[0]"; -connectAttr "shoulder_L0_crvShapeOrig.ws" "groupParts330.ig"; -connectAttr "groupId330.id" "groupParts330.gi"; -connectAttr "mgear_curveCns181GroupParts.og" "mgear_curveCns181.ip[0].ig"; -connectAttr "mgear_curveCns181GroupId.id" "mgear_curveCns181.ip[0].gi"; -connectAttr "footFront_R0_root.wm" "mgear_curveCns181.inputs[0]"; -connectAttr "footFront_R0_0_loc.wm" "mgear_curveCns181.inputs[1]"; -connectAttr "footFront_R0_1_loc.wm" "mgear_curveCns181.inputs[2]"; -connectAttr "mgear_curveCns181GroupId.msg" "mgear_curveCns181Set.gn" -na; -connectAttr "footFront_R0_crvShape.iog.og[0]" "mgear_curveCns181Set.dsm" -na; -connectAttr "mgear_curveCns181.msg" "mgear_curveCns181Set.ub[0]"; -connectAttr "tweak181.og[0]" "mgear_curveCns181GroupParts.ig"; -connectAttr "mgear_curveCns181GroupId.id" "mgear_curveCns181GroupParts.gi"; -connectAttr "groupParts362.og" "tweak181.ip[0].ig"; -connectAttr "groupId362.id" "tweak181.ip[0].gi"; -connectAttr "groupId362.msg" "tweakSet181.gn" -na; -connectAttr "footFront_R0_crvShape.iog.og[1]" "tweakSet181.dsm" -na; -connectAttr "tweak181.msg" "tweakSet181.ub[0]"; -connectAttr "footFront_R0_crvShapeOrig.ws" "groupParts362.ig"; -connectAttr "groupId362.id" "groupParts362.gi"; -connectAttr "mgear_curveCns182GroupParts.og" "mgear_curveCns182.ip[0].ig"; -connectAttr "mgear_curveCns182GroupId.id" "mgear_curveCns182.ip[0].gi"; -connectAttr "footFront_R0_root.wm" "mgear_curveCns182.inputs[0]"; -connectAttr "footFront_R0_heel.wm" "mgear_curveCns182.inputs[1]"; -connectAttr "footFront_R0_outpivot.wm" "mgear_curveCns182.inputs[2]"; -connectAttr "footFront_R0_heel.wm" "mgear_curveCns182.inputs[3]"; -connectAttr "footFront_R0_inpivot.wm" "mgear_curveCns182.inputs[4]"; -connectAttr "mgear_curveCns182GroupId.msg" "mgear_curveCns182Set.gn" -na; -connectAttr "footFront_R0_Shape1.iog.og[0]" "mgear_curveCns182Set.dsm" -na; -connectAttr "mgear_curveCns182.msg" "mgear_curveCns182Set.ub[0]"; -connectAttr "tweak182.og[0]" "mgear_curveCns182GroupParts.ig"; -connectAttr "mgear_curveCns182GroupId.id" "mgear_curveCns182GroupParts.gi"; -connectAttr "groupParts364.og" "tweak182.ip[0].ig"; -connectAttr "groupId364.id" "tweak182.ip[0].gi"; -connectAttr "groupId364.msg" "tweakSet182.gn" -na; -connectAttr "footFront_R0_Shape1.iog.og[1]" "tweakSet182.dsm" -na; -connectAttr "tweak182.msg" "tweakSet182.ub[0]"; -connectAttr "footFront_R0_Shape1Orig.ws" "groupParts364.ig"; -connectAttr "groupId364.id" "groupParts364.gi"; -connectAttr "mgear_curveCns180GroupParts.og" "mgear_curveCns180.ip[0].ig"; -connectAttr "mgear_curveCns180GroupId.id" "mgear_curveCns180.ip[0].gi"; -connectAttr "legFront_R0_root.wm" "mgear_curveCns180.inputs[0]"; -connectAttr "legFront_R0_knee.wm" "mgear_curveCns180.inputs[1]"; -connectAttr "legFront_R0_ankle.wm" "mgear_curveCns180.inputs[2]"; -connectAttr "legFront_R0_foot.wm" "mgear_curveCns180.inputs[3]"; -connectAttr "legFront_R0_eff.wm" "mgear_curveCns180.inputs[4]"; -connectAttr "mgear_curveCns180GroupId.msg" "mgear_curveCns180Set.gn" -na; -connectAttr "legFront_R0_crvShape1.iog.og[0]" "mgear_curveCns180Set.dsm" -na; -connectAttr "mgear_curveCns180.msg" "mgear_curveCns180Set.ub[0]"; -connectAttr "tweak180.og[0]" "mgear_curveCns180GroupParts.ig"; -connectAttr "mgear_curveCns180GroupId.id" "mgear_curveCns180GroupParts.gi"; -connectAttr "groupParts360.og" "tweak180.ip[0].ig"; -connectAttr "groupId360.id" "tweak180.ip[0].gi"; -connectAttr "groupId360.msg" "tweakSet180.gn" -na; -connectAttr "legFront_R0_crvShape1.iog.og[1]" "tweakSet180.dsm" -na; -connectAttr "tweak180.msg" "tweakSet180.ub[0]"; -connectAttr "legFront_R0_crvShape1Orig.ws" "groupParts360.ig"; -connectAttr "groupId360.id" "groupParts360.gi"; -connectAttr "shoulder_R0_blade.bladeRollOffset" "unitConversion31.i"; -connectAttr "mgear_curveCns179GroupParts.og" "mgear_curveCns179.ip[0].ig"; -connectAttr "mgear_curveCns179GroupId.id" "mgear_curveCns179.ip[0].gi"; -connectAttr "shoulder_R0_root.wm" "mgear_curveCns179.inputs[0]"; -connectAttr "shoulder_R0_0_loc.wm" "mgear_curveCns179.inputs[1]"; -connectAttr "mgear_curveCns179GroupId.msg" "mgear_curveCns179Set.gn" -na; -connectAttr "shoulder_R0_crvShape.iog.og[0]" "mgear_curveCns179Set.dsm" -na; -connectAttr "mgear_curveCns179.msg" "mgear_curveCns179Set.ub[0]"; -connectAttr "tweak179.og[0]" "mgear_curveCns179GroupParts.ig"; -connectAttr "mgear_curveCns179GroupId.id" "mgear_curveCns179GroupParts.gi"; -connectAttr "groupParts358.og" "tweak179.ip[0].ig"; -connectAttr "groupId358.id" "tweak179.ip[0].gi"; -connectAttr "groupId358.msg" "tweakSet179.gn" -na; -connectAttr "shoulder_R0_crvShape.iog.og[1]" "tweakSet179.dsm" -na; -connectAttr "tweak179.msg" "tweakSet179.ub[0]"; -connectAttr "shoulder_R0_crvShapeOrig.ws" "groupParts358.ig"; -connectAttr "groupId358.id" "groupParts358.gi"; -connectAttr "spine_C0_blade.bladeRollOffset" "unitConversion28.i"; -connectAttr "mgear_curveCns156GroupParts.og" "mgear_curveCns156.ip[0].ig"; -connectAttr "mgear_curveCns156GroupId.id" "mgear_curveCns156.ip[0].gi"; -connectAttr "spine_C0_root.wm" "mgear_curveCns156.inputs[0]"; -connectAttr "spine_C0_eff.wm" "mgear_curveCns156.inputs[1]"; -connectAttr "mgear_curveCns156GroupId.msg" "mgear_curveCns156Set.gn" -na; -connectAttr "spine_C0_crvShape.iog.og[0]" "mgear_curveCns156Set.dsm" -na; -connectAttr "mgear_curveCns156.msg" "mgear_curveCns156Set.ub[0]"; -connectAttr "tweak156.og[0]" "mgear_curveCns156GroupParts.ig"; -connectAttr "mgear_curveCns156GroupId.id" "mgear_curveCns156GroupParts.gi"; -connectAttr "groupParts312.og" "tweak156.ip[0].ig"; -connectAttr "groupId312.id" "tweak156.ip[0].gi"; -connectAttr "groupId312.msg" "tweakSet156.gn" -na; -connectAttr "spine_C0_crvShape.iog.og[1]" "tweakSet156.dsm" -na; -connectAttr "tweak156.msg" "tweakSet156.ub[0]"; -connectAttr "spine_C0_crvShapeOrig.ws" "groupParts312.ig"; -connectAttr "groupId312.id" "groupParts312.gi"; -connectAttr "mgear_curveCns174GroupParts.og" "mgear_curveCns174.ip[0].ig"; -connectAttr "mgear_curveCns174GroupId.id" "mgear_curveCns174.ip[0].gi"; -connectAttr "footBack_L0_root.wm" "mgear_curveCns174.inputs[0]"; -connectAttr "footBack_L0_0_loc.wm" "mgear_curveCns174.inputs[1]"; -connectAttr "footBack_L0_1_loc.wm" "mgear_curveCns174.inputs[2]"; -connectAttr "mgear_curveCns174GroupId.msg" "mgear_curveCns174Set.gn" -na; -connectAttr "footBack_L0_crvShape.iog.og[0]" "mgear_curveCns174Set.dsm" -na; -connectAttr "mgear_curveCns174.msg" "mgear_curveCns174Set.ub[0]"; -connectAttr "tweak174.og[0]" "mgear_curveCns174GroupParts.ig"; -connectAttr "mgear_curveCns174GroupId.id" "mgear_curveCns174GroupParts.gi"; -connectAttr "groupParts348.og" "tweak174.ip[0].ig"; -connectAttr "groupId348.id" "tweak174.ip[0].gi"; -connectAttr "groupId348.msg" "tweakSet174.gn" -na; -connectAttr "footBack_L0_crvShape.iog.og[1]" "tweakSet174.dsm" -na; -connectAttr "tweak174.msg" "tweakSet174.ub[0]"; -connectAttr "footBack_L0_crvShapeOrig.ws" "groupParts348.ig"; -connectAttr "groupId348.id" "groupParts348.gi"; -connectAttr "mgear_curveCns175GroupParts.og" "mgear_curveCns175.ip[0].ig"; -connectAttr "mgear_curveCns175GroupId.id" "mgear_curveCns175.ip[0].gi"; -connectAttr "footBack_L0_root.wm" "mgear_curveCns175.inputs[0]"; -connectAttr "footBack_L0_heel.wm" "mgear_curveCns175.inputs[1]"; -connectAttr "footBack_L0_outpivot.wm" "mgear_curveCns175.inputs[2]"; -connectAttr "footBack_L0_heel.wm" "mgear_curveCns175.inputs[3]"; -connectAttr "footBack_L0_inpivot.wm" "mgear_curveCns175.inputs[4]"; -connectAttr "mgear_curveCns175GroupId.msg" "mgear_curveCns175Set.gn" -na; -connectAttr "footBack_L0_Shape1.iog.og[0]" "mgear_curveCns175Set.dsm" -na; -connectAttr "mgear_curveCns175.msg" "mgear_curveCns175Set.ub[0]"; -connectAttr "tweak175.og[0]" "mgear_curveCns175GroupParts.ig"; -connectAttr "mgear_curveCns175GroupId.id" "mgear_curveCns175GroupParts.gi"; -connectAttr "groupParts350.og" "tweak175.ip[0].ig"; -connectAttr "groupId350.id" "tweak175.ip[0].gi"; -connectAttr "groupId350.msg" "tweakSet175.gn" -na; -connectAttr "footBack_L0_Shape1.iog.og[1]" "tweakSet175.dsm" -na; -connectAttr "tweak175.msg" "tweakSet175.ub[0]"; -connectAttr "footBack_L0_Shape1Orig1.ws" "groupParts350.ig"; -connectAttr "groupId350.id" "groupParts350.gi"; -connectAttr "mgear_curveCns173GroupParts.og" "mgear_curveCns173.ip[0].ig"; -connectAttr "mgear_curveCns173GroupId.id" "mgear_curveCns173.ip[0].gi"; -connectAttr "legBack_L0_root.wm" "mgear_curveCns173.inputs[0]"; -connectAttr "legBack_L0_knee.wm" "mgear_curveCns173.inputs[1]"; -connectAttr "legBack_L0_ankle.wm" "mgear_curveCns173.inputs[2]"; -connectAttr "legBack_L0_foot.wm" "mgear_curveCns173.inputs[3]"; -connectAttr "legBack_L0_eff.wm" "mgear_curveCns173.inputs[4]"; -connectAttr "mgear_curveCns173GroupId.msg" "mgear_curveCns173Set.gn" -na; -connectAttr "legBack_L0_crvShape1.iog.og[0]" "mgear_curveCns173Set.dsm" -na; -connectAttr "mgear_curveCns173.msg" "mgear_curveCns173Set.ub[0]"; -connectAttr "tweak173.og[0]" "mgear_curveCns173GroupParts.ig"; -connectAttr "mgear_curveCns173GroupId.id" "mgear_curveCns173GroupParts.gi"; -connectAttr "groupParts346.og" "tweak173.ip[0].ig"; -connectAttr "groupId346.id" "tweak173.ip[0].gi"; -connectAttr "groupId346.msg" "tweakSet173.gn" -na; -connectAttr "legBack_L0_crvShape1.iog.og[1]" "tweakSet173.dsm" -na; -connectAttr "tweak173.msg" "tweakSet173.ub[0]"; -connectAttr "legBack_L0_crvShape1Orig1.ws" "groupParts346.ig"; -connectAttr "groupId346.id" "groupParts346.gi"; -connectAttr "mgear_curveCns177GroupParts.og" "mgear_curveCns177.ip[0].ig"; -connectAttr "mgear_curveCns177GroupId.id" "mgear_curveCns177.ip[0].gi"; -connectAttr "footBack_R0_root.wm" "mgear_curveCns177.inputs[0]"; -connectAttr "footBack_R0_0_loc.wm" "mgear_curveCns177.inputs[1]"; -connectAttr "footBack_R0_1_loc.wm" "mgear_curveCns177.inputs[2]"; -connectAttr "mgear_curveCns177GroupId.msg" "mgear_curveCns177Set.gn" -na; -connectAttr "footBack_R0_crvShape.iog.og[0]" "mgear_curveCns177Set.dsm" -na; -connectAttr "mgear_curveCns177.msg" "mgear_curveCns177Set.ub[0]"; -connectAttr "tweak177.og[0]" "mgear_curveCns177GroupParts.ig"; -connectAttr "mgear_curveCns177GroupId.id" "mgear_curveCns177GroupParts.gi"; -connectAttr "groupParts354.og" "tweak177.ip[0].ig"; -connectAttr "groupId354.id" "tweak177.ip[0].gi"; -connectAttr "groupId354.msg" "tweakSet177.gn" -na; -connectAttr "footBack_R0_crvShape.iog.og[1]" "tweakSet177.dsm" -na; -connectAttr "tweak177.msg" "tweakSet177.ub[0]"; -connectAttr "footBack_R0_crvShapeOrig.ws" "groupParts354.ig"; -connectAttr "groupId354.id" "groupParts354.gi"; -connectAttr "mgear_curveCns178GroupParts.og" "mgear_curveCns178.ip[0].ig"; -connectAttr "mgear_curveCns178GroupId.id" "mgear_curveCns178.ip[0].gi"; -connectAttr "footBack_R0_root.wm" "mgear_curveCns178.inputs[0]"; -connectAttr "footBack_R0_heel.wm" "mgear_curveCns178.inputs[1]"; -connectAttr "footBack_R0_outpivot.wm" "mgear_curveCns178.inputs[2]"; -connectAttr "footBack_R0_heel.wm" "mgear_curveCns178.inputs[3]"; -connectAttr "footBack_R0_inpivot.wm" "mgear_curveCns178.inputs[4]"; -connectAttr "mgear_curveCns178GroupId.msg" "mgear_curveCns178Set.gn" -na; -connectAttr "footBack_R0_Shape1.iog.og[0]" "mgear_curveCns178Set.dsm" -na; -connectAttr "mgear_curveCns178.msg" "mgear_curveCns178Set.ub[0]"; -connectAttr "tweak178.og[0]" "mgear_curveCns178GroupParts.ig"; -connectAttr "mgear_curveCns178GroupId.id" "mgear_curveCns178GroupParts.gi"; -connectAttr "groupParts356.og" "tweak178.ip[0].ig"; -connectAttr "groupId356.id" "tweak178.ip[0].gi"; -connectAttr "groupId356.msg" "tweakSet178.gn" -na; -connectAttr "footBack_R0_Shape1.iog.og[1]" "tweakSet178.dsm" -na; -connectAttr "tweak178.msg" "tweakSet178.ub[0]"; -connectAttr "footBack_R0_Shape1Orig.ws" "groupParts356.ig"; -connectAttr "groupId356.id" "groupParts356.gi"; -connectAttr "mgear_curveCns176GroupParts.og" "mgear_curveCns176.ip[0].ig"; -connectAttr "mgear_curveCns176GroupId.id" "mgear_curveCns176.ip[0].gi"; -connectAttr "legBack_R0_root.wm" "mgear_curveCns176.inputs[0]"; -connectAttr "legBack_R0_knee.wm" "mgear_curveCns176.inputs[1]"; -connectAttr "legBack_R0_ankle.wm" "mgear_curveCns176.inputs[2]"; -connectAttr "legBack_R0_foot.wm" "mgear_curveCns176.inputs[3]"; -connectAttr "legBack_R0_eff.wm" "mgear_curveCns176.inputs[4]"; -connectAttr "mgear_curveCns176GroupId.msg" "mgear_curveCns176Set.gn" -na; -connectAttr "legBack_R0_crvShape1.iog.og[0]" "mgear_curveCns176Set.dsm" -na; -connectAttr "mgear_curveCns176.msg" "mgear_curveCns176Set.ub[0]"; -connectAttr "tweak176.og[0]" "mgear_curveCns176GroupParts.ig"; -connectAttr "mgear_curveCns176GroupId.id" "mgear_curveCns176GroupParts.gi"; -connectAttr "groupParts352.og" "tweak176.ip[0].ig"; -connectAttr "groupId352.id" "tweak176.ip[0].gi"; -connectAttr "groupId352.msg" "tweakSet176.gn" -na; -connectAttr "legBack_R0_crvShape1.iog.og[1]" "tweakSet176.dsm" -na; -connectAttr "tweak176.msg" "tweakSet176.ub[0]"; -connectAttr "legBack_R0_crvShape1Orig.ws" "groupParts352.ig"; -connectAttr "groupId352.id" "groupParts352.gi"; +connectAttr "tweak188.msg" "tweakSet188.ub[0]"; +connectAttr "|guide|global_C0_root|local_C0_root|body_C0_root|spine_C0_root|spine_C0_eff|neck_C0_root|neck_C0_neck|neck_C0_head|mouth_C0_root|mouth_C0_rotcenter|mouth_C0_liplow|mouth_C0_crv|mouth_C0_crvShapeOrig.ws" "groupParts376.ig" + ; +connectAttr "groupId376.id" "groupParts376.gi"; +connectAttr "mgear_curveCns189GroupParts.og" "mgear_curveCns189.ip[0].ig"; +connectAttr "mgear_curveCns189GroupId.id" "mgear_curveCns189.ip[0].gi"; +connectAttr "mouth_C0_root.wm" "mgear_curveCns189.inputs[0]"; +connectAttr "mouth_C0_jaw.wm" "mgear_curveCns189.inputs[1]"; +connectAttr "groupParts378.og" "tweak189.ip[0].ig"; +connectAttr "groupId378.id" "tweak189.ip[0].gi"; +connectAttr "mgear_curveCns189GroupId.msg" "mgear_curveCns189Set.gn" -na; +connectAttr "mouth_C0_crv8Shape.iog.og[0]" "mgear_curveCns189Set.dsm" -na; +connectAttr "mgear_curveCns189.msg" "mgear_curveCns189Set.ub[0]"; +connectAttr "tweak189.og[0]" "mgear_curveCns189GroupParts.ig"; +connectAttr "mgear_curveCns189GroupId.id" "mgear_curveCns189GroupParts.gi"; +connectAttr "groupId378.msg" "tweakSet189.gn" -na; +connectAttr "mouth_C0_crv8Shape.iog.og[1]" "tweakSet189.dsm" -na; +connectAttr "tweak189.msg" "tweakSet189.ub[0]"; +connectAttr "mouth_C0_crv8ShapeOrig.ws" "groupParts378.ig"; +connectAttr "groupId378.id" "groupParts378.gi"; +connectAttr "mgear_curveCns190GroupParts.og" "mgear_curveCns190.ip[0].ig"; +connectAttr "mgear_curveCns190GroupId.id" "mgear_curveCns190.ip[0].gi"; +connectAttr "eye_L0_root.wm" "mgear_curveCns190.inputs[0]"; +connectAttr "eye_L0_look.wm" "mgear_curveCns190.inputs[1]"; +connectAttr "groupParts380.og" "tweak190.ip[0].ig"; +connectAttr "groupId380.id" "tweak190.ip[0].gi"; +connectAttr "mgear_curveCns190GroupId.msg" "mgear_curveCns190Set.gn" -na; +connectAttr "eye_L0_crvShape.iog.og[0]" "mgear_curveCns190Set.dsm" -na; +connectAttr "mgear_curveCns190.msg" "mgear_curveCns190Set.ub[0]"; +connectAttr "tweak190.og[0]" "mgear_curveCns190GroupParts.ig"; +connectAttr "mgear_curveCns190GroupId.id" "mgear_curveCns190GroupParts.gi"; +connectAttr "groupId380.msg" "tweakSet190.gn" -na; +connectAttr "eye_L0_crvShape.iog.og[1]" "tweakSet190.dsm" -na; +connectAttr "tweak190.msg" "tweakSet190.ub[0]"; +connectAttr "eye_L0_crvShapeOrig.ws" "groupParts380.ig"; +connectAttr "groupId380.id" "groupParts380.gi"; +connectAttr "mgear_curveCns191GroupParts.og" "mgear_curveCns191.ip[0].ig"; +connectAttr "mgear_curveCns191GroupId.id" "mgear_curveCns191.ip[0].gi"; +connectAttr "eye_R0_root.wm" "mgear_curveCns191.inputs[0]"; +connectAttr "eye_R0_look.wm" "mgear_curveCns191.inputs[1]"; +connectAttr "groupParts382.og" "tweak191.ip[0].ig"; +connectAttr "groupId382.id" "tweak191.ip[0].gi"; +connectAttr "mgear_curveCns191GroupId.msg" "mgear_curveCns191Set.gn" -na; +connectAttr "eye_R0_crvShape.iog.og[0]" "mgear_curveCns191Set.dsm" -na; +connectAttr "mgear_curveCns191.msg" "mgear_curveCns191Set.ub[0]"; +connectAttr "tweak191.og[0]" "mgear_curveCns191GroupParts.ig"; +connectAttr "mgear_curveCns191GroupId.id" "mgear_curveCns191GroupParts.gi"; +connectAttr "groupId382.msg" "tweakSet191.gn" -na; +connectAttr "eye_R0_crvShape.iog.og[1]" "tweakSet191.dsm" -na; +connectAttr "tweak191.msg" "tweakSet191.ub[0]"; +connectAttr "eye_R0_crvShapeOrig.ws" "groupParts382.ig"; +connectAttr "groupId382.id" "groupParts382.gi"; +connectAttr "shoulder_L0_blade.bladeRollOffset" "unitConversion34.i"; +connectAttr "mgear_curveCns192GroupParts.og" "mgear_curveCns192.ip[0].ig"; +connectAttr "mgear_curveCns192GroupId.id" "mgear_curveCns192.ip[0].gi"; +connectAttr "shoulder_L0_root.wm" "mgear_curveCns192.inputs[0]"; +connectAttr "shoulder_L0_0_loc.wm" "mgear_curveCns192.inputs[1]"; +connectAttr "groupParts384.og" "tweak192.ip[0].ig"; +connectAttr "groupId384.id" "tweak192.ip[0].gi"; +connectAttr "mgear_curveCns192GroupId.msg" "mgear_curveCns192Set.gn" -na; +connectAttr "shoulder_L0_crvShape.iog.og[0]" "mgear_curveCns192Set.dsm" -na; +connectAttr "mgear_curveCns192.msg" "mgear_curveCns192Set.ub[0]"; +connectAttr "tweak192.og[0]" "mgear_curveCns192GroupParts.ig"; +connectAttr "mgear_curveCns192GroupId.id" "mgear_curveCns192GroupParts.gi"; +connectAttr "groupId384.msg" "tweakSet192.gn" -na; +connectAttr "shoulder_L0_crvShape.iog.og[1]" "tweakSet192.dsm" -na; +connectAttr "tweak192.msg" "tweakSet192.ub[0]"; +connectAttr "shoulder_L0_crvShapeOrig.ws" "groupParts384.ig"; +connectAttr "groupId384.id" "groupParts384.gi"; +connectAttr "mgear_curveCns193GroupParts.og" "mgear_curveCns193.ip[0].ig"; +connectAttr "mgear_curveCns193GroupId.id" "mgear_curveCns193.ip[0].gi"; +connectAttr "legFront_L0_root.wm" "mgear_curveCns193.inputs[0]"; +connectAttr "legFront_L0_knee.wm" "mgear_curveCns193.inputs[1]"; +connectAttr "legFront_L0_ankle.wm" "mgear_curveCns193.inputs[2]"; +connectAttr "legFront_L0_foot.wm" "mgear_curveCns193.inputs[3]"; +connectAttr "legFront_L0_eff.wm" "mgear_curveCns193.inputs[4]"; +connectAttr "groupParts386.og" "tweak193.ip[0].ig"; +connectAttr "groupId386.id" "tweak193.ip[0].gi"; +connectAttr "mgear_curveCns193GroupId.msg" "mgear_curveCns193Set.gn" -na; +connectAttr "legFront_L0_crvShape1.iog.og[0]" "mgear_curveCns193Set.dsm" -na; +connectAttr "mgear_curveCns193.msg" "mgear_curveCns193Set.ub[0]"; +connectAttr "tweak193.og[0]" "mgear_curveCns193GroupParts.ig"; +connectAttr "mgear_curveCns193GroupId.id" "mgear_curveCns193GroupParts.gi"; +connectAttr "groupId386.msg" "tweakSet193.gn" -na; +connectAttr "legFront_L0_crvShape1.iog.og[1]" "tweakSet193.dsm" -na; +connectAttr "tweak193.msg" "tweakSet193.ub[0]"; +connectAttr "legFront_L0_crvShape1Orig.ws" "groupParts386.ig"; +connectAttr "groupId386.id" "groupParts386.gi"; +connectAttr "mgear_curveCns194GroupParts.og" "mgear_curveCns194.ip[0].ig"; +connectAttr "mgear_curveCns194GroupId.id" "mgear_curveCns194.ip[0].gi"; +connectAttr "footFront_L0_root.wm" "mgear_curveCns194.inputs[0]"; +connectAttr "footFront_L0_0_loc.wm" "mgear_curveCns194.inputs[1]"; +connectAttr "footFront_L0_1_loc.wm" "mgear_curveCns194.inputs[2]"; +connectAttr "groupParts388.og" "tweak194.ip[0].ig"; +connectAttr "groupId388.id" "tweak194.ip[0].gi"; +connectAttr "mgear_curveCns194GroupId.msg" "mgear_curveCns194Set.gn" -na; +connectAttr "footFront_L0_crvShape.iog.og[0]" "mgear_curveCns194Set.dsm" -na; +connectAttr "mgear_curveCns194.msg" "mgear_curveCns194Set.ub[0]"; +connectAttr "tweak194.og[0]" "mgear_curveCns194GroupParts.ig"; +connectAttr "mgear_curveCns194GroupId.id" "mgear_curveCns194GroupParts.gi"; +connectAttr "groupId388.msg" "tweakSet194.gn" -na; +connectAttr "footFront_L0_crvShape.iog.og[1]" "tweakSet194.dsm" -na; +connectAttr "tweak194.msg" "tweakSet194.ub[0]"; +connectAttr "footFront_L0_crvShapeOrig.ws" "groupParts388.ig"; +connectAttr "groupId388.id" "groupParts388.gi"; +connectAttr "mgear_curveCns195GroupParts.og" "mgear_curveCns195.ip[0].ig"; +connectAttr "mgear_curveCns195GroupId.id" "mgear_curveCns195.ip[0].gi"; +connectAttr "footFront_L0_root.wm" "mgear_curveCns195.inputs[0]"; +connectAttr "footFront_L0_heel.wm" "mgear_curveCns195.inputs[1]"; +connectAttr "footFront_L0_outpivot.wm" "mgear_curveCns195.inputs[2]"; +connectAttr "footFront_L0_heel.wm" "mgear_curveCns195.inputs[3]"; +connectAttr "footFront_L0_inpivot.wm" "mgear_curveCns195.inputs[4]"; +connectAttr "groupParts390.og" "tweak195.ip[0].ig"; +connectAttr "groupId390.id" "tweak195.ip[0].gi"; +connectAttr "mgear_curveCns195GroupId.msg" "mgear_curveCns195Set.gn" -na; +connectAttr "footFront_L0_Shape1.iog.og[0]" "mgear_curveCns195Set.dsm" -na; +connectAttr "mgear_curveCns195.msg" "mgear_curveCns195Set.ub[0]"; +connectAttr "tweak195.og[0]" "mgear_curveCns195GroupParts.ig"; +connectAttr "mgear_curveCns195GroupId.id" "mgear_curveCns195GroupParts.gi"; +connectAttr "groupId390.msg" "tweakSet195.gn" -na; +connectAttr "footFront_L0_Shape1.iog.og[1]" "tweakSet195.dsm" -na; +connectAttr "tweak195.msg" "tweakSet195.ub[0]"; +connectAttr "footFront_L0_Shape1Orig.ws" "groupParts390.ig"; +connectAttr "groupId390.id" "groupParts390.gi"; +connectAttr "shoulder_R0_blade.bladeRollOffset" "unitConversion35.i"; +connectAttr "mgear_curveCns196GroupParts.og" "mgear_curveCns196.ip[0].ig"; +connectAttr "mgear_curveCns196GroupId.id" "mgear_curveCns196.ip[0].gi"; +connectAttr "shoulder_R0_root.wm" "mgear_curveCns196.inputs[0]"; +connectAttr "shoulder_R0_0_loc.wm" "mgear_curveCns196.inputs[1]"; +connectAttr "groupParts392.og" "tweak196.ip[0].ig"; +connectAttr "groupId392.id" "tweak196.ip[0].gi"; +connectAttr "mgear_curveCns196GroupId.msg" "mgear_curveCns196Set.gn" -na; +connectAttr "shoulder_R0_crvShape.iog.og[0]" "mgear_curveCns196Set.dsm" -na; +connectAttr "mgear_curveCns196.msg" "mgear_curveCns196Set.ub[0]"; +connectAttr "tweak196.og[0]" "mgear_curveCns196GroupParts.ig"; +connectAttr "mgear_curveCns196GroupId.id" "mgear_curveCns196GroupParts.gi"; +connectAttr "groupId392.msg" "tweakSet196.gn" -na; +connectAttr "shoulder_R0_crvShape.iog.og[1]" "tweakSet196.dsm" -na; +connectAttr "tweak196.msg" "tweakSet196.ub[0]"; +connectAttr "shoulder_R0_crvShapeOrig.ws" "groupParts392.ig"; +connectAttr "groupId392.id" "groupParts392.gi"; +connectAttr "mgear_curveCns197GroupParts.og" "mgear_curveCns197.ip[0].ig"; +connectAttr "mgear_curveCns197GroupId.id" "mgear_curveCns197.ip[0].gi"; +connectAttr "legFront_R0_root.wm" "mgear_curveCns197.inputs[0]"; +connectAttr "legFront_R0_knee.wm" "mgear_curveCns197.inputs[1]"; +connectAttr "legFront_R0_ankle.wm" "mgear_curveCns197.inputs[2]"; +connectAttr "legFront_R0_foot.wm" "mgear_curveCns197.inputs[3]"; +connectAttr "legFront_R0_eff.wm" "mgear_curveCns197.inputs[4]"; +connectAttr "groupParts394.og" "tweak197.ip[0].ig"; +connectAttr "groupId394.id" "tweak197.ip[0].gi"; +connectAttr "mgear_curveCns197GroupId.msg" "mgear_curveCns197Set.gn" -na; +connectAttr "legFront_R0_crvShape1.iog.og[0]" "mgear_curveCns197Set.dsm" -na; +connectAttr "mgear_curveCns197.msg" "mgear_curveCns197Set.ub[0]"; +connectAttr "tweak197.og[0]" "mgear_curveCns197GroupParts.ig"; +connectAttr "mgear_curveCns197GroupId.id" "mgear_curveCns197GroupParts.gi"; +connectAttr "groupId394.msg" "tweakSet197.gn" -na; +connectAttr "legFront_R0_crvShape1.iog.og[1]" "tweakSet197.dsm" -na; +connectAttr "tweak197.msg" "tweakSet197.ub[0]"; +connectAttr "legFront_R0_crvShape1Orig.ws" "groupParts394.ig"; +connectAttr "groupId394.id" "groupParts394.gi"; +connectAttr "mgear_curveCns198GroupParts.og" "mgear_curveCns198.ip[0].ig"; +connectAttr "mgear_curveCns198GroupId.id" "mgear_curveCns198.ip[0].gi"; +connectAttr "footFront_R0_root.wm" "mgear_curveCns198.inputs[0]"; +connectAttr "footFront_R0_0_loc.wm" "mgear_curveCns198.inputs[1]"; +connectAttr "footFront_R0_1_loc.wm" "mgear_curveCns198.inputs[2]"; +connectAttr "groupParts396.og" "tweak198.ip[0].ig"; +connectAttr "groupId396.id" "tweak198.ip[0].gi"; +connectAttr "mgear_curveCns198GroupId.msg" "mgear_curveCns198Set.gn" -na; +connectAttr "footFront_R0_crvShape.iog.og[0]" "mgear_curveCns198Set.dsm" -na; +connectAttr "mgear_curveCns198.msg" "mgear_curveCns198Set.ub[0]"; +connectAttr "tweak198.og[0]" "mgear_curveCns198GroupParts.ig"; +connectAttr "mgear_curveCns198GroupId.id" "mgear_curveCns198GroupParts.gi"; +connectAttr "groupId396.msg" "tweakSet198.gn" -na; +connectAttr "footFront_R0_crvShape.iog.og[1]" "tweakSet198.dsm" -na; +connectAttr "tweak198.msg" "tweakSet198.ub[0]"; +connectAttr "footFront_R0_crvShapeOrig.ws" "groupParts396.ig"; +connectAttr "groupId396.id" "groupParts396.gi"; +connectAttr "mgear_curveCns199GroupParts.og" "mgear_curveCns199.ip[0].ig"; +connectAttr "mgear_curveCns199GroupId.id" "mgear_curveCns199.ip[0].gi"; +connectAttr "footFront_R0_root.wm" "mgear_curveCns199.inputs[0]"; +connectAttr "footFront_R0_heel.wm" "mgear_curveCns199.inputs[1]"; +connectAttr "footFront_R0_outpivot.wm" "mgear_curveCns199.inputs[2]"; +connectAttr "footFront_R0_heel.wm" "mgear_curveCns199.inputs[3]"; +connectAttr "footFront_R0_inpivot.wm" "mgear_curveCns199.inputs[4]"; +connectAttr "groupParts398.og" "tweak199.ip[0].ig"; +connectAttr "groupId398.id" "tweak199.ip[0].gi"; +connectAttr "mgear_curveCns199GroupId.msg" "mgear_curveCns199Set.gn" -na; +connectAttr "footFront_R0_Shape1.iog.og[0]" "mgear_curveCns199Set.dsm" -na; +connectAttr "mgear_curveCns199.msg" "mgear_curveCns199Set.ub[0]"; +connectAttr "tweak199.og[0]" "mgear_curveCns199GroupParts.ig"; +connectAttr "mgear_curveCns199GroupId.id" "mgear_curveCns199GroupParts.gi"; +connectAttr "groupId398.msg" "tweakSet199.gn" -na; +connectAttr "footFront_R0_Shape1.iog.og[1]" "tweakSet199.dsm" -na; +connectAttr "tweak199.msg" "tweakSet199.ub[0]"; +connectAttr "footFront_R0_Shape1Orig.ws" "groupParts398.ig"; +connectAttr "groupId398.id" "groupParts398.gi"; +connectAttr "mgear_curveCns200GroupParts.og" "mgear_curveCns200.ip[0].ig"; +connectAttr "mgear_curveCns200GroupId.id" "mgear_curveCns200.ip[0].gi"; +connectAttr "legBack_L0_root.wm" "mgear_curveCns200.inputs[0]"; +connectAttr "legBack_L0_knee.wm" "mgear_curveCns200.inputs[1]"; +connectAttr "legBack_L0_ankle.wm" "mgear_curveCns200.inputs[2]"; +connectAttr "legBack_L0_foot.wm" "mgear_curveCns200.inputs[3]"; +connectAttr "legBack_L0_eff.wm" "mgear_curveCns200.inputs[4]"; +connectAttr "groupParts400.og" "tweak200.ip[0].ig"; +connectAttr "groupId400.id" "tweak200.ip[0].gi"; +connectAttr "mgear_curveCns200GroupId.msg" "mgear_curveCns200Set.gn" -na; +connectAttr "legBack_L0_crvShape1.iog.og[0]" "mgear_curveCns200Set.dsm" -na; +connectAttr "mgear_curveCns200.msg" "mgear_curveCns200Set.ub[0]"; +connectAttr "tweak200.og[0]" "mgear_curveCns200GroupParts.ig"; +connectAttr "mgear_curveCns200GroupId.id" "mgear_curveCns200GroupParts.gi"; +connectAttr "groupId400.msg" "tweakSet200.gn" -na; +connectAttr "legBack_L0_crvShape1.iog.og[1]" "tweakSet200.dsm" -na; +connectAttr "tweak200.msg" "tweakSet200.ub[0]"; +connectAttr "legBack_L0_crvShape1Orig.ws" "groupParts400.ig"; +connectAttr "groupId400.id" "groupParts400.gi"; +connectAttr "mgear_curveCns201GroupParts.og" "mgear_curveCns201.ip[0].ig"; +connectAttr "mgear_curveCns201GroupId.id" "mgear_curveCns201.ip[0].gi"; +connectAttr "footBack_L0_root.wm" "mgear_curveCns201.inputs[0]"; +connectAttr "footBack_L0_0_loc.wm" "mgear_curveCns201.inputs[1]"; +connectAttr "footBack_L0_1_loc.wm" "mgear_curveCns201.inputs[2]"; +connectAttr "groupParts402.og" "tweak201.ip[0].ig"; +connectAttr "groupId402.id" "tweak201.ip[0].gi"; +connectAttr "mgear_curveCns201GroupId.msg" "mgear_curveCns201Set.gn" -na; +connectAttr "footBack_L0_crvShape.iog.og[0]" "mgear_curveCns201Set.dsm" -na; +connectAttr "mgear_curveCns201.msg" "mgear_curveCns201Set.ub[0]"; +connectAttr "tweak201.og[0]" "mgear_curveCns201GroupParts.ig"; +connectAttr "mgear_curveCns201GroupId.id" "mgear_curveCns201GroupParts.gi"; +connectAttr "groupId402.msg" "tweakSet201.gn" -na; +connectAttr "footBack_L0_crvShape.iog.og[1]" "tweakSet201.dsm" -na; +connectAttr "tweak201.msg" "tweakSet201.ub[0]"; +connectAttr "footBack_L0_crvShapeOrig.ws" "groupParts402.ig"; +connectAttr "groupId402.id" "groupParts402.gi"; +connectAttr "mgear_curveCns202GroupParts.og" "mgear_curveCns202.ip[0].ig"; +connectAttr "mgear_curveCns202GroupId.id" "mgear_curveCns202.ip[0].gi"; +connectAttr "footBack_L0_root.wm" "mgear_curveCns202.inputs[0]"; +connectAttr "footBack_L0_heel.wm" "mgear_curveCns202.inputs[1]"; +connectAttr "footBack_L0_outpivot.wm" "mgear_curveCns202.inputs[2]"; +connectAttr "footBack_L0_heel.wm" "mgear_curveCns202.inputs[3]"; +connectAttr "footBack_L0_inpivot.wm" "mgear_curveCns202.inputs[4]"; +connectAttr "groupParts404.og" "tweak202.ip[0].ig"; +connectAttr "groupId404.id" "tweak202.ip[0].gi"; +connectAttr "mgear_curveCns202GroupId.msg" "mgear_curveCns202Set.gn" -na; +connectAttr "footBack_L0_Shape1.iog.og[0]" "mgear_curveCns202Set.dsm" -na; +connectAttr "mgear_curveCns202.msg" "mgear_curveCns202Set.ub[0]"; +connectAttr "tweak202.og[0]" "mgear_curveCns202GroupParts.ig"; +connectAttr "mgear_curveCns202GroupId.id" "mgear_curveCns202GroupParts.gi"; +connectAttr "groupId404.msg" "tweakSet202.gn" -na; +connectAttr "footBack_L0_Shape1.iog.og[1]" "tweakSet202.dsm" -na; +connectAttr "tweak202.msg" "tweakSet202.ub[0]"; +connectAttr "footBack_L0_Shape1Orig.ws" "groupParts404.ig"; +connectAttr "groupId404.id" "groupParts404.gi"; +connectAttr "mgear_curveCns203GroupParts.og" "mgear_curveCns203.ip[0].ig"; +connectAttr "mgear_curveCns203GroupId.id" "mgear_curveCns203.ip[0].gi"; +connectAttr "legBack_R0_root.wm" "mgear_curveCns203.inputs[0]"; +connectAttr "legBack_R0_knee.wm" "mgear_curveCns203.inputs[1]"; +connectAttr "legBack_R0_ankle.wm" "mgear_curveCns203.inputs[2]"; +connectAttr "legBack_R0_foot.wm" "mgear_curveCns203.inputs[3]"; +connectAttr "legBack_R0_eff.wm" "mgear_curveCns203.inputs[4]"; +connectAttr "groupParts406.og" "tweak203.ip[0].ig"; +connectAttr "groupId406.id" "tweak203.ip[0].gi"; +connectAttr "mgear_curveCns203GroupId.msg" "mgear_curveCns203Set.gn" -na; +connectAttr "legBack_R0_crvShape1.iog.og[0]" "mgear_curveCns203Set.dsm" -na; +connectAttr "mgear_curveCns203.msg" "mgear_curveCns203Set.ub[0]"; +connectAttr "tweak203.og[0]" "mgear_curveCns203GroupParts.ig"; +connectAttr "mgear_curveCns203GroupId.id" "mgear_curveCns203GroupParts.gi"; +connectAttr "groupId406.msg" "tweakSet203.gn" -na; +connectAttr "legBack_R0_crvShape1.iog.og[1]" "tweakSet203.dsm" -na; +connectAttr "tweak203.msg" "tweakSet203.ub[0]"; +connectAttr "legBack_R0_crvShape1Orig.ws" "groupParts406.ig"; +connectAttr "groupId406.id" "groupParts406.gi"; +connectAttr "mgear_curveCns204GroupParts.og" "mgear_curveCns204.ip[0].ig"; +connectAttr "mgear_curveCns204GroupId.id" "mgear_curveCns204.ip[0].gi"; +connectAttr "footBack_R0_root.wm" "mgear_curveCns204.inputs[0]"; +connectAttr "footBack_R0_0_loc.wm" "mgear_curveCns204.inputs[1]"; +connectAttr "footBack_R0_1_loc.wm" "mgear_curveCns204.inputs[2]"; +connectAttr "groupParts408.og" "tweak204.ip[0].ig"; +connectAttr "groupId408.id" "tweak204.ip[0].gi"; +connectAttr "mgear_curveCns204GroupId.msg" "mgear_curveCns204Set.gn" -na; +connectAttr "footBack_R0_crvShape.iog.og[0]" "mgear_curveCns204Set.dsm" -na; +connectAttr "mgear_curveCns204.msg" "mgear_curveCns204Set.ub[0]"; +connectAttr "tweak204.og[0]" "mgear_curveCns204GroupParts.ig"; +connectAttr "mgear_curveCns204GroupId.id" "mgear_curveCns204GroupParts.gi"; +connectAttr "groupId408.msg" "tweakSet204.gn" -na; +connectAttr "footBack_R0_crvShape.iog.og[1]" "tweakSet204.dsm" -na; +connectAttr "tweak204.msg" "tweakSet204.ub[0]"; +connectAttr "footBack_R0_crvShapeOrig.ws" "groupParts408.ig"; +connectAttr "groupId408.id" "groupParts408.gi"; +connectAttr "mgear_curveCns205GroupParts.og" "mgear_curveCns205.ip[0].ig"; +connectAttr "mgear_curveCns205GroupId.id" "mgear_curveCns205.ip[0].gi"; +connectAttr "footBack_R0_root.wm" "mgear_curveCns205.inputs[0]"; +connectAttr "footBack_R0_heel.wm" "mgear_curveCns205.inputs[1]"; +connectAttr "footBack_R0_outpivot.wm" "mgear_curveCns205.inputs[2]"; +connectAttr "footBack_R0_heel.wm" "mgear_curveCns205.inputs[3]"; +connectAttr "footBack_R0_inpivot.wm" "mgear_curveCns205.inputs[4]"; +connectAttr "groupParts410.og" "tweak205.ip[0].ig"; +connectAttr "groupId410.id" "tweak205.ip[0].gi"; +connectAttr "mgear_curveCns205GroupId.msg" "mgear_curveCns205Set.gn" -na; +connectAttr "footBack_R0_Shape1.iog.og[0]" "mgear_curveCns205Set.dsm" -na; +connectAttr "mgear_curveCns205.msg" "mgear_curveCns205Set.ub[0]"; +connectAttr "tweak205.og[0]" "mgear_curveCns205GroupParts.ig"; +connectAttr "mgear_curveCns205GroupId.id" "mgear_curveCns205GroupParts.gi"; +connectAttr "groupId410.msg" "tweakSet205.gn" -na; +connectAttr "footBack_R0_Shape1.iog.og[1]" "tweakSet205.dsm" -na; +connectAttr "tweak205.msg" "tweakSet205.ub[0]"; +connectAttr "footBack_R0_Shape1Orig.ws" "groupParts410.ig"; +connectAttr "groupId410.id" "groupParts410.gi"; +connectAttr "defaultRenderLayer.msg" ":defaultRenderingList1.r" -na; // End of quadruped.ma From 34b026f4dc7add3c74f2138462188c2db06b5a76 Mon Sep 17 00:00:00 2001 From: miquelcampos Date: Wed, 6 Dec 2017 13:23:22 +0900 Subject: [PATCH 134/134] Docs: update for 2.3.0 --- docs/source/conf.py | 11 ++-- docs/source/generated/mgear.maya.applyop.rst | 5 +- .../source/generated/mgear.maya.attribute.rst | 16 +++++- docs/source/generated/mgear.maya.curve.rst | 5 +- docs/source/generated/mgear.maya.dag.rst | 5 +- docs/source/generated/mgear.maya.fcurve.rst | 4 +- docs/source/generated/mgear.maya.icon.rst | 4 +- docs/source/generated/mgear.maya.log.rst | 4 +- .../generated/mgear.maya.meshNavigation.rst | 4 +- docs/source/generated/mgear.maya.node.rst | 9 ++- .../source/generated/mgear.maya.primitive.rst | 4 +- docs/source/generated/mgear.maya.rst | 5 +- .../mgear.maya.shifter.component.guide.rst | 8 +-- .../mgear.maya.shifter.component.rst | 5 +- .../generated/mgear.maya.shifter.gui.rst | 5 +- .../generated/mgear.maya.shifter.guide.rst | 14 ++++- docs/source/generated/mgear.maya.shifter.rst | 14 +++-- docs/source/generated/mgear.maya.skin.rst | 6 +- docs/source/generated/mgear.maya.synoptic.rst | 9 ++- .../generated/mgear.maya.synoptic.utils.rst | 27 ++++++++- .../generated/mgear.maya.synoptic.widgets.rst | 46 +++++++++++++++- .../source/generated/mgear.maya.transform.rst | 4 +- docs/source/generated/mgear.maya.utils.rst | 9 ++- docs/source/generated/mgear.maya.vector.rst | 4 +- docs/source/generated/mgear.string.rst | 4 +- .../mgear/maya/rigbits/channelWrangler.rst | 6 ++ docs/source/releaseLog.rst | 55 +++++++++++++++---- docs/source/shifterModules.rst | 2 +- docs/source/shifterUserDocumentation.rst | 2 +- docs/source/solvers.rst | 2 +- docs/source/synopticUserDocumentation.rst | 2 +- docs/source/tools.rst | 2 +- docs/source/videoTutorials.rst | 10 +--- 33 files changed, 226 insertions(+), 86 deletions(-) create mode 100644 docs/source/mgear/maya/rigbits/channelWrangler.rst diff --git a/docs/source/conf.py b/docs/source/conf.py index 7f7eb11..ce5a2d6 100644 --- a/docs/source/conf.py +++ b/docs/source/conf.py @@ -19,8 +19,8 @@ # add these directories to sys.path here. If the directory is relative to the # documentation root, use os.path.abspath to make it absolute, like shown here. # sys.path.insert(0, os.path.abspath('.')) -sys.path.insert(0, os.path.abspath('C:\\datawork\\repo\\mgear\\scripts')) - +# sys.path.insert(0, os.path.abspath('C:\\datawork\\repo\\mgear\\scripts')) +sys.path.insert(0, os.path.abspath('../')) # -- General configuration ------------------------------------------------ # If your documentation needs a minimal Sphinx version, state it here. @@ -29,7 +29,7 @@ # Add any Sphinx extension module names here, as strings. They can be # extensions coming with Sphinx (named 'sphinx.ext.*') or your custom # ones. -extensions = ['sphinx.ext.autodoc', 'sphinxcontrib.napoleon', 'sphinx.ext.autosummary'] +extensions = ['sphinx.ext.autodoc', 'sphinxcontrib.napoleon', 'sphinx.ext.autosummary', 'sphinx.ext.changelog_links'] # Add any paths that contain templates here, relative to this directory. templates_path = ['_templates'] @@ -55,9 +55,9 @@ # built documents. # # The short X.Y version. -version = u'2.2' +version = u'2.3' # The full version, including alpha/beta/rc tags. -release = u'2.2.0' +release = u'2.3.0' # The language for content autogenerated by Sphinx. Refer to documentation # for a list of supported languages. @@ -289,5 +289,6 @@ autosummary_generate = True # autodoc_default_flags = ['special-members'] autoclass_content = "both" +github_issues_url = 'https://github.com/miquelcampos/mgear/issues/' # exclude_patterns = ['mgear/maya/*'] diff --git a/docs/source/generated/mgear.maya.applyop.rst b/docs/source/generated/mgear.maya.applyop.rst index 62eabc1..e8a52e5 100644 --- a/docs/source/generated/mgear.maya.applyop.rst +++ b/docs/source/generated/mgear.maya.applyop.rst @@ -1,5 +1,5 @@ -mgear.maya.applyop -================== +mgear\.maya\.applyop +==================== .. automodule:: mgear.maya.applyop @@ -10,6 +10,7 @@ mgear.maya.applyop .. autosummary:: aimCns + curvecns_op gear_curvecns_op gear_curveslide2_op gear_ikfk2bone_op diff --git a/docs/source/generated/mgear.maya.attribute.rst b/docs/source/generated/mgear.maya.attribute.rst index 166d798..dac940a 100644 --- a/docs/source/generated/mgear.maya.attribute.rst +++ b/docs/source/generated/mgear.maya.attribute.rst @@ -1,5 +1,5 @@ -mgear.maya.attribute -==================== +mgear\.maya\.attribute +====================== .. automodule:: mgear.maya.attribute @@ -13,10 +13,22 @@ mgear.maya.attribute addColorAttribute addEnumAttribute addFCurve + addProxyAttribute + connectSet + getSelectedChannels + getSelectedObjectChannels + get_default_value lockAttribute + moveChannel + reset_SRT + reset_selected_channels_value setInvertMirror setKeyableAttributes + setNotKeyableAttributes setRotOrder + set_default_value + smart_reset + unlockAttribute diff --git a/docs/source/generated/mgear.maya.curve.rst b/docs/source/generated/mgear.maya.curve.rst index d714ae3..4175676 100644 --- a/docs/source/generated/mgear.maya.curve.rst +++ b/docs/source/generated/mgear.maya.curve.rst @@ -1,5 +1,5 @@ -mgear.maya.curve -================ +mgear\.maya\.curve +================== .. automodule:: mgear.maya.curve @@ -12,6 +12,7 @@ mgear.maya.curve addCnsCurve addCurve createCurveFromCurve + createCurveFromOrderedEdges createCuveFromEdges findLenghtFromParam getCurveParamAtPosition diff --git a/docs/source/generated/mgear.maya.dag.rst b/docs/source/generated/mgear.maya.dag.rst index 21c726c..11a49a6 100644 --- a/docs/source/generated/mgear.maya.dag.rst +++ b/docs/source/generated/mgear.maya.dag.rst @@ -1,5 +1,5 @@ -mgear.maya.dag -============== +mgear\.maya\.dag +================ .. automodule:: mgear.maya.dag @@ -13,6 +13,7 @@ mgear.maya.dag findChildren findChildrenPartial findComponentChildren + findComponentChildren2 getShapes getTopParent diff --git a/docs/source/generated/mgear.maya.fcurve.rst b/docs/source/generated/mgear.maya.fcurve.rst index a295283..87be5ab 100644 --- a/docs/source/generated/mgear.maya.fcurve.rst +++ b/docs/source/generated/mgear.maya.fcurve.rst @@ -1,5 +1,5 @@ -mgear.maya.fcurve -================= +mgear\.maya\.fcurve +=================== .. automodule:: mgear.maya.fcurve diff --git a/docs/source/generated/mgear.maya.icon.rst b/docs/source/generated/mgear.maya.icon.rst index e621358..426cb84 100644 --- a/docs/source/generated/mgear.maya.icon.rst +++ b/docs/source/generated/mgear.maya.icon.rst @@ -1,5 +1,5 @@ -mgear.maya.icon -=============== +mgear\.maya\.icon +================= .. automodule:: mgear.maya.icon diff --git a/docs/source/generated/mgear.maya.log.rst b/docs/source/generated/mgear.maya.log.rst index f2c2e1a..73db35b 100644 --- a/docs/source/generated/mgear.maya.log.rst +++ b/docs/source/generated/mgear.maya.log.rst @@ -1,5 +1,5 @@ -mgear.maya.log -============== +mgear\.maya\.log +================ .. automodule:: mgear.maya.log diff --git a/docs/source/generated/mgear.maya.meshNavigation.rst b/docs/source/generated/mgear.maya.meshNavigation.rst index 1c90c13..2d033fe 100644 --- a/docs/source/generated/mgear.maya.meshNavigation.rst +++ b/docs/source/generated/mgear.maya.meshNavigation.rst @@ -1,5 +1,5 @@ -mgear.maya.meshNavigation -========================= +mgear\.maya\.meshNavigation +=========================== .. automodule:: mgear.maya.meshNavigation diff --git a/docs/source/generated/mgear.maya.node.rst b/docs/source/generated/mgear.maya.node.rst index 3edb9a0..6d21093 100644 --- a/docs/source/generated/mgear.maya.node.rst +++ b/docs/source/generated/mgear.maya.node.rst @@ -1,5 +1,5 @@ -mgear.maya.node -=============== +mgear\.maya\.node +================= .. automodule:: mgear.maya.node @@ -23,10 +23,15 @@ mgear.maya.node createMulDivNode createMulNode createMulNodeMulti + createMultMatrixNode createNegateNodeMulti createPairBlend + createPlusMinusAverage1D + createPowNode createReverseNode + createSetRangeNode createSubNode + createVertexPositionNode diff --git a/docs/source/generated/mgear.maya.primitive.rst b/docs/source/generated/mgear.maya.primitive.rst index a53fec5..c0cfc61 100644 --- a/docs/source/generated/mgear.maya.primitive.rst +++ b/docs/source/generated/mgear.maya.primitive.rst @@ -1,5 +1,5 @@ -mgear.maya.primitive -==================== +mgear\.maya\.primitive +====================== .. automodule:: mgear.maya.primitive diff --git a/docs/source/generated/mgear.maya.rst b/docs/source/generated/mgear.maya.rst index d15bc36..ffa8039 100644 --- a/docs/source/generated/mgear.maya.rst +++ b/docs/source/generated/mgear.maya.rst @@ -1,5 +1,5 @@ -mgear.maya -========== +mgear\.maya +=========== .. automodule:: mgear.maya @@ -9,6 +9,7 @@ mgear.maya .. autosummary:: + aboutMgear getMayaVer diff --git a/docs/source/generated/mgear.maya.shifter.component.guide.rst b/docs/source/generated/mgear.maya.shifter.component.guide.rst index d19b17b..b1f3909 100644 --- a/docs/source/generated/mgear.maya.shifter.component.guide.rst +++ b/docs/source/generated/mgear.maya.shifter.component.guide.rst @@ -1,5 +1,5 @@ -mgear.maya.shifter.component.guide -================================== +mgear\.maya\.shifter\.component\.guide +====================================== .. automodule:: mgear.maya.shifter.component.guide @@ -14,9 +14,9 @@ mgear.maya.shifter.component.guide .. autosummary:: ComponentGuide - MainGuide MinMax - partial + componentMainSettings + mainSettingsTab diff --git a/docs/source/generated/mgear.maya.shifter.component.rst b/docs/source/generated/mgear.maya.shifter.component.rst index 8b11afc..57005af 100644 --- a/docs/source/generated/mgear.maya.shifter.component.rst +++ b/docs/source/generated/mgear.maya.shifter.component.rst @@ -1,5 +1,5 @@ -mgear.maya.shifter.component -============================ +mgear\.maya\.shifter\.component +=============================== .. automodule:: mgear.maya.shifter.component @@ -13,6 +13,7 @@ mgear.maya.shifter.component .. autosummary:: + Main MainComponent diff --git a/docs/source/generated/mgear.maya.shifter.gui.rst b/docs/source/generated/mgear.maya.shifter.gui.rst index 00c6db9..99194ec 100644 --- a/docs/source/generated/mgear.maya.shifter.gui.rst +++ b/docs/source/generated/mgear.maya.shifter.gui.rst @@ -1,5 +1,5 @@ -mgear.maya.shifter.gui -====================== +mgear\.maya\.shifter\.gui +========================= .. automodule:: mgear.maya.shifter.gui @@ -14,7 +14,6 @@ mgear.maya.shifter.gui .. autosummary:: Guide_UI - partial diff --git a/docs/source/generated/mgear.maya.shifter.guide.rst b/docs/source/generated/mgear.maya.shifter.guide.rst index f1d5f9c..a60331e 100644 --- a/docs/source/generated/mgear.maya.shifter.guide.rst +++ b/docs/source/generated/mgear.maya.shifter.guide.rst @@ -1,5 +1,5 @@ -mgear.maya.shifter.guide -======================== +mgear\.maya\.shifter\.guide +=========================== .. automodule:: mgear.maya.shifter.guide @@ -13,8 +13,18 @@ mgear.maya.shifter.guide .. autosummary:: + CustomStepTab + GuideSettings + GuideSettingsTab + HelperSlots + Main MainGuide + Rig RigGuide + customStepTab + guideSettings + guideSettingsTab + helperSlots diff --git a/docs/source/generated/mgear.maya.shifter.rst b/docs/source/generated/mgear.maya.shifter.rst index 2994782..e4c76e8 100644 --- a/docs/source/generated/mgear.maya.shifter.rst +++ b/docs/source/generated/mgear.maya.shifter.rst @@ -1,10 +1,18 @@ -mgear.maya.shifter -================== +mgear\.maya\.shifter +==================== .. automodule:: mgear.maya.shifter + .. rubric:: Functions + + .. autosummary:: + + getComponentDirectories + importComponent + importComponentGuide + @@ -13,9 +21,7 @@ mgear.maya.shifter .. autosummary:: - MainComponent Rig - RigGuide diff --git a/docs/source/generated/mgear.maya.skin.rst b/docs/source/generated/mgear.maya.skin.rst index c455c7d..7b0dd04 100644 --- a/docs/source/generated/mgear.maya.skin.rst +++ b/docs/source/generated/mgear.maya.skin.rst @@ -1,5 +1,5 @@ -mgear.maya.skin -=============== +mgear\.maya\.skin +================= .. automodule:: mgear.maya.skin @@ -13,11 +13,13 @@ mgear.maya.skin collectData collectInfluenceWeights exportSkin + exportSkinPack getCurrentWeights getGeometryComponents getObjsFromSkinFile getSkinCluster importSkin + importSkinPack selectDeformers setBlendWeights setData diff --git a/docs/source/generated/mgear.maya.synoptic.rst b/docs/source/generated/mgear.maya.synoptic.rst index 663bba9..afe5063 100644 --- a/docs/source/generated/mgear.maya.synoptic.rst +++ b/docs/source/generated/mgear.maya.synoptic.rst @@ -1,5 +1,5 @@ -mgear.maya.synoptic -=================== +mgear\.maya\.synoptic +===================== .. automodule:: mgear.maya.synoptic @@ -9,10 +9,8 @@ mgear.maya.synoptic .. autosummary:: - getMayaWindow + importTab open - wrapInstance - wrapinstance2 @@ -23,6 +21,7 @@ mgear.maya.synoptic .. autosummary:: Synoptic + SynopticTabWrapper diff --git a/docs/source/generated/mgear.maya.synoptic.utils.rst b/docs/source/generated/mgear.maya.synoptic.utils.rst index 2e6ab81..a0bf06a 100644 --- a/docs/source/generated/mgear.maya.synoptic.utils.rst +++ b/docs/source/generated/mgear.maya.synoptic.utils.rst @@ -1,5 +1,5 @@ -mgear.maya.synoptic.utils -========================= +mgear\.maya\.synoptic\.utils +============================ .. automodule:: mgear.maya.synoptic.utils @@ -9,28 +9,51 @@ mgear.maya.synoptic.utils .. autosummary:: + applyMirror + bakeSprings bindPose + calculateMirrorData changeSpace + clearSprings + gatherMirrorData getComboIndex getComboKeys getControlers + getInvertCheckButtonAttrName getModel + getNamespace + getNode getSynopticWidget ikFkMatch + isSideElement keyAll + keyGroup keyObj keySel + listAttrForMirror mirrorPose + mirrorPoseOld quickSel resetSelTrans selAll + selGroup selectObj + stripNamespace + swapSideLabel toggleAttr + .. rubric:: Classes + + .. autosummary:: + + AbstractAnimationTransfer + IkFkTransfer + ParentSpaceTransfer + diff --git a/docs/source/generated/mgear.maya.synoptic.widgets.rst b/docs/source/generated/mgear.maya.synoptic.widgets.rst index ad88960..5094651 100644 --- a/docs/source/generated/mgear.maya.synoptic.widgets.rst +++ b/docs/source/generated/mgear.maya.synoptic.widgets.rst @@ -1,5 +1,5 @@ -mgear.maya.synoptic.widgets -=========================== +mgear\.maya\.synoptic\.widgets +============================== .. automodule:: mgear.maya.synoptic.widgets @@ -20,34 +20,74 @@ mgear.maya.synoptic.widgets SelectBtn_CFk SelectBtn_CFkBox SelectBtn_CFkCircle + SelectBtn_CFkOutlineBox + SelectBtn_CFkOutlineCircle SelectBtn_CIk SelectBtn_CIkBox SelectBtn_CIkCircle + SelectBtn_CIkOutlineBox + SelectBtn_CIkOutlineCircle SelectBtn_Circle SelectBtn_LFk SelectBtn_LFkBox SelectBtn_LFkCircle + SelectBtn_LFkOutlineBox + SelectBtn_LFkOutlineCircle + SelectBtn_LFkTriangleLeft SelectBtn_LIk SelectBtn_LIkBox SelectBtn_LIkCircle + SelectBtn_LIkOutlineBox + SelectBtn_LIkOutlineCircle + SelectBtn_LIkTriangleLeft + SelectBtn_OutlineBox + SelectBtn_OutlineCircle + SelectBtn_OutlineTriangleLeft + SelectBtn_OutlineTriangleRight SelectBtn_RFk SelectBtn_RFkBox SelectBtn_RFkCircle + SelectBtn_RFkOutlineBox + SelectBtn_RFkOutlineCircle + SelectBtn_RFkTriangleRight SelectBtn_RIk SelectBtn_RIkBox SelectBtn_RIkCircle + SelectBtn_RIkOutlineBox + SelectBtn_RIkOutlineCircle + SelectBtn_RIkTriangleRight + SelectBtn_TriangleLeft + SelectBtn_TriangleRight + SelectBtn_blueBox + SelectBtn_blueCircle + SelectBtn_blueOutlineCircle SelectBtn_darkGreen SelectBtn_darkGreenBox + SelectBtn_darkGreenOutlineBox SelectBtn_green SelectBtn_greenBox SelectBtn_greenCircle + SelectBtn_greenOutlineBox + SelectBtn_greenOutlineCircle + SelectBtn_greenTriangleLeft + SelectBtn_greenTriangleRight + SelectBtn_redBox + SelectBtn_redCircle + SelectBtn_redOutlineCircle SelectBtn_yellow SelectBtn_yellowBox + SelectBtn_yellowCircle + SelectBtn_yellowOutlineBox + SelectBtn_yellowOutlineCircle SelectButton - bakeMocap + bakeSprings + clearSprings ikfkMatchButton + keyGroup + klass resetBindPose resetTransform + selGroup toggleAttrButton toggleCombo diff --git a/docs/source/generated/mgear.maya.transform.rst b/docs/source/generated/mgear.maya.transform.rst index 84b61b2..5d107fd 100644 --- a/docs/source/generated/mgear.maya.transform.rst +++ b/docs/source/generated/mgear.maya.transform.rst @@ -1,5 +1,5 @@ -mgear.maya.transform -==================== +mgear\.maya\.transform +====================== .. automodule:: mgear.maya.transform diff --git a/docs/source/generated/mgear.maya.utils.rst b/docs/source/generated/mgear.maya.utils.rst index 009f8dd..3b6027a 100644 --- a/docs/source/generated/mgear.maya.utils.rst +++ b/docs/source/generated/mgear.maya.utils.rst @@ -1,5 +1,5 @@ -mgear.maya.utils -================ +mgear\.maya\.utils +================== .. automodule:: mgear.maya.utils @@ -9,7 +9,12 @@ mgear.maya.utils .. autosummary:: + gatherCustomModuleDirectories + getModuleBasePath + importFromStandardOrCustomDirectories is_odd + one_undo + viewport_off diff --git a/docs/source/generated/mgear.maya.vector.rst b/docs/source/generated/mgear.maya.vector.rst index 562f037..1b682df 100644 --- a/docs/source/generated/mgear.maya.vector.rst +++ b/docs/source/generated/mgear.maya.vector.rst @@ -1,5 +1,5 @@ -mgear.maya.vector -================= +mgear\.maya\.vector +=================== .. automodule:: mgear.maya.vector diff --git a/docs/source/generated/mgear.string.rst b/docs/source/generated/mgear.string.rst index 908d498..80e1caf 100644 --- a/docs/source/generated/mgear.string.rst +++ b/docs/source/generated/mgear.string.rst @@ -1,5 +1,5 @@ -mgear.string -============ +mgear\.string +============= .. automodule:: mgear.string diff --git a/docs/source/mgear/maya/rigbits/channelWrangler.rst b/docs/source/mgear/maya/rigbits/channelWrangler.rst new file mode 100644 index 0000000..91151d9 --- /dev/null +++ b/docs/source/mgear/maya/rigbits/channelWrangler.rst @@ -0,0 +1,6 @@ +mgear.maya.rigbits.channelWrangler +================================== + +.. automodule:: mgear.maya.rigbits.channelWrangler + :members: + :undoc-members: diff --git a/docs/source/releaseLog.rst b/docs/source/releaseLog.rst index 8bd9b48..00b0822 100644 --- a/docs/source/releaseLog.rst +++ b/docs/source/releaseLog.rst @@ -1,30 +1,65 @@ Release Log =========== +2.3.0 +----- +**Enhancements** + * mGear: Attribute: addAttribute not setting default attribute value. [#84] + * mGear: Attribute: update with lock and unlock attribute functions [#83] + * mGear: PEP8 Style Refactor [#100] + * mGear: Refactor all exception handling [#88] + * mGear: Vendoring QT [#89] + * Shifter: Build command review and log popup window [#73] + * Shifter: Change Global_C0_ctl to World_ctl [#66] + * Shifter: Control_01: Add option to have mirror behaviour [#68] + * Shifter: Improve rig build speed [#65] + * Shifter: Leg_2jnts_freeTangents_01:no ikFoot in upvref attribute [#62] + * Shifter: Reload components in custom path [#78] + * Shifter: Update guide structure in pre custom step [#101] + * Simple Rig: Update functionality revision [#71] + * Synoptic: spring bake util [#61] + +**Bug Fix** + * Rigbits: createCTL function issue [#59] + * Rigbits: export skin pack error with crvs [#56] + * Rigbits: skin: There is a case in exportSkin function breaks the existing file [#58] + * Shifter: 3 joint leg: soft Ik range min in graph editor [#82] + * Shifter: arm_2jnt_freeTangents_01 no attribute 'rollRef' [#63] + * Shifter: Arms auto upvector and shoulder space jump [#85] + * Shifter: Chain_spring_01: pop if manipulate FK ctl after Bake [#75] + * Shifter: Connect Ctl_vis [#103] + * Shifter: Control_01: rotation axis is missing Y lock [#74] + * Shifter: Japanese Ascii [#79] + * Shifter: Spring chain: lock control parent and bake spring bug [#67] + * Shifter: Synoptic: IK/FK Match with arm_ms_2jnt_01 [#80] + +**Known Issues** + * Shifter: Undo Build from selection crash maya [#74] + 2.2.4 ----- **Enhancements** - * Issue #50: Global scale and size of controllers. + * Shifter: Global scale and size of controllers. [#50] 2.2.3 ----- **Enhancements** - * Issue #43: Shifter: Custom Steps: Added Stop Build and Try again option if step fail. + * Shifter: Custom Steps: Added Stop Build and Try again option if step fail.[#43] **Bug Fix** - * Issue #54: Synoptic: Match IK/FK with split ctl for trans and rot + * Synoptic: Match IK/FK with split ctl for trans and rot [#54] 2.2.2 ----- **Enhancements** - * Issue #47: Shifter: Components: Legs: Mirror axis behavior on upv and mid ctl - * Issue #48: Shifter: Componets: Arms: IK ctl mirror behaviour - * Issue #53: Shifter: arm roll new reference connector + * Shifter: Components: Legs: Mirror axis behavior on upv and mid ctl [#47] + * Shifter: Componets: Arms: IK ctl mirror behaviour [#48] + * Shifter: arm roll new reference connector [#53] **Bug Fix** - * Issue #42: Shifter: component UI min division hang. Check all components - * Issue #44: mGear quadruped rig not being created in 2018 - * Issue #49: Shifter: Close settings Exception on Maya 2018: Note: This is a workaround. The issue comes from Maya 2018 + * Shifter: component UI min division hang. Check all components [#42] + * Shifter: quadruped rig not being created in 2018 [ #44] + * Shifter: Close settings Exception on Maya 2018: Note: This is a workaround. The issue comes from Maya 2018 [#49] 2.2.1 ----- @@ -40,7 +75,7 @@ Release Log * Simple autorig This a new rigging sytem for basic props. * Channel Wrangler: Channel manager with export import options. -**Improvements** +**Enhancements** * Synoptic: key/select all for custom widgets * Skin IO: IO skin for curves & nurbs * Skin IO: Now can export with Skin Packs. Every object will be in a separated file. diff --git a/docs/source/shifterModules.rst b/docs/source/shifterModules.rst index 8e7665b..5248b30 100644 --- a/docs/source/shifterModules.rst +++ b/docs/source/shifterModules.rst @@ -9,7 +9,7 @@ Shifter Rig Builder Introduction ------------ -Shifter is the default autorigging modular system included with mGear. This system is provided with the hope to solve the majority of your rigging necesities. From a freelancer or small boutique to a big studio. +Shifter is the default autorigging modular system included with mGear. This system is provided with the hope to solve the majority of your rigging necesities. From a freelancer or small boutique to a big studio. Shifter can be use in a wide variety of projects. Animated feature films, video games, VR, VFX, TV series, etc... and can build rigs for any kind of asset. i.e: cartoon characters, creatures, robots, props, vehicles, etc... diff --git a/docs/source/shifterUserDocumentation.rst b/docs/source/shifterUserDocumentation.rst index aeae029..e2888a1 100644 --- a/docs/source/shifterUserDocumentation.rst +++ b/docs/source/shifterUserDocumentation.rst @@ -2,7 +2,7 @@ Shifter User Documentation ========================== WIP section: Please visit: -`mGear Youtube channel `_ +`mGear Youtube channel `_ * components * creating new components diff --git a/docs/source/solvers.rst b/docs/source/solvers.rst index c739224..d71a510 100644 --- a/docs/source/solvers.rst +++ b/docs/source/solvers.rst @@ -4,4 +4,4 @@ Custom Solvers/Nodes mGear custom C++ Solvers/Nodes Documentation WIP section: Please visit: -`mGear Youtube channel `_ +`mGear Youtube channel `_ diff --git a/docs/source/synopticUserDocumentation.rst b/docs/source/synopticUserDocumentation.rst index 055c138..7a1913f 100644 --- a/docs/source/synopticUserDocumentation.rst +++ b/docs/source/synopticUserDocumentation.rst @@ -2,7 +2,7 @@ Synoptic User Documentation ============================ WIP section: Please visit: -`mGear Youtube channel `_ +`mGear Youtube channel `_ * Basic operations diff --git a/docs/source/tools.rst b/docs/source/tools.rst index a6ecbb2..e08da61 100644 --- a/docs/source/tools.rst +++ b/docs/source/tools.rst @@ -4,7 +4,7 @@ Tools tools from mGear maya menu WIP section: Please visit: -`mGear Youtube channel `_ +`mGear Youtube channel `_ .. toctree:: diff --git a/docs/source/videoTutorials.rst b/docs/source/videoTutorials.rst index 053bff6..24de14f 100644 --- a/docs/source/videoTutorials.rst +++ b/docs/source/videoTutorials.rst @@ -2,12 +2,4 @@ Video Tutorials =============== WIP section: Please visit: -`mGear Youtube channel `_ - - -.. raw:: html - - -

mGear: Framework overview from Miquel Campos on Vimeo.

- - \ No newline at end of file +`mGear Youtube channel `_