Scene Breakdown

Scene Breakdown

シーンの内容を確認するツールは古くなっています。


作成: Shotgun Software
最新バージョン: v1.4.6 (製品)
バージョン番号は、セマンティック バージョニング基準に従っています。
システム名: tk-multi-breakdown

目次:

概要

ドキュメント

      シーンをスキャンする

      Shotgun データにアクセスする

      API アクセス

                  詳細情報 UI を表示する

                  シーン解析を実行する

                  項目の最新バージョンを計算する

                  シーン項目を更新する

                  詳細情報 API の例

インストール、更新、開発

設定オプション

概要

このドキュメントは、Toolkit の設定を管理するユーザのみが使用可能な機能について説明します。 詳細については、『Shotgun 統合ユーザ ガイド』を参照してください。 Scene Breakdown アプリケーションは、シーンに読み込まれている(参照されている)項目のリストを表示し、期限切れの項目を通知します。 概要から複数のオブジェクトを選択して更新ボタンをクリックすると、選択したすべての項目が最新のパブリッシュ バージョンを使用するよう更新できます。

ドキュメント

Scene Breakdown は、リファレンス コンテンツのリストを表示し、期限切れの項目を通知します。 Shotgun メニューからアクセスできます。

詳細情報の概要

1 つまたは複数の項目を選択し、選択項目の更新をクリックできます。 これにより、最新バージョンのコンテンツを使用するよう項目が切り替わります。

シーンをスキャンする

詳細情報アプリケーションがリファレンス用にシーンをスキャンする場合は、特別なスキャン フックが呼び出されます。 このスキャン フックは、ファイルに対応したパスを含むノードのリストを返します。 検出した各リファレンスはファイル パスを返し、Tank がファイル パスを確認して、パブリッシュとして認識するかどうかを最初にチェックし、パブリッシュとして認識した場合には、最新バージョンが利用可能かどうかを確認します。

ユーザが古いバージョンに表示される更新ボタンをクリックすると、アプリケーションは実際の更新作業を実行する別のフックを呼び出します。 つまり、このフックをカスタマイズすることで、詳細情報に新しいカスタム ノードを比較的簡単に追加できます。

Shotgun データにアクセスする

フック内で更新しようとしているパブリッシュ用の Shotgun データにアクセスする必要がある場合、find_publish を 1 回呼び出すだけで、アプリケーションでやり取りされる全項目のメタデータが次のように取得されます。

class BreakdownHook(Hook):

    def update(self, items):
        """
        Perform replacements given a number of scene items passed from the app.

        Once a selection has been performed in the main UI and the user clicks
        the update button, this method is called.

        The items parameter is a list of dictionaries on the same form as was
        generated by the scan_scene hook above. The path key now holds
        the that each node should be updated *to* rather than the current path.
        """

        engine = self.parent.engine

        # resolve shotgun data for all paths passed via the items dictionary
        sg_data = tank.util.find_publish(engine.sgtk,
                                         [i["path"] for i in items],
                                         fields=["id", "code", "version_number"])

        for i in items:
            node_name = i["node"]
            node_type = i["type"]
            new_path = i["path"]
            # now that each item is processed, it is easy to access the
            # shotgun data via a dictionary lookup:
            sg_data = sg_data.get(i["path"])

            # once we have all our desired info and metadata, we can go ahead
            # and apply the update business logic.
            # [-business logic here-]

API アクセス

API を使用すると、プログラムによって詳細情報アプリケーションにアクセスできます。 次のようなメソッドがあります。

詳細情報 UI を表示する

app_object.show_breakdown_dialog()

詳細情報 UI を表示するには、show_breakdown_dialog() メソッドを実行します。 アプリケーションが現在実行している環境の tk-multi-breakdown セクションに含まれていると仮定すると、次のように実行できます。

>>> import sgtk
>>> e = sgtk.platform.current_engine()
>>> e.apps["tk-multi-breakdown"].show_breakdown_dialog()

シーン解析を実行する

items = app_object.analyze_scene()

analyze_scene() メソッドを使用すると、プログラムによってシーン解析ロジックを実行できます。 これにより、詳細情報 UI がシーン項目のリストを作成するときに使用するのとまったく同じロジックが実行されます。

このメソッドは詳細情報の項目のリストを返します。 各項目は、項目を定義する複数のキーが含まれるディクショナリによって表されます。 検出されるのは、パスが Toolkit テンプレート ファイルのテンプレートに対応するファイルのみです。 ファイルは Shotgun にパブリッシュとして存在する必要はありませんが、パブリッシュとして存在する場合、このメソッドは基本的な Shotgun パブリッシュ メタデータを返します。

node_namenode_type の 2 つのキーを使用すると、DCC 中心の「アドレス」またはリプリゼンテーションが返されるため、DCC 内のパスを特定できます。 たとえば、Maya と Nuke の場合、ノード名とタイプを返します。 このロジックはフックに実装され、DCC 間で異なります。 このメソッドは Shotgun に接続しようとしますが、実行される呼び出しの数は一定で、シーンの複雑さとは関係ありません。

次に、返されるデータ内のディクショナリの一般的な例を示します。

{'fields': {'Sequence': 'aaa',
            'Shot': 'aaa_00010',
            'Step': 'Comp',
            'eye': '%V',
            'height': 1556,
            'name': 'test',
            'output': 'output',
            'version': 1,
            'width': 2048},
 'template': <Sgtk TemplatePath nuke_shot_render_pub_mono_dpx>,

 'node_name': 'Read2',
 'node_type': 'Read',

 'sg_data': {'code': 'aaa_00010_test_output_v001.%04d.dpx',
             'entity': {'id': 1660, 'name': 'aaa_00010', 'type': 'Shot'},
             'id': 1424,
             'name': 'test',
             'published_file_type': {'id': 3,
                                     'name': 'Rendered Image',
                                     'type': 'PublishedFileType'},
             'task': {'id': 4714, 'name': 'Comp', 'type': 'Task'},
             'type': 'PublishedFile',
             'project': {'id': 234, 'name': 'Climp', 'type': 'Project'},
             'version_number': 1},
 }

ヒント: 上記から分かるように、各項目はパスを表すために template オブジェクトと fields ディクショナリを返します。 この項目について実際の未処理のパスを確認するには、template_obj.apply_fields(fields_dict) を実行します。 このメソッドで返されるいずれかのディクショナリ項目のコンテキストでは、コードが次のようになります

breakdown_items = analyze_scene()
for item in breakdown_items:
   path = item["template"].apply_fields(item["fields"])

項目の最新バージョンを計算する

highest_version = app_object.compute_highest_version(template, fields)

項目の最新バージョンを計算するには、compute_highest_version(template, fields) メソッドを使用します。 パラメータ templatefields は解析すべきパスを表し、通常は analyze_scene() メソッドの出力から取得します。 詳細情報アプリケーションを使用する場合は、バージョン番号を含むテンプレート キーを常に {version} という名前にする必要があります。

これにより、ディスクをスキャンして最新バージョンを判断します。 このメソッドはディスク上の最新バージョン番号を返します。 詳細については、次の使用例を参照してください。

シーン項目を更新する

app_object.update_item(node_type, node_name, template, fields)

項目を更新するには update_item(node_type, node_name, template, fields) メソッドを使用します。 パラメータ templatefields は更新する必要のあるパスを表します。 パラメータ node_namenode_type を使用すると、修正する必要のあるシーン内のノードを特定できます。 通常、この値は analyze_scene() メソッドの出力から取得します。

これは詳細情報 UI で更新を実行する場合に似ています。 実際の更新の呼び出しは、DCC 固有のロジックを処理するフックにディスパッチされます。 詳細については、次の使用例を参照してください。

詳細情報 API の例

次の例では、シーンの内訳を取得し、最新バージョンを使用していないすべての項目を更新する方法について説明します。

# find the breakdown app instance
import sgtk
engine = sgtk.platform.current_engine()
breakdown_app = engine.apps["tk-multi-breakdown"]

# get list of breakdown items
items = breakdown_app.analyze_scene()

# now loop over all items
for item in items:

    # get the latest version on disk
    latest_version = breakdown_app.compute_highest_version(item["template"], item["fields"])

    # if our current version is out of date, update it!
    current_version = item["fields"]["version"]
    if latest_version > current_version:

        # make a fields dictionary representing the latest version
        latest_fields = copy.copy(item["fields"])
        latest_fields["version"] = latest_version

        # request that the breakdown updates to the latest version
        breakdown_app.update_item(item["node_type"], item["node_name"], item["template"], latest_fields)

関連するアプリケーションとドキュメント

ローダー

このドキュメントは、Toolkit の設定を管理するユーザのみが使用可能な機能について説明します。 詳細については、『Shotgun 統合ユーザ ガイド』(https://support.shotgunsoftware.com/hc/en-us/articles/115000068574-Integrations-User-Guide#The%20Loader)を参照してください。 Shotgun ローダーを使用すると、Shotgun にパブリッシュしたファイルの概要確認と参照をすばやく行うことができます。 検索可能なツリー ビュー ナビゲーション システムを採用しているため、探しているタスク、ショット、またはアセットにすばやく、簡単にアクセスできます。ローダーには、その項目のパブリッシュすべてについてサムネイル ベースの概要が表示されます。 その後は、設定可能なフックを利用して、パブリッシュを参照したり、現在のシーンに簡単に読み込んだりできます。

Toolkit Pipeline のチュートリアル

このドキュメントは、Toolkit の設定を管理するユーザのみが使用可能な機能について説明します。 詳細については、『Shotgun 統合ユーザ ガイド』(https://support.shotgunsoftware.com/hc/en-us/articles/115000068574)を参照してください。 このドキュメントには、高度な方法で Toolkit を使用してシンプルなエンドツーエンドのパイプラインをセットアップする、テクニカル ディレクタ(TD)向けの段階的なチュートリアルを用意しています。 このチュートリアルを終了した新しい Toolkit ユーザは、プラットフォームの基本的な要素と貴社固有のニーズに基づいたカスタマイズの方法を習得できます。 また、すぐに使用できる Toolkit アプリケーションと、アーティストのワークフローに合わせた利用方法についても紹介します。

インストールと更新

Shotgun Pipeline Toolkit にこのアプリケーションを追加する

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

> tank Project XYZ install_app asset tk-maya tk-multi-breakdown

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

この項目が既にプロジェクトにインストールされている場合に最新バージョンを取得するには、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-multi-breakdown からアクセスできます。

特殊な要件

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

環境設定

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

hook_scene_operations

タイプ: hook

既定値: {self}/{engine_name}_scene_operations.py

説明: 入力ファイルのシーンをスキャンします。 ノードとファイル名のリストを返します。 返されるリスト内の各項目は、ノード、タイプ、パスの各キーを含むディクショナリになります。 ノード キーは Maya のノード名、タイプ キーはリファレンス タイプ、パス キーは現在参照しているファイルへのパスになります。

フォローする

0 コメント

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