Bernard Review をスタジオのパイプラインに接続します。トラッカーの設定、識別子付きのプレイリスト、戻ってくるノート、スクリプトで構築する Version Board、命名ルール。
このページは、パイプラインチーム向けです。制作トラッカーからレビューをプレーヤーに取り込む方法と、適切な識別子を付けてノートを取り出す方法を説明します。ここで触れるコマンドは、Python API と IPCで説明しています。
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(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 の下に入ります。
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)をトラッカーのステータスに対応付けます。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/ フォルダーにスキーマもあります。