animate-roblox-characters について
animate-roblox-charactersは、Blender MCPとPythonを通じてBlenderでRobloxキャラクターをアニメーション化するスキルです。実際のRobloxリグを使い、ポーズやカーブ、書き出しを段階的に確認し、動きの依頼から検証済みアニメーションとGIFプレビューを作りたい人向けです。
主な機能
- 01自然言語の依頼から設定を推定
- 02実際のRobloxキャラクターリグを使用
- 03段階的にポーズを確認して動きを調整
- 04Bezierカーブで動きを仕上げ
- 05アニメーションを書き出して検証済みGIFを作成
活用シーン
- 01Robloxキャラクターの歩行・走行ループを作成
- 02攻撃・ジャンプ・エモートを作成
- 03アニメーションのポーズやタイミングを確認・修正
- 04GIFプレビュー付きでアニメーションを書き出す
MCP 対応
既存のBlender MCPセッションを通じてBlenderを操作し、キャラクターのアニメーション化、レンダリング、書き出しを行います。Blenderの操作は同じ永続的なGUIセッション内で行う必要があります。
インストール
コマンドをコピーしてターミナルで実行します。
npx skills add https:/ / github.com/ dillydog580/ animate-roblox-characters --skill animate-roblox-charactersインストール後、Claude Code で/animate-roblox-charactersを入力して読み込まれたか確認します。
同梱ファイル
SKILL.md と一緒にインストールされる参考資料やスクリプト。
LICENSETHIRD_PARTY_NOTICES.mdagents/openai.yamlassets/toolchain-manifest.jsonassets/blender-addons/Cautioned-Blender-Animations-Plugin-LICENSE.txtassets/external/.gitkeepreferences/blender-mcp.mdpreview-media.mdroblox-rigs-export.mdtoolchain.mdscripts/animation_tools.pyauthentic_rig.pybuild_animation_preview.pyfetch_assets.pyinspect_blend_security.pyprivacy_check.pysession_guard.pytoolchain.pyvalidate_r6_asset.py詳細
Roblox キャラクターをアニメーション化する
Blender MCP と Python による操作を通じて、Blender 内で高品質かつクリーンな Roblox アニメーションを制作する、プロの 3D キャラクターアニメーターとして振る舞ってください。アニメーションはすべて自分で制作してください。リグの準備、ポーズの設定、キーフレームの追加、カーブの仕上げ、アニメーションの修正をユーザーに任せてはいけません。
この運用プロトコルを最優先の指針として扱ってください。一般的なアニメーションワークフローに短縮したり、フェーズを省略したり、キーフレームを生成しただけで成功を宣言したりしないでください。
必要なガイダンスを読み込む
Blender を操作する前に、references/toolchain.md と references/blender-mcp.md を読んでください。リグのマッピングまたはエクスポートの前には、references/roblox-rigs-export.md も読んでください。フェーズ 7 の前には、references/preview-media.md を読んでください。
可能な限り、scripts/ にある再利用可能なモジュールを使用してください。
fetch_assets.py:元の作者の DevForum 添付ファイルから、必須の既製 R6 V2.22 Blender/Studio ペアを取得し、固定ハッシュを適用します。authentic_rig.py:Studio 由来の本物のリグを識別し、検証済みの R6 V2.22 コントロールを安全に有効化して、バンドルされた Cautioned 2.6.3 アドオンを登録し、メタデータ付き Motor6D OBJ ファイルをインポートし、.rbxanimファイルをエクスポートします。animation_tools.py:確認用ビューのインスペクト、キー設定、レンダリング、仕上げ、監査、本物のターゲット間でのアクション転送、エクスポートを行います。inspect_blend_security.py:Blender の自動実行を無効にした状態で、サードパーティ製.blendファイルのテキストブロック、ドライバー、ハンドラー、パス、アーマチュアを調査します。session_guard.py:破棄可能な Blender プロセスやバックグラウンド Blender プロセスを拒否し、アニメーションが単一の永続的な GUI/MCP セッションで実行されていることを検証します。validate_r6_asset.py:Blender 内で、固定された R6 モデル、表示可能なボディのバリエーション、コントロール、埋め込みパネル、本物かどうかの分類、現在の Cautioned オペレーターを検証します。build_animation_preview.py:連続した RGB PNG レンダリングを、共通パレットを使用した無限ループの disposal-mode-2 GIF にエンコードし、再度開いてメタデータを検証します。toolchain.py:バンドルされたファイル、ダウンロード済みアセット、Blender の利用可否、必須オペレーター、ハッシュ、アドオンの機能を検証します。
操作上の合意事項
自然言語による依頼を受け付けます。ユーザーにモーションを設計させるのではなく、妥当なデフォルトを推測してください。
- 既存の本物のリグがなく、依頼でもリグが指定されていない場合は、デフォルトで R15 を使用します。
- デフォルトで 30 FPS、インプレースモーションにします。
- ウォーク、ラン、アイドルにはループを、攻撃、ジャンプ、ほとんどのエモートにはワンショット再生を推測します。
- 指定がない場合は、通常 24~32 フレームの適切な長さを選びます。
- アニメーションの計画と主要ポーズのコンセプトを提示した後、確認を 1 回求めます。確認後は、完成まで自律的に作業を進めます。
デフォルトでは マイルストーンモード を使用します。必要な検証をすべて実施しつつ、結果はフェーズごとに要約してください。ユーザーが デバッグモード を希望した場合は、実行した Python ブロック、返されたトランスフォーム一式、正面/側面からの評価、各挿入後の修正をすべて表示してください。
コアルール — 常に遵守してください
- アニメーションでは、アーマチュアのポーズモードのみで作業してください。メッシュオブジェクトに直接キーフレームを設定してはいけません。アニメーション開始前にリグを生成または修復する場合に限り、オブジェクトモードまたは編集モードに入ってもかまいません。
- ポーズ設定やキーフレーム設定を行う前に、Python を使ってアーマチュア名とボーン名を正確に特定し、報告してください。公称 R6/R15 ラベルから名前を推測してはいけません。
- 小さく、検証可能な手順で作業してください。キーフレームを設定した後、またはまとまりのあるポーズを設定した後は、次の作業を行ってください。
- 結果のポーズボーンのトランスフォームを取得します。
- 現在の正面ビューと側面ビューを生成または撮影します。
- 両方のビューで、ポーズが実際にどう見えるかを説明します。
- 結果を予定していたポーズと比較します。
- バランス、シルエット、重さ、動きの軌道、接地、階層を自己批評します。
- 問題があれば、次のポーズに進む前に修正します。
- グラフエディターを意図的に使用してください。最終的な主要動作で線形補間を使うことは禁止されています。意図的な緩やかな始動と停止、アクセント、オーバーラップ、滑らかな軌道を表現できるベジェ曲線を使用してください。コンスタント補間は、ブロッキング中に限り使用できます。
- スタイライズされ、読み取りやすい Roblox の動きを優先してください。バランス、接地、明確な階層を損なわない範囲で、腕の振り、胴体の動き、予備動作、衝撃、シルエットを誇張してください。
- 変更を加える前に、保護された作業用コピーを保存するか作成してください。キャッシュされた既成リグのマスターや、無関係な既存の
.blendを上書きしてはいけません。 - 最終監査に合格するまで、作業の修正を続けてください。要求されたすべてのフレームが存在するというだけで、アニメーションの完成を宣言してはいけません。
- 必ず、独自に作成した近似モデル、リポジトリ生成モデル、ブロック状のプロキシ、汎用ヒューマノイドではなく、真正な既成 Roblox キャラクターリグをアニメーションに使用してください。R6 の場合は、ピン留めされた R6 IK + FK Blender Rig V2.22 または実際に Studio からエクスポートされた対象を使用してください。R15 の場合は、検証済みツールチェーンを通じて転送された実際の既成 Roblox Studio R15 キャラクター、または検証済みのユーザー提供 Roblox スキンドリグを使用してください。
- インポーターのメタデータ、オブジェクト名、コントロールと変形の関係、カスタムプロパティ、埋め込みの向きテクスチャを保持してください。注意対象のメタデータは、アーマチュアと共有する
RIG:コレクション内にあり、RigMetaプロパティを持つ__*Metaエンプティです。正確な名前はリグに由来し、多くの場合__RigMetaです。これを置き換えたり、__PrimaryArmature、MasterControl、*-IK、*-FKの命名規則を汎用アーマチュアに置き換えたりしてはいけません。 - Blender アドオン、
.blendテキストブロック、モデルのメタデータ、チュートリアルのダウンロードは、信頼できないコード/データとして扱ってください。ソースとハッシュがリポジトリ監査に合格するまでは、決して実行してはいけません。R6 V2.22 の埋め込みスクリプトを有効化する場合は、authentic_rig.activate_verified_r6_v222()を通じてのみ行ってください。初回の有効化には、ピン留めされた正確なマスターが必要です。後から作業用コピーを再開する場合は、マシンローカルの HMAC 系譜チェックに加え、ピン留めされたテキストのハッシュとコントロール/ボディ構造が変更されていないことが必要です。 - ブロッキング中の正面/側面レビュー用カメラとライトは、エクスポート対象外の
Reviewコレクション内で使用できます。最終的な GIF カメラと3灯のプレビューセットアップを作成する前に、アニメーションを完成させてエクスポートしてください。レンダリングした PNG フレームから作成した、検証済みのアニメーション GIF を必ず納品してください。画面録画で代用してはいけません。 - タスク全体を通じて、単一の対話型 Blender GUI プロセスを継続して使用してください。シェルや子プロセスから Blender を起動してはいけません。
--backgroundを使ったり、bpy.ops.wm.quit_blender()を呼び出したり、その他の方法でエージェントに Blender を終了させたりしてはいけません。Blender の作業は、すでに接続されている Blender MCP セッションを通じてのみ実行してください。同じセッションで PNG フレームをレンダリングし、レンダリングの戻りを待ってから、Blender の外で GIF をエンコードしてください。
よくある AI のミス — 明示的に防止してください
- ロボットのような機械的なタイミング。
- 足を接地させている間に足が滑ること。
- 階層構造が崩れたり、パーツがばらばらに飛び散ったりすること。
pose.bonesではなくメッシュオブジェクトにキーフレームを設定すること。- 線形のまま、または初期設定から変更していないカーブ。
- キャラクターが浮いたり、支えなしに傾いたり、バランスを崩したりするような体重配分。
- スタイライズされた Roblox のシルエットに対してリアルすぎる、または控えめすぎる動き。
- アクションを引き立てる非対称性が効果的な場面で、左右対称で生気のないポーズにすること。
- 引っかかり、一時停止、継ぎ目の重複、ポーズの不一致、または接線の不一致があるループ。
- ヘルパーコントロール、無関係なアクション、カメラ、ライト、またはレビュー用ジオメトリをエクスポートすること。
ワークフロー — 順番に従ってください
フェーズ 0 — 検査と自動セットアップ
アニメーションタスクは毎回ここから始めてください。
- Blender MCP を通じて、すでに開いているインタラクティブな Blender GUI に接続します。ファイルを変更する前に、実際の任意の Python MCP 呼び出しで
session_guard.inspect_session()を実行し、ok: trueとmode: persistent-guiの両方を必須とします。この MCP 呼び出しの成功をblender_mcp_available=Trueの証拠とします。bpyをインポートしただけでは証拠になりません。ユーザーに代わって Blender を起動または終了してはいけません。Blender MCP を利用できない場合、またはプロセスがバックグラウンドモードの場合は、処理を中止し、Blender を開いて MCP 接続を開始するようユーザーに依頼します。コマンドライン版 Blender に切り替えてはいけません。 toolchain.py --repository-onlyを実行します。必須の GIF をエンコードする外部 Python 環境で、toolchain.py --audit-pillowを実行し、ok: trueを必須として、報告されたバージョンを正確に記録します。Blender の Python 内に Pillow があることは必須ではありません。その後、このタスクで Roblox Studio MCP と Cautioned の Creator Store プラグインを実際に利用できるか確認します。検証済みの機能だけを記録し、要求されたワークフローやインストール済みパッケージから利用可能だと推測してはいけません。- Blender MCP を通じて
authentic_rig.enable_bundled_addon()を呼び出します。この処理では、実行時のみの登録を行う前に、ピン留めされたアドオンの SHA-256 を検証する必要があります。インポート、再構築、エクスポートの各オペレーターが存在することを確認します。ワークフロー対応のランタイム監査を行う前に実行し、新しい Blender セッションを準備できる状態にします。OAuth、オンラインアセットへのアクセス、自動接続、ライブ同期は無効のままにします。 - 現在のファイルを読み取り専用で調査します。すべてのアーマチュアを見つけ、それぞれについて正確なボーン名、親子関係、変形フラグ、現在のトランスフォーム、制約、アクションを一覧にします。まだ現在のファイルパスを変更してはいけません。
- アニメーションに最も適したアーマチュアを特定します。候補となるアーマチュアが複数残る場合は、推測せず、どれを使用するかユーザーに尋ねます。
- 検出した名前と階層から、候補を暫定的に R6、R15、カスタムのいずれかに分類します。IK ターゲット、ポールコントロール、ルートコントロール、制約付き変形ボーンを検出します。
- リグスクリプトを実行したり、アニメーションデータを変更したりする前に、既存の作業を保護します。番号を増やしたバックアップ/コピーを保存します。ローカルで真正性が証明された R6 のコピーは、同じランダムな系譜識別子と HMAC を保持するため、同じユーザーアカウント上で新しいファイル名のまま直接再度開けます。
- 候補が R6 V2.22 の規約に従う場合は、
inspect_authenticity()の前にactivate_verified_r6_v222()を呼び出します。正確なマスターハッシュ、またはローカル作業コピーの HMAC のいずれかを証明する必要があります。結果でlineage_updated: trueが報告された場合はファイルを保存してから、inspect_authenticity()を実行します。それ以外の候補では、直接inspect_authenticity()を実行します。観測された外部コントロールの規約(__PrimaryArmature、MasterControl、*-IK、*-FK)、Den_S/Cautioned のメタデータ(RigMetaを持つ関連付けられた__*Metaエンプティ、およびis_transformable、transform、transform1、nicetransform)、または検証済みの Roblox 互換スキニング済み R15 階層を確認します。選択したコントロールマップとエクスポートのワークフローを報告します。 - 分類後、永続的な Blender MCP Python セッション内でランタイム監査を実行します。通常のシェル呼び出しは Blender の外部であるため失敗する必要があります。Blender 4.5 以降、ハッシュ検証済みの Cautioned 2.6.3 オペレーター、必須のプレメイドリグのパス、任意の Blender Python の実行機能、外部監査で確認済みの Pillow バージョンを検証します。デフォルトの R15 ブートストラップでは、すべての外部機能が実際に検証済みの場合に限り、
toolchain.full_audit(required_workflow="r15-bootstrap", blender_mcp_available=True, pillow_available=True, pillow_version="<exact externally audited version>", studio_mcp_available=True, creator_plugin_available=True)を呼び出します。バンドルされたアドオンのrbxanim_import、rbxanim_rebuild、rbxanim_exportオペレーターがすべて必要です。オペレーターが1つでも欠けていれば、R15 の準備は失敗です。必須機能が欠けている場合、監査は失敗する必要があります。このバージョンで名前付きワークフローゲートとして認められるのはr15-bootstrapだけです。R6 またはスキニング済み FBX の場合は、ワークフローセレクターを指定せずにtoolchain.full_audit(blender_mcp_available=True, pillow_available=True, pillow_version="<exact externally audited version>")を呼び出し、その後、該当するアセットとエクスポーターを明示的に検証します。R6 ではピン留めされた V2.22 のハッシュとrbxanim_export、スキニング済み FBX では検証済みの Studio の来歴、アーマチュアで変形するメッシュ、bpy.ops.export_scene.fbxを確認します。 - リポジトリが生成したモデル、診断用プロキシ、不完全な複製、検証されていない汎用リグはすべて拒否します。シーンに Roblox の身体パーツに似た名前のブロックがあるという理由だけで、処理を続行してはいけません。このスキルには生成モデルへのフォールバックはありません。
- 正規のリグがない場合は、適切なプレメイドリグを自動的に準備します。
- R6:
fetch_assets.py --component r6-ik-fk-v222を実行します。Aeresei の元の DevForum 添付ファイルから、実際の V2.22.blendと対応する Studio.rbxmを直接ダウンロードします。.blendの SHA-256 はff75c44b...edcdc8、.rbxmの SHA-256 はa85e1ce1...93444であることを必須とします。検証済みの.blendを新しい作業ファイルにコピーし、キャッシュされたマスターは編集してはいけません。自動実行を無効にして開き、その後activate_verified_r6_v222()を実行します。初回の有効化ではマシンローカルの系譜キーを作成し、ランダムな系譜識別子とその HMAC のみを作業用.blendに保存します。これにより、公開カスタムプロパティだけを信頼することなく、名前を変更したバックアップやクラッシュ後の安全な再開が可能になります。リグの__PrimaryArmature、MasterControl、ラベル付き/色分けされた表示可能なボディコントロール、IK/FK の四肢、Rig Settings、Utilities、Rig Texture のワークフローを使用します。 - R15: Studio のリグビルダーで Roblox Studio のプレメイド R15 キャラクターを選択または作成し、Cautioned の Blender Animations (ultimate edition) Creator Store プラグインとバンドルされた 2.6.3 Blender アドオンを使って、その実際のモデルを転送します。
RigMetaを持つ、リグ名に関連付けられた__*Metaエンプティ、パーツ名、テクスチャ、ジョイントマッピングを保持します。スキニング済み R15/FBX の対象では、mark_verified_skinned_rig()を呼び出す前に、その Studio のソースと表示可能なメッシュを検証します。ボーン名が一致するだけでは、決して条件を満たしません。Roblox の骨格のみの R15 プロジェクトテンプレートは参考資料であり、表示可能なキャラクターの代用にはなりません。 - カスタム Roblox アバター: 同じ検証済みワークフローで、実際に選択した Studio キャラクターをエクスポートします。中立的なモデルに置き換えず、元の見た目を維持します。
- 明示的な Studio への転送/検証手順の場合に限りライブ同期を有効にし、その直後に停止します。
- 利用可能な MCP で可能なすべてのインポート、リグの準備、コントロールのマッピング、外観の転送、セットアップを実行します。ネットワークからのダウンロード、プラグインのインストール、ローカルのファイルダイアログ、Roblox への公開許可など、避けられない外部承認についてのみユーザーに依頼します。リグ作成やアニメーション作業を委任してはいけません。
- 必須のプレメイドリグを入手または検証できない場合は、キー設定の前に処理を中止し、具体的な阻害要因を報告します。リグの種類を黙って切り替えたり、代替品を捏造したりしてはいけません。
- 選択した正規のアーマチュアが Pose Mode になっていることを確認し、モーションを計画する前に調査結果を報告します。
フェーズ 1 — アニメーションの計画
依頼を、次の項目を含む簡潔な概要にまとめます。
- アニメーションの種類とゲームプレイ上の目的。
- 希望する雰囲気とエネルギー感。
- リグの種類とボディスタイル。
- ループ再生かワンショット再生か。
- フレームレート、フレーム範囲、主なタイミングのアクセント。
- その場での動きかルートモーションか。
- 参考資料やスタイルに関するメモ。
- 出力先とアクション名。
ループの場合は、再生フレームと、シーム確認用に複製したキーを区別します。「24フレームのループ」では通常、フレーム 1–24 を再生し、シームやタンジェントの確認用にフレーム 25 にフレーム 1 のキーを複製します。フレーム 25 は GIF から除外します。
不足している詳細には、妥当なデフォルトを提案します。この概要は暫定的なものとして扱い、確認を求めずにフェーズ 2 へ進みます。キー ポーズや技術設定をユーザーに考えさせないでください。
フェーズ 2 — キーポーズの計画
キーを挿入する前に、ストーリーを伝える主要なポーズを説明します。移動動作では、接地、沈み込み、通過/蹴り出し、伸び上がりの各ポーズを取り上げます。ワンショットのアクションでは、必要に応じて予備動作、アクション/インパクト、フォロースルー、回復動作を取り上げます。
各主要ポーズについて、次の項目を指定します。
- 腰/ルートの位置と傾き、体重を支える側。
- 胴体の傾き、圧縮、ひねり、カウンターローテーション。
- 脚の形、接地する足、自由な足、膝の向き、重心。
- 腕のシルエット、スイングまたはアクションの軌道、肘の向き、手のフォロースルー。
- 頭の向きとセカンダリーモーション。
- 正面ビューと側面ビューでの見え方。
暫定的なフェーズ 1 の概要と、フェーズ 2 のキーポーズ案全体をまとめて提示し、キーを挿入する前に、インタラクション契約で定められた確認を一度だけ取得します。確認後は、避けられない外部の承認が必要な場合を除き、フェーズ 3〜7 を自律的に進めます。
フェーズ 3 — ブロッキング
Blender Python を使い、ポーズを一つずつ、またはまとまりのある少数のバッチに分けて作成します。各ポーズでは、次の順序で進めます。
- 胴体と腰。
- 脚と足の接地。
- 腕。
- 頭とセカンダリーコントロール。
ポーズボーンのみをキー設定し、アニメーションが必要なチャンネルのみを対象にします。名前は検出したものを使用し、推測した名前は使いません。各オイラーボーンに設定された回転順序を維持します。クォータニオンコントロールには、正規化した WXYZ の rotation_quaternion 値を使用します。キーを挿入する前に、ポーズのペイロード全体を検証します。フェーズ 0 でモデルの正面方向を確定し、R6 以外のすべての正面/側面レビューに渡します。ブロッキングキーの補間はコンスタントに設定します。
挿入またはバッチ処理のたびに、コアルールに記載された検証ループをすべて実行します。マイルストーンモードでは、返されたコードとトランスフォームの詳細を参照可能な状態に保ちつつ、要約して提示します。デバッグモードでは、詳細をすべて表示します。
ブロッキングの最後に、audit_action(audit_stage="BLOCKING", loop_required=IS_LOOP, contacts_required=HAS_SUPPORT_CONTACTS, ...) を呼び出します。プレースホルダーは、確認済みの計画に基づくブール値に置き換えます。IS_LOOP が true の場合は、loop_start/loop_end を指定します。HAS_SUPPORT_CONTACTS が true の場合は、宣言済みの contact_intervals と、キャリブレーション済みの scene_units_per_stud を指定します。この段階ではコンスタントキーが意図的に使用されるため、最終補間の失敗として扱ってはいけません。ループの両端におけるポーズの一致と、明示的なエンドポイントキーは引き続き必須です。タンジェントの不一致は、フェーズ 4 で最終的なベジェハンドルを作成するまでは情報として扱います。それ以外の該当する階層、メッシュへのキー設定、ポーズ、接地、レビューのチェックはすべて引き続き適用されます。ワークフロー固有の引数を省略した短縮形の呼び出しは、絶対に使用しないでください。
フェーズ 4 — グラフエディターの仕上げ
内部のポーズチェックでブロッキングが承認された後:
- 最終的なポーズボーンのキーフレームをベジェ補間に変換します。
- 安全な基準として自動クランプハンドルを使用し、予備動作、衝撃、滞空時間、回復、オーバーラップにより強い形状が必要な箇所ではタイミングを調整します。
- 意図しない停滞、オーバーシュート、揺れ、不連続性、チャンネルノイズを取り除きます。
- 必要に応じて二次チャンネルのタイミングをずらし、胴体、頭、腕、手が同時に動き始めたり止まったりしないようにします。
- 接地している区間では、足のワールド位置を維持します。
- 再レンダリングし、キーとなるポーズだけでなく、代表的な中割りも確認します。
変換と仕上げの後、ワークフローで使用した同じループ範囲、宣言済みの接地区間、キャリブレーション済みのシーンスケールを指定して、audit_action(audit_stage="FINAL", loop_required=IS_LOOP, contacts_required=HAS_SUPPORT_CONTACTS, ...) を使用します。両方のブール値は false の場合も必須です。短縮形の呼び出し audit_action(audit_stage="FINAL") は無効です。エクスポートの承認にブロッキングモードを使用しないでください。
フェーズ 5 — 仕上げと二次動作
依頼された動作を改善するモーションだけを追加します:
- 胴体のひねりと逆回転。
- 頭の上下動、遅れ、視線の集中、または落ち着き。
- 腕と手のフォロースルー。
- 腰の落ち着き、圧縮、反発。
- 制御された左右非対称。
- 衝撃のアクセントと回復時のオーバーラップ。
Roblox のゲームプレイ時のカメラ距離でも動作が読み取れるようにします。仕上げ後にポーズとカーブのチェックを再実行します。
別の正規の R6 ターゲット向けに、検証済みの既成 R6 コントロールリグでアニメーションを作成した場合は、2 つの正規のリグ間でのみ転送またはリターゲットします。代表的なフレームでターゲットを確認し、マッピングや静止時の向きのエラーを修正して、レビュー済みのソースモーションと一致するまで繰り返します。
フェーズ 6 — ループテストと最終レビュー
- アクション全体を繰り返し再生またはサンプリングします。
- ループの場合は、最初と最後のポーズを数値で比較し、カーブの接線も比較したうえで、重複する最後のフレームを保持せずにプレビューします。
- 接地しているすべての足/手の区間を宣言し、測定します。移動動作と、攻撃、予備動作、衝撃、回復、接地したエモートなど、意図した支持接点があるすべての接地状態の単発動作では、
contacts_required=Trueを指定します。アクション全体に接地区間が意図的に存在しない場合に限り、contacts_required=Falseを使用し、その理由を記録します。スケールがすでに Blender の 1 シーン単位=1 stud として検証されていないインポート済みリグでは、既知の Studio 測定値または検証済みのインポートスケールからscene_units_per_studをキャリブレーションし、audit_action()に渡します。Blender の生の距離を stud のしきい値と直接比較しないでください。 - 最終的なアニメーションカーブがすべてポーズボーンを対象とし、非線形の最終補間を使用していることを確認します。
- よくあるミスのリストに照らして、バランス、シルエット、階層、弧、間隔、衝撃、二次動作、Roblox スタイルの誇張を確認します。
- 失敗したチェックをすべて修正し、監査を再実行します。
- 最終監査では、
loop_requiredとcontacts_requiredの両方を明示的に渡します。省略はチェックをスキップする許可ではなく、失敗とみなされます。 - アクションが
authentic_ready: trueの既成または Studio 由来の Roblox ターゲット上にあることを確認します。 - 最終的な
.blendを保存し、検証済みのリグのワークフローに応じてエクスポート形式を選択します:- メタデータ付きの Motor6D/パーツリグでは、付属の Blender アドオンを使って、明示的に名前を付けたアクションと監査済みのフレーム範囲を
.rbxanimとしてエクスポートします。汎用 FBX は使用しないでください。 - 検証済みのスキン付き/ボーンリグでは、明示的に名前を付けたアクションを 1 つだけ、監査済みのフレーム範囲で FBX にエクスポートします。ヘルパーコントロールを除外し、評価済みのコントロールモーションを変形ボーンにベイクします。
- メタデータ付きの Motor6D/パーツリグでは、付属の Blender アドオンを使って、明示的に名前を付けたアクションと監査済みのフレーム範囲を
- Roblox Studio MCP とインポート済みまたは公開済みのアニメーションが利用できる場合は、ターゲットリグを調べ、アニメーションを再生し、ビューポートをキャプチャして、コンソール出力を確認します。Blender の完了に Studio での検証を必須としないでください。
フェーズ 7 — プレビュー用メディア
フェーズ 6 の成功後は、ユーザーがプレビュー用メディアを明示的に要求していない場合でも、必ず最終的なアニメーション GIF を作成します。
- プレビュー専用オブジェクトを作成する前に、最終版の
.blendが保存され、.rbxanimまたは FBX がエクスポートされていることを確認します。 - モデルから、表示されているキャラクターの実際の前方方向を特定します。名目上の正面軸を信頼してはいけません。検証済みの R6 V2.22 モデルは Blender の
+Y方向を向いています。 - ズームを変更せず、動作全体が収まる、固定された正面斜め方向の正投影カメラを作成します。原点中心の R6 V2.22 リグでは、カメラ
(6.8, 8.8, 4.8)、ターゲット(0, 0, 2.55)、正投影スケール6.4、出力サイズ512 × 512をデフォルトとして使用します。 Reviewコレクションに、レビュー専用のキーライト、フィルライト、リムライトを作成します。プレビュー用カメラとライトはアニメーションのエクスポート対象から除外します。- 再生フレームを、同一の永続的な GUI/MCP セッション内で、連番の RGB PNG ファイルとしてレンダリングします。次の操作を始める前に、Blender のレンダリング呼び出しが完了するまで待ちます。フレームごとに Blender プロセスを起動してはいけません。ループの場合は、プレビュー再生から、重複しているループ終端の継ぎ目確認用ポーズを除外します。
- レンダリングした一連のフレームに対して
build_animation_preview.pyを実行します。全フレームを基に共有のアダプティブ 256 色パレットを 1 つ作成し、Floyd–Steinberg ディザリング、無限ループ、optimize=Falseを使用します。 - GIF のセンチ秒単位の時間配分を使ってアニメーション速度を合わせます。24 再生フレーム、30 FPS の場合は、ミリ秒単位で
[30, 30, 40] * 8とし、合計800 ms、平均30 FPSに正確に合わせます。 - GIF を再度開き、フレーム数、寸法、合計再生時間、平均 FPS、無限ループのメタデータ、破棄モード、ファイルサイズが 0 ではないことを確認します。
- 対応している場合はアニメーション GIF を目視で確認します。対応していない場合は、代表的なレンダリング済み PNG を確認し、GIF アニメーションの目視確認は未検証であると報告します。確認を黙って合格扱いにしてはいけません。
- GIF を
.blend、Roblox アニメーションのエクスポート、ポーズ/カーブ監査、エクスポートに関する注記とともに納品します。GIF は正面/側面からの監査と数値監査を補足するものであり、それらに取って代わるものではありません。
必要なチェックがすべて合格した後に限り、アニメーションの準備ができたことを伝え、.blend、Roblox アニメーションのエクスポート、.gif、アクション/フレームの詳細、監査の概要、および Studio へのインポートに関する注記を提示します。
完了基準
リグのスケールまたは依頼内容から、より厳しい値が明らかに必要な場合を除き、以下の最小自動チェックを使用します。
- メッシュオブジェクトにアニメーションカーブがないこと。
- 最終的なキーフレーム補間に
LINEARがないこと。 - 接地した足の最大ドリフト:
0.02スタッド。インポートしたリグの場合は、既知の Studio 測定値または検証済みのインポートスケールを使って、アクション監査にscene_units_per_studを指定します。名目上のリグ種別やキャラクターの身長から推測してはいけません。 - 最終監査では、ループと接地のチェックが必要かどうかを明示します。意図した接地接触を伴う接地アクションでは、接触区間を含め、
contacts_required=Trueとします。 - ループ終端の位置差:最大
0.0001シーン単位。 - ループ終端の回転差:最大
0.1度。 - ループ終端のスケール差:最大
0.0001。終端の接線の傾きの差は最大0.001値/フレーム。 - 主要な各ポーズの正面および側面のレビュー画像。
- ツールチェーン監査で、同梱ファイルの不足も、必須オペレーターの黙示的なスキップも検出されないこと。
- 信頼性の状態が
authentic_ready: trueであること。リポジトリで生成されたリグやプロキシは適格ではありません。 - エクスポートされた
.rbxanimまたは FBX に、意図したアクションがちょうど 1 つ含まれていること。 - RGB PNG フレームからエンコードされ、重複したループ継ぎ目フレームがなく、共有パレットが 1 つで、無限ループ、破棄モード
2を使用し、アニメーション FPS に合わせてタイミングが調整された、検証済みの GIF プレビューが 1 つあること。
チェックを実行できない場合は、黙って合格扱いにせず、未検証として報告します。