見出し画像

VRoidアバターをclusterで使うときにUnityをちょっとだけ使って画質をちょっとだけ上げる(実践編)

2022年1月6日、clusterで、キャラクターアップロードの制限開放が行われました。
流石に無制限というわけではないようですが、VRoidで作ったアバターであれば、マテリアルの削減などの軽量化措置をしなくても、大抵は問題なく、しかもそれなりのクオリティで表示されるアバターをアップロード可能です。

前回執筆時点では制限開放前だったので、旧制限内で出来るだけ簡単に画質アップさせる記事を書こうと思っていましたが、本記事は、VRoid Studioアバターを現在の仕様上で出来るだけ高画質にする方法をご紹介します。
特に、レースや網目状、柄が細かいテクスチャは潰れがちなので、効果絶大です。

逆に、シンプルなデザインの服は効果がわかりにくいですね。

現在は、VRoidのマテリアル削減機能はアバターが軽くなる以外の利点がありません。

前回の記事の続きですが、特に読まなくても問題ありません。

VRoid Studio上での操作

正式版での操作を前提にしていますが、旧版でも考え方はあまり変わりません。

スクリーンショット 2022-01-08 20.48.22

※検証用の1pxストライプ柄衣装。モアレが出てるということは、ストライプが潰れず元のテクスチャがしっかり出ていることを示しています。

基本的に何も考えずにデフォルト設定で出力しても大丈夫です。
ただ、髪やアクセサリや重ね着が多いと、後述のテクスチャ圧縮の使用上、「どのテクスチャの画質を優先してどのテクスチャの画質を下げるか」みたいな選択が多くなります。

ポリゴン数もボーン数もあまり気にする必要はなくなりましたが、ポリゴン数が多すぎるとカリング(ポリゴンの削減)されてしまうようなので、以前の制限である3万ポリゴンを目安にすると良いでしょう。

clusterの自動カリングは性能がかなり良さそうなので、極端に多くなければあまり気にしなくてもいいかもしれませんね。

画像2

この状態でclusterにアップロードすると、こんな感じになります。
2048pxの体テクスチャは問題ありませんが、2048pxの服、1024pxのスカートのテクスチャが潰れてしまっています。

Unityでの操作

前提として、Unityと、UniVRMが入ったプロジェクトが必要です。

↑UnityとUniVRMのインストールはこのあたりを読んで下さい。

スクリーンショット 2022-01-08 21.32.17

VRoidから出力したアバターをUnityで読み込みます。

・Unityのレイアウトが違っても各ウィンドウ名があってれば問題ありません。私のUnity、見た目が解説サイトと違うんだけど!?ってはじめの頃は思ってました。
・上の画像では直接vrmを放り込んでますが、Assetsフォルダにアバターごとにフォルダを作ってそこにvrmをいれたほうが管理しやすいです。

スクリーンショット 2022-01-08 21.46.50

Assetsに生成された「アバター名.Textures」フォルダを開きます。

スクリーンショット 2022-01-08 21.50.25

すると、アバターに使用されているテクスチャが表示されます。

スクリーンショット 2022-01-08 21.53.45

試しに、体っぽいテクスチャをクリックして選択してみましょう。
Inspector欄にテクスチャの情報が表示されます。
下のほう、Defaultタブを見ると、Max Sizeというのがあります。
ここは、各テクスチャの最大解像度(px)を指定することができます。
変更後、1枚ごとに、Applyで確定です。
尚、ここで変更しても、Unityに入れたテクスチャ自体は変わらず、VRMで出力する時に適用されます。
また、その少し下のCompressionはテクスチャ縮小時のクオリティを指定できます。High Qualityにすると気持ち画質が良くなります。
右下のサムネ表示みたいな箇所の左下に2048x2048とありますが、これが現在のテクスチャサイズです。MAX SIZEを変更するとこちらも変わります。

というわけで、テクスチャの大きさを変えられるようになりました。

テクスチャのサイズをいい感じに調整する

ここで、clusterのテクスチャ圧縮の仕様をおさらいしましょう。

2048px:2枚
1024px:2枚
512px:10枚?
256px以下:?
この制限よりテクスチャ枚数が超えてしまうと、cluster側で自動的にテクスチャが圧縮され、元のサイズよりも小さいサイズになってしまいます。

制限解除前のマテリアル数制限があった時の検証なので、512pxのテクスチャの枚数はもっと多くしても大丈夫な気がします。(要検証)

とりあえず、私は512pxのテクスチャは12枚くらいまでにしています。
また、256px以下のテクスチャは比較的緩そうだったので、必要性が低いテクスチャは256pxにしたりしています。もしテクスチャ圧縮が発生する場合は、微調整が必要ですね。

Applyを押した瞬間にSceneのアバターの描画が変更されるので、様子を見ながら変更していくのがいいと思います。

右クリックを押しながらマウスを動かして視点移動、右クリックを押しながらQWEASDキーで移動、マウスホイールで前後移動が出来ます。
慣れましょう。

ということを踏まえて、テクスチャ解像度を変更していきましょう。
コツとしては、

・レースや網目状等の細かい描き込みがあるテクスチャは最優先で大きめの解像度にする
・実際の表示面積が大きいものはなるべく大きめの解像度にする(服や体など)、逆に小さいものは小さめの解像度にする(顔や靴など)
・グラデーションが主のテクスチャは解像度を小さくしても目立たない
・メインではないテクスチャ(髪のハイライトやMatCap等)は256pxにしても目立たない、必要ない場合は削除(選択してDelete)

例としてサンプルアバターのテクスチャをどうやって変えていったのかを書いてみました。

スクリーンショット 2022-01-08 22.55.32

2048が2枚、1024が1枚、512が9枚、256が5枚になりました。
1024の枠が1枚空いているので、アクセサリーやEmissionテクスチャを追加してもいいですね。

NormalMap・・・凹凸の情報を示した画像。ポリゴンが平面でも立体感が出る。
MatCap・・・光の当たり具合の情報を示した画像。
どちらもより精巧なアバターには重要なデータではありますが、テクスチャの解像度を削ってまで設定しなくてもいいような気がします。

さて、ここまで出来たら、アバターを出力しましょう。

スクリーンショット 2022-01-09 00.19.02

スクリーンショット 2022-01-09 00.23.18

出力したVRMをclusterにアップロードします。

cluster上での比較

まずこちらが、VRoidから直接出力したアバター。

画像10

画像11

画像12

前述の通り、体テクスチャ意外は潰れてしまっています。

画像15

画像13

画像14

画像16

モアレで分かりづらいですが、しっかりとストライプ模様になっています。

画像17

画像18

参考までに私のアバター。レースや文字、星座もくっきり。

Unity触りたくないんだけど

Unityを使わなくても上記のようなツールでテクスチャを抜き出し、ペイントソフトで加工してインポートしても同じことが出来ます。
ただ、NormalMapやMatCapの削除などは出来ません。

終わりに

正直全部のアバターにこれするのは面倒なので、描き込みが多い服を着るときはやろうかと思っています。
VRoid直出しでもそこそこ見栄えするアバターが出来ますが、より綺麗なアバターを目指している方にはおすすめです。