def KrakenBuildGuideFromRig_Execute(sceneRig): # Deffered importing: We can only import the kraken modules after the # plugin has loaded, as it configures the python import paths on load. from kraken.core.objects.rig import Rig from kraken import plugins from kraken.helpers.utility_methods import prepareToSave, prepareToLoad if sceneRig == None and si.Interactive is True: pickSceneRig = si.PickElement(constants.siModelFilter, "Kraken: Pick Rig", "Kraken: Pick Rig") if pickSceneRig('ButtonPressed') == 0: pass else: pickedSceneRig = pickSceneRig('PickedElement') if pickedSceneRig.Properties('krakenRig') is None: log( "Kraken: Picked object is not the top node of a Kraken Rig!", 4) return False sceneRig = pickedSceneRig else: if sceneRig.Properties('krakenRig') is None: log( "Kraken: 'sceneRig' argument is not the top node of a Kraken Rig!", 4) return False if sceneRig.Properties('krakenRigData') is None: log("Kraken: 'sceneRig' does not have a 'krakenRigData' property!", 4) return False guideData = sceneRig.Properties('krakenRigData').Value rig = Rig() jsonData = json.loads(guideData) jsonData = prepareToLoad(jsonData) rig.loadRigDefinition(jsonData) rig.setName(rig.getName()) builtRig = None progressBar = None try: progressBar = XSIUIToolkit.ProgressBar progressBar.Caption = "Building Kraken Rig: " + rig.getName() progressBar.CancelEnabled = False progressBar.Visible = True builder = plugins.getBuilder() builtRig = builder.build(rig) finally: if progressBar is not None: progressBar.Visible = False return builtRig
def doIt(self, argList): selObjects = self.parseArgs(argList) if selObjects.length() < 1: OpenMaya.MGlobal.displayWarning('Kraken: No objects selected, Build Guide From Rig cancelled.') return False firstObj = OpenMaya.MObject() selObjects.getDependNode(0, firstObj) firstObjDepNode = maya.OpenMaya.MFnDependencyNode(firstObj) if firstObjDepNode.hasAttribute('krakenRig') is False: OpenMaya.MGlobal.displayWarning('Kraken: Selected object is not the top node of a Kraken Rig!') return False guideData = firstObjDepNode.findPlug("krakenRigData").asString() rig = Rig() jsonData = json.loads(guideData) jsonData = prepareToLoad(jsonData) rig.loadRigDefinition(jsonData) rig.setName(rig.getName()) builder = plugins.getBuilder() builtRig = builder.build(rig) # return builtRig return None
def KrakenBuildGuideFromRig_Execute(sceneRig): # Deffered importing: We can only import the kraken modules after the # plugin has loaded, as it configures the python import paths on load. from kraken.core.objects.rig import Rig from kraken import plugins from kraken.helpers.utility_methods import prepareToSave, prepareToLoad if sceneRig == None and si.Interactive is True: pickSceneRig = si.PickElement(constants.siModelFilter, "Kraken: Pick Rig", "Kraken: Pick Rig") if pickSceneRig('ButtonPressed') == 0: pass else: pickedSceneRig = pickSceneRig('PickedElement') if pickedSceneRig.Properties('krakenRig') is None: log("Kraken: Picked object is not the top node of a Kraken Rig!", 4) return False sceneRig = pickedSceneRig else: if sceneRig.Properties('krakenRig') is None: log("Kraken: 'sceneRig' argument is not the top node of a Kraken Rig!", 4) return False if sceneRig.Properties('krakenRigData') is None: log("Kraken: 'sceneRig' does not have a 'krakenRigData' property!", 4) return False guideData = sceneRig.Properties('krakenRigData').Value rig = Rig() jsonData = json.loads(guideData) jsonData = prepareToLoad(jsonData) rig.loadRigDefinition(jsonData) rig.setName(rig.getName()) builtRig = None progressBar = None try: progressBar = XSIUIToolkit.ProgressBar progressBar.Caption = "Building Kraken Rig: " + rig.getName() progressBar.CancelEnabled = False progressBar.Visible = True builder = plugins.getBuilder() builtRig = builder.build(rig) finally: if progressBar is not None: progressBar.Visible = False return builtRig
def loadRigDefinitionFile(self, filepath): """Load a rig definition from a file on disk. Args: filepath (str): The file path of the rig definition file. Returns: bool: True if successful. """ Profiler.getInstance().push("LoadRigDefinitionFile:" + filepath) if not os.path.exists(filepath): raise Exception("File not found:" + filepath) with open(filepath) as rigFile: jsonData = json.load(rigFile) # now preprocess the data ready for loading. jsonData = prepareToLoad(jsonData) self.loadRigDefinition(jsonData) Profiler.getInstance().pop()
import json from kraken_examples.bob_guide_data import bob_guide_data from kraken.helpers.utility_methods import prepareToSave, prepareToLoad pureJSON = prepareToSave(bob_guide_data) str1 = json.dumps(pureJSON, indent=2) print str1 bob_guide_data = prepareToLoad(pureJSON) # Check that we can preprocess a data struct 2X bob_guide_data = prepareToLoad(bob_guide_data) # Re export to pure json pureJSON = prepareToSave(bob_guide_data) str2 = json.dumps(pureJSON, indent=2) print str1 == str2
from kraken.core.maths import * from kraken.helpers.utility_methods import prepareToSave, prepareToLoad from kraken_examples.biped.biped_guide_rig import BipedGuideRig bipedGuide = BipedGuideRig('Biped_Guide') guideData = bipedGuide.getData() pureJSON = prepareToSave(guideData) tmpFilePath = os.path.join(os.getcwd(), 'bipedGuideSaveTest.krg') try: with open(tmpFilePath, 'w+b') as tempFile: tempFile.write(json.dumps(pureJSON, indent=2)) with open(tmpFilePath, 'r') as tempFile: jsonData = json.load(tempFile) jsonData = prepareToLoad(jsonData) for k, v in jsonData.iteritems(): print k if k == 'components': for i in xrange(len(v)): print '\t' + v[i]['name'] finally: os.remove(tmpFilePath)