Blenderで作成したアバターをUnityに持ち込んだ際に「腰より上が前後逆になる」というトラブルは、モデルの軸設定やボーンの方向性が原因で発生することがあります。服やアクセサリーなどのパーツを含んだ状態で調整しなければならず、単純に回転させるだけではうまくいかないケースが多いです。本記事では、このような状況を解決する具体的な手順を紹介します。
なぜ腰から上が逆転するのか
主な原因は、BlenderとUnityの座標軸の違いや、リグのボーン回転が適切に適用されていないことです。特にBlenderではZ軸が上方向、UnityではY軸が上方向という違いがあるため、エクスポート時に補正が必要です。
また、腰より上のボーンが局所的に反転している場合、スケルトンの回転が正規化されていない可能性もあります。
Blender側での修正方法
1)オブジェクトの回転・スケールを適用:
Blenderでモデルを選択し、Ctrl + A →「回転とスケール」を適用します。これにより変換がリセットされ、Unityで正しい姿勢が反映されやすくなります。
2)ボーンの方向を確認:
Poseモードで腰より上のボーンを選択し、回転値が意図せずマイナスになっていないかを確認します。もしおかしければ、「ボーンのロール」を調整し、再度ウェイトを確認します。
3)FBX出力時の設定:
エクスポート時に「Forward: -Z Forward」「Up: Y Up」を選択すると、Unityとの軸合わせがスムーズに行えます。
Unity側での修正方法
1)Humanoidリグの調整:
インポートしたモデルのRig設定をHumanoidにすると、Unity側で自動的にボーン方向を補正することがあります。ただし、正しくマッピングされていない場合は「Configure」で腰と上半身のボーン向きを確認しましょう。
2)Prefabを壊さずに修正:
シーン上で修正してもPrefabに反映されない場合があるため、修正後は必ず「Apply」でPrefabに適用してください。これにより衣装やアクセサリーも正しく追従します。
3)Animatorやポーズで確認:
Unity内でアニメーションを流してみて、腰から上が自然に動いているかをチェックします。
服やパーツがずれる場合の対処
軸修正や回転適用を行うと、服や髪などの別オブジェクトがズレることがあります。その場合は以下の方法を試してください。
- Blenderで親子関係を再確認(服やパーツをArmatureに正しく関連付ける)
- ウェイト転送(Data Transferモディファイア)で服のウェイトを体に再割り当て
- UnityでSkinned Mesh Rendererを確認し、参照ボーンが正しいか確認
特に衣装が複数ある場合は、Blenderで一度親子付けを統一し直してからUnityに持ち込むと安定します。
実例:上半身が反転するケースの修正フロー
例として、アバターをUnityにインポートしたところ、腰から上が後ろを向いてしまった場合を想定します。まずBlenderでCtrl + A → 回転/スケール適用を実行。次にボーンのロールを修正し、再度FBXを書き出します。Unityにインポート後、RigをHumanoidに設定し、腰と上半身のボーン向きを確認。正しい方向に修正されたら、服や髪のパーツを再度Prefabに適用し直します。
これにより、腰から上の前後逆転現象は解消され、衣装も自然に追従するようになります。
まとめ:前後軸問題は正しい手順で解決できる
アバターの腰から上が逆転してしまう問題は、ほとんどが「回転適用忘れ」や「ボーン方向の不整合」によるものです。Blender側で回転・スケールを適用し、ボーンロールを調整、さらにUnityのRig設定を適切に行えば、多くの場合は修正可能です。服やアクセサリーがずれる場合も、親子付けやウェイト転送で対応できます。これらの手順を踏めば、再度ウェイトを全面的に塗り直す必要はなく、効率的に修正できるでしょう。


コメント