見出し画像

Avatar Optimizerの自動最適化がすごいので全人類使って欲しい

Anatawa12's Avatar Optimizerという素晴らしいアバター最適化ツールをご存知でしょうか?
最近の必須ツールであるModular Avatarとも相性が良く、Unityだけでアバターを最適化・軽量化してくれる最高に便利なツールです。
そんな素晴らしいツールが2023年10月7日のアップデート(version 1.5.0)で大幅に進化してすごいことになってるので紹介します。
いいから全員今すぐインストールして全アバターにつけろ!

自動最適化すごいよ

Avatar Optimizer(以下、AAO)にはTrace And Optimize(走査して最適化)というコンポーネントがあります。これを、アバターのルートオブジェクトにつけます。
(ルートオブジェクトというのはアバターの一番上、VRC Avatar Descriptorが付いているのと同じオブジェクトです。Add Componentから追加しましょう。)

Trace And Optimize

元のアバターはこれです。VeryPoorです。

最適化前のアバター (Very Poor)

Trace And Optimizeをつけると、こうなります。見た目は全く変わらず、ポリゴン数、スキンメッシュ、ボーン数、さらにPhysBoneまで減ってPoorになりました。
付けるだけで軽量化!

Trace And Optimize適用後のアバター (Poor)

上記はかなり理想的な例なので、実際にはTrace And Oprtimizeだけでパフォーマンスランクが下がることはあまりないかもしれません。しかし、パフォーマンスランクよりも大事なのは実負荷の軽減です!ここでアバターのPhysBoneを比べてみましょう。

最適化前後のPhysBone比較

めちゃめちゃ減っています!元のアバターはPhysBoneのことを何も考えずに他のアバターの髪や衣装を組み合わせていたので、アバター1体に3体分くらいのPhysBoneが付いていました。
しかも、その多くは対応するメッシュが無いので虚無を揺らしています。メッシュがなくてもPhysBoneの動きの計算は行われるので、なんの意味もなくインスタンス内全員のPCを無駄に働かせ、fpsを下げ、VR酔いを増やし、エネルギーを浪費し、地球温暖化に貢献しています。

そういう無意味なボーンやオブジェクトを自動で削除してくれるのが、この新しいTrace And Optimizeです。必要なものには影響を与えないので、デメリットは特にありません。付け得です。Modular Avatarとの併用もバッチリです。

あなたがこれを使うことで、VRChatプレイ中のfpsが上がり、あなたもみんなも快適になり、VR酔いが減り、人類が幸福になります。(*要出典)

さあ、あなたも今すぐこのリンクでVCCからAvatar Optimizerをインストールしましょう。
Boothの方がいい?では下のリンクからどうぞ

詳しい説明

Trace And Optimizeには、2つの機能があります。

  1. BlendShapeを自動的に固定・削除する

  2. 使われていないObjectを自動的に削除する

特に効果が大きいのは2つ目です。アバターアニメーションを全てチェックして、全く使われていないオブジェクトを見つけ出して削除してくれるようになりました。オブジェクトにはメッシュやボーンなど全てが含まれます。
どのメッシュからもウェイト参照がなく、アニメーションでも使われていないボーンも削除対象に含まれます。これにより、使われていないPhysBoneも削除してくれます。削除されるのはアバターのBuild時(アップロード直前)なので、改変作業に影響はありません。

1つ目のBlendShapeの削除も軽量化に貢献します。BlendShape(シェイプキー)は、メッシュ全体の頂点数×BlendShape数の負荷になります。
表情などはアップロード後にアニメーションで動かすので必要ですが、体型変更用シェイプキーなどはUnity上で変えるだけで、アップロード後には全く変更しない場合も多いはずです。シェイプキーは使わなくてもあるだけで負荷になるので、アップロード後に動かさないものはその値で固定し、削除することで負荷の軽減になります。
こちらも、アニメーションで使われていないものを自動的に判断して、アップロード前に固定・削除してくれます。

使われていないBlendShapeの自動削除

パフォーマンスランクには影響しないので実感しづらいですが、実負荷は確実に軽くしてくれます。

注意点として、参照されてないボーンの自動削除を含む強力な自動削除機能は最新版(ver. 1.5.0以降)でないと使えません。すでに古いバージョンのAvatar Optimizerを使っている人は、VCCから忘れずに最新版にアップデートしてください。

解説

Trace And Optimizeの偉大なところは、アバターの詳細に詳しくない人でも最適化ができるようになった点です。
今までのAvatar Optimizerは、どこをどう最適化するのか、全てを自分で決める必要がありました。つまり、どこが最適化できて、何をすればいいのかわかっている必要があるわけです。その意味である程度上級者向けのツールでした。しかしTrace And Optimizeに関しては、何もわからなくても付けるだけで勝手に最適化してくれます。これにより、全てのVRChatユーザーにおすすめできるツールになりました

誤解なきように言っておくと、今でも自分で考える最適化は必要です。Trace And Optimizeは「使っていない、完全に無駄なものを自動で消してくれる」だけなので、それ以上の積極的な最適化は自分でやる必要があります。1アバターに服を何着も入れて切り替えられるようにしているので重いとか、高解像度テクスチャや多くのボーンによるリッチな表現のために重いみたいな場合は、Trace And Optimizeではあまり軽くならないかもしれません。
しかし、改変過程で残された意図しないゴミによって余計な計算が発生し、VRChatが無駄に重くなるのは誰も嬉しくないはずです。
細かい設定なども無いので、Unityなんもわからん人にほど、ぜひ使って欲しいです。

とりあえずTrace And Optimizeを付けるだけで無駄に重い部分は最適化されますが、せっかく軽くなるならもっと軽量化したい!という方は私の記事のAvatar Optimizerの箇所や、

まさにくろすさんの記事を参考にしてみてください。

Avatar Optimizer自体がどんどん更新されているので、そのうち詳しい解説を書きたいところですが、とりあえず最適化したい内容ごとに使うコンポーネントは以下の通りです。

  • メッシュ数の削減: Merge Skinned Mesh (メッシュの結合)

  • PhysBone数の削減: Merge PhysBone (同じ動きのPBを結合)

  • BlendShapeの削減: Freeze BlendShapes  ←Trace And Optimizeにより不要になりました

  • ポリゴン数の削減: Remove Mesh in Box (削除箇所をBoxで指定して削除)

  • ポリゴン数の削減: Remove Mesh By BlendShape (干渉防止シェイプキーで棒になった部分を自動削除)

詳しい使い方などについてわからないことがあればTwitterMisskeyで気軽に私に聞いてください。
それでは、無駄な負荷を減らして快適なVRChatを楽しみましょう〜

参考になったら「スキ❤️」してくださると私が喜びます。
「フォロー」すると新しい記事の通知が受け取れます。
「気に入ったらサポート」すると私がとても喜びます。ありがとうございます。

VRChat関連の技術的な情報などを書いています。「スキ❤️」や「フォロー」していただくとモチベになります。「サポート」していただいたら私が美味しいものを食べます。