性能评级
虚拟形象性能评级系统允许你通过分析用户虚拟形象上的组件来了解该虚拟形象对性能的影响程度。你也可以用它来查看自己的虚拟形象性能表现。
该系统旨在告知用户其虚拟形象上哪些组件可能是最影响性能的,并提供关于优化虚拟形象时应注意哪些方面的基本建议。
它还用于驱动最低显示性能评级系统,这是一种让用户根据性能评级决定显示哪些虚拟形象的方式。
该系统并非虚拟形象性能的最终权威标准,但它是判断虚拟形象是否需要进一步优化以达到良好性能的通用指南。
尽管性能评级系统尽可能地判断虚拟形象性能的"最坏情况",但有很多方式可以让一个优化良好的虚拟形象显示为"非常差",而让一个 FPS 杀手评级为"优秀"。
对于喜欢钻研技术的人:性能评级系统基于对虚拟形象属性的静态分析,而不考虑动画器、着色器、纹理分辨率、像素光源等诸多因素。然而,它在 95% 的情况下都能很好地作为检测问题虚拟形象的试金石!
简要说明
目标是良好(Good)评级。 如果达不到,中等(Medium)也完全没问题。
创建虚拟形象已经很难了,创建优化的虚拟形象则更难。这是一项需要长期积累的技能!
请记住,VRChat 中的许多活动、群组和地点可能会要求你在使用"非常差"评级的虚拟形象时更换它。因此,即使你选择在与朋友的小规模实例中使用"非常差"的虚拟形象,也请确保你还有一个适用于更多人数的实例的虚拟形象。
你的虚拟形象会影响其他所有人 的帧率,所以请注意你的选择如何影响他人的体验。否则,他们可能只能看到你的回退虚拟形象!
性能评级图标
当你打开快速菜单时,你会看到用户名牌上方出现的图标。
评级如下:
| 图标 | 性能评级 | 描述 |
|---|---|---|
| 优秀(Excellent) | 这是你能达到的最好级别!如同"冰箱上的金星"般的评级。 | |
![]() | 良好(Good) | 足够好了!一个很好的目标。 |
![]() | 中等(Medium) | 别被名字误导了,中等已经相当不错了。如果你达到了这个级别且不想再进一步优化,完全没问题。 |
![]() | 差(Poor) | 还需要一些优化。 |
![]() | 非常差(Very Poor) | 这个虚拟形象存在严重的性能问题。由于此评级没有上限,这个虚拟形象可见时很可能导致你的性能受到影响。 |
查看详细虚拟形象统计
当你打开快速菜单点击一个用户时,你会注意到左侧有一个新的 "Show Avatar Stats" 按钮,显示该用户虚拟形象性能评级的图标。
![]()
点击此图标,你可以查看该虚拟形象的详细虚拟形象统计。你可以在自己的虚拟形象菜单中,点击某个虚拟形象,然后点击屏幕左下角的 Avatar Stats 按钮来查看自己的虚拟形象统计。
![]()
点击 Avatar Stats 按钮后,会弹出一个窗口,显示你正在查看的虚拟形象的详细信息,或者你自己的虚拟形象(如果你在虚拟形象选项卡中点击了该按钮)。
![]()
文本的颜色对应于该特定统计项将评级"拉低"到的等级。
你还会看到"Original"和"Perf Filtered"行形式的"前后对比"。如果你正在使用最低显示性能评级系统,你可以看到系统移除组件前后的统计数据。如果最低显示性能评级系统因性能原因阻止了某个虚拟形象,你将只能看到原始统计数据。
在上面的示例中,光源和粒子系统因超过定义的限制而被禁用。由于粒子系统每个至少使用一个材质,粒子系统的材质数量也会从过滤前的虚拟形象中减去。
你还可以看到我们链接到了我们的文档,特别是虚拟形象优化技巧。
虚拟形象性能评级统计项
以下是系统检查的所有统计项及其描述。
加粗的统计项如果超过最低显示性能评级,将导致虚拟形象被完全阻止。如果其他统计项(边界大小除外)超过最低显示性能评级,虚拟形象将仅被部分阻止。虚拟形象将移除与超出统计项相关的任何组件后显示。
例如,当最低显示性能评级设置为"差"时,一个带有 9 个拖尾渲染器("非常差")的虚拟形象将显示为移除了所有拖尾渲染器。有关更多信息,请参阅最低显示性能评级。
| 虚拟形象质量 | 质量描述 |
|---|---|
| Triangles | 模型的三角面数量。(过去曾被错误地称为"多边形"。) |
| Bounds Size | 虚拟形象的总大小。如果这个值非常大,用户可能在虚拟形象上有一个不总是显示的大型动画。 重要提示:边界大小不会导致虚拟形象被阻止,即使它低于"最低显示性能评级"设置。 |
| Texture Memory | 虚拟形象纹理估计使用的内存量。这些纹理占用系统 RAM 和显存中的空间。 |
| Skinned Meshes | 虚拟形象上蒙皮网格渲染器组件的数量。 |
| Basic Meshes | 虚拟形象上(非蒙皮)网格渲染器组件的数量。 |
| Material Slots | 虚拟形象上的材质槽数量。材质槽是网格上放置材质的位置。这计入子网格创建,从而产生更多 的 draw call。请记住,粒子系统使用一个材质槽,带拖尾的粒子系统使用两个,线条渲染器使用一个材质槽。 |
| PhysBones Components | 虚拟形象上 PhysBone 组件的数量。 |
| PhysBones Affected Transforms | 虚拟形象上受 PhysBones 组件影响的变换总数。 |
| PhysBones Colliders | 虚拟形象上 PhysBone 碰撞体脚本的数量。 |
| PhysBones Collision Check Count | 每个碰撞体可以影响多少个 PhysBone 变换的总和。这可能会重复计算变换,因为单个变换可能受多个碰撞体影响。 |
| Contacts | 虚拟形象上 Contact 的数量。不统计筛选设置为"Local Only"的接收器。 |
| Constraint Count | 虚拟形象上 VRChat Constraints 和 Unity Constraints 的总数。点击此处获取更详细信息。 |
| Constraint Depth | 虚拟形象上所有约束中最深的依赖链。点击此处获取更详细信息。 |
| Animators | 虚拟形象上 Animator 的数量。重要提示:由于根动画器被计入,此值至少为 1。这意味着要获得"优秀"评级,你不能有额外的动画器。 |
| Bones | 虚拟形象骨骼中的骨骼数量。 |
| Lights | 虚拟形象上 Light 组件的数量。 |
| Particle Systems | 虚拟形象上 Particle System 组件的数量。 |
| Total Particles Active | 虚拟形象上所有粒子系统的 maxParticles 之和。 |
| Mesh Particle Active Polys | 活跃粒子系统发射的网格粒子的总三角面数。即 maxEmission * meshParticleVerts。 |
| Particle Trails Enabled | 如果虚拟形象上的任何粒子系统启用了粒子拖尾,此项将为 True。 |
| Particle Collision Enabled | 如果虚拟形象上的任何粒子系统启用了粒子碰撞,此项将为 True。 |
| Trail Renderers | 虚拟形象上 Trail Renderer 的数量。 |
| Line Renderers | 虚拟形象上 Line Renderer 的数量。 |
| Raycasts | 虚拟形象上 VRCRaycast 组件的数量。 |
| Cloths | 虚拟形象上 Cloth 组件的总数。 |
虚拟形象性能评级 - 每个评级的最大值
下面你将找到每个性能评级的限制。如果你的任何类别超过了这些数值,你的评级将降级到下一等级。
例如(在 PC 上),如果你的虚拟形象有 2 个蒙皮网格,你的虚拟形象将被评为"良好",因为这超过了"优秀"的标准,但未超过"良好"的标准。
所有 GameObject 和组件,包括当前已禁用的,都会计入虚拟形象性能评级。
如果你在虚拟形象的任何网格上禁用了 Mesh Read/Write(包括粒子系统),"Triangles"计数将显示"Mesh Read/Write Disabled",并且无论虚拟形象的实际三角面数量如何,虚拟形象的性能评级将立即降级为"非常差"。
SDK 会对此发出警告,并要求你在上传前修复此问题。
PC 限制
| 虚拟形象质量 | 优秀 | 良好 | 中等 | 差 |
|---|---|---|---|---|
| Triangles | 32,000 | 70,000 | 70,000 | 70,000 |
| Bounds Size1 | 2.5m x 2.5m x 2.5m | 4m x 4m x 4m | 5m x 6m x 5m | 5m x 6m x 5m |
| Texture Memory | 40 MB | 75 MB | 110 MB | 150 MB |
| Skinned Meshes | 1 | 2 | 8 | 16 |
| Basic Meshes | 4 | 8 | 16 | 24 |
| Material Slots | 4 | 8 | 16 | 32 |
| PhysBones 组件 | 4 | 8 | 16 | 32 |
| PhysBones 受影响的变换 | 16 | 64 | 128 | 256 |
| PhysBones 碰撞体 | 4 | 8 | 16 | 32 |
| PhysBones 碰撞检测次数 | 32 | 128 | 256 | 512 |
| Contacts | 8 | 16 | 24 | 32 |
| Constraint 数量 | 100 | 250 | 300 | 350 |
| Constraint 深度 | 20 | 50 | 80 | 100 |
| 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 |
| Raycasts2 | 1 | 4 | 8 | 15 |
| 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 |
下表描述了 PC 虚拟形象获得特定性能评级的要求:
PC 默认性能评级阻止
在 PC 上,默认的最低显示性能评级级别为"非常差"。这意味着默认情况下用户可以看到大多数虚拟形象。如果用户启用了最低显示性能评级系统,他们可以选择隐藏性能较差的虚拟形象。
然而,如果你的虚拟形象极其未经优化,VRChat 可能会阻止你使用它。你可以通过提高其性能评级、确保不超过 VRChat 的虚拟形象大小限制然后重新上传虚拟形象来解决此问题。
移动端限制
Android 和 iOS(手机、平板和 Meta Quest)上的 VRChat 比 PC 上的 VRChat 有更严格的限制。
下表描述了移动端虚拟形象获得特定性能评级的要求:
| 虚拟形象质 量 | 优秀 | 良好 | 中等 | 差 |
|---|---|---|---|---|
| Triangles | 7,500 | 10,000 | 15,000 | 20,000 |
| Bounds Size1 | 2.5m x 2.5m x 2.5m | 4m x 4m x 4m | 5m x 6m x 5m | 5m x 6m x 5m |
| Texture Memory | 10 MB | 18 MB | 25 MB | 40 MB |
| Skinned Meshes | 1 | 1 | 2 | 2 |
| Basic Meshes | 1 | 1 | 2 | 2 |
| Material Slots | 1 | 1 | 2 | 4 |
| Animators | 1 | 1 | 1 | 2 |
| Bones | 75 | 90 | 150 | 150 |
| PhysBones 组件3 | 0 | 4 | 6 | 8 |
| PhysBones 受影响的变换3 | 0 | 16 | 32 | 64 |
| PhysBones 碰撞体3 | 0 | 4 | 8 | 16 |
| PhysBones 碰撞检测次数3 | 0 | 16 | 32 | 64 |
| Contacts3 | 2 | 4 | 8 | 16 |
| Constraint 数量3 | 30 | 60 | 120 | 150 |
| Constraint 深度3 | 5 | 15 | 35 | 50 |
| Particle Systems | 0 | 0 | 0 | 2 |
| Total Particles Active | 0 | 0 | 0 | 200 |
| Mesh Particle Active Polys | 0 | 0 | 0 | 400 |
| Particle Trails Enabled | False | False | False | True |
| Particle Collision Enabled | False | False | False | True |
| Trail Renderers | 0 | 0 | 0 | 1 |
| Line Renderers | 0 | 0 | 0 | 1 |
| Raycasts2 | 1 | 2 | 4 | 8 |



