はじめに
最近、Oculus Questを入手してVRChatを始めました。
Oculus Questではデフォルトで表示されるアバターに制約があり、パフォーマンスランクがPoor、Very Poorだと見えません(参考:Avatar Performance Ranking System)。
この記事では、アバター(京狐さん)をQuest対応した際に行ったことをまとめています。
注意点
- この記事を書いた人はVRChatもUnityもBlenderも初心者です。手順に誤ってる箇所があるかもしれません。
- Unity 2018での手順です。
作業環境
macOS Mojave 10.14.6
Unity Hub 2.4.5
Unity 2018.4.20f1
Blender 2.93.1
必要なもの
Unity HubとUnity
UnityはVRChatのアバターをアップロードするのに必要なゲーム開発環境で、Unity HubはUnityのバージョンを管理できるツールです。
VRChatの Currently Supported Unity Version から、
- Click here to install Unity Hub
- Click here to install the current version of Unity via Unity Hub
をクリックし、Unity HubとUnityをインストールします。
Unity周辺ツール
VRChat SDK
VRChat用のソフトウェア開発キットです。VRChatのコンテンツの開発を支援するunityパッケージです。
Unityのプロジェクトにインポートして使います。
https://vrchat.com/home/download
VRChat SDKは現在バージョン2と3があるようです。
京狐さんは VRChat SDK 2に対応なので、2をダウンロードしました。
VRCQuestTools
アバターをQuest用に変換してくれるツールです。
https://booth.pm/ja/items/2436054
VRChatThumbnailer 2020
アバターのサムネイルを好きな画像に設定できるツールです。
https://booth.pm/ja/items/2327103
Blender
3Dを作成するためのツールです。アバターのポリゴン数、マテリアル数を削減するために使います。
blender.org からダウンロードし、インストールします。
周辺ツール
Blenderのプラグインを導入します。Edit → Preferences → Add-ons → Install → ダウンロードしたzipを選択して、プラグインをインストールします。
Material Combiner
後述する Cats Blender Plugin に必要なツールです。
https://github.com/Grim-es/material-combiner-addon
Cats Blender Plugin
VRChat用にアバターを最適化できるBlenderのプラグインです。シェイプキーを保持しながらポリゴン数を削減したり、マテリアル数を削減できたりします。
https://github.com/GiveMeAllYourCats/cats-blender-plugin
プラグインをインストール後、「n」キーを押してメニューを出し、CATSタブ → Optimization → Atlas から、Pillowをインストールします。
Macの場合は、以下の記事を参考にするとpillowをインストールできました。
https://qiita.com/kjunichi/items/a36fdc9db3876e068249
Dynamic Bone
https://vrc.wiki/beginner/1459/#Dynamic_Bone%E3%81%AE%E3%82%A4%E3%83%B3%E3%83%9D%E3%83%BC%E3%83%88
手順
1. Blenderでのアバターの最適化
Blenderを起動し、「ESC」キーを押してスプラッシュスクリーンを閉じます。
「n」キーを押してメニューを出し、CATSタブ → Import Model からモデルを取り込みます。
VRMファイルを選択し、「Import Any Model」ボタンを押します。
そうすると、モデルが取り込まれます。
https://ameblo.jp/chicktack123/entry-11645338950.html
Cats Blender Pluginを使ってポリゴン数、マテリアル数を削減していきます。手順は以下のサイトを参考にしています。
https://shinrinmusic.com/cats-blender-plugin-how-to-use/
ポリゴン数の削減
CATSタブ → Decimation → Trisを15000にして、「Quick Decimation」ボタンを押します。
「Fix Model」を押してモデルを最適化します。不要なボーンを削除したり、いろいろやってくれるらしいです。
マテリアル数の削減
Optimization → Atlas → Generate Material List → 「Save Atlas to...」ボタンを押し、統合されたマテリアルを保存します。
モデルの保存
「Export Model」ボタンを押し、「Export FBX」ボタンを押して、最適化したモデルを保存します。
File → Save as... からblenderファイルも保存しておきます。
2. Unityプロジェクトの作成
Unity Hubを開き、プロジェクトを新規作成します。テンプレートは3Dを選択します。
VRChat SDK等をインポートする
Assets → Import Package → Custom Package → VRCSDKのunitypackageを選択し、Openします。
インポートするファイル一覧が現れるので、そのまま「Import」ボタンを押します。
同じことを、VRCQuestTools、VRChatThumbnailer 2020でも行い、インポートします。
通常版、最適化したアバターをインポートする
まずは通常版のアバターをインポートします。このアバターはPC用のアバターとして使います。
Assets → Import Package → Custom Package → 京狐さんのunitypackageを選択し、Openします。
Assetsにフォルダが追加されるので、Prefabファイルを左上のSceneにドラッグアンドドロップします。
京狐さんがSceneに追加されました。
Unityの操作方法はこの辺りを参考にしました。ズームや移動ができればなんとかなります。
https://qiita.com/guru_taka/items/b78b05844b05631e164b
今度は最適化したアバターをインポートします。
Assets に保存しておいたfbxファイルをドラッグ&ドロップしてインポートします。
その後、先ほどと同じように、fbxファイルをSceneにドラッグ&ドロップします。
まだマテリアルが適用されていないので、グレーな見た目になっています。
3. Unityでのアバターの設定
最適化したアバターの設定
通常版のアバターから各種設定をコピーします。
コピーした内容をペーストします。
- 最適化したアバターを選択 → Inspectorタブ → 「Add Component」ボタンをクリック → VRC_Avatar Descriptor を選択 → VRC_Avatar Descriptor の右側にある歯車ボタンを押す → Paste Component Values をクリック
Face Meshを変更
マテリアルの適用
- 保存しておいたマテリアルを Assets にドラッグ&ドロップします。それだけでマテリアルが適用されるはず。
適用されない場合、最適化したアバターを選択 → Inspectorタブ → Modelの「Select」ボタンをクリック → Materialsタブ → On Demand Remap → 右端の小さいマルをクリック → Noneを選択し直すと直ることがあります。
あるいは、Locationを「Use External Materials (Legacy)」にして、Namingを「By Base Texture Name」にすると直るかも。この段階ではシェーダーがデフォルトなのでグレーに表示されてますが問題ないです。
ボーンの設定
- 最適化したアバターを選択 → Inspectorタブ → Modelの「Select」ボタンをクリック → Rigタブ
- Animation Typeを「Humanoid」にして「Apply」ボタンをクリック
- 「Configure」ボタンをクリック
- ダイアログが出たら「Save」ボタンを押します
- ボーンをマッピングする画面になります
- Body
- Chestで右側の丸を押して、Chestを選択します
- Upper Chest、Toesは未選択で問題ないようです
- Chestで右側の丸を押して、Chestを選択します
- Head
- Jawを選択してdeleteキーを押してNoneに
- Jawを選択してdeleteキーを押してNoneに
- 完了したら、右下にある「Done」ボタンを押して設定を終了します。
- ダイアログが出たら「Apply」ボタンを押します。
- Body
最適化したアバターにVRCQuestToolsを適用
最適化したアバターを選択した状態で、VRCQuestTools → Convert Avatar for Quest を選択します。
Textures Size Limitは1024x1024でなく、2048x2048でも問題なく表示できたので変更してもいいかもしれません。
「Convert」ボタンを押します。
シェーダーがToonLitに変わったことにより、ポリゴン数が少なくてもいい感じに見えるようになりました。
サムネイルを設定する
Assetsにサムネイル画像をドラッグ&ドロップして追加します。
空のオブジェクトを作り、Incpectorタブから「Add Component」ボタンをクリック → VR Chat Thumbnailerを選択します。
Assetsのサムネイル画像を、グレーの枠にドラッグ&ドロップしてサムネイルを設定します。
4. アバターのアップロード
通常版のアップロード
VRChat SDK → Show Control Panelを選択。
AuthenticationタブからVRChatのユーザとしてログインします。
Builderタブを選択。「Build & Publish for Windows」でアバターをアップロードする画面に移ります。
アバターをアップロードする画面で、Avarar NameとDescriptionを入力し、下のチェックボックスにチェックをつけ、「Upload」ボタンを押してアップロードします。
Avatar NameとDescriptionはコピペすると日本語を入力できるようです。
Quest版のアップロード
アバターはBlueprint IDというIDを使い、アバターが同一かどうかを識別しています。
そのままQuest版をアップロードしてしまうと、別のアバターとなってしまうので、Blueprint IDを同一にします。
InspectorタブからPipeline ManagerにあるBlueprint IDをコピーします。
Quest版アバターにBlueprint IDをペーストして、Attachします。
「Switch Build Target to Android」してQuest用のビルド設定にし、「Build & Publish for Windows」を押してアップロードします。
課題
表示が崩れてしまう
ポリゴン数を削減する関係で表示が崩れてしまうことがあるようです。
アウターの腕にある赤線が欠けたり、インナーの切り替えのラインが崩れたりしてしまいました。
メッシュの裏側が表示されない
Questで使えるシェーダーはメッシュの両面描画をサポートしていないそうで、アウターの裏面が表示されませんでした。
以下のサイトを参考に裏面メッシュを作ると表示できるようです。
https://3dcg-school.pro/blender-normal-flip/
おわりに
課題は残っていますが、とりあえずQuestに京狐さんを表示できてよかったです。