アバター最適化

現在はAvatar Performance Ranking Systemというものが公式で実装され、一つの目安となっています。

Avatar Performance Ranking System

Avatar Performance Ranking Systemはアバターの特定の要素ごとにランクを規定し、負荷の目安を提示するシステム。ポリゴン数を除き、ランクによるアップロード制限はない。
以下に、代表的な項目と具体的な軽量化の方法を示す。
ただし、多くの場合は軽量化と表現の精細化はトレードオフであり、一概にどちらが優れているというものではないということを一応書いておく。

Polygons

ポリゴン数。頂点数ではなく、三角の数で計算する。
アバターをアップロードする際は、70,000ポリゴン以下に収める必要がある。
頂点を削除する際、シェイプキーを持ったメッシュの頂点を削除するとシェイプキーが破損することがあるので注意。
※VRChat 2019.2.4 (build 801)から非表示オブジェクトもポリゴン制限に含まれるようになりました

Bounds Size

Boundsのサイズ。スキンメッシュレンダラーのプロパティで、メッシュの境界を表す。アバターを完全に覆う範囲で最小にする。

Tips

  • 複数のスキンメッシュがある場合はBoundsを統一することでメッシュが視界の端で部分的に非表示になるのを防ぐことができる。
  • 複数のスキンメッシュのAnchor Overrideに同じものを設定することで、参照するLight Probe等を統一でき、メッシュごとの明るさの差異を小さくできる。

Skinned Meshes

スキンメッシュの数。以下の条件を満たす場合、Blender等でメッシュを結合することで数を減らせる。
  • 同一のアーマチュア
  • 同一階層
  • スキンメッシュごとに表示/非表示、座標等の変更の必要がない

Meshes

スキンメッシュでないメッシュの数。スキンメッシュと結合し、追従させたいボーンのウェイトを1で塗ることでおおよそ同一の挙動で数を減らすことができる。

Unique Materials

マテリアルの種類。Texture atlasなどを作成してマテリアルを結合することで、同一シェーダのマテリアル同士を統合できる。
→Blenderでのマテリアル統合支援アドオン: MATERIAL COMBINER BLENDER ADDON (2.0.3.2)

Dynamic Bone Components

Dynamic Boneのコンポーネントの数。
Dynamic Boneは対象のBoneの子すべてに影響を与えることができるので、対象な位置にあるBoneなどは根元に親となるBoneをいれ、そこをDynamic Boneの対象とすることで数を減らすことができる

Dynamic Bone Transforms

Dynamic Boneの影響を受けるTransformの数。対象Boneが接続されてない(Boneの端同士の座標が離れている)場合、Boneの両端がカウントされる。

Dynamic Bone Colliders

Dynamic Bone Colliderの数。

Dynamic Bone Collision Check Count

Dynamic Bone Colliderの影響を受けるDynamic Bone Transformsの数?

Animators

Animatorの数。アップロード時に最上層に追加されるため、最低数は1になる。

Bones

Boneの数。

Lights

ライトコンポーネントの数。
リアルタイムライトは高負荷になりやすいため、ワールド内を照らす等の目的がない場合はテクスチャに焼いたり、Emissionを持つシェーダなどで代用すると軽量化が見込める。

Particle Systems

パーティクルシステムのコンポーネントの数。
高負荷なパーティクルの多くはシェーダに問題があることが多いので、軽量化を目的とする場合は先にシェーダ周辺を検討することをおすすめする。

Total Particles Active

パーティクルの出現上限の合計。

Mesh Particle Active Polys

メッシュパーティクルのポリゴン数。パーティクルの数の上限×パーティクルのポリゴン数。

Particle Trails Enabled

トレイルが有効なパーティクルの数。

Particle Collision Enabled

コリジョンが有効なパーティクルの数。

Trail Renderers

トレイルレンダラーの数

Line Renderers

ラインレンダラーの数

Cloths

クロスコンポーネントの数。

Total Cloth Vertices

すべてのクロスのポリゴン数の合計。

Physics Colliders

Physics Rigidbodies

Audio Sources

オーディオソースの数。アバターのオーディオ関連のコンポーネントはアップロード時にパラメータの一部が修正されることがあるので注意する。

Tips

ドローコール数を減らすと負荷の軽減につながるという話


「アバターが重くなる原因」と「解決策」そして「妥協案」



軽量化に関する考察


参考:アバターの負荷に関係する公式への要望ピックアップ

大部分はアバターパフォーマンスランキングシステムやセーフティシステムという形で実装されました。

リンク


  • 最終更新:2020-08-08 09:40:54

このWIKIを編集するにはパスワード入力が必要です

認証パスワード