どうも音無サノトです(^^♪
ゲーム制作記事の続きになります。
前回までに障害物となるオブジェクトを Blender で作成しました。
今回はこの作成したオブジェクトを Unity にインポートします。
対応するファイル形式の確認
まずオブジェクトをエクスポートする前に Blender と Unity それぞれで対応している3Dオブジェクトのフォーマットを確認します。フォーマットを合わせないと Blender 側でエクスポートしたところで Unity にインポートできなくなります。
それでは早速、確認してみます。
Blender はエクスポートできるファイル形式から、 Unity は公式マニュアルから調べました。
まとめますと下記の様になります。
Blender : .dae、.fbx、.3ds、.obj、.abc、.ply、.x3d、.stl
Unity : .dae、.fbx、.3ds、.obj、.dxf、.skp
赤字のところがどちらも対応しているフォーマットです。
一応フォーマットの勉強のため、共通しているものはサッと調べてみます。
後で使えそうな情報を表でメモしています。
フォーマット | 概要 |
---|---|
dae(Collada) | XMLで記述されるフォーマット。 テクスチャやボーンにも対応とのこと。 元々はPS3やPSP用に作られたらしい。 ROSのURDFでも使われている。 |
fbx | Autodeskの代表フォーマット。 ポリゴン、モーションキー、シェイプ(モーフィング)、テクスチャ、 マテリアル、階層情報、IKなどの情報も受け渡し可。 テキストベースでの記述とバイナリバージョンがあるらしい。 |
3ds | Autodesk 3ds Maxで使われるフォーマット。 シーン、モデリング、アニメーションなどのデータが扱える。 バイナリファイル形式である。 |
obj | Wavefront Obj形式。 頂点、法線、テクスチャ座標値などのデータを記録。 テキスト形式のシンプルなフォーマット。 |
何となく .3ds は限定的な感じで .obj はシンプルだけど扱えるデータが限られているみたいです(ここら辺は時間があったら勉強してみます)。今回は .fbx 形式でやってみようと思います(これでやっている人が多かったため)。
Blender でオブジェクトをエクスポートする
まず前回作成した Blender のファイルを開き、エクスポートするオブジェクトを選択して、 File > Export > FBX(.fbx) を選択します。
すると下の様な画面が出ますので、名前と設定を変更します。
まず名前の変更です。
ここでファイルの保存場所とファイルの名前を変更できます。
デフォルトでは Blender ファイルの置かれているファイルパスとそのファイル名が適用されるみたいです。
今回はこのままにしておきます。
次にエクスポートの設定の変更です。以下の変更を行います。
- Selected Object (選択したオブジェクト) にチェックを入れる
- Forward (前方) を Z Forward (Zが前方) に変更する
- Up (上) を Y Up (Yが上) に変更する
- !EXPERIMENTAL! Apply Transform (!実験的機能! トランスフォーム適用)にチェックを入れる (頂点座標をベイクする機能らしいです。ゲーム内で使用する場合はこれにチェックを入れた方がオブジェクトを扱いやすくなるとのこと)
設定が完了したら、ファイルパスの隣にある Export FBX をクリックしてエクスポートします。
すると指定したファイルパスに FBX 形式のファイルが生成されます。
Unity にオブジェクトをインポートする
続いて Unity 側にオブジェクトをインポートします。
まず Assets フォルダに 「Models」という名前のフォルダを作ります。
そのフォルダ内に先ほど生成した enemy.fbx をドラッグ&ドロップします。
すると以下のように enemy のゲームオブジェクトが追加されます。
追加されたオブジェクトをゲームシーンにドラッグ&ドロップします。
ゲームシーン内にオブジェクトを配置できました。
しかし、このままでは大きすぎるので Scale の値をそれぞれ 0.3 に調整します。
Player と比較するとちょうどいい大きさになりました。
以上で Blender でモデリングしたオブジェクトを Unity にインポートできました。
次回はこのオブジェクトの動作処理を追加して障害物っぽくしようと思います。
本日は以上となります。最後まで読んでいただきありがとうございました!