Nuke - 書き込みノード

Write Node

Nuke で Shotgun の書き込みノードをサポートできるようになります。
最新バージョン: v1.3.1 (製品)
バージョン番号は、セマンティック バージョニング基準に従っています。
システム名: tk-nuke-writenode

注: このドキュメントは、Toolkit の設定を管理するユーザのみが使用可能な機能について説明します。詳細については、『Shotgun 統合ユーザ ガイド』を参照してください。
概要
ドキュメント
      一般用途
      レンダリング パスをリセットする
      別の書き込みノード プロファイルを追加する
            書き込みノブをプロンプト表示する
      レンダリング ファーム統合
            Shotgun 書き込みノードを標準 Nuke 書き込みノードに変換する
            init.py を使用して Shotgun Pipeline Toolkit エンジンをブートストラップする
                  1. 事前送信スクリプト
                  2. Shotgun 認証
                  3. init.py スクリプト
                  期限固有のステップ
      技術の詳細
                  get_write_nodes()
                  get_node_name()
                  get_node_profile_name()
                  get_node_render_path()
                  get_node_render_files()
                  get_node_render_template()
                  get_node_publish_template()
                  get_node_proxy_render_path()
                  get_node_proxy_render_files()
                  get_node_proxy_render_template()
                  get_node_proxy_publish_template()
                  get_node_published_file_type()
                  generate_node_thumbnail()
                  reset_node_render_path()
                  is_node_render_path_locked()
                  convert_to_write_nodes()
                  convert_from_write_nodes()
                  process_placeholder_nodes()
インストール、更新、開発
設定オプション

このアプリにはユーザからファイル システム パスを抽出する Nuke 用の書き込みノードのカスタム ギズモが含まれているため、特定の出力の命名に集中できます。残りの作業は Shotgun にお任せください。通常、このアプリは Publish アプリと組み合わせて使用します。Nuke 用のパブリッシュ アプリをインストールする場合は、これもインストールすることが多いでしょう。

ドキュメント

Nuke Write Node アプリは、イメージのレンダリング先を簡単に標準化できる、カスタムの Shotgun 書き込みノードを提供します。各環境に合わせた設定が可能です。パス以外に、使用するレンダリング形式も設定で決まります。

一般用途

Shotgun Write Node を使用するには、最初にスクリプトを Toolkit 作業ファイルとして保存し、Nuke メニューから新しいノードを作成します。これにより、通常の書き込みノードに類似したノードが作成されます。

Write Node

手動でパスを入力するのではなく、出力名を指定するだけで、Toolkit が残りのパスを自動的に計算してくれます。計算されたパスが UI に表示されます。Show in File System ボタンをクリックすると、ディスク上の該当する場所が開きます。レンダリングの書き込み先は Toolkit の設定に応じて異なります。

レンダリングはバージョンで管理され、バージョン番号は、Multi Publish を使用してパブリッシュする場合に自動的に増分される現在の Nuke スクリプト バージョンに常に準拠します。

レンダリング パスをリセットする

Write Node は、ファイルを Toolkit 作業領域外から開いても有効になるように現在のパスをキャッシュ化します。場合によっては、パスが同期できなくなり「ロック状態」になることがあります。レンダリング パスがロックされた場合、この Write Node で作成されたレンダリングはパブリッシュできません。

レンダリング パスをリセットするには、作業ファイル アプリの「Version Up Scene」コマンドを使用してシーンをバージョンアップするか、書き込みノードを個別に選択して Reset Path をクリックします。

書き込みグラフ

別の書き込みノード プロファイルを追加する

Shotgun Write Node は Nuke に組み込まれた書き込みノードをラップするため、Nuke でサポートされている形式をアプリで使用して、別のノードを設定から追加できます。最も簡単な開始方法は、任意のパラメータを使用して簡単な Nuke 書き込みノードをセットアップすることです。次の例では、LZW 圧縮で 16 ビット TIF を実行しているものと仮定します。テキスト エディタで Nuke スクリプトを確認すると、書き込みノードは次のように表示されます。

...
Write {
    file /Users/ryanmayeda/Desktop/test.%04d.tif
    file_type tiff
    datatype "16 bit"
    compression LZW
    checkHashOnRead false
    name Write1
    xpos -145
    ypos -61
}
...

テキストから必要なパラメータ名と値が分かります。この場合は datatypecompression です。次に、環境設定(例: /path/to/pipeline/config/env/shot_step.yml)に移動し、tk-nuke-writenode アプリを設定する領域を探します。settings に次の 2 つのパラメータを指定した別の Write Node を追加します。

...
tk-nuke-writenode:
  location: {name: tk-nuke-writenode, type: app_store, version: v0.1.6}
  template_script_work: nuke_shot_work
  ...
  write_nodes:
  - file_type: exr
    ...
  - file_type: dpx
    ...
  - file_type: tiff
    name: Mono Tif
    publish_template: nuke_shot_render_pub_mono_tif
    render_template: nuke_shot_render_mono_tif
    proxy_publish_template: null
    proxy_render_template: null
    settings: {datatype: 16 bit, compression: LZW}
    tank_type: Rendered Image
    tile_color: []
    promote_write_knobs: []
...

設定を更新すると、追加した Shotgun Write Node が Nuke で表示されるようになります。

新規追加

注: 新しいテンプレート(nuke_shot_render_mono_tif など)はプロジェクト設定(<configuration root>/config/core/templates.yml)内の templates.yml ファイルに必ず追加してください。

別の例として、圧縮を 0.5、サブサンプリングを 4:2:2 に設定した JPEG に出力する Shotgun Write Node を追加する方法を以下に示します。また、このプロファイルは JPEG 品質ノブをギズモのユーザ インタフェースにまでプロモートする「promote_write_knobs」オプションも使用します。これにより、プロファイルの品質に既定の値が設定され、この設定自体を変更するためのスライダもユーザに表示されます。

...
tk-nuke-writenode:
  ...
  write_nodes:
    - file_type: jpeg
      name: Compressed JPEG
      publish_template: nuke_shot_render_pub_jpeg
      render_template: nuke_shot_render_jpeg
      proxy_publish_template: null
      proxy_render_template: null
      settings: {_jpeg_quality: 0.5, _jpeg_sub_sampling: "4:2:2"}
      tank_type: Rendered Image
      tile_color: []
      promote_write_knobs: [_jpeg_quality]
...

書き込みノブをプロモートする

上記のプロファイルに示すように、カプセル化された書き込みノードのノブは Shotgun Write Node のプロパティ パネルに表示されるようにプロモートできます。プロモートされた書き込みノブはプロファイルの一部として定義され、ノブ名で識別されます。複数のノブをプロモートすることができます。

レンダリング ファーム統合

スタジオでは一般に、期限などのジョブ管理ツールを実行するレンダリング ファームを使用します。これらのツールを使用すると、通常は、レンダリング時に Nuke が直接起動されます。これらのツールは、Shotgun が認識できる方法で(デスクトップや tank コマンドなどを介して) Nuke を起動しないため、Shotgun 書き込みノードには Nuke を実行するために必要な情報が保持されません。この制限を回避するために、いくつかのオプションが用意されています。

Shotgun 書き込みノードを標準 Nuke 書き込みノードに変換する

単純な解決策は、Shotgun 書き込みノードを標準の Nuke 書き込みノードに変換してから、レンダリングするスクリプトを送信することです。この変換を実行する convert_to_write_nodes() メソッドが、tk-nuke-writenode アプリに用意されています。

スクリプト内のすべての Shotgun 書き込みノードを標準の Nuke 書き込みノードに変換するには、Nuke 内で次のコードを実行します。

import sgtk
eng = sgtk.platform.current_engine()
app = eng.apps["tk-nuke-writenode"]
if app:
    app.convert_to_write_nodes()

この操作を行うと、シーンから Shotgun 書き込みノードが削除されるため、レンダリングするスクリプトのコピーを作成し、そのコピーに対して変換を行ってから、コピーをファームに送信するというワークフローに従うことをお勧めします。シーンには Toolkit の参照が含まれなくなっているため、レンダリング ファームで Nuke スクリプトを開いたときに、Toolkit は不要になります。

注: 対応する convert_from_write_nodes() メソッドを使用できますが、データの整合性を維持するために、パイプラインの一部としてではなく、デバッグでのみ使用することをお勧めします。

init.py を使用して Shotgun Pipeline Toolkit エンジンをブートストラップする

Nuke は、プラグイン パス上にあるすべての init.py スクリプトを実行します。このオプションを使用すると、tk-nuke エンジンの最小限のブートストラップを実行するコードが init.py に追加されるため、Shotgun 書き込みノードはレンダリング ファーム上で予測どおりに動作します。

このワークフローにはいくつかの手順があります。最初に、Shotgun 対応の Nuke セッション内で実行される「事前」送信スクリプトによって、ファーム ジョブの環境設定に使用されるデータが取得されます。次に、レンダリング ファーム管理者が、レンダリング ファーム上の Shotgun セッションを認証するために使用される追加の環境変数を設定します。最後に、Shotgun ブートストラップ コードを含む init.py が、レンダリング ファーム上の Nuke セッションによって検出および実行される場所に配置され、セッション内で tk-nuke エンジンをブートストラップします。これにより、Shotgun 書き込みノードが適切に機能できるようになります。

1. 事前送信スクリプト

この方法では、アーティストが Nuke の Shotgun 対応セッション内でファーム ジョブを送信していることが前提となります。送信時に、次のコードを実行する必要があります。これにより、Toolkit コンテキスト、パイプライン設定 URI、Toolkit Core API の場所など、環境に関する情報が現在の Nuke セッションから取得されて、ディクショナリに入力されます。このディクショナリがレンダリング ジョブに渡され、そこでこの情報を使用して環境変数が設定されます。

# Populating environment variables from running Nuke:
# http://developer.shotgunsoftware.com/tk-core/platform.html#sgtk.platform.create_engine_launcher
current_engine = sgtk.platform.current_engine()
launcher = sgtk.platform.create_engine_launcher(
     current_engine.sgtk,
     current_engine.context,
     current_engine.name
)

# Get a dictionary with the following keys:
# SHOTGUN_SITE: The Shotgun site url
# SHOTGUN_ENTITY_TYPE: The Shotgun Entity type, e.g. Shot
# SHOTGUN_ENTITY_ID: The Shotgun Entity id, e.g. 1234
environment = launcher.get_standard_plugin_environment()

# Get the current pipeline config descriptor
environment["SHOTGUN_CONFIG_URI"] = current_engine.sgtk.configuration_descriptor.get_uri()

# Get the current tk-core installation path
environment["SHOTGUN_SGTK_MODULE_PATH"] = sgtk.get_sgtk_module_path()

この情報の収集が完了したら、レンダリング送信ツールに渡すことができます。このプロセスは、使用しているレンダリング ファーム管理システムによって異なります。レンダリング送信スクリプトの記述方法の詳細については、ファーム管理システムのドキュメントを参照してください。

2. Shotgun 認証

ブートストラップ API の ToolkitManager を初期化するには、スクリプト ユーザが必要です。オートデスクの例では、ファーム マシン上にサイト名、スクリプト ユーザ、およびスクリプト キーが環境変数として存在することを想定しています。通常、これはレンダリング ファームの管理者によって管理されます。次に、オートデスクのコードで想定されている環境変数の名前と、サンプル値を示します。

SHOTGUN_SITE = https://mysitename.shotgunstudio.com
SHOTGUN_FARM_SCRIPT_USER = sg_api_user
SHOTGUN_FARM_SCRIPT_KEY = xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx

認証の詳細については、オートデスクの開発者向けドキュメントを参照してください。

スクリプト ユーザの保護に関する注意事項: ファームで使用するスクリプト ユーザをロックして、管理者レベルの権限が付与されないようにすることをお勧めします。API ユーザの権限については、ここで確認できます。

3. init.py スクリプト

この時点で、レンダリング送信ツールから Toolkit 環境データが渡されていて、レンダリング ファーム マシンの環境変数に認証データが格納されています。レンダリング ジョブ内で Toolkit をブートストラップするためには、最後に、次の init.py サンプル コードを Nuke のプラグイン パスに配置して、Nuke を開始するときに起動されるようにする必要があります。(詳細については、「起動スクリプトに関する Foundry のドキュメント」を参照してください。)

# This script shows how a Toolkit as a plugin approach could be used to bootstrap
# Toolkit in Nuke on the render farm.
# http://developer.shotgunsoftware.com/tk-core/bootstrap.html#bootstrapping-toolkit

import sys
import os

# If your render nodes can access the same tk-core install location as
# artist workstations, retrieve its path from the environment and ensure
# it is in the PYTHONPATH
TK_CORE_PATH = os.environ["SHOTGUN_SGTK_MODULE_PATH"]
if TK_CORE_PATH not in sys.path:
    sys.path.append(TK_CORE_PATH)

# If your render nodes don’t have access to the Toolkit Core API in the same filesystem location as artist workstations, you have to make sure that it is available in the PYTHONPATH, so that render nodes can import it. An easy way 
# to install tk-core in a centralized location is with pip. You can read more 
# about it here:
# http://developer.shotgunsoftware.com/tk-core/bootstrap.html#installing-the-sgtk-module-using-pip

import sgtk

# Authenticate using a pre-defined script user.
sa = sgtk.authentication.ShotgunAuthenticator()

# Here we retrieve credentials from environment variables, assuming a script user
# will be used when rendering. This should be typically be handled by your render
# farm administrators.
SG_SITE_URL = os.environ["SHOTGUN_SITE"]
SG_SCRIPT_USER = os.environ["SHOTGUN_FARM_SCRIPT_USER"]
SG_SCRIPT_KEY = os.environ["SHOTGUN_FARM_SCRIPT_KEY"]
user = sa.create_script_user(
    api_script=SG_SCRIPT_USER,
    api_key=SG_SCRIPT_KEY,
    host=SG_SITE_URL
)

# Start up a Toolkit Manager with our script user
mgr = sgtk.bootstrap.ToolkitManager(sg_user=user)

# Set the base pipeline configuration from the environment variable:
mgr.base_configuration = os.environ["SHOTGUN_CONFIG_URI"]

# Disable Shotgun lookup to ensure that we are getting the Pipeline 
# Configuration defined in SHOTGUN_CONFIG_URI, and not a dev or override
# Pipeline Configuration defined in Shotgun.
mgr.do_shotgun_config_lookup = False

# Set a plugin id to indicate to the bootstrap that we are starting
# up a standard Nuke integration
mgr.plugin_id = "basic.nuke"

# Retrieve the Toolkit context from environment variables:
# SHOTGUN_SITE: The Shotgun site url
# SHOTGUN_ENTITY_TYPE: The Shotgun Entity type, e.g. Shot
# SHOTGUN_ENTITY_ID: The Shotgun Entity id, e.g. 1234
sg_entity = mgr.get_entity_from_environment()

# Now start up the Nuke engine for a given Shotgun Entity
nuke_engine = mgr.bootstrap_engine("tk-nuke", entity=sg_entity)

設定がこの例よりも複雑な場合、または Nuke (.nk)スクリプトでなく -t フラグを使用して、 Python スクリプトをコマンド ラインに渡している場合は、このスクリプトを拡張しなければならない可能性があります。

期限固有の手順

Deadline は、レンダリング時に Nuke スクリプトを一時的な場所にコピーします。この手順を行うと、Toolkit が認識可能なディスク上の場所にファイルが存在しなくなるため、問題が発生します。 この動作を無効にして元の場所からスクリプトをロードするには、次の操作を行います。

  1. Deadline で、Tools > Configure Plugin に移動します(スーパー ユーザ モード)
  2. [Enable Path Mapping]オプションを無効にします。

技術の詳細

アプリでは次の API メソッドを使用できます。

get_write_nodes()

現在のシーンの全 Shotgun 書き込みノードのリストを返します。

list app.get_write_nodes()

パラメータと戻り値

  • 戻り値: list - シーン内で見つかった Toolkit 書き込みノードのリスト

>>> import sgtk
>>> eng = sgtk.platform.current_engine()
>>> app = eng.apps["tk-nuke-writenode"]
>>> nodes = app.get_write_nodes()

get_node_name()

指定した書き込みノードの名前を返します。

string get_node_name(node ノード)

パラメータと戻り値

  • node ノード: クエリーする書き込みノード
  • 戻り値: string - ノードの名前

>>> import sgtk
>>> eng = sgtk.platform.current_engine()
>>> app = eng.apps["tk-nuke-writenode"]
>>> nodes = app.get_write_nodes()
>>> app.get_node_name(nodes[0])

get_node_profile_name()

指定した書き込みノードによって使用される設定プロファイルの名前を取得します。

string get_node_profile_name(node ノード)

パラメータと戻り値

  • node ノード: クエリーする書き込みノード
  • 戻り値: string - 設定で定義されたこの書き込みノードのプロファイル名

>>> import sgtk
>>> eng = sgtk.platform.current_engine()
>>> app = eng.apps["tk-nuke-writenode"]
>>> nodes = app.get_write_nodes()
>>> app.get_node_profile_name(nodes[0])

get_node_render_path()

指定した書き込みノードがイメージのレンダリング先として使用するパスを取得します。

string get_node_render_path(node ノード)

パラメータと戻り値

  • node ノード: クエリーする書き込みノード
  • 戻り値: string - このノードのレンダリング パス

>>> import sgtk
>>> eng = sgtk.platform.current_engine()
>>> app = eng.apps["tk-nuke-writenode"]
>>> nodes = app.get_write_nodes()
>>> app.get_node_render_path(nodes[0])

get_node_render_files()

指定した書き込みノードに対してレンダリングされているすべてのイメージ ファイルのリストを取得します。

list get_node_render_files(node ノード)

パラメータと戻り値

  • node ノード: クエリーする書き込みノード
  • 戻り値: list - この書き込みノードでレンダリングされるイメージ ファイルのリスト

>>> import sgtk
>>> eng = sgtk.platform.current_engine()
>>> app = eng.apps["tk-nuke-writenode"]
>>> nodes = app.get_write_nodes()
>>> app.get_node_render_files(nodes[0])

get_node_render_template()

設定の定義に従い、指定した書き込みノードに対するレンダリング イメージが書き込まれる場所を決定するテンプレートを取得します。

template get_node_render_template(node ノード)

パラメータと戻り値

  • node ノード: クエリーする書き込みノード
  • 戻り値: template - このノードが使用するように設定されているレンダリング テンプレート

>>> import sgtk
>>> eng = sgtk.platform.current_engine()
>>> app = eng.apps["tk-nuke-writenode"]
>>> nodes = app.get_write_nodes()
>>> app.get_node_render_template(nodes[0])

get_node_publish_template()

設定の定義に従い、指定した書き込みノードに対するレンダリング イメージがパブリッシュされる場所を決定するテンプレートを取得します。

template get_node_publish_template(node ノード)

パラメータと戻り値

  • node ノード: クエリーする書き込みノード
  • 戻り値: template - このノードが使用するように設定されているパブリッシュ テンプレート

>>> import sgtk
>>> eng = sgtk.platform.current_engine()
>>> app = eng.apps["tk-nuke-writenode"]
>>> nodes = app.get_write_nodes()
>>> app.get_node_publish_template(nodes[0])

get_node_proxy_render_path()

指定した書き込みノードがプロキシ イメージのレンダリング先として使用するパスを取得します。

string get_node_proxy_render_path(node ノード)

パラメータと戻り値

  • node ノード: クエリーする書き込みノード
  • 戻り値: string - このノードのプロキシ レンダリング パス

>>> import sgtk
>>> eng = sgtk.platform.current_engine()
>>> app = eng.apps["tk-nuke-writenode"]
>>> nodes = app.get_write_nodes()
>>> app.get_node_proxy_render_path(nodes[0])

get_node_proxy_render_files()

指定した書き込みノードに対してレンダリングされているすべてのプロキシ イメージ ファイルのリストを取得します。

list get_node_proxy_render_files(node ノード)

パラメータと戻り値

  • node ノード: クエリーする書き込みノード
  • 戻り値: list - この書き込みノードでレンダリングされるプロキシ イメージ ファイルのリスト

>>> import sgtk
>>> eng = sgtk.platform.current_engine()
>>> app = eng.apps["tk-nuke-writenode"]
>>> nodes = app.get_write_nodes()
>>> app.get_node_proxy_render_files(nodes[0])

get_node_proxy_render_template()

設定の定義に従い、指定した書き込みノードに対するプロキシ レンダリング イメージが書き込まれる場所を決定するテンプレートを取得します。

指定したノードにプロキシ レンダリング テンプレートが設定されていない場合は、代わりに通常のレンダリング テンプレートを返します。

template get_node_proxy_render_template(node ノード)

パラメータと戻り値

  • node ノード: クエリーする書き込みノード
  • 戻り値: template - このノードが使用するように設定されているプロキシ レンダリング テンプレート

>>> import sgtk
>>> eng = sgtk.platform.current_engine()
>>> app = eng.apps["tk-nuke-writenode"]
>>> nodes = app.get_write_nodes()
>>> app.get_node_proxy_render_template(nodes[0])

get_node_proxy_publish_template()

設定の定義に従い、指定した書き込みノードに対するプロキシ レンダリング イメージがパブリッシュされる場所を決定するテンプレートを取得します。

指定したノードにプロキシ パブリッシュ テンプレートが設定されていない場合は、代わりに通常のパブリッシュ テンプレートを返します。

template get_node_proxy_publish_template(node ノード)

パラメータと戻り値

  • node ノード: クエリーする書き込みノード
  • 戻り値: template - このノードが使用するように設定されているプロキシ パブリッシュ テンプレート

>>> import sgtk
>>> eng = sgtk.platform.current_engine()
>>> app = eng.apps["tk-nuke-writenode"]
>>> nodes = app.get_write_nodes()
>>> app.get_node_proxy_publish_template(nodes[0])

get_node_published_file_type()

設定の定義に従い、指定した書き込みノードがレンダリング イメージに対してパブリッシュ ファイルを作成するときに使用されるパブリッシュ ファイル タイプを取得します。

string get_node_published_file_type(node ノード)

パラメータと戻り値

  • node ノード: クエリーする書き込みノード
  • 戻り値: string - このノードが使用するように設定されているパブリッシュ ファイル タイプ

>>> import sgtk
>>> eng = sgtk.platform.current_engine()
>>> app = eng.apps["tk-nuke-writenode"]
>>> nodes = app.get_write_nodes()
>>> app.get_node_published_file_type(nodes[0])

generate_node_thumbnail()

指定した書き込みノードのサムネイルを生成します。一時ファイル(.png)として最大サイズ 800x800 ピクセルでシーケンスの中からフレームをレンダリングします。不要になったら、呼び出し側がこのファイルをクリーンアップします。

string generate_node_thumbnail(node ノード)

パラメータと戻り値

  • node ノード: クエリーする書き込みノード
  • 戻り値: string - ディスク上にあるレンダリングされたサムネイル イメージのパス

>>> import sgtk
>>> eng = sgtk.platform.current_engine()
>>> app = eng.apps["tk-nuke-writenode"]
>>> nodes = app.get_write_nodes()
>>> app.generate_node_thumbnail(nodes[0])

reset_node_render_path()

現在のスクリプトと一致するように、指定した書き込みノードのレンダリング パスをリセットします。

None reset_node_render_path(node ノード)

パラメータと戻り値

  • node ノード: クエリーする書き込みノード
  • 戻り値: None - 値は何も返されません。

>>> import sgtk
>>> eng = sgtk.platform.current_engine()
>>> app = eng.apps["tk-nuke-writenode"]
>>> nodes = app.get_write_nodes()
>>> app.reset_node_render_path(nodes[0])

is_node_render_path_locked()

指定した書き込みノードのレンダリング パスがロック状態かどうかを判別します。

bool is_node_render_path_locked(node ノード)

パラメータと戻り値

  • node ノード: クエリーする書き込みノード
  • 戻り値: bool - レンダリング パスがロックされている場合は True で、それ以外の場合は False です

>>> import sgtk
>>> eng = sgtk.platform.current_engine()
>>> app = eng.apps["tk-nuke-writenode"]
>>> nodes = app.get_write_nodes()
>>> app.is_node_render_path_locked(nodes[0])

convert_to_write_nodes()

現在のスクリプトで見つかった全 Shotgun 書き込みノードを通常の Nuke 書き込みノードに変換します。追加の Toolkit 情報は「tk_*」という名前のユーザ ノブに保存されます。

None convert_to_write_nodes()

>>> import sgtk
>>> eng = sgtk.platform.current_engine()
>>> app = eng.apps["tk-nuke-writenode"]
>>> app.convert_to_write_nodes()

convert_from_write_nodes()

以前に Shotgun 書き込みノードから変換された通常のすべての Nuke 書き込みノードを Shotgun 書き込みノードに戻します。

None convert_from_write_nodes()

>>> import sgtk
>>> eng = sgtk.platform.current_engine()
>>> app = eng.apps["tk-nuke-writenode"]
>>> app.convert_from_write_nodes()

process_placeholder_nodes()

プレースホルダ ノードを完全な Shotgun 書き込みノードに変換します。これは主に、スクリプトを最初に Nuke で開いたときに Hiero Toolkit スクリプト書き出し機能によって作成されるプレースホルダ ノードを変換するために使用します。

None process_placeholder_nodes()

>>> import sgtk
>>> eng = sgtk.platform.current_engine()
>>> app = eng.apps["tk-nuke-writenode"]
>>> app.process_placeholder_nodes()

関連するアプリとドキュメント

Publish

アーティストはパブリッシュ アプリを使用して作品をパブリッシュすることにより、下流工程に関わるアーティストが自分の作品を使用できるようにすることができます。アーティストのコンテンツ作成ソフトウェア内における従来のパブリッシュ ワークフローと、ディスク上にある任意のファイルのスタンドアロン パブリッシュがサポートされます。コンテンツ作成ソフトウェアで作業し、基本的な Shotgun 統合を使用すると、このアプリはアーティストがパブリッシュする項目を自動的に探して表示します。さらに高度な制作上のニーズがある場合は、アーティストのワークフローを操作するカスタム パブリッシュ プラグインを作成することもできます。

インストールと更新

Shotgun Pipeline Toolkit にこのアプリを追加する

Project XYZ にこのアプリを追加するには、asset という名前の環境で次のコマンドを実行します。

> tank Project XYZ install_app asset tk-nuke tk-nuke-writenode

最新バージョンに更新する

この項目が既にプロジェクトにインストールされている場合に最新バージョンを取得するには、update コマンドを実行します。特定のプロジェクトに含まれている tank コマンドに移動し、そこでこのコマンドを実行します。

> cd /my_tank_configs/project_xyz
> ./tank updates

または、tank コマンドを実行し、プロジェクトの名前を指定して、更新チェックを実行するプロジェクトを指定します。

> tank Project XYZ updates

コラボレーションと発展

Shotgun Pipeline Toolkit にアクセスできる場合は、すべてのアプリ、エンジン、およびフレームワークのソース コードにも Github からアクセスできます。これらは Github を使用して格納および管理しています。これらの項目は自由に発展させてください。さらなる独立した開発用の基盤として使用したり、変更を加えたり(その際はプル リクエストを送信してください)、 いろいろと研究してビルドの方法やツールキットの動作を確認してください。このコード リポジトリには、https://github.com/shotgunsoftware/tk-nuke-writenode からアクセスできます。

特殊な要件

  • 上記の操作を行うには、Shotgun Pipeline Toolkit Core API バージョン v0.14.37 以降が必要です。
  • 上記の操作を行うには、バージョン v0.2.3 以降のエンジンが必要です。

環境設定

以下に、使用するすべての環境設定の概要を示します。これらの設定は、このアプリまたはエンジンを有効にするための環境設定ファイルで定義する必要があります。

template_script_work

タイプ: template

説明: ディスク上の Nuke スクリプト作業ファイルを特定するテンプレートのリファレンスです。これはバージョンと、必要に応じてレンダリングの名前を操作するために使用します。

write_nodes

タイプ: list

説明: この設定でサポートされている Shotgun 書き込みノードを定義したディクショナリのリストです。各ディクショナリ項目に設定する必要があるキーを以下に示します。「name」はこのノードを説明する名前です。「file_type」はレンダリングに使用するファイル タイプ(exr、cin、dpx など)です。これはレンダリング時に Nuke 書き込みノードに渡されます。「settings」は指定したファイル タイプの(ディクショナリとしての)構成設定です。これもレンダリング時に書き込みノードに渡されます。次に、「render_template」と「publish_template」という名前の 2 つのエンティティが必要です。これはワークフローの各段階でデータが書き込まれる場所を制御します。これらのテンプレートには「version」フィールドを含める必要があります。オプションとして「name」、「width」、「height」(レンダリングのイメージ解像度を反映)、および「output」(さまざまな書き込みノードを識別)を含めることもできます。ステレオ レンダリングを実行して Nuke の %V フラグを使用する場合は、「eye」フィールドを追加します。Shotgun 書き込みノードがパスを計算する場合、パス内のこの値が %V に置き換えられます。最後に、「proxy_render_template」と「proxy_publish_template」という名前のテンプレートが必要です。これには通常のレンダリングとパブリッシュのテンプレートと同じ要件を指定します。このテンプレートがない(null に設定されている)場合は、代わりに通常のテンプレートが使用されます。

フォローする

0 コメント

ログインしてコメントを残してください。