VRMからVRChatへアップロードする流れ

:warning: 注意事項
==================
- Quest用のモデルは非常に制限が厳しいため、この記事では解説していません。
- VRMによっては、VRChatに対応したボーン構造になっていないなどの理由で、この記事の手順ではアップロードが出来ない場合もあります。
- VRChatは修正不能な脆弱性により、モデルのデータを第三者が盗める状態になっています。もちろんそのような行為は規約により禁止されていますが、モデルデータをアップロードする際はその問題を認識したうえで行ってください。
- VRChatへのアップロードは、データの転載に当たります。あらかじめデータの権利関係・ライセンスをご確認ください。

VRChat側の操作
==============
VRChatのインストール
--------------------
もしまだVRChatをインストールしていなければ、以下のページにある「**ゲームをプレイ**」(緑色の) ボタンを押して、インストールしておきます。

Steam：VRChat
https://store.steampowered.com/app/438100

VRChatのアカウントを作成
------------------------
VRChatのアカウントには、まぎらわしいですが **「VRChatアカウント」** 以外に、初めてSteamなどのアカウントでログインしたときに自動作成されるアカウント (以下、「Steamアカウント」) が存在します。

アバターをアップロードするには、 **「VRChatアカウント」** をWebページから作成する必要があります。手順については以下の記事をご参照ください。

https://www.proustite.com/archives/4374

セキュリティを強化するため、「Steamアカウント」の作成と統合も推奨します。

:::note alert
統合後も「Steamアカウント」自体は残り続けて検索などでヒットし、VRChatのシステムの都合上削除もできないのでご注意ください。

初めてSteamでログインする前にSteam自体のプロフィール名をランダムな文字列にしておくことで対策は可能です。
https://twitter.com/esperecyan/status/1218387883326767104
※すでに「Steamアカウント」が自動作成されてしまっている場合は検索で引っかかる問題への対策は不可能
:::

アカウントの信用ランクを上げる
------------------------------
VRChatでは、アカウントごとに5段階の **Trust Rank** (信用ランク) が設定されています。これが **Visitor** の場合、アバターのアップロードができません。

自分のランクは次の手順で確認できます。

1. メニューを出します。
2. 右上のメインメニューボタンを押します。  
   ![](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/30177/788323e1-f1d2-635f-b081-1e945941c5ac.png) 
3. 下の左から3番目のProfileタブを開きます。
4. 右上の **TRUST LEVEL** という項目がランクを表しています。   
   ![](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/30177/f788b0f6-9a98-de44-2b87-1062af683452.png)

このランクは、VRChatをプレイしていくうちに変わっていきますが、単純にプレイ時間が増えると変わるものではなく、さまざまな条件 (※具体的な内容は非公開) で変わります。

たとえば初心者向けのVRChatツアーのように、いくつかのワールドをめぐるようなツアーに参加し、最初に何人かとフレンドになってもらえれば、ツアーが終わる頃には **New User** になるでしょう。

VRChat Creator Companionのインストール
===========================
VRChatへのモデルデータ (以下、アバター) のアップロードは、Unityエディタを使って行うことになっています。VRChat Creator Companionは、VRChatに関するUnity補助ツールです。

1. 以下のページを開き、「**Download the Creator Companion**」ボタンを押してVRChat Creator Companionを入手します。
   https://vrchat.com/home/download/
1. ダウンロードしたインストーラーを実行します。
1. VRChat Creator Companionを起動します。
1. Unity Hub、VRChat SDKが対応したUnityがインストールされていなければ、インストールするためのボタンが表示されるので、インストールします。

VRChat SDK と VRM Converter for VRChat の導入
=========================================
VRM Converter for VRChatのリポジトリを追加
-----------------------------------------
『VRM Converter for VRChat』は、VRMとVRChatに適したオブジェクトとを相互変換するUnityエディタ拡張です。

1. VRChat Creator Companionの左メニューの下の「**Settings**」をクリックします。
1. 上の「**Packages**」タブをクリックします。
1. 右上の「**Add Repository**」ボタンを押します。
1. 出てきた「**Repository Listing URL**」欄へ、以下のURLをコピーして貼り付けます。
   `https://esperecyan.github.io/VRMConverterForVRChat/registry.json`
1. その右の「**Add**」ボタンをクリックします。
   ![](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/30177/878545e3-5ee5-f588-d0fc-f63aa230f300.png)
1. 表示された警告を読んで、右下の「I Understand, Add Repository」ボタンをクリックします。
   > コミュニティリポジトリの免責事項
   > 警告: 自己責任でダウンロードしてください!
   > 第三者のサイトを通じて提供されるコミュニティパッケージには、マルウェアが含まれている可能性があります。
   > VRChatは、コミュニティパッケージに対するいかなる表明、保証も行わず、コミュニティ・パッケージに起因する、または関連するいかなる責任も負わないものとします。
   
   ![](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/30177/fc216161-2e81-14f5-2446-cd330083b81a.png)


プロジェクトの作成
----------------
1. 左メニューの「**Projects**」をクリックします。
1. 右上の「**Create New Project**」をクリックします。
   ![](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/30177/6c3a6618-cc38-0d39-6a79-db98f5b9f594.png)
1. 上のSelect templateで「**Avatars**」をクリックします。  
1. 左下の「**Create Project**」ボタンを押します。  
   ![](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/30177/3c109364-9cab-9065-d0c8-c8cc37136bf7.png)


VRM Converter for VRChat の導入
-------------------------------
『VRM Converter for VRChat』は、VRMとVRChatに適したオブジェクトとを相互変換するUnityエディタ拡張です。

1. 「Manage Packages」画面で「**VRM Converter for VRChat**」の行の右端の「**⊕**」ボタンを押します。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/30177/59fde022-ab9b-8d7e-6bf6-69cbe7067e2c.png)

:::note alert
『VRM Converter for VRChat』などのパッケージには、**C#スクリプト (`.cs` ファイル)** が含まれています。C#スクリプトは、コードの書き方によってインストール、もしくはインポートした時点で実行されます。つまりWindowsでいうところの `.exe` ファイルなどをダウンロードし、Windowsのブロックを回避して強制実行するのと同じです。VRChat Creator Companionでインストールするパッケージはもちろんのこと、SDK3向けギミックを配布するときにもC#スクリプトの同梱がほぼ必須となりましたが、**信頼のおけるパッケージ (+ コミュニティリポジトリ) やアセット以外はインストール、インポートしないようにご注意ください。**

VRChat Creator Companionでインストールするパッケージについては、以下のようなRepository Listing URLから、パッケージのURLを捜してダウンロードし展開すれば、C#スクリプトの中身をチェックできます。
https://esperecyan.github.io/VRMConverterForVRChat/registry.json

unitypackageの場合は、[UnityPackageUnPacker] を利用すると、.unitypackageファイルを展開してC#スクリプトの中身をチェックできます。
:::

[UnityPackageUnPacker]: https://chiugame.booth.pm/items/1037772 "このツールはunitypackageを指定フォルダに展開できるツールです！"

プロジェクトを開く
----------------
1. 右上の「**Open Project**」ボタンをクリックします。

※Unityエディタを閉じたあと、再度プロジェクトを開くときは、「Projects」画面の、目的のプロジェクト名の右端の「Open Project」ボタンをクリックします。
※再度プロジェクトの「Manage Packages」画面を開くときは、「Projects」画面の、目的のプロジェクト名の右端の「Manage Project」ボタンをクリックします。

VRMのインポートと変換
=====================
VRMファイルのインポート
---------------------
1. VRMファイルを **Assets** へドラッグ&ドロップすると、自動的にインポート処理が行われます。
2. 処理が完了して操作できるようになるまでしばらく待ちます。
3. `[VRMファイル名].prefab` となっているものが、インポート処理で作成されたプレハブです。

![](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/30177/e074516c-9604-a95a-b36b-8ce1ff307fbb.png)

※セシル変身アプリ、およびVRoid Studioには不具合があり、出力したVRMファイルの視点位置がズレています (特にセシル変身アプリで出力したモデルは、視点位置が首の中になっているため、設定は必須) [UniVRMには視点位置を簡単に調節できる機能が備わっているため、VRChat用に変換する前に設定しておくとスムーズです。](https://qiita.com/100/items/39200bffaa0cca904bb4#%E8%A6%96%E7%82%B9%E3%81%AE%E8%A8%AD%E5%AE%9A)

VRChat用に変換
--------------
1. Assetsのプレハブを選択した状態で、上の __VRM__ メニューから、 **Duplicate and Convert for VRChat** を選択します。  
   ![](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/30177/21cd0f6a-e672-14b9-8bc8-590cb4a7ebc7.png)
2. 「VRM Converter for VRChat」というダイアログが開くので、右下の「**複製して変換**」ボタンを押します。
   ![](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/30177/498970bc-6a04-326f-9aae-99191bdef696.png)
3. 保存先をたずねるダイアログが開きますが、そのまま「**保存**」ボタンを押してしばらく待ちます。  
4. 正常に変換が完了すると、「変換が完了しました。」というメッセージを含むダイアログが表示されます。  
   ![](https://qiita-image-store.s3.amazonaws.com/0/30177/f53d4b4f-0743-2011-686c-9047167590de.png)

VRChatへアップロード
====================
VRChat SDKへログイン
--------------------
1. 上の __VRChat SDK__ メニューから、 **Show Control Panel** を選択します。
2. 「VRChat SDK」というウィンドウが開くので、「Authentication」タブでUsername、またはメールアドレスとパスワードを入力して **Sign In**
 ![](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/30177/8a084528-5a56-50bc-d622-10841cde626c.png)
3. 「Avatar Creator Status: Allowed to publish avatars」と表示されているのを確認します。
 ![](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/30177/ff442562-b122-ffba-831b-23a39df59154.png)

アップロード
------------
1. 上記ウィンドウで、「Builder」タブを開き、右下の「**Build & Publish**」をクリックしてしばらく待ちます。
2. 中央の「Game」ウィンドウにアップロード画面が表示されるので、画面上で指示されている手順に従ってアップロードします。  
   ![](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/30177/45382654-e5d7-c488-d47d-703ba27448f6.png)
3. 正常にアップロードが完了すると、「Upload Comlete! Launch VRChat to see your uploaded content.」というダイアログが表示されます。  
   ![](https://qiita-image-store.s3.amazonaws.com/0/30177/47aa247e-6da7-e5ff-8425-88d8853b803f.png)

フィードバックサイトへ投票のお願い
==============================
VRChat SDKが対応しているUnity 2019.4は、すでにUnity Technologiesのサポートが終了しており、同バージョンはUniVRMでサポートされていません。
VRChatはCannyというサービスを利用してフィードバックサイトを開設しており、Unity 2021.3へのアップグレード要望が投稿されています。

https://twitter.com/esperecyan/status/1596684695026421760

また、VRM対応の要望も投稿されています。

https://twitter.com/butadiene121/status/1033392342806364160

ぜひ各投稿へ vote (投票) をお願いいたします。

投票の仕方
--------
1. 上のツイート内のCannyへのリンクを開きます。
1. **LOG IN TO VRCHAT** ボタンを押します。  
   ![](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/30177/3153537c-6e84-e0a5-bebd-100d6abdf155.png)
1. VRChatのログインページが出てきたらログインします。
1. 「Canny Would Like to Connect to Your VRChat Account」という、Cannyからの連携を許可するか確認するページが表示されるので、**Yes!** ボタンを押して連携を許可します。  
   ![](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/30177/6357f7b9-fc9e-e9b4-2c0b-677963d2c878.png)
1. 数字が書かれたボタンを押してvote (投票) します。数字の上の △ が青色になればvote完了です。  
   ![](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/30177/838429fc-0018-3cb2-aa39-cdafd7a1f3f8.png)