mcpField
S
scenario-blender-animation

scenario-blender-animation

github.com/scenario-labsクリエイティブ・メディア1.2k481 回インストール1 日前に更新
リポジトリ

scenario-blender-animation について

アニメーターやエージェント向けの Blender アニメーションスキルです。ステップ補間でのブロッキング、身体のみのスプライン化、プレイブラストと計測による動作確認を扱います。

主な機能

  1. 01ステップ補間でのポーズ作成
  2. 02身体のみのスプライン化
  3. 03フレームごとの動作計測
  4. 04オニオンスキンとカーブ画像
  5. 05プレイブラストと品質チェック

活用シーン

  1. 01キャラクター演技のビート設計
  2. 02軌道と足の接地確認
  3. 03単一オブジェクトの弾む動きの作成

インストール

コマンドをコピーしてターミナルで実行します。

$npx skills add https://github.com/scenario-labs/skills --skill scenario-blender-animation

インストール後、Claude Code で/scenario-blender-animationを入力して読み込まれたか確認します。

同梱ファイル

SKILL.md と一緒にインストールされる参考資料やスクリプト。

references/
critique.md
expert-notes.md
procedures.md
sources.md
scripts/
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秒予算でどこまでできるかを明記

ワークフロー

  1. 計画。 フレーム付きのビートリストを作成します。各演技ビートを順番に並べます(Hjalti は1ショットあたり約8ビートと数えます)。 「気づく」「反応する」「悟る」「応じる」(Rik)というサブビートと、各ビートの導入部分も含めます。音声がある場合は、 audio_envelope と accent_frames を使い、音声のピーク直前にポーズを決めます(Alex)。動作の途中から始めます(Rik)。ゲート:ビート表を作成済みであること。
  2. ショットをセットアップしてステージングする(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 で空中に浮いている様子と接触時の影が見え、カメラの静止画を確認済みであること。
  3. ブロッキングA:キーとなるポーズをステップ補間で作成。 最も強く、最も長く保つポーズから始めます(Alex)。各ポーズでは、COG、足(支持脚に体重を乗せ、両足を同じ形にせず、膝を柔らかく保つ)、腰、胸、頭、腕の順に作成します。リグの軸は任意のため、world_pose でワールド空間を基準にポーズを作成し、key_pose(..., keytype='EXTREME') でキーを設定します。補間はCONSTANTにし、主要なコントロールすべてにキーを設定します。ゲート:ポーズ区間の onion_skin(frames=keys, spread=...) で明確なシルエットとコントラストを確認でき、保持ポーズの balance_report の余裕が >= 0 であること。
  4. ブロッキング+(引き続きステップ補間)。 中間フレームに、パーツごとの factors を指定して breakdown を作成します(COGを沈ませる、末端を0.2〜0.3遅らせる、動きの方向に向いたパーツを後半で優先する。離陸後の体は弾道運動になり、7フレーム中3フレームで上昇量の約2/3に達するため、足もそれに追従させます)。20/80には ease_inbetweens を使います(Pablo)。オーバーシュートと落ち着き、オーバーラップのオフセットを追加し、確信度マップとしてキータイプを使います(Hjalti)。ゲート:ステップ補間のプレイブラストが承認済みで、意図に関するメモが止まっていること(Leo:ブロックB以降はなし)。
  5. 体をスプライン補間にする: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を超えないこと。
  6. エネルギーを再び加える(Leo:スプライン補間で動きが弱まるため):タイミングのアクセント、オーバーシュート、パーツ同士の同期をずらす動きを追加します。offset_keys でチェーンのつなぎ目ごとに1〜2フレームずらします(Dillon)。周期的な動きでは頭を2〜3フレーム遅らせます(Joey)。接着したように固定せず、滑る接触にします(Rik)。指はオーバーラップを控えめにし、弾ませません。ゲート:カメラのピクセル上で弧が滑らかであること(to_camera(..., res=(w, h))、motion_report(dims=2))。
  7. 顔とリップシンク(ステップ補間)(P6、P7):あごのリズム、口角(中央で動きを止めない)、あごを除く下顔のポーズライブラリから形状を選びます。アクセントと非対称性は控えめに加え、舌は最後に作成してから顔をスプライン補間にします。目は1〜2フレームで素早く動かし、頭より先行させます。眉は3〜10フレームの動きにします(Rik)。エンジンやキャプチャアプリが名前で読み取るキー(ARKit、visemes)を設定する場合は、キーを付ける前にscenario-blender-riggingの shape_report を使います。ゲート:transitions がこれらのフレーム数を満たし、アクセントの数が音節数より明確に少ないこと。
  8. 仕上げ。 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本のソース動画、それぞれの主な用途、最適なタイムスタンプを記載しています。

コメント