Example #1
0
def createControl( si, shape = 'circleX', childsAlso = True, par = None, lastAlso = False, constraint = True, connect = False, offsetGroup = True ):
	if not lastAlso and not si.children:
		return
	if shape == 'joint':
		mc.select( cl = True )
		curv = mn.Node( mc.joint( n = si.name + "_jnt" ) )
	elif shape == 'locator':
		curv = mn.Node( mc.spaceLocator( n = si.name + '_loc' )[0] )
	else:
		curv = crv.Curve( si.name + "_ctl" )
		curv = curv.create( shape )
	if offsetGroup:
		grp = mn.createNode( "transform", ss = True )
		grp.name = si.name + "_grp"
		trf.snap( si, grp )
		curv.parent = grp
		curv.a.t.v  = [0]*3
		curv.a.r.v  = [0]*3
		if par:
			grp.parent = par
	else:
		trf.snap( si, curv )
		curv.freeze()
	if constraint:
		mc.parentConstraint( curv, si, mo = True )
		mc.scaleConstraint( curv, si, mo = True )
	if connect:
		curv.a.t >> si.a.t
		curv.a.r >> si.a.r
		curv.a.s >> si.a.s
	if childsAlso and si.children:
		for c in si.children:
			c = mn.Node( c.name.split( '|' )[-1] )
			createControl( c, shape, True, curv, lastAlso, constraint, connect, offsetGroup )
Example #2
0
	def create(self):
		"""create Control system
		1- Create Joint on position
		2- Create Muscle Constraint
		3- Create Curve Control
		4- Make Connections
		"""
		self.rivet = self._createConstraint()
		self._createJoint()
		control = self._createControl()
		trf.snap( self.rivet.name , control.name )
		nullTrf = mn.createNode( 'transform' )
		nullTrf.name = self.name + '_baseControl'
		trf.snap( self.rivet.name , nullTrf.name )
		nullTrf.parent = self.rivet
		control.parent = nullTrf
		#make connections
		multi = mn.createNode( 'multiplyDivide' )
		multi.name = self.name + '_multi'
		multi.a.input2.v = [-1,-1,-1]
		multi.a.output >> nullTrf.a.translate
		control.a.t >> multi.a.input1
		control.a.t >> self.skinJoint.a.t
		control.a.r >> self.skinJoint.a.r
		control.a.s >> self.skinJoint.a.s