Exemplo n.º 1
0
def ActionCallback(value):
    """
    Callback for the layered menu, which sets the default renderer.
    It also clears the shadingNode menu list so it will update.
    @return: An arbitrary object. In our case here, we return the created
    ShadingNode node, which is then placed in the B{Node Graph} tab
    because it is a L{NodegraphAPI.Node} instance.
    """
    setRender = os.environ['DEFAULT_RENDERER'] = value

    shaderMenu = LayeredMenuAPI.GetLayeredMenu("getShadingNodes")
    shaderMenu.clear()

    return setRender
Exemplo n.º 2
0
    """
    Callback for the layered menu, which creates a PrmanShadingNode node and
    sets its B{nodeType} parameter to the given C{value}, which is the name of
    a PRMan shader as set for the menu entry in L{PopulateCallback()}.

    @type value: C{str}
    @rtype: C{object}
    @param value: An arbitrary object that the menu entry that was chosen
        represents. In our case here, this is the name of a PRMan shader as
        passed to the L{LayeredMenuAPI.LayeredMenu.addEntry()} function in
        L{PopulateCallback()}.
    @return: An arbitrary object. In our case here, we return the created
        PrmanShadingNode node, which is then placed in the B{Node Graph} tab
        because it is a L{NodegraphAPI.Node} instance.
    """
    # Create the node, set its shader, and set the name with the shader name
    node = NodegraphAPI.CreateNode('PrmanShadingNode')
    node.getParameter('nodeType').setValue(value, 0)
    node.setName(value)
    node.getParameter('name').setValue(node.getName(), 0)
    return node


# Create and register a layered menu using the above callbacks
layeredMenu = LayeredMenuAPI.LayeredMenu(PopulateCallback,
                                         ActionCallback,
                                         'Alt+P',
                                         alwaysPopulate=False,
                                         onlyMatchWordStart=False)
LayeredMenuAPI.RegisterLayeredMenu(layeredMenu, 'PrmanShaders')
Exemplo n.º 3
0
    primitiveNames = []
    for node in NodegraphAPI.GetAllNodes():
        if node.getType() == "Render" or node.getType(
        ) == "ImageWrite" or 'pbRend' in node.getName():
            primitiveNames.append(node.getName())
        else:
            pass

    for primitiveName in primitiveNames:
        layeredMenu.addEntry(primitiveName,
                             text=primitiveName,
                             color=(0.8, 0.24, 0.26))


def ActionCallback(value):
    RenderNode = NodegraphAPI.GetNode(str(value))
    NodegraphAPI.SetNodeViewed(RenderNode, viewed=True, exclusive=True)

    if UI4.App.Tabs.FindTopTab('Monitor'):
        RenderManager.StartRender('previewRender', node=RenderNode)
    else:
        pass


layeredMenu = LayeredMenuAPI.LayeredMenu(PopulateCallback,
                                         ActionCallback,
                                         'Alt+R',
                                         alwaysPopulate=True,
                                         onlyMatchWordStart=False)
LayeredMenuAPI.RegisterLayeredMenu(layeredMenu, 'RenderThis')
    """
    renderer = RenderingAPI.RenderPlugins.GetDefaultRendererPluginName()
    if renderer == 'dl':
        shadingNodeType = 'DlShadingNode'
    elif renderer == 'arnold':
        shadingNodeType = 'ArnoldShadingNode'
    elif renderer == 'prman':
        shadingNodeType = 'PrmanShadingNode'
    elif renderer == 'vray':
        shadingNodeType = 'VrayShadingNode'
    elif renderer == 'Redshift':
        shadingNodeType = 'RedshiftShadingNode'

    # Create the node, set its shader, and set the name with the shader name
    node = NodegraphAPI.CreateNode(shadingNodeType)
    node.getParameter('nodeType').setValue(value, 0)
    node.setName(value)
    node.getParameter('name').setValue(node.getName(), 0)
    node.checkDynamicParameters()
    return node


# Create and register a layered menu using the above callbacks
# This is where you can set the hotkey
layeredMenu = LayeredMenuAPI.LayeredMenu(PopulateCallback,
                                         ActionCallback,
                                         'S',
                                         alwaysPopulate=False,
                                         onlyMatchWordStart=False)
LayeredMenuAPI.RegisterLayeredMenu(layeredMenu, 'Shading_Nodes')
Exemplo n.º 5
0
    sets its B{type} parameter to the given C{value}, which is the name of
    a primitive as set for the menu entry in L{PopulateCallback()}.

    @type value: C{str}
    @rtype: C{object}
    @param value: An arbitrary object that the menu entry that was chosen
        represents. In our case here, this is the name of a primitive as
        passed to the L{LayeredMenuAPI.LayeredMenu.addEntry()} function in
        L{PopulateCallback()}.
    @return: An arbitrary object. In our case here, we return the created
        PrimitiveCreate node, which is then placed in the B{Node Graph} tab
        because it is a L{NodegraphAPI.Node} instance.
    """
    # Create the node, set its function, and set the name with the function name
    # In this case it makes the type of primitive you asked for and makes sure it has a unique name.
    node = NodegraphAPI.CreateNode('PrimitiveCreate')
    node.getParameter('type').setValue(value, 0)
    node.setName(value)
    node.getParameter('name').setValue('/root/world/geo/' + node.getName(), 0)
    return node


# Create and register a layered menu using the above callbacks
# This is where you can change the hotkey
layeredMenu = LayeredMenuAPI.LayeredMenu(PopulateCallback,
                                         ActionCallback,
                                         'P',
                                         alwaysPopulate=False,
                                         onlyMatchWordStart=False)
LayeredMenuAPI.RegisterLayeredMenu(layeredMenu, 'Primitives')
    display_flag = katana_main.layered_menu_gsv_display_flag
    return display_flag


def setGSVDisplayFlag(flag):
    katana_main = UI4.App.MainWindow.CurrentMainWindow()
    katana_main.layered_menu_gsv_display_flag = flag


def getGSV():
    """
    stores the current GSV name as a string
    """
    katana_main = UI4.App.MainWindow.CurrentMainWindow()
    layered_menu_gsv = katana_main.layered_menu_gsv
    return layered_menu_gsv


def setGSV(gsv):
    katana_main = UI4.App.MainWindow.CurrentMainWindow()
    katana_main.layered_menu_gsv = gsv


gsvMenu = LayeredMenuAPI.LayeredMenu(PopulateCallback,
                                     ActionCallback,
                                     'T',
                                     alwaysPopulate=True,
                                     onlyMatchWordStart=False)

LayeredMenuAPI.RegisterLayeredMenu(gsvMenu, 'GSV')
from PyQt5 import QtWidgets, QtCore

from Katana import NodegraphAPI, RenderingAPI, LayeredMenuAPI, UI4, Utils


def PopulateCallback(layeredMenu):
    for x in range(100):
        layeredMenu.addEntry(str(x), text=str(x), color=(x*.01, 0, 0))


def ActionCallback(value):
    print(value)
    return value


CustomLayeredMenu = LayeredMenuAPI.LayeredMenu(
    PopulateCallback,
    ActionCallback,
    'H',
    alwaysPopulate=True,
    onlyMatchWordStart=False
)

LayeredMenuAPI.RegisterLayeredMenu(CustomLayeredMenu, 'CustomLayeredMenu')

Exemplo n.º 8
0
            listName = 'Redshift'
        else:
            nodeColor = (0.5, 0.5, 0.5)
        layeredMenu.addEntry(renderer, text=listName, color=nodeColor)


def ActionCallback(value):
    """
    Callback for the layered menu, which sets the default renderer.
    It also clears the shadingNode menu list so it will update.
    @return: An arbitrary object. In our case here, we return the created
    ShadingNode node, which is then placed in the B{Node Graph} tab
    because it is a L{NodegraphAPI.Node} instance.
    """
    setRender = os.environ['DEFAULT_RENDERER'] = value

    shaderMenu = LayeredMenuAPI.GetLayeredMenu("getShadingNodes")
    shaderMenu.clear()

    return setRender


# Create and register a layered menu using the above callbacks
# This is where you can set the hotkey
layeredMenu = LayeredMenuAPI.LayeredMenu(PopulateCallback,
                                         ActionCallback,
                                         'Alt+O',
                                         alwaysPopulate=False,
                                         onlyMatchWordStart=False)
LayeredMenuAPI.RegisterLayeredMenu(layeredMenu, 'Set_Renderer')
Exemplo n.º 9
0
        node = NodegraphAPI.CreateNode('PrmanShadingNode',
                                       NodegraphAPI.GetRootNode())
        node.getParameter('nodeType').setValue(value, 0)

    # Set the node's name.
    node.setName(name)
    node.getParameter('name').setValue(node.getName(), 0)

    # Set the node's color based on its shader category.
    for category in colorDict:
        if (category in name):
            color = colorDict[category]
            DrawingModule.SetCustomNodeColor(node, color[0], color[1],
                                             color[2])
            break

    # Update the Node Graph.
    for tab in UI4.App.Tabs.GetTabsByType('Node Graph'):
        tab.update()

    return node


# Laika Shading Nodes
ikaLayeredMenu = LayeredMenuAPI.LayeredMenu(IkaPopulateCallback,
                                            ActionCallback,
                                            'Alt+P',
                                            alwaysPopulate=False,
                                            onlyMatchWordStart=False)
LayeredMenuAPI.RegisterLayeredMenu(ikaLayeredMenu, 'Shading Nodes')