Last Updated 2024.08.27
Blenderでテクスチャーをまとめようとした際の備忘録です。
なお、今回はVRoid StudioからエクスポートしたVRMモデルの、初期設定シェーダーである
[ MToon_unversioned ] を採用した状態でのお話になります。
新しいUVマップの作成
画面右下のプロパティ内、《オブジェクトデータプロパティ》を選択(緑の▽っぽいアイコン)
UVマップ欄の『+』で追加することが出来ます。
今回は服のテクスチャーをまとめようとしているので、解りやすい名前にしました。
※名前横のカメラアイコンは、どのUVマップをレンダリングするかの設定になります。
テクスチャーをひとまとめにするので、そこそこ大きい基盤を新規作成します。
UVマップのワークスペース画面、左上の《画像》→《新規》を選択
今回は2048×2048で作成しましたが、テクスチャーの書き込みが細かい場合や、パーツ数が多い場合は、更に大きいサイズの方が良いです。※容量は大きくなるので、モデルの使用目的に合わせて下さい
自分は透過画像の方がいいので《アルファ》の項目にチェックを入れ
《カラー》→アルファの値を1から0に変更。
これでOKすると、基盤になる透明な画像が作成されます。
あとは通常のUV展開のように、各パーツのUVマップを、画像内に収まるようにまとめていきます。
複数のオブジェクトのUVマップを表示させたい場合
「 編集モード 」でアウトライナー欄
左端の " ・ " を、Ctrl+した状態でクリックすればOKです。
ベイクが出来ない問題
今回はここからが本題。
「Blender テクスチャー まとめ方」で検索すると、追加したUVマップに現在のテクスチャー画像をベイクする方法が紹介されています。
ただ、ノード設定でシェーダーに [MToon_unversioned] を採用している状態(あるいはVRoid Studioからエクスポートした状態から手を加えていないパーツ)のマテリアルは、そのままベイクすることが出来ませんでした。
マテリアルの『ノード構成に一切変更を加えてないパーツ』だと "真っ黒" になります。
ノード構成をあれこれ弄ればいけるっぽいのですが──
正直、この手の作業はペイントソフトの方が慣れているので、VRoidモデルから流用するテクスチャーは、もう外部ソフトで配置、サイズ調整してしまいました。その方が、手間ですけど直感的で早かったんですよ……
方法としては、UVマップワークスペース上の《UV》→《UV配置をエクスポート》で、ひとまとめにした版のUV配置を画像出力し──
そのUVマップに合わせてペイントソフトで透過を駆使して重ねました。

正直、これは参考にならない方法だと思うので、もっとノード構成の理解が深まった際に、改めて挑戦したいと思います。テクスチャー削減のためだけに時間かけるわけにもいかないので……
テクスチャーの再設定
テクスチャーを1枚の画像にまとめたら、各パーツのテクスチャーを再設定していきます。
作業自体は、シェーディングの《画像ノード》に設定してあるテクスチャーを、新しく作った画像に差し替えるだけです。 ※冒頭で作成したUVマップを選択している状態で行って下さい。
▲[ MainTexture ] に繋げてる画像ノードのみ差し替えると、マテリアルビュー以降がピンク表示されてしまうので……
[ ShadeTexture ] の画像も忘れずに差し替えます。
全てのパーツの差し替えが終わり、表示に問題がなければ、古いUVマップは削除します。
※削除しておかないと、出力した際にテクスチャーの表示がおかしくなります
おわりに
テクスチャーをまとめるだけで、想定より時間がかかり、記事も長くなってしまいました。
ただ、これをやっておかないと、VRoid StudioからエクスポートしたVRMモデルは最初に設定されているテクスチャー名が " ただの番号 " なものが含まれているため、解りづらいですし──ひとつのモデルに使用しているテクスチャーの数が多いと、キャラが増えるごとに『ネズミ算式』に増えてしまうため、ある程度の圧縮は必須なんですよね。
ベイクしてまとめる方法は結局『未修』なのですが、今後も引き続き勉強し、なんとか自分がやり易い方法を模索したいと思います。
……VRoid Studioからエクスポートする際にマテリアル削減の項目があるので、この時点で一旦まとめてしまう方が速いかもしれませんね。
これに関しては、次のモデルを作る際に試してみる予定です。
