関連記事
まえおき
以前書いた シャーロちゃんをblenderでいじる時の注意点 記事の続き、マテリアル統合についての記事になります。
Cats Blender Plugin と Material Combiner をインストールしている前提です。
Performance Ranking System 1に対応するため、使用するマテリアル数を少なくしてアバターの最適化・軽量化をしていきます。
また、メッシュオブジェクトについてもまとめていきます2。
実施環境:
| Soft | Version |
|---|---|
| Blender | 2.79b |
| Cats Blender Plugin | 0.13.3 |
| Unity | 2017.4.28f1 |
| VRChat SDK | 2019.07.31 |
| Shaclo | 1.2.2 (shoesモデル) |
以下の作業に入る前に、統合前のデータについてバックアップを残しておく、もしくは git などバージョン管理ツールを使うことを推奨します。
「ぎゃー!?やっちまった!?」率高いので……(個人調べ)
マテリアルの仮統合(手作業)
マテリアル統合には Cats Blender Plugin の Texture Atlas の機能が便利です。
ただしこの機能を直接シャーロちゃんに適用するとおかしくなる3ので、まずは下準備として手作業でマテリアルをまとめておきます。
一度手作業で以下の6つのマテリアルを新規作成してまとめていきます。
このときにテクスチャの割り当ても行います。
| 部位 | 新規マテリアル | 適用するテクスチャ |
|---|---|---|
| 身体(含む包帯) | Mat_Body | Tex_Schalo_Body |
| 顔 | Mat_Face | Tex_Schalo_Face |
| 髪の毛 | Mat_HairFront , Mat_HairBack | Tex_Schalo_Hair |
| 瞳、眉 | Mat_Stensil | Tex_Schalo_Puppli |
| 服、靴、腕輪、ヘアピン | Mat_Costume | Tex_Schalo_Costume |
- 瞳や眉をシェーダーのステンシル機能で前髪の上に描画できるよう、前髪用と後ろ髪用のマテリアル(
Mat_HairFrontとMat_HairBack)に分けています。 - テクスチャについては同梱の
.psdファイルそのままだとファイルサイズが大きすぎるので、
.pngファイルに変換したものを割り当てるようにしたほうがいいです。
マテリアルの仮統合の手順
- オブジェクトを選択
-
編集モードに変更 - 頂点の選択状態を解除(何も選択していない状態にする)
- 統合元マテリアルを選択
-
選択をクリック - 統合先のマテリアル( Mat_Body など )を選択
-
割り当てをクリック
このとき選択状態の頂点が、選択中のマテリアルだけの適用範囲になる(排他的)
つまり元のマテリアルの割り当て範囲が統合先に移譲される -
選択解除をクリックして選択状態が解除されることを確認 - 割り当て範囲がなくなった元マテリアルを
削除(オブジェクトモードでする必要あり)
具体的な対応表:
| オブジェクト | 元マテリアル | 統合先マテリアル |
|---|---|---|
| Body | M_C_face_01 | Mat_Face |
| M_C_pupilL, M_C_pupilR, M_C_kutu | Mat_Stensil | |
| M_C_hair | Mat_HairFront | |
| shaclo_body | すべて | Mat_Body |
| shaclo_boots | すべて | Mat_Costume |
| shaclo_costume | すべて | Mat_Costume |
| shaclo_hair | M_C_hair_01 | Mat_HairFornt |
| M_C_hair_02 | Mat_HairBack | |
| shaclo_hairpin | すべて | Mat_Costume |
| shaclo_udewa | すべて | Mat_Costume |
また、作成済みのマテリアルをオブジェクトに追加したい場合は
マテリアルにテクスチャを割り当て
上記でまとめられたマテリアルにテクスチャを割り当てておきます。
マテリアルのディフューズを白色に設定
Texture Atlas 機能で生成される画像はマテリアルのディフューズに影響されるみたいなので、白色にして影響を受けないようにしておきます。
メッシュ統合
マテリアル統合する前にメッシュを統合しておきます4。
すべて1つにまとめるとおかしくなったので、 Body メッシュ(顔)以外 をまとめます。
-
Body以外のメッシュオブジェクトを選択(Shiftキー押しながらクリック ) - 左
ツールシェルフ ->CATSタブ -
Model Optionsを開く -
Join MeshesのSelectedを実行して選択中のメッシュオブジェクトを統合
マテリアルの統合(最終)
Cats Blender Plugin の Texture Atlas を使って統合します。
左 ツール シェルフ -> CATS タブ から
-
Optimization項目を開く -
Atlasタブを開く Generate Material List- 統合するマテリアルにチェック
今回は Mat_Body 、 Mat_Face 、 Mat_HairBack にチェックしてまとめる -
Save Atlas to..でAtlasを保存 -
combined_material_xxx というようなマテリアルに統合される
- マテリアル数を増減したい場合は手順 3. においてチェックを入れるマテリアルを調整してください。
- マテリアル数は4以下が推奨されています5。
Save Atlas to.. でエラー
Save Atlas to.. でエラーが発生してAtlasが保存できずマテリアル統合もできない場合があります。
この場合、シャーロちゃんの適当なオブジェクト(例えば Body )を選択してから実行すれば大丈夫かもしれません。
Unityでのマテリアル設定
マテリアルを統合した場合は元々のシャーロちゃんのマテリアルをそのまま流用はできません。
よって自分でマテリアルを調整する必要があります。
オリジナルのシャーロちゃんの設定を参考にしながら調整してみてください。
Unity 2017 における FBX のマテリアル設定は次のようになります。
- FBXファイルと同階層に Materials フォルダと Textures フォルダを作成
- Textures フォルダにテクスチャをコピー(上記で生成された combined_material_xxx.png ファイルも含む)
- FBXファイルを選択
-
InspectorからMaterialsタブを開く -
Extract Materialsを実行し、マテリアルを Materials フォルダに展開する - 展開されたマテリアルを、オリジナルを参考にしながら調整する
ユニティちゃんトゥーンシェーダー2.0
ユニティちゃんトゥーンシェーダー2.0(© UTJ/UCL)を使う場合、アウトラインが目の周りや唇にかからないようマスク画像6を作成します。
マスク画像の作成では、combined_material_xxx.png の顔部分をオリジナルの Tex_Shaclo_Face_Outline.png で上書き加工するのが簡単だと思います(顔以外は白で塗りつぶし)。
作成したマスク画像はマテリアルの Outline_Sampler に設定します。
あとがき
マテリアル統合むずかしい。
あまりに長文になるので新しい記事にしました。それでも読みにくいのはゆるして。
アバターの軽量化ができたら VRM 形式への変換やVRChat以外のプラットフォームへの導入がしやすくなるので、この記事が役に立てば幸いです。
参考
- Cats Blender Plugin
- Avatar Performance Ranking System
- VRChatのアバターのマテリアルを解説【統合して1つにします】 | ShinrinMusic.com


