Beispiel #1
0
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
Beispiel #2
0
    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
Beispiel #3
0
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
Beispiel #4
0
    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()
Beispiel #5
0
    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()
Beispiel #6
0
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
Beispiel #7
0
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
Beispiel #8
0
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)