【Blender・Unity】3Dモデルを持ち込むとマテリアルが外れる・スケールが巨大化する原因と一括設定の仕組み

1: 名無しさん
Blenderで作ったモデルをUnityに入れるとピンク色になるし、サイズも巨大化してビビるんだが

2: 名無しさん
それな。マテリアルを一個ずつ設定し直すの面倒すぎる。何か一発で適用する裏技ないの?

3: 名無しさん
スケールも何倍にも膨らむし、設定の仕組みがどうなってるのか詳しい人教えてほしい

 

Blenderで制作した3DモデルをUnityに読み込んだ際、色が消えてグレーやピンクになったり、大きさが極端に変わってしまう現象は珍しくありません。これはツールの仕様や内部データ形式の違いによって起こる現象であり、正しいインポート設定や出力手順を理解すれば自動でマテリアルを生成・適用できます。

 

BlenderからUnityへ持ち込んだ際にマテリアルが解除される理由

ひかわ
毎回Unity側でマテリアルを作り直して手作業で割り当てるのは大変すぎるから、自動で反映させる仕組みを知りたいな。

 
Blenderの内部で設定したシェーダーやノード構成は、そのままUnityの描画エンジンに引き継がれません。両者ではグラフィックを描画する仕組み自体が異なるため、基本的にテクスチャ画像以外の複雑な質感表現は共有できない仕様になっています。何も設定せずにモデルファイルだけを移行すると、Unity側で「どのマテリアルを使えばいいのかわからない状態」になり、見た目がグレーになったり、テクスチャが外れたりします。
手作業での再配置を回避するには、FBX形式などで出力する際にテクスチャの埋め込み設定を行うか、Unityのインポート設定でマテリアルを自動抽出する機能を利用するのが基本です。Unityの「Model」インポート設定内にある「Materials」タブを開き、生成モードを「Extract Materials」に変更することで、モデルが保持している色情報やテクスチャの割り当てを元にUnity用のマテリアルを一括で自動生成できます。テクスチャの参照パスを正しく保持した状態で書き出せば、手作業で1つずつ割り当てる必要はなくなります。
 

モデルの大きさが何倍にも巨大化してしまう原因と対処法

ひかわ
Blenderではちょうどいいサイズで作ったはずなのに、Unityに配置した瞬間画面を覆い尽くすくらい大きくなるのはなぜ?

 
BlenderとUnityでは、空間上の「1単位」が意味する基本スケールの定義が異なります。Blenderの標準単位は1メートルですが、出力形式や座標軸の扱いによって、Unityに取り込んだ際にサイズが10倍や100倍といった極端な数値に変換されることがあります。また、回転軸の方向(Z軸上向きとY軸上向きの違い)も影響し、モデルが傾いた状態で読み込まれる場合もあります。
このサイズズレを防ぐには、Blender側でモデルを書き出す直前に「スケールの適用(Ctrl + A)」を行い、オブジェクトのトランスフォーム情報を基準値にリセットしておく必要があります。さらに、FBX出力時の設定画面で「スケールを適用」の項目を「FBXオール」や「すべて適用」に変更して書き出すことで、Unity側でも想定どおりの正確な寸法で読み込めるようになります。あらかじめ制作段階からUnityの基準に合わせてスケールを設定しておくことで、インポート後のサイズ調整にかかる手間を無くすことができます。
 

まとめ

  1. Blenderの独自シェーダーはUnityに引き継げないため、FBX経由で書き出しUnity側のインポート設定でマテリアルを自動抽出する。

  2. 両ツールで基本スケールや軸の定義が異なるため、Blender側で書き出し前にスケール変換をクリアし、適切なエクスポート設定を選択する。

ツールごとのデータ構造の違いを把握し、書き出しと読み込みの設定を最適化することで、手作業による調整作業を大幅に削減できます。