Vroid産VRCアバターをquest対応する:序章

そろそろquest対応まじめに考えなきゃね!と思い立って、調べたことをまとめてみました。
序章では、基礎知識をまとめておきます。

次の初級編で、VroidアバターをUnityのみでquest対応する方法。
次の上級編で、blenderを使ってVroidアバターをquest対応する方法。
の予定です。

追記:初級編書きました

tomo-shi-vi.hateblo.jp

quest用のアバターとはなんぞや

Vroidに限らず、quest対応アバターとは、の話です。
これは私もよくわかんなくて、教えてもらったりしたことをまとめなおしてみました。

VRCにおいて、PC専用のアバターはquestだとロボで表示されます。
quest用に調整したアバターをquest用にアップロードすることで、表示可能になります。

f:id:tomo_shi_vi:20191012220734p:plain

一つのデータで両方から正常に見える必要はなく、quest用、PC用それぞれに調整したアバターを、同じIDでアップロードすることで、両対応ができます。
重いエフェクト付きのPC用と、軽量化したquest、みたいな分け方が一般的でしょうか。
極端な話をすれば、PC用に幽狐さん、quest用はこんちゃん・・・など、完全に別のアバターでもOKということになります。
可愛いアバターですね!みたいな会話がめちゃくちゃかみ合わなくなるので、あまりお勧めはしません。

Vroid勢のquest対応に立ちふさがる壁

対応って何なのアップロードするだけやんけーーとなるところなのですが、対応せずにそのままアップロードするとこうなります。

f:id:tomo_shi_vi:20191013122612p:plain

Vroidの仕様的に大きな問題点があるのです。

シェーダーが透過できない

Vroidのまゆげ、まつ毛、アイライン。
結構自由に描けます。

f:id:tomo_shi_vi:20191012222524p:plain

これは、眉毛の形をしたメッシュを作るのではなく、四角いメッシュを置いて、そこに眉のテクスチャをペターっとおいているからです。

f:id:tomo_shi_vi:20191012222620p:plain

おかげでサンジみたいなぐるぐる眉毛とかも作れちゃうのですが、これはテクスチャの透過描画ができることが前提です。
顔だけでなく、服も不要な部分を透明にすることで、元とは違う形状に見せたりする手法が一般的です。

Mtoon,ユニティちゃんトゥーンシェーダー(UTS)、arkToonシェーダーなどをよく聞くかと思いますが、questだと全部使えません。
VRChat側が用意したシェーダー数種類の中から用途に応じて選ぶことになります。
数種類あるにはありますが、アバター用と考えると、実質2、3択です。
全部、透過表示がなく、裏面描画ができません。
どういうことになるかというと

f:id:tomo_shi_vi:20191012222907p:plain

透過がないので、透明にしていたところは黒くなる

f:id:tomo_shi_vi:20191012222921p:plain

裏面描画がないのでスカートは中から見ると透ける

ポリゴン数が根本的に多い

quest用アバターでは5000ポリゴン以下が推奨されています。
Vroidは髪も服もない素体の状態で、10000以上あります。
工夫ではどうにもならない壁が、そこに・・・・
ただ、ポリゴン数が多くてもVeryPoor判定にはなりますが、アップロードは可能です。
ロボで見えないよりは、重くても見たいという人もいっぱいいます。
(見るか見ないかは、questの人の側で個人別に設定が可能です)

マテリアル数が根本的に多い

quest用アバターではマテリアルは1個が推奨されています。
一方、Vroidではカスタマイズがしやすいように、テクスチャが細かく分けられています。
1テクスチャ1マテリアルなので、テクスチャの数だけマテリアルが生まれます。
服も髪もない状態で、10以上あります。
ただ、こちらもVeryPoorにはなりますが、マテリアルが多くてもアップロードは可能なのです。

Vroidとquest対応

Vroid勢がquest対応をしようとしたとき、方法は4つあります。

その1:quest対応のアバターを買ってきてアップロードする

いまの見た目と関係なく、Vroid産のPC用アバターと同じIDで、quest用の別アバター(ロポリこんちゃんとか)をアップロードして両対応にしてしまう方法です。
questとPCで別のアバターが見えることになるので、身長の違いとか、見えている姿が違うことで会話がかみ合わなかったりとか、いろいろ困ることはあると思います。
色合いとかを近い感じに改変をすることはできるかなと思います。

その2:quest用として箱ロボ先生を作成する

bbbbbhimiko.booth.pm

この発想はなかったな、と感動したやつです。
スクリーンショットを張り付けた箱型のアバターを作成して、quest用としてアップロードします。
スクショがあることで、アバターの見た目と最低限の個性は伝わる。
人型なので動きも伝わるし、フルトラでも動いてました。Vroidはできないのに。すごい。

その3:Unityのみでできる簡易対応をする

VeryPoorほぼ確定ですが、Unityだけでとりあえずquest対応アバターとしてアップロードすることはできます。

その4:blenderと向き合ってがんばって対応をする

questの仕様に合わせて、まじめに修正をします。
作業はたいへんですが、頑張ればmediumも現実的なラインです。