【VRChat】ほんのりBlenderとUnityでQuestアバターをFallback対応する(簡易版)
※古い記事です
・ModularAvatar
・AAO: Avatar Optimizer
・lilNDMFMeshSimplifier
・TexTransTool
などで検索してみてください
Blenderを使わない最新の方法が見つかるはずです。
以下古い記事です
好きなアバターをFallbackに設定したいけどPerformanceRankを少しオーバーしてしまい泣く泣く別のアバターにしていませんか?Quest用のアバターがあれば割と簡単にできるのでまとめておきました。手順は2からです。
1.Fallbackの最低条件
FallBackAbatarの最低条件はQuestでPerformanceRankをGoodもしくはExcellentにすることです。下が条件ですが、大まかにポリゴン10000以下、ボーン90以下が目安です。MeshとMaterialは1である必要があります。2以上の場合は別の処理(Mesh/Material結合)が必要になるので今回は扱いません(参考にしたサイトにやり方があるのでそちらで行ってください
2.削る対象
いつものようにSDK3Avatarを入れたUnityProjectにアバターのPackageをインポートしてSDKのアップロード画面からBuilderを開いてみてください(このプロジェクトは後で使うので保存しておくといいかも
3.Blender編(準備)
Blender2.93を公式サイトからダウンロードしてインストールしてください。デフォルトで英語なので上部のEdit→PerformanceからInterface→Translation→languageでJapanese(日本語)を選択します。
そのまま下のアドオンをインストールするので閉じないでおくと楽です。
次にCats-blender-pluginをBlenderにインストールします。このプラグインはシェイプキーを維持したままポリゴン数を削減できます。fbxやVRMのインポートもこれ1つで出来ます。
ダウンロードしたzipファイルをアドオン→上部のインストールを押して選択します。
インストールしたら一旦Blenderを閉じてください。
4.Blender編(実践)
4-1 Blendファイルがある場合(ファイルを開く)
.blend(blenderファイル)があるのでそれを使います。そのまま保存してしまうと書き換わってしまうのでコピーしてからBlenderで開きます。
4-2 Blendファイルがない場合(fbxインポート)
Blenderを開いて置いてあるキューブを削除した後にNキーでCATSのメニューを開きます。モデル→モデルのインポートからfbxファイルをインポートします。テクスチャが貼られずモデルが灰色になった場合は無視してそのまま次の手順に進んでください(Unityでマテリアルを設定するので仕上がりは変わりません)
4-3 CATSプラグインでポリゴン数を削減する
モデルを開いたら次のような画面になると思います。ならない場合はオブジェクトモードに切り替えてください。画面のどこかでキーボードのNを押すと右のCATSなどがあるメニューが開きます。シーンから一応使わない小物を削除しておきます。対象を右クリックして削除。
次にCATSを選択→デシメーションモード
スマートが選択されているのを確認してトリスに目標ポリゴン数を入力します。指とAnimationなんとかは好みで選択して試してください。関節と指へのポリゴン数割り当てが多くなって指の破綻が少なくなるかもしれません。設定が決まったらQuickDecimationを押します。
少し待ってポリゴン数が目標値まで削減されているのを確認したら。モデルを出力します。左下のSeparateMaterialを指定しておいてください。
fbxの出力が完了したらBlenderの作業は終了になります。
5.Unity編(ボーンの削減)
最初に保存しておいたプロジェクトのAsset下にfbxファイルを投げ込みます。fbxのインポート設定で元々のアバターのMaterialを指定します。
設定したら、いつものようにHierarchyに先ほどインポートしたfbxを配置します。この状態ではアップロードに必要なコンポーネントがないのでつけていきましょう。InspectorのAdd Componentで追加できます。
必要なのはAnimatorとVRC Avatar Descripterです(PipelineManagerはAvater Descripterを入れると自動で入ります)
元々のQuest用アバターをHierarchyに配置して設定値をコピーしていきます。
先ほど配置したfbxのアバターに同じコンポーネントをつけてコンポーネントの値を張り付けすると一瞬で移植できます。
LipSyncとEyelidsのMeshやEye LockのBoneはそのままではコピー元のアバターを参照してしまうので、新しいアバターのBoneやMeshに再設定してください。
全部つけるとアップロード可能になるので一応確認。
まだオーバーしている項目がありますね?ボーンです。
ボーンの削減は、がとーしょこらさんのこちらのツールを使います。
インポートしたら上部のGATO TOOLからModelBoneDeleterを起動
Fallbackにしたいアバターを放り込んでボーン削除していきます(一応unpackしておいた方がいいかも。
GOODを狙いましたが、9000ポリゴン程度でボーン75以下ならExcellentなのでそちらも十分に狙う事ができます。アップロード時にUse Fallbackにチェックを入れてAndroidとPCでアップロードすれば完成です。お疲れ様でした。
6.終わりに
参考にさせていただいたサイト様