MeshyAI生成の車モデルをUnity WheelColliderで走らせる — Blender経由の座標系トラブルを回避する手順

この記事は約7分で読めます。

MeshyAIで生成した車の3DモデルをUnityに持ち込み、WheelColliderで実際に走らせるまでの手順を備忘録としてまとめました。Blenderを経由する過程で座標系の違いやトランスフォーム適用の順序など、つまずきやすいポイントが複数あり、解決するまでに最終的に休日の数時間を費やしてしまいました。もし自分と同じような悩みにぶち当たった人がいれば少しでも参考になればと思い、作成しました。
個々の環境により異なる部分もあるかと思いますが、私の環境での検証結果を記載しています。

WheelColliderが要求する座標系の条件

手順に入る前に、Unity WheelColliderの仕様を押さえておく必要があります。ここを理解していないと、以降の作業でなぜこの設定にするのかがわからなくなります。
特に他のオブジェクトとかなり仕様が違うのでここの理解をせずに進めてしまうと
なかなかうまくいきません(もちろんUnityの公式マニュアルにはきちんと記載されてるんですけどね、、、)

WheelColliderが正常に動作するための条件は以下の通りです。

  • Z軸が進行方向、Y軸が上
  • WheelColliderオブジェクトの回転は (0, 0, 0) — 少しでも回転が残っていると調整が難航します
  • WheelColliderはローカルY軸の下向きにレイキャストして接地判定を行う — つまりY軸が上を向いていないとタイヤが地面を検出できません

よくある間違いとして、WheelColliderオブジェクト自体を回転させて軸を合わせようとするケースがあります。これは動作しません。モデル側の座標系をWheelColliderの要求に合わせる
必要があります

BlenderとUnityの座標系の違い

Blenderでは Z軸が上・Y軸が奥 ですが、Unityでは Y軸が上・Z軸が前 です。FBXエクスポート時の設定で座標系を変換しますが、設定を間違えるとUnity側でルートオブジェクトに回転が残り、WheelColliderが正常に動作しなくなります。

車の各軸の対応関係を整理すると、次のようになります。

方向 Blender上 Unity上
天井(ルーフ) Z軸 Y軸
ボンネット(前方) -Y軸 Z軸
トランク(後方) Y軸 -Z軸
助手席側(右) X軸 X軸

FBXエクスポート設定の「-Z Forward / Y Up」がこの変換を担当します。詳細はFBXエクスポートの項で説明します。

Step 1-2:MeshyAIからBlenderへのインポート

MeshyAIから車モデルをダウンロードする際は、形式に FBX を選択します。

Blenderを新規起動し、デフォルトのCubeを削除した状態で「ファイル → インポート → FBX (.fbx)」から読み込みます。インポート後、Blender上で車がZ軸を上にして正しい向きで表示されていることを確認してください。

Step 3:タイヤの分離と命名

WheelColliderはタイヤごとに個別のオブジェクトが必要なため、車のメッシュからタイヤを分離します。

分離手順

  1. 車のメッシュオブジェクトを選択し、TabキーでEdit Modeに入る
  2. フロント左タイヤの頂点を選択する(Lキーのリンク選択が便利です)
  3. Pキー →「選択」で分離
  4. TabキーでObject Modeに戻る
  5. 分離したオブジェクト名を Wheel_FL に変更する
  6. 同じ手順で FR(フロント右)、RL(リア左)、RR(リア右)も分離・命名する
  7. 残った車体のオブジェクト名を Body に変更する

完了後、Outlinerに BodyWheel_FLWheel_FRWheel_RLWheel_RR の5つのオブジェクトがあることを確認してください。
※注MeshyAIだけでなく、生成AI出力の車(他のオブジェクトもそうだと思います)は
タイヤが分離されず出力されることもあります。その場合はこの方法は使えません。
根気よくタイヤが分離されるモデルが出力されるまで頑張りましょう!

Step 4:トランスフォーム適用

ここが最大のハマりポイントです。というか私が勝手に勘違いして一番沼りました。
トランスフォーム適用と原点移動は必ず以下の順序で行ってください。順序を逆にすると原点がリセットされ、やり直しになります。

正しい手順

まず全トランスフォームを適用します。

  1. Aキーで全オブジェクトを選択
  2. Ctrl + A →「全トランスフォーム」を実行

次に原点をタイヤ中心に移動します。

  1. Wheel_FL を選択
  2. 右クリック →「原点を設定」→「原点をジオメトリの中心に移動」
  3. Wheel_FRWheel_RLWheel_RR にも同じ操作を行う
  4. Body にも同じ操作を行う

なぜこの順序なのか

「原点をジオメトリに移動 → Ctrl+A」の順番で実行すると、せっかくタイヤ中心に合わせた原点が全トランスフォーム適用によってリセットされてしまいます。必ず「Ctrl+A → 原点をジオメトリに移動」の順番を守ってください。
※勝手に最初にCtrl+A → 原点をジオメトリに移動を行ったのでどうやっても
タイヤがクロールのように車両を中心にタイヤが回転してしまいました、、、

確認ポイント

  • 全オブジェクトの回転が (0, 0, 0) であること
  • 各タイヤのオレンジの原点マーカーがタイヤ中心にあること

Step 5:車の前方を-Y方向に合わせる

Unity側でZ+を進行方向にするには、Blender上で -Y方向が車の前方 になっている必要があります。これはFBXエクスポート設定の「-Z Forward」が、Blenderの-YをUnityのZ+にマッピングする仕組みのためです。

確認方法

Blenderのビューポートでテンキーの 1(フロントビュー)を押します。車の前面(ボンネット側)がこちらを向いていれば正常です。

向きが違う場合の修正

現在の状態 操作
前方がX+方向 ARZ-90Enter
前方がX-方向 ARZ90Enter
前方がY+方向(逆向き) ARZ180Enter

回転した場合は、再度 Ctrl+A →「全トランスフォーム」を適用してください。さらに、向きの修正で回転を加えた場合はStep 4を最初からやり直す必要があります。トランスフォーム適用の順序(Ctrl+A → 原点移動)を必ず守ってください。

Step 6:FBXエクスポート設定

「ファイル → エクスポート → FBX (.fbx)」を選択し、左下のパネルで以下を設定します。(ここはあくまで私の環境の例です。スケールなどは適宜調整してください)
ここの設定を間違えると、Unity側でルートオブジェクトに回転が残り、WheelColliderが正常に動作しません。

トランスフォーム設定

設定項目
スケール 1.00
適用スケーリング 「全てFBX」
前方 -Zが前方 (-Z Forward)
Yが上 (Y Up)
トランスフォームを適用 チェックON

その他の設定

  • 含めるもの:オブジェクトタイプは「メッシュ」のみ(カメラ・ライトは不要)
  • ジオメトリ:三角面化はチェックON推奨

Step 7:Unityインポートと最終確認

エクスポートしたFBXファイルをUnityのAssetsフォルダにドラッグして読み込みます。

インポート設定

ProjectウィンドウでFBXを選択し、InspectorのModelタブで Bake Axis Conversion にチェックを入れて「Apply」を押します。

最終確認チェックリスト

FBXをシーンに配置して、以下を確認してください。

確認項目 正常な状態
ルートのTransform回転 (0, 0, 0)
青矢印(Z+)の方向 車の前方(ボンネット側)
緑矢印(Y+)の方向

回転が (0, 0, 0) でない場合は、Blenderに戻ってStep 4からやり直す必要があります。エクスポート設定やトランスフォーム適用の漏れが原因であることがほとんどです。

まとめ

MeshyAI生成モデルをUnity WheelColliderで動かすまでの工程で、特につまづいたのは以下の3点でした。

  • トランスフォーム適用の順序 — 「Ctrl+A → 原点移動」を逆にすると原点がリセットされる
  • 車の前方方向の設定 — Blender上で-Y方向が前方になっていないと、Unity側でZ+が進行方向にならない
  • FBXエクスポートの座標系設定 — 「-Z Forward / Y Up」と「トランスフォームを適用」のチェック漏れ

いずれもWheelColliderが回転 (0, 0, 0) を絶対条件としていることに起因します。モデル側の座標系をWheelColliderの要求に合わせるという原則を押さえておけば、同様のワークフローは他のAI生成モデルでも応用できます。

最後に

もちろん、UnityAssetStoreから無料のものを使うか、購入してしまうのが一番手っ取り早いと
思いますが、やはり自分のイメージする車がなかったりします。
自分のオリジナルの車両を作ってそれを実装するのも生成AIを利用したゲーム制作の
醍醐味とも思います。自分の備忘録と、少ないとは思いますが同じ悩みがある人の助けになればと思い作成してみました。
良ければ参考にしてみてください!
(Unity6で作成したものなのでバージョンアップによってUnity側、Blender側の仕様変更があった場合は上記の限りではありませんので悪しからず)

コメント

タイトルとURLをコピーしました