Exemplo n.º 1
0
		def reloadModule(self,module):
			"""
				Gets data from container and rerigs python object
			"""
			moduleType = Util.getString(module, "type")
			command = ("module = " + str(moduleType) + "." + str(moduleType) + "('"+ Util.removeSuffix(module) +"')")
			exec command
			return module
Exemplo n.º 2
0
		def renameModule(self, module, name):
			"""
				Renames module
			"""
			# Rename container and all module components
			moduleContainer = self.Modules[module].container
			moduleList = cmds.container( (moduleContainer), query= True, nodeList= True )
			# Rename module instance and dictionary keys
			for obj in moduleList:
				if cmds.objExists(obj):
					newName = obj.replace(module, name )
					cmds.rename(obj, newName)
			newName = moduleContainer.replace(module, name )
			cmds.rename(moduleContainer, newName) 
			# Change dict entry in Rig instance
			self.Modules[Util.removeSuffix(newName)] = copy.deepcopy(self.Modules[module])
			self.Modules[Util.removeSuffix(newName)].container = newName
			del self.Modules[module]
Exemplo n.º 3
0
        def rig(self,**kwargs):
			# Variables
			clusterCtls = []
			
			# create registries
			self.createRegistry("regRigTransform")
			self.createRegistry("regRigShape")
			
			# Check for module container
			rootGrp = cmds.group( n = (self.name + "Rig_GRP"), em = True )
			jointGrp = cmds.group( n = (self.name + "Joint_GRP"), em = True, p= rootGrp)
			setupGrp = cmds.group( n = (self.name + "Setup_GRP"), em = True, p= rootGrp)
			controlGrp = cmds.group( n = (self.name + "Control_GRP"), em = True, p= rootGrp)
			
			# Get blueprinter joints
			blueprinters  = self.getBlueprinterJoints()
			for joint in blueprinters:
				if cmds.objExists(joint) == False:
					cmds.error(joint + " not found!")
			
			# Duplicate joints
			joints = Util.duplicateChain( self.name , blueprinters)
			cmds.parent(joints[0],jointGrp)
			
			# Hide blueprinters joints
			cmds.setAttr((self.name + "Blueprint_GRP" + ".v"), 0)
			
			#cmds.ikHandle()
			handleData = Util.createSplineIk(self.name, joints, sol= "ikSplineSolver")
			clusterList = Util.clusterizeCurve( handleData["CRV"] )
			
			cmds.parent(handleData["IK"], setupGrp)
			
			#create controls
			for cluster in clusterList:
				clusterName = Util.removeSuffix( cluster[0] )
				clusterCtl = Util.createControl( clusterName, {"match":cluster[0]}  )
				
				cmds.parent(cluster[1], clusterCtl[0] )
				cmds.parent(clusterCtl[1], controlGrp )
				clusterCtls.append(clusterCtl)
				
			# parent controls
			for x in range(1,  len(clusterCtls) ):
				cmds.parent( clusterCtls[x][1], clusterCtls[x-1][0] )
			cmds.parent(rootGrp, self.rootGrp)
			
			# store outputs
			self.storeOutput(clusterCtls[3][0],"endControl")
Exemplo n.º 4
0
 def populateConnectPopupMenu(self, popupKey, connetionType = "Input"):
     """
         Finds modules in scene and lists them in popup menu
     """
     kwargs = {}
     # get module list
     moduleList = self.rigInstance.getModuleContainers()
     for module in moduleList:
         moduleName = Util.removeSuffix(module)
         key = (moduleName + connetionType + "MenuItem")
         kwargs["command"] = ("NWRig.UI.setConnectionModule(\"" + moduleName + "\",\"" + connetionType + "\")")
         # clear popup menu
         if self.elementExists(key):
             self.removeElement(key)
         moduleMenuItem = self.menuItem({'key':key,'label':module,'parent':popupKey}, **kwargs)  
Exemplo n.º 5
0
		def getContainerChildren(self,cont):
			"""
				Finds all children containers of passed container
			"""
			containers = {}
			if cmds.objExists(cont):
				# populate module list
				contents = cmds.container(cont, query= True, nodeList= True)
				if contents == None:
					return containers
				for item in contents:
					if cmds.objectType(item) == "container":
						containers[Util.removeSuffix(item)] = self.reloadModule(item)
						# combine and overwrite lists
						containers = dict(containers.items() + (self.getContainerChildren(item)).items())
				return containers
			else:
				cmds.error("Root containter not found for refresh")
Exemplo n.º 6
0
 def rigModules(self,args):
     """
         Get selected modules and rig them recersively
     """
     moduleList= []
     
     if self.elementExists("rigList") == False:
         cmds.warning("No modules found in scene")
         return None
     
     selectedModule = Util.getFirst(self.queryInput("rigList"))
     selectedModule = selectedModule.strip()
     moduleList = self.recursiveGetModules(selectedModule)
     
     for module in moduleList:
         moduleName = Util.removeSuffix(module)
         moduleName = moduleName.strip()
         self.rigInstance.rigModule({"name": moduleName})
     # Load rig data
     self.rigInstance.loadRigData()