フレームサーバーを使用したレンダリング

Frame Serverは、で指定されたレンダリングプロセスの数で作業を共有することにより、レンダリング時間を短縮しますPreferences。Frame Serverは、 Background Rendersスクリプト名、書き込みノード、フレーム範囲、進行状況、レンダリングでエラーが発生したかどうかなどの情報を含むパネル。Frame Serverはレンダリングタスクの進行状況バーを表示しませんが、無効にすることができますRender using frame serverの中にRender古いバージョンのプロセスを使用するダイアログNuke

フレームサーバーはデフォルトで無効になっていますが、有効にすることができますPreferences > Performance > Threads/Processesまたは、書き込みノードのレンダリングごとにRenderダイアログ。

注意:  ローカルフレームサーバープロセスはポート5558-5662を使用します。

ノードのいずれかからの書き込みノードのレンダリングPropertiesまたはからRenderメニュー、表示Renderダイアログ。見る出力(書き込み)ノードレンダリングの開始の詳細については。フレームサーバーが有効になっている場合、クリックOKの中にRenderダイアログは選択したレンダリングをバックグラウンドで開始し、作業を続けることができます。

Background Rendersタブは、付属のワークスペースの一部として表示されませんNuke、しかしあなたは有効にすることができますPerformance > Threads/Processes > focus background rendersの中にPreferences Frame Serverの使用中にパネルを自動的に開くため。

ヒント:  また、パネルを右クリックして手動でパネルを追加することもできますペインの左上にあるボタンを選択し、選択しますWindows > Background Renders

Background Rendersパネルには、スクリプト名、書き込みノード、フレーム範囲、進行状況、レンダリングでエラーが発生したかどうかなどの情報が含まれます。

フレームサーバーの設定

フレームサーバーの動作を制御するには、 Performance > Threads/ProcessesのタブPreferences

render using frame server (Nuke) -有効にすると、レンダリングには常にフレームサーバーが使用されます。

focus background renders -有効にすると、Frame Serverを使用したレンダリングが自動的に開きますBackground Rendersパネル、または既に開いている場合は、パネルにフォーカスを移動します。

frame server processes to run -Frame Serverで使用可能なレンダリングプロセスの数を設定します。

注意:  再起動する必要がありますNuke使用可能なプロセスの数を変更した場合。

export renders -レンダリングプロセスで使用可能なリソースに制限を設定できます。

limit renderer (more responsive ui) –レンダリング中にユーザーインターフェイスの応答性を高めるには、このオプションを選択します。それは伝えますNuke 2つのスレッドを使用してトランスコードし、RAMの25%をキャッシュに使用します。このオプションを使用すると、レンダリングが遅くなる可能性があります。

no renderer limits (fastest transcoding) –このオプションを選択すると、レンダリングが可能な限り迅速に行われます。このオプションにより、レンダリング中のユーザーインターフェイスの応答が遅くなる場合があります。

customize render limits –このオプションを選択して、手動で構成しますnumber of threads使用済みcache memoryレンダリング中に使用可能。

外部マシンでのフレームサーバーの使用

でもNukeフレームを内部でレンダリングできるので、外部マシンでFrame Serverを実行すると、マシンのネットワーク全体で作業を共有することでプロセスを大幅に加速できます。

注意:  フレームサーバーにはNukeメインワークステーション上のライセンス(nuke_i)、ただし、 Nukeスレーブマシンでライセンス(nuke_r)をレンダリングします。

スレーブマシンでインタラクティブライセンス(nuke_i)を使用する場合は、 --useInteractiveLicenseへの議論runframeserver.py以下に説明するコマンド。

外部マシンでのフレームサーバーの構成

NukeのFrame Serverを外部マシン(または複数のマシン)にセットアップして、 Nuke Studioセッション。これを行うには、実行する必要がありますrunframeserver.py Pythonサイトパッケージ内にある特定のコマンドライン引数を持つ外部マシン上のスクリプト。

警告:  すべてがスムーズに機能するためには、外部スレーブマシンとメインマシンの両方を確保する必要がありますNukeセッションは、NFS共有などの共有場所に対してファイルを読み書きできます。

プラットフォームに応じて、デフォルトを操作してこれを行うことができますumaskただし、これにより作成されたファイルの権限が変更されることに注意してください。

さらに、ファイアウォールが通信ポート5560をブロックしている場合、MacおよびRHELなどの特定のLinuxディストリビューションはメインワークステーションとして機能できません。特定のポートがファイアウォールを通過できるようにファイアウォールを設定するには、 iptablesコマンドを実行しますが、その際は注意してください。例えば:

sudo iptables -I INPUT -p tcp --dport 5560 --syn -j ACCEPT

詳細については、特定のプラットフォームのファイアウォールに関するドキュメントを参照してください。

Frame Serverは、外部マシン上の多数のワーカープロセスを使用します。各ワーカープロセスには、スレッド、メモリなどの割り当てられたリソースが必要です。に渡す必要のある引数がいくつかありますrunframeserver.pyサーバーが正しく機能するために:

--numworkers -これは同時実行の数ですNukeこのサーバーレンダーノードを実行すると起動されるプロセス。

--nukeworkerthreads -各ワーカーに割り当てられるスレッドの数。これは、 -m実行時の引数Nukeコマンドラインから。

--nukeworkermemory -各フレームサーバーワーカーに割り当てられたメモリの量(MB)。

--workerconnecturl -提供するメインワークステーションのTCPポートアドレス。例えば:

tcp://bob:5560

どこbob提供したいマシンの解決されたホスト名です。IPアドレスを使用することもできます。

ヒント:  有効なURLを入力していることを確認するには、 ping応答を取得するかどうかを確認するコマンド。

--nukepath -へのパスNukeスレーブワークステーション上のアプリケーション。

ヒント:  オンWindows、ファイルパスにスペースがある場合は、パスを引用符で囲むことを忘れないでください。
例えば、 --nukepath="C:\Program Files\Nuke12.1v1\Nuke12.1.exe"

Linuxスレーブマシンでは、インストールディレクトリから実行されるコマンドプロンプトエントリの例は次のようになります。

./python ./pythonextensions/site-packages/foundry/frameserver/nuke/runframeserver.py --numworkers=2 --nukeworkerthreads=4 --nukeworkermemory=8096 --workerconnecturl=tcp://bob:5560 --nukepath=./Nuke12.1

Windowsスレーブマシンの場合、インストールディレクトリから実行されるコマンドプロンプトエントリの例は次のようになります。

python.exe pythonextensions\site-packages\foundry\frameserver\nuke\runframeserver.py --numworkers=2 --nukeworkerthreads=4 --nukeworkermemory=8096 --workerconnecturl=tcp://bob:5560 --nukepath=Nuke12.1.exe

例では、スレーブが2つを使用することを指定しますNukeそれぞれ4つのスレッドと8 GBのRAMを備え、メインのスレーブになっているワーカーNuke実行中のワークステーションbob

ヒント:  スレーブマシンがメインとは異なるOSを実行している場合Nukeマシン、あなたは使用することができます--remapそれらの間でファイルパスを変換するコマンドライン引数。ホストファイルパスが最初に読み取られ、続いてスレーブファイルパスが読み取られます。Nuke使用するすべてのファイルパスを期待する/ (スラッシュ)ディレクトリ間。例えば:
--remap "P:/、/ mnt / renders /"
次で始まるホストパスを変換しますP:/Windowsスタイル)で始まるスレーブパスへ/mnt/renders/ (Linuxスタイル)。

メインワークステーションのスクリプトエディタで次の行を実行すると、Frame Serverとワーカーが接続されていることを確認できます。

from hiero.ui.nuke_bridge.FnNsFrameServer import frameServer

print [worker.address for worker in frameServer.getStatus(1).workerStatus]

接続が成功すると、出力パネルに次のようなメッセージが表示されます。

['Worker 0 - henry.local - 192.168.1.11', 'Worker 0 - bob.local - 192.168.1.111', 'Worker 1 - henry.local - 192.168.1.11']

どこhenry.localは、リモートスレーブの名前です。 bob.localメインの名前ですNukeセッション。

注意:  ワーカーがフレームサーバーに接続できない場合、スクリプトエディターの出力パネルに例外が出力されます。

フレームサーバーログ

ブローカーとワーカーのログは、Frame Serverの問題の診断に役立ちます。ログはデフォルトでNUKE_TEMP_DIR / logsに書き込まれ、次の形式を取ります。

broker.log

worker-0.log

worker-1.log

worker-2.log

注意:  上記のようにPythonを使用してフレームサーバーを実行すると、常にログファイルが特定のOS一時ディレクトリに書き込まれます。たとえば、WindowsC:\ tempが使用されます。

ヒント:  FRAMESERVER_LOG_DIR環境変数を使用して、Frame Serverのログを別の場所に強制することができます。見る環境変数詳細については。