はじめに
ゲームステージやキャラクターなどの3Dモデルの作成には、Blenderを使用するのが一般的です。しかし、BlenderとUnityは異なるツールであり、異なるファイル形式を使用します。
Blenderで作成した3Dモデルをゲーム開発に使うには、Unityへエクスポートする必要があります。
本記事ではその方法や、注意する点について解説します。
エクスポートとは
あるアプリケーションで作成したデータやファイルを、異なるアプリケーションで読めるデータ形式に変換して、送り出したり書き出したりすること。
コトバンク
Blenderでの準備
Blenderで3Dモデルを作成したら、いきなりUnityへエクスポートする前に、以下の点について注意しておくとUnityで扱いやすくなります。
- 原点の設定
- スケールと回転を適用
- マテリアル、テクスチャの設定
原点の設定
原点がオブジェクトから離れたところにあると、Unityでの移動や回転がやりづらくなるので、オブジェクトの底面か中心に原点を設定しましょう。
オブジェクト > 原点を設定 から原点を移動できます。
スケールの設定
作成したモデルの拡大縮小、回転を適用しておきましょう。現在の角度を0°、拡大縮小を1.000にします。
エクスポートするオブジェクトを選択し、オブジェクト > 適用 > 回転と拡縮 を選択することで完了です。
マテリアル、テクスチャの設定
最後にマテリアル設定となりますが、Blenderで作成されたシェーダーはUnityにそのまま持っていくことはできません。
Blenderのシェーダーエディターを開いてみて、プリンシプルBSDFのベースカラーやノーマルなどにテクスチャのみが接続されている状態なら、エクスポート可能です。
以下は、シェーダーが設定された例です。テクスチャが直接接続されていない場合は、エクスポートをしてもシェーダー設定は反映されませんので、ご注意ください。
Blenderで作成したシェーダー付きのモデルをUnityにエクスポートするには、テクスチャのベイクが必要になります。シェーダー設定はUnityへ持っていけないので、テクスチャとして焼き付けておく処理をします。
詳しいやり方はこちらで解説されていますのでご覧ください。
BlenderでのFBXエクスポート手順
事前準備が終わったところで、Unity向けにエクスポートしていきます。
エクスポートしたい3Dモデルを選択し、メニューバーの「ファイル(File)」をクリックし、「エクスポート(Export)」を選択します。フォーマットとして「FBX」を選択します。
ここでファイルの保存先と名前を指定します。
エクスポートの設定を調整するため、FBXエクスポートオプションパネルが表示されます。ここで以下のような設定を確認します。
- パスモードはコピーを選択し、右側のアイコンをクリックして有効にしておきます。こうすると、テクスチャも含んだFBXデータをエクスポートすることができます。
- 選択したオブジェクトにチェックを入れておきましょう。チェックしないと、Blenderファイル内のすべてのモデルをエクスポートすることになってしまいます。
- オブジェクトタイプは、エクスポートするオブジェクトを指定します。基本的にメッシュのみでOKだと思いますが、アーマチュアが入ったモデルの場合は、アーマチュアも選択しておきます。
- トランスフォーム適用にチェックを入れると、座標系をUnity向けに自動的に変換してくれます。チェックを入れないとUnityに持って行ったら90°回転したモデルになってしまいますので、必ずチェックしましょう。
エクスポート設定の保存
以上が、エクスポートする際の設定ですが、毎回設定するのも大変なので設定を保存しておきましょう。オペレータープリセットの右側の「+」を押して、好きな名前をつけて保存することができます。
設定を保存し終えたら、「FBXをエクスポート」ボタンをクリックしてFBXファイルをエクスポートします。
UnityでのFBXインポート手順
インポートしたいファイルをUnityのプロジェクトウィンドウにドラッグアンドドロップします。または、メニューバーの「Assets」→「Import New Asset」を選択し、FBXファイルを選択します。
インスペクターを開いてExtract Textures… をクリックして、テクスチャ画像データをおく場所を指定します。
完了すると、テクスチャが追加されました。
これで、テクスチャ付きの3Dモデルのインポートが完了しました!
おわりに
テクスチャ付き3DモデルをBlenderからエクスポートする方法と、Unityにインポートする方法の紹介でした!
テクスチャとモデルを別々にエクスポートすると手間がかかりますので、今回紹介した方法でまとめてUnityに送るのが良いと思います。