创建支持服务单
关注

Q100195:如何从NukeStudio / Hiero自定义Nuke脚本导出

摘要

当使用'Export ..'选项导出Nuke脚本或通过'Create Comp'或'Create Comp Special ...'创建Nuke脚本时,目前无法更改NukeStudio / Hiero默认导出的节点。

更多信息

在导出时,添加到Nuke脚本的节点是通过hiero.core.nuke.ScriptWriter类创建的。要手动更改默认节点,您可以覆盖此类并根据需要自定义节点旋钮。

您可以在下面找到说明如何自定义“读取”节点旋钮的示例。

该脚本的工作原理是:

1)继承原始的hiero.core.nuke.ScriptWriter类

2)对addNode()方法进行子类化,以便为每个节点调用onNodeAdded()

3)定义onNodeAdded()方法。
此方法定义要应用于哪些节点的更改,并且可以对其进行编辑以自定义所需的节点设置。

4)用编辑的版本覆盖原始ScriptWriter。

要使用已编辑的版本,您必须将Python脚本保存为.nuke / Python / Startup。有关查找.nuke目录的信息,请访问: Q100048: Nuke目录位置

如果.nuke目录中尚不存在Python和Startup目录,则需要手动创建它们。

"""
Example showing how to override the ScriptWriter class for a Studio/Hiero export
"""
 

import  hiero.core

OriginalScriptWriter = hiero.core.nuke.ScriptWriter

class   CustomScriptWriter (OriginalScriptWriter) :

 
def   __init__ (self) :
   OriginalScriptWriter.__init__(self)
   
 
def   addNode (self, node) :
   
# List of nodes that should actually be added to the script
   nodesToAdd = []
   
   
# node might actually be a list of nodes.  If it is, call onNodeAdded for each one
   
if  isinstance(node, hiero.core.nuke.Node):
     nodesToAdd.append( self.onNodeAdded(node) )
   
else :
     
try :
       
for  n in  node:
         nodesToAdd.append( self.onNodeAdded(n) )
     
except :
       
pass
       
   
# Call base class to add the node(s)
   OriginalScriptWriter.addNode(self, nodesToAdd)
   
 
def   onNodeAdded (self, node) :
   
""" Callback when a node is added. Return the node that should actually be added. """
   
if  node.type() == "Read" : # Change for the type of node you want to edit
     
# Make adjustments to all nodes of that type
     node.setKnob(
"on_error" , "black" ) # This sets each Read nodes missing frames to black
     node.setKnob(
"auto_alpha" , True ) # This sets each Read nodes missing frames to black

   
return  node
     
         
hiero .core.nuke.ScriptWriter = CustomScriptWriter

可以从以下链接下载Python脚本。

这篇文章有帮助吗?
/

我们很遗憾听到

请告诉我们
6 人中有 6 人觉得有帮助

评论