def getHiresSQ(): pat = re.compile('^\d{1,10}') n = nuke.toNode('HiRes') xpos = n.knob('xpos').value() ypos = n.knob('ypos').value() sObj = pipe.Projects().GetAssetByInfo(nuke.root().name()) hPath = sObj.GetShot().GetOutPath() + '/hires/' os.system('chmod 777 -R ' + hPath) vDirs = filter(lambda x: pat.search(x) , os.listdir(hPath)) sName = sObj.GetShot().name sqName = sObj.GetShot().seq_name seqObject = sObj.GetSequence() if vDirs: cPath = os.path.join(hPath,str(filesys.padding(max([(int(f)) for f in vDirs]),2))) else: cPath = os.path.join(hPath,str(filesys.padding(1,2))) hList = os.listdir(cPath) hList.sort() fUText = cPath + os.sep + hList[-1].rsplit('.',2)[0] + '.%0' + str(len(max(hList).rsplit('.', 2)[-2])) + 'd.' + hList[-1].split('.')[-1] + ' ' + str(int(hList[0].rsplit('.', 2)[-2])) + '-' + str(int(hList[-1].rsplit('.', 2)[-2])) dPath = os.path.join(filesys.REPO, sObj.GetProject().name, filesys.OUT,'hires',sqName, sName + seqObject.GetPrefix()) if not os.path.exists(dPath): filesys.mkdirs(dPath) shotObject = sObj.GetShot() sName = shotObject.name num_folder = cPath.split(os.sep)[-1] os.system('cd %s && ln -sf ../../../../film/sequences/%s/shots/%s/out/hires/%s'%(dPath,shotObject.seq_name,sName, num_folder )) r = nuke.createNode('Read') r.knob('name').setValue('Hires') r.knob('file').fromUserText(fUText) r.knob('xpos').setValue(xpos + 100) r.knob('ypos').setValue(ypos)
def newRender(): pat = re.compile('^\d{1,10}') n = nuke.selectedNode() fPath = n.knob('file').value() curHList = os.listdir(fPath.rsplit(os.sep, 1)[0]) hFolder = fPath.rsplit(os.sep, 2)[0] hName = fPath.rsplit(os.sep, 1)[-1] lPath = nuke.root().name() if curHList: q = nuke.ask('Create new version?') if q: vDirs = os.listdir(hFolder) #raise Exception( vDirs) vDirs = filter(lambda x: pat.search(x) , vDirs) #raise Exception( vDirs) if vDirs: hFPath = hFolder + os.sep + str(filesys.padding(max([(int(f)) for f in vDirs]) + 1, 2)) else: hFPath =hFolder + os.sep + str(filesys.padding(1, 2)) #hFPath = hFolder + os.sep + str(filesys.padding(max([(int(f)) for f in vDirs]) + 1, 2)) os.mkdir(hFPath) pipe.Projects().GetAssetByInfo(lPath).CheckIn('HiRes creation\n' + hFPath + os.sep + hName, True) n.knob('file').setValue(hFPath + os.sep + hName) else: nuke.scriptSave() pipe.Projects().GetAssetByInfo(lPath).CheckIn('HiRes creation v' + fPath.rsplit('/',2)[-2], True) else: nuke.scriptSave() pipe.Projects().GetAssetByInfo(lPath).CheckIn('HiRes creation v' + fPath.rsplit('/',2)[-2], True)
def PipeDailies(): n = nuke.selectedNode() sObj = pipe.Projects().GetAssetByInfo(nuke.root().name()) movPath = sObj.GetShot().GetOutPath() + '/dailies/' renderPath = sObj.GetDataPath() + '/render/tmp_dailies/' if not os.path.exists(renderPath): os.mkdir(renderPath) shotObject = sObj.GetShot() seqObject = sObj.GetSequence() sName = shotObject.name + seqObject.GetPrefix() if not os.listdir(movPath): vNum = '.v001' else: q = nuke.ask('Create new version?') if q: c = 1 else: c = 0 hList = filter(lambda x: pat.search(x) , os.listdir(movPath)) hList = [int(x.rsplit('.', 2)[-2].split('v')[-1]) for x in hList if x[:len(sName)] == sName] if not hList: vNum = '.v001' else: vNum = '.v' + filesys.padding(max(hList) + c, 3) pad = len(str(int(nuke.animationEnd()))) wNode = nuke.createNode('Write', inpanel=False) wNode.knob('file').setValue(renderPath+sName+ vNum + '.%0' + str(pad) + 'd.jpg') # if there are Slate render is 1 frame longer if n.Class() == 'Slate' or n.Class() == 'slate2': r = nuke.render (wNode.name(), start=int(nuke.animationStart()), end=int(nuke.animationEnd())+1, incr=1) else: r = nuke.render (wNode.name(), start=int(nuke.animationStart()), end=int(nuke.animationEnd()), incr=1) nuke.delete(wNode) # mov creation # paths to djv folder pp = os.getenv('PROGRAM_PATH') djv = 'LD_LIBRARY_PATH='+ pp + '/djv/lib ' + pp + '/djv/bin/djv_convert' djView = 'LD_LIBRARY_PATH='+ pp + '/djv/lib ' + pp + '/djv/bin/djv_view' print djv, djView jpgName = sName + vNum jpgList = [x for x in os.listdir(renderPath) if x[:len(jpgName)] == jpgName] jpgList.sort() sPath = renderPath + jpgList[0].rsplit('.', 1)[0] + '-' + jpgList[-1].rsplit('.', 2)[-2] + '.jpg' djvArg = sPath + ' ' + movPath + jpgName + '.mov' # runs convertation os.system(djv + ' ' + djvArg) os.system('chmod 777' + ' ' + movPath + jpgName + '.mov') # clears tmp jpg folder shutil.rmtree(renderPath) # creates copy to REPO dPath = filesys.REPO + '/' + sObj.GetProject().name + '/out/dailies/' + strftime('%y.%m.%d') if not os.path.exists(dPath): os.makedirs(dPath) sPath = movPath + jpgName + '.mov' os.system('cd %s && ln -sf ../../../film/sequences/%s/shots/%s/out/dailies/%s'%(dPath,shotObject.seq_name,shotObject.name,str(jpgName + '.mov'))) #os.system('cp -f ' + sPath + ' ' + dPath) # checkIn nuke.scriptSave() # make comment comment = 'Dailies creation v' + vNum.split('.')[-1] # send comment to DB sObj.Events().Add(comment,filesys.DAILIES, extra={'file':sPath,'user':filesys.USERNAME}) # sObj.CheckIn(comment, True) # opens *.mov file os.system(djView + ' ' + movPath + jpgName + '.mov')
def CreateHiresByAfanasy(): # check for all read nodes readList = [(node.knob('name').value(),node.knob('file').value()) for node in nuke.allNodes('Read')] rlen = len(filesys.REPO) suspected = [n for n in readList if n[1][:rlen] != filesys.REPO] if suspected: raise Exception('Error! Files in nodes below have to move into %s:\n%s'%(filesys.REPO,'\n'.join([str('%s - %s'%(n[0],n[1])) for n in suspected]))) # settings variables ext = 'dpx' cSpace = 'sRGB' pad = '.%06d.' # creating paths and HiRes name sObj = pipe.Projects().GetAssetByInfo(nuke.root().name()) nPath = sObj.GetCurrentActualPath() hName = sObj.GetShot().name + pad + ext hFPath = sObj.GetShot().GetOutPath() + '/hires/' hList = os.listdir(hFPath) hFolder = '' # write node creation if nuke.toNode('HiRes'): nuke.message('Node HiRes already exists. Use that one, %username% :-)') pass else: sNode = nuke.selectedNode() hNode = nuke.createNode('Write', inpanel=False) hNode.knob('name').setValue('HiRes') hNode.knob('colorspace').setValue(cSpace) hNode.knob('channels').setValue('rgb') aNode = nuke.createNode("afanasy", inpanel=False) aNode.knob('hmask').setValue('tfxr.*') aNode.knob('jname').setValue('%s'%sObj.name) aNode.knob('first').setValue(nuke.root().firstFrame()) aNode.knob('last').setValue(nuke.root().lastFrame()) # Hires folder is empty if not hList: hFolder = hFPath + str(filesys.padding(1, 2)) os.mkdir(hFolder) hNode.knob('file').setValue(hFolder + os.sep + hName) # Hires folder is not empty else: hList = filter(lambda x: pat.search(x) , hList) hFolder = hFPath + str(filesys.padding(max([(int(f)) for f in hList]), 2)) hNode.knob('file').setValue(hFolder + os.sep + hName) #Make link into out/hires folder shotObject = sObj.GetShot() sName = shotObject.name seqObject = sObj.GetSequence() dPath = os.path.join(filesys.REPO, sObj.GetProject().name, filesys.OUT,'hires',shotObject.seq_name, sName + seqObject.GetPrefix()) if not os.path.exists(dPath): filesys.mkdirs(dPath) num_folder = hFolder.split(os.sep)[-1] os.system('cd %s && ln -sf ../../../../film/sequences/%s/shots/%s/out/hires/%s'%(dPath,shotObject.seq_name,sName, num_folder ))
def PipeDailies(): n = nuke.selectedNode() sObj = pipe.Projects().GetAssetByInfo(nuke.root().name()) movPath = sObj.GetShot().GetOutPath() + '/dailies/' renderPath = sObj.GetDataPath() + '/render/tmp_dailies/' if not os.path.exists(renderPath): os.mkdir(renderPath) shotObject = sObj.GetShot() seqObject = sObj.GetSequence() sName = shotObject.name + seqObject.GetPrefix() if not os.listdir(movPath): vNum = '.v001' else: q = nuke.ask('Create new version?') if q: c = 1 else: c = 0 hList = filter(lambda x: pat.search(x), os.listdir(movPath)) hList = [ int(x.rsplit('.', 2)[-2].split('v')[-1]) for x in hList if x[:len(sName)] == sName ] if not hList: vNum = '.v001' else: vNum = '.v' + filesys.padding(max(hList) + c, 3) pad = len(str(int(nuke.animationEnd()))) wNode = nuke.createNode('Write', inpanel=False) wNode.knob('file').setValue(renderPath + sName + vNum + '.%0' + str(pad) + 'd.jpg') # if there are Slate render is 1 frame longer if n.Class() == 'Slate' or n.Class() == 'slate2': r = nuke.render(wNode.name(), start=int(nuke.animationStart()), end=int(nuke.animationEnd()) + 1, incr=1) else: r = nuke.render(wNode.name(), start=int(nuke.animationStart()), end=int(nuke.animationEnd()), incr=1) nuke.delete(wNode) # mov creation # paths to djv folder pp = os.getenv('PROGRAM_PATH') djv = 'LD_LIBRARY_PATH=' + pp + '/djv/lib ' + pp + '/djv/bin/djv_convert' djView = 'LD_LIBRARY_PATH=' + pp + '/djv/lib ' + pp + '/djv/bin/djv_view' print djv, djView jpgName = sName + vNum jpgList = [ x for x in os.listdir(renderPath) if x[:len(jpgName)] == jpgName ] jpgList.sort() sPath = renderPath + jpgList[0].rsplit( '.', 1)[0] + '-' + jpgList[-1].rsplit('.', 2)[-2] + '.jpg' djvArg = sPath + ' ' + movPath + jpgName + '.mov' # runs convertation os.system(djv + ' ' + djvArg) os.system('chmod 777' + ' ' + movPath + jpgName + '.mov') # clears tmp jpg folder shutil.rmtree(renderPath) # creates copy to REPO dPath = filesys.REPO + '/' + sObj.GetProject( ).name + '/out/dailies/' + strftime('%y.%m.%d') if not os.path.exists(dPath): os.makedirs(dPath) sPath = movPath + jpgName + '.mov' os.system( 'cd %s && ln -sf ../../../film/sequences/%s/shots/%s/out/dailies/%s' % (dPath, shotObject.seq_name, shotObject.name, str(jpgName + '.mov'))) #os.system('cp -f ' + sPath + ' ' + dPath) # checkIn nuke.scriptSave() # make comment comment = 'Dailies creation v' + vNum.split('.')[-1] # send comment to DB sObj.Events().Add(comment, filesys.DAILIES, extra={ 'file': sPath, 'user': filesys.USERNAME }) # sObj.CheckIn(comment, True) # opens *.mov file os.system(djView + ' ' + movPath + jpgName + '.mov')
def CreateHires(): # settings variables ext = 'dpx' cSpace = 'Cineon' pad = '.%06d.' # creating paths and HiRes name sObj = pipe.Projects().GetAssetByInfo(nuke.root().name()) nPath = sObj.GetCurrentActualPath() hName = sObj.GetShot().name + pad + ext hFPath = sObj.GetShot().GetOutPath() + '/hires/' hList = os.listdir(hFPath) # write node creation if nuke.toNode('HiRes'): nuke.message('Node HiRes already exists. Use that one, %username% :-)') pass else: sNode = nuke.selectedNode() hNode = nuke.createNode('Write', inpanel=False) hNode.knob('name').setValue('HiRes') hNode.knob('beforeRender').setValue('newRender()') hNode.knob('afterRender').setValue('getHiresSQ()') hNode.knob('colorspace').setValue(cSpace) hNode.knob('channels').setValue('rgb') # Hires folder is empty if not hList: hFolder = hFPath + str(filesys.padding(1, 2)) os.mkdir(hFolder) hNode.knob('file').setValue(hFolder + os.sep + hName) rq = nuke.ask('Render now?') if rq: hNode.knob('Render').execute() # Hires folder is not empty else: hList = filter(lambda x: pat.search(x) , hList) if hList: hFolder = hFPath + str(filesys.padding(max([(int(f)) for f in hList]), 2)) else: hFolder = hFPath + '01' hNode.knob('file').setValue(hFolder + os.sep + hName) rq = nuke.ask('Render now?') if rq: hNode.knob('Render').execute()