Пример #1
0
def save_dag_pos(preset):
    # Save current dag zoom and position as a preset on the active viewer
    zoom = nuke.zoom()
    pos = nuke.center()
    viewer = nuke.activeViewer()
    if not viewer:
        nuke.message(
            'Error: please create a viewer to store the dag positions on...')
        return
    else:
        viewer = viewer.node()
    if 'dagpos' not in viewer.knobs():
        viewer.addKnob(
            nuke.String_Knob(
                'dagpos', 'dagpos',
                '0,0,0:0,0,0:0,0,0:0,0,0:0,0,0:0,0,0:0,0,0:0,0,0:0,0,0:0,0,0'))
        dagpos_knob = viewer['dagpos']
        dagpos_knob.setFlag(nuke.STARTLINE)
        dagpos_knob.setEnabled(False)
    else:
        dagpos_knob = viewer['dagpos']
    dagpos_vals = dagpos_knob.getValue().split(':')
    dagpos_vals.pop(preset - 1)
    new_dagpos = ','.join([str(zoom), str(pos[0]), str(pos[1])])
    dagpos_vals.insert(preset - 1, new_dagpos)
    dagpos_knob.setValue(':'.join(dagpos_vals))
Пример #2
0
def DeepCollect(mode='collect'):
    '''collects or sets markers
	mode='collect': collects deep from markers
	mode='markers': sets markers
	'''

    if mode == 'collect':
        markers = getMarker()
        node_collector = nuke.nodes.DeepMerge(note_font='bold',
                                              hide_input=True)
        k_tab = nuke.Tab_Knob('tb_user', 'DeepCollector')
        k_text = nuke.Text_Knob(
            'tx_collector', 'Deeps Collected:',
            '\n'.join(['-' + n['tx_deepRead'].value() for n in markers]))
        k_text.setTooltip(
            '<b>Deeps Collected:</b>\n' +
            '\n'.join(['-' + n['tx_deepRead'].value()[:-8] for n in markers]))
        k_markers = nuke.String_Knob('tx_markers', 'DeepMarkers Collected',
                                     ','.join([m.name() for m in markers]))
        node_collector.addKnob(k_tab)
        node_collector.addKnob(k_text)
        node_collector.addKnob(k_markers)
        node_collector.setName('DeepCollector1')
        node_collector['autolabel'].setValue(
            "nuke.thisNode().name()+'\\ninputs: '+str(nuke.thisNode().inputs())"
        )
        node_collector.setXYpos(*nuke.center())

        for i, m in enumerate(markers):
            node_collector.setInput(i, m)

        print "Deep collected for %s" % node_collector.name()
    elif mode == 'markers':
        setMarkers()
Пример #3
0
def zoom(direction, factor=0.5):
    z = nuke.zoom()
    value = z * factor
    if direction == '+':
        v = z + value
    elif direction == '-':
        v = z - value
    nuke.zoom(v, nuke.center())
Пример #4
0
def node_under_cursor():
	dag_widget = get_DAG_widget()
	dag_center = QtCore.QPoint(*nuke.center())
	cursor_pos = QtGui.QCursor().pos()
	dag_widget_center = QtCore.QPoint((dag_widget.size().width()/ 2), (dag_widget.size().height()/2) )
	cursor_pos_in_dag = dag_widget.mapFromGlobal(cursor_pos)

	new_node_pos = ((cursor_pos_in_dag - dag_widget_center) / nuke.zoom() + dag_center)

	return list(new_node_pos.toTuple())
Пример #5
0
def registerPos(description):
    '''
    write item into nuke.ZOOOMDATA
    item must be next to last item which is the keyword for ending zooomdata 
    ''' 
    
    description=description.replace(" ", "_")
    
    if description !="":
        x = nuke.center()[0]
        y = nuke.center()[1]
        zooom = nuke.zoom()
        #format new zooomItem for nuke.ZOOOMDATA
        newZooomItem = "#"+description+",%d" % zooom +",%d" % x+",%d"% y +"\n" 
        
        #create start and end if not set yet
        if len(nuke.ZOOOMDATA)==0:
            nuke.ZOOOMDATA.append(zooomStart+"\n")
            nuke.ZOOOMDATA.append(zooomEnd)
        
        nuke.ZOOOMDATA.insert( (len(nuke.ZOOOMDATA)-1), newZooomItem)
    else:
        pass
Пример #6
0
    def run(self):
        # Store the current dag size and zoom
        original_zoom = nuke.zoom()
        original_center = nuke.center()
        # Calculate the total size of the DAG
        min_x, min_y, max_x, max_y = self.bbox
        zoom = self.zoom
        min_x -= int(self.margins / zoom)
        min_y -= int(self.margins / zoom)
        max_x += int(self.margins / zoom)
        max_y += int(self.margins / zoom)

        # Get the Dag Widget
        dag = self.dag

        # Check the size of the current widget, excluding the right side (because of minimap)
        capture_width = dag.width() - self.ignore_right
        capture_height = dag.height()

        # Calculate the number of tiles required to cover all
        image_width = int((max_x - min_x) * zoom)
        image_height = int((max_y - min_y) * zoom)
        horizontal_tiles = int(ceil(image_width / float(capture_width)))
        vertical_tiles = int(ceil(image_height / float(capture_height)))
        # Create a pixmap to store the results
        pixmap = QtGui.QPixmap(image_width, image_height)
        painter = QtGui.QPainter(pixmap)
        painter.setCompositionMode(painter.CompositionMode_SourceOver)
        # Move the dag so that the top left corner is in the top left corner, screenshot, paste in the pixmap, repeat
        for tile_x in range(horizontal_tiles):
            center_x = (min_x + capture_width / zoom * tile_x
                        ) + (capture_width + self.ignore_right) / zoom / 2
            for tile_y in range(vertical_tiles):
                center_y = (min_y + capture_height / zoom *
                            tile_y) + capture_height / zoom / 2
                nuke.executeInMainThread(nuke.zoom,
                                         (zoom, (center_x, center_y)))
                time.sleep(self.delay)
                nuke.executeInMainThread(grab_dag,
                                         (dag, painter, capture_width * tile_x,
                                          capture_height * tile_y))
        time.sleep(self.delay)
        painter.end()
        nuke.executeInMainThread(nuke.zoom, (original_zoom, original_center))
        save_sucessful = pixmap.save(self.path)
        if not save_sucessful:
            raise IOError("Failed to save PNG: %s" % self.path)
        self.successful = True
Пример #7
0
def setNodeValue(*files):
    
    # set view for stereo
    nukescripts.stereo.setViewsForStereo()
    
    #does has selected
    selectedNodes = nuke.selectedNodes()
    if selectedNodes :
        #get node's position in node graph
        x = selectedNodes[-1].xpos() + 100
        y = selectedNodes[-1].ypos() + 100
        #create write node
        writeNode = nuke.nodes.Write(channels = "rgba", colorspace = "default(sRGB)", file = files[0], file_type = "targa", xpos = x, ypos = y, inputs = [selectedNodes[-1]])
    else :
        #if no selected node use the node graph center
        x, y = nuke.center()
        writeNode = nuke.nodes.Write(channels = "rgba", colorspace = "default(sRGB)", file = files[0], file_type = "targa", xpos = x, ypos = y)
    writeNode["compression"].setValue("none")
    if len(files) == 2:
        writeNode['file'].splitView('right')
        writeNode['file'].setValue(files[1])
    return writeNode
Пример #8
0
def quickSave(slot):
    z = nuke.zoom()
    x = nuke.center()[0]
    y = nuke.center()[1]
    quickSaves[slot] = [z, x, y]
Пример #9
0
        else :
            fullPath = uploadPath + "/c001"
            newSceneName = sceneName.replace(versionNumber, "c001")
        try:
            os.makedirs(fullPath)
        except Exception,e:
            print e
    else :
        fullPath = uploadPath + "/c001"
        try:
            os.makedirs(fullPath)
        except Exception,e:
            print e
        newSceneName = sceneName.replace(versionNumber, "c001")    
    fullName = fullPath + "/" + newSceneName + format
    
    #does has selected
    selectedNodes = nuke.selectedNodes()
    if selectedNodes :
        #get node's position in node graph
        x = selectedNodes[-1].xpos() + 100
        y = selectedNodes[-1].ypos() + 100
        #create write node
        writeNode = nuke.nodes.Write(channels = "rgba", colorspace = "default(sRGB)", file = fullName, file_type = "targa", xpos = x, ypos = y, inputs = [selectedNodes[-1]])
    else :
        #if no selected node use the node graph center
        x, y = nuke.center()
        writeNode = nuke.nodes.Write(channels = "rgba", colorspace = "default(sRGB)", file = fullName, file_type = "targa", xpos = x, ypos = y)
    writeNode["compression"].setValue("none")
    return writeNode