本日は VRChat の技術調査枠です。
2018/12/21 の VRChat 2018.4.4 のバージョンから「AvatarPerformance UI」が追加されました。
これにより、Avatar画面に「AvatarStatus」の項目が追加されました。
「AvatarStatus」画面を開くと、対象のアバターについて描画負荷に関するパフォーマンスが表示されます。
[Overall Perfomance]の項目に表示されるステータスはパフォーマンスランクと呼ばれ、アバターの描画負荷の目安になります。
以下の公式資料を元に、このパフォーマンスランクの情報をまとめます。
docs.vrchat.com
本記事は 2019/1/21現在、VRChat 2018.4.4 時点の情報です。
パフォーマンスランクの段階
パフォーマンスランクの評価段階についてです。
ステータスは5種類あり、上に行くほど描画負荷が軽く、下に行くほど負荷が高いモデルになります。
表の[Performance Rank Icon]は後述するネームプレート上のアイコンとして表示されます。
・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.)
パフォーマンスランクのアイコン
クイックメニューを開いた状態で、ユーザのネームプレートを確認します。
すると、ネームプレートの上にアイコンが表示されます。
左側にあるアイコンが、そのユーザーのアバターのパフォーマンスランクを示します。
パフォーマンスに影響する要素
パフォーマンスに影響する要素は以下の通りです。
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 ランクのアバターとして評価されます。
項目 | Excellent | Good | Medium | Poor |
---|---|---|---|---|
Polygons | 32,000 | 70,000 | 70,000 | 70,000 |
Bounds Size | 2.5m×2.5m×2.5m | 4m×4m×4m | 5m×6m×5m | 5m×6m×5m |
Skinned Meshes | 1 | 2 | 8 | 16 |
Meshes | 4 | 8 | 16 | 24 |
Unique Materials | 4 | 8 | 16 | 32 |
Dynamic Bone Components | 0 | 4 | 16 | 32 |
Dynamic Bone Transforms | 0 | 16 | 32 | 256 |
Dynamic Bone Colliders | 0 | 0 | 4 | 32 |
Dynamic Bone Collision Check Count | 0 | 0 | 8 | 256 |
Animators | 1 | 4 | 16 | 32 |
Bones | 75 | 150 | 256 | 400 |
Lights | 0 | 0 | 0 | 1 |
Particle Systems | 0 | 4 | 8 | 16 |
Total Particles Active | 0 | 300 | 1000 | 2500 |
Mesh Particle Active Polys | 0 | 1000 | 2000 | 5000 |
Particle Trails Enabled | False | False | True | True |
Particle Collision Enabled | False | False | True | True |
Trail Renderers | 1 | 2 | 4 | 8 |
Line Renderers | 1 | 2 | 4 | 8 |
Cloths | 0 | 1 | 1 | 1 |
Total Cloth Vertices | 0 | 50 | 100 | 200 |
Physics Colliders | 0 | 1 | 8 | 8 |
Physics Rigidbodies | 0 | 1 | 8 | 8 |
Audio Sources | 1 | 4 | 8 | 8 |
要注意項目について
特にダイナミックボーンやパーティクルシステムの使用は注意が必要です。
ダイナミックボーンコライダーやパーティクルトレイルを1つでも設定すると、その時点で Medium 以下の評価が確定します。
逆に言えば、これらの項目を削除すると評価が劇的に改善されるケースも多いです。
交流が目的の大規模イベントでは、ダイナミックボーンやパーティクルシステムを外したモデルを別途用意しておくと良いかもしれません。
上手く使い分けていきましょう。