使用 python 在 nuke 中设置下拉菜单的默认值
Setting default value of a drop down menu in nuke with python
我对 python 还是比较陌生,我一直在尝试写一些简单的东西来代替我的工作风格。其中之一是删除节点。
import nuke
def removeOverride():
nuke.thisNode()["operation"].setValue("keep")
nuke.thisNode()["channels"].setValue("rgb")
##Adds end lined commands to run when node is created by the user.
nuke.addOnUserCreate(removeOverride, nodeClass = "remove")
以上代码是我尝试更改操作旋钮中的值以保留而不是删除的 nuke 默认值。在我的工作流程中,我发现告诉它我想要保留哪些频道更容易。
试试下面这个。将此代码用于具有特定名称的节点:
def removeOverride():
nuke.toNode("Remove1")['operation'].setValue('keep')
nuke.toNode("Remove1")['channels'].setValue('rgb')
nuke.addOnUserCreate(removeOverride(), nodeClass='Remove')
# use UpperCamelCasing for any class name ('Blur','Read','Remove')
对于创建的任何后续节点,也使用此代码:
def removeOverride():
for node in nuke.allNodes():
if node.Class() == "Remove":
node["operation"].setValue("keep")
node["channels"].setValue("rgb")
removeOverride()
# OR
nuke.addOnUserCreate(removeOverride(), nodeClass='Remove')
最后使用nuke.selectedNodes()
和nuke.thisNode()
方法的配置适用于DAG中选定的节点:
def removeOverride():
thisNode = nuke.thisNode()
rootDAG = nuke.root()
with rootDAG:
allNodesSelected = nuke.selectedNodes()
try:
allNodesSelected.remove(thisNode)
except:
pass
for node in allNodesSelected:
node["operation"].setValue("keep")
node["channels"].setValue("rgb")
return allNodesSelected
nuke.addOnUserCreate(removeOverride(), nodeClass='Remove')
我认为您可能需要考虑为此使用旋钮默认值而不是回调。
在您的init.py
(或menu.py
,如果您只希望它应用于在 GUI 会话中创建的新节点):
nuke.knobDefault('Remove.operation', 'keep')
nuke.knobDefault('Remove.channels', 'rgb')
我对 python 还是比较陌生,我一直在尝试写一些简单的东西来代替我的工作风格。其中之一是删除节点。
import nuke
def removeOverride():
nuke.thisNode()["operation"].setValue("keep")
nuke.thisNode()["channels"].setValue("rgb")
##Adds end lined commands to run when node is created by the user.
nuke.addOnUserCreate(removeOverride, nodeClass = "remove")
以上代码是我尝试更改操作旋钮中的值以保留而不是删除的 nuke 默认值。在我的工作流程中,我发现告诉它我想要保留哪些频道更容易。
试试下面这个。将此代码用于具有特定名称的节点:
def removeOverride():
nuke.toNode("Remove1")['operation'].setValue('keep')
nuke.toNode("Remove1")['channels'].setValue('rgb')
nuke.addOnUserCreate(removeOverride(), nodeClass='Remove')
# use UpperCamelCasing for any class name ('Blur','Read','Remove')
对于创建的任何后续节点,也使用此代码:
def removeOverride():
for node in nuke.allNodes():
if node.Class() == "Remove":
node["operation"].setValue("keep")
node["channels"].setValue("rgb")
removeOverride()
# OR
nuke.addOnUserCreate(removeOverride(), nodeClass='Remove')
最后使用nuke.selectedNodes()
和nuke.thisNode()
方法的配置适用于DAG中选定的节点:
def removeOverride():
thisNode = nuke.thisNode()
rootDAG = nuke.root()
with rootDAG:
allNodesSelected = nuke.selectedNodes()
try:
allNodesSelected.remove(thisNode)
except:
pass
for node in allNodesSelected:
node["operation"].setValue("keep")
node["channels"].setValue("rgb")
return allNodesSelected
nuke.addOnUserCreate(removeOverride(), nodeClass='Remove')
我认为您可能需要考虑为此使用旋钮默认值而不是回调。
在您的init.py
(或menu.py
,如果您只希望它应用于在 GUI 会话中创建的新节点):
nuke.knobDefault('Remove.operation', 'keep')
nuke.knobDefault('Remove.channels', 'rgb')