Shotgun Panel

Shotgun Panel

シーン、ユーザ自身、ユーザの周囲のものに関する Shotgun の情報を含むパネル UI です。
最新バージョン: v1.5.2 (製品)
バージョン番号は、セマンティック バージョニング基準に従っています。
システム名: tk-multi-shotgunpanel

注: このドキュメントは、Toolkit の設定を管理するユーザのみが使用可能な機能について説明します。詳細については、『Shotgun 統合ユーザ ガイド』を参照してください。

Shotgun Panel を使用すると、埋め込まれたパネルから Shotgun の情報にすばやくアクセスできます。ユーザが現在作業しているタスクに関する情報に簡単にアクセスでき、アクティビティ ストリーム、ノート、タスク、バージョン、およびパブリッシュにもすぐにアクセスできます。チームの他のメンバーから確認のために送信されたバージョンを再生します。アプリケーション内からノートに直接返信できます。パイプラインで依存関係の情報をトラックする場合は、Shotgun Panel からもこの情報を直接参照できます。

概要ビデオ

次のビデオでは、特長と機能の概要について説明します。

ドキュメント

このドキュメントは、Toolkit の設定を管理するユーザのみが使用可能な機能について説明します。詳細については、『Shotgun 統合ユーザ ガイド』を参照してください。

Shotgun Panel を設定する

Shotgun Panel で広範囲に設定できる主な領域は 2 つあります。UI のテキストの表示と、データに関連付けるアクションです。次のセクションでは、2 つのシステムの設定を制御する方法について説明します。

表示内容を設定する

詳細領域の値とリストは両方とも shotgun_fields フックから設定可能です。正確な値を表示するために、このフックをサブクラス化して実装を変更できます。

システムをテンプレート化する

フックはシンプルなテンプレート言語をサポートしているため、優れた柔軟性が得られます。また、Qt でサポートされている HTML サブセットもサポートしているため、表示される値の色、フォント サイズ、ウェイトなどを制御できます 。テンプレート言語は次のように機能します。

  • Shotgun の値は <b>Description:</b> {description} のように {brackets}で囲まれています。このテンプレートをレンダリングすると、{description} の部分が説明フィールドの値で置き換えられます。

  • 値が空以外の場合にのみ表示される値にオプションの接頭辞または接尾辞を指定する場合、{[Prefix]sg_field[suffix]} 構文を使用できます。両方の値が追加されている場合、テンプレート {[Start: ]start_date} {[End: ]end_date}Start: 12 July 2009 End: 14 July 2012 をレンダリングします。ただし、終了日を設定していない場合は Start: 12 July 2009 をレンダリングします。

  • 一部の値が設定されていない場合はフォールバックを定義することができます。Shotgun のバージョンについては、プロデューサがアーティストの代わりにバージョンを送信するというワークフローをサポートするため、artist フィールドが created_by フィールドよりも優先されます。この場合、バージョンはプロデューサによって作成されますが、artist フィールドはアーティストに設定されます。ただし、いつもそういうわけではありません。アーティストが自分の作業を送信するパイプラインでは、アーティスト欄は空欄になります。バージョンを表示する場合、最初に artist フィールドを確認できるようにしておくと役立ちます。今回このフィールドは設定されていないため、created_by フィールドにフォールバックします。このようにするには、Created By: {artist|created_by} のように構文 {field1|field2} を使用します。{[Created By: ]artist|created_by} のようにオプション フィールドを組み合わせることができます。

このフックには次のメソッドが含まれます。

リストに表示される項目を制御する

get_list_item_definition() メソッドは、Shotgun のエンティティ タイプを考慮して、さまざまなリストの項目の外観を制御するディクショナリを返します。たとえば、top_lefttop_right、および body といったキーを持つディクショナリを返します。

{
 "top_left": "<big>{code}</big>",
 "top_right": "{updated_at}",
 "body": "By: {created_by}<br>Description: {description}"
}

上部の細部領域を制御する

get_main_view_definition() メソッドは、Shotgun のエンティティ タイプを考慮して、title キーと body キーを持つディクショナリを返します。これらの値は、詳細領域のオブジェクトの外観を次のように制御します。

{
 "title": "{type} {code}",
 "body": "By: {created_by}<br>Description: {description}"
}

[情報](Info)タブに表示されるフィールドを制御する

get_all_fields() メソッドは、[情報](Info)タブで任意のエンティティがレンダリングされる場合に表示するフィールドのリストを返します。

アクションを設定する

アクションは Shotgun のデータを操作するコードの小さなスニペットです。例を次に示します。

  • 任意の Shotgun バージョンの RV を起動するアクション
  • 任意のタスクに自分に割り当てることができるアクション
  • Maya リファレンスとして Maya に Shotgun パブリッシュをロードするアクション

アクションの実際のペイロードはアクション フックで定義されます。アクションのロジックを定義したら、アプリ設定の Shotgun オブジェクトにこのアクションをマップすることができます。次に、このアクション マッピングの例を示します。

action_mappings:
  PublishedFile:
  - actions: [reference, import]
    filters: {published_file_type: Maya Scene}
  - actions: [texture_node]
    filters: {published_file_type: Rendered Image}
  Task:
  - actions: [assign_task]
    filters: {}
  Version:
  - actions: [play_in_rv]
    filters: {}

上記の例では、referenceimporttexture_nodeassign_task、および play_in_rv といったアクションを使用します。次に、さまざまな Shotgun のオブジェクトと条件にこのアクションをマップします。たとえば import アクションは、タイプが「Maya Scene」であるすべてのパブリッシュに表示されるよう要求しています。

オブジェクトがパネルにロードされると、上記のアクション設定が読み込まれ、分析されます。現在のオブジェクトに適したアクションのリストが決定され、generate_actions() フック メソッドが実行されます。この特定の Shotgun オブジェクトに対してアクションを実行できるかどうかをフック コードが判断できるように、指定したエンティティの Shotgun データはこの時点でフックに渡されます。この方法により、各フックで表示前にチェックを実行できます。たとえば、play_in_rv フックはメディアをローカルで利用できる場合にのみ意味を持ちます。設定でセットアップされたアクション マッピングは指定した Shotgun エンティティで有効にするアクションをパネルに通知しますが、指定したオブジェクトに適していないと generate_actions() メソッドによって判断された場合は、すべてのアクションが表示されない可能性があります。

generate_actions() メソッドから返されるアクションはアクション メニューに表示されます。ユーザがクリックすると、execute_action() フック メソッドが呼び出されてアクションが実行されます。

パネルがサポートするアプリケーションごとに、適切なアクションを実装するアクション フックがあります。たとえば Maya などの場合、既定のフックは referenceimporttexture_node の各アクションを実装し、それぞれが特定の Maya コマンドを実行して現在の Maya シーンにパブリッシュを取り込みます。すべてのフックと同様に、アクションを完全にオーバーライドおよび変更できます。また、埋め込まれたフックに基づいたフックも作成できるため、たくさんのコードを複製しなくても、組み込みのフックに他のアクションを簡単に追加できます。

パネルは Toolkit の第 2 世代のフック インタフェースを使用するため、柔軟性に優れています。このフックの形式は改善された構文を使用します。これは既定の構成設定で次のように表示されます。

actions_hook: '{self}/tk-maya_actions.py'

キーワード {self} は、フックのアプリの hooks フォルダを確認するように Toolkit に指示します。 このフックをユーザが設定した実装でオーバーライドする場合は、値を {config}/panel/maya_actions.py に変更します。これにより、設定フォルダ内の hooks/panel/maya_actions.py と呼ばれるフックを使用するように Toolkit に指示します。

詳細については、アプリに付属するフック ファイルを参照してください。フックは継承も活用します。つまり、フック内のすべての項目をオーバーライドすることなく、さまざまな方法で既定のフックを簡単に拡張または強化して簡単にフックを管理できます。

フックの継承を使用すると、次のように既定のフックに他のアクションを追加できるようになります。

import sgtk
import os

# toolkit will automatically resolve the base class for you
# this means that you will derive from the default hook that comes with the app
HookBaseClass = sgtk.get_hook_baseclass()

class MyActions(HookBaseClass):

    def generate_actions(self, sg_data, actions, ui_area):
        """
        Returns a list of action instances for a particular object.
        The data returned from this hook will be used to populate the 
        actions menu.

        The mapping between Shotgun objects and actions are kept in a different place
        (in the configuration) so at the point when this hook is called, the app
        has already established *which* actions are appropriate for this object.

        This method needs to return detailed data for those actions, in the form of a list
        of dictionaries, each with name, params, caption and description keys.

        Because you are operating on a particular object, you may tailor the output 
        (caption, tooltip etc) to contain custom information suitable for this publish.

        The ui_area parameter is a string and indicates where the publish is to be shown. 

        - If it will be shown in the main browsing area, "main" is passed. 
        - If it will be shown in the details area, "details" is passed.

        :param sg_data: Shotgun data dictionary with all the standard publish fields.
        :param actions: List of action strings which have been defined in the app configuration.
        :param ui_area: String denoting the UI Area (see above).
        :returns List of dictionaries, each with keys name, params, caption, group and description
        """

        # get the actions from the base class first
        action_instances = super(MyActions, self).generate_actions(sg_data, actions, ui_area)

        if "my_new_action" in actions:
            action_instances.append( {"name": "my_new_action",
                                      "params": None,
                                      "group": "Pipeline Utils",
                                      "caption": "My New Action",
                                      "description": "My New Action."} )

        return action_instances

    def execute_action(self, name, params, sg_data):
        """
        Execute a given action. The data sent to this be method will
        represent one of the actions enumerated by the generate_actions method.

        :param name: Action name string representing one of the items returned by generate_actions.
        :param params: Params data, as specified by generate_actions.
        :param sg_data: Shotgun data dictionary with all the standard publish fields.
        :returns: No return value expected.
        """

        if name == "my_new_action":
            # do some stuff here!

        else:
            # call base class implementation
            super(MyActions, self).execute_action(name, params, sg_data)

これで、この新しいアクションを設定内のパブリッシュ タイプのセットにバインドできます。

action_mappings:
  PublishedFile:
  - actions: [reference, import, my_new_action]
    filters: {published_file_type: Maya Scene}
  Version:
  - actions: [play_in_rv]
    filters: {}

上記のようにフックの派生を利用すれば、カスタム フック コードには、管理と更新を簡単にするために実際追加するビジネス ロジックを含めるだけで構いません。

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

Loader

Shotgun ローダーを使用すると、Shotgun にパブリッシュしたファイルの概要確認と参照をすばやく行うことができます。検索可能なツリー ビュー ナビゲーション システムを採用しているため、探しているタスク、ショット、またはアセットにすばやく、簡単にアクセスできます。ローダーには、その項目のパブリッシュすべてについてサムネイル ベースの概要が表示されます。その後は、設定可能なフックを利用して、パブリッシュを参照したり、現在のシーンに簡単に読み込んだりできます。

Publish

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

Shotgun Workfiles

このアプリケーションは、Shotgun Pipeline Toolkit でファイルを管理する場合の基礎部分を構成します。これにより、さまざまな Shotgun エンティティ間をすばやく移動し、作業をすばやく開始することが可能になります。アプリケーションがシーンの裏でパスを管理するため、パスを指定する必要はありません。このアプリケーションを使用すると、作業領域内の作業ファイルを管理し、他のユーザと作業を簡単に共有できます。

管理者ガイド

これは Shotgun 統合の管理者ガイドです。

開発ガイド

これは Shotgun 統合の開発ガイドです。

ユーザ ガイド

これは Shotgun 統合のユーザ ガイドです。

インストールと更新

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

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

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

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

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

特殊な要件

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

環境設定

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

action_mappings

タイプ: dict

既定値: {u'PublishedFile': [{u'filters': {}, u'actions': [u'publish_clipboard']}], u'Task': [{u'filters': {}, u'actions': [u'assign_task', u'task_to_ip']}], u'Version': [{u'filters': {}, u'actions': [u'quicktime_clipboard', u'sequence_clipboard', u'add_to_playlist']}]}

説明: Shotgun オブジェクトとアクションを関連付けます。アクションはアクション フック内ですべて定義されるため、既定では多くのアクションが使用可能で、さらにこれとは別に、必要に応じて独自のアクションを追加できます。

enable_context_switch

タイプ: bool

説明: コンテキスト スイッチ UI を表示するかどうかを制御するフラグです。

actions_hook

タイプ: hook

既定値: {self}/general_actions.py

説明: アクション管理のすべてのメソッドを制御するフックです。

shotgun_fields_hook

タイプ: hook

既定値: {self}/shotgun_fields.py

説明: 値の表示方法を制御するフックです。

フォローする

0 コメント

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