diff --git a/release/scripts/mgear/shifter_classic_components/lite_chain_01/__init__.py b/release/scripts/mgear/shifter_classic_components/lite_chain_01/__init__.py index 9f68b8df..195a23be 100644 --- a/release/scripts/mgear/shifter_classic_components/lite_chain_01/__init__.py +++ b/release/scripts/mgear/shifter_classic_components/lite_chain_01/__init__.py @@ -22,9 +22,14 @@ def addObjects(self): self.normal = self.guide.blades["blade"].z * -1 self.binormal = self.guide.blades["blade"].x - self.WIP = self.options["mode"] + rot_offset = [ + self.settings["joint_rot_offset_x"], + self.settings["joint_rot_offset_y"], + self.settings["joint_rot_offset_z"], + ] + if self.negate and self.settings["overrideNegate"]: self.negate = False self.n_factor = 1 @@ -41,30 +46,34 @@ def addObjects(self): # FK controllers ------------------------------------ self.fk_npo = [] self.fk_ctl = [] - t = self.guide.tra["root"] parent = self.root - tOld = False - fk_ctl = None + previous_transform = None self.previusTag = 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]) - if self.settings["neutralpose"] or not tOld: + + chain_pos = transform.getChainTransform( + self.guide.apos, self.normal, self.negate) + + for i, t in enumerate(chain_pos): + if self.settings["neutralpose"] or not previous_transform: tnpo = t else: tnpo = transform.setMatrixPosition( - tOld, + previous_transform, transform.getPositionFromMatrix(t)) + dist = vector.getDistance(self.guide.apos[i], self.guide.apos[i + 1]) + if self.settings["mirrorBehaviour"] and self.negate: + dist = dist * -1 + rot_offset = [180, 180, 0] + tnpo = transform.setMatrixScale(t, [-1, -1, -1]) + fk_npo = primitive.addTransform( parent, self.getName("fk%s_npo" % i), tnpo) fk_ctl = self.addCtl( fk_npo, "fk%s_ctl" % i, - t, + tnpo, self.color_fk, "cube", w=dist, @@ -76,11 +85,19 @@ def addObjects(self): self.fk_npo.append(fk_npo) self.fk_ctl.append(fk_ctl) - tOld = t self.previusTag = fk_ctl + previous_transform = t parent = fk_ctl if self.settings["addJoints"]: - self.jnt_pos.append([fk_ctl, i, None, False]) + self.jnt_pos.append( + { + "obj": fk_ctl, + "name": i, + "newActiveJnt": None, + "UniScale": False, + "rot_off": rot_offset + } + ) # ===================================================== # ATTRIBUTES diff --git a/release/scripts/mgear/shifter_classic_components/lite_chain_01/guide.py b/release/scripts/mgear/shifter_classic_components/lite_chain_01/guide.py index eed5c0d5..af812197 100644 --- a/release/scripts/mgear/shifter_classic_components/lite_chain_01/guide.py +++ b/release/scripts/mgear/shifter_classic_components/lite_chain_01/guide.py @@ -16,7 +16,7 @@ AUTHOR = "Miquel Campos" URL = "www.mcsgear.com" EMAIL = "" -VERSION = [1, 1, 0] +VERSION = [1, 1, 1] TYPE = "lite_chain_01" NAME = "chain" DESCRIPTION = "Super simple and light weight FK chain" @@ -61,6 +61,7 @@ def addParameters(self): self.pNeutralPose = self.addParam("neutralpose", "bool", True) self.pOverrideNegate = self.addParam("overrideNegate", "bool", False) + self.pMirrorBehaviour = self.addParam("mirrorBehaviour", "bool", False) self.pAddJoints = self.addParam("addJoints", "bool", True) self.pUseIndex = self.addParam("useIndex", "bool", False) self.pParentJointIndex = self.addParam( @@ -122,6 +123,8 @@ def populate_componentControls(self): "overrideNegate") self.populateCheck(self.settingsTab.addJoints_checkBox, "addJoints") + self.populateCheck(self.settingsTab.mirrorBehaviour_checkBox, + "mirrorBehaviour") def create_componentLayout(self): @@ -146,7 +149,12 @@ def create_componentConnections(self): self.settingsTab.addJoints_checkBox.stateChanged.connect( partial(self.updateCheck, self.settingsTab.addJoints_checkBox, - "addJoints")) + "addJoints"))\ + + self.settingsTab.mirrorBehaviour_checkBox.stateChanged.connect( + partial(self.updateCheck, + self.settingsTab.mirrorBehaviour_checkBox, + "mirrorBehaviour")) def dockCloseEventTriggered(self): pyqt.deleteInstances(self, MayaQDockWidget) diff --git a/release/scripts/mgear/shifter_classic_components/lite_chain_01/settingsUI.py b/release/scripts/mgear/shifter_classic_components/lite_chain_01/settingsUI.py index dccfad8f..4e49d2b5 100644 --- a/release/scripts/mgear/shifter_classic_components/lite_chain_01/settingsUI.py +++ b/release/scripts/mgear/shifter_classic_components/lite_chain_01/settingsUI.py @@ -22,6 +22,10 @@ def setupUi(self, Form): self.overrideNegate_checkBox.setText("Override Negate Axis Direction For \"R\" Side") self.overrideNegate_checkBox.setObjectName("overrideNegate_checkBox") self.verticalLayout.addWidget(self.overrideNegate_checkBox) + self.mirrorBehaviour_checkBox = QtWidgets.QCheckBox(self.groupBox) + self.mirrorBehaviour_checkBox.setObjectName("mirrorBehaviour_checkBox") + self.mirrorBehaviour_checkBox.setText("Mirror Behaviour L and R") + self.verticalLayout.addWidget(self.mirrorBehaviour_checkBox) self.addJoints_checkBox = QtWidgets.QCheckBox(self.groupBox) self.addJoints_checkBox.setText("Add Joints") self.addJoints_checkBox.setChecked(True)