def create_fk_ik_sn(controls, **kwargs): fk, ik = get_fk_ik_joints(controls) # Add the FkIkMode attribute to both controls and identify # which control is the fk control and which is the ik control. for c in controls: addAttr(c, longName='FkIkMode', niceName='FKIK Mode', attributeType='enum', enumName='FK:IK', keyable=True, defaultValue=1) sn = scriptNode(scriptType=2, sourceType='python', beforeScript=';'.join(['import pymel.core.nodetypes as nt', 'import %s as x' % __name__, "x.create_fk_ik_sj(%s)" % controls]), afterScript=';'.join(['import pymel.core.nodetypes as nt', "[c.attr('FkIkMode').delete() for c in %s]" % controls]), **kwargs) # Make the appropriate connections to toggle both visibility and # orient constraints. rev = shadingNode('reverse', asUtility=True) ik['ctrl'].attr('FkIkMode').connect(ik['ctrl'].attr('visibility')) fk['ctrl'].attr('FkIkMode').connect(rev.attr('inputX')) rev.attr('outputX').connect(fk['ctrl'].attr('visibility')) ik['ctrl'].attr('FkIkMode').connect(ik['sj'].attr('visibility')) fk['ctrl'].attr('FkIkMode').connect(rev.attr('inputY')) rev.attr('outputY').connect(fk['sj'].attr('visibility')) for jtype in ('shoulder', 'elbow', 'hand'): kwargs = jtype == 'elbow' and dict(skip=('x', 'z')) or {} oc = orientConstraint(ik[jtype], fk[jtype], **kwargs) ik['ctrl'].attr('FkIkMode').connect( \ oc.attr(ik[jtype].nodeName() + 'W0')) create_fk_ik_sj(controls)
def create_fk_ik_sn(controls, **kwargs): fk, ik = get_fk_ik_joints(controls) # Add the FkIkMode attribute to both controls and identify # which control is the fk control and which is the ik control. for c in controls: addAttr(c, longName='FkIkMode', niceName='FKIK Mode', attributeType='enum', enumName='FK:IK', keyable=True, defaultValue=1) sn = scriptNode(scriptType=2, sourceType='python', beforeScript=';'.join([ 'import pymel.core.nodetypes as nt', 'import %s as x' % __name__, "x.create_fk_ik_sj(%s)" % controls ]), afterScript=';'.join([ 'import pymel.core.nodetypes as nt', "[c.attr('FkIkMode').delete() for c in %s]" % controls ]), **kwargs) # Make the appropriate connections to toggle both visibility and # orient constraints. rev = shadingNode('reverse', asUtility=True) ik['ctrl'].attr('FkIkMode').connect(ik['ctrl'].attr('visibility')) fk['ctrl'].attr('FkIkMode').connect(rev.attr('inputX')) rev.attr('outputX').connect(fk['ctrl'].attr('visibility')) ik['ctrl'].attr('FkIkMode').connect(ik['sj'].attr('visibility')) fk['ctrl'].attr('FkIkMode').connect(rev.attr('inputY')) rev.attr('outputY').connect(fk['sj'].attr('visibility')) for jtype in ('shoulder', 'elbow', 'hand'): kwargs = jtype == 'elbow' and dict(skip=('x', 'z')) or {} oc = orientConstraint(ik[jtype], fk[jtype], **kwargs) ik['ctrl'].attr('FkIkMode').connect( \ oc.attr(ik[jtype].nodeName() + 'W0')) create_fk_ik_sj(controls)
def addAttr( self, **kwargs): kwargs['longName'] = self.plugAttr() kwargs.pop('ln', None ) from pymel.core.general import addAttr return addAttr( self.node(), **kwargs )
def addAttr(self, **kwargs): kwargs['longName'] = self.plugAttr() kwargs.pop('ln', None) from pymel.core.general import addAttr return addAttr(self.node(), **kwargs)
def _sign_the_scene(author): if not objExists('defaultLayer.Author'): addAttr('defaultLayer', longName='Author', dataType='string') setAttr('defaultLayer.Author', author, type='string', lock=True)