Blender で街並みをつくる マッピング・再モデリング編

テクスチャマッピング編です。
前回の記事で「テクスチャアトラスを..」という予告をしましたが、原稿を書いている間に、テクスチャづくりの良い方法を思いついてしまいました。
よって、テクスチャアトラスは概要のみの説明にとどめ、テクスチャアトラスを使わないマッピング方法を説明します。

Unity メッシュ描画とマテリアル(テクスチャ) の関係

Unity では 3Dモデル(メッシュ) を描画する際、割り当てられているマテリアル単位で描画されます。
そのため、モデルを別々に複数配置していても、そのモデルがおなじマテリアルを参照していると、Unity による最適化によってモデルが同時に描画されます。
モデルが同時に描画されるということは、描画処理を呼び出す(set pass call) オーバーヘッドが減ることにつながりますので、描画負荷の軽減につながります。

Unity 公式サイト:
https://docs.unity3d.com/ja/2019.3/Manual/DrawCallBatching.html

そこで事前にテクスチャアトラスを手動で作成して、それをマッピングするワークフローを今回紹介しようとしたのですが、アトラス化作業は単純作業なので自動化できることに気が付きました。たとえば下記の記事が該当します。

自動化する作業をここで紹介してもあまり有意義ではないので、今回はマッピングとメッシュの整形だけ紹介することにします。

遊び屋Books さんの記事:
https://booth.pm/ja/items/1430024

Unity Asset Store, Super Combiner:
https://assetstore.unity.com/packages/tools/modeling/super-combiner-92129

おもちゃラボ さんの記事:

Blender でマッピング

やっと Blender に戻ってきました。
モデルに貼り付ける画像を用意します。(作り方は前回記事を参照)
下の画像は、建物の側面と正面がくっついたものです。

Blender でマッピング作業を行う前に、テクスチャ画像の配置場所は下記のようにしておきます。
このフォルダ構成は Unity 環境と合わせてあります。こうすることで、最終的に建物を Unity にインポートするときに、テクスチャ画像・マテリアルが自動的に Mesh に割り当てられるので便利です。

  • ./
    • Models/
      • (建物モデル).blend : Blender モデルファイル
    • Textures/
      • (texture).png : テクスチャ画像

Blender でマテリアルを新規作成し、この画像を割り当てます。
この時点では UV 位置がデフォルトのままなので、画像がおかしな位置に貼られています。

もし、モデルにテクスチャ画像が反映されず真っ白のままの場合、画面右上のビュー設定で「ルック開発モード」に切り替えてみてください。

テクスチャの UV 位置を調整

各オブジェクトのテクスチャ UV 位置を調整していきます。
おすすめは下図のような UV Editing : 2 画面モードです。
プレビューしながら UV 位置調整ができます。
プレビュー画面をみながら、建物の正面と側面の画像をそれぞれ割り当てていきます。
今回の肝は凹凸モデリングですので、UV マッピングは割愛します。

凹凸をつける

ここが今回の記事の肝です。
モデリングの前にテクスチャマッピングを終えたのは、建物の凹凸をテクスチャ画像に沿ってつけていくためです。

プロフェッショナルなモデリング作業ならば、建物の凹凸位置を緻密に合わせていくわけですが、シミュレータでは町の雰囲気を作り出せればよいので、撮影した写真にそって凹凸をアバウトにつけていく方針です。
(写真の撮影角度によるずれを気にしない!)

ということで、前項でのテクスチャマッピングを終えたら、正面ビューで建物の凹凸を付けたい部分にナイフを入れていきます。 この場合、下図のような青線です。

ナイフでカットしたら、あとは「押し出し」で凹凸面を前後にずらします。
これだけです。

このようにテクスチャマッピングをしてからモデルの形をつくっていくことで、面ごとにテクスチャ位置を微調整する手間を省けます。

透過カットで建物を削り取る

Blender の Knife カットツールには「透過カット」というモードがあります。
カットの始点をマウス選択して確定させた後、Z キーを押すと透過カットの OFF / ON を設定できます。
現在、透過カットが OFF か ON かは、小さくて見づらいのですが、画面の下に小さく表示されています。

透過カット OFF / ON の違いを下図に示します。
選択した面 (たとえば建物の正面) を形作るときは透過カット OFF で、建物全体の形を削り取るときは透過カット ON が便利です。

この透過カットを使って、建物の上部分を削り取ると下図のようになります。
シミュレータでは建物を上から見下ろすことはないので、削り取ったままでも問題ないのですが、将来的にバードビューを実装することを想定し、面を張っておきます。

面を張る

面張り作業を行うときは「ビューポート オーバーレイ設定」で「面の向き」にチェックをつけるとわかりやすいです。
面の向きを有効にすると、表向きになっているのが青で、裏向きになっているのが赤で表示されます。
Unity にこのモデルを配置したとき、赤の面は表示されず、青の面だけが表示されます。

面張りは、張りたい場所の頂点を選択して F キーを押します。

地面の削除

モデリングとマッピングが終了したら、区画のベース地面と、建物の底面を削除します。
こうすることで、Unity での描画メッシュ数と描画負荷を少しでも減らす作戦です。なんなら背面も削除してしまってよいと思いますが、バードビューに備えて残しておきます。

.fbx エクスポート

つくった建物を Unity に配置するために .fbx ファイルをエクスポートします。 Blender では標準で .fbx エクスポートしてくれるので本当に有り難いです。
Unity 向けのエクスポート設定は下図のとおりです。
※「!実験的…」のチェックボックスが重要です。

.fbx のエクスポート先は、Models フォルダ内にします。

  • ./
    • Models/
      • (建物モデル).blend : Blender モデルファイル
      • (建物モデル).fbx : エクスポートしたファイル
    • Textures/
      • (texture).png : テクスチャ画像

おすすめプロセス

建物 1 軒のテクスチャを作成→ 1 軒をマッピング→ 1 軒のテクスチャを作成→... とやるのは効率的ではないので、 工程ごとにその区画のデータを一気に作り上げることです。

悪い例)
建物 A のテクスチャを作成 → 建物 A のマッピング → (下段に続く)
→ 建物 B のテクスチャを作成 → 建物 B のマッピング → (下段に続く)
→ 建物 C のテクスチャを作成 → 建物 C のマッピング → …

良い例)
10 軒の建物のテクスチャを作成 → 10 軒の建物のマッピング

次回は Unity 配置編

次回は、ここまでに作った建物を Unity 内で配置します。

いやぁ、今回の記事は途中で方針を変えたこともあり難産でしたわぁ。

スポンサーリンク

Twitterでフォローしよう