Beispiel #1
0
def main():
    if "spec" not in options:
        print "ERROR: Spec not set"
        sys.exit(2)

    spec = ueSpec.Spec(options["spec"])

    edit = ueEdit.getBuild(spec)

    if options["assets"]:
        if options["print"]:
            for sequence in sorted(edit):
                print "-> %s" % sequence
                for shot in sorted(edit[sequence]):
                    print "---> %s" % shot
        elif options["create"]:
            # Get the group and check agains the data in the edit file to see if anything has changed
            spec = ueSpec.Spec(proj=os.getenv("PROJ"))
            for sequence in sorted(edit):
                print "-> Creating sequence %s ..." % sequence
                spec.grp = sequence
                ueCreate.createGroup(spec, "lib")
                for shot in sorted(edit[sequence]):
                    if shot not in ["black", "white"]:
                        print "---> Creating shot %s ..." % shot
                        spec.asst = shot
                        ueCreate.createAsset(spec,
                                             "lib",
                                             dbMeta=edit[sequence][shot])
Beispiel #2
0
def addGizmosFromAsset(asst):
    gizmos = False
    a = ueAssetUtils.getElements(ueSpec.Spec(asst[0], asst[1], asst[2]))
    if "giz" in a:
        for n in a["giz"]:
            for p in a["giz"][n]:
                spec = ueSpec.Spec(asst[0], asst[1], asst[2], "giz", n, p)
                versions = ueAssetUtils.getVersions(spec)
                version = versions[len(versions) - 1]
                menu = "%s:%s:%s/%s/%s" % (spec.proj, spec.grp, spec.asst, n,
                                           p)
                # Add a 'ueGizVers' knob to hold the version of the gizmo
                # we're bringing in. This can be used for version control later.
                # When you add a custom knob, Nuke makes the User tab active,
                # so a hack around that is to add the node with the prefs panel
                # disabled, add the custom knobs, then show the prefs.
                command = str('n = nuke.createNode("' + version["file_name"] +
                              '", \
                           "name ' + p + '", inpanel=False); \
                           n.addKnob(nuke.Int_Knob("ueGizmoVers", "gizmo version")); \
                           n.knob("ueGizmoVers").setValue(' +
                              str(len(versions)) + '); \
                           n.showControlPanel()')
                nuke.toolbar("Nodes").addCommand("ueTools/" + menu, command)
                nuke.menu("Nuke").addCommand("ueTools/gizmos/" + menu, command)
                gizmos = True
    if gizmos:
        nuke.toolbar("Nodes").addCommand("ueTools/-", "")
Beispiel #3
0
    def updateVersInfo(self):
        try:
            ver = self.versions[int(vers)-1]
            spec = ueSpec.Spec(proj, grp, asst, elclass, eltype, elname, vers, elpass)

            self.verCreatedBy.setText(ver["created_by"])
            self.verCreatedAt.setText(ueCore.formatDatetime(ver["created_at"]))

            files = glob.glob(os.path.join(ver["path"], ver["file_name"]+"*"))
            self.verFilesList.clear()
            for f in sorted(files):
                self.verFilesList.addItem(QtGui.QListWidgetItem(os.path.basename(f)))

            if "comment" in ver:
                self.verComment.setText(ver["comment"])
            else:
                self.verComment.setText("N/A")

            if "thumbnail" in ver:
                spec = ueSpec.Spec(proj, grp, asst, elclass, eltype, elname, vers)
                f = ueAssetUtils.getThumbnailPath(spec)
                img = QtGui.QImage(f)
                imgs = img.scaled(200, 80, aspectRatioMode=QtCore.Qt.KeepAspectRatio)
                self.verThumb.setPixmap(QtGui.QPixmap.fromImage(imgs))
            else:
                img = QtGui.QImage(os.path.join(os.getenv("UE_PATH"), "lib", "placeholders", "thumbnail.png"))
                imgs = img.scaled(200, 80, aspectRatioMode=QtCore.Qt.KeepAspectRatio)
                self.verThumb.setPixmap(QtGui.QPixmap.fromImage(imgs))
        except IndexError:
            pass
Beispiel #4
0
def main():
    spec = ueSpec.Spec(options["spec"])

    edit = ueEdit.getEdit(spec)

    if options["assets"]:
        if options["print"]:
            for sequence in edit["sequences"]:
                print "-> %s" % sequence
                for shot in edit[sequence]["shots"]:
                    print "---> %s" % shot
        elif options["create"]:
            # Get the group and check agains the data in the edit file to see if anything has changed
            spec = ueSpec.Spec(proj=os.getenv("PROJ"))
            for sequence in edit["sequences"]:
                print "-> Creating sequence %s ..." % sequence
                spec.grp = sequence
                ueCreate.createGroup(spec, "default")
                for shot in edit[sequence]["shots"]:
                    if shot not in excludedShotNames:
                        print "---> Creating shot %s ..." % shot
                        spec.asst = shot
                        ueCreate.createAsset(spec, "default", dbMeta=edit[sequence][shot])
    elif options["play"]:
        shots = []
        for sequence in edit:
            spec.grp = sequence
            for shot in edit[sequence]:
                spec.asst = shot
                spec.eltype = "storyboard"
                spec.elname = "master"
                spec.elclass = "sb"

                versions = ueAssetUtils.getVersions(spec)

                if len(versions) == 0:
                    print "Nothing"
                    shots.append(os.path.join(os.getenv("UE_PATH"), "lib", "placeholders", "edit.1-24.png"))
                else:
                    print "Something"
                    shots.append(os.path.join(versions[-1]["path"], "edit.1-24.png"))

        arguments = ""
        for path in shots:
            arguments += " %s" % (path)

        print arguments

        os.system("rv %s" % arguments)
Beispiel #5
0
def getValues():
    dbMeta = {}
    if not comment == None:
        dbMeta["comment"] = comment
    if not thumbnail == None:
        dbMeta["thumbnail"] = thumbnail
    return ueSpec.Spec(proj, grp, asst, elclass, eltype, elname), dbMeta
Beispiel #6
0
 def loadElements(self):
     global asst, elements
     asst = str(self.asstMenu.currentText())
     elements = ueAssetUtils.getElements(ueSpec.Spec(proj, grp, asst))
     self.animationTab.reload()
     self.backgroundTab.reload()
     self.renderTab.reload()
Beispiel #7
0
    def loadElements(self):
        global asst
        asst = str(self.asstMenu.currentText())
        spec = ueSpec.Spec(proj, grp, asst)
        self.elements = ueAssetUtils.getElements(spec)
#        self.eltypeList.clear()
        self.loadTypes()
Beispiel #8
0
def getUeConstant():
    n = nuke.thisNode()

    spec = ueSpec.Spec(
        n.knob("proj").value(),
        n.knob("grp").value(),
        n.knob("asst").value(),
        n.knob("elclass").value(),
        n.knob("eltype").value(),
        n.knob("elname").value(),
        n.knob("vers").value())

    if not spec.proj == "" and not spec.grp == "" and \
       not spec.asst == "" and not spec.elclass == "" and \
       not spec.eltype == "" and not spec.elname == "" and \
       not spec.vers == "":
        versions = ueAssetUtils.getVersions(spec)
        if int(spec.vers) > len(versions):
            return
        v = versions[int(spec.vers) - 1]
        if v:
            layerFile = os.path.join(v["path"], "%s.col" % v["file_path"])
            if os.path.exists(layerFile):
                f = open(layerFile)
                palette = json.loads(layerfile.read())
                f.close()
                if spec.elname in palette:
                    colour.knob("color").setValue(palette[spec.elname][0], 0)
                    colour.knob("color").setValue(palette[spec.elname][1], 1)
                    colour.knob("color").setValue(palette[spec.elname][2], 2)
                    colour.knob("color").setValue(1.0, 3)
Beispiel #9
0
def destroyAsset():
    if asset == "":
        print "ERROR: Spec not set"
        sys.exit(2)

    spec = ueSpec.Spec(asset)

    ueDestroy.destroyAsset(spec)
Beispiel #10
0
def destroyElement():
    if element == "":
        print "ERROR: Spec not set"
        sys.exit(2)

    spec = ueSpec.Spec(element)

    ueDestroy.destroyElement(spec)
Beispiel #11
0
def createProject():
    if "name" not in project:
        print "ERROR: Project name not set"
        sys.exit(2)

    spec = ueSpec.Spec(project["name"])

    ueCreate.createProject(spec, dbMeta=project["dbMeta"])
Beispiel #12
0
def destroyGroup():
    if group == "":
        print "ERROR: Spec not set"
        sys.exit(2)

    spec = ueSpec.Spec(group)

    ueDestroy.destroyGroup(spec)
Beispiel #13
0
def deleteProject():
    if project == "":
        print "ERROR: Spec not set"
        sys.exit(2)

    spec = ueSpec.Spec(project)

    ueDestroy.destroyProject(spec)
Beispiel #14
0
def destroyVersion():
    if version == "":
        print "ERROR: Spec not set"
        sys.exit(2)

    spec = ueSpec.Spec(version)

    ueDestroy.destroyVersion(spec)
Beispiel #15
0
def loadGizmosFromAsset(asst):
    path = []
    a = ueAssetUtils.getElements(ueSpec.Spec(asst[0], asst[1], asst[2]))
    if "giz" in a:
        for n in a["giz"]:
            for p in a["giz"][n]:
                path.append(a["giz"][n][p]["path"])
    return path
Beispiel #16
0
 def loadLayerLists(self):
     elements = ueAssetUtils.getElements(ueSpec.Spec(proj, grp, asst))
     self.layerListPickerBox.clear()
     if __layerClass__ in elements:
         if __layerType__ in elements[__layerClass__]:
             for layerList in sorted(
                     elements[__layerClass__][__layerType__]):
                 self.layerListPickerBox.addItem(layerList)
Beispiel #17
0
    def __init__(self,
                 editType,
                 spec=ueSpec.Spec(os.getenv("PROJ"), "edt", "master"),
                 parent=None):
        QtGui.QDockWidget.__init__(self, parent)

        self.parent = parent
        self.spec = spec
        self.spec.elclass = "edt"
        self.spec.eltype = editType

        self.shotWidget = ueAssetWidgets.QUeShotMenuWidget(spec)
        self.editMenu = QtGui.QComboBox()
        self.editVersionsMenu = QtGui.QComboBox()
        self.newEdit = QtGui.QLineEdit()
        self.addNewEdit = QtGui.QPushButton("Add")
        self.editTree = QtGui.QTreeWidget()
        self.addGroup = QtGui.QPushButton("Add Group")
        self.addAsset = QtGui.QPushButton("Add Asset")
        self.update = QtGui.QPushButton("Edit")
        self.importEdit = QtGui.QPushButton("Import Edit")
        self.createAllButton = QtGui.QPushButton("Create/Update All")
        self.createSelectedButton = QtGui.QPushButton("Create/Update Selected")
        self.saveEditButton = QtGui.QPushButton("Save Edit")

        editWidget = QtGui.QWidget()
        editWidget.setLayout(QtGui.QHBoxLayout())
        editWidget.layout().addWidget(self.editMenu)
        editWidget.layout().addWidget(self.editVersionsMenu)
        editWidget.layout().addWidget(self.newEdit)
        editWidget.layout().addWidget(self.addNewEdit)

        editAssetsWidget = QtGui.QWidget()
        editAssetsWidget.setLayout(QtGui.QHBoxLayout())
        editAssetsWidget.layout().addWidget(self.addGroup)
        editAssetsWidget.layout().addWidget(self.addAsset)
        editAssetsWidget.layout().addWidget(self.update)
        editAssetsWidget.layout().addWidget(self.importEdit)
        editAssetsWidget.layout().addWidget(self.saveEditButton)

        buttonWidget = QtGui.QWidget()
        buttonWidget.setLayout(QtGui.QHBoxLayout())
        buttonWidget.layout().addWidget(self.createAllButton)
        buttonWidget.layout().addWidget(self.createSelectedButton)

        self.mainWidget = QtGui.QWidget()
        self.mainWidget.setLayout(QtGui.QVBoxLayout())
        self.mainWidget.layout().addWidget(self.shotWidget)
        self.mainWidget.layout().addWidget(editWidget)
        self.mainWidget.layout().addWidget(self.editTree)
        self.mainWidget.layout().addWidget(editAssetsWidget)
        self.mainWidget.layout().addWidget(buttonWidget)

        self.setWidget(self.mainWidget)
        self.setWindowTitle("Edit (sequence)")

        self.loadEdits()
Beispiel #18
0
 def loadAssets(self):
     global grp
     grp = str(self.grpMenu.currentText())
     spec = ueSpec.Spec(proj, grp)
     al = sorted(ueAssetUtils.getAssetsList(spec))
     self.asstMenu.clear()
     for a in al:
         self.asstMenu.addItem(a)
     self.loadElements()
Beispiel #19
0
 def loadGroups(self):
     global proj
     proj = str(self.projMenu.currentText())
     spec = ueSpec.Spec(proj)
     gl = sorted(ueAssetUtils.getGroupsList(spec))
     self.grpMenu.clear()
     for g in gl:
         self.grpMenu.addItem(g)
     self.loadAssets()
Beispiel #20
0
 def loadElements(self):
     global asst
     asst = str(self.asstMenu.currentText())
     spec = ueSpec.Spec(proj, grp, asst)
     self.elements = ueAssetUtils.getElements(spec)
     if elclass in self.elements:
         self.loadTypes()
     else:
         self.eltypeMenu.clear()
         self.elnameMenu.clear()
Beispiel #21
0
 def loadVersions(self):
     self.elname = str(self.backgroundList.currentItem().text())
     self.versList.clear()
     spec = ueSpec.Spec(proj, grp, asst, __bgClass__, __bgType__,
                        self.elname)
     vers = ueAssetUtils.getVersions(spec)
     for v in sorted(range(len(vers)), reverse=True):
         item = QtGui.QListWidgetItem("%04d" % int(v + 1))
         self.versList.addItem(item)
     self.versList.setCurrentItem(self.versList.item(0))
Beispiel #22
0
def ueSaveVers():
    if maya.cmds.file(q=True, sn=True) == "":
        ueSaveAs()
        return

    fi = ueMaya.parseFileInfo(maya.cmds.fileInfo(query=True))

    spec = ueSpec.Spec(fi["ueproj"], fi["uegrp"], fi["ueasst"], fi["ueclass"],
                       fi["uetype"], fi["uename"])

    ueMayaUtils.saveUtility(spec)
Beispiel #23
0
    def load(self):
        nodes = []
        for sequence in self.parent.edit["sequences"]:
            for shot in self.parent.edit[sequence]["shots"]:
                editShot = self.parent.edit[sequence][shot]
                storyboard = []
                animatic = []

                spec = ueSpec.Spec(os.getenv("PROJ"), sequence, shot, "sb",
                                   "storyboard", "master")

                storyboard = ueAssetUtils.getVersions(spec)

                if storyboard:
                    path = os.path.join(storyboard[-1]["path"],
                                        storyboard[-1]["file_name"] + ".jpg")
                    spec.eltype = "animatic"
                    spec.elclass = "an"
                    animatic = ueAssetUtils.getVersions(spec)
                    if animatic:
                        path = os.path.join(
                            animatic[-1]["path"],
                            animatic[-1]["file_name"] + ".####.jpeg")
                elif shot == "black":
                    path = os.path.join(os.getenv("UE_PATH"), "lib",
                                        "placeholders", "black.png")
                elif shot == "white":
                    path = os.path.join(os.getenv("UE_PATH"), "lib",
                                        "placeholders", "white.png")
                else:
                    path = os.path.join(os.getenv("UE_PATH"), "lib",
                                        "placeholders", "nuke.png")

                commands.addSource(path, None)

                sourceNode = commands.nodesOfType("RVSourceGroup")[-1]

                if storyboard and not animatic:
                    retimeNode = commands.newNode(
                        "RVRetimeGroup", "%s_%sRetime" % (sequence, shot))
                    commands.setNodeInputs(retimeNode, [sourceNode])
                    time = float(editShot["endFrame"]) - float(
                        editShot["startFrame"]) + 1
                    commands.setFloatProperty(
                        "%s_retime.visual.scale" % retimeNode, [float(time)],
                        False)
                    node = retimeNode
                else:
                    node = sourceNode

                nodes.append(node)

        commands.setNodeInputs("defaultSequence", nodes)
        commands.setViewNode("defaultSequence")
Beispiel #24
0
def listElements():
    elements = ueAssetUtils.getElements(settings["spec"])

    for e in sorted(elements):
        for t in sorted(elements[e]):
            for n in sorted(elements[e][t]):
                a = ueSpec.Spec(settings["spec"].proj, settings["spec"].grp,
                                settings["spec"].asst, e, t, n)
                element = str(a)
                if "paths" in settings:
                    element = "%s -> %s" % (element, n["path"])
                print element
Beispiel #25
0
def createGroup():
    if "name" not in group:
        print "ERROR: Group name not set"
        sys.exit(2)

    if "spec" not in group:
        print "ERROR: Spec not set"
        sys.exit(2)

    spec = ueSpec.Spec(group["spec"], group["name"])

    ueCreate.createGroup(spec, group["type"], dbMeta=group["dbMeta"])
Beispiel #26
0
 def loadVersions(self):
     self.elname = str(self.nameList.currentItem().text())
     spec = ueSpec.Spec(proj, grp, asst, self.elclass, self.eltype,
                        self.elname)
     self.versList.clear()
     vers = ueAssetUtils.getVersions(spec)
     if vers:
         for v in sorted(range(len(vers)), reverse=True):
             item = QtGui.QListWidgetItem("%04d" % int(v + 1))
             self.versList.addItem(item)
         self.versList.setCurrentItem(self.versList.item(0))
         self.loadPasses()
Beispiel #27
0
def getReadPath():
    n = nuke.thisNode()

    elpass = n.knob("elpass").value()
    if elpass == "":
        elpass = None

    spec = ueSpec.Spec(
        n.knob("proj").value(),
        n.knob("grp").value(),
        n.knob("asst").value(),
        n.knob("elclass").value(),
        n.knob("eltype").value(),
        n.knob("elname").value(),
        n.knob("vers").value(), elpass)

    p = os.path.join(os.getenv("UE_PATH"), "lib", "placeholders", "nuke.png")

    if not spec.proj == "" and not spec.grp == "" and \
       not spec.asst == "" and not spec.elclass == "" and \
       not spec.eltype == "" and not spec.elname == "" and \
       not spec.vers == "":
        versions = ueAssetUtils.getVersions(spec)
        if int(spec.vers) > len(versions):
            return p
        v = versions[int(spec.vers) - 1]
        if v:
            elpassDir = ""
            elpassFile = ""
            if not spec.elpass == None:
                elpassDir = spec.elpass
                elpassFile = "_" + spec.elpass
            files = glob.glob(
                os.path.join(v["path"], elpassDir,
                             v["file_name"] + elpassFile + "*"))
            if len(files) > 0:
                ext = files[0].split(".")[-1]

                if len(files) == 1:
                    p = os.path.join(v["path"], elpassDir,
                                     v["file_name"] + elpassFile + "." + ext)
                else:
                    p = os.path.join(
                        v["path"], elpassDir,
                        v["file_name"] + elpassFile + ".%04d." + ext)

                nuke.thisNode().knob("first").setValue(1)
                nuke.thisNode().knob("last").setValue(len(files))
                nuke.thisNode().knob("origfirst").setValue(1)
                nuke.thisNode().knob("origlast").setValue(len(files))

    return p
Beispiel #28
0
 def getLayers(self):
     layer = str(self.layerListPickerBox.currentText())
     element = ueAssetUtils.getVersions(
         ueSpec.Spec(proj, grp, asst, __layerClass__, __layerType__, layer))
     fileName = os.path.join(element[-1]["path"],
                             "%s.lay" % element[-1]["file_name"])
     if os.path.exists(fileName):
         f = open(fileName)
         layers = json.loads(f.read())
         f.close()
     else:
         layers = {}
     return layers
Beispiel #29
0
def printInfo():
    if "spec" not in info:
        print "ERROR: Spec not set"
        sys.exit(2)

    spec = ueSpec.Spec(info["spec"])

    if spec.grp == None:
        # Project info
        assetType = "project"
        assetInfo = ueAssetUtils.getProject(spec)
    elif spec.asst == None:
        # Group info
        assetType = "group"
        assetInfo = ueAssetUtils.getGroup(spec)
    elif spec.elclass == None and \
         spec.eltype == None and \
         spec.elname == None:
        # Asset info
        assetType = "asset"
        assetInfo = ueAssetUtils.getAsset(spec)
    elif spec.vers == None:
        # Element info
        assetType = "element"
        assetInfo = ueAssetUtils.getElement(spec)
        assetInfo = assetInfo[spec.elclass][spec.eltype][spec.elname]
    elif spec.elpass == None:
        # Version info
        assetType = "version"
        assetInfo = ueAssetUtils.getVersions(spec)[int(spec.vers) - 1]
    else:
        print "ERROR: Could not identify spec as a valid element"
        sys.exit(2)

    print "Information on %s:\n%s\n" % (assetType, str(info["spec"]))

    for a in sorted(assetInfo):
        # Get a padding value so the key/value columns will be neatly aligned
        spacePadding = 28 - len(a)

        # Parse the version and datetime info correctly
        if a == "versions":
            assetInfo[a] = len(assetInfo[a])
        elif a in ["created_at", "updated_at"]:
            assetInfo[a] = ueCore.formatDatetime(str(assetInfo[a]))

        # Get rid of the keys with _id because they're database stuff
        if not re.match(".*_id$", a):
            print "%s:%s%s" % (a, " " * spacePadding, str(assetInfo[a]))

    print ""
Beispiel #30
0
 def loadVers(self):
     global elname, vers
     elname = str(self.elnameList.currentItem().text())
     spec = ueSpec.Spec(proj, grp, asst, elclass, eltype, elname)
     self.versions = ueAssetUtils.getVersions(spec)
     self.versList.clear()
     if len(self.versions) > 0:
         for v in sorted(range(len(self.versions)), reverse=True):
             self.versList.addItem(QtGui.QListWidgetItem("%04d" % int(v+1)))
         self.versList.setCurrentItem(self.versList.item(0))
         vers = str(self.versList.currentItem().text())
     else:
         vers = None
     self.loadPasses()
     self.updateElInfo()