MRが楽しい

MRやVRについて学習したことを書き残す

VRChatのパフォーマンスランクについてまとめる(VRChat 2018.4.4)

本日は VRChat の技術調査枠です。
2018/12/21 の VRChat 2018.4.4 のバージョンから「AvatarPerformance UI」が追加されました。
これにより、Avatar画面に「AvatarStatus」の項目が追加されました。
f:id:bluebirdofoz:20190121032350j:plain

「AvatarStatus」画面を開くと、対象のアバターについて描画負荷に関するパフォーマンスが表示されます。
[Overall Perfomance]の項目に表示されるステータスはパフォーマンスランクと呼ばれ、アバターの描画負荷の目安になります。
f:id:bluebirdofoz:20190121032400j:plain

以下の公式資料を元に、このパフォーマンスランクの情報をまとめます。
docs.vrchat.com

本記事は 2019/1/21現在、VRChat 2018.4.4 時点の情報です。

パフォーマンスランクの段階

パフォーマンスランクの評価段階についてです。
ステータスは5種類あり、上に行くほど描画負荷が軽く、下に行くほど負荷が高いモデルになります。
表の[Performance Rank Icon]は後述するネームプレート上のアイコンとして表示されます。
f:id:bluebirdofoz:20190121032436j:plain
・Excellent … 優秀。ベストな状態です!(This is as good as you can get!)
・Good … 良い。十分に上出来な状態です。(Pretty dang good and definitely good enough.)
・Medium … 中間。良いけど、改善の余地あり。(Pretty good, but could use a little work.)
・Poor … 悪い。何らかの修正作業が必要です。(Definitely needs some work.)
・VeryPoor … 非常に悪い。他人のフレームを盗んでいます。(This user probably stole your frames.)

パフォーマンスランクのアイコン

クイックメニューを開いた状態で、ユーザのネームプレートを確認します。
すると、ネームプレートの上にアイコンが表示されます。
左側にあるアイコンが、そのユーザーのアバターのパフォーマンスランクを示します。
f:id:bluebirdofoz:20190121032448j:plain

パフォーマンスに影響する要素

パフォーマンスに影響する要素は以下の通りです。

Polygonsモデルのポリゴン数。三角面数で数えられます。
Bounds Sizeアバターのワールドでのサイズ。
Skinned
Meshes
アバターのスキンメッシュコンポーネントの数。
Meshesアバター上の非スキンメッシュコンポーネントの数。
Unique
Materials
アバターのマテリアルの数(種類)。
Dynamic Bone
Components
アバターのダイナミックボーンスクリプトの数。
Dynamic Bone
Transforms
ダイナミックボーンスクリプトによってアニメーション化されたトランスフォームの数。
Dynamic Bone
Colliders
アバターのダイナミックボーンコライダーの数。
Dynamic Bone
Collision
Check Count
ダイナミックボーンコライダーの影響を受けるダイナミックボーントランスフォームの数。
Animatorsアバターのアニメーターの数。ルートアニメーターがあるため、常に1以上になる。
Bonesアバターのリグにあるボーンの数。
Lightsアバターのライトコンポーネントの数。
Particle Systemsアバターのパーティクルシステムコンポーネントの数。
Total Particles
Active
全てのパーティクルシステムでのmaxParticlesの合計数。
Mesh Particle
Active Polys
アクティブなパーティクルシステムによるメッシュパーティクルのポリゴンの総数。
つまり、maxEmission * meshParticleVerts。
Particle Trails
Enabled
いずれかのパーティクルシステムでパーティクルトレイルが有効になっているか。
Particle Collision
Enabled
いずれかのパーティクルシステムでパーティクルの衝突が有効になっているか。
Trail Renderersアバターのトレイルレンダラーの数。
Line Renderersアバターのラインレンダラーの数。
Clothsアバターの布コンポーネントの総数。
Total Cloth
Vertices
全てのアクティブな布コンポーネントの頂点の総数。
Physics Collidersアバターのコライダー(Collider)の数。
Physics Rigidbodiesアバターの剛体(Rigid)の数。
Audio Sourcesアバターのオーディオソースの数。

パフォーマンスランクの条件

各項目ごとにランクの条件となる数値が設定されています。
これらの条件に収まる数値であれば、より負荷が低いアバターとしてランクが評価されます。

注意点として、最終的なランクは各要素合わせた総合的な評価ではなく、全項目で最も負荷が高い項目に合わせてランクが設定されます。
つまり、3つ以上のスキンメッシュを持つアバターは他の項目が全て Excellent の数値を下回っていても、スキンメッシュの評価が Medium となるため、Medium ランクのアバターとして評価されます。

項目ExcellentGoodMediumPoor
Polygons32,00070,00070,00070,000
Bounds Size2.5m×2.5m×2.5m4m×4m×4m5m×6m×5m5m×6m×5m
Skinned
Meshes
12816
Meshes481624
Unique
Materials
481632
Dynamic Bone
Components
041632
Dynamic Bone
Transforms
01632256
Dynamic Bone
Colliders
00432
Dynamic Bone
Collision
Check Count
008256
Animators141632
Bones75150256400
Lights0001
Particle Systems04816
Total Particles
Active
030010002500
Mesh Particle
Active Polys
0100020005000
Particle Trails
Enabled
FalseFalseTrueTrue
Particle Collision
Enabled
FalseFalseTrueTrue
Trail Renderers1248
Line Renderers1248
Cloths0111
Total Cloth
Vertices
050100200
Physics Colliders0188
Physics Rigidbodies0188
Audio Sources1488

要注意項目について

特にダイナミックボーンやパーティクルシステムの使用は注意が必要です。
ダイナミックボーンコライダーやパーティクルトレイルを1つでも設定すると、その時点で Medium 以下の評価が確定します。

逆に言えば、これらの項目を削除すると評価が劇的に改善されるケースも多いです。
交流が目的の大規模イベントでは、ダイナミックボーンやパーティクルシステムを外したモデルを別途用意しておくと良いかもしれません。
上手く使い分けていきましょう。