見出し画像

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

2022年1月5日、clusterで、アバターの描画に関してのアップデートが行われました。
描画設定はもちろんのこと、描画に関しての仕様変更がありました。

この記事は、「clusterでVRoidアバターを取り巻く状況を説明する前提編」と、「VReducer・avatar-reduceを使用しない・できない場合に、Unityをちょっとだけ使って少しでもアバターの表示画質を上げる方法を説明する実践編」に分けて執筆します。

↓後編の実践編書けました。

また、私はある程度はUnityを触れますが、詳しいことはさっぱりわかってません。
なので、曖昧なところや間違っているところがある可能性があります。

我々は雰囲気でUnityを使っている

いままでの仕様

今までのclusterは、通常ワールドではアバターのテクスチャが強制的に512ピクセル(px)以下に変換されます。
※イベントのスタッフについては、いままでは変換されませんでした。
clusterのアバターアップロード制限として、テクスチャ1枚あたりの解像度が2048pxに制限されていますので、テクスチャの最大サイズは2048×2048pxです。
元々のテクスチャが2048pxでも、1枚に服や体や靴や髪などのテクスチャがわんさか詰め込まれていると、それぞれの部位のテクスチャの解像度が非常に小さくなります。
また、マテリアル数の制限(8個まで)もあるので、VRoid Studioでそのまま出力しても、確実にマテリアル数がオーバーします。
VRoid Studioのマテリアル削減機能はあまり性能が良くないので、1枚のテクスチャに10部位くらい詰め込まれています。

画像1

↑VRoidから直接出してアップロードするとこんな感じ。文字が大きいから読めますが、文字が小さいとまず読めません。
そんな状況だったので、VRoidの機能でマテリアル数を削減し上記のような状態で我慢するか、UnityやBlenderに長けた方々は、VRoidでマテリアルを結合せず出力してそれぞれのソフトでどうにかしたり、VReducerというソフトを有志の方が配布しているので、それを使ったりしてアバターを高画質化しています。

あくまで非公式ツールですので、何れのツールも使用は自己責任で。

今後、clusterのアップデートにより、アバターのアップロード制限自体が撤廃されますが、負荷軽減の観点から、無制限に画質の良いアバターがそのまま表示されるとは考えにくいです。
常識的な範囲を逸脱したアバターは、より強い表示制限を受ける可能性があります。
なので、基本的には今の制限ライン前後でアバターを作成するのが良いと思います。

これからの仕様

2022年1月5日から、負荷軽減対策として、アバターが近い/遠い場合それぞれで、アバターのテクスチャをどれくらい圧縮するかの設定が追加されました。
・最高
・高
・中(これ以下はスプリングボーンが動かない)
・低
有志の検証により、それぞれの設定で、それぞれ規定のテクスチャ圧縮がかかることが判明しました。
最高設定でもある程度の圧縮がかかりますので、その仕様を見てみましょう。

この仕様以上のアバターの場合、何らかの規則性に従って、上記仕様以下になるよう、テクスチャが圧縮されます。
ここまで読んで何をどうすればより高画質アバターにできるかわかる方は、これ以上読む必要はありません。

イベントの主催者・スタッフにも同様の制限がかかったので、イベントに関してはむしろ制限が強くなったという側面があります。

↑参考までに、最低設定での場合。

VRoidアバターの状況はどう変わったか

さて、前述の通り、VRoidのマテリアル削減機能はあまり性能が良くありません。

しかし、仕様変更により、最高設定時での画質は上がったはずです。
どうなったか、下の画像を御覧ください。

画像2

肩紐にVROIDって書いてあるんですけど読めませんね・・・

恐らく512pxから1024px、運が良ければ2048pxまで上がったはずですが、あまり画質が良くなったようには見えません。

これは、
・VROIDのマテリアル削減機能で生成されたテクスチャの服や体などの1部位ごとの解像度が低すぎて、512pxから1024px程度に上がった程度ではあまり効果がない
・2048pxのままのテクスチャがあるはずだが、服や体があるテクスチャには適用されていない
ことが原因です。

前者は根本的な問題なので、VReducer等のツールを使えば解決します。
今まで使用していた方はかなりの恩恵を受けられるはずです。
後者の改善、2048pxになるテクスチャを指定出来れば良いのですが、今の所、その方法は見つかっていません。しかし、あらかじめ、テクスチャを調整し制限内に収めておけば、自動テクスチャ圧縮は発生しないはずです。

VReducerを使った上で、後者の方法を実施すればかなり見栄えが良いアバターになるはずです。

↑文字がくっきり!(旧とか新とか言ってるのはclusterの話です)

しかし、VRoid Studio(特に正式版)は、髪の毛のマテリアルやアクセサリを大量につけると、VReducerはもとより、若干改善されたavatar-reduceでもclusterの制限を超えてしまう場合があります。

スクリーンショット 2022-01-05 22.31.22

↑imageとmaterialはともかくprimitiveって何・・・?

こうなったら、UnityのプラグインやBlenderを駆使してどうにかするしか無いですが、私程度の智識では上手く説明も実行もできません。
じゃあ泣く泣くアクセサリを外して、髪のマテリアルを減らして…とやるのもいいですが、

・2048pxのままのテクスチャがあるはずだが、服や体があるテクスチャには適用されていない

こちらに関しては、VRoidのマテリアル削減機能を使った上で、あらかじめ、テクスチャを調整し制限内に収めておけば、自動テクスチャ圧縮は発生しないはずです。

元のテクスチャの画質が悪いのである程度までしか改善できませんが、

画像4

これから、

画像5

文字が読める程度までは改善可能です。

まあUnityは結局使うんですが…

方法は実践編にて。

と、思ってたんですが、

予想よりだいいいいぶ早くアバターの制限がなくなりましたので、マテリアル削減しなくても普通にアバターをアップロード出来るようになりました。

その結果、文字が読める程度どころか、VRoidで何も考えず出力するだけで、各種ツールを使った時と同レベルまで画質を上げることが出来るようになりました。

ただ、そのVRoidアバターをUnityを通すことでよりクオリティアップ出来るのは前述の通りです。
なので、アバターアップロード制限解除を踏まえて、より高クオリティなアバターにする方法を執筆しようと思います。
→しました。

マテリアル数を減らしたほうが表示負荷は減るはずなので、より低負荷なアバターで、より高画質にするのであれば、VReducer等のツールを使うと良いかと思います。

↑実践編