現在、MMDモデルをBlender経由でVRM形式に変換し、Unity 6(UniVRM使用)にアップロードしたユーザーを中心に「上半身は動くが、下半身だけが全く動かない」というトラブルの声が上がっています。
SNSやコミュニティでも、「ボーンは入っているのに下半身が固定されたまま」「MMDでは動いていたのに」といった困惑の声が見られ、焦ってしまいますよね。
発生している主な現象
具体的には、以下のような症状が報告されています。
- Unity 6上で、インポートしたVRMモデルにアニメーションを適用しても、腰から下が完全に固定され、直立不動のままになる。
- 上半身(腕、頭、脊椎など)はアニメーションに従って正常に動く。
- UnityのSceneビューでモデルのボーン(Humanoid Avatar)を確認すると、下半身のボーン自体は存在している。
- MMD公式サイトで配布されているモデルを使用しており、変換前のPMX形式では正常に動作していた。
考えられる要因
この問題が発生する際、いくつかの原因が考えられます。
1. Unityの人型ボーン(Humanoid)の割り当て不備
最も可能性が高い原因は、Unityがインポート時に行うボーンの自動割り当て(Humanoid Avatar設定)の失敗です。MMDモデル特有のボーン命名規則はVRMの標準と異なるため、Unityが下半身の根元となる「Hips」ボーンや、足のボーンを正しく認識できず、割り当てが空欄(None)になっている、あるいは間違ったボーンが割り当てられていることがあります。
2. Blenderでのボーン命名規則と階層構造の不備
Blenderで`vrm_tools`などのアドオンを使用して変換する際、ボーン名がVRM標準に準拠していない、または「Hips」を頂点とする親子関係(階層構造)が正しく構築されていない場合、Unity側で人型アバターとして正常に認識されません。特に下半身のボーンがHipsの子になっていないケースが考えられます。
3. 下半身メッシュへのウェイトペイント未設定
BlenderからFBX経由でUnityへエクスポートする際、あるいはBlender内での編集過程で、下半身のメッシュ(肌や服)が対応するボーンに紐付いていない(ウェイトが塗られていない)可能性があります。ボーンだけが動き、メッシュがそれに追従していない状態です。
4. UniVRMバージョンの互換性問題
Unity 6は比較的新しいバージョンであるため、使用しているUniVRMのバージョンがUnity 6に完全に適応していない可能性があります。UniVRMは頻繁にアップデートされているため、古いバージョンを使用していると予期せぬ動作を引き起こすことがあります。
今すぐ試せる解決方法(初心者向け)
効果が高いと思われる順に、具体的な手順を解説します。
ステップ1:UnityでHumanoid Avatar設定を手動で修正する
まずは、Unity上でボーンの割り当てを確認し、修正します。これが最も一般的な解決策です。
- UnityのProjectウィンドウで、インポートしたVRMモデルのファイル(`.vrm`ではなく、UniVRMが生成したプレハブやアセット)を選択します。
- Inspectorウィンドウの上部にある「Rig」タブをクリックします。
- 「Animation Type」が「Humanoid」になっていることを確認し、その下の「Configure…」ボタンをクリックします(SceneがAvatar配置モードに切り替わります)。
- Inspectorウィンドウに人体の図が表示されます。緑色の部分は正常に割り当てられていますが、赤色や灰色、あるいは「None (Transform)」となっている部分は割り当てられていません。
- 特に「Hips」と下半身(Left Leg, Right Leg, Left Foot, Right Foot)を確認してください。「None」になっている場合、Hierarchyウィンドウから対応するMMDのボーン(例:「腰」や「左足」など)をInspectorの該当する欄にドラッグ&ドロップして割り当てます。
- すべての主要なボーン(特に下半身)が正しく緑色で割り当てられたら、Inspector下部の「Apply」ボタンを押し、最後に「Done」ボタンを押してConfigureモードを抜けます。
ステップ2:Blenderでボーン名と親子関係を修正する
ステップ1で解決しない場合、Blenderに戻ってモデルデータを修正する必要があります。
- Blenderで元のMMDモデルを読み込みます。
- アーマチュア(ボーン)を選択し、編集モードに入ります。
- 主要なボーン名を、UnityのHumanoidが認識しやすい名前にリネームします。例えば、「腰」を「Hips」、「左足」を「LeftUpperLeg」、「左足首」を「LeftFoot」のように変更します(VRM標準の命名規則に合わせるのが確実です)。
- ボーンの親子関係(階層構造)を確認します。下半身のすべてのボーン(左右の足など)は、最終的に「Hips」ボーンの子階層になっている必要があります。Hips自体はルート(親を持たない)であるべきです。
- 修正後、再度VRM形式(またはFBX形式からUnityでVRM化)でエクスポートし、Unityにインポートし直してステップ1を確認します。
ステップ3:UniVRMをUnity 6対応の最新版にアップデートする
UniVRMがUnity 6に正式対応しているバージョンか確認してください。
- UniVRMの公式サイト(GitHubのリリースページなど)を確認し、Unity 6への対応状況と最新バージョンを確認します。
- 古い UniVRM パッケージをUnityプロジェクトから削除し、最新版のUniVRMパッケージ(`.unitypackage`)をインポートし直します。
- モデルを再インポートし、動作を確認します。
まとめ
MMDからVRMへの変換時に下半身が動かない問題は、主に以下の点を確認することで解決する可能性があります。
- UnityのHumanoid Avatar設定で、Hipsや足のボーンが「None」にならず正しく割り当てられているか。
- Blenderでボーン名やHipsを頂点とする階層構造が正しく設定されているか。
- 使用しているUniVRMがUnity 6に対応した最新バージョンか。
特にUnityでのボーン手動割り当て(ステップ1)は非常に多く見られる原因ですので、まずはそこから焦らず試してみてください。
