Dynamic Clothes Profile - for performance improvements
Shinyflvres
Recently, I tested an internal prototype in Unity 2022 that could be very useful for VRChat avatar performance.
## Dynamic Clothing Profiles
VRChat recently released the Accessories Shop, and it made me think about a similar system for avatar outfits.
Right now, many users upload avatars with multiple outfits included in the same avatar package. This often results in avatars with 500,000+ triangles, even if only one outfit is visible at a time.
A better approach could be a
Dynamic Clothing Profile
system.The idea is simple:
VRC+ users could upload one base avatar with multiple outfit slots, for example 3 to 5 slots. When the user changes outfits, the currently active outfit gets unloaded and the selected outfit slot gets loaded instead.
This means the avatar does not need to keep every outfit active or loaded at the same time.
## Why this would help
This could allow users to keep their avatar in a Medium or even Good performance rank while still having multiple outfit options available.
Instead of uploading one avatar with five full outfits included, users would upload:
* One base avatar
* Several separate outfit assets
* Outfit slots that can be loaded and unloaded dynamically
Only the selected outfit would be active, while unused outfits would not affect the current avatar performance as much.
The important part would be preserving the bone links and attachment points between the base avatar and the clothing asset. VRChat already has a similar concept with the Accessories system, so this could potentially build on top of that existing work.
## Benefits for users and creators
This would help reduce bloated avatars, especially avatars that include many outfit toggles. It would also make outfit management cleaner for creators, since they would not need to upload the same avatar multiple times with different outfits.
For users, it would reduce clutter in the avatar upload list and make outfit switching more convenient.
For creators, it could create a cleaner workflow for selling and distributing outfit packs.
## Benefits for VRChat
This could also reduce storage usage on VRChat’s servers.
Instead of users uploading the same avatar five separate times, each with a different outfit, they could upload one base avatar and attach multiple outfit slots to it.
This could reduce duplicate uploads, lower unnecessary storage usage, and encourage better avatar optimization.
It could also be a strong VRC+ feature because it gives subscribers a practical benefit without locking normal avatar uploads behind a paywall.
## Technical notes
I tested a basic version of this system in Unity 2022 with runtime loading and unloading of outfit assets. The implementation was fairly straightforward in a simple prototype.
The main technical requirement would be a safe and controlled way to:
* Load an outfit asset
* Attach it to the existing avatar skeleton
* Preserve bone references
* Unload and dispose of the previous outfit
* Recalculate or update avatar performance stats based only on the currently loaded outfit
This would not replace normal avatar uploads. It would simply give users and creators a cleaner, more optimized way to handle multiple outfits on one avatar.
I think this could be a major improvement for avatar performance, creator workflows, VRC+ value, and server-side storage efficiency.
Log In
Jaywasreal
this would help alot since sometimes one single avatar can tank my frames from 40 to 10
WubTheCaptain
This came up some months before somewhere on this Canny and the response from me was that those base avatars won't be the most optimized for every set of clothes due to the base avatar having triangles that could be removed for a specific set of clothes, and various UV layout inefficiencies on texture memory usage/material slots.
Shinyflvres
WubTheCaptain
Do not take this as an attack. I am writing this comment based on facts and sharp criticism of your comment:
Your point does not make much sense.
You can pick one:
Eboy avatar with 500,000 triangles, 140 materials, and 80 skinned mesh renderers.
Versus
Eboy avatar with 120,000 triangles, 40 materials, and 10 skinned mesh renderers.
Regarding your point that "those base avatars won't be the most optimized for every set of clothes due to the base avatar having triangles that could be removed": it is very possible to reduce avatars like Rusk, Karin, Manuka, or Airi down to around 5,000 triangles. It is also easily possible to decimate the chest and belly areas on those models without any visible difference. If you cannot manage that in Blender, that is purely a skill issue.
My Airi base, the Ayrina mod, has around 17,500 triangles overall without deleting any part of the mesh.
This is not about getting every avatar to Medium. It is about overall performance. As I said in the example above, you can either have 500,000 triangles or 120,000 triangles. You can only pick one. If you want to pick the first one, good luck with performance.
You can also just block avatars, but not everyone blocks avatars the way you do.
Regarding:
//Edit "the response from me was that those base avatars won't be the most optimized for every set of clothes due to the base avatar having triangles that could be removed for a specific set of clothes"
Not every avatar wears full jeans or a hoodie either. There are avatars with bikinis or skimpy clothes that show much more skin than a casual outfit.
Simply denying this Canny is basically denying free optimization for both VRChat servers and public instances. It would mean fewer uploads, less texture memory allocation, fewer draw calls, less skinning, less IK solving, and fewer PhysBone components running in the background.
Shinyflvres
WubTheCaptain
//Edit 2
- Fewer uploads to VRChat storage = lower storage costs for VRChat.
- Less chaos in the user's "Uploaded" tab = more control and easier avatar management.
- Fewer draw calls, fewer materials, less skinning, fewer meshes, and less texture memory = better performance.
- Fewer PhysBone component allocations = less CPU overhead.
- Fewer duplicated avatar uploads = cleaner creator workflows.
- Less unused outfit data being loaded = lower memory usage in public instances.
- Better optimization without forcing creators to remove customization options.
It does not matter if the avatar still stays at Poor or Very Poor. There are several users, including myself, who have every avatar enabled regardless of rank.
If this optimization were implemented by VRChat developers, it would mean more free frames for me while I would still visually see no difference.
It is literally a free win for professionals and for avatar creator noobs.
Nova Gesicht
Very nice good job Shiny