blender-character-rigging について
Blender のキャラクターリギングスキルです。Rigify のコントロールリグ生成、メッシュのスキニング、ポーズのストレステスト、ゲーム用スケルトンの検証に対応し、ヒートウェイト計算に失敗するとプロキシ経由の転送に切り替えます。
主な機能
- 01Rigify のメタリグとコントロールリグ生成
- 02メッシュのバインドと頂点ウェイト整理
- 03ポーズのストレステストと変形確認
- 04ゲーム用スケルトン作成とメッシュ再ターゲット
- 05Unity、Unreal、Roblox 向けプロファイル検証
活用シーン
- 01キャラクターメッシュのアニメーションリグ作成
- 02関節を曲げた際の変形問題の確認
- 03ゲームエンジン向けスケルトンの準備
- 04エンジン要件に対するリグの検証
インストール
コマンドをコピーしてターミナルで実行します。
$
npx skills add https:/ / github.com/ el4cteo/ blender-skills --skill blender-character-riggingインストール後、Claude Code で/blender-character-riggingを入力して読み込まれたか確認します。
同梱ファイル
SKILL.md と一緒にインストールされる参考資料やスクリプト。
scripts/_bpyx.pybind_mesh.pyrig_check.pyrigify_build.pystress_poses.py詳細
キャラクターのリギング
実行モデルは blender-core にあります。顔とシェイプキーについては blender-facial-shapekeys、アニメーションについては blender-animation を参照してください。
パイプライン(スクリプトを連鎖実行し、それぞれが JSON を返します)
- メッシュを準備する:スケールを適用し、正面を -Y に向け、足元を Z=0 に置き、X=0 を中心に左右対称にして、T ポーズまたは A ポーズにします(A ポーズは肩の変形がより良好になるため、30~45°にします)。最初に
blender-asset-qaを実行します。 - メタリグ:
scripts/rigify_build.py -- --add basic_human --fit Body(humanは顔全体のリグを追加します。ゲーム用には--no-faceとシェイプキーを使用します)。 - ジョイントを配置する(fit はスケールを調整するだけです)。X 線表示でメッシュに重ねてボーンを編集します。ジョイントは回転軸の中心(表面ではなく、ボリュームの内部)に配置します。IK が正しい方向に解けるよう、肘と膝は自然な方向に少し曲げます(肘は後ろ、膝は前)。対称化します:
bpy.ops.armature.symmetrize()。look(shading="xray")で確認します。 - 生成する:
--metarig META_Body --generateを実行するとRIG_Bodyが生成されます(コントロールリグ:FK/IK、IK/FK スナップ、調整ボーン、ボーンコレクション)。 - スキニングする:
scripts/bind_mesh.py -- --armature RIG_Body --meshes Bodyを実行します。ヒートウェイトを使用し、ヒートウェイトの計算に失敗した場合(非多様体、キットバッシュ、または AI 生成メッシュ)は自動的にボクセルプロキシ転送に切り替え、その後、影響数を 4 に整理して正規化します。 - ストレステストを行う:
scripts/stress_poses.py -- --armature RIG_Bodyを実行し、続けてlook(mode="frames", frames=[1,10,20,30,40,50])を実行します。肘のつぶれ、前腕のキャンディラッパー状の変形、肩の沈み込み、または腰のしわを修正します(下記参照)。 - エンジン用スケルトン:
rigify_build.py -- --rig RIG_Body --game-skeletonを実行すると、GAME_RIG_Bodyが生成されます。これはrootと DEF ボーンをクリーンな階層にまとめ、DEF-を取り除き、コントロールリグにコンストレイントで連動させ、メッシュの再ターゲットを行ったものです。コントロールリグでアニメーションを作成してから、ゲーム用スケルトンにベイクしてエクスポートします(blender-animation→blender-export-pipelines)。 - 検証する:
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は編集ボーンにも影響します。
コメント
Markdown 対応