2011-12-12

project directory に関して

Project Settings(ノードグラフでショートカット[s])に 「project directory」 というものがある。


これはReadノードなどで、たとえば

C:\Users\hogehoge\111211\fooage\hoge.jpg

のように読み込んできているファイルパスに対して、たとえばこの「project directory」が

C:\Users\hogehoge\111211

とすると、さっきのReadノードの ファイルパスは

./fooage/hoge.jpg

と出来る。つまりは 「.(ドット)」 =  C:\Users\hogehoge\111211 であり、これこそが、さきほど「project directory」に入れたパスである。つまりが、「project directory」のファイルパスが、「.(ドット)」で置きかえることが出来る。


また、Project Settingsの「project directory」の横にある、「Scripts Directory」ボタンを押すと、


「project directory」のファイルパスとして、[python {nuke.script_directory()}]という文字列が自動的に入る。これは.nkのセーブされているパスを示す。この場合、

C:/Users/Jean/Documents/111211/nukeScripts

ということになる。
たとえば、あるReadノードが.nkが保存されてる階層より、同階層またはそれ以下でない場合、


C:/Users/Jean/Documents/111211/footage/screen.png

こんな風に、
111211
    |-footage
             |-screen.png
    |-nukeScripts-filePath.nk
             |-filePath.nk

となっており、.nkの保存パスの同階層もしくはそれ以下でなく、一旦上の階層に上らないとReadノードのパスが指定できないばあいは、


../footage/screen.png

といった具合に、「../」とドットを二つ重ねて(一つ上に上がるの意味)「C:/Users/Jean/Documents/111211」から見たパスで置き替えが可能だ。

さらに6.3v2以前はWindowsではWriteノードでこの「.(ドット)」による置き換えが出来なかった。これは、.nkの保存パスを表すエクスプレッション[python {nuke.script_directory()}]で書くと、Windowsの場合標準のファイルパス表記である「¥(\)」が用いらるが、nuke場合、基本的にファイルパスがすべて「/(スラッシュ)」で無ければならないためであるが、6.3v3よりこれが改善され、Writeノードでも可能になっている。
といっても、以前も問題があったのはWriteノードだけであるが。Readノードは以前から可能でした。

これによって、相対パスでファイルパスを指定することが可能。

注意:deadlineからレンダリングしようとすると、各スレーブたちは一旦ローカルのtempとかに.nkを保存しなおして(ダウンロードしてきて)レンダリングをしようとするとの、 .nkの保存パスを表すエクスプレッション[python {nuke.script_directory()}]を使っていると、そのtempフォルダから見たパスとかになってしまい、当然そこには読み込み先も書き出し先も無かったりするので、相対パスを使うのは危険。
ただ、作業中はこの、 Project Settingsの「project directory」のファイルパスを[python {nuke.script_directory()}]としてやっておいて、deadlineに投げる時に、そこを絶対パスに入れ替えればよい。そうすればたとえReadノードが多数あっても、「.(ドット)」をつかって、ファイルパスを書いておけば、たった一つの「project directory」のファイルパスだけを書き換えるだけで問題なくレンダリングできる。

No comments:

Post a Comment