mcpField
B
blender-character-rigging

blender-character-rigging

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

blender-character-rigging について

Blender のキャラクターリギングスキルです。Rigify のコントロールリグ生成、メッシュのスキニング、ポーズのストレステスト、ゲーム用スケルトンの検証に対応し、ヒートウェイト計算に失敗するとプロキシ経由の転送に切り替えます。

主な機能

  1. 01Rigify のメタリグとコントロールリグ生成
  2. 02メッシュのバインドと頂点ウェイト整理
  3. 03ポーズのストレステストと変形確認
  4. 04ゲーム用スケルトン作成とメッシュ再ターゲット
  5. 05Unity、Unreal、Roblox 向けプロファイル検証

活用シーン

  1. 01キャラクターメッシュのアニメーションリグ作成
  2. 02関節を曲げた際の変形問題の確認
  3. 03ゲームエンジン向けスケルトンの準備
  4. 04エンジン要件に対するリグの検証

インストール

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

$npx skills add https://github.com/el4cteo/blender-skills --skill blender-character-rigging

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

同梱ファイル

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

scripts/
_bpyx.py
bind_mesh.py
rig_check.py
rigify_build.py
stress_poses.py

詳細

キャラクターのリギング

実行モデルは blender-core にあります。顔とシェイプキーについては blender-facial-shapekeys、アニメーションについては blender-animation を参照してください。

パイプライン(スクリプトを連鎖実行し、それぞれが JSON を返します)

  1. メッシュを準備する:スケールを適用し、正面を -Y に向け、足元を Z=0 に置き、X=0 を中心に左右対称にして、T ポーズまたは A ポーズにします(A ポーズは肩の変形がより良好になるため、30~45°にします)。最初に blender-asset-qa を実行します。
  2. メタリグ:scripts/rigify_build.py -- --add basic_human --fit Body(human は顔全体のリグを追加します。ゲーム用には --no-face とシェイプキーを使用します)。
  3. ジョイントを配置する(fit はスケールを調整するだけです)。X 線表示でメッシュに重ねてボーンを編集します。ジョイントは回転軸の中心(表面ではなく、ボリュームの内部)に配置します。IK が正しい方向に解けるよう、肘と膝は自然な方向に少し曲げます(肘は後ろ、膝は前)。対称化します:bpy.ops.armature.symmetrize()。look(shading="xray")で確認します。
  4. 生成する:--metarig META_Body --generate を実行すると RIG_Body が生成されます(コントロールリグ:FK/IK、IK/FK スナップ、調整ボーン、ボーンコレクション)。
  5. スキニングする:scripts/bind_mesh.py -- --armature RIG_Body --meshes Body を実行します。ヒートウェイトを使用し、ヒートウェイトの計算に失敗した場合(非多様体、キットバッシュ、または AI 生成メッシュ)は自動的にボクセルプロキシ転送に切り替え、その後、影響数を 4 に整理して正規化します。
  6. ストレステストを行う:scripts/stress_poses.py -- --armature RIG_Body を実行し、続けて look(mode="frames", frames=[1,10,20,30,40,50]) を実行します。肘のつぶれ、前腕のキャンディラッパー状の変形、肩の沈み込み、または腰のしわを修正します(下記参照)。
  7. エンジン用スケルトン:rigify_build.py -- --rig RIG_Body --game-skeleton を実行すると、GAME_RIG_Body が生成されます。これは root と DEF ボーンをクリーンな階層にまとめ、DEF- を取り除き、コントロールリグにコンストレイントで連動させ、メッシュの再ターゲットを行ったものです。コントロールリグでアニメーションを作成してから、ゲーム用スケルトンにベイクしてエクスポートします(blender-animation → blender-export-pipelines)。
  8. 検証する:scripts/rig_check.py -- --armature GAME_RIG_Body --profile unity|unreal|roblox [--fix] を実行します。

ボーンのルール

  • プロダクションリグのレイヤー:DEF(変形用。エクスポートするのはこれだけです)、ORG(元のメタリグのコピー)、MCH(機構用の補助ボーン)、コントロール(アニメーターが操作するもの)。コントロールボーンや MCH ボーンにウェイトを割り当てないでください。
  • 命名:.L/.R のサフィックスを使用します(ミラーツール、Rigify、rig_check はこれに依存します)。名前は一意の ASCII 文字にします。ボーンコレクション(arm.collections.new("FK")、bcoll.assign(bone))は、従来のボーンレイヤーに代わるものです。
  • ロール:ローカル軸を一貫させます。Y はボーンに沿って下向きです。四肢には armature.calculate_roll(type="GLOBAL_POS_Z") を、またはチェーンごとにロールを再計算します。左右対称のボーンではロールも左右対称にする必要があります(rig_check が検出します)。
  • チェーン:四肢では親から子へ接続します。脊椎は 3~5 本、首は 1~2 本にします。前腕と上腕にツイストボーン(Rigify の .001 セグメント)を配置すると、キャンディラッパー状の変形を防げます。
  • ルートボーンは原点に置き、Y 前方を向け、ウェイトを割り当てず、ルートモーションに使用します。
  • スケール:アーマチュアオブジェクトのスケールは 1、回転は 0 にします。スキニングの前に適用します。不均一なボーンスケールのアニメーションは、エンジンで問題を引き起こします。

ウェイトペイントのルール(プロが確認するポイント)

  • 頂点あたりの影響数は、モバイル/Roblox では 4 以下、エンジンが対応している場合は PC では 8 以下にします。必ず正規化します。0.01 未満のウェイトは削除します。
  • 関節全体で滑らかに減衰:関節の境界で 50/50 にブレンドし、約 1~2 本のエッジループにわたって減衰させます。1/0 の急な切り替えでは折り目ができ、範囲が広すぎると手足がゴムのようになります。
  • 肘/膝:関節のボリュームを保てるよう、外側を上側のボーンにより長くウェイト付けします。鋭く曲げる場合は、補助/補正ボーンまたは補正シェイプを追加します。
  • 肩:鎖骨、上腕、脊椎をブレンドします。腕を頭上に上げた状態(ストレスフレーム 10)でテストします。
  • 腰:前側の太ももと骨盤のブレンドは引き締め(折り目)、後ろ側は柔らかくします(臀部)。
  • 頭/首:頭部は剛体にします(顎のラインより上は頭ボーンに 100%)。首は滑らかにブレンドします。小道具(ヘルメット、装甲板)は 1 つのボーンに 100% ウェイト付けし、伸びずに剛体のまま保ちます。
  • ミラー:片側をペイントしてから、object.vertex_group_mirror(all_groups=True, flip_group_names=True, use_topology=False) を実行するか、X ミラーを有効にして作業します。
  • ツール(リアルタイム):自動正規化を有効にしたウェイトペイントモード、グラデーションツール、スムーズ(vertex_group_smooth)、レベル、良好なメッシュからの object.data_transfer(衣服のウェイトは身体から取得します)。

補正(ウェイト以外)

ボーンの回転で駆動する補正シェイプキーは、ヒーローリグの肘、膝、肩を修正します。ポーズを取った状態で修正をスカルプトし(modifier_apply_as_shapekey または Corrective Shape Keys アドオンの方法)、ボーンのローカル回転からキー値を駆動します(ドライバーの TRANSFORMS 変数 ROT_X を LOCAL_SPACE に設定し、静止時の 0 から最大屈曲時の 1 にマッピングします)。ゲームでは、補正はブレンドシェイプとしてエクスポートされます。エンジン内で駆動する(UE Pose Driver/Unity スクリプト)か、アニメーションにベイクします。

エンジンごとのスケルトンの詳細

  • Unity Humanoid:Hips → Spine → Chest → Neck → Head に加え、四肢を設定します。ゲーム用スケルトンは自動でマッピングされます(rig_check --profile unity にマッピングが表示されます)。T ポーズのバインドポーズを推奨します。
  • Unreal:IK Retargeter で UE5 Mannequin にリターゲットします。名前を一致させると(pelvis、spine_01、thigh_l など)、チェーンのマッピングが速くなります(--profile unreal で不足箇所を確認できます)。リーフボーンは使用しません。
  • Roblox R15:固定された階層と名前(LowerTorso、UpperTorso、LeftUpperArm など)を使用します。Root > HumanoidRootNode > LowerTorso とし、Root にはウェイトを設定せず、影響数は 4 以下にします。Rigify ではなく、手動で構築するか、Roblox の Blender テンプレートを使用します。詳細は blender-export-pipelines/references/roblox.md を参照してください。

注意点

  • rigify_generate を実行するには、メタリグを選択してアクティブにする必要があります(temp_override だけでは不十分です)。スクリプトがこの処理を行います。
  • 「Bone Heat Weighting: failed to find solution」は、非多様体、パーツの交差、または極端に小さいスケールが原因です。bind_mesh.py はプロキシにフォールバックします。まずスケールを修正してください。
  • 「Keep Transform」で親子付けしたメッシュに未適用のスケールがあると、二重変換が発生します。親子付けの前にスケールを適用してください。
  • モディファイアーの順序:Armature はシェイプキーのような変形処理の後、Subdivision/Corrective Smooth の前に配置します(Armature の後に Corrective Smooth を配置すると、潰れが軽減されます)。
  • 5.0:bone.select は廃止されました。pose_bone.select または edit_bone.select を使用してください。bone.hide は編集ボーンにも影響します。

コメント