*まだ使ってないが、UnityのMeshBakerFreeというアセットを使った方がスマートに統合出来るっぽい。
++説明の下準備:複数のテクスチャを持つメッシュを用意する
平面を二つに分けてそれぞれにテクスチャを設定する。マテリアル名はそれぞれ、m-1,m-2とした
これで、それぞれテクスチャが適用された二つのメッシュが生成された。
なお、テクスチャの設定はshadingから行う
++本題、複数のテクスチャを一つにまとめる
この二つのメッシュを選択して、ctrl+Jで統合する。
メッシュを統合しても、マテリアルは維持され、テクスチャはマテリアルに紐づけられるものであるためテクスチャも維持される。
(ただし、UVマップが違うと片方が消える。なので、統合するメッシュは同じUVマップを使用する必要がある)
(追記:メッシュは統合する必要がないことを確認した。テクスチャとUVマップの共有さえできればいいので、統合せずにメッシュを複数選択してUV展開するだけでいい。作業工程も統合した場合とほぼ同じ。ベイクするとき、対象のメッシュを全て選択しておくことくらい。負荷を考えるならメッシュは可能な限り少なくした方がいいようだが)
統合直後、UVマップは次のようになっている
+を押して新たなUVマップ、BakeUVを作成し、(名前は別に何でもいい)UV展開を行う。スマートUV投影がオススメ,展開したUVマップはuv-3として保存する
shadingに移動し、それぞれのマテリアルノード(m-1,m-2)にuv-3の画像テクスチャを設置する。
(ノードはつなげなくてよい)
ノードの要素はctrl+Cでコピー、ctrl+vでペースト出来る
UVマップを以下のように選択する
カメラはUVMapでオンに、BakeUVを選択する。
この時点で大体はモデルのテクスチャが期待通りに表示されてないと思うが、気にしなくてよい(UVの展開図が統合前と異なるため)。
(BakeUVは統合テクスチャの書き込み先。UVMapはテクスチャの書き込み元となるUVマップ)
レンダリングエンジンをcycle・反復に変更する
下の方にスクロールするとベイク、という項目があるので、次のように設定して(以下の項目はテクスチャをまとめるだけ)、ベイクを押す
ベイクに成功すると、uv-3に統合されたテクスチャが設定される。画像を保存する。
(ベイクに失敗した場合、統合、でベイクするなどベイク方式を変えることでうまくいくことがある)
そして、UVマップをBakeUVに設定した状態で、全ての頂点を割り当てた新たなマテリアルを作成し、マテリアルノードに先ほど作成した統合テクスチャを設定する。古いマテリアルは必要なければ削除してよい。
以上で、テクスチャの統合は終了である
++exportするとテクスチャがおかしくなる場合は不要なUVマップを削除する
++UVマップを分ける理由
UVマップを分けないと、テクスチャがずれる。テクスチャの適用されたメッシュを複数統合して、統合前と同じUVマップに、新たにUV展開すればUVマップ上の頂点の配置が変わるが、テクスチャの画像はそのままなので、テクスチャが期待した通りに適用されなくなる。なので、統合後は新たにUVマップを作成しそこにUV展開する必要がある。
UVマップとは何かについてはこちらを参照
blender UVマップとは何か? - イラスト、モデリング、Unity、VR関連
++その他メモ
・他のメッシュとマテリアルを共有している部分はベイクがうまく出来ないっぽい
++統合せずに別々のメッシュのままベイクする場合の注意
・UVマップの設定は全てのメッシュで行わなければならない。
一度にすべてのメッシュで新規にUVマップを作製する、というのは出来ない。このときUVマップ名は同一にしなければならない
・ベイク時、ベイク対象のメッシュを全て選択しておく必要がある
・複数のオブジェクトでベイクするとき、なぜか指定したテクスチャ(上の例だとuv-3)ではなく、オリジナルの元のテクスチャ(uv-1やuv-2)にベイクしてしまうときがある。こういうとき、理屈が不明だが、一つずつベイクするオブジェクトを増やしていくとうまくいく。