def createChestMainCTRL(self): chest_Ctrl_Object = Control.Control( name='{Side}__Chest__CTRL'.format(**self.nameStructure), shape=sl.sl[self.config['CONTROLS']['Spine_Chest']['shape']], scale=self.config['CONTROLS']['Spine_Chest']['scale'], matchTransforms=(self.SPINEIK_MOD.getJoints[2], 1, 1), parent=self.RIBBON_MOD.INPUT_GRP, color=('index', self.col_main)) self.chest_Ctrl = chest_Ctrl_Object.control adb.makeroot_func(self.chest_Ctrl, suff='OFFSET', forceNameConvention=True) pm.parentConstraint(self.chest_Ctrl, self.SPINEIK_MOD.getJoints[-1].getParent(), mo=True) moduleBase.ModuleBase.setupVisRule( [self.chest_Ctrl], self.RIBBON_MOD.VISRULE_GRP, '{Side}__{Basename}_Chest_CTRL__{Suffix}'.format( **self.nameStructure), True) if self.REVERSE_MOD: pm.parentConstraint(self.REVERSE_MOD.getJoints[-1], self.chest_Ctrl.getParent(), mo=True) return self.chest_Ctrl
def addControls(self, shape=sl.ball_shape, scale=1, color=('index', 13)): """ add Controls to the follicules """ create_ctrls = [ Control.Control( str(joint), shape=shape, scale=scale, parent=self.INPUT_GRP, matchTransforms=(joint, 0, 0), color=color, ) for joint in self._MODEL.getJoints ] for foll, ctrls in zip(self._MODEL.getFollicules, create_ctrls): offset = adb.makeroot_func(ctrls.control, 'OFFSET') self._MODEL.getInputs.append(offset) self._MODEL.getResetControls.append(offset) pm.rename(offset, '{}'.format(offset).replace('__CTRL', '')) Transform(foll.getTransform()).matrixConstraint(offset, channels='trh', mo=True) for grp, ctrls in zip(self._MODEL.getResetJoints, create_ctrls): pm.parent(grp, ctrls.control) self._MODEL.getControls = create_ctrls return self._MODEL.getControls
def createFkReverseCTRLS(): self.REVERSE_MOD.getJoints = [] for joint in self.reverse_spine_chain_joints: rev_ctrl = Control.Control( name=joint.replace(NC.JOINT, NC.CTRL), shape=sl.sl[self.config['CONTROLS']['Spine_FK_Rev'] ['shape']], scale=self.config['CONTROLS']['Spine_FK_Rev']['scale'], matchTransforms=(False, 1, 0), color=('index', 20), ) self.REVERSE_MOD.getJoints.append(joint) pm.parent(rev_ctrl.control.getShape(), joint, relative=True, shape=True) pm.delete(rev_ctrl.control) pm.rename(joint, NC.getNameNoSuffix(joint)) adb.AutoSuffix([joint]) adb.lockAttr_func( joint, ['tx', 'ty', 'tz', 'sx', 'sy', 'sz', 'radius']) self.nameStructure['Suffix'] = NC.VISRULE shapes = [x.getShape() for x in self.reverse_spine_chain_joints] moduleBase.ModuleBase.setupVisRule( shapes, self.REVERSE_MOD.VISRULE_GRP, '{Side}__{Basename}_FK_Reverse_CTRL__{Suffix}'.format( **self.nameStructure), False) self.setupVisRule( self.reverse_spine_chain_joints, self.REVERSE_MOD.VISRULE_GRP, '{Side}__{Basename}_FK_Reverse_JNT__{Suffix}'.format( **self.nameStructure), False) return self.REVERSE_MOD.getJoints
def createHipsMainCTRL(self): hips_Ctrl_Object = Control.Control( name='{Side}__Hips__CTRL'.format(**self.nameStructure), shape=sl.sl[self.config['CONTROLS']['Spine_Hips']['shape']], scale=self.config['CONTROLS']['Spine_Hips']['scale'], matchTransforms=(self.SPINEIK_MOD.getJoints[0], 1, 0), parent=self.RIBBON_MOD.INPUT_GRP, color=('index', self.col_main)) self.hips_Ctrl = hips_Ctrl_Object.control pm.parentConstraint( self.hips_Ctrl, self.RESULT_MOD.getJoints[0].getParent().getParent()) moduleBase.ModuleBase.setupVisRule( [self.hips_Ctrl], self.RIBBON_MOD.VISRULE_GRP, '{Side}__{Basename}_Hips_CTRL__{Suffix}'.format( **self.nameStructure), True) if self.REVERSE_MOD: ik_reverse_spine_guide = [ self.reverse_spine_chain_joints[0], self.reverse_spine_chain_joints[(len( self.reverse_spine_chain_joints)) / 2] ] for revJnt, ctl in zip(ik_reverse_spine_guide, self.SPINEIK_MOD.getJoints[:-1]): pm.parentConstraint(revJnt, pm.PyNode(ctl).getParent(), mo=True) return self.hips_Ctrl
def createMainRigCtrl(cls, mainRigName): cls.RIG_NAME = mainRigName cls.MAIN_BASERIG_GRP = pm.group(n='{}_MainRig__GRP'.format(mainRigName), em=1) cls.GEO_BASERIG_GRP = pm.group(n='{}_Geometry__GRP'.format(mainRigName), em=1, parent=cls.MAIN_BASERIG_GRP) cls.MODULES_BASERIG_GRP = pm.group(n='{}_Modules__GRP'.format(mainRigName), em=1, parent=cls.MAIN_BASERIG_GRP) cls.CONTROL_BASERIG_GRP = pm.group(n='{}_Control__GRP'.format(mainRigName), em=1, parent=cls.MAIN_BASERIG_GRP) cls.main_CTRL = Control.Control(name='{}_Main__{}'.format(mainRigName, NC.CTRL), shape=sl.main_shape, scale=3, color = ('index', indexColor["lightYellow"]), parent=cls.CONTROL_BASERIG_GRP, ) cls.mainOffset_CTRL = Control.Control(name='{}_MainOffset__{}'.format(mainRigName, NC.CTRL), shape=sl.circleY_shape, scale=4, color = ('index', indexColor["lightBlue"]), parent=cls.main_CTRL.control ) [adb.makeroot_func(grp, 'Offset', forceNameConvention=True) for grp in [cls.main_CTRL.control, cls.mainOffset_CTRL.control]] return cls
def create_ik_ctrl(): self.nameStructure['Suffix'] = NC.CTRL self.shoulder_ik_ctrl_class = Control.Control( name='{Side}__{Basename}_{Parts[1]}__{Suffix}'.format( **self.nameStructure), shape=sl.sl[self.config['CONTROLS']['Shoulder']['shape']], scale=self.config['CONTROLS']['Shoulder']['scale'], matchTransforms=(self.shoulder_joint, 1, 0), parent=self.shoulder_MOD.INPUT_GRP) self.shoulder_ik_ctrl = self.shoulder_ik_ctrl_class.control adb.makeroot_func(self.shoulder_ik_ctrl, suff='Offset', forceNameConvention=True) return self.shoulder_ik_ctrl
def create_ctrl(): self.nameStructure['Suffix'] = NC.CTRL self.clavicule_ctrl_class = Control.Control( name='{Side}__{Basename}_{Parts[0]}__{Suffix}'.format( **self.nameStructure), shape=sl.sl[self.config['CONTROLS']['Clavicule']['shape']], scale=self.config['CONTROLS']['Clavicule']['scale'], matchTransforms=(self.clavicule_joint, 1, 1), parent=self.shoulder_MOD.INPUT_GRP) self.clavicule_ctrl = self.clavicule_ctrl_class.control if self.side == NC.RIGTH_SIDE_PREFIX: self.clavicule_ctrl.sy.set(-1) adb.makeroot_func(self.clavicule_ctrl, suff='Offset', forceNameConvention=True) self.clavicule_ctrl.rz.set( self.config['CONTROLS']['Clavicule']['rotation_degree']) pm.makeIdentity(self.clavicule_ctrl, n=0, r=1, apply=True, pn=1) self.clavicule_ctrl_class.addRotationOrderAttr() return self.clavicule_ctrl
def create_ctrl(): self.nameStructure['Suffix'] = NC.CTRL self.foot_ctrl = Control.Control( name='{Side}__{Basename}_Main__{Suffix}'.format( **self.nameStructure), shape=sl.sl[self.config['CONTROLS']['Foot']['shape']], scale=self.config['CONTROLS']['Foot']['scale'], matchTransforms=(self.starter_Foot[1], 1, 0)).control pm.matchTransform(self.foot_ctrl, self.footAnkle_joint, pos=0, rot=1) if self.side == NC.LEFT_SIDE_PREFIX: pm.PyNode(self.foot_ctrl).sx.set(-1) pm.makeIdentity(self.foot_ctrl, n=0, s=1, apply=True, pn=1) Transform(self.foot_ctrl).pivotPoint = Transform( self.footAnkle_joint).worldTrans adb.makeroot_func(self.foot_ctrl, suff='Offset', forceNameConvention=True) return self.foot_ctrl
def createFkRegularCTRLS(self): self.RESULT_MOD.getJoints = [] for joint in self.spine_chain_joints: ctrl = Control.Control( name=joint.replace(NC.JOINT, NC.CTRL), shape=sl.sl[self.config['CONTROLS']['Spine_FK_Reg']['shape']], scale=self.config['CONTROLS']['Spine_FK_Reg']['scale'], matchTransforms=(False, 1, 0), color=('index', 21)) for att in ['tx', 'ty', 'tz', 'sx', 'sy', 'sz', 'radius']: pm.PyNode(joint).setAttr(att, lock=True, channelBox=False, keyable=False) self.RESULT_MOD.getJoints.append(joint) pm.parent(ctrl.control.getShape(), joint, relative=True, shape=True) pm.delete(ctrl.control) pm.rename(joint, NC.getNameNoSuffix(joint)) adb.AutoSuffix([joint]) self.nameStructure['Suffix'] = NC.VISRULE shapes = [x.getShape() for x in self.spine_chain_joints] moduleBase.ModuleBase.setupVisRule( shapes, self.RESULT_MOD.VISRULE_GRP, '{Side}__{Basename}_FK_CTRL__{Suffix}'.format( **self.nameStructure), False) self.setupVisRule( self.spine_chain_joints, self.RESULT_MOD.VISRULE_GRP, '{Side}__{Basename}_FK_JNT__{Suffix}'.format(**self.nameStructure), False) return self.RESULT_MOD.getJoints
def addControls(self): self.nameStructure['Suffix'] = NC.CTRL ball_CTRL = Control.Control( name='{Side}__{Basename}_Ball__{Suffix}'.format( **self.nameStructure), shape=sl.sl[self.config['CONTROLS']['Foot_Ball']['shape']], scale=self.config['CONTROLS']['Foot_Ball']['scale'], matchTransforms=(self.footBall_joint, 1, 0), parent=self.Foot_MOD.INPUT_GRP, color=('index', self.col_layer2)).control if self.side == NC.RIGTH_SIDE_PREFIX: ball_CTRL.sx.set(-1) pm.makeIdentity(ball_CTRL, n=0, s=1, apply=True, pn=1) adb.makeroot_func(ball_CTRL, suff='Offset', forceNameConvention=1) adb.matrixConstraint(self.footBall_joint, ball_CTRL.getParent(), mo=1) ball_CTRL.rx >> pm.PyNode(self.foot_ctrl.ballRoll) heel_CTRL = Control.Control( name='{Side}__{Basename}_Heel__{Suffix}'.format( **self.nameStructure), shape=sl.sl[self.config['CONTROLS']['Foot_Heel']['shape']], scale=self.config['CONTROLS']['Foot_Heel']['scale'], matchTransforms=(self.footHeel_joint, 1, 0), parent=self.Foot_MOD.INPUT_GRP, color=('index', self.col_layer2)).control adb.makeroot_func(heel_CTRL, suff='Offset', forceNameConvention=1) adb.matrixConstraint(self.footHeel_joint, heel_CTRL.getParent(), mo=1) heel_CTRL.rx >> pm.PyNode(self.foot_ctrl.heelRoll) heel_CTRL.ry >> pm.PyNode(self.foot_ctrl.heelSide) heel_CTRL.rz >> pm.PyNode(self.foot_ctrl.heelTwist) toe_CTRL = Control.Control( name='{Side}__{Basename}_Toe__{Suffix}'.format( **self.nameStructure), shape=sl.sl[self.config['CONTROLS']['Foot_Toe']['shape']], scale=self.config['CONTROLS']['Foot_Toe']['scale'], matchTransforms=(self.footToes_joint, 1, 0), parent=self.Foot_MOD.INPUT_GRP, color=('index', self.col_layer2)).control adb.makeroot_func(toe_CTRL, suff='Offset', forceNameConvention=1) adb.matrixConstraint(self.footToes_joint, toe_CTRL.getParent(), mo=1) toe_CTRL.rx >> pm.PyNode(self.foot_ctrl.toeRoll) toe_CTRL.ry >> pm.PyNode(self.foot_ctrl.toeSide) toeBend_CTRL = Control.Control( name='{Side}__{Basename}_ToeBend__{Suffix}'.format( **self.nameStructure), shape=sl.sl[self.config['CONTROLS']['Foot_ToeBend']['shape']], scale=self.config['CONTROLS']['Foot_ToeBend']['scale'], matchTransforms=(self.footBall_joint, 1, 0), parent=self.Foot_MOD.INPUT_GRP, color=('index', self.col_layer2)).control adb.makeroot_func(toeBend_CTRL, suff='Offset', forceNameConvention=1) adb.matrixConstraint(self.footBall_joint, toeBend_CTRL.getParent(), mo=1) toeBend_CTRL.rx >> pm.PyNode(self.foot_ctrl.toeBend) toeBend_CTRL.ry >> pm.PyNode(self.footBall_joint).ry self.nameStructure['Suffix'] = NC.VISRULE moduleBase.ModuleBase.setupVisRule( [ball_CTRL, heel_CTRL, toe_CTRL, toeBend_CTRL], self.Foot_MOD.VISRULE_GRP, '{Side}__{Basename}_Extras_CTRL__{Suffix}'.format( **self.nameStructure), True) return ball_CTRL, heel_CTRL, toe_CTRL, toeBend_CTRL