【CG】UE4上でSpeed Level Designして造った建物をCities: Skylinesにインポートする【ゲーム】
先日、籠目の建物を造りました。いろいろとコメントありがとうございます。これの元ネタが現実に存在しているというのも興味深いですね。
さてこの建物、内部は全然いじらなかったので外観しか楽しむ余地がないのですがそれはビジュアライゼーションではなくて、実は今回のために造ったからです。都市開発シミュレーションゲーム;Cities: Skylines(シティーズ・スカイライン)に取り込みたい!
ところでこの手順はググれば沢山出ますが他のサイトとどこが違うかというと作業のスタート地点がUE4エディタだという点です。まあこういう人はまずいないと思いますけどね。
Cities: Skylines側のインポート要件の一部は、ファイルはFBX形式で、UVマップが最低1枚があればとりあえずOKとのことですから、モデリング経験者でしたらなんの問題もなく作業できると思います。なおポリゴン数の上限は15,000です。
2019.8.18 動画アップしました
やってみよう
おおよそCities:Skylines攻略情報wiki様サイトのアセット自作1のページを参考にさせてもらいました。
今回もモデラはBlenderを使います。
UE4エディタからメッシュをエクスポート
UE4エディタで前回作った籠目の建物プロジェクトを開きます。エディタ内では部材がバラバラなので1つにマージする必要があります。
※手順の概要ですが、
建物に関連するオブジェクトを全部選択→1つのスタティックメッシュ化→FBXエクスポート→BlenderにFBXをインポート
…なのですが、いっぺんにエクスポートするとなぜかBlender上でマテリアルがごちゃ混ぜになり修復作業が大変だったので、以下の手順でやります。
メッシュはマテリアル単位でスタティックメッシュ化
今回は同じマテリアルのメッシュを選択して、スタティックメッシュ化します。コンクリートとフローリングは複数種類マテリアルですがバグらなかったので一緒にエクスポートしました。
複数選択した状態で右クリック→[スタティックメッシュ化]を選択。
するとコンテンツブラウザの保存指示をしたフォルダにスタティックメッシュが出来ています。これをマテリアル種類の分だけ繰り返します。
コンテンツブラウザからスタティックメッシュを選択し右クリック→[アセットアクション]→[エクスポート]します。
ちなみに複数選択するメッシュと、エクスポート時のファイル名は以下の組み合わせにしました。
マテリアル | 選択するメッシュ | ファイル名 |
木材 | 外装 | Hexagonal1.fbx |
ガラス | 窓 | Hexagonal2.fbx |
コンクリート、フローリング | 柱、床、天井 | Hexagonal3.fbx |
鉄 | スロープ、吊り | Hexagonal4.fbx |
Citiesインポート用にBlenderで調整
単位は、メートル単位を前提に話を進めます。
Blenderを開いて4つのFBXファイルをインポートします。
それぞれ座標がずれていると思うので位置を正します。
主に行う作業は以下の3つです。
1.ポリゴン数の削減
2.メッシュを1つに統合
2.UVマップを作成
3.Cities向けに調整
3.FBXファイルのエクスポート
面をすべて三角面に変換
インポートが終わった時点で(モデリングがほぼ終わったら)、面を三角面にしておきます。四角面が残っているとUV展開のときに失敗したりします。
[編集モード]で面を全部選択した状態で[メッシュ]→[面]→[面を三角化](Ctrl+T)を選択すればOK。
1.ポリゴン数の削減
最初に書いたとおり、Citiesでポリゴン数が15,000までと制限があります。今のモデルだと3万以上なので全然だめです。半分以下にしないと。
[プロパティ]画面の[ツール](スパナのアイコン)を開き[追加]ボタンを押し、[生成]にある[ポリゴン数の削減]を選択。とにかく15,000未満になるまで数字を調整しましょう。意外と見た目は変わりません。
また他の方法で、「見えていない面を削除する」みたいなコマンドもあったはずなので、それをまずやるのが最有力だと思います。どこからやるか忘れましたが…
2.メッシュを1つに統合
UV展開をしてUVマップを作るにあたりメッシュを統合します。
いったんこの時点で.blenderファイルは別名で保存しておくのがよいと思います。結構手戻りは発生します。
右上のアウトライナーから出力するメッシュを全部選択して、[オブジェクト]→[統合](Ctrl+J)をすると1つにできます。
2.UVマップの作成
[プロパティ]画面の[データ]を開き、[UVマップ]で[+]ボタンを押すと新しいマップを作成できます。名前を[UVCities]としました。
ちょっとわかりにくいですが、
・レンダリング対象(カメラアイコン)は[UVMap]
・選択するのは[UVCities]、
の状態にします。これ間違えないようにします。(私は当初この違いを知らず詰みかけた…)
[UV Editing]画面を開き、新しい画像を作成します。
画面下の[+]ボタンを押すと追加されます。名前を[CitiesImg]としました。サイズはデフォルトのまま1024x1024pxでよいかと。どうせCitiesで圧縮されますので。
次に新しい画像にすべての面を割り当てます。
[編集モード]に移行すると[CitiesImg]ではない画像が選択されてしまうので、改めて[CitiesImg]を選択します。
全ての面を選択した状態で、[メッシュ]→[UV展開]→[スマートUV投影]を選択します。
この状態でベイクしましょう。
[プロパティ]画面の[レンダー](カメラアイコン)を選択し、[ベイクモード]は[テクスチャ]を選択します。
[ベイク]ボタンを押すとベイクが始まります。[CitiesImg]に展開図みたいなものがでてきます。これがUVマップです。
画像は別途保存しましょう。UV Editing画面の下の方にある[画像]→[画像を別名保存](F3)を選択して、画像を出力します。ファイル名はHexagonal_d.pngとしました。
4.Cities向けに調整
いくつか調整をしましょう。
●原点を決める
好きな場所で構いませんが、殆どの場合は底面の中心を指示すればOKです。
私の場合は最初から(X,Y,Z)=(0,0,0)の位置を原点だとしてモデリングしているので、[オブジェクトモード]にして[3Dカーソル]のXYZ座標を(0,0,0)と入力して、画面の下のオブジェクト→トランスフォーム→[原点を3Dカーソルへ移動]を選択すると、ピボットが(0,0,0)に移動します。
●移動、回転、拡大の確定
これを忘れるとCities上でスケールが合わなくなります。
オブジェクトモードで、[オブジェクト]→[適用]→[位置]と[回転]と[拡大縮小]の3回を実行します。
トランスフォームの部分の位置が全部ゼロで、回転もゼロ、拡大縮小が1になったと思います。
応用としては、わざと建物前方に原点を寄せておくと、Citiesのエディタで前方に敷地を広く確保したプランニングが可能になります。
●不要なUVマップを削除
最後にやったほうがいいと思います。
ベイクがすべて完了したら、元々あった[UVMap]を削除します。[CitiesMap]だけ残します。
5.FBXファイルのエクスポート
最後にFBXファイルのエクスポートをします。
オブジェクトモードにして、出力するメッシュを選択しておきます。
メニュの[ファイル]→[エクスポート]→[FBX]を選択します。
以下のチェックを間違えないようにしてください。
ファイル名はHexagonal.fbxとしました。
メイン
トランスフォームの適用 : ON
前方 : -Zが前方
上 : Yが上
ジオメトリ
モディファイアーを適用 : ON
アーマチュア
リーフボーン追加 : OFF
よし! これで3Dモデルの準備ができました。わくわくします。
2 thoughts on “【CG】UE4上でSpeed Level Designして造った建物をCities: Skylinesにインポートする【ゲーム】”