scenario-blender-animation について
アニメーターやエージェント向けの Blender アニメーションスキルです。ステップ補間でのブロッキング、身体のみのスプライン化、プレイブラストと計測による動作確認を扱います。
主な機能
- 01ステップ補間でのポーズ作成
- 02身体のみのスプライン化
- 03フレームごとの動作計測
- 04オニオンスキンとカーブ画像
- 05プレイブラストと品質チェック
活用シーン
- 01キャラクター演技のビート設計
- 02軌道と足の接地確認
- 03単一オブジェクトの弾む動きの作成
インストール
コマンドをコピーしてターミナルで実行します。
npx skills add https:/ / github.com/ scenario-labs/ skills --skill scenario-blender-animationインストール後、Claude Code で/scenario-blender-animationを入力して読み込まれたか確認します。
同梱ファイル
SKILL.md と一緒にインストールされる参考資料やスクリプト。
references/critique.mdexpert-notes.mdprocedures.mdsources.mdscripts/bx_anim.py詳細
Blender アニメーション(キャラクターとオブジェクト)
熟練したアニメーションでは、画面上のすべてのフレームが選択です。観客が読み取るキーとなるポーズ、手作業で配置する停止とスナップ、設計された間隔、確認済みの弧。Blender Studio の方針は、まずステップ補間でブロッキングし、後半に部分ごとにスプライン補間へ移行し、ショットカメラで実時間の速度で評価することです。エージェントはスクラブできないため、代わりに測定します。フレームごとの位置、スペーシングチャート、弧のチェック、フレーミング、オニオンスキン画像、カーブプロット、そして実際に目で確認するプレイブラストを使います。ここで挙げた関連スキルが利用可能なスキルにない場合は、ユーザーにインストールを依頼してください(npx skills add scenario-labs/skills --skill <name>)。無人で進める場合は、ツールのスキーマに基づいて作業し、不足している点を明記してください。
必須の背景知識: scenario-blender-expert(実行チャネル、レビューの反復、5.2 API の変更)。ショットの計画、カメラ、アニマティクスは scenario-blender-previs-storyboard、リグの構築は scenario-blender-rigging の担当です。レンダーから実写映像を生成するモデルのガイドとなるクリップは scenario-blender-blockout の担当です。モデルはキー設定された四肢をそのままコピーするため、キャストのスタイルによっては手足のない代役を用意し、歩行動作をアニメーションさせます。
ツールキット:scripts/bx_anim.py(キー設定、ブロッキングからスプラインへの移行、カーブの確認、測定、ステージング、軽量プレイブラスト、膝の跳ね、反転とバランスの確認、オニオンスキン画像とカーブ画像、単一オブジェクトの bouncing_ball。API は procedures.md に記載。5.2.1 でテスト済み)および bx_review.playblast。
方針(エキスパートとの違い)
- ステップ補間を長く維持します(「Blocking+」)。 Hjalti Hjalmarsson:ジュニアはスプライン補間への移行が早すぎます。コンピューターによる中割りは「意図しない補間ポーズ」となり、指摘を反映しにくくします。ステップ補間のまま手作業のブレークダウンを追加し続け、スプライン補間は短く、後半に行います。
- ブロッキング全体をベジェに変換してはいけません。 Rik Schutte:すべてのキーとなるポーズで主要なコントロールにキーを設定し、各ポーズを停止の終端にもコピーします(「柱」)。その後、胴体だけをスプライン補間にし、顔と指はそれぞれの作業工程までステップ補間のままにします。5.2.1 での測定では、単純な一括変換では次の動きの 84%が停止中に流れ込んだ一方、「柱」では完全に 0 に抑えられました。
- スナップは意図して作ります。 Rik:停止させてから、2~3 フレームでポーズを変えます。補間に任せるのは、意図的に大きく動かす場合だけです。[追加、測定済み] 連続した動きの中で起こる接触(ジャンプの着地など)は停止ではありません。そこに「柱」を入れると、衝撃時の胴体の速度がフレームあたり 0.101 m から 0.007 m に落ち、浮いているような着地になりました。
- 奇数フレームにポーズを置き、偶数の間隔を空けます。ブレークダウンで弧を形作り、視線を誘導します。 Alex Nagy:キーとなるポーズを奇数フレームに置いて間隔を偶数にし、真ん中のフレームを確保します。ブレークダウンでまず弧を決め、次にタイミングを決めます。ブレークダウンを後半に寄せると、最後のフレームに移動量が多く残り、最も速い部分に視線が引きつけられます。
- ハンドルタイプはタイミングの判断です。 AUTO_CLAMPED は停止を平坦に保ちます。AUTO は値が等しい 2 つのキーの間でオーバーシュートし(Alex はポーズを強調したり、落ち着く動きを和らげたりするために使います)、VECTOR は強い衝撃、接触、踏み切りに使います(Alex、Dillon Gu)。FREE は瞬発的なスペーシングや正確な弧に使います(Raymond Luc、Joey Carlino)。
- まず一つのパーツを先行させ、残りを重ねます。 Rik はまず胴体だけのリズムパスをブロッキングします。Dillon は身体力学では COG を、演技では頭や目を先行させます。重なりはブロッキングに盛り込みます。また、頭を単一の軸だけで回転させてはいけません(Rik)。
- リップシンクは形より先にリズムを作ります。 Rik:まず顎をステップ補間で動かし、強調する箇所だけ大きく開きます。同期がずれる原因は、全体的なオフセットではなく準備動作の不足です。M、B、P では少なくとも 2 フレーム口を閉じ、音が鳴る前に閉じておきます。
- スペーシングは感じさせ、弧は確認し、ショットを読み取れるようにします。 Raymond:観客にはスペーシングの工夫を感じさせるべきで、見せるべきではありません。Pablo Fournier:弧の確認が最も重要です(ルート、手、足、鼻)。カメラ空間で確認します。Hjalti(scenario-blender-previs-storyboard):カットのたびに観客の目が何か一つを見つけられる必要があります。したがって、空のフレームに被写体が埋もれていれば、カーブがどれほど優れていても不合格です。
まず確認すること
| 入力 | プランに影響する理由 | 指定がない場合のデフォルト |
|---|---|---|
| メディア、fps | 映画は24(Hjalti)。ゲームでは固定のヒットフレームやリリースフレームを使うことが多く、30の場合もあります(Picaut) | 24 fps |
| カメラ | カメラ固定の演技ショット:カメラ越しにのみ判断します(Rik)。移動式、リフレーミング可能、またはゲームプレイ用のカメラ:あらゆる方向からポーズが成立します(Leo Silly-Pelissier、Picaut) | カメラ固定 |
| スタイル | 2コマ打ちで動きを補間せず、スプライン化しない(Sprite Frightのショット、Rik)場合と、スプライン化する場合があります。様式化と写実的なスタイルがあります(Leo) | スプライン化、様式化 |
| リグ | コントロール名、IK/FK、回転モード。生成されたRigify [verified]:torso、hips、chest、head、foot_ik.L、upper_arm_fk.L、jaw_master。upper_arm_parent.Lの["IK_FK"](0はIK、1はFK)。脚のIK_Stretchは1.0。脚のレストポーズは99.6%まっすぐ。メインコントロールはQUATERNION | アークが重要な場合は腕にFK、手が物に触れる場合はIK(Joey、Tony Garcia) |
| 名前付きオブジェクト | アニメーション対象のオブジェクトを指定する依頼では、そのオブジェクトのすべてのチャンネルが必要です | 1つのオブジェクト、bouncing_ball(obj=...) |
| オーディオ、トランスクリプト | ビート、アクセント、音素の準備 | 依頼内容からビートを抽出 |
| リファレンス | タイミングとビートの確認に使い、なぞるためには使いません(Hjalti) | なし:ビートのリストを作成 |
| 予算 | Rik:大規模スタジオでは週あたり約3秒、演技ショットでは5~6秒。Flow:アニメーター1人あたり1日2秒 | 予算でどこまでできるかを明記 |
ワークフロー
- 計画。 フレーム付きのビートリストを作成します。各演技ビートを順番に並べます(Hjalti は1ショットあたり約8ビートと数えます)。
「気づく」「反応する」「悟る」「応じる」(Rik)というサブビートと、各ビートの導入部分も含めます。音声がある場合は、
audio_envelopeとaccent_framesを使い、音声のピーク直前にポーズを決めます(Alex)。動作の途中から始めます(Rik)。ゲート:ビート表を作成済みであること。 - ショットをセットアップしてステージングする(P1、P18):fps、範囲、音声、passepartout 0.99、プレビュー用のSimplifyを設定します。カメラを配置してから、実際のレンダーサイズで
staging_report(subject, frames)を実行し、被写体の高さ、アクションがフレーム内を占める割合、画面への出入り、最終ポーズの余白を確認します。プレイブラストの見た目には、playblast_lighting(key_dir=(0, 0, 1))を使います(頭上キーライトをWorkbenchのカメラ空間に変換します。影は被写体の下にでき、隙間の大きさは被写体の高さに相当し、接触点は両者が触れる場所になります)。floor_slabと、回転するものにはrotation_textureを使います。ゲート:flagsが空であり、shadow_framesで空中に浮いている様子と接触時の影が見え、カメラの静止画を確認済みであること。 - ブロッキングA:キーとなるポーズをステップ補間で作成。 最も強く、最も長く保つポーズから始めます(Alex)。各ポーズでは、COG、足(支持脚に体重を乗せ、両足を同じ形にせず、膝を柔らかく保つ)、腰、胸、頭、腕の順に作成します。リグの軸は任意のため、
world_poseでワールド空間を基準にポーズを作成し、key_pose(..., keytype='EXTREME')でキーを設定します。補間はCONSTANTにし、主要なコントロールすべてにキーを設定します。ゲート:ポーズ区間のonion_skin(frames=keys, spread=...)で明確なシルエットとコントラストを確認でき、保持ポーズのbalance_reportの余裕が >= 0 であること。 - ブロッキング+(引き続きステップ補間)。 中間フレームに、パーツごとの
factorsを指定してbreakdownを作成します(COGを沈ませる、末端を0.2〜0.3遅らせる、動きの方向に向いたパーツを後半で優先する。離陸後の体は弾道運動になり、7フレーム中3フレームで上昇量の約2/3に達するため、足もそれに追従させます)。20/80にはease_inbetweensを使います(Pablo)。オーバーシュートと落ち着き、オーバーラップのオフセットを追加し、確信度マップとしてキータイプを使います(Hjalti)。ゲート:ステップ補間のプレイブラストが承認済みで、意図に関するメモが止まっていること(Leo:ブロックB以降はなし)。 - 体をスプライン補間にする:
blocking_to_spline(rig, body_bones, transition=3, interpolate={...})を使います。 大きな動きと連続する接触にはinterpolateを使い、足の接触と離陸にはVECTORを使います。ゲート:hold_drift< 1e-5、overshootsは意図した落ち着きのみ、顔は引き続きCONSTANT、意図しない等間隔がないmotion_report、空中にあるCOGに対するballistic_fitのg_ratioが1.0に近く残差が小さいこと、limb_extensionが1.0を超えないこと。 - エネルギーを再び加える(Leo:スプライン補間で動きが弱まるため):タイミングのアクセント、オーバーシュート、パーツ同士の同期をずらす動きを追加します。
offset_keysでチェーンのつなぎ目ごとに1〜2フレームずらします(Dillon)。周期的な動きでは頭を2〜3フレーム遅らせます(Joey)。接着したように固定せず、滑る接触にします(Rik)。指はオーバーラップを控えめにし、弾ませません。ゲート:カメラのピクセル上で弧が滑らかであること(to_camera(..., res=(w, h))、motion_report(dims=2))。 - 顔とリップシンク(ステップ補間)(P6、P7):あごのリズム、口角(中央で動きを止めない)、あごを除く下顔のポーズライブラリから形状を選びます。アクセントと非対称性は控えめに加え、舌は最後に作成してから顔をスプライン補間にします。目は1〜2フレームで素早く動かし、頭より先行させます。眉は3〜10フレームの動きにします(Rik)。エンジンやキャプチャアプリが名前で読み取るキー(ARKit、visemes)を設定する場合は、キーを付ける前にscenario-blender-riggingの
shape_reportを使います。ゲート:transitionsがこれらのフレーム数を満たし、アクセントの数が音節数より明確に少ないこと。 - 仕上げ。
foot_slipは1 mm未満、貫通の確認にはlowest_pointを使い、rotation_flipsは空(fix_rotation_flips)にします。脚を曲げた状態に保つ箇所ではlimb_extensionを0.99未満にし、スミアは1フレームにします(Pablo)。バースト間隔の調整はここでのみ行います(Raymond)。サブディビジョンを有効にします。ゲート:最終プレイブラスト、オニオンスキン、グラフ画像で critique.md の評価基準に合格すること。 バリエーション。 弾むボール(P16、P18):bouncing_ball(obj=ANIM_ball, first_apex=-3, fit=False, ...)は1つのオブジェクトのキーを設定します。フレーム全体での接触を通じて、奇数回または偶数回の跳ね上がりでも小さな跳ねが同じ高さを保つ、単一の重力による正確な放物線、接触フレームでのスクワッシュ、ワールド軸に沿ったスクワッシュモディファイアによる速度方向へのストレッチ(回転がねじれることはありません)、回転量 = 距離 / 半径、一定減速の回転、6フレームのホールドを設定します。first_apexをstartより前にすると、画面外から投げ込まれます。重みの割り当ては[追加]です。レンダリングして調整してください。 歩行(Joey、30 fps):接地 0、ダウン 5、パッシング 10、アップ 15、40フレームのサイクルです。接地中はヒールカーブを直線にし、ルートは REPEAT_OFFSET を使ってリニアにします(P5)。ジャンプ:tests/code/blender-animation/test_rigify_jump.pyは、ブロッキングからスプラインまでを示した実例です(Rigify の人型リグ)。
数値
| 項目 | 値 | 出典 |
|---|---|---|
| キビキビしたポーズの変化 | ホールド後2〜3フレーム | Rik |
| 大きな変化 | 8フレームではなく4フレーム | Alex |
| アイデアを読み取るためのホールド | 6フレーム | Alex |
| 収まり | 1〜2フレーム、柔らかくする場合は4フレーム | Alex |
| 刺激を受けた後の反応 | 約6フレーム | Rik |
| 目の素早い動き/眉の変化 | 1〜2/3〜10フレーム | Rik |
| イーズのルール | インビトゥイーンごとに残りの距離の80%進む(スローイン)。逆は20% | Pablo |
| 残像 | 1フレーム、ときに2フレーム | Pablo |
| 微細な予備動作 | ヒットまたはリリース前の最後の1〜2フレームを極端な位置に動かす | Picaut |
| サイクル中の頭の遅れ/足のオフセット | 2〜3フレーム/1フレーム | Joey / Rik |
| 24 fpsでの実際の重力 | 加速度 0.01703 m/frame^2。二次近似の最高次係数はその半分(-0.00852)です。gravity() | 物理学 [追加] |
| フレーム内の被写体サイズ | フレーム高の最低12%、単一の被写体なら15%以上 | [追加] E3:どちらの実行でも10%と測定 |
| IKの脚の伸長 | 曲げた状態にする場合は全長の0.99未満。1.0を超えるとIKストレッチ | [追加] |
| 転がるオブジェクトのピンホイール効果 | 1フレームあたりの回転量を360 / セクター度数未満にする | [追加] 荷馬車の車輪 |
品質ゲート
測定可能: スロット名はキャラクター名にします。承認前にキーポーズを CONSTANT にし、型を設定します。
hold_drift は約 0、overshoots は落ち着く動作に限ります。foot_slip は 1 mm 未満、lowest_point は床より下に行かないようにします(サブフレームをサンプリングします)。ダート、眉の動き、スナップ、破裂音には transitions を設定します。実寸スケールで ballistic_fit の g_ratio を 1 に近づけます。motion_report では、鋭いターンは接触時のみで、動作中に弧の揺れや停止と再始動がないことを確認します。staging_report のフラグは空で、影のフレームが見えるようにします。limb_extension、rotation_flips、balance_report は上記のとおりです。roll_aliasing は問題ありません。視覚的確認(すべての画像を開きます):ポーズストリップ、ショットカメラからトラック付きで確認するオニオンスキン、graph_image、プレイブラストのフレームシート(被写体のサイズ、登場、接触時に閉じる影の隙間、スピンの見やすさ)、カメラが固定されていない場合はオービットビュー。
よくある間違い
| 間違い | 見た目 | 修正方法 |
|---|---|---|
| ブロッキング全体をベジェにする | 「浮遊するスパゲッティ」 | 支柱を使い、ボディだけを blocking_to_spline にする |
| 連続した接触に支柱を置く | 衝突前にボディが減速する | そのフレームを interpolate に入れ、足を VECTOR にする |
| ホールドに AUTO ハンドルを使う | ポーズを過ぎてもホールドがドリフトする | AUTO_CLAMPED にし、AUTO は落ち着く動作にのみ使う |
| 接触中にかかとのカーブをイーズする | 足が滑る(1 歩あたり 5.8 cm と測定) | VECTOR または長さ 0 の FREE ハンドルを使う |
| すべての音節で顎を開く | 口がカタカタ動く | accent_frames のみで大きく開く |
| ボールに BOUNCE イージングを使う | スカッシュのフレームがまったく表示されない | bouncing_ball またはフレーム全体にわたる接触をキー設定する |
| 狙いを定める親オブジェクトにスカッシュを適用する | ストレッチフレームでパターンがねじれる(旧リグで 55 度と測定) | オブジェクト自体に squash_modifier(ワールド軸)を適用する |
| 飛行を偶数フレームに丸める | ホップの高さが増減し、バウンドごとに重力が変わる(0.98~1.31 と測定) | フレーム全体にわたる接触にし、奇数フレームの飛行を許容し、重力は一定にする |
| セット全体をフレームに収める | 被写体がフレームの 10%で、上部 40%が空白 | 寄るか移動距離を短くして、staging_report をクリーンにする |
display.light_direction をワールド方向として読む | 影が被写体の背後に隠れる(0 px) | playblast_lighting(key_dir=...) を使う |
| 正規化カメラ座標で弧を確認する | 頂点で誤った鋭いターンが発生する(アスペクト比で x が圧縮される) | to_camera(..., res=(w, h)) を使う |
| 立位や踏み切りで脚を伸ばす | IK ストレッチで脚が長くなる(最初のジャンプ案で 18%) | 膝を緩め、離陸後に足をブレークダウンし、離陸を VECTOR にする |
Blender 5.2 の注意事項
action.fcurvesはなくなりました。bpy_extras.anim_utilsのチャンネルバッグを使用します(bx_anim.channelbag)。 アクションを割り当てただけでは、スロットが一致する場合にのみアニメーションします。一致しない場合は、ad.action_slotを設定してください。- アクションごとにレイヤーは1つだけです(
layers.newはエラーになります)。NLA と ADD または COMBINE アクションを含むレイヤーを使用します (push_layer)。 keyframe_points.insertは BEZIER AUTO_CLAMPED を返します。同じカーブに次のキーを挿入すると、Keyframe への参照は無効になります。- ヘッドレスモードでは、
anim.keyframe_insertは失敗します。pose.breakdownとpose.blend_to_neighborにはprev_frame/next_frameの明示的な指定が必要です。render.openglは拒否されるため、プレイブラストには Workbench レンダーを使用します。 - Workbench の
scene.display.light_directionはカメラ相対です。matrix_worldはview_layer.update()まで古いままなので、更新後に変換してください。 - GN モディファイアーの入力は
modifiers["X"].properties.inputs.Socket_n.valueにキー設定します。 - プレイブラストの音声:サウンドストリップと
render.ffmpeg.audio_codec = 'AAC'を使用します。 - キーマップ:Up = 前のキー、Down = 次のキー(5.0)。5.2 にはありません:アクションレイヤー、ポーズブレンドの貼り付け、 範囲のワールド空間コピー(5.3)。
参考資料
references/expert-notes.md:専門家ごとの原則、数値、意見の相違をタイムスタンプ付きで記載しています。アプローチを選ぶときやメモを書くときに読み込んでください。references/procedures.md:各手順(セットアップ、ブロッキング、スプライン、歩行、リップシンク、表情のタイミング、接触ピン、スロット、レイヤー、ポーズライブラリ、 プレイブラスト、計測、ボール、ステージング、膝/フリップ/バランス)の、テスト済みコード全体を記載しています。コードを書く前に読み込んでください。references/critique.md:ステージごとのレビュールーブリック、ステージングのしきい値とその調整方法、これらのアニメーターがメモをどう表現するかを記載しています。各ゲートで読み込んでください。references/sources.md:14本のソース動画、それぞれの主な用途、最適なタイムスタンプを記載しています。