三日月館【別館】開発・制作Tips集
[NUKE] Pythonでスクリプト形式を含むファイルパスを解決する
最終更新:
fumiduki1985
-
view
NUKEでは、Readノード等のファイルパスに「[python {nuke.script_directory()}]」といったスクリプトを書き込むことで相対パスを表現できる。
Readノードからファイルパスを取得する際、通常のKnobクラス経由の取得ではこのようなスクリプトを解決できない。
スクリプトを解決しつつファイルパスを取得したい場合、nuke.filename()関数を使用する。
(実際の動作は、指定したノードが持つfilename knobの設定値を取得するとのこと。詳細はリファレンスマニュアルも参考のこと。)
Readノードからファイルパスを取得する際、通常のKnobクラス経由の取得ではこのようなスクリプトを解決できない。
スクリプトを解決しつつファイルパスを取得したい場合、nuke.filename()関数を使用する。
(実際の動作は、指定したノードが持つfilename knobの設定値を取得するとのこと。詳細はリファレンスマニュアルも参考のこと。)
また、nuke.filename()の第2引数にnuke.REPLACEを指定すると、連番記号(#)の部分をアクティブビューワのカレントフレームの数値に置き換えて返してくれる。
nuke.REPLACEを指定しないと、連番記号(#)のまま返される。
nuke.REPLACEを指定しないと、連番記号(#)のまま返される。
カレントフレームでなく任意の数値に置き換えたい場合は、nuke.REPLACEを使用せず取得して、nukescripts.replaceHashes()関数を使用すると良い。
記述例:
import nuke # readNodeには有効なReadノードオブジェクトが格納されている前提 path = nuke.filename(readNode) # 連番記号を置き換えない path = nuke.filename(readNode, nuke.REPLACE) # 連番記号を置き換える