【VRChatアバター改変・軽量化基礎】アバターにAAO Trace And Optimizeによる自動最適化・軽量化機能を追加する

アバター「ロクミミ族」を例とする。

アバターの軽量化について考慮すべき点は多岐にわたる。
専門家でないユーザーにとってはアバターの最適化・軽量化は特に困難を伴うもので、諦めてそのまま、というケースは多い(念の為書いておくと、今回例として使用しているロクミミ族は最初から十分に最適化・軽量化がされているアバターである)。

ここではコンポーネントひとつつけるだけで自動でアバターの最適化・軽量化を施してくれる"AAO Trace And Optimize"を紹介する。
このツールは"非破壊"であるためもとのアバターデータには影響を及ぼさず、もし軽量化によって不具合が発生した場合はコンポーネントを消去するだけで簡単にもとの状態に戻せる。
以下に手順を記す。

まずは以下からVPMリポジトリをVCC/VPMに追加する。
すでに行っている場合は飛ばして良い。

追加ができたらアバターのプロジェクトにVCCなどで"AAO: AvatarOptimizer"と"anatawa12's gists pack"の2つを導入する。

導入ができたらUnityでプロジェクトを開き、ツール(Tools)→"anatawa12's gist selector"を開く。

anawata12's gist selector
"ActualPerformanceWindow"にチェックを入れて"Apply Changes"

ウィンドウが開いたら"ActualPerformanceWindow"にチェックを入れて"Apply Changes"。
これはアップロードしなくてもアバターのパフォーマンスランクを表示できるように設定するものだ。
この作業は今回の目的には直接的には関係がないのだが、作業前後で比較をしたいときはこうしておかないと毎回アップロードしないと確認ができないので不便だ。

ここまで終わったら画面上部にある「▶」ボタンをクリックしてプレイモードに切り替えてみよう。

▶ボタンはここにある。これでゲーム時の状態を再現した状態になる。

するとパフォーマンスランクの統計データが表示されたウィンドウが現れるはずだ。

ロクミミ族デフォルトのパフォーマンスランク統計データ

これが表示されたらもう一度「▶」をクリックしてもとのモードに戻そう。
なお、これは比較ができるようにとまずは表示してもらっただけで今回の目的には特に関係がない。どれだけ軽量化されたのかに興味がない場合は飛ばしてもらって構わない。

アバターのルート(ヒエラルキー画面におけるアバターそのもの、ロクミミ族の場合は"Rokumimi_v1.0_PC")を選択した状態でインスペクターを確認する。
インスペクターを下にスクロールしていくと"Pipeline Manager"と"VRC Avatar Descriptor"が存在することを確認(これらが存在すればそれがアバターのルートであることが確実になる)して、その下にある"コンポーネントを追加"(英語であればAdd Component)を選択する。

コンポーネントの選択画面が表示されたら"Avatar Optimizer"→"AAO Trace And Optimize"を選択する。

"Avatar Optimizer"を選択する。
ここはABC順に並んでいる他、上部の🔍から文字列での検索も可能。
"AAO Trace And Optimize"を選択する。

すると"AAO Trace And Optimize"コンポーネントがアバターに追加される。

インスペクターを確認すると"AAO Trace And Optimize"コンポーネントが追加されている
こうなればもう作業完了。たったこれだけ。


追加ができたらもう完了だ、たったこれだけ、あとは普段どおりアップロードすれば軽量化が施された状態でアップロードされる。

が、せっかくなのでどれだけ軽量化されたか比べてみよう。
もう一度「▶」をクリックしてプレイモードに入ってみる。

数字をよく見ていくとBonesが142→135に減少している

これはできるだけもとのアバターを壊さないように軽量化を行うため、目に見えるくらい大幅な軽量化にはなりにくく、Performance Rankを引き上げられるほどの効果が見込めるアバターは限られている。
今回の例で利用したロクミミ族はもとから十分に最適化・軽量化されているためとくに大きな変化はないようだが、Bonesが142→135に減少しており、軽量化そのものは確実に行われていることがわかる。
他にアニメーションで使われていないBlendShapeを自動的に固定・除去を行ったり、PhysBoneを最適化してコンポーネント数を減らしてくれたりといったことも行われる。効果はアバターによりけりだ。

なお、非破壊ツールを使用したことによる軽量化後の数値は"VRChat SDK"の"Builder"にある"Validations"には反映されない、つまりこの"Validations"に表示される数値は当てにならなくなる。
"Validations"にかかわらず軽量化は施されており、"ActualPerformance"の数値が実際の数値となる。かならずこちらを確認するようにしよう。

もしこれが原因と思われるような不具合が発生した場合は、
アバターに取り付けた"AAO Trace And Optimize"コンポーネントの右側にある「︙」をクリックして"コンポーネントを削除"(Remove Compornet)を選択すればコンポーネントが削除されて元の状態に戻せる。
実際にもう一度「▶」をクリックしてプレイモードに切り替えればBonesの数値がもとに戻っていることが確認できるはずだ。
これが非破壊編集ツールの大きな強みである。なにか問題が起きてももとの状態に戻すことが簡単なのだ。

とにかく手軽で安全なため、アバターを用意したならまず試してほしい軽量化手法だ。

いいなと思ったら応援しよう!