【Blender】テクスチャをまとめてマテリアルを減らす方法【アトラス化】

VR

おはこんにちこんばんわ、うぐいすです。

VRChatでイベントに小物を出す際に、マテリアル数制限がかかるのでマテリアル数を減らすためにBlenderでなんとかまとめられないか調べた備忘録になります。

前も一回やってみたのですがその時もうまくいかなくてめちゃめちゃ時間かかったので
もう忘れまいということで今回書くことにしました。

Blenderアドオンを使います

MATERIAL COMBINER BLENDER ADDONというテクスチャをまとめられるアドオンを使います。

■MATERIAL COMBINER BLENDER ADDON

Avatars - Material Combiner Blender Addon (2.1.1.7)
An addon that allows to get lower draw calls by combining textures without quality loss and avoiding the problem of uv larger 0-1 bounds. If you like...

VRChatやってる方だと知ってる人が多そうですがCats Blender Pluginという3DモデルをVRChat向けに最適化するプラグインとこのプラグインは連携してます。

cats入れている方はoptimizationの所にアドオンがないとinstallみたいな項目が確かでて、
そこから公式サイトに飛んでダウンロード、インストールすることができます。
入れるとこんな感じでcatsのとこから操作できるので多分便利。

ダウンロード方法

公式サイトのINSTALLATIONの一番上の青色のMaterial-combinerをクリック。
そうするとダウンロードが始まります。

インストール方法

Blender開いて編集→Preferences→アドオン→Installをクリック。
Install選ぶとフォルダの選択画面が出てくるので先ほどダウンロードした
Zipをそのまま選んでください。

選ぶと多分灰色の状態で一番上にShortariya’s Material Combinerというのが出てくると思うのでそちらにチェックを入れてください。

それで導入は完了です。

基本の使い方

まずテクスチャをまとめたいオブジェクトを置いておきます。
右側にあるMatConbinerを選択、その後Generate Material Listをクリックします。

そうすると、ウィンドウにマテリアルが追加されます。
マテリアルの横にあるチェックボタンでまとめるのを選びましょう。

選び終わったら下にあるsave Atlas toをクリックします。
フォルダ選ぶ画面が出るので適当なところに保存します。

上手くいくとこんな感じでマテリアルが1個になってテクスチャも綺麗にまとめてくれます。

注意点
・繰り返しテクスチャを使ってる場合うまく統合できないです。
・統合するマテリアルの透過の有無が一致してないとうまく統合できないです。

繰り返しテクスチャ使ってる場合は先にベイクするしかないかなと思います。

テクスチャまとめた後に小さくしたい

テクスチャまとめたら思いのほか大きくなっちゃった。小さくしたいってことあると思います。
ちょっとやってみようと思って、こちらのアドオンの設定のカスタムを使って2048から1024にするテストをしてみました。結果、UVがずれて大変なことになりました。

ということで…何かいい方法ないかなーと考えてたらいい方法を見つけたので書いときます。

かなり有名なアドオンでTexToolsというものがあるのですが
まずそちらが入ってない方は導入してください。

導入方法とか、説明とかはこの方のブログがわかりやすいかと思いますので
参考に貼っておきます。

【Blender】UVレイアウトの編集やテクスチャーベイクに便利な無料アドオン「TexTools」のBlender 2.8対応版が公開! | 3DCGモデル情報局
UVマップの編集や整列、ハイポリからローポリへのノーマルマップベイク等のテクスチャーベイクが非常に行い易くなるBlnderの無料アドオン「TexTools」の2.8対応版を見ていき...

アトラス化したらUV Editingのタブに行ってテクスチャ画像の方を見ます。
先ほど統合したマテリアルを選択してその後TexToolを開きます。

TexToolの上の方、画像の青の部分サイズを変えれて、
自分が変えたいサイズを指定してResizeボタンを押すと大きさが変わります。

大きさが変わったらオレンジの部分のimagesの中のsave asでサイズを変えた画像を
保存しておきましょう。これでリサイズできます。

あ、でもこの方法だったらUnity持ってって普通にサイズ小さくしちゃったほうが簡単かも…って今気づきました…

今回起きたトラブルと対処法

アトラス化しようとすると真っ白になる

この建物をですね。アトラス化しようと思ったんですよ…。

元々は繰り返しテクスチャを使っていたのでベイクしてUVを整えました。ピンク色のマテリアルがありますが、それはテストしてるときにできちゃったやつで関係ないです。

先ほどの基本の使い方のようにボタンをクリックするとですね…

はい!真っ白!!

大爆笑ですよ…なんで真っ白に…ということで調べ始めました。

楽そうな解決策

他に方法があるかもしれませんが今日色々やった結果一番楽そうな解決策は、
一度FBXで出力してそれをインポートすることです

これでばっちりアトラス化できました。結局何が原因かわからないままです。

2021/09/14追記
FBX出力のみでは対応できない事態が多かったので
結局MMDマテリアルにテクスチャを設定してその状態で
テクスチャまとめました

そうするとなぜか白くならないです。

調べたこと

インターフェイスが日本語だとエラー吐くらしい

こちらのアドオンですがどうやらインターフェイスが日本語だとエラーを吐くことがあったみたいです。今日やってみた感じではエラー吐いてなかったですが、もしエラー吐いたら一回設定から英語表示にしてみるといいかもしれません。

もしかして基本のシェーダーが対応シェーダーじゃないのかな

公式の更新履歴を見てみたんですがどうやら基本のプリンシブルBSDFについて対応シェーダーの中にありませんでした。ディフューズBSDFとMMDのマテリアルとVRMのマテリアルについては対応してますと書かれていて一瞬それが原因かなと思ったのですが違います。

さっきの鳥ちゃんとくじらちゃんはプリンシブルBSDFで設定されていますが普通にできていますし、他の解説のブログも見たのですがその人もできてました。

また、私も前回シェーダー変えずに普通に統合はできていたのでそれが原因ではありません。

一応MMDマテリアルのテクスチャの部分にちゃんとテクスチャを設定すると普通に統合することができてました。マジで本当に謎な動き…

何かエラー吐いてたんですけどそれもMMDShaderがどうたらっていってたのでMMDのやつが悪いのかと思って消したりもしてみたんですが関係なかったみたいです。

Unityアセットでのアトラス化やメッシュ統合

お金かけても良い方はMesh Bakerを導入するのが早くて楽かもしれないです。

Mesh Baker | モデリング | Unity Asset Store
Get the Mesh Baker package from Ian Deane and speed up your game development process. Find this & other モデリング options on the Unity Asset Store.


実はMesh Bakerは無料版があります。ただ書き出しとかできないのでイベントには使えません。自分のワールドの軽量化等には全然使えるクオリティなので試してみると軽量化が捗るかも。
テクスチャのアトラス化をMesh Bakerでやったことないのでどれくらい上手くいくのかは未検証です。

MeshBakerのFree以外にも無料でメッシュまとめるのもあるみたいです。
Unity AssetStoreまとめの方がかなり詳しく書いていらっしゃったので参考に貼っておきます。

と言う事で備忘録は終わりとなります。ここまで読んでいただいた方ありがとうございました。
気が向けばまたブログ書くかもしれません。

コメント

タイトルとURLをコピーしました