mcpField
B
blockbench-animation

blockbench-animation

github.com/jasonjgardnerクリエイティブ・メディア261.1k 回インストール5 週間前に更新
リポジトリ

blockbench-animation について

Blockbench MCP ツールを使った 3D モデルのアニメーション制作を支援するスキルです。キーフレーム、カーブ、リグ、タイムラインに加え、形式ごとの制約と書き出し確認も扱います。

主な機能

  1. 01アニメーションとキーフレームの作成
  2. 02カーブと補間の編集
  3. 03ボーン構造の作成とピボット設定
  4. 04キーフレームの一括調整とベイク
  5. 05アニメーションデータのコピー、貼り付け、反転

活用シーン

  1. 01既存モデルにループ動作を作成
  2. 02キーフレームのタイミングと長さを調整
  3. 03ボーン間で変換をコピーまたは反転
  4. 04対象形式のアニメーション書き出しを確認

MCP 対応

Blockbench MCP ツールを使ったアニメーション、キーフレーム、カーブの編集とタイムライン操作を案内します。ツールと形式の制約も説明します。

インストール

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

$npx skills add https://github.com/jasonjgardner/blockbench-mcp-project --skill blockbench-animation

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

詳細

Blockbench アニメーション

Blockbench MCP ツールを使用して、3D モデルのアニメーションを作成します。

リグとモーションの判断

アニメーションを作成する前に、フォーマットがアニメーションをサポートしているか、使用するエクスポーターを確認してください。グループベースの bone_rigging と manage_keyframes は Blockbench のグループに対して動作します。ネイティブのアーマチュアボーンと頂点ウェイトは別のリグタイプであり、それぞれ専用のツールがあります。名前が似ているからといって、これらのグループ用ツールで ArmatureBone をアニメーション化できると思い込まないでください。ツールの確認については MCP の概要、対象要件については フォーマットと納品に関するガイダンスを参照してください。

モデリングの前にアニメーションの種類を選択してください。選択によってジオメトリが変わります。

  • Minecraft がサポートするのはリジッドボーン(ノード)アニメーションのみです。関節ごとに曲がる部分を分割し、回転時に隙間ができないよう重ねてください。
  • スキン変形には、頂点ウェイトと関節部分のエッジループを備え、リグを保持できるエクスポーターに対応した Generic Model アーマチュアが必要です。
  • MCP ツールではモーフターゲットを作成できません。代わりにボーン、表示・非表示のキーフレーム、またはテクスチャのフリップブックを使用してください。

リアルタイムアセットの計画のセクション 10 を参照してください。

ピボットを関節に配置し、階層に沿って外側へ構築してください。まず重要なポーズとタイミングを設定し、アクションに応じて重み、接地、予備動作、フォロースルーを調整します。スムーズ補間ではオーバーシュートが発生することがあり、機械的な動きは連続的である場合もあります。ジャンル全体に同じ補間を設定するのではなく、動きに合ったカーブを選んでください。公式の Blockbench の概要では、階層、ピボット、タイムラインの操作方法を説明しています。

アニメーションの時間単位は秒です。タイムラインの FPS はスナップの制御に使用するもので、ゲームの再生速度に普遍的に適用されるものでも、エクスポーターがそのレートでサンプリングすることを保証するものでもありません。対象フォーマットのルールを守ってください。開始ポーズ、最大・最小のポーズ、中間のポーズを確認してください。繰り返し再生するクリップではループの継ぎ目も確認します。終点の値が等しいだけでは、速度や足の接地が滑らかになるとは限りません。

使用可能なツール

ツール目的
create_animationボーンのキーフレームを含むアニメーションを作成します
manage_keyframesボーンとチャンネルごとにキーフレームを作成・編集・削除します
animation_graph_editorアニメーションカーブを微調整します(スムーズ、リニア、イーズ)
bone_riggingアニメーション用のボーン構造を作成・変更します
animation_timeline再生、時間、FPS、ループ設定を制御します
batch_keyframe_operationsキーフレームをまとめて操作します:オフセット、スケール、反転、ミラー
animation_copy_pasteボーンやアニメーション間でアニメーションデータをコピーします

クイックスタート

連続回転を作成する

get_capabilities で format.features.animation_mode=true を確認し、list_outline を使って既存のボーン/グループを特定します。複数のメッシュオブジェクトをまとめて回転させるには共通の親グループをアニメーション化します。キーフレームを追加する前に、そのグループのピボットを意図した中心に配置してください。ユーザーの既存のプロジェクトとジオメトリは保持します。

例ではツール呼び出しの擬似コードを使用しています。spin.uuid には create_animation が返す UUID を設定してください。アニメーション ID を作り出したり、名前に特定の接頭辞が付くと思い込んだりしないでください。後続のキーフレーム呼び出しのために空のアニメーションを作成する場合も、bones は必須です。

spin = create_animation: name="spin", animation_length=4.0, loop=true, bones={}
manage_keyframes: animation_id=spin.uuid, action="create",
  bone_name="logo_root", channel="rotation", keyframes=[
    {time: 0, values: [0, 0, 0], interpolation: "linear"},
    {time: 1, values: [0, 90, 0], interpolation: "linear"},
    {time: 2, values: [0, 180, 0], interpolation: "linear"},
    {time: 3, values: [0, 270, 0], interpolation: "linear"},
    {time: 4, values: [0, 360, 0], interpolation: "linear"}
  ]
animation_timeline: animation_id=spin.uuid, action="set_time", time=1.0
capture_screenshot
animation_timeline: animation_id=spin.uuid, action="play"

logo_root は list_outline が返すグループに置き換えてください。この例では 4 秒ごとに Y 軸を一周します。XY 平面上にあるロゴを面内で回転させる場合は Z 軸を使用してください。クォーターローテーションのキーを使うと、同じ向きとみなされる姿勢や 180 度の間隔によって回転方向が曖昧になる可能性がある、クォータニオン補間を使うフォーマットでも、意図した経路を維持できます。再生前とエクスポート後に、中間時刻とループ境界を確認してください。

アニメーションチャンネル
  • position - [x, y, z] オフセット
  • rotation - [x, y, z] 度
  • scale - [x, y, z] または均一な数値

manage_keyframes.values は、3 軸の配列または 3 軸すべてに展開される数値を受け付けます。軸ごとに値が異なる場合、特に回転では、明示的な配列を使用してください。数値ツールチャンネルが、任意の Molang、Hytale の UV オフセット/可視性、またはエフェクトチャンネルに対応することを意味するわけではありません。対応する専用ツールまたはサポートされているネイティブのワークフローを使用してください。パーティクルのキーフレーム、ロケーター、エフェクトファイルについては、パーティクルを参照してください。

補間タイプ
  • linear - 一定の速度
  • catmullrom - 滑らかなスプライン
  • bezier - カスタム曲線
  • step - 即時変更

一般的なワークフロー

歩行サイクル(1 秒)

これは既存の脚ボーンを対象とした最小限のタイミング例であり、完成した歩行アニメーションではありません。サイクルを調整する前に、実際のモデルで接地した足の接触、膝の動き、胴体の動き、手足のクリアランスを確認してください。

walk = create_animation: name="walk", animation_length=1.0, loop=true, bones={
  "leg_left": [
    {time: 0, rotation: [30, 0, 0]},
    {time: 0.5, rotation: [-30, 0, 0]},
    {time: 1.0, rotation: [30, 0, 0]}
  ],
  "leg_right": [
    {time: 0, rotation: [-30, 0, 0]},
    {time: 0.5, rotation: [30, 0, 0]},
    {time: 1.0, rotation: [-30, 0, 0]}
  ]
}
滑らかな曲線
animation_graph_editor: animation_id=walk.uuid,
  bone_name="leg_left", channel="rotation", action="smooth"
タイミングの一括調整

一括操作ではアクティブなアニメーションが使用されます。selection="all" は非表示/折りたたまれたアニメーターも含むため、対象のキーフレームが少ない場合は selected、range、または pattern を使用してください。編集前にアクティブなアニメーションを確認してください。タイミング操作では、負の時間、範囲外の時間、チャンネル内の重複した時間は拒否されます。

batch_keyframe_operations: operation="scale", selection="all",
  parameters={scale_factor: 2.0}  # Double keyframe times around zero
animation_timeline: animation_id=walk.uuid, action="set_length", length=2.0

scale は scale_pivot(デフォルトは 0)を基準にキーフレームの時間をスケーリングします。offset_values は数値の XYZ 成分を加算し、mirror は指定した成分を反転しますが、解剖学的な左右のリターゲティング操作ではありません。数値の値編集では、データポイントが 1 つのトランスフォームキーフレームが必要です。式や前後の値にはネイティブツールを使用してください。現在の一括編集では、適用前に検証を行い、元に戻せる単一のトランザクションとして処理します。

数値曲線のベイク

現在のソースプラグインでは、operation="bake" は線形キーを挿入する前に、元の連続した数値トランスフォーム曲線をサンプリングします。選択された各チャンネルの最初と最後の選択時刻の間に適用され、既存のサンプル時刻/端点を保持し、再生ヘッドを元に戻します。サンプルの合計は 10,000 個までです。

batch_keyframe_operations: operation="bake", selection="selected",
  parameters={bake_interval: 0.05}

対象とする各チャンネルで、少なくとも 2 つの時刻を選択してください。間隔は秒単位です(最小値は 0.001)。モーション/エクスポートの対象に合わせて選択してください。式、エフェクトチャンネル、ステップ曲線、前後のデータポイントは拒否されます。滑らかなチャンネルの一部だけをベイクすると、境界キーが線形になるため、隣接する補間が変化することがあります。選択範囲の外側の連続性を保つ必要がある場合は、チャンネル全体をベイクしてください。ベイクを前提として使用する前に、サンプルされたポーズと出力先の結果を確認してください。

ボーンのリギング

既存ボーン間のコピー

現在の animation_copy_paste は、ネイティブのトランスフォームデータポイント、式、前後の値、補間、分離されたベジェハンドルを保持します。コピーはモデル/履歴を変更せず、貼り付けは元に戻せる単一のアニメーション編集として実行されます。

animation_copy_paste: action="copy", source={animation: walk.uuid,
  bone: "leg_left", channels: ["rotation"], time_range: {start: 0, end: 1}}
animation_copy_paste: action="mirror_paste", target={animation: walk.uuid,
  bone: "leg_right", time_offset: 0, mirror_axis: "x"}

貼り付けでは、スナップされていない正確なタイムスタンプが使用され、同じチャンネル/時刻に既存のキーがある場合は置き換えられます。上書きする前に対象を確認してください。mirror_paste はネイティブの空間ミラーを使用します。position は選択した軸を反転し、rotation は他の 2 軸を反転し、scale は保持されます。曲線ハンドルは反転後の値に従います。これは、1 つの数値成分を反転する一括操作の mirror とは異なります。ミラー後のポーズを、リグの実際のピボットと向きに照らして確認してください。チャンネルをコピーしても、プロポーションの異なるスケルトンへのリターゲティングは行われません。クリップボードの内容は、次にコピーするかプラグインを再読み込みするまで保持されます。

ボーン構造の作成
bone_rigging: action="create", bone_data={name: "spine", origin: [0, 12, 0]}
bone_rigging: action="create", bone_data={name: "head", origin: [0, 24, 0], parent: "spine"}
ピボットポイントの設定
bone_rigging: action="set_pivot", bone_data={name: "arm_left", origin: [4, 22, 0]}

タイムラインの制御

タイムラインを明示的に指定するには、返されたアニメーション UUID を animation_id として渡します。省略すると選択中のアニメーションが使用され、create_animation は作成したアニメーションを選択します。一括操作ではアクティブなアニメーションが使用されるため、先に選択状態を確認してください。移動したキーを含めるために、アニメーションの長さが延長されることがあります。タイミングを変更する場合は、要求する最終クリップ長を明示的に設定してください。

animation_timeline: animation_id=spin.uuid, action="set_fps", fps=60
animation_timeline: animation_id=spin.uuid, action="loop", loop_mode="loop"  # or "once", "hold"
animation_timeline: animation_id=spin.uuid, action="set_time", time=0.5
animation_timeline: animation_id=spin.uuid, action="play"

ヒント

  • アニメーションを付ける前に、list_outline を使用して利用可能なボーンを確認します
  • キーフレームを追加する前に、bone_rigging でボーン階層を設定します
  • 適切な場合は、滑らかなパスに catmullrom を使用し、その後オーバーシュートがないか確認します
  • 意図的な静止や急激なポーズ変更には step を使用します
  • 正確な回転値を指定するには、軸ごとに明示的な値を指定して manage_keyframes を使用します。コピーまたはミラーリングしたポーズと、ツールの実行結果も確認します

エクスポートの検証

引き継ぎ時に編集可能なプロジェクトが必要な場合は、それを保持してください。実際のアニメーションのエクスポート手順を確認してください。モデルコーデックでアニメーションファイル、コントローラー、エフェクトを個別にエクスポートできるとは限りません。要求された場合は、Bedrock アニメーション JSON と Hytale .blockyanim アセットを、対応するモデルと一緒に用意する必要があります。可能であれば、出力先で名前、長さ、補間、ループ動作を確認してください。

Molang 式には、フォーマットとランタイムのサポートが必要です。glTF と FBX では、任意の式駆動型の動作を保持できません。ベイク処理では指定した時間シーケンスを近似できますが、変数駆動型のステートマシンは保持できません。現在のバッチベイクがサポートするのは数値カーブのみです。式のベイクには、対応するネイティブワークフローが必要です。Blockbench アニメーション式を参照してください。

コメント