UnityにGoogle3Dのモデルをインポートして衝突判定をつける話。

先日OculusRiftが届きまして、早速Mikulusとか進撃の巨人風の立体機動装置体験ソフトで遊んだりしてました。
そして一年前に少し触ったことがあったUnityで何か作ろうかなと思ってちまちまやっていた次第です。
今回はUnityにGoogle3Dの無数にあるモデルをインポートしてメッシュにに衝突判定を判定をつけるという話をしたいと思います。

やっぱり建物をTerrainに置くときはAssetStoreにあるモデルを使うのが普通なのかなと思います。
でも

高い!

ということでGoogle3Dのモデルを使おうというのが今回の話です。
MMDでもお世話になったし、Unityでも使えたら便利だなぁと思ったらできるっぽいので)

用意するもの
・Unity(今回はUnity4を使っています。)
・Google3Dから落としてきたモデル
・AutoDesk FBX Converter(ここからダウンロードできます。PluginではなくConverter本体を落としてください。
今回私が使うのはFBX 2013.3 Converter for Windows 64-bitです。)
(今回はWindows7 64bitを前提に話をします。)


Unityはあらかじめ開いておきましょう。
次にGoogle3Dからモデルを落としてきましょう。
手頃なホワイトハウスがあったので例として今回はそれを用います。
URL:http://sketchup.google.com/3dwarehouse/details?mid=270dac48b7b602e0ab9b7ce77d5e846e&prevstart=24

画像右下の「モデルをダウンロードボタン」をクリックすると画像のように選択肢が出ると思います。

このうちCollada(.zip)というものを選んで下さい。

DLして解凍しましょう。

そうすると解凍したフォルダのなかにmodelというフォルダがあり
その中にwarehouse_model.daeというファイルがあると思います。

そちらは一旦置いておきまして次はFBXConverterを起動します。

そのうち左側のSource filesの中に先ほどのwarehouse_model.daeドラッグアンドドロップして、ファイルを追加します

右側のDestination filesの下の方に
Destination format
Destination file options
があると思うので
Destionation formatをFBX2013にして、
Destion file optionsのEmbed mediaをチェックします。
そしてその下のConvertボタンをクリックします。

特にファイルパスをいじってなければ先ほどのwarehouse_model.daeと同じフォルダにwarehouse_model.fbxが追加されているはずです。
あとはこれをUnityに追加します。


そうすると

こんなかんじで追加されました。
しかしこのままだと衝突判定がなくすり抜けてしまうので衝突判定を追加します。

あと何をするかというとmeshにmesh colliderを追加するだけです。


mesh51-56がありますが、54が外壁のメッシュ(?)っぽいです。
そこにComponent->Physics->Mesh Colliderをクリックしてmesh54にMesh Colliderを追加します。

これで外壁には衝突判定がつきました。


完全に衝突判定つけるならそれぞれのmeshにMeshColliderをつけないといけないっぽいです。
全体にMeshCollider一括して付けられないのかな。
やり方知ってる人いたら教えて下さい。