I create items that use cloth.
I believe that cloth is a very important component, as it allows for expressions that cannot be reproduced with PhysBone.
I have the following concerns about the new 2000 vertex limit.
The meaning changes significantly depending on whether the limit is set on a per-avatar basis or a per-component basis.
If the limit is set on a per-avatar basis, I am opposed, as it will greatly narrow the range of expression possible with cloth.
On the other hand, if it is set on a per-component basis, I am in favor of it.
The reason for this is stated in the NVIDIA PhysX SDK documentation:
“Performance Tips” from NVIDIA PhysX SDK Documantation.
The runtime of the cloth simulation scales approximately linearly with the number of cloth particles and the solver frequency: Simulating a higher resolution mesh with more particles and increasing stretch stiffness and collision handling fidelity with higher solver frequencies increase the time it takes to simulate one frame. Additionally, there is a performance drop somewhere below 3000 particles for the GPU solver as explained in the next section. As a rough guideline, a dozen cloth instances with 2000 particles each and a solver frequency of 300Hz can be simulated in real-time as part of a game.
What’s important is not just the number of vertices in the cloth, but the setting value for the entire component.
Limiting the number of vertices alone will not essentially improve performance, and will actually limit the expressiveness possible.
In my opinion:
I think it’s okay to allow up to 3000 vertices per component.
The things that truly affect performance are the Self-Collision and Solver Frequency values.
In particular, if the Solver Frequency value is excessively large, a large amount of computing resources will be required when used in combination with Self-Collision. This is the main cause of crashes.
Specifically:
Enabling Self-Collision increases the calculation cost several times, so we will limit it.
NVIDIA’s recommended Solver Frequency range is 120-300, so a maximum of 300 is recommended, with around 180 recommended.
Limiting these two points should significantly improve performance.
Also, there is currently a lack of documentation on the correct use of the Cloth component.
At least in the Japanese community I belong to, this has resulted in the following issues:
Experienced creators learn directly from other experienced creators and set things up correctly.
On the other hand, other users lack information and may end up setting things up incorrectly.
We believe this situation would improve if official Cloth-related documentation were provided.
I think utilizing the existing shield rank would also be an effective performance improvement measure.
For example, if the shield level is set to maximum, clothing will automatically be disabled.
I think this makes sense, as situations where the shield is used to its maximum are likely to be resource-limited.
It also seems that VRChat has not given much thought to the clothing component up until now (for example, the avatar rank criteria have not been updated).
I understand that resources are limited, but I have one request.
Please enable “Update Offscreen” for the Skinned Mesh Renderer only when using Cloth.
This was previously possible, but was disabled at some point.
However, because Cloth only performs calculations when within view, unnatural acceleration occurs when a character moves out of view and then reappears, resulting in a distorted, unsmooth movement.
If this were fixed, Cloth would look more natural and beautiful.
As long as it’s under appropriate restrictions, it won’t cause performance degradation, so I’d be happy if they released it.
I’m glad that VRChat has mentioned the Cloth component for the first time in a while.
Thank you.