Beispiel #1
0
    def _makeFile(versionName, subdir):
        '''sets out values
        @versionName: name of the version, format differs between delivery and non-delivery, ie. show_shot_type_pass_v###
        @subdir: sub-directory under version directory
        '''
        # Version directory
        versionDir = joinPath(TYPE_CONFIG[just_verType]['DIR'], versionName)
        out_file = joinPath(
            versionDir,
            subdir,
            '{versionName}.{frame}.{ext}'.format(versionName=versionName,frame=PADDING_FRAME,ext=TYPE_CONFIG[just_verType]['EXT'])
            )

        # Output file scriptcopy
        out_scriptcopy = joinPath(versionDir,'%s.scriptcopy.nk' % versionName)

        return out_file, out_scriptcopy
Beispiel #2
0
def getLightingPath():
    '''get lighting render dir from kupipeline'''
    import mod_StudioLoad

    SHOW = mod_StudioLoad.LoadSlate()['SHOW']
    SHOT = mod_StudioLoad.LoadSlate()['SHOT']
    path = joinPath('K:/PROJECTS/Personal/', SHOW, SHOT, 'assets', 'lighting')
    return path
Beispiel #3
0
def render_node(node):
    '''launch render'''
    out_path = node['file'].value()
    out_scriptcopy = node['tx_scriptcopy'].value()
    startFrame = int(nuke.Root()['first_frame'].value())
    endFrame = int(nuke.Root()['last_frame'].value())

    def _soloWrite(sel_node, all_enabled_write, mode='solo'):
        if mode == 'solo':
            for s in all_enabled_write:
                if s != sel_node.name():
                    print('node disabled---' + s)
                    nuke.toNode(s)['disable'].setValue(True)
        elif mode == 'reverse':
            for s in all_enabled_write:
                nuke.toNode(s)['disable'].setValue(False)
                print('node enabled---' + s)

    askMessage = "Render Node: %s\nFile: %s\nFramerage: %s-%s\n" % (
        node.name(), os.path.basename(
            node['file'].value()), startFrame, endFrame)
    c = nuke.ask(askMessage)
    if c:
        if not os.path.exists(os.path.dirname(out_path)):
            p = os.path.dirname(out_path)
            os.makedirs(p)
            print("out path created --- %s" % p)
        if not os.path.exists(os.path.dirname(out_scriptcopy)):
            s = os.path.dirname(out_scriptcopy)
            os.makedirs(s)
            print("out scriptcopy created --- %s" % s)

        all_enabled_write = [
            n.name() for n in nuke.allNodes('Write')
            if n['disable'].value() == False
        ]
        _soloWrite(node, all_enabled_write, mode='solo')
        nuke.scriptSave()
        thisScript_path = nuke.scriptName()
        shutil.copy2(thisScript_path, out_scriptcopy)

        # nuke.render(node, startFrame, endFrame)

        exe = joinPath(nuke.EXE_PATH).replace('/', '\\')

        cmd_str = """start cmd /k "{exe}" -t -m 22 -xi {script} {start}-{end}""".format(
            exe=exe,
            node=node.name(),
            script=thisScript_path,
            start=startFrame,
            end=endFrame)

        subprocess.Popen(cmd_str, shell=True)
        _soloWrite(node, all_enabled_write, mode='reverse')
    else:
        print("user cancelled")
Beispiel #4
0
def getAOVs(dir_renderVersion):
    '''get renderLayer, then passes
	@path: Render root path (ie. '/TIO_orbit_1k_v001'), str
	return: {<renderLayer>: [<renderPasses>]}
	'''
    ls_aov = {}  # {RenderLayer: [RenderPasses, RenderPasses]}
    for l in nuke.getFileNameList(dir_renderVersion):
        thisLayer = [
            p for p in nuke.getFileNameList(joinPath(dir_renderVersion, l))
        ]
        ls_aov[l] = thisLayer

    return ls_aov
Beispiel #5
0
    def get_nuke_knobs(self):
        '''get the selected node and its knobs
		return: (tuple), (obj) node object, (list of str) knob names 
		'''

        _n = nuke.selectedNode()
        _nodename = _n.name()
        _knobs = KNOBS_NK[_n.Class()]
        self.group_knobs.setTitle(_nodename)
        self.node_icon.setPixmap(
            QtGui.QPixmap(joinPath(DIR_ICON, '%s.png' % _n.Class())))

        return _n, _knobs
Beispiel #6
0
    def onTakeoff(self):
        debug_path = self.path.text()
        debug_file = self.file.currentText()
        debug_func = self.func.text()

        if debug_path and debug_file:
            pyString = open(joinPath(debug_path, debug_file), 'r').read()
            callFunc = '\n' + debug_func
            pyString += callFunc
            compiled = compile(pyString, '<string>', 'exec')
            exec(compiled, globals())
            self.save_log()
        else:
            nuke.message("Fail to load file")
Beispiel #7
0
    def get_lsFunc(self):
        '''get functions defined in the file
        return: list of functions, (list)
        '''

        debug_path = self.path.text()
        debug_file = self.file.currentText()
        f = joinPath(debug_path, debug_file)

        ls_func = []
        try:
            with open(f, 'r') as pyString:
                for l in pyString:
                    if l.strip().endswith('():') and re.search('def\s', l):
                        l=l.strip('def ')
                        l=l.replace(':\n', '')
                        ls_func.append(l)
        except: pass
        return ls_func
Beispiel #8
0
def createRead(path):
    '''create read from path
	@path: full path for AOV, (str)
	return: aov read node, (obj)
	'''

    exrs = nuke.getFileNameList(path)[0]  # ['albedo.####.exr 1-96']
    frames, range = exrs.split(' ')
    first, last = range.split('-')
    first = int(first)
    last = int(last)
    aov = nuke.nodes.Read(file=joinPath(path, frames),
                          name=os.path.basename(path),
                          first=first,
                          last=last,
                          label=os.path.basename(path))
    isData = True if aov.name() in DATA_AOV else False
    aov['raw'].setValue(isData)

    return aov
    version 0.0
	- nukescript panel for testing modules

    version 1.0
    - save a log with recent test and auto load on start

	'''
    return ver


#------------------------------------------------------------------------------
#-Global Variables
#------------------------------------------------------------------------------

USER_NUKE = joinPath(os.getenv('HOME'), '.nuke/')
LOG_FILE = joinPath(USER_NUKE, 'TestFlight_log.json')

#------------------------------------------------------------------------------
#-Supporting Functions
#------------------------------------------------------------------------------


def findDraftDir():
    '''finds the mod_Draft dir as for default path'''
    slate = mod_StudioLoad.LoadSlate()
    path_draft = os.path.join(os.getenv('KU_PKG_PATH'),
                              '_pkg_KuFunc/').replace('\\', '/')

    return path_draft
Beispiel #10
0
    def SequenceLoader(self):
        '''main function construct the image group'''

        dir_renderVersion = joinPath(self.lgtPath.text(),
                                     self.renderVersion_mu.currentText())
        if dir_renderVersion == None:
            nuke.message("Import Canceled")
        else:
            name_renderVersion = os.path.basename(
                dir_renderVersion.rstrip('/'))  # TIO_orbit_1k_v001
            ver_renderVersion = int(name_renderVersion.split('_v')[1])
            RGBA = 'beauty'

            # Building Image Group
            ls_aov = getAOVs(dir_renderVersion)
            for p in ls_aov[ls_aov.keys()[0]]:
                nuke.Layer(p, [
                    '%s.red' % p,
                    '%s.green' % p,
                    '%s.blue' % p,
                    '%s.alpha' % p
                ])
            # nodeLabel = '%s\nv%s' % (name_renderVersion.split('_v')[0], name_renderVersion.split('_v')[1])
            nodeLabel = "nuke.thisNode().name()+'\\n'+nuke.thisNode()['tx_version'].value()+'\\n\\n'+nuke.thisNode()['tx_layer'].value()+'\\n'+'v'+nuke.thisNode()['int_thisVersion'].value()"
            for l in ls_aov.keys():
                imgGroup = nuke.nodes.Group(autolabel=nodeLabel,
                                            postage_stamp=1)
                imgGroup.setName('kpRead1')
                t_tab = nuke.Tab_Knob('tb_user', 'kpRead')
                k_pipeline = nuke.Text_Knob('kupipeline', 'kpRead',
                                            'kpRead')  # Ku Pipeline Identifier
                k_renderVersion = nuke.Text_Knob(
                    'tx_version', '<b>render: </b>',
                    name_renderVersion.split('_v')[0])
                mod = os.path.basename(__file__).split('.py')[0]
                k_verUp = nuke.PyScript_Knob(
                    'btn_verUp', '<b>&#9650;</b>',
                    '%s.versionUp(nuke.thisNode())' % mod)
                k_verDown = nuke.PyScript_Knob(
                    'btn_verDown', '<b>&#9660;</b>',
                    '%s.versionDown(nuke.thisNode())' % mod)
                k_verLatest = nuke.PyScript_Knob(
                    'btn_verLatest', '<b>&#9733;</b>',
                    '%s.versionLatest(nuke.thisNode())' % mod)
                k_thisVersion = nuke.Text_Knob('int_thisVersion',
                                               '<b>version: </b>')
                k_thisVersion.setValue('%03d' % ver_renderVersion)
                k_renderLayer = nuke.Text_Knob('tx_layer', '<b>layer: </b>', l)
                k_div = nuke.Text_Knob('', "<b>Switch Version:</b>")
                k_path = nuke.Text_Knob('tx_dir', '<b>path: </b>',
                                        dir_renderVersion)
                # k_aov = nuke.Text_Knob('tx_aov', '<b>aovs: </b>', '\n'.join(ls_aov[l]))

                # k_thisVersion.setEnabled(False)
                k_thisVersion.setFlag(nuke.STARTLINE)
                k_path.setVisible(False)
                k_verUp.setFlag(nuke.STARTLINE)
                k_verUp.setTooltip("Version Up")
                k_verDown.clearFlag(nuke.STARTLINE)
                k_verDown.setTooltip("Version Down")
                k_verLatest.clearFlag(nuke.STARTLINE)
                k_verLatest.setTooltip("Latest Version")
                k_pipeline.setVisible(False)

                for k in [
                        t_tab, k_pipeline, k_path, k_renderVersion,
                        k_thisVersion, k_renderLayer, k_div, k_verUp,
                        k_verDown, k_verLatest
                ]:
                    imgGroup.addKnob(k)

                with imgGroup:
                    aov_beauty = None
                    aov_rest = []
                    for p in ls_aov[l]:
                        path = joinPath(dir_renderVersion, l, p)
                        createRead(path)
                    aov_beauty = nuke.toNode(RGBA)
                    aov_rest = [
                        n for n in nuke.allNodes('Read') if n != aov_beauty
                    ]
                    shuffling(aov_beauty, aov_rest)

            self.close()
Beispiel #11
0
    'Log2Lin': ['operation'],
    'Merge2': ['operation'],
    'ChannelMerge': ['operation'],
    'Mirror2': ['flip', 'flop'],
    'Shuffle': ['channels'],
    'FrameHold': ['first_frame'],
    'Dissolve': ['which'],
    'Switch': ['which'],
    'Transform': ['translate', 'rotate', 'scale', 'invert_matrix']
}

USER_LABEL = {
    'EXPTool': [('red', 'stops')],
}

DIR_ICON = joinPath(os.path.dirname(nuke.EXE_PATH), 'plugins', 'icons')

WIDGET_HEIGHT = 20

#------------------------------------------------------------------------------
#-Core Module UI
#------------------------------------------------------------------------------


class Core_HoverValue(QtWidgets.QDialog):
    def __init__(self):
        super(Core_HoverValue, self).__init__()

        # Widgets
        self.node_icon = QtWidgets.QLabel()
        self.title = QtWidgets.QLabel('<b>HoverValue</b>')