開発者向けドキュメント

連携

Bernard Review をスタジオのパイプラインに接続します。トラッカーの設定、識別子付きのプレイリスト、戻ってくるノート、スクリプトで構築する Version Board、命名ルール。

このページは、パイプラインチーム向けです。制作トラッカーからレビューをプレーヤーに取り込む方法と、適切な識別子を付けてノートを取り出す方法を説明します。ここで触れるコマンドは、Python API と IPCで説明しています。

Bernard Engine と社内パイプライン

AArts Lab の制作トラッカーである Bernard Engine と、あらゆる社内パイプラインは、このバージョンでは 3 つの仕組みを使います。x_tracking ブロック付きの .bpl プレイリスト、build-matrix コマンド、ノートの書き出しです。プレーヤーから Bernard Engine への直接パブリッシュ(Publish to Bernard Engine ボタン)は、近日対応予定です。

識別子付きのプレイリスト

.bpl プレイリストは JSON ファイルです(スキーマ:api/playlist.schema.json)。各クリップに、トラッカーの識別子を持つ x_tracking ブロックを付けられます。お使いのツールから書き出し、load-playlist で読み込みます。

{
  "current_idx": 0,
  "playlist": [
    {
      "path": "//server/proj/SQ010/SH010/comp/SQ010_SH010_COMP_v003.%04d.exr",
      "in_frame": 1001,
      "out_frame": 1100,
      "x_tracking": {
        "shot_id": "shot_1001",
        "shot_name": "SQ010_SH010",
        "version_id": "v003",
        "task": "Compositing"
      }
    }
  ]
}

x_tracking のフィールドは、shot_id、shot_name、version_id、shotgrid_version_id(整数)、ftrack_id、artist、task です。このブロックは、プレイリストを保存しても保持されます。

戻ってくるノート

export-notes は、ダイアログなしで、指定したフォルダーに export.json と export.html を書き出し、注釈付きフレームごとに 1 つの JPEG を添えます(スキーマ:api/notes_payload.schema.json)。クリップごとに、name、status(Pending、Approved、Not Approved)、note、frames(注釈付きフレームごとの番号とファイル)、そして読み込み時にあれば x_tracking ブロックがそのままの形で含まれます。そのため、スクリプトは、ファイル名を突き合わせることなく、識別子によって各ノートを正しいバージョンへ戻せます。

client.load_playlist("D:/review/SQ010_dailies.bpl")
# ... the review takes place ...
client.export_notes("D:/review/SQ010_dailies_notes")

ファイルはバックグラウンドで書き込まれます。export.json を読む前に、それが最新になるまで待ってください。

スクリプトで構築する Version Board

Version Board(Versions)は、ファイル名から自動的に内容が入ります。パイプラインから、命名規則なしで build-matrix を使い、できあがった内容を送ることもできます。コマンドはシーケンスごとに 1 つで、提供するバージョンごとに部門のエントリが 1 つ必要です(同じ部門を 2 つのバージョンで 2 回送ると、その部門のリストが埋まります)。

{"cmd": "build-matrix", "sequence": "SQ010", "id": "seq_42",
 "shots": [
   {"name": "SH010", "id": "shot_1001", "departments": {
      "ANIM": {"version": "v002", "path": "//server/proj/SQ010/SH010/anim/SQ010_SH010_ANIM_v002.mov", "version_id": "ver_77812", "id": "task_501"},
      "LGT":  {"version": "v001", "path": "//server/proj/SQ010/SH010/lgt/SQ010_SH010_LGT_v001.mov", "version_id": "ver_77950"}}},
   {"name": "SH020", "id": "shot_1002", "departments": {
      "COMP": {"version": "v003", "path": "//server/proj/SQ010/SH020/comp/SQ010_SH020_COMP_v003.mov", "version_id": "ver_78001"}}}]}

まだプレイリストにない path は、プレイリストに追加されます。get-matrix はボードの内容を読み戻します。Python では、client.build_matrix(sequence, shots, matrix_id) と client.get_matrix() です。

手順はどのトラッカーでも同じです。シーケンスのバージョンを問い合わせ、ショットごと、部門(パイプラインのステップ)ごとにグループ化し、メディアのパスを path に、バージョンの識別子を version_id に入れます。

命名ルール

スクリプトを使わない場合、追加されたすべてのクリップは、プロファイルフォルダーの naming_rules.json ファイルにあるルールに照らして読み取られます(インストールと ITを参照)。

{"regex": "^([A-Za-z0-9]+)_([A-Za-z0-9]+)_([A-Za-z]+)_v([0-9]+)",
 "groups": {"sequence": 1, "shot": 2, "department": 3, "version": 4}}

これは [Sequence]_[Shot]_[Department]_v[Version].[ext] という規則で、たとえば SQ010_SH010_ANIM_v002.mov です。正規表現とグループ番号は、スタジオの規則に合わせて調整してください。一致しないファイルは DefaultSeq / Base の下に入ります。

Kitsu、ftrack、Flow Production Tracking

Tracker ウィンドウは、この 3 つのトラッカーに直接接続します。展開の際は、プロファイルフォルダーの trackers.json にサイトをあらかじめ用意できます。このファイルにはシークレットを一切含めません(シークレットらしく見えるキーは、読み込み時に破棄されます)。

{"sites": [{
  "id": "demo-kitsu", "kind": "kitsu",
  "base_url": "https://kitsu.example.test",
  "user": "reviewer@example.test",
  "proxy": "", "ca_cert_file": "",
  "path_map": [{"from": "/mnt/show/",
                "to": {"windows": "S:\\show\\", "linux": "/mnt/show/", "macos": "/Volumes/show/"}}],
  "status_map": {"approved": "done"}
}]}
  • kind:kitsu、ftrack、flow。user:Kitsu ではメールアドレス、ftrack では API ユーザー、Flow ではスクリプト名。
  • base_url は https:// で始まる必要があります(http:// は localhost 向けのみ)。
  • proxy:空なら環境のプロキシを使い、direct ならプロキシを使いません。ca_cert_file:スタジオの認証局用の PEM ファイル。
  • path_map はトラッカーのパスをシステムごとに変換します。status_map はプレーヤーのステータス(pending、approved、not_approved)をトラッカーのステータスに対応付けます。
  • シークレット(パスワード、API キー、スクリプトキー)は、ウィンドウの Remember で保存されたシステムの資格情報ストアから、または環境変数 BERNARD_TRACKER_<ID>_SECRET から取得されます。<ID> はサイトの ID を大文字にし、A-Z と 0-9 以外の文字をすべて _ に置き換えたものです。demo-kitsu なら BERNARD_TRACKER_DEMO_KITSU_SECRET です。環境変数が優先されます。

スクリプトからは、tracker-sites、tracker-connect、tracker-projects、tracker-playlists、tracker-load-playlist、tracker-publish(試すには dry_run を指定)、tracker-download-media、tracker-cancel の各コマンドが、ウィンドウと同じことを行います。結果はイベントとして届きます。シークレットを含むリクエストは拒否されます。

トラッカーから読み込まれたクリップは、x_tracking に、トラッカーの種類、サイト、タスク、プレイリスト、メディアの参照、そしてパブリッシュ後には送信したノートのフィンガープリントも保持します。変更のないノートが 2 回パブリッシュされることはありません。

さらに詳しくは、完全版マニュアルのパート 6.4 と 6.6 を参照してください(プレーヤーの Help > User Guide)。api/ フォルダーにスキーマもあります。