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

关注

概括

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


更多信息

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

下面您可以找到一个示例,说明如何自定义读取节点旋钮。该脚本的工作原理是:

1)继承原来的hiero类。

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

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

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


要使用编辑后的版本,您必须将 Python 脚本保存到.nuke/Python/Startup

如果.nuke目录中尚不存在 Python 和 Startup 目录,则您需要手动创建它们。有关这些目录的更多信息可以在这里找到:
Q100142:如何在启动时在Nuke StudioHiero中执行Hiero Python 代码

 """
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(
"raw" , True ) # This sets disables the input color transform

   
return node
     
         
hiero .core.nuke.ScriptWriter = CustomScriptWriter


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

我们很遗憾听到

请告诉我们