scenario-blender-previs-storyboard について
監督や編集者向けの Blender プレビズ・絵コンテスキルです。情報のビートをショット、カメラ計画、コンタクトシート、タイミング付きアニマティクスにまとめ、構図や連続性を監査します。
主な機能
- 01ビートからショットを計画
- 02マネキンを使った3Dプレビズ
- 03カメラとレンズの計画
- 04ショットと構図の監査
- 05コンタクトシートとアニマティクス
活用シーン
- 01制作前のストーリービート検証
- 02カメラとレンズの選択比較
- 03静止画とショットからアニマティクスを作成
インストール
コマンドをコピーしてターミナルで実行します。
npx skills add https:/ / github.com/ scenario-labs/ skills --skill scenario-blender-previs-storyboardインストール後、Claude Code で/scenario-blender-previs-storyboardを入力して読み込まれたか確認します。
同梱ファイル
SKILL.md と一緒にインストールされる参考資料やスクリプト。
references/critique.mdexpert-notes.mdprocedures.mdsources.mdscripts/bx_previs.py詳細
プレビズ、レイアウト、ストーリーボード
エキスパートによるプレビズは、アイデアをできるだけ低コストで評価できる程度に伝えます。1ビートにつき1つの事実を示し、観客に感じてほしいことに合わせて各ショットを設計し、静止画を編集してタイミングを決めます。カメラは観客の身体です。カメラをどこに、どの高さに置き、どのレンズを使うかで感情が決まるため、中立ではない選択にはすべて明確な理由が必要です。ここで名前を挙げた関連スキルが利用可能なスキルにない場合は、ユーザーにインストールを依頼してください
(npx skills add scenario-labs/skills --skill <name>)。ユーザーが応答しない場合は、ツールのスキーマに基づいて進め、不足しているスキルを明記してください。
必須の前提知識: scenario-blender-expert(実行チャネル、レビューループ、5.2 API の変更点)。
ツールキット:scripts/bx_previs.py(5.2.1 でテスト済み):
import sys; sys.path += ["<this skill>/scripts", "<scenario-blender-expert>/scripts"]; import bx_previs as P
どのスキルを使うか。 このスキルは、監督と編集者が評価するストーリープレビズとアニマティクスを扱います。対象外:レンダーから動画生成モデル(Seedance)への誘導に使うプレイブラスト。これは別のルール(彩度の高い色での識別、カットでレンズを変えない、動きを滑らかにする、引き継ぎシート)に従います。これらのルールは、以下のワークフローおよび P.audit の適用対象でもチェック対象でもありません。そのため、監督向けのアニマティクスをそのまま動画生成モデルに渡さないでください。scenario-blender-blockout を使って作り直してください。通常、キャラクターは動画生成モデルが自動でアニメーション化する色付きカプセルに置き換えます。共通事項:メートル単位、Z-up、足元にルート、マーカーに紐付けたショットごとのカメラ、to_track_quat('-Z','Y') によるルックアット。ストローク:scenario-blender-grease-pencil。レイアウト後のアニメーション:scenario-blender-animation。実際のリグ:scenario-blender-rigging。
基本姿勢(エキスパートとしての違い)
- Hjalti Hjalmarsson:ショットに入る前に、情報のビート一覧を書く。 観客が一度に受け取れるのは1つのことなので、1行につき1つの事実を書きます。連続するビートをまとめてショットにします。新しい演出では、同じ事実を別の順序で見せます。ビートが欠けていれば、アイデアを公平に試せません。
- Hjalti:まずは演劇的に、その後に映画的に。ショットには時間がかかる。 固定カメラのバージョンで演技を評価します。同じビートをショットで表現すると、各カットを読み取る必要があるため、所要時間は約2倍(最大3倍)になります(13/22/25秒に対して47/40秒)。単純化しすぎたバージョンは必ず短くなりすぎ、段取りを隠してしまいます(キャラクターは10フレームで部屋を横切れません)。
- Charge の手順(Hjalti):すべてのフレームをストーリーボードの1コマとして扱う。 1ショットにつき10フレーム、キーは CONSTANT、次のフレームにA/B案、10フレーム目に採用案を置き、バージョンを含む名前で静止画を書き出し、タイミングは別の編集で決めます。
- Hjalti:迷ったら目の高さにし、A/B比較で早めにレンズを決める。 2人のキャラクターを撮る場合は、それぞれの目の高さに合わせます。低い位置や高い位置は、何かを表明する選択です。1つのレンズに合わせて作ったポーズは、レンズを変えると成立しません。
- Dillon Gu:構図と焦点距離は別々に決め、カットがムードを壊すこともある。 観客はカメラの位置に立っています。その空間から離れると危険が薄れます。無生物のインサートが2つ続くと緊張感が下がります。
- カメラに合わせてごまかしてもよいが、ごまかす前にキーを打つ(Hjalti、Charge、Renato Roldan)。ショットごとにサイズを変えたり、浮かせたり、小道具を入れ替えたりできます。ただし、共有タイムラインでキーを打たずにごまかすと、それ以前のショットが壊れます。
- プレビズは、アイデアを伝えられる範囲で最も低コストなバージョンにする(Hjalti、Charge)。カメラの動き自体がストーリーテリングとなるショットだけをアニメーション化します。それ以外は静止画1枚にし、静止画のプッシュインは編集で擬似的に加えます。Workbench のグレー表示を使い、ムード照明は使わず、リグより先にマネキンを使います。
P.auditは、静止ショット中のカメラ移動、ブロック開始位置の間にあるキー、Workbench 以外のエンジンを拒否します。 - カットの後、目は1つのものを見つけられなければならない(Hjalti)。競合する被写体の前にキャラクターを配置し直します。感情を維持できる角度を選びます(Rex がシルエットになってしまうサイドカットを、彼は却下しました)。
最初に決めること
| 入力 | 変更内容 | 指定がない場合のデフォルト |
|---|---|---|
| フォーマット | すべてのコンポジション(Charge:最初に固定) | 1920x1080、24 fps、静止画は 50 % |
| 処理 | ショット数、実行時間 | シアターパス、その後シネマティック |
| 方法 | エージェントはタブレットを持っていない | マネキンを使った 3D プレビズ。絵コンテは提供されたアートがある場合のみ作成します。Rigify プロキシは要望があった場合のみ使用します(P.rigify_proxy。--factory-startup では Rigify は無効です。最初に P.ensure_rigify() を実行してください) |
| ムードまたは監督のスタイル | ショットごとのレンズ、高さ、動き | ニュートラルな文法とし、逸脱がある場合はショットごとに明記します |
| 実行時間の予算 | 尺 | シネマティックなカットの場合、1 ビートあたり約 1.6~1.9 秒(Hjalti のスライドから算出:25 ビート、8 ショット、40~47 秒) |
| 移動経路 | 画面上の方向 | 行きは左から右、戻りは右から左(Charge) |
| 納品物 | 出力 | ショットリスト、コンタクトシート、平面図、クリーン版と焼き込み版のアニマティック MP4、バージョン管理された .blend |
ワークフロー
- スクリプトをビートに分けます。 アセット一覧を作成し、番号付きのビートを並べます。各ビートには事実を1つだけ含め、追加したビートにはすべて印を付けます。
ゲート:
P.shot_list(BEATS, SHOTS)は、ビートの欠落、重複、順序違いがあるとエラーになります。 - セットとプロキシを設定します。
P.setup_scene(フォーマット、Workbench、グレー、Standardビュー変換)を使います。 実寸のセット小道具にはP.prop、キャラクターにはP.mannequin(ルートは足元に配置し、eye_heightを設定。4つのピボットコントロールはレイアウトのサブセットとして使用)を使います。グレーを基調にし、主役にはポップカラーを1色使います(Renato:赤)。 ゲート:ドア(2.1 m)とカウンター(1.0 m)の隣に置いて、スケールが分かるようにします。 - シアターパスを作成します。 アクションの両端を捉えるカメラを1台固定します(
camを共有し、fit="all"、35 mm、平均的な目の高さ)。ビートグループごとにブロックを1つ作ります。 ゲート:P.auditの行で、すべてのブロックにおいて、すべての被写体のhead_inとfeet_inがtrueになっていること。シアター編集のタイミングを調整します。 - シネマティックプランを作成します。 オープニング案を複数挙げ、ビートを並べ替え、
intent、size、lens、height、durを設定してショットにグループ化します。カメラを評価する前に、アクションラインと移動経路を設定したP.floor_planを作成します。 ゲート:ラインの片側を保ちます。移動経路は方向のルールに従います。 - ブロッキングを行います。 各ブロックで、
sc.frame_set(f)(前のポーズを保持)を実行し、変化する部分だけを設定してから、P.key_block(all_movables, f)を実行します。ごまかしの調整も同じキーを通して行い、その後P.make_steppedを実行します。 ゲート:P.stepped_report == {}であること。隣接するショット間でごまかしの調整を確認します。 - カメラを設定します。
P.build_shotsは、サイズ、レンズ、目の高さ(または明示的なloc/aim)から各カメラを配置し、不透明なパスパルトゥーを設定します(Charge:構図だけが見える状態にします。他のカメラではP.passepartout(sc)を使います)。また、最初のフレームにマーカーを割り当てます。さらにポーズを付ける前に、主要なショットでP.ab_lensを使います。 ゲート:P.audit(...)["problems"] == []であること。 - ルックを決めます。
P.contact_sheetを実行して開きます。薄暗いセットにキャラクターが溶け込む場合は、P.fog_for_shot(sc, t, chars)を使います(Hjalti:見やすさのための奥行きフォグであり、照明ではありません。被写体の背後に配置し、そのショットに合わせてキー設定します)。主役と背景の値はP.values_atで確認します。 ゲート:Quality gates のビジュアル一覧を確認します(S6 では、オクルージョンと端が切れたワイドショットを見つけられたのは画像だけでした)。 - 編集します。
P.render_stillsを実行し、続けてP.animaticを使います(画像ストリップをdur秒保持し、静止画にはpush、liveショットにはシーンストリップ、サウンド、burn_inを設定します)。複数のアングルから1つの連続したアクションを表現する場合(Pablo、Story Tools)、liveショットとcover=Trueのショットを1つのシーンストリップにまとめ、カメラごとにソフト分割します。P.retime_cutでリタイムします(マーカーも追従します)。キーを移動して調整してはいけません。 ゲート:実行時間が予算内であること。MP4から切り出したフレームがカットリストと一致すること。 - 新しいシーンペア(
02_blend/02_edit)と新しいバージョン番号を使って反復します。上書きは一切しません。
数値
| 値 | 対象 | 出典 |
|---|---|---|
| ショットブロックあたり10フレーム。正当な理由がある場合のみ20フレーム。10、20、30から開始 | プレビズのタイムライン | Charge |
| ショット名は10刻み(sh010、sh020) | マーカー | Hjalti on screen |
| 35 mmの劇場用フレーム。主役を際立たせるキーショットでは約60 mm | 36 mmセンサー | Hjalti |
| F値5.6、カメラリグのクリップ範囲は0.01~200 m | Hjaltiのリグ | Hjalti |
| 劇場版は13/22/25秒、シネマティック版は47/40秒 | 同じ脚本 | Hjalti slide 00:46:01 |
| 怒りの爆発に3つのポーズ(予備動作、オーバーシュート、収束) | 1つのビート | Hjalti |
| ボーディングは6 fpsで、編集時にリタイミング | ボードシーン | BouncyBrain |
| 目の許容誤差は0.15 m。カメラから70度を超えると描画が崩れる | 監査のしきい値 | [added] |
| 可視高さ = 被写体の高さ x 4 / 2 / 1.15 / 0.8 / 0.6 / 0.4 / 0.25 / 0.12 | ews、ワイド、フル、mws、ミディアム、mcu、cu、ecu | [added] |
| 距離 = 可視高さ x レンズ / センサー高さ(16:9で20.25 mm) | 同じサイズでレンズを交換:d2 = d1 x f2 / f1 | [added] |
| 手持ち撮影のNOISEは0.010~0.018 rad、スケールは18~26フレーム | カメラの回転 | 動画ガイド;実測ピーク間値 = 強度の0.66倍 |
カメラの言語
| 選択 | 表現するもの | 出典 |
|---|---|---|
| アイレベル、標準レンズ、中央配置、固定 | ニュートラル。すべての A/B の出発点 | Dillon, Hjalti |
| ローアングル、または隅に寄せる | 隠れた観察者 | Dillon |
| 遠くから広角で撮り、その後すばやくズームイン | 見られている感覚。誰かが標的に狙いを定める | Dillon |
| 至近距離からの超広角 | 「ただごとではない」、歪み | Dillon |
| 望遠レンズ | 情報的、平坦、孤立させる、2 人の人物の瞬間を強調する | Dillon, Hjalti, Spitfire |
| 真上からのショット。ドリーズーム(リニアキー) | 上からの圧力。コントロールの喪失 | Dillon |
| 背後から中心を外して撮る | 孤立 | Dillon |
| 横方向の移動 | 画面上で最もニュートラルな動き | Dillon |
| チルトまたは移動し、細部で終わる | その細部が被写体になる | Hjalti |
| 顔を映さない構図、長めのショット、音で示される画面端の重要な物体 | 日常 | Dillon |
身体感のある動き(Dillon):見張る人や眠気でぼんやりした人物がカメラを持っているときの手持ちの揺れ、カメラオペレーターによるすばやいズーム、人物の肩とともに下がるカメラ、怠惰さを表す動きの少なさ、切迫感を表す動きの多さ。商品ショットは最も静止したショットです。Hjalti は引き継ぎの動作に合わせてフォーカスを移動します(dof.focus_object)。**カット:**アクションラインの片側で行います。オーバー・ザ・ショルダーでは、カメラがすでにいる側の肩を使います。ジャンプカットは、日常の時間を省略したことを表す場合があります(Dillon)。POV はラインのすぐ脇、カメラ側に置きます[追加、S6]。
品質ゲート
測定可能: P.audit(sc, table, chars, line=(a, b), travel={name: "right"}, stepped=movables):各ショットのフレームでマーカーを切り替え、その 1 フレーム前には切り替えないこと、メインの被写体の目線がフレーム内にあり遮られていないこと(遮るものをレイキャストで特定し、フォグも含める)、意図したサイズとの測定値の比較、アイレベル以外の各カメラについて意図を設定した高さのクラス、アクションラインの片側にいること(POV と cross は対象外)、移動ごとの画面上の方向、ブロックの長さ、インサートが 2 つ連続していること、ライブブロック外のキーが一定でないこと、不透明なパスパルトゥー、コストゲート。warnings にはライトを列挙します。加えて、編集後のランタイム、ffprobe のストリームと長さ、ライブショットについてはプリビズフレームと照らし合わせた編集フレームのレンダリングも確認します。
ビジュアル:(各画像を開いて確認)コンタクトシート(すべてのビートが見えること、各ショットの焦点が 1 つであること、主役が読み取れること、ごまかしや遮蔽物が見えないこと、このカメラからポーズが読み取れること)、フロアプラン(カメラ側、移動)、A/B シート(孤立感と文脈)、MP4 から抽出したフレーム(順序、焼き込み、プッシュ、ライブショットの内容)。コミカルな間と音は人間の判断に委ねます(Hjalti)。
よくある間違い
| 間違い | 問題の見え方 | 修正 |
|---|---|---|
| 完成した演技にショットを散りばめる | 汎用的なカバレッジ、適切でないフレーミング | 各ショットをそのビートに基づいて設計します(Hjalti) |
| 極端なポーズを考慮しないワイドフレーミング | 最も背の高いポーズや登場シーンがフレームから切れる | fit="all" を使い、極端なポーズを監査します |
| 実際の目の位置からの POV | カウンターやキャラクター自身の頭で視界が遮られる | POV を前方かつ上方にずらします(S6:前方 0.6 m、高さ 1.72 m、カウンター越し)。監査で遮蔽物が報告されます |
| カメラと主役の間にあるドアや小道具 | キーフレームで主役が隠れる | ドアや小道具を開くか、カメラを移動します。コンタクトシートで検出できます |
| 反対側からのオーバー・ザ・ショルダー | 視線の軸を越え、主役がフレームから外れる | カメラ側にとどまり、視線を監査します |
| キー設定のないごまかし | それ以前のショットが変化する | 各ブロックのすべての可動物に key_block を設定します |
| 24 fps の編集に、6 fps のボードシーンをシーンストリップとして入れる | 4 倍速で再生される | 静止画として書き出すか、速度を変更します |
| すべてのショットをアニメーション化し、ムード照明と完全なリグを用意する | 遅くなり、編集が動きと競合し、判断が後回しになる | 静止画に push を加え、動き自体に意味がある場合にのみ live を使います。Workbench はグレー表示にし、マネキンを使います |
| カバレッジを別々のストリップや移動したキーとして扱う | カットがアクションからずれる | cover=True を指定して実行し、P.retime_cut を使います |
| ワールドに固定された霧、または手前に配置された霧 | 主役に色がかかり、すべてのショットに霧が映る | P.fog_for_shot を使います(被写体の後方、1 つのショットのみ) |
Blender 5.2 の注意事項
--backgroundではbpy.ops.render.openglが失敗します。Workbench のrender.render(ヘッドレス)を使うか、ライブセッションでカメラにロックしたビューポートを使ってください。- 「Only Insert Available」がオンでも、
keyframe_insert()は新しいキーの補間設定を無視し、キーは BEZIER のままになります。P.make_steppedを呼び出してください。 - ウィンドウシーンではないシーンに対する
frame_setではトランスフォームが古いままになり、そのシーンのwrite_stillレンダーではウィンドウシーンのフレームが使われます。P.activate、P.render_frameを使ってください。 - VSE:
strips、left_handle/right_handle、content_start。SceneStrip.frame_startとframe_final_*は警告が出ます(6.0 で削除予定)。Strip.split(frame, split_method='SOFT')はデータから分割します。新しいシーンのデフォルトは AgX です。編集シーンのビュー変換をソースに合わせて設定してください。 marker.camera = camはヘッドレスでバインドできますが、bpy.ops.marker.camera_bindにはタイムラインコンテキストが必要です。--factory-startupでは Rigify が無効になっています。P.ensure_rigify()を実行するまで、bpy.ops.object.armature_basic_human_metarig_addは「could not be found」エラーになります。- Selection Sets、Storypencil、Grease Pencil Tools は同梱されていません。ボーンコレクション
layoutを使ってください。Storyboarding アプリテンプレートには、同期がオンで、Edit では自動キーがオフの Edit シーンが含まれています(Storyboarding ワークスペースではピンがオフです)。 - GP v3 のストロークは、ヘッドレスの Workbench 静止画でレンダリングされます。
参考資料
references/procedures.md:各ステージのテスト済みコード(モジュールあり/なし)とトラップテストを掲載しています。コードを書く前に読み込んでください。references/expert-notes.md:各エキスパートの原則、意見の相違、判断条件をタイムスタンプ付きで掲載しています。処理、レンズ、カットを選ぶ際に読み込んでください。references/critique.md:レビュー評価基準と S6 の調査結果を掲載しています。すべての Look ゲートで読み込んでください。references/sources.md:7 本のソース動画と、それぞれの用途、最適なタイムスタンプを掲載しています。