예제 #1
0
파일: hiRes.py 프로젝트: houdrook/pipeline
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)
예제 #2
0
파일: hiRes.py 프로젝트: houdrook/pipeline
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)
예제 #3
0
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')
예제 #4
0
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 ))
예제 #5
0
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')
예제 #6
0
파일: hiRes.py 프로젝트: houdrook/pipeline
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()