【VRChat】VRCQuestToolsを使って、アバターを「とりあえず」Quest対応させる

## はじめに
・本記事で使用するUnityのバージョンは 2022.3.6f1 です
・ポリゴンの削減や軽量化などについては取り扱いません
・変換後のアバターは基本的にVeryPoorになります
・UnityHubとVCCがインストールされている前提で話を進めます


それでもよければ、ゆっくりしていってね！

## 前置き
最近友人に誘われて、長期休みをきっかけにVRChatを始めました。
私は現在ゲーミングPCを持っていませんので、Oculus Quest2を使ってQuest版でプレイしています。
この記事をお読みの方ならご存じかと思われますが、VRChatのPC版とQuest版では自由度に大きな違いがあります。
しかしながら、偉大なる先人たちの努力により、Quest版のプレイ環境も決して悪いものではありません。

そんな流れに少しでもお力添えをさせて頂くべく、今回はPC用アバターをQuest版に対応させる方法についてお話ししたいと思います。


## Quest対応って何？
まず何故こういった作業が必要なのかについてですが、それを語るにはQuest版のアバターに関する制約について知っておく必要があります

詳しくは[こちら](https://creators.vrchat.com/avatars/avatar-performance-ranking-system)を見ていただくと分かるのですが、Quest版ではアバターランクの基準がPC版と比較して大幅にシビアに設定されており、また利用できるシェーダーなどについても制約が課されています

つまるところQuest対応とは、こういった制限をクリアする行為なわけです

「軽量化が大変」
「ポリゴン削減とかよく分からない」

といった声が聞こえてきそうですが、ご安心を
実は私も分かりません()

なんとなくそういった印象を持たれがちな行為なのですが、実は**VeryPoorでよければ**、そういった作業は必要ありません

有志の方により便利なツールが用意されています
それがこちら、VRCQuestToolsです

https://booth.pm/ja/items/2436054

非常にシンプルな操作でPC用アバターをQuest版に対応させることができるツールになります
では前置きもほどほどに、早速使い方についてお話ししましょう


## VRCQuestToolsの使い方

### 1. プロジェクトを作る
まずはVCCからプロジェクトを作ります。**既にプロジェクトがある場合は飛ばして大丈夫です。**
<img src=https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2016616/97d1d07b-5b0b-38d2-180c-1da214ba0c33.png width=500px>

Avatarsの2022と書いてある方をクリックし、適当な名前を付けてプロジェクトを作ります。
**ただし平仮名や漢字などは使わないでください(写真は悪い例)**
<img src=https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2016616/58a87ca2-758e-aab6-88b0-cba63ad54c63.png width=500px>

そうするとパッケージマネージャー的な画面が出てきますが、あとでUnityPackageから導入するので、ひとまず飛ばしてそのままOpen Projectをクリックします。
<img src=https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2016616/94773fc2-89dc-957a-c2ba-7b3694b0bc07.png width=500px>

しばらく待ってこの画面になったらプロジェクトの作成は完了です。
<img src=https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2016616/bf700ce5-6f06-496c-19c4-7897c354a7fa.png width=500px>

### 2. VRCQuestToolsを導入する
まずは先ほども出したBoothのリンク先から、Unitypackageをダウンロードしてきます。

https://booth.pm/ja/items/2436054

上の500円は書いてある通り投げ銭ですので、下のUnityPackageと書いてある方をダウンロードします。
![スクリーンショット 2024-01-09 173414.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2016616/4a26802a-d0d9-5713-c3fd-658112d69252.png)

zipファイルがダウンロードされたら、拡張子が".unitypackage"のファイルをダブルクリック
![スクリーンショット 2024-01-09 173551.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2016616/ec068be9-7dd6-f17d-4edd-c206bad98230.png)
※VCCを使ってもOK

するとUnityの画面にこんな表示が出てくるので"Import"をクリック
![スクリーンショット 2024-01-09 174325.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2016616/f90673eb-b5b3-c3dc-654e-19002ec6573e.png)

しばらく待った後、こんどはこんな表示が出てくるので"ASTCでテクスチャを圧縮"をクリック
![スクリーンショット 2024-01-09 174513.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2016616/fbfbcf9a-07d3-c0b4-c65d-eb2cc1769d0d.png)

画面上側の"Tools"の項目に、"VRCQuestTools"が表示されていれば導入は成功です。
![スクリーンショット 2024-01-09 174607.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2016616/8ea04c53-5887-d529-0113-ff7d6f60ffa0.png)

### 3. アバターをクエスト対応させる
今回は対応させるアバターとして、リュクらぼ氏作の「フェリス」を使用させていただきます。

https://booth.pm/ja/items/5385176

無料でかわいいのでお得です
アバター説明欄に"Litoon"(シェーダー)と"Avatar Optimalizer"(自動軽量化ツール)が必要である旨が書かれていますので、説明欄のリンクから飛んで導入を行ってください。
VRCQuestToolsと同様、ダウンロードされたzipファイル内の.unitipackageファイルをダブルクリックすることで導入可能です。

一通り導入が済んだら、まずはアバターをUnityのエディタ上に持ってきます。
画面下のフォルダのうち、Assets>00Ryuku256>01Avatar>Felisの順にファイルを開き、Felis_v0.0.3となっているファイルをHierarchyタブにドラッグ＆ドロップすると、中央のエディタ画面にアバターが表示されます。
<img src=https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2016616/d18cfd65-ed0d-7b1d-65e4-b36e92aeb851.png width=500px>

してここからが本番といっても過言ではないのですが、まずは普通にVRChatSDKから**PC用アバターとして**アップロードします。
画面上側の項目から、VRChatSDK>Show control panel>Builderと進み、必要な情報を入力してアップロードしてください。
<img src=https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2016616/a11fbb23-dafc-526a-18a5-c0dcd1a723de.png width=500px>

アップロードが終わったら、皆様お待ちかねVRCQuestToolsの出番です。
先ほど確認した時と同じように、画面上側のToolsからVRCQuestToolsを表示し、"Convert Avatar for Android"をクリックします。
**変換したいアバターを選択した状態でクリックしてください**
<img src=https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2016616/a727aa58-d767-a3a6-f236-5d02c23de457.png width=500>

すると「変換の設定を始める」というボタンが出てくるのでクリック
そうするとこんな感じの表示になるので、一番上の「割り当て」と下の「Avatar Dynamics 設定」をそれぞれクリックしてください。
![スクリーンショット 2024-01-09 185053.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2016616/d0cb1e7a-a0cf-7548-ad5b-d064e9071417.png)

「Avatar Dynamics 設定」の方はクリックするとこういう画面になるのですが、これは要するに「揺れもの」の設定です。
"PhysBones"は合計8個までという制約があるので、揺れなくてもいいものを消していきます。
![スクリーンショット 2024-01-09 190436.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2016616/dc0137cb-06c0-e118-257a-f28d7821d905.png)

今回は髪のボーンを6個と、なぜか重複しているしっぽのボーンを1個消して、8個に収めました。
アバターにもよりますが、ケモミミや胸のボーンなんかは優先的に残しておくといいでしょう。揺れないと違和感があるのでね。
終わったら「適用」を押してボーンを削除し、UIを閉じましょう。

:::note warn
アバターによっては"Physbone Components"以外にも警告が表示される場合があります。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2016616/c682a201-3820-65b5-8115-6c38aa7aaa79.png)
「これ全部消すの！？」となりそうですが、実は**PhysBone Components**を消すと他のやつも勝手に消えていきます
親であるPhysBone Componentsを消すと、それの子であるコンポーネントも自動的に消してくれる...という風に私は理解しています

制限に収まればそれ以上無理に減らす必要はありません

:::

そうするとボーン関連の警告表示が消えるので、下の「変換」をクリック
![スクリーンショット 2024-01-09 192133.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2016616/17ea0cb5-21e2-9227-40dd-7966f21c90c1.png)

Hierarchyタブに「Felis_v0.0.3 (Android)」という名前のオブジェクトが生成されていれば成功です。

:::note info
**「変換」を押した後にボーン削減の表示が出てくる場合もあります**
:::

最後に、この生成したアバターをVRChatSDKからQuest用としてアップロードします。
生成したアバターを選択した状態でVRChatSDKの画面を開き、"Selected Platform"の項目を"Windows"から"Android"に変更します。
![スクリーンショット 2024-01-09 195904.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2016616/14afa433-bc93-a53c-f0ec-639a43f4bdcd.png)

まあまあ時間かかるので気長に待ちましょう。
しばらく処理が走った後"Selected PlatForm"が"Android"に変わっていればOKです。
![スクリーンショット 2024-01-09 193002.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2016616/16eb62e3-f1cd-591f-1b8e-e968cb854437.png)

あとは下のBuild & Publishを押すだけ！
成功したら、VRChatで見たときにQuest対応のマークが付いているはずです。
<img src=https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2016616/652e0bf4-ea0b-e6e5-f35c-5b46389e917c.png width=400>

この状態になっていれば、Quest対応は完了です

Questからの写真
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2016616/494451c1-f602-5f18-bcd3-5aa2f3e29ad5.png)


## まとめ
VRChatのPC用アバターをQuest対応させる方法について、ご理解いただけましたでしょうか
この記事で一番大事なのは「Quest版から姿が見えること」ですので、余裕がなければ**揺れもの全削除でも構いません**
Questユーザーの身からすれば、姿が見えるだけでも嬉しいものです...

注意点として、今回の方法は**アバターランクを考慮しない**ものなので、Quest版でのアバターランクはほぼ確実に**VeryPoor**となります
視界に入れただけで死ぬほど重い、ということにはならないのですが、Quest版ユーザーからアバターを見るには**Show Avatar**という操作が一度必要になります。
詳しくは[こちら](https://www.moguravr.com/vrchat-useful-settings-and-function/)の記事をご覧いただけますと幸いです。

またアバターによっては表情に透過テクスチャを含む場合があり、Quest版で利用可能なシェーダーがそれを正常に描画することができないため、一部の表情に問題が起こるケースもあります

:::note 
追記(2024/01/25)
透過テクスチャ問題について、解決策の一例を記事にしました
:::

https://qiita.com/Hellcat_152/items/934e29f978a9a71474f6

では、うだうだと色々書きましたが、皆様良きVRChatライフを！




## 使用したツール等

VRCQuestTools 

https://booth.pm/ja/items/2436054

Avatar Optimalizer

https://booth.pm/ja/items/4885109

Litoon

https://booth.pm/ja/items/3087170

フェリス(アバター)

https://booth.pm/ja/items/5385176