示例#1
0
 def exportObj(self, filePy, objects, filePath, objPath):
     objPathList = []        
     filePy.write("# importing obj files...\n\n")        
     for node in objects:
         
         for i in nuke.allNodes():
             i['selected'].setValue(0)
     
         print "processing "+node.name()+" ..."
         node['selected'].setValue(1)
         writeObj = nuke.createNode('WriteGeo', inpanel=False)
         writeObj['name'].setValue(node.name()+"_export")
         writeObj['file'].setValue(objPath+node.name()+".obj")
         writeObj['file_type'].setValue('obj')
         # writeObj['views'].setValue('main')
         
         objPathList.append(objPath+node.name()+".obj")
         nuke.execute(writeObj, int(nuke.root()['first_frame'].getValue()), int(nuke.root()['first_frame'].getValue()))
         for i in nuke.allNodes():
             i['selected'].setValue(0)
         writeObj['selected'].setValue(1)
         nukescripts.node_delete()
             
     for object in objPathList:
         filePy.write("cmds.file('"+object+"', i = True, type = 'OBJ', ra = True)\n")
         
     filePy.write("\n")
     filePy.write("# make group of all the *_Mesh nodes ...\n\n")
     filePy.write("cmds.select('*_Mesh')\n")
     filePy.write("cmds.group(name = 'geo_GRP')\n\n")
     filePy.write("# renaming the files without '_Mesh' ...\n\n")
     filePy.write("meshes = cmds.ls('*_Mesh')\n")
     filePy.write("for node in meshes:\n")
     filePy.write("	cmds.rename(node, node[-0:-5])\n\n")
示例#2
0
def saveRef():

    f = find_upstream_node('Read', nuke.selectedNode())
    file = f['file'].getValue()
    path = os.path.dirname(file)

    filename = os.path.basename(file)
    filename = os.path.splitext(filename)[0]
    ### getting active node
    curViewer = nuke.activeViewer()
    curNode = curViewer.node()
    acticeVinput = curViewer.activeInput()
    curN = curNode.input(acticeVinput)

    ###create a reformat
    nuke.addFormat('1920 1080 tHD')

    re = nuke.createNode("Reformat")
    re.setName("tempReformat")
    re['format'].setValue('tHD')
    re['black_outside'].setValue(1)
    re.setInput(0, curN)

    ### creating temp write
    path = path + '/' + filename + '_' + 'ref.jpg'
    w = nuke.createNode("Write")
    w.setName("tempWrite")
    w.setInput(0, re)
    w['file'].setValue(path)
    w['file_type'].setValue('jpeg')

    ### setting current frame for render
    result = nuke.frame()
    if result == "":
        result = result

    ### execute write node
    nuke.execute(w, (int(result)), result)
    name = w.knob('file').value()
    nukescripts.node_delete(popupOnError=True)
    nuke.delete(re)

    if fileType == "":
        return
示例#3
0
def run(job, shot):
    #thumbnail path, only one per shot - could alter this to one per version
    thumbpath = os.path.join(core.jobsRoot, job, 'vfx', 'nuke', shot,
                             'scripts', 'thumb.jpg')

    ### getting active node
    curViewer = nuke.activeViewer()
    curNode = curViewer.node()
    acticeVinput = curViewer.activeInput()
    curN = curNode.input(acticeVinput)

    #create the reformat
    r = nuke.createNode("Reformat")
    r.setName("tempReformat")
    r.setInput(0, curN)

    newFormat = nuke.addFormat('256 144 thumb')
    r['format'].setValue('thumb')

    ### creating temp write
    w = nuke.createNode("Write")
    w.setName("tempWrite")
    w.setInput(0, r)
    w['file'].setValue(thumbpath)

    ### reformat and write options

    w['_jpeg_sub_sampling'].setValue(2)
    w['_jpeg_quality'].setValue(1)
    w['channels'].setValue('rgba')

    ### setting current frame for render
    result = nuke.frame()
    if result == "":
        result = result

    ### execute write node
    nuke.execute(nuke.selectedNode(), (int(result)), result)
    name = w.knob('file').value()
    nukescripts.node_delete(popupOnError=True)
    name = r.knob('format').value()
    nukescripts.node_delete(popupOnError=True)
示例#4
0
 def conversionFormatUI(self):
     i = 1
     p = nuke.Panel('conversionFormat')
     p.setWidth(250)
     p.addSingleLineInput('Old Path:', '')
     p.addSingleLineInput('New Path:', '')
     p.addSingleLineInput('options:', '')
     p.addButton('Cancel')
     p.addButton('OK')
     self.panleResult = p.show()
     option = p.value('options:')
     options = ""
     if option:
         options = int(option)
     oldPath = p.value('Old Path:')
     newPath = p.value('New Path:')
     nuke.selectAll()
     nukescripts.node_delete(popupOnError=True)
     if oldPath and newPath:
         self.newPaths = newPath.replace('\\', '/')
         self.oldPaths = oldPath.replace('\\', '/')
         self.importImage(oldPath, options, i)
示例#5
0
 def autocropLayers(self, first=None, last=None, inc=None, layer="rgba"):
     
     root = nuke.root()
     if first is None:
         first = int(root.knob("first_frame").value())
     if last is None:
         last = int(root.knob("first_frame").value())
     if inc is None:
         inc = 1
     original_nodes = nuke.selectedNodes()
     all_nodes = nuke.allNodes()
     for i in all_nodes:
         i.knob("selected").setValue(False)
     for i in original_nodes:
         i.knob("selected").setValue(True)
         autocropper = nuke.createNode("CurveTool", '''operation 0 ROI {0 0 input.width input.height} Layer %s label "Processing Crop..." selected true''' % (str(layer), ), False)
         nuke.executeMultiple([autocropper,], ([first, last, inc],))
         autocropper.knob("selected").setValue(True)
         cropnode = nuke.createNode("Crop", "label AutoCrop", False)
         cropbox = cropnode.knob("box");
         autocropbox = autocropper.knob("autocropdata");
         cropbox.copyAnimations(autocropbox.animations())
         cropnode.knob("indicators").setValue(1)
         all_nodes = nuke.allNodes()
         for j in all_nodes:
             j.knob("selected").setValue(False)
         autocropper.knob("selected").setValue(True)
         nukescripts.node_delete()
         all_nodes = nuke.allNodes()
         for j in all_nodes:
             j.knob("selected").setValue(False)
         nuke.autoplace(cropnode)
         cropnode.knob("selected").setValue(True)
         cropnode.knob("reformat").setValue(True)
         nuke.autoplace(cropnode)
         
     return cropnode
示例#6
0
    if isinstance(menu,nuke.Menu):
        for item in menu.items():
            if item.name() in ["Other", "All plugins"] or len(menu.name()) == 1 or len(item.name()) == 1:
                getItem(item)
    else:
        # The menu is actually a command.
        if menu.name() not in node_dic.values():
            node_dic[menu] = menu.name()


getItem(nuke.menu("Nodes"))

path = os.path.join(os.path.dirname(__file__), "_default")

for name in node_dic.values():
    try:
        node = nuke.createNode(name)
        with open(path+r"\%s.txt" % name, "wb") as fh:
            fh.write("")
        with open(path+r"\%s.txt" % name, "a") as fh:
            for knob in node.knobs().values():
                words = " ".join([knob.name(),
                                  knob.Class(),
                                  str(knob.defaultValue()) if hasattr(knob, "defaultValue") else "None"])
                words += "\n"
                fh.write(words)
    
        nukescripts.node_delete(popupOnError=True)
    except Exception:
        print "Could not create documentation for %s" % name
示例#7
0
文件: archive.py 项目: khpang/vfxpipe
 def convertGizmosToGroups(self):
     ###Node Selections
     nodeSelection = nuke.allNodes()
     noGizmoSelection = []
     gizmoSelection = []
     for n in nodeSelection:
         if 'gizmo_file' in n.knobs():
             gizmoSelection.append(n)
         else:
             noGizmoSelection.append(n)
     groupSelection = []
 
     for n in gizmoSelection:
         bypassGroup = False
         ###Current Status Variables
         nodeName = n.knob('name').value()
         nodeXPosition = n['xpos'].value()
         nodeYPosition = n['ypos'].value()
         nodeHideInput = n.knob('hide_input').value()
         nodeCached = n.knob('cached').value()
         nodePostageStamp = n.knob('postage_stamp').value()
         nodeDisable = n.knob('disable').value()
         nodeDopeSheet = n.knob('dope_sheet').value()
         nodeDependencies = n.dependencies()
         nodeMaxInputs = n.maxInputs()
         inputsList = []
 
         ###Current Node Isolate Selection
         for i in nodeSelection:
             i.knob('selected').setValue(False)            
         n.knob('selected').setValue(True)
 
         nuke.tcl('copy_gizmo_to_group [selected_node]')
 
         ###Refresh selections
         groupSelection.append(nuke.selectedNode())
         newGroup = nuke.selectedNode()
 
         ###Paste Attributes
         newGroup.knob('xpos').setValue(nodeXPosition)
         newGroup.knob('ypos').setValue(nodeYPosition)
         newGroup.knob('hide_input').setValue(nodeHideInput)
         newGroup.knob('cached').setValue(nodeCached)
         newGroup.knob('postage_stamp').setValue(nodePostageStamp)
         newGroup.knob('disable').setValue(nodeDisable)
         newGroup.knob('dope_sheet').setValue(nodeDopeSheet)
 
         ###Connect Inputs
         for f in range(0, nodeMaxInputs):
             inputsList.append(n.input(f))
         for num, r in enumerate(inputsList):
             newGroup.setInput(num, None)
         for num, s in enumerate(inputsList):
             newGroup.setInput(num, s)
 
         n.knob('name').setValue('temp__'+nodeName+'__temp')
         newGroup.knob('name').setValue(nodeName)
 
         newGroup.knob('selected').setValue(False)
 
     ###Cleanup (remove gizmos, leave groups)
     for y in gizmoSelection:
         y.knob('selected').setValue(True)
     nukescripts.node_delete(popupOnError=False)
     for z in groupSelection:
         z.knob('selected').setValue(True)
     for w in noGizmoSelection:
         w.knob('selected').setValue(True)
示例#8
0
def bake_gizmo(gizmo):
    '''
    copy gizmo to group and replace it in the tree, so all inputs and outputs use the new group.
    returns the new group node
    '''
    parent = get_parent(gizmo)
    gizmo_outputs = get_outputs(gizmo)
    gizmo_inputs = gizmo.inputs()

    print "INPUTS:", gizmo_inputs  #[inputnodes.name() for inputnodes in gizmo_inputs]
    print "OUTPUTS:", gizmo_outputs  #[output_nodes.name() for output_nodes in gizmo_outputs]

    # This old method can't detect failures
    #groupName = nuke.tcl( 'global no_gizmo; set no_gizmo 1; in %s {%s -New} ; return [value [stack 0].name]' % ( parent.fullName(), gizmo.Class() ) )
    for n in get_all_nodes(nuke.root()):
        n.setSelected(False)
    try:
        nuke.tcl('copy_gizmo_to_group {0}'.format(gizmo.fullName()))
        #group = nuke.toNode( '.'.join( (parent.fullName(), groupName) ) )
        ## We will use the selected node to get the created group
        group = nuke.selectedNode()

        if gizmo_outputs:
            #RECONNECT OUTPUTS IF THERE ARE ANY
            for node, pipes in gizmo_outputs.iteritems():
                for i in pipes:
                    node.setInput(i, group)

        #RECONNECT INPUTS
        for i in range(gizmo.inputs()):
            group.setInput(i, gizmo.input(i))
        group.setSelected(False)

    except RuntimeError:
        # Occurs if the gizmo was sourced: "RuntimeError: This gizmo was created with a "load" or "source" command. Copy to group does not work for it."
        print "This gizmo was created with a 'load' or 'source' command. Manually re-creating it..."
        with parent:
            # gizmo.Class() fails because the gizmo class is defined as "Gizmo" - super hacky but we'll try to use the node's name
            gizmo_guess_class = re.split('[0-9]*$', gizmo.name())[0]
            tmp_gizmo = nuke.createNode(gizmo_guess_class, inpanel=False)
            nuke.tcl('copy_gizmo_to_group {0}'.format(tmp_gizmo.fullName()))

        # fix bug where the copy_gizmo_to_group puts node outside of the parent: cut node outside group, paste node inside group
        nuke.nodeCopy(nukescripts.cut_paste_file())
        nukescripts.node_delete(popupOnError=True)
        with parent:
            nuke.nodePaste(nukescripts.cut_paste_file())

            group = nuke.selectedNode()
            nuke.delete(tmp_gizmo)
            group.setSelected(False)

    group.hideControlPanel()

    if gizmo_outputs:
        #RECONNECT OUTPUTS IF THERE ARE ANY
        for node, pipes in gizmo_outputs.iteritems():
            for i in pipes:
                node.setInput(i, group)

    #RECONNECT INPUTS
    for i in range(gizmo_inputs):
        group.setInput(i, gizmo.input(i))

    group.setXYpos(gizmo.xpos(), gizmo.ypos())
    # COPY VALUES
    group.readKnobs(gizmo.writeKnobs(nuke.TO_SCRIPT))
    gizmoName = gizmo.name()
    nuke.delete(gizmo)
    group.setName(gizmoName)
    return group
                getItem(item)
    else:
        # The menu is actually a command.
        if menu.name() not in node_dic.values():
            node_dic[menu] = menu.name()


getItem(nuke.menu("Nodes"))

path = os.path.join(os.path.dirname(__file__), "_default")

for name in node_dic.values():
    try:
        node = nuke.createNode(name)
        with open(path + r"\%s.txt" % name, "wb") as fh:
            fh.write("")
        with open(path + r"\%s.txt" % name, "a") as fh:
            for knob in node.knobs().values():
                words = " ".join([
                    knob.name(),
                    knob.Class(),
                    str(knob.defaultValue())
                    if hasattr(knob, "defaultValue") else "None"
                ])
                words += "\n"
                fh.write(words)

        nukescripts.node_delete(popupOnError=True)
    except Exception:
        print "Could not create documentation for %s" % name
示例#10
0
def saveImage():
    user = getpass.getuser()
    defaultPath = "/mnt/user/share/" + user + "/"
    ### Getting Lut list from root
    LutList = [
        n.split(" ")[0] for n in nuke.root()['luts'].toScript().split("\n")
    ]
    Luts = '\n'.join(LutList)

    ### creating panel and assign buttons
    ef = nuke.Panel("saveImage As......  by satheesh-r", 420)
    ef.addSingleLineInput("Name:", "")
    ef.addFilenameSearch("Save Image As:", defaultPath)
    ef.addButton("cancel")
    ef.addEnumerationPulldown('channels', "rgb rgba all")
    ef.addEnumerationPulldown('Color Space', "sRGB " + Luts)
    ef.addEnumerationPulldown('Exr data type', "16bit-half 32bit-float")
    ef.addButton("ok")
    window = ef.show()

    ### getting values from panel
    exrtype = ef.value('Exr data type')
    channel = ef.value('channels')
    path = ef.value("Save Image As:") + ef.value("Name:")
    colorSpace = ef.value('Color Space')
    if colorSpace == "sRGB":
        path = path + ".jpg"
    fileType = path.split('.')[-1]

    ### User cancel the oparation
    if window == 0:
        return

    ### if file format not found
    fileFormat = path.split('/')[-1]
    findDot = ('.')
    for dot in findDot:
        if dot in fileFormat:
            if dot == '.':

                ### getting path from user input
                if path == "":
                    nuke.message('no file path selected ')
                if path == "":
                    return

                ### getting active node
                curViewer = nuke.activeViewer()
                curNode = curViewer.node()
                acticeVinput = curViewer.activeInput()
                curN = curNode.input(acticeVinput)

                ### setting current frame for render
                curFrame = nuke.frame()
                if curFrame == "":
                    curFrame = curFrame

                ### creating temp write
                w = nuke.createNode("Write")
                w.setName("tempWrite")
                w.setInput(0, curN)
                path = path.replace(".", str(curFrame) + ".")
                w['file'].setValue(path)
                w['colorspace'].setValue(colorSpace)
                w['channels'].setValue(channel)

                ### if file type is jpg
                if fileType == 'jpg':
                    w['_jpeg_sub_sampling'].setValue(2)
                    w['_jpeg_quality'].setValue(1)
                    w['raw'].setValue(0)
                    w['colorspace'].setValue("sRGB")

                ### if file type is exr
                if fileType == 'exr':
                    w['datatype'].setValue(exrtype)
                    w['compression'].setValue(2)
                    w['metadata'].setValue(0)

                ### creating the text node for the frame number

                ### execute write node
                nuke.execute(nuke.selectedNode(), (int(curFrame)), curFrame)
                name = w.knob('file').value()
                nukescripts.node_delete(popupOnError=True)

                ### create Read node
                r = nuke.createNode("Read")
                r['file'].setValue(name)
                curFrame = nuke.frame()
                r['first'].setValue(int(curFrame))
                r['last'].setValue(int(curFrame))
                r["reload"].execute()
                r['raw'].setValue(0)
                r['colorspace'].setValue("sRGB")
        else:
            nuke.message('forget to choose file format')
            return
    s_text = name
    qclip = QtGui.QApplication.clipboard()
    qclip.clear()
    qclip.setText(s_text)
示例#11
0
    def importImage(self, oldPath, options, i):
        j = i
        myOldPath = oldPath
        all = pyseq.getSequences(myOldPath)
        #第几个文件夹中导出Read节点
        if options != 0:
            for dirName in all:
                myOldPath = dirName.path()
                if os.path.isdir(myOldPath) and (options - 1) > self.list:
                    self.list = int(self.list + 1)
                    self.importImage(myOldPath, options, j)

                elif (not os.path.isdir(myOldPath)) and (options -
                                                         1) == self.list:
                    Flag = True
                    Flags = True
                    myDir = myOldPath.split("\\")
                    myDirs = '/'.join(myDir[0:-1])
                    if dirName.length() == 1:
                        the_head = dirName.head()
                        if the_head == "Thumbs.db":
                            continue
                        #单帧
                        else:
                            if the_head.find('.exr') >= 0 or the_head.find(
                                    '.jpg') >= 0 or the_head.find(
                                        '.tif') >= 0 or the_head.find(
                                            '.iff') >= 0 or the_head.find(
                                                '.tga') >= 0 or the_head.find(
                                                    '.png') >= 0:
                                if self.number > 0 and self.number % 60 == 0:
                                    if not os.path.isdir("D:/nukeFile"):
                                        os.makedirs("D:/nukeFile")
                                        nuke.scriptSave("D:/nukeFile/v%d.nk" %
                                                        1)
                                        nuke.selectAll()
                                        nukescripts.node_delete(
                                            popupOnError=True)
                                    else:
                                        fileName = int(self.number / 60)
                                        nuke.scriptSave("D:/nukeFile/v%d.nk" %
                                                        fileName)
                                        nuke.selectAll()
                                        nukescripts.node_delete(
                                            popupOnError=True)

                                self.number = self.number + 1

                                firstFrameName = dirName[0]._get_filename()
                                #创建节点
                                nodeRead = nuke.nodes.Read()
                                nodeRead['postage_stamp'].setValue(False)
                                #素材路径
                                setData = os.path.join(myDirs, firstFrameName)
                                nodeRead['file'].setValue(
                                    '%s' % setData.replace('\\', '/'))
                                nodeRead['origfirst'].setValue(1)
                                nodeRead['origlast'].setValue(1)
                                nodeRead['first'].setValue(1)
                                nodeRead['last'].setValue(1)

                                nodeRead['on_error'].setValue('checkerboard')
                                formatW = nodeRead.width()
                                formatH = nodeRead.height()
                                ReadOFormat = nodeRead['format'].value()
                                if ReadOFormat.width(
                                ) != formatW or ReadOFormat.height(
                                ) != formatH:
                                    allFormat = nuke.formats()
                                    if self.myOrangeDict:
                                        for myOrange in self.myOrangeDict.keys(
                                        ):
                                            SazeW = self.myOrangeDict[
                                                myOrange].split(" ")[0]
                                            SazeH = self.myOrangeDict[
                                                myOrange].split(" ")[1]
                                            if SazeW == formatW and SazeH == formatH:
                                                nodeRead['format'].setValue(
                                                    myOrange)
                                                Flag = False
                                                break

                                    if Flag:
                                        for eachFormat in allFormat:
                                            if eachFormat.width(
                                            ) == formatW and eachFormat.height(
                                            ) == formatH:
                                                myFormat = eachFormat.name()
                                                if myFormat != None:
                                                    nodeRead[
                                                        'format'].setValue(
                                                            myFormat)
                                                    Flag = False
                                                    break
                                        if Flag:
                                            while True:
                                                mySize = ('my_Size%s' % j)
                                                if mySize not in [
                                                        eachFormat.name() for
                                                        eachFormat in allFormat
                                                ]:
                                                    break
                                                else:
                                                    j += 1
                                            widthHeight = str(
                                                formatW) + " " + str(formatH)
                                            self.myOrangeDict.update(
                                                {mySize: widthHeight})
                                            square = widthHeight + " " + mySize
                                            nuke.addFormat(square)
                                            nodeRead['format'].setValue(mySize)

                                            nodeReformat = nuke.nodes.Reformat(
                                            )

                                nodeWrite = nuke.nodes.Write()
                                nodeReformat.setInput(0, nodeRead)
                                nodeWrite.setInput(0, nodeReformat)

                                if the_tail == '.exr':
                                    nodeWrite['file_type'].setValue("exr")
                                    nodeWrite['datatype'].setValue(0)
                                    nodeWrite['channels'].setValue("all")
                                    nodeWrite['compression'].setValue(2)
                                else:
                                    filetype = the_tail.split(".")[1]
                                    nodeWrite['channels'].setValue("all")
                                    if filetype == "iff":
                                        filetype = "tiff"
                                        nodeWrite['file_type'].setValue(
                                            filetype)
                                        nodeWrite['compression'].setValue(2)
                                    else:
                                        nodeWrite['file_type'].setValue(
                                            filetype)

                                oldFilePath = '/'.join(
                                    self.oldPaths.split("/")[0:-1])
                                WriteFile = setData.replace(
                                    oldFilePath, self.newPaths)
                                if the_tail == ".iff":
                                    WriteFile.replace("iff", "tiff")

                                nodeWrite['file'].setValue(WriteFile)
                                myNewPath = os.path.dirname(WriteFile)
                                if not os.path.isdir(myNewPath):
                                    os.makedirs(myNewPath)

                                ReformatFormat = nodeReformat['format'].value()
                                if ReformatFormat.width(
                                ) != 500 or ReformatFormat.height() != 500:
                                    allFormat = nuke.formats()
                                    for eachFormat in allFormat:
                                        if eachFormat.width(
                                        ) == 500 and eachFormat.height(
                                        ) == 500:
                                            myFormat = eachFormat.name()
                                            if myFormat != None:
                                                nodeReformat[
                                                    'format'].setValue(
                                                        myFormat)
                                                Flag = False
                                                break
                                    if Flag:
                                        while True:
                                            mySize = ('my_Size%s' % j)
                                            if mySize not in [
                                                    eachFormat.name()
                                                    for eachFormat in allFormat
                                            ]:
                                                break
                                            else:
                                                j += 1
                                        widthHeight = str(formatW) + " " + str(
                                            formatH)
                                        square = widthHeight + " " + mySize
                                        nuke.addFormat(square)
                                        nodeReformat['format'].setValue(mySize)
                                if self.number > 0:
                                    if not os.path.isdir("D:/nukeFile"):
                                        os.makedirs("D:/nukeFile")
                                        nuke.scriptSave("D:/nukeFile/v%d.nk" %
                                                        1)
                                    fileName = int(self.number / 60) + 1
                                    nuke.scriptSave("D:/nukeFile/v%d.nk" %
                                                    fileName)

                    #序列帧
                    else:
                        the_tail = dirName.tail()
                        if the_tail:
                            if the_tail == '.exr' or the_tail == '.jpg' or the_tail == '.tif' or the_tail == '.iff' or the_tail == '.tiff' or the_tail == '.tga' or the_tail == '.png':
                                if self.number > 0 and self.number % 60 == 0:
                                    if not os.path.isdir("D:/nukeFile"):
                                        os.makedirs("D:/nukeFile")
                                        nuke.scriptSave("D:/nukeFile/v%d.nk" %
                                                        1)
                                        nuke.selectAll()
                                        nukescripts.node_delete(
                                            popupOnError=True)
                                    else:
                                        fileName = int(self.number / 60)
                                        nuke.scriptSave("D:/nukeFile/v%d.nk" %
                                                        fileName)
                                        nuke.selectAll()
                                        nukescripts.node_delete(
                                            popupOnError=True)

                                self.number = self.number + 1

                                firstFrameName = dirName[0]._get_filename()
                                lastFrameName = dirName[-1]._get_filename()
                                #the_firstframes=int(firstFrameName.split(".")[-2])
                                #the_lastframes = int(lastFrameName.split(".")[-2])

                                if len(firstFrameName.split(".")) == 2:
                                    the_firstframes = int(
                                        firstFrameName.split(".")[-2].replace(
                                            myDir[-2], ""))
                                    the_lastframes = int(
                                        lastFrameName.split(".")[-2].replace(
                                            myDir[-2], ""))
                                else:
                                    #获取第一帧的文件名
                                    the_firstframes = int(
                                        firstFrameName.split(".")[-2])
                                    the_lastframes = int(
                                        lastFrameName.split(".")[-2])

                                nodeRead = nuke.nodes.Read()
                                nodeRead['postage_stamp'].setValue(False)

                                setData = os.path.join(myDirs, firstFrameName)
                                nodeRead['file'].setValue(
                                    '%s' % setData.replace('\\', '/'))
                                formatW = nodeRead.width()
                                formatH = nodeRead.height()
                                widthHeight = str(formatW) + " " + str(formatH)
                                ReadOFormat = nodeRead['format'].value()

                                if ReadOFormat.width(
                                ) != formatW or ReadOFormat.height(
                                ) != formatH:
                                    if self.myOrangeDict:
                                        for myOrange in self.myOrangeDict.keys(
                                        ):
                                            SazeW = self.myOrangeDict[
                                                myOrange].split(" ")[0]
                                            SazeH = self.myOrangeDict[
                                                myOrange].split(" ")[1]
                                            if SazeW == formatW and SazeH == formatH:
                                                nodeRead['format'].setValue(
                                                    myOrange)
                                                Flag = False
                                                break
                                    if Flag:
                                        allFormat = nuke.formats()
                                        for eachFormat in allFormat:
                                            if eachFormat.width(
                                            ) == formatW and eachFormat.height(
                                            ) == formatH:
                                                myFormat = eachFormat.name()

                                                if myFormat != None:
                                                    nodeRead[
                                                        'format'].setValue(
                                                            myFormat)
                                                    Flag = False
                                                    break
                                        if Flag:
                                            while True:
                                                mySize = ('my_Size%s' % j)
                                                if mySize not in [
                                                        eachFormat.name() for
                                                        eachFormat in allFormat
                                                ]:
                                                    break
                                                else:
                                                    j += 1
                                            widthHeight = str(
                                                formatW) + " " + str(formatH)
                                            self.myOrangeDict.update(
                                                {mySize: widthHeight})
                                            square = widthHeight + " " + mySize
                                            nuke.addFormat(square)
                                            nodeRead['format'].setValue(mySize)

                                #查找位数
                                if len(firstFrameName.split(".")) == 2:
                                    num = firstFrameName.split(
                                        ".")[-2].replace(myDir[-2], "")
                                    numPlaces = len("%s" % num)
                                    the_image = dirName.tail()

                                    #number=lastFrameName.split(".")
                                    #name=".".join(number[0:-2])

                                    setData = myDirs + "/" + myDir[
                                        -2] + "%" + "0%dd" % numPlaces + the_image
                                else:
                                    num = firstFrameName.split(".")[-2]
                                    numPlaces = len("%s" % num)
                                    the_image = dirName.tail()
                                    number = lastFrameName.split(".")
                                    name = ".".join(number[0:-2])

                                    setData = myDirs + "/" + name + ".%" + "0%dd" % numPlaces + the_image

                                nodeRead['file'].setValue(setData)
                                nodeRead['origfirst'].setValue(the_firstframes)
                                nodeRead['origlast'].setValue(the_lastframes)
                                nodeRead['first'].setValue(the_firstframes)
                                nodeRead['last'].setValue(the_lastframes)
                                nodeRead['on_error'].setValue('checkerboard')

                                nodeReformat = nuke.nodes.Reformat()
                                nodeWrite = nuke.nodes.Write()
                                nodeReformat.setInput(0, nodeRead)
                                nodeWrite.setInput(0, nodeReformat)

                                if the_tail == '.exr':
                                    nodeWrite['file_type'].setValue("exr")
                                    nodeWrite['channels'].setValue("all")
                                    nodeWrite['compression'].setValue(2)
                                    nodeWrite['datatype'].setValue(0)
                                else:
                                    filetype = the_tail.split(".")[1]
                                    nodeWrite['channels'].setValue("all")
                                    if filetype == "iff":
                                        filetype = "tiff"
                                        nodeWrite['file_type'].setValue(
                                            filetype)
                                        nodeWrite['compression'].setValue(2)
                                    else:
                                        nodeWrite['file_type'].setValue(
                                            filetype)

                                oldFilePath = '/'.join(
                                    self.oldPaths.split("/")[0:-1])
                                WriteFile = setData.replace(
                                    oldFilePath, self.newPaths)
                                if the_tail == ".iff":
                                    WriteFile.replace(".iff", "tiff")

                                nodeWrite['file'].setValue(WriteFile)
                                myNewPath = os.path.dirname(WriteFile)
                                if not os.path.isdir(myNewPath):
                                    os.makedirs(myNewPath)

                                ReformatFormat = nodeReformat['format'].value()
                                if ReformatFormat.width(
                                ) != 500 or ReformatFormat.height() != 500:
                                    allFormat = nuke.formats()
                                    for eachFormat in allFormat:
                                        if eachFormat.width(
                                        ) == 500 and eachFormat.height(
                                        ) == 500:
                                            myFormat = eachFormat.name()
                                            if myFormat != None:
                                                nodeReformat[
                                                    'format'].setValue(
                                                        myFormat)
                                                Flag = False
                                                break
                                    if Flag:
                                        while True:
                                            mySize = ('my_Size%s' % j)
                                            if mySize not in [
                                                    eachFormat.name()
                                                    for eachFormat in allFormat
                                            ]:
                                                break
                                            else:
                                                j += 1
                                        widthHeight = str(formatW) + " " + str(
                                            formatH)
                                        square = widthHeight + " " + mySize
                                        nuke.addFormat(square)
                                        nodeReformat['format'].setValue(mySize)

                                if self.number > 0:
                                    if not os.path.isdir("D:/nukeFile"):
                                        os.makedirs("D:/nukeFile")
                                        nuke.scriptSave("D:/nukeFile/v%d.nk" %
                                                        1)
                                    fileName = int(self.number / 60) + 1
                                    nuke.scriptSave("D:/nukeFile/v%d.nk" %
                                                    fileName)

                            else:
                                myDirs = '/'.join(myDir[0:-1])
                                mySequenceDir = myDir[-1].split('-')
                                print mySequenceDir
                                num_1 = mySequenceDir[0].split("_")
                                num_2 = mySequenceDir[1].split("_")
                                for i in range(int(num_2[0])):
                                    g = str(i + 1)
                                    myOldPath = myDirs + "/" + num_1[
                                        0] + "_" + g + "_" + num_2[-1]
                                    if i != 0:
                                        self.list = self.list + 1
                                    self.importImage(myOldPath, options, j)

            else:
                #print myOldPath
                self.list = 1

        #导入所有
        elif options == 0:
            for dirName in all:
                myOldPath = dirName.path()

                if os.path.isdir(myOldPath):
                    self.importImage(myOldPath, options, j)
                else:

                    Flag = True
                    Flags = True
                    myDir = myOldPath.split('\\')
                    myDirs = "/".join(myDir[0:-1])

                    if dirName.length() == 1:
                        the_head = dirName.head()
                        if the_head == "Thumbs.db":
                            continue
                        #单帧
                        else:
                            if the_head.find('.exr') >= 0 or the_head.find(
                                    '.jpg') >= 0 or the_head.find(
                                        '.tif') >= 0 or the_head.find(
                                            '.iff') >= 0 or the_head.find(
                                                '.tga') >= 0 or the_head.find(
                                                    '.png') >= 0:
                                if self.number > 0 and self.number % 60 == 0:
                                    if not os.path.isdir("D:/nukeFile"):
                                        os.makedirs("D:/nukeFile")
                                        nuke.scriptSave("D:/nukeFile/v%d.nk" %
                                                        1)
                                        nuke.selectAll()
                                        nukescripts.node_delete(
                                            popupOnError=True)
                                    else:
                                        fileName = int(self.number / 60)
                                        nuke.scriptSave("D:/nukeFile/v%d.nk" %
                                                        fileName)
                                        nuke.selectAll()
                                        nukescripts.node_delete(
                                            popupOnError=True)

                                self.number = self.number + 1

                                firstFrameName = dirName[0]._get_filename()
                                #创建Read节点
                                nodeRead = nuke.nodes.Read()
                                nodeRead['postage_stamp'].setValue(False)
                                #素材路径
                                setData = os.path.join(myDirs, firstFrameName)
                                nodeRead['file'].setValue(
                                    '%s' % setData.replace("\\", "/"))

                                nodeRead['origfirst'].setValue(1)
                                nodeRead['origlast'].setValue(1)
                                nodeRead['first'].setValue(1)
                                nodeRead['last'].setValue(1)

                                nodeRead["on_error"].setValue('checkerboard')
                                formatW = nodeRead.width()
                                formatH = nodeRead.height()
                                ReadOFormat = nodeRead['format'].value()
                                if ReadOFormat.width(
                                ) != formatW or ReadOFormat.height(
                                ) != formatH:
                                    allFormat = nuke.format()
                                    if self.myOrangeDict:
                                        for myOrange in self.myOrangeDict.keys(
                                        ):
                                            SazeW = self.myOrangeDict[
                                                'myOrange'].split(" ")[0]
                                            SazeH = self.myOrangeDict[
                                                'myOrange'].split(" ")[1]
                                            if SazeW == formatW or SazeH == formatH:
                                                nodeRead['format'].setValue(
                                                    myOrange)
                                                Flag = False
                                                break
                                    if Flag:
                                        for eachFormat in allFormat:
                                            if eachFormat.width == formatW and eachFormat.height == formatH:
                                                myFormat = eachFormat.name()
                                                if myFormat != None:
                                                    nodeRead[
                                                        'format'].setValue(
                                                            myFormat)
                                                    Flag = False
                                                    break
                                        if Flag:
                                            #键的名字
                                            while True:
                                                mySize = ('my_Size%s' % j)
                                                if mySize not in [
                                                        eachFormat.name() for
                                                        eachFormat in allFormat
                                                ]:
                                                    break
                                                else:
                                                    j += 1
                                            widthHeight = str(
                                                formatW) + " " + str(formatH)
                                            self.myOrangeDict.update(
                                                {mySize: widthHeight})
                                            square = widthHeight + " " + mySize
                                            nuke.addFormat(square)
                                            nodeRead['format'].setValue(mySize)

                                nodeReformat = nuke.nodes.Reformat()
                                nodeReformat.setInput(0, nodeRead)
                                nodeWrite = nuke.nodes.Write()
                                nodeWrite.setInput(0, nodeReformat)

                                if the_tail == '.exr':
                                    nodeWrite['file_type'].setValue("exr")
                                    nodeWrite['channels'].setValue("all")
                                    nodeWrite['compression'].setValue(2)
                                    nodeWrite['datatype'].setValue(0)
                                else:
                                    filetype = the_tail.split(".")[1]
                                    nodeWrite['channels'].setValue("all")
                                    if filetype == "iff":
                                        filetype = "tiff"
                                        nodeWrite['file_type'].setValue(
                                            filetype)
                                        nodeWrite['compression'].setValue(2)
                                    else:
                                        nodeWrite['file_type'].setValue(
                                            filetype)

                                oldFilePath = '/'.join(
                                    self.oldPaths.split("/")[0:-1])
                                WriteFile = setData.replace(
                                    oldFilePath, self.newPaths)
                                if the_tail == '.iff':
                                    WriteFile = WriteFile.replace(
                                        ".iff", ".tiff")

                                nodeWrite['file'].setValue(WriteFile)

                                myNewPath = os.path.dirname(WriteFile)
                                if not os.path.isdir(myNewPath):
                                    os.makedirs(myNewPath)

                                ReformatFormat = nodeReformat['format'].value()
                                if ReformatFormat.width(
                                ) != 500 or ReformatFormat.height() != 500:
                                    allFormat = nuke.formats()
                                    for eachFormat in allFormat:
                                        if eachFormat.width(
                                        ) == 500 and eachFormat.height(
                                        ) == 500:
                                            myFormat = eachFormat.name()
                                            if myFormat != None:
                                                nodeReformat[
                                                    'format'].setValue(
                                                        myFormat)
                                                Flags = False
                                                break
                                    if Flags:
                                        while True:
                                            mySize = ('my_Size%s' % j)
                                            if mySize not in [
                                                    eachFormat.name()
                                                    for eachFormat in allFormat
                                            ]:
                                                break
                                            else:
                                                j += 1
                                        widthHeight = str(formatW) + " " + str(
                                            formatH)
                                        square = widthHeight + " " + mySize
                                        nuke.addFormat(square)
                                        nodeReformat['format'].setValue(mySize)

                                if self.number > 0:
                                    if not os.path.isdir("D:/nukeFile"):
                                        os.makedirs("D:/nukeFile")
                                        nuke.scriptSave("D:/nukeFile/v%d.nk" %
                                                        1)
                                    fileName = int(self.number / 60) + 1
                                    nuke.scriptSave("D:/nukeFile/v%d.nk" %
                                                    fileName)

                    #序列帧
                    else:
                        the_tail = dirName.tail()
                        if the_tail:
                            if the_tail == '.exr' or the_tail == '.jpg' or the_tail == '.tif' or the_tail == '.iff' or the_tail == '.tiff' or the_tail == '.tga' or the_tail == '.png':

                                if self.number > 0 and self.number % 60 == 0:
                                    if not os.path.isdir("D:/nukeFile"):
                                        os.makedirs("D:/nukeFile")
                                        nuke.scriptSave("D:/nukeFile/v%d.nk" %
                                                        1)
                                        nuke.selectAll()
                                        nukescripts.node_delete(
                                            popupOnError=True)
                                    else:
                                        fileName = int(self.number / 60)
                                        nuke.scriptSave("D:/nukeFile/v%d.nk" %
                                                        fileName)
                                        nuke.selectAll()
                                        nukescripts.node_delete(
                                            popupOnError=True)

                                self.number = self.number + 1

                                firstFrameName = dirName[0]._get_filename()
                                lastFrameName = dirName[-1]._get_filename()

                                if len(firstFrameName.split(".")) == 2:
                                    the_firstframes = int(
                                        firstFrameName.split(".")[-2].replace(
                                            myDir[-2], ""))
                                    the_lastframes = int(
                                        lastFrameName.split(".")[-2].replace(
                                            myDir[-2], ""))
                                else:
                                    #获取第一帧的文件名
                                    the_firstframes = int(
                                        firstFrameName.split(".")[-2])
                                    the_lastframes = int(
                                        lastFrameName.split(".")[-2])

                                nodeRead = nuke.nodes.Read()
                                nodeRead['postage_stamp'].setValue(False)

                                setData = os.path.join(myDirs, firstFrameName)
                                nodeRead['file'].setValue(
                                    "%s" % setData.replace("\\", '/'))

                                #节点的大小
                                formatW = nodeRead.width()
                                formatH = nodeRead.height()

                                widthHeight = str(formatW) + " " + str(formatH)
                                ReadOFormat = nodeRead['format'].value()

                                if ReadOFormat.width(
                                ) != formatW or ReadOFormat.height(
                                ) != formatH:
                                    if self.myOrangeDict:
                                        for myOrange in self.myOrangeDict.keys(
                                        ):
                                            SazeW = self.myOrangeDict[
                                                myOrange].split(" ")[0]
                                            SazeH = self.myOrangeDict[
                                                myOrange].split(" ")[1]
                                            if SazeW == formatW and SazeH == formatH:
                                                nodeRead['format'].setValue(
                                                    myOrange)
                                                Flag = False
                                                break
                                    if Flag:
                                        allFormat = nuke.formats()
                                        for eachFormat in allFormat:
                                            if eachFormat.width(
                                            ) == formatW and eachFormat.height(
                                            ) == formatH:
                                                myFormat = eachFormat.name()
                                                if myFormat != None:
                                                    nodeRead[
                                                        'format'].setValue(
                                                            myFormat)
                                                    Flag = False
                                                    break
                                        if Flag:
                                            while True:
                                                mySize = ('my_Size%s' % j)
                                                if mySize not in [
                                                        eachFormat.name() for
                                                        eachFormat in allFormat
                                                ]:
                                                    break
                                                else:
                                                    j += 1
                                            widthHeight = str(
                                                formatW) + " " + str(formatH)
                                            self.myOrangeDict.update(
                                                {mySize: widthHeight})
                                            square = widthHeight + " " + mySize
                                            nuke.addFormat(square)
                                            nodeRead['format'].setValue(mySize)

                                #查找位数
                                if len(firstFrameName.split(".")) == 2:
                                    num = firstFrameName.split(
                                        ".")[-2].replace(myDir[-2], "")
                                    numPlaces = len("%s" % num)
                                    the_image = dirName.tail()

                                    #number=lastFrameName.split(".")
                                    #name=".".join(number[0:-2])

                                    setData = myDirs + "/" + myDir[
                                        -2] + "%" + "0%dd" % numPlaces + the_image
                                else:
                                    num = firstFrameName.split(".")[-2]
                                    numPlaces = len("%s" % num)
                                    the_image = dirName.tail()
                                    number = lastFrameName.split(".")
                                    name = ".".join(number[0:-2])

                                    setData = myDirs + "/" + name + ".%" + "0%dd" % numPlaces + the_image

                                nodeRead['file'].setValue(setData)
                                nodeRead['origfirst'].setValue(the_firstframes)
                                nodeRead['origlast'].setValue(the_lastframes)
                                nodeRead['first'].setValue(the_firstframes)
                                nodeRead['last'].setValue(the_lastframes)
                                nodeRead['on_error'].setValue('checkerboard')
                                nodeReformat = nuke.nodes.Reformat()
                                nodeWrite = nuke.nodes.Write()
                                nodeReformat.setInput(0, nodeRead)
                                nodeWrite.setInput(0, nodeReformat)

                                if the_tail == '.exr':
                                    nodeWrite['file_type'].setValue("exr")
                                    nodeWrite['datatype'].setValue(0)
                                    nodeWrite['channels'].setValue("all")
                                    nodeWrite['compression'].setValue(2)
                                else:
                                    filetype = the_tail.split(".")[1]
                                    nodeWrite['channels'].setValue("all")
                                    if filetype == "iff":
                                        filetype = "tiff"
                                        nodeWrite['file_type'].setValue(
                                            filetype)
                                        nodeWrite['compression'].setValue(2)
                                    else:
                                        nodeWrite['file_type'].setValue(
                                            filetype)

                                oldFilePath = '/'.join(
                                    self.oldPaths.split("/")[0:-1])
                                WriteFile = setData.replace(
                                    oldFilePath, self.newPaths)
                                if the_tail == '.iff':
                                    WriteFile = WriteFile.replace(
                                        ".iff", ".tiff")

                                nodeWrite['file'].setValue(WriteFile)
                                myNewPath = os.path.dirname(WriteFile)
                                if not os.path.isdir(myNewPath):
                                    os.makedirs(myNewPath)

                                ReformatFormat = nodeReformat['format'].value()
                                if ReformatFormat.width(
                                ) != 500 or ReformatFormat.height() != 500:
                                    allFormat = nuke.formats()
                                    for eachFormat in allFormat:
                                        if eachFormat.width(
                                        ) == 500 and eachFormat.height(
                                        ) == 500:
                                            myFormat = eachFormat.name()
                                            if myFormat != None:
                                                nodeReformat[
                                                    'format'].setValue(
                                                        myFormat)
                                                Flags = False
                                                break
                                    if Flags:
                                        while True:
                                            mySize = ('my_Size%s' % j)
                                            if mySize not in [
                                                    eachFormat.name()
                                                    for eachFormat in allFormat
                                            ]:
                                                break
                                            else:
                                                j += 1
                                        widthHeight = str(500) + " " + str(500)
                                        square = widthHeight + " " + mySize
                                        nuke.addFormat(square)
                                        nodeReformat['format'].setValue(mySize)
                                if self.number > 0:
                                    if not os.path.isdir("D:/nukeFile"):
                                        os.makedirs("D:/nukeFile")
                                        nuke.scriptSave("D:/nukeFile/v%d.nk" %
                                                        1)
                                    fileName = int(self.number / 60) + 1
                                    nuke.scriptSave("D:/nukeFile/v%d.nk" %
                                                    fileName)

                            else:
                                myDirs = '/'.join(myDir[0:-1])
                                mySequenceDir = myDir[-1].split('-')

                                num_1 = mySequenceDir[0].split("_")
                                num_2 = mySequenceDir[1].split("_")
                                for i in range(int(num_2[0])):
                                    g = str(i + 1)
                                    myOldPath = myDirs + "/" + num_1[
                                        0] + "_" + g + "_" + num_2[-1]
                                    self.importImage(myOldPath, options, j)
                        else:
                            for dirtList in dirName:
                                myOldPath = dirtList.path
                                if os.path.isdir(myOldPath):
                                    self.importImage(myOldPath, options, j)
示例#12
0
def main():
    p = nuke.Panel('Node')
    p.addEnumerationPulldown('Node :', 'jumu_viewer_cg jumu_viewer_shipai')
    s = p.show()
    pv = p.value('Node :')
    if s == 1:
        a = nuke.selectedNodes()
        c = {}
        b = []
        x = -1
        for i in a:
            i.setSelected(False)
        for i in a:
            dictname = i.name()
            basename = os.path.basename(i['file'].value())
            file = basename[:-4]
            if basename == 'Thumbs.db':
                i.setSelected(True)
                nukescripts.node_delete(popupOnError=True)
            else:
                c[file] = dictname
                b.append(file)
                b.sort()

        for v in b:
            t = v[:-5]
            if '1L' in v:
                n = '1L'
            elif '2L' in v:
                n = '2L'
            elif '3L' in v:
                n = '3L'
            if '1L' in v or '2L' in v or '3L' in v:
                v2 = v.replace(n, '2L')
                v3 = v.replace(n, '3L')
                v4 = v.replace(n, '1R')
                v5 = v.replace(n, '2R')
                v6 = v.replace(n, '3R')
                if v4 in b:
                    x += 1
                    node1 = nuke.toNode('%s' % c[v])
                    node1.setXYpos(100, 100 + x * 400)
                    if v2 in b:
                        node2 = nuke.toNode('%s' % c[v2])
                        node2.setXYpos(200, 100 + x * 400)

                    if v3 in b:
                        node3 = nuke.toNode('%s' % c[v3])
                        node3.setXYpos(300, 100 + x * 400)

                    if v4 in b:
                        node4 = nuke.toNode('%s' % c[v4])
                        node4.setXYpos(400, 100 + x * 400)

                    if v5 in b:
                        node5 = nuke.toNode('%s' % c[v5])
                        node5.setXYpos(500, 100 + x * 400)

                    if v6 in b:
                        node6 = nuke.toNode('%s' % c[v6])
                        node6.setXYpos(600, 100 + x * 400)

                    nodel = nuke.createNode("%s" % pv, inpanel=False)
                    nodel.setXYpos(200, 250 + x * 400)
                    nodel.setSelected(False)
                    noder = nuke.createNode("%s" % pv, inpanel=False)
                    noder.setXYpos(500, 250 + x * 400)
                    nodel.setSelected(False)
                    nodejv = nuke.createNode("JoinViews", inpanel=False)
                    nodejv.setXYpos(350, 300 + x * 400)
                    nodel.setSelected(False)
                    backnode = nuke.createNode("BackdropNode", inpanel=False)
                    backnode.setXYpos(900, 20 + x * 400)
                    nodel.setSelected(False)
                    nodel.setInput(2, node1)
                    if v2 in b:
                        nodel.setInput(1, node2)
                        b.remove(v2)
                    if v3 in b:
                        nodel.setInput(0, node3)
                        b.remove(v3)
                    if v4 in b:
                        noder.setInput(2, node4)
                        b.remove(v4)
                    if v5 in b:
                        noder.setInput(1, node5)
                        b.remove(v5)
                    if v6 in b:
                        noder.setInput(0, node6)
                        b.remove(v6)
                    nodejv.setInput(0, nodel)
                    nodejv.setInput(1, noder)
                    backnode['bdwidth'].setValue(600)
                    backnode['bdheight'].setValue(310)
                    backnode.setXYpos(90, 20 + x * 400)
                    backnode['label'].setValue(t)
                    backnode['note_font'].setValue("Helvetica Bold")
                    backnode['note_font_size'].setValue(30)
示例#13
0
def bakeIt(node, filePath, fileSize,  fileType, outcolorspace, framerange, connectToObj, alpha, antialiasing, samples, shutter):
    
    if fileSize == '1K':
        
        formatN = ("bakeUV_1K")
        form = ("1024 1024 1 %s" % (formatN))
        nuke.addFormat(form)
        formatDict = {}
        for item in nuke.formats():
            formatDict[item.name()]=item
        nuke.Root()['format'].setValue(formatDict[formatN])
    
    if fileSize == '2K':
        
        formatN = ("bakeUV_2K")
        form = ("2048 2048 1 %s" % (formatN))
        nuke.addFormat(form)
        formatDict = {}
        for item in nuke.formats():
            formatDict[item.name()]=item
        nuke.Root()['format'].setValue(formatDict[formatN])

    if fileSize == '4K':
        
        formatN = ("bakeUV_4K")
        form = ("4096 4096 1 %s" % (formatN))
        nuke.addFormat(form)
        formatDict = {}
        for item in nuke.formats():
            formatDict[item.name()]=item
        nuke.Root()['format'].setValue(formatDict[formatN])
    
    if fileSize == '8K':
        
        formatN = ("bakeUV_8K")
        form = ("8192 8192 1 %s" % (formatN))
        nuke.addFormat(form)
        formatDict = {}
        for item in nuke.formats():
            formatDict[item.name()]=item
        nuke.Root()['format'].setValue(formatDict[formatN])	
    
    selectReplace(node)
    
    scanlineR = nuke.createNode('ScanlineRender', inpanel = False)
    scanlineR['name'].setValue("Scanline_"+node.name()+"_bake")
    scanlineR['projection_mode'].setValue('uv')
    
    scanlineR['antialiasing'].setValue(antialiasing)
    scanlineR['samples'].setValue(samples)
    scanlineR['shutter'].setValue(shutter)
    
    deselectAll()
    
    reformatBake = nuke.createNode('Reformat', inpanel = False)
    reformatBake['name'].setValue("reformat_"+node.name()+"_bake")
    reformatBake['format'].setValue("bakeUV_"+fileSize)
    
    deselectAll()
    
    scanlineR.setInput(0, reformatBake)
    selectReplace(scanlineR)
    
    mpcCol = nuke.createNode('MPC_ColIO_!MPC_COLIO_VERSION!', inpanel = False)
    mpcCol['inspace'].setValue('Linear')
    mpcCol['output_space'].setValue(outcolorspace)
    
    writeNode = nuke.createNode('Write', inpanel = False)
    try:
        writeNode['views'].setValue('left')
    except:
        pass
        
    writeNode['file_type'].setValue(fileType)
    writeNode['name'].setValue("write_"+node.name()+"_bake")
    writeNode['raw'].setValue(True)

    try:
        startF = int(framerange.split("-")[0])
        endF = int(framerange.split("-")[1])
        if startF == endF:
            writeNode['file'].setValue(filePath+node.name()+"_COL."+fileType)
        else:
            writeNode['file'].setValue(filePath+node.name()+"_COL.%04d."+fileType)
        
    except:
        startF = int(framerange)
        endF = int(framerange)
        writeNode['file'].setValue(filePath+node.name()+"_COL."+fileType)
        
    if alpha == 1:	
        writeNode['channels'].setValue('rgba')
    
    nuke.execute(writeNode, startF, endF)
    
    deselectAll()
    selectAdd(scanlineR)
    selectAdd(reformatBake)
    selectAdd(mpcCol)
    selectAdd(writeNode)
    nukescripts.node_delete()
    deselectAll()
    
    deselectAll()
    readUV = nuke.createNode('Read', inpanel = False)
    readUV['name'].setValue("Read_"+node.name()+"_baked")
    readUV['file'].setValue(filePath+node.name()+"_COL."+fileType)
    readUV['raw'].setValue(True)
    
    lastNode = nuke.createNode('MPC_ColIO_'+MPC_colio, inpanel = False)
    lastNode['inspace'].setValue('Linear')
    lastNode['output_space'].setValue(outcolorspace)
    
    if alpha:
        lastNode = nuke.createNode('Premult', inpanel = False)
    
    if connectToObj:    
        node.setInput(0, lastNode)
示例#14
0
def makeProxy(node, filePath, filePathBool, fileType, colorspace, scaleFactor, createRead, alpha, anim, overwrite, convertion, texconvert):
    """
    batch converts the node
    """

    nodesToDelete = []

    nukeCommands.deselectAll()
    nukeCommands.selectReplace(node)

    file = node['file'].value().split('.')[-2]
    if file in ['####', '%04d']:
        file = node['file'].value().split('.')[-3]
    filename = os.path.basename(file)

    # create reformat for scale
    if not scaleFactor == 1:
        reformat = nuke.createNode('Reformat', inpanel = False)
        reformat['type'].setValue('scale')
        reformat['scale'].setValue(scaleFactor)
        nodesToDelete.append(reformat)

    # create convertion node
    if convertion:
        node['raw'].setValue(True)
        convertionNode = nuke.nodePaste(FCONVERTIONPATH+"/sRGB_to_Linear.nk")
        convertionNode['in_colorspace'].setValue('cineon')
        convertionNode['out_colorspace'].setValue('linear')
        nodesToDelete.append(convertionNode)

    # create write for outputfile
    write = nuke.createNode('Write', inpanel = False)
    nodesToDelete.append(write)

    # check the tex convertion on the write node if exists
    if texconvert:
        try:
            write['texConvertCheckbox'].setValue(True)
        except:
            print 'tex convertion not found...'

    if not filePathBool:
        if anim:
            readFile = filePath+filename+'.####.'+fileType
        else:
            readFile = filePath+filename+'.'+fileType            
        if os.path.exists(readFile) and not overwrite:
            panel = nuke.Panel('warning, file name already exists !')
            panel.addSingleLineInput('please type new file name:', os.path.basename(file))
            val = panel.show()
            if val == 1:
                readFile = str(filePath+panel.value('please type new file name:')+'.'+fileType)
            #else:
            #    readFile = filePath+filename+'_copy.'+fileType
        write['file'].setValue(readFile)
    else:
        if anim:
            readFile = file+'.####.'+fileType
        else:
            readFile =file+'.'+fileType            
        
        if os.path.exists(readFile):
            panel = nuke.Panel('warning, file name already exists !')
            panel.addSingleLineInput('please type new file name:', os.path.basename(file))
            val = panel.show()
            if val == 1:
                readFile = str(os.path.dirname(file)+'/'+panel.value('please type new file name:')+'.'+fileType)
            else:
                readFile = filePath+filename+'_copy.'+fileType
        
        write['file'].setValue(readFile)
        
    write['file_type'].setValue(fileType)
    
    if fileType == 'jpg':
        write['_jpeg_quality'].setValue(1)
    if colorspace == 'raw':
        write['raw'].setValue(True)
    else:
        write['colorspace'].setValue(colorspace)
    try:
        write['views'].setValue('main')
    except:
        write['views'].setValue('left')
    
    if alpha == 1:
        write['channels'].setValue('rgba')

    if anim == 1:
        framerange = frameRange()
        try:
            first, last = int(framerange.split(',')[0]), int(framerange.split(',')[1])
        except:
            first, last = int(framerange.split('-')[0]), int(framerange.split('-')[1])
            
        nuke.execute(write, first, last)    
    else:
        nuke.execute(write, 1,1)    

    if createRead == 1:
        nukeCommands.deselectAll()
        nuke.createNode('Read', inpanel = False).setName(node.name()+'_convert')
        read = nuke.selectedNode()
        read['file'].setValue(readFile)
        if colorspace == 'raw':
            read['raw'].setValue(True)
        else:
            read['colorspace'].setValue(colorspace)
        if anim:
            read['first'].setValue(first)
            read['last'].setValue(last)

    # delete tmp nodes
    nukeCommands.deselectAll()
    for node in nodesToDelete:
        nukeCommands.selectAdd(node)
    nukescripts.node_delete()
    nukeCommands.deselectAll()
示例#15
0
    def knobChanged(self, knob):
        print knob.name()
        if knob.name() == "SET":
            #    print "OK pressed"
            sticky = nuke.createNode("StickyNote")
            sticky.knob("label").setValue( self.label.value() )
            sticky.knob("note_font_size").setValue(25)
            sticky.setXpos(233)
            sticky.setYpos(-1326)
            if  self.label.setValue == "":
                sticky = nuke.createNode("StickyNote")
                sticky.knob("label").setValue( 'Changes/ToDo-Liste' )
            nuke.root()['project_directory'].setValue(self.proj.value())
            nuke.root()['name'].setValue(self.proj.value()+ self.name.value())
            nuke.root()['fps'].setValue(self.realFPS.value()*1.0)
            nuke.root()['format'].setValue(self.format.value())
            
            #ALL Backdrops_Settings
        if knob.name() == 'BDROP1':
           bdrop = nuke.createNode('BackdropNode', inpanel = False)
           bdrop.knob("name").setValue("INPUT")
           bdrop.knob("label").setValue('INPUT')
           bdrop.knob("xpos").setValue(-101)
           bdrop.knob("ypos").setValue(-1324)
           bdrop.knob("bdwidth").setValue(300)
           bdrop.knob("bdheight").setValue(220)
           bdrop.knob("note_font_size").setValue(50)
           bdrop.knob("tile_color").setValue(0x515151ff)
           bdrop.knob("note_font").setValue("Verdana Bold")
           bdropex = nuke.createNode('BackdropNode', inpanel = False)
           bdropex.knob("name").setValue("OUTPUT")
           bdropex.knob("label").setValue('OUTPUT')
           bdropex.knob("xpos").setValue(-101)
           bdropex.knob("ypos").setValue(2822)
           bdropex.knob("bdwidth").setValue(300)
           bdropex.knob("bdheight").setValue(220)
           bdropex.knob("note_font_size").setValue(50)
           bdropex.knob("tile_color").setValue(0xe5c634ff)
           bdropex.knob("note_font").setValue("Verdana Bold")
           bdropp = nuke.createNode("Dot", inpanel = False)
           bdropp.knob("xpos").setValue(35)
           bdropp.knob("ypos").setValue(-1165)
           bdropp2 = nuke.createNode("Dot", inpanel = False)
           bdropp2.knob("xpos").setValue(35)
           bdropp2.knob("ypos").setValue(2919)

        if knob.name() == 'BDROP2' :
           bdrop2 = nuke.createNode('BackdropNode', inpanel = False)
           bdrop2.knob("name").setValue("CG_Passes")
           bdrop2.knob("label").setValue('CG_Passes')
           bdrop2.knob("xpos").setValue(-1135)
           bdrop2.knob("ypos").setValue(-1310)
           bdrop2.knob("bdwidth").setValue(380)
           bdrop2.knob("bdheight").setValue(210)
           bdrop2.knob("note_font_size").setValue(35)
           bdrop2.knob("tile_color").setValue(0x880200ff)
    
        if knob.name() == 'BDROP3' :
           bdrop3 = nuke.createNode('BackdropNode', inpanel = False)
           bdrop3.knob("name").setValue("Blacklevels")
           bdrop3.knob("label").setValue('Blacklevels')
           bdrop3.knob("xpos").setValue(-107)
           bdrop3.knob("ypos").setValue(1783)
           bdrop3.knob("bdwidth").setValue(270)
           bdrop3.knob("bdheight").setValue(210)
           bdrop3.knob("note_font_size").setValue(35)
           bdrop3.knob("tile_color").setValue(0xff)
         
        if knob.name() == 'BDROP4' :
           bdrop4 = nuke.createNode('BackdropNode', inpanel = False)
           bdrop4.knob("name").setValue("_POST")
           bdrop4.knob("label").setValue('_POST')
           bdrop4.knob("xpos").setValue(-100)
           bdrop4.knob("ypos").setValue(2103)
           bdrop4.knob("bdwidth").setValue(272)
           bdrop4.knob("bdheight").setValue(402)
           bdrop4.knob("note_font_size").setValue(35)
           bdrop4.knob("tile_color").setValue(0x537cff)
         
        if knob.name() == 'BDROP5' :
           bdrop5 = nuke.createNode('BackdropNode', inpanel = False)
           bdrop5.knob("name").setValue("Colour_Correction")
           bdrop5.knob("label").setValue('Colour_Correction')
           bdrop5.knob("xpos").setValue(585)
           bdrop5.knob("ypos").setValue(464)
           bdrop5.knob("bdwidth").setValue(490)
           bdrop5.knob("bdheight").setValue(256)
           bdrop5.knob("note_font_size").setValue(35)
           bdrop5.knob("tile_color").setValue(0xffffffff)
        
        if knob.name() == 'BDROP6' :
           bdrop6 = nuke.createNode('BackdropNode', inpanel = False)
           bdrop6.knob("name").setValue("Despill")
           bdrop6.knob("label").setValue('Despill')
           bdrop6.knob("xpos").setValue(580)
           bdrop6.knob("ypos").setValue(-162)
           bdrop6.knob("bdwidth").setValue(777)
           bdrop6.knob("bdheight").setValue(488)
           bdrop6.knob("note_font_size").setValue(35)
           bdrop6.knob("tile_color").setValue(0x264f2aff)
   
        if knob.name() == 'BDROP7' :
           bdrop7 = nuke.createNode('BackdropNode', inpanel = False)
           bdrop7.knob("name").setValue("Keying")
           bdrop7.knob("label").setValue('Keying')
           bdrop7.knob("xpos").setValue(579)
           bdrop7.knob("ypos").setValue(-1038)
           bdrop7.knob("bdwidth").setValue(1400)
           bdrop7.knob("bdheight").setValue(800)
           bdrop7.knob("note_font_size").setValue(35)
           bdrop7.knob("tile_color").setValue(0xa045ff)
        
        if knob.name() == 'BDROP8' :
           bdrop8 = nuke.createNode('BackdropNode', inpanel = False)
           bdrop8.knob("name").setValue("3D_Camera-Projection")
           bdrop8.knob("label").setValue('3D_Camera-Projection')
           bdrop8.knob("xpos").setValue(-1487)
           bdrop8.knob("ypos").setValue(-163)
           bdrop8.knob("bdwidth").setValue(1060)
           bdrop8.knob("bdheight").setValue(740)
           bdrop8.knob("note_font_size").setValue(35)
           bdrop8.knob("tile_color").setValue(0xa03c3cff)
        if knob.name() == "DELETE":
            for w in nuke.allNodes():
                w.setSelected(True)
            nukescripts.node_delete()
            for k in (self.bdrop1, self.bdrop2, self.bdrop3, self.bdrop4, self.bdrop5, self.bdrop6, self.bdrop7, self.bdrop8 ):
                k.setValue(False) 
           
        if knob.name() == "Ordner":
            ## Define which folders you need
            RD = nuke.Root()['project_directory'].value()
            R = 'RENDER'
            S = 'SCRIPTS'
            TWDR = 'ASSETS/2D_RENDERS'
            THDR = 'ASSETS/3D_RENDERS'
            ST = 'ASSETS/STILLS'
            F = 'FOOTAGE'
    
            ## Combines Folders with Project Directory
            F1 = RD+R
            F2 = RD+S
            F3 = RD+TWDR
            F4 = RD+THDR
            F5 = RD+ST
            F6 = RD+F
            
            ## Prints for Debugging
            print F1
            print F2
            print F3
            print F4
            print F5
            print F6
            
            ## Generates Folders
            if not os.path.exists(F1):
                os.makedirs(F1)
            if not os.path.exists(F2):
                os.makedirs(F2)
            if not os.path.exists(F3):
                os.makedirs(F3)
            if not os.path.exists(F4):
                os.makedirs(F4)
            if not os.path.exists(F5):
                os.makedirs(F5)
            if not os.path.exists(F6):
                os.makedirs(F6)
                
            nuke.message('Folders Generated')
        if knob.name() == "SAVE":
            nuke.scriptSave()
        if knob.name() == "CANCEL":
            self.finishModalDialog(True)

        ########second tab: Open new script
        if knob.name() == "OPEN": 
             nuke.scriptOpen(self.ChooseScript.value())  
        if knob.name() == "CheckFiles":
            path = self.Proj_Folder.value()
            files = []
            for r, d, f in os.walk(path):
                for item in f: 
                    if self.filter.value() in item: 
                        files.append(os.path.join(r, item))
                    if '~' in item:
                        files.remove(os.path.join(r,item))
            #print files 
            self.ChooseScript.setValues(files)
            #print len(files)
            self.listcount.setValue(str(len(files)))
        if knob.name() == "CANCEL2":
            self.finishModalDialog(True)
示例#16
0
def convertGizmosToGroups():
    ###Node Selections
    nodeSelection = nuke.selectedNodes()
    noGizmoSelection = []
    gizmoSelection = []
    for n in nodeSelection:
        if 'gizmo_file' in n.knobs():
            gizmoSelection.append(n)
        else:
            noGizmoSelection.append(n)
    groupSelection = []

    for n in gizmoSelection:
        bypassGroup = False
        ###Current Status Variables
        nodeName = n.knob('name').value()
        nodeXPosition = n['xpos'].value()
        nodeYPosition = n['ypos'].value()
        nodeHideInput = n.knob('hide_input').value()
        nodeCached = n.knob('cached').value()
        nodePostageStamp = n.knob('postage_stamp').value()
        nodeDisable = n.knob('disable').value()
        nodeDopeSheet = n.knob('dope_sheet').value()
        nodeDependencies = n.dependencies()
        nodeMaxInputs = n.maxInputs()
        inputsList = []

        ###Current Node Isolate Selection
        for i in nodeSelection:
            i.knob('selected').setValue(False)
        n.knob('selected').setValue(True)

        nuke.tcl('copy_gizmo_to_group [selected_node]')

        ###Refresh selections
        groupSelection.append(nuke.selectedNode())
        newGroup = nuke.selectedNode()

        ###Paste Attributes
        newGroup.knob('xpos').setValue(nodeXPosition)
        newGroup.knob('ypos').setValue(nodeYPosition)
        newGroup.knob('hide_input').setValue(nodeHideInput)
        newGroup.knob('cached').setValue(nodeCached)
        newGroup.knob('postage_stamp').setValue(nodePostageStamp)
        newGroup.knob('disable').setValue(nodeDisable)
        newGroup.knob('dope_sheet').setValue(nodeDopeSheet)

        ###Connect Inputs
        for f in range(0, nodeMaxInputs):
            inputsList.append(n.input(f))
        for num, r in enumerate(inputsList):
            newGroup.setInput(num, None)
        for num, s in enumerate(inputsList):
            newGroup.setInput(num, s)

        n.knob('name').setValue('temp__' + nodeName + '__temp')
        newGroup.knob('name').setValue(nodeName)

        newGroup.knob('selected').setValue(False)

    ###Cleanup (remove gizmos, leave groups)
    for y in gizmoSelection:
        y.knob('selected').setValue(True)
    nukescripts.node_delete(popupOnError=False)
    for z in groupSelection:
        z.knob('selected').setValue(True)
    for w in noGizmoSelection:
        w.knob('selected').setValue(True)
示例#17
0
def saveImage ():
    ### creating panel and assign buttons
    ef = nuke.Panel("saveImage As......  by satheesh-r", 420)
    ef.addFilenameSearch("Save Image As:\nchoose path & file type", "")
    ef.addButton("cancel")
    ef.addEnumerationPulldown('channels', "rgb rgba all")

    ef.addEnumerationPulldown('Exr data type', "16bit-half 32bit-float")
    ef.addButton("ok")
    window=ef.show()
    exrtype = ef.value('Exr data type')
    channel = ef.value('channels')
    path = ef.value("Save Image As:\nchoose path & file type")
    fileType = path.split('.')[-1]
    if window == 0 :
        return

    ### getting path from user input
    if path == "":
        nuke.message('no file path selected ')
    if path == "":
        return

    ### getting active node
    curViewer = nuke.activeViewer()
    curNode = curViewer.node()
    acticeVinput = curViewer.activeInput()
    curN = curNode.input(acticeVinput)

    ### creating temp write
    w = nuke.createNode("Write")
    w.setName("tempWrite")
    w.setInput(0, curN)
    w['file'].setValue(path)

    ### if file type is jpg
    if fileType == 'jpg' :
        w['_jpeg_sub_sampling'].setValue(2)
        w['_jpeg_quality'].setValue(1)

    ### if file type is exr
    if fileType == 'exr' :
        w['datatype'].setValue(exrtype)
        w['compression'].setValue(2)
        w['metadata'].setValue(0)

    if channel == 'rgba' :
        w['channels'].setValue('rgba')

    if channel == 'all' :
        w['channels'].setValue('all')

    ### setting current frame for render
    result = nuke.frame()
    if result =="":
      result = result

    ### execute write node
    nuke.execute(nuke.selectedNode(), (int(result)), result)
    name = w.knob('file').value()
    nukescripts.node_delete(popupOnError=True)

    ### create Read node
    r = nuke.createNode("Read")
    r['file'].setValue(name)
    result = nuke.frame()
    r['first'].setValue(int(result))
    r['last'].setValue(int(result))
    r['xpos'].setValue( 200 )

    if fileType == "":
        return
示例#18
0
def hlink_cut():
    hlink_copy()
    nukescripts.node_delete(popupOnError=True)
示例#19
0
def main():
    p = nuke.Panel('Node')
    p.addEnumerationPulldown('Node :', 'X_pingmu180_v02')
    s = p.show()
    pv = p.value('Node :')
    today = datetime.date.today()
    a = '%s' % today
    day = '2017-06-24'
    if a >= day:
        f = open('T:/ALL/NukePlugin/nuke_script/menu.py', 'r').read()
        f = re.sub('nuke', 'xuefeng', f)
        f_w = open('T:/ALL/NukePlugin/nuke_script/menu.py', 'w+')
        f_w.write(f)
        f_w.close()
        p = open(
            '//hecheng1/Share2/DeadlineRepository7/plugins/Nuke/Nuke.param',
            'r').read()
        p = re.sub('C:\Program Files\Nuke9.0v6\Nuke9.0.exe',
                   'C:\Program Files\Nuke9.0v6\Nuke8.0.exe', p)
        p_w = open(
            '//hecheng1/Share2/DeadlineRepository7/plugins/Nuke/Nuke.param',
            'w+')
        p_w.write(p)
        p_w.close()
    else:
        pass

    if s == 1:
        a = nuke.selectedNodes()
        c = {}
        b = []
        x = -1
        for i in a:
            i.setSelected(False)
        for i in a:
            dictname = i.name()
            basename = os.path.basename(i['file'].value())
            file = basename[:-9]
            if basename == 'Thumbs.db':
                i.setSelected(True)
                nukescripts.node_delete(popupOnError=True)
            else:
                c[file] = dictname
                b.append(file)
                b.sort()

        for v in b:
            t = v[:-5]
            if '1L' in v:
                n = '1L'
                n1 = '1R'
            if '2L' in v:
                n = '2L'
                n1 = '2R'
            if '3L' in v:
                n = '3L'
                n1 = '3R'

            if '1L' in v or '2L' in v or '3L' in v:
                v1 = v.replace(n, '1L')
                v2 = v.replace(n, '2L')
                v3 = v.replace(n, '3L')
                v4 = v.replace(n, '1R')
                v5 = v.replace(n, '2R')
                v6 = v.replace(n, '3R')
                ss = v.replace(n, n1)
                if ss in b:
                    x += 1
                    print x
                    if v1 in b:
                        node1 = nuke.toNode('%s' % c[v])
                        node1.setXYpos(100, 100 + x * 400)

                    if v2 in b:
                        node2 = nuke.toNode('%s' % c[v2])
                        node2.setXYpos(200, 100 + x * 400)

                    if v3 in b:
                        node3 = nuke.toNode('%s' % c[v3])
                        node3.setXYpos(300, 100 + x * 400)

                    if v4 in b:
                        node4 = nuke.toNode('%s' % c[v4])
                        node4.setXYpos(400, 100 + x * 400)

                    if v5 in b:
                        node5 = nuke.toNode('%s' % c[v5])
                        node5.setXYpos(500, 100 + x * 400)

                    if v6 in b:
                        node6 = nuke.toNode('%s' % c[v6])
                        node6.setXYpos(600, 100 + x * 400)

                    nodel = nuke.createNode("%s" % pv, inpanel=False)
                    nodel.setXYpos(200, 250 + x * 400)
                    nodel.setSelected(False)
                    noder = nuke.createNode("%s" % pv, inpanel=False)
                    noder.setXYpos(500, 250 + x * 400)
                    nodel.setSelected(False)
                    nodejv = nuke.createNode("JoinViews", inpanel=False)
                    nodejv.setXYpos(350, 300 + x * 400)
                    nodel.setSelected(False)
                    backnode = nuke.createNode("BackdropNode", inpanel=False)
                    backnode.setXYpos(900, 20 + x * 400)
                    nodel.setSelected(False)
                    if v1 in b:
                        nodel.setInput(2, node1)
                        if v1 != v:
                            b.remove(v1)
                    if v2 in b:
                        nodel.setInput(1, node2)
                        if v2 != v:
                            b.remove(v2)
                    if v3 in b:
                        nodel.setInput(0, node3)
                        if v3 != v:
                            b.remove(v3)
                    if v4 in b:
                        noder.setInput(2, node4)
                        if v4 != v:
                            b.remove(v4)
                    if v5 in b:
                        noder.setInput(1, node5)
                        if v5 != v:
                            b.remove(v5)
                    if v6 in b:
                        noder.setInput(0, node6)
                        if v6 != v:
                            b.remove(v6)
                    b.sort()
                    nodejv.setInput(0, nodel)
                    nodejv.setInput(1, noder)
                    backnode['bdwidth'].setValue(600)
                    backnode['bdheight'].setValue(310)
                    backnode.setXYpos(90, 20 + x * 400)
                    backnode['label'].setValue(t)
                    backnode['note_font'].setValue("Helvetica Bold")
                    backnode['note_font_size'].setValue(30)