WORKS 一覧へ
Tool / Blender Python

自動リギングアドオン(Blender)

キャラクターモデルにマーカーを置くだけで人型スケルトンを生成し、 髪やスカートの揺れボーンまで自動でセットアップするアドオン。 毎回手作業でやっていたリグ工程を短縮するために自作し、歩行アニメーションで実際に検証しました。

PythonBlender API リギングスキニング物理シミュレーションアドオン開発
ROLE
個人開発(設計 / 実装 / 検証)
STACK
Python, Blender API
OUTPUT
人型リグ + 揺れボーンの自動生成
VALIDATION
歩行アニメーションで挙動を実測確認

作った理由

ゲーム制作では 3D モデルを自分で作っていたため、キャラクターを増やすたびに 同じリギング作業を繰り返すことになっていました。 特に髪やスカートといった揺れものは、ボーンを一本ずつ並べて物理を設定する必要があり、 手数が多いうえに設定ミスも起こりやすい工程です。

「毎回やる作業なら自動化したほうが早い」と考え、既存の商用リギングアドオンの操作体系を参考に、 自分のワークフローに合わせた自動化ツールを作りました。

機能

  • マーカー方式のスケルトン生成:モデル上の主要部位(頭・肩・肘・膝など)にマーカーを配置すると、その位置関係から人型ボーン階層を生成する
  • 揺れボーンの自動生成:髪・スカートなどのメッシュを指定すると、形状に沿ってボーンチェーンを自動生成し、揺れの物理設定までまとめて行う
  • 揺れものの表示切り替え:確認したい対象だけを表示できるようにし、揺れボーンが増えても作業しやすくした
  • 重なった布の連動:スカートが複数層に重なっている場合に、内側と外側のボーンを共有して不自然な貫通を避ける処理
  • 頭皮部分の固定:髪の根元は揺らさず固定し、毛先ほど揺れる自然な減衰を設定

検証で分かったこと

自動生成した時点で見た目が正しくても、アニメーションを再生すると初めて分かる不具合が いくつもありました。そのため生成結果を静止状態で確認するだけでなく、 歩行アニメーションを適用して揺れの挙動を測る形で検証しています。

実際に見つかった問題:静止しているはずの状態で布が浮き上がる、 重なった布同士が貫通する、根元まで揺れて髪が不自然に見える —— いずれも 動かして初めて分かる種類の不具合でした。合成的なテストが通るだけでは ツールとして使える保証にならない、という教訓になっています。

関連して作ったツール

同じ課題意識から、Unity 側でも制作ツールを作っています。

  • 揺れもの自動セットアップツール(Unity):インポート済みキャラクターの髪・衣装に対して揺れ物のコンポーネント設定を一括で行うエディタ拡張。実際のアバターモデルで動作を検証済み
  • マテリアル一括トゥーン化ツール(Unity):既存マテリアルをトゥーン調のシェーダー構成へまとめて変換し、アウトライン用のメッシュ生成まで自動化

いずれも「自分が繰り返している手作業を、そのままツールにする」という同じ発想から作ったものです。 研究でも学習・評価のスクリプトを整えることが多く、作業を自動化して試行回数を増やす 進め方が身についています。