はじめに
こんにちは。今日はVRoid StudioでVRChatのQuest用アバター作りに挑戦したのでその話をします。
- 2024/8/15時点の情報となるため、最新版と異なる可能性があるのに注意してください。
- 例で示しているアバターは、VRoid Studioのサンプルアバター、私が制作したアバターの2種類のアバターを使用しています。
- VRoid Studio以外に、MetasequoiaとInkscapeが出てきますがなくてもたぶんできます。
制限について
VRChatのQuest用アバターは制限が大きいです。パフォーマンスランキングシステムに詳細が記載してあり、以下抜粋します。
PC用のアバターのパフォーマンス
以下はPC用のパフォーマンスランクです。Poorを超えるとVery Poorとなります。
Avatar Quality | Excellent | Good | Medium | Poor |
Polygons | 32,000 | 70,000 | 70,000 | 70,000 |
Texture Memory | 40 MB | 75 MB | 110 MB | 150 MB |
Skinned Meshes | 1 | 2 | 8 | 16 |
Basic Meshes | 4 | 8 | 16 | 24 |
Material Slots | 4 | 8 | 16 | 32 |
PhysBones Components | 4 | 8 | 16 | 32 |
PhysBones Affected Transforms | 16 | 64 | 128 | 256 |
PhysBones Colliders | 4 | 8 | 16 | 32 |
PhysBones Collision Check Count | 32 | 128 | 256 | 512 |
Animators | 1 | 4 | 16 | 32 |
ボーン数 | 75 | 150 | 256 | 400 |
Quest用のアバターのパフォーマンス
そしてこちらが、Quest用のパフォーマンランクです。さらに厳しくなっています。Poorを満たさないとVery Poorになりますが、Very Poorがある時点でPC版と変わらないことから削除される可能性があります。またそもそも2万ポリゴンを超えたアバター(Very Poor)はQuestではデフォルトで非表示になることから、これより小さくする必要があります。
Avatar Quality | Excellent | Good | Medium | Poor |
Polygons | 7,500 | 10,000 | 15,000 | 20,000 |
Texture Memory | 10 MB | 18 MB | 25 MB | 40 MB |
Skinned Meshes | 1 | 1 | 2 | 2 |
Basic Meshes | 1 | 1 | 2 | 2 |
Material Slots | 1 | 1 | 2 | 4 |
PhysBones Components | 0 | 4 | 6 | 8 |
PhysBones Affected Transforms | 0 | 16 | 32 | 64 |
PhysBones Colliders | 0 | 4 | 8 | 16 |
PhysBones Collision Check Count | 0 | 16 | 32 | 64 |
Animators | 1 | 1 | 1 | 2 |
ボーン数 | 75 | 90 | 150 | 150 |
Quest用アバターの作成
今回、VRoid Studioで作成するアバターのコツを紹介します。以下はコツで後ほど1つずつ紹介します。
- ボーンを削除して必要なボーンに絞る
- 最適化機能向けにアバターを修正する
- Alphaモード未使用を意識したテクスチャにする
- 最適化機能をフル活用して出力する
- VRChat Creator Companionでアップロードする
ボーンを削除して必要なボーンに絞る
最適化でボーンは削除できますが、ボーンはPoor基準で8つまでと条件が厳しいため手動で不要なボーンは抜いておくとよいです。「髪の揺れ方を設定」から「ボーン設定済み」のボーングループを削除します。これを「前髪」「後髪」で不要なボーンを削除しておきましょう。
一応、ここで削除しなくてもUnity上からでもオフにできるのですが、毎回オフにするのも大変なので好みで削除していました。
最適化機能向けにアバターを修正する
VRoid Studioで出力する際に最適化機能を使用しますが、その最適化機能を適した最適化をしておきます。何を言っているか分からないと思うので説明します。
靴
例えば、通常のポリゴン数だと以下のように表示されます。
ここで体と衣装の最適化機能をマックスに上げると次のように体が衣装を突き抜けてしまいます。これを防ぐために体のテクスチャで足あたりは消しゴムで非表示にしておくと最適化後に不自然になりません。
ズボン
ズボン部分も同様の現象が起きます。最適化前は問題ないのですが、
最適化後は体が見えてしまう場合があります。この場合はテクスチャの編集が必要です。このパターン以外にも下の服が上の服を突き破る場合も考えられるので、各パーツの干渉を意識したテクスチャの編集が必要です。
Alphaモード未使用を意識したテクスチャにする
これが難易度が高いのですが、Questの場合はテクスチャが全て不透明になります。これを解決していきます。
顔
顔のテクスチャが非常に大変です。以下は顔のテクスチャをポリゴン表示したものです。緑の線の部分を見ると分かる通り、透明度を持つテクスチャがあることが分かります。
- 眉毛
- 下まつ毛
- 下まつ毛
- 目
- ハイライト
この顔のパーツのポリゴンはシェイプに設定されているため、シェイプ設定後のポリゴンの削除・変更が難しく、他の方法で解決していく必要があります。これの解決策を紹介しています。
眉毛
眉毛のポリゴンは正確に作ることは難易度が高いため、眉毛は顔のテクスチャに埋め込みます。もともとVroid Studioを肌設定を使用して、眉毛あたりに印をつけて、眉毛のあたり画像を出力。そのあたり画像の上に眉毛を合成して肌用の眉毛のみテクスチャを作成。これを肌のレイヤーとして上に合成していきます。
目
目とハイライトは全て1つの画像に合成かつ不透明にする必要があります。VRoidStudio上で目とハイライトと不透明の下地を合成する、あるいはinkscape等で背景色を白色にして出力すれば、透過無しの画像を生成できます。
まつ毛
ここはどうしようもないのですが、シンプルにポリゴンに合わせたまつ毛を作るしかありません。まつ毛の色は黒色固定となりますが、ポリゴンの座標を弄るとシェイプキーが壊れるので、もとのポリゴンを生かしたまつ毛の形状にするしか現状ありません。
以下は完成形ですが、おそらくまつ毛はこのような形以外に作れないかもしれません。
衣装
例えば、ズボンの場合はスソがアルファチャンネルを使用して作成されている場合があります。最適化時に「透明メッシュを削除する」を選択しておけば、透明部分が削除されるので事前にポリゴンに沿うようにテクスチャを弄っておくと自然な感じになります。
テクスチャを弄る以外に、直接ポリゴンを弄る方法があります。こちらは顔と違ってシェイプキーが入っていないため、普通にポリゴンを弄って問題ありません。
Metasequoiaを使用している場合は次のように先端処理を行ってアルファチャンネルを使用部分を削ることが出来ます。
- 「ナイフ」で分割点を作成
- 「エッジ」で分割点同士に線を作成
- 「削除」で不要な面を削除
これ以外にも最適化後に尖ったポリゴンが生まれる場合があるため、3Dモデリングソフトなどで編集できると良いです。
最適化機能をフル活用して出力する
最終的にポリゴン数が15000以下になるように調整して出力します。「衣装」は大きくしすぎるとポリゴンが破城するので抑えています。「髪の滑らかさ」は髪の設定のように見えますが、全体にかかっているように見えます。そのため、「髪の滑らかさ」を大きくした後に、ポリゴンの削減を減らしたい部分は少なめに設定が有効かと思われます。
名前 | 内容 | 設定 |
髪の断面形状を変更する | 髪の断面形状を平たくしてポリゴンを減らす | あり |
透明メッシュを削減する | テクスチャで透明度100に設定しているポリゴンを削除する | あり |
髪の滑らかさ | 全体の滑らかさ(髪以外の体や衣装も含む) | 90 |
髪 | 髪のポリゴンの削減度合 | 30 |
顔 | 顔のポリゴンの削減度合 | 100 |
体 | 体のポリゴンの削減度合 | 88 |
衣装 | 衣装のポリゴンの削減度合 | 45 |
マテリアル数 | マテリアル数 | 2 |
テクスチャアトラス解像度 | テクスチャ解像度 | 4096 |
ボーンの削減 | 髪のボーンの削減 | 無し |
この設定で14746ポリゴンになります。
ちなみにこの状態だと、体の一部のポリゴンがとがっている部分が出ているので、3Dモデリングソフトが使えるのであれば微調整するといい感じになります。
VRChat Creator Companionでアップロードする
後はいつも通りのアップロードです。
以下を追加して、いつも通り「VRM Converter for VRChat
」を使用してVRChat用のアバターを作成。そのあとは「VRCQuestTools
」を使用してQuest用のアバターに変換します。詳細な説明は省略します。
- VRM Converter for VRChat (リポジトリ)
- ぽけもり様が作成したVRoid Studio や Metasequoia で出力した VRMファイルをVRChat用のアバターとして読み込む拡張機能
- AssetsからVRMファイルを選択した状態で、メニューバーにある「
VRM0
」から「Duplicate and Convert for VRChat」を選択し、「肩の高さ
」を「0.02
」、「For Quest
」にチェックを入れて変換していきます。
- VRCQuestTools (リポジトリ)
- クロツグミ様が作成したQuest用に最適化する拡張機能。
- メニューバーにある「
Tools
」から「VRCQuestTools
」、「Convert Avatar For Android
」を選択して変換を行っていきます。
アップロードする際はSelect Platform
をAndroid
にしてアップロードします。なお、既存のPC用のアバターを持っている場合は、そのPC用アバターのBlueprint ID
と同一のIDを指定してからアップロードすることで、Quest対応化させることもできます。
PC用アバターがない場合は、そのままSelect Platform
をWindows
にしてアップロードすることで、PC用アバアーとしても使用できるようになります。
おわりに
どうでしょうか。制限が多く作るのが大変ですが、1つでも用意しておくと、軽いアバターやQuestアバター推奨ワールドに気兼ねなく遊びに行けるようになるので、用意しておくのも良いかもしれません。
最後まで読んでいただきありがとうございました。
コメント