Q100195: Nuke Studio / Hiero からエクスポートされた Nuke スクリプトをカスタマイズする方法

フォローする

まとめ

現在のところ、「Export..」オプションを使用してNukeスクリプトをエクスポートする場合、または「Create Comp」または「Create Comp Special...」を使用してNukeスクリプトを作成する場合、 Nuke Studio / Hieroからデフォルトでエクスポートされるノードを変更することはできません。 。


詳しくは

エクスポート時に、 Nukeスクリプトに追加されるノードは、 hiero .core.nuke.ScriptWriterクラスを介して作成されます。デフォルトのノードを手動で変更するには、このクラスをオーバーライドし、必要に応じてノードのノブをカスタマイズします。

以下に、Read ノードのノブをカスタマイズする方法を示す例を示します。スクリプトは次のように動作します。

1) 元のhiero .core.nuke.ScriptWriterクラスを継承します。

2) addNode()メソッドをサブクラス化して、ノードごとにonNodeAdded()を呼び出すようにします。

3) onNodeAdded()メソッドを定義します。このメソッドは、どの変更をどのノードに適用するかを定義し、編集して必要なノード設定をカスタマイズできます。

4) 元の ScriptWriter を編集したバージョンでオーバーライドします。


編集したバージョンを使用するには、Python スクリプトを.nuke/Python/Startupに保存する必要があります。

Python ディレクトリと Startup ディレクトリが.nukeディレクトリに存在しない場合は、手動で作成する必要があります。これらのディレクトリの詳細については、次の場所を参照してください。
Q100142: 起動時にNuke StudioHieroHiero 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 スクリプトは以下のリンクからダウンロードできます。

私たちはそれを聞いて申し訳ございません

理由をお聞かせください