Example #1
0
    def __init__ (self) :
        self.rvc = rvNetwork.RvCommunicator("Nuke");
        self.port = 45128
        self.initialized = False
        self.running = False
        self.selectedNode = None

        self.commands = self.LockedFifo()
	self.crashFlag = self.LockedFlag()

        self.sessionDir = ""
        self.syncSelection = False
        self.syncFrameChange = False
        self.syncReadChanges = False
        self.rvExecPath = ""

        self.updateFromPrefs()

        self.portFile = self.sessionDir + "/rv" + str(os.getpid())

        self.zoomTargetNode = None

        log ("adding callbacks")
        # nuke.addUpdateUI (self.updateUI)
        nuke.addKnobChanged (self.knobChanged)
        nuke.addOnCreate (self.onCreate)
        nuke.addOnDestroy (self.onDestroy)
        nuke.addOnScriptClose (self.onScriptClose)
        nuke.addOnScriptLoad (self.onScriptLoad)
Example #2
0
    def __init__(self):
        self.rvc = rvNetwork.RvCommunicator("Nuke")
        self.port = 45128
        self.initialized = False
        self.running = False
        self.selectedNode = None

        self.commands = self.LockedFifo()
        self.crashFlag = self.LockedFlag()

        self.sessionDir = ""
        self.syncSelection = False
        self.syncFrameChange = False
        self.syncReadChanges = False
        self.rvExecPath = ""

        self.updateFromPrefs()

        self.portFile = self.sessionDir + "/rv" + str(os.getpid())

        self.zoomTargetNode = None

        log("adding callbacks")
        # nuke.addUpdateUI (self.updateUI)
        nuke.addKnobChanged(self.knobChanged)
        nuke.addOnCreate(self.onCreate)
        nuke.addOnDestroy(self.onDestroy)
        nuke.addOnScriptClose(self.onScriptClose)
        nuke.addOnScriptLoad(self.onScriptLoad)
Example #3
0
def addProfileOutput(filename):
    print "TIMING ENABLED: profile will be saved to " + filename
    import nukescripts
    nukeProfiler = nukescripts.NukeProfiler()
    nukeProfiler.setPathToFile(filename)
    nuke.addBeforeRender(nukeProfiler.resetTimersAndStartProfile)
    nuke.addAfterFrameRender(nukeProfiler.addFrameProfileAndResetTimers)
    nuke.addOnScriptClose(nukeProfiler.endProfile)
Example #4
0
 def addCallbackOnScriptClose(self, func, nodeClass=None, group=None):
     """Executed when Nuke is exited or the script is closed."""
     self._addNukeCallbackGroup(group)
     self.windowInstance()['callback'][group]['onScriptClose'][func].add(nodeClass)
     if not self.__windowHidden:
         if nodeClass is None:
             nuke.addOnScriptClose(func)
         else:
             nuke.addOnScriptClose(func, nodeClass=nodeClass)
Example #5
0
def setup():

    nuke.addBeforeRender(CALLBACKS_BEFORE_RENDER.execute)
    nuke.addOnScriptLoad(CALLBACKS_ON_SCRIPT_LOAD.execute)
    nuke.addOnScriptSave(CALLBACKS_ON_SCRIPT_SAVE.execute)
    nuke.addOnScriptClose(CALLBACKS_ON_SCRIPT_CLOSE.execute)
    nuke.addOnCreate(CALLBACKS_ON_CREATE.execute)
    nuke.addUpdateUI(CALLBACKS_UPDATE_UI.execute)
    if nuke.GUI:
        import nukescripts
        nukescripts.addDropDataCallback(CALLBACKS_ON_DROP_DATA.execute)
    def after_frame(self, context=None):
    	if context['frameProgress'] == context['numFrames']:
    		self.pids_done[context['id']] = True
		
		
	def render_next(self):
		if not self.nodes:
			return
		
		node = self.nodes[0]
		del self.nodes[0]  # it's taken, so remove it
		
		f = int(node['first'].value())
		l = int(node['last'].value())
		ranges = nuke.FrameRanges()
		ranges.add(nuke.FrameRange('%d-%d' % (f,l)))
		
		pid = nuke.executeBackgroundNuke(self.path, [node], ranges, ['main'], {})
		self.pids[pid] = node.name()
		self.pids_done[pid] = False
		self.pids_time[pid] = time.time()
		
		print 'Started rendering: %s, pid: %d' % (node.name(), pid)
	
	def start_render(self):
		print '\n'
		
		# get and sort selected write nodes
		self.nodes = nuke.selectedNodes('Write')
		self.nodes.sort(key=lambda x: x['render_order'].value())
		
		# disable proxy
		self.proxy = nuke.root()['proxy'].value()
    	nuke.root()['proxy'].setValue(False)
    	
    	nuke.addAfterBackgroundRender(self.after_render)
    	nuke.addAfterBackgroundFrameRender(self.after_frame)
    	nuke.addOnScriptClose(self.remove_callbacks)
    	
    	# start x number of background processes
    	for i in range(min(self.concurrent_jobs, len(self.nodes))):
    		self.render_next()
Example #7
0
nuke.randomWord = lambda: wordList[randint(0,len(wordList)-1)].title()

# ------------------------------------------------- #

def saveRandomName():
	"""
	Automatically saves comps on launch with a random name to NUKE_TEMP_DIR.
	To remove a comp from cache, delete all nodes, save, and quit.
	"""
	if nuke.root().name() == "Root":
		path =	os.environ["NUKE_TEMP_DIR"]\
				  + "/" + nuke.randomWord()\
				  + "-" + nuke.randomWord()\
				  + "_" + datetime.now().strftime("%d-%B-%Y")\
		+ "_v1.nk"
		print "Default saved: " + path
		nuke.scriptSaveAs(path)
		nuke.removeOnUserCreate(saveRandomName)

nuke.addOnUserCreate(saveRandomName)

def deleteEmptyScript():
	""" Removes any *saved* script if the script is empty."""
	allNodes = nuke.allNodes()
	dirPath,script = os.path.split(nuke.root().name())
	if len([n for n in allNodes if n.Class() != "Viewer"]) == 0 and script != "Root":
		os.chdir(dirPath)
		[os.remove(f) for f in os.listdir(dirPath) if re.search(script.split(".")[0],f)]

nuke.addOnScriptClose(deleteEmptyScript)
Example #8
0

def _cbk(name):
    nuke.tprint(name + " " + nuke.thisNode().name() + "." +
                nuke.thisKnob().name())


nuke.addOnUserCreate(_cb, ("onUserCreate"))

nuke.addOnCreate(_cb, ("onCreate"))

nuke.addOnScriptLoad(_cb, ("onScriptLoad"))

nuke.addOnScriptSave(_cb, ("onScriptSave"))

nuke.addOnScriptClose(_cb, ("onScriptClose"))

nuke.addOnDestroy(_cb, ("onDestroy"))

nuke.addKnobChanged(_cbk, ("knobChanged"))

nuke.addUpdateUI(_cb, ("updateUI"))

nuke.addAutolabel(_cb, ("autolabel"))

nuke.addBeforeRender(_cb, ("beforeRender"))

nuke.addBeforeFrameRender(_cb, ("beforeFrameRender"))

nuke.addAfterFrameRender(_cb, ("afterFrameRender"))
Example #9
0
import SocketServer

import nuke
from nukescripts import utils
import nuke_listener

try:
    listener = nuke_listener.NukeListener()
    listener.start()

    def killListener():
        listener.stop()

    nuke.addOnScriptClose(killListener)
except SocketServer.socket.error as e:
    print e
    print "Using existing HTTP listener"
Example #10
0
# coding=utf-8

import nuke

from menu_creator import RootMenu, save_record

toolkit_menu = RootMenu('Toolkit', nuke.menu('Nuke'))
toolkit_menu.initialize()
nuke.addOnScriptClose(save_record, args=(toolkit_menu, ))
Example #11
0
		for (i,node) in enumerate(readingNodes):
			if 'checksums' not in node.knobs().keys():
				tKnob = nuke.Text_Knob('checksums','checksums')
				tKnob.setVisible(False)
				node.addKnob(tKnob)
			(dirPath, basename, filename) = nuke.actualFilename(node)
			filepath = os.path.join(dirPath, filename)
			if os.path.exists(filepath):
				crc = hashlib.sha1(open(filepath).read(10485760)).hexdigest()
				node['checksums'].setValue(crc)
			task.setProgress(int(i*1./len(readingNodes)*100))
	if threaded: threading.Thread( None, run ).start()
	else: run()

nuke.addOnScriptLoad(checksumOfReadNode)
nuke.addOnScriptClose(checksumOfReadNode, args=(), kwargs={'threaded':False}, nodeClass='Root')

# ------------- Reconnect functions ---------------- #
# Callback functions used to reconnect all missing reads on
# scripLoad with the help of OS-dependent indexing services.
#

def reconnectMissing(indexCmd):
	# On Windows, use Everything (http://www.voidtools.com/).
	# Assumes "es.exe" command line program is in PATH. Note that
	# "es.exe" doesn't work with networked drives.
	# On OS X, use Spotlight.
	errors = [n for n in nuke._allNodes() if n.hasError() and nuke.filename(n) is not None]
	if errors:
		task = nuke.ProgressTask("Missing files!")
		task.setMessage("Reconnecting %i nodes" % len(errors))