Heard avatar creators dont optimize avatars. Maybe force them to and make tutorials on how?

I heard that alot of avatar creators do not optimize their avatars, and share these unoptimized avatars to be used, and end up making others lag in game.

Maybe VRChat can force optimized avatars?

And to make it easy for avatar creators to optimize their avatars, maybe make a series of videos covering how to optimize each individual part of the avatar?

And make it very easy and simple to follow, make it slow, talk slowly and clearly, explain everything clearly, maybe too much, and basically act like the viewer knows nothing, and from that viewpoint make the video really easy and simple to follow.

Would have to be really slow, talk really slowly, move really slowly in Blender, and basically follow and guide so much and make the tutorial so easy and hold their hand and guide them so much in the video that there is no more questions or difficulty in optimizing avatars.

They can just turn their brain off and follow the video to optimize their avatar, such a easy video even people who arent that smart can follow it.

=====

And to make sure avatar creators actually find these videos and follow them, mention them somewhere where they are likely to see them, such as when in the process of uploading a avatar to VRChat or something…instead of them never knowing the video existed and never having seen it.

Optimizing an avatar on VRChat is unfortunately very hard especially on mobile devices. You need to take a lot of time as an avatar creator to manually go into the blend or fbx file to see what needs to be shown and what is not. Some avatars have a lot of meshes as well meaning it decreases the performance ranking.

When I say “especially on mobile devices”, VRChat has strict requirements for avatars on Quest since running shaders is really a difficult thing to do. It’s not a bad idea to use custom shaders even if they’re lightweight, but with a lot of avatars on Quest, they need to be limited or blocked so users don’t end up crashing.

1 Like

Avatars and assets being unoptimized from stores is both a blessing and a curse for a creator.

You get to mix and match, take what you like, put it together easily when the meshes are all separate. You’re often also given the means to utilize film/animation grade assets to create better game ready assets you like for your needs. It also puts more responsibility on you as a creator for doing the right thing with the way you want your avatar to be.

But you may also be asking amateur creators and users to optimize their avatars before upload.

Let’s understand there are different goals and targets for optimization:

  • Game-ready avatars made for mobile platforms. (Good, Medium, maybe Poor on mobile.)
  • Avatars (Good/Medium) for an event with 80 or 100 users in a small room, or public instances like The Black Cat.
  • Something you wear around 10-15 friends. (Good/Medium, could be semi-optimized Very Poor in some cases.)
  • Photography/film assets (one or few users). An avatar which has the performance cost of 4½ optimized avatars, is Very Poor with six 4K textures for one outfit? Sure!
  • Paripi animation avatars with particle guns, screenspace FX, etc. No limits, you’re in a showcase world and everyone’s there to show your avatar. Go crazy, the avatar performance stats matter less here than your actual framerate.

There is no one solution, it is part intuition and dependent on the project.

How to draw an owl:

  1. Draw some circles.
  2. Draw the rest of the f**king owl.

You’re already in the statistically skilled top 5.4% of computer users or “level 3” in levels of skill if you can handle a multiple step process of installing Unity Editor, registering an account with Unity, acquiring a personal license for Unity Editor, installing VRChat Creator Companion / ALCOM, and open an empty avatar project. Most of the population on planet Earth is unable to succeed in this task (without guidance), even in developed countries.

The four levels of computer skills, and the surprising number of adults who fall short | World Economic Forum

You may also be asking amateur users to spend tens or hundreds of hours away from their social activities on VRChat to learn a new skill (or twenty new skills) that may not translate into their work skills, on the side of regular jobs most adults have on their free time after work, shared with other responsibilities.


A video could tell you to add d4rkAvatarOptimizer to an avatar to optimize it, but the rest is dependent on intuition and understanding your personal needs to get the most out of it.

If I add d4rkAvatarOptimizer on two different avatars in different stages of optimization, I will end up with vastly different results.

Here’s a simple Rusk avatar by komado, after modifying the FX layer to remove gameobject toggles (and some optional texture atlassing to reduce from 6 materials to 3 materials):

Bam. One of the easiest avatars to optimize. Good rated on all platforms. Only a few skills required:

  • Learning how to setup an avatar project and to upload an avatar.
  • Adding d4rkAvatarOptimizer to your project and avatar.
  • Deleting unused FX layers.
  • Optionally merging or deleting physbones.
  • Optionally using MA Mesh Cutter to remove unseen parts of the avatar.

And here’s another more complex avatar, RURU by Rhimaru, with a half dozen outfits provided before doing anything to optimize the FX layer by hand (8 out of 55 FX layers shown):

You open up the OptimizedLayer FX layer and find this monstrosity of a direct blend tree, for all the toggles to understand (and this is quite optimized):

Close-up screenshot of OptimizedLayer

There’s no handholding here, d4rkAvatarOptimizer is not a silver bullet to fix everything for you. You’ll have to figure it out. The effort to optimize that down? Learning several new skills:

  • How to create and setup your own FX controller.
  • How to create a new direct blend tree in your FX controller (preferably).
  • Removing outfits from the project you don’t use.
  • How to record new animation clips (without utilizing VRCFury if you prefer).
  • How to setup UV tile discards in a material.
  • How to setup a mesh for UV tile discards with PA Assign UV Tile, or in Blender.
  • Optionally bake in hue shift customizations into the materials, remove unused decals, etc.

That’s at least six separate videos or articles worth of information. The results:

Clothes DBT


The fishnet mesh from one of the clothes available that you used to cover the top of your body? The high polygon, animation grade body base used?

Performance ranking

RURU picture set 1: A fishnet mesh, on its own transparent material on a Very Poor rated RURU. Results in overdraw for the transparent bits. Incompatible on mobile platforms due to transparency.

It can be a body texture to save triangles and texture memory, in an optimized version. Bake the custom normals from a high poly source into a lower poly body mesh and it’ll still look fine.

Performance ranking

RURU picture set 2: A fishnet texture projected onto the main body material, baked onto the body texture as an opaque “tattoo” (or an optional decal for a toggle) on a Medium rated RURU. Reduced or no overdraw. Compatible on mobile platforms.

Realizing you can optimize something like that with texture projection in Blender and fake transparency onto an opaque texture is intuition. At least two different skills for the fishnet alone, on top of basic understanding of how to use Blender is required. Add at least another four skills required for understanding good topology, how to remove edge loops in Blender, how to export the result from Blender as an FBX file with the correct export settings, and setting up your FBX in Unity for the lower poly body mesh.


You want a Manuka tail and ears from STUDIO JINGO on your avatar, with a custom hair? See the tail in the middle of the texture, ears at the top corners:

That 4K texture (10.7 MB) is costing you a lot of texture memory for the tail alone with wasted UV space.

Learn a new skill in Blender to pack the UVs better onto a 2K texture (2.7 MB), discarding the rest of the hair. No quality loss.

It’s intuition on optimization. The most basic answers on social media you would find is to reduce texture resolution of Manuka_hair texture to 2K, which would also reduce the texture quality on the tail.

Once again, it’s two skills to learn for a texture memory optimization: UV packing, and texture baking.


Those six materials were too much for your Rusk avatar?

Atlas the materials and textures.

This is several different articles/videos worth of skills to learn:

  • Creating your own materials with lilToon or Poiyomi Toon, including understanding main color textures (albedo), masks, possibly normal maps, emissions, etc.
  • How to use global masks in Poiyomi Toon, if you want it to be more optimized on texture memory.
  • Baking some masks into vertex color data onto the avatar FBX in Blender, to reduce texture memory utilization without needing a mask texture with Poiyomi Toon.
  • Stitching textures together with a Unity tool or in an image editor.
  • Laying out the mesh UVs differently in Blender to support your stitched atlas texture and utilizing several UVs in the materials.

There, see how easy it is to “draw an owl” (optimize an avatar)? :joy: “Just figure it out. There’s no playbook. You’re making the playbook. Draw the f**king owl.”

You set a goal for yourself, and find a way to achieve that.

You get better by practicing, doing more things.

It’s a lot of skills to learn.

But I’d take the animation grade, Very Poor rated RURU anytime over the Medium version for photography.


1 Like

There has been a guide for how to optimize avatars forever.
See: Avatar Optimization Tips | VRChat Creation
Alternatively you can always ask on the VRChat Discord server, there is a channel there dedicated to avatar optimization discussion.

The main issue is that very few people use the guide, because either they don’t know how to actually do the optimization, or they don’t want to bother with it. In some cases people even think they know better and ignore optimization on purpose.

VRChat can’t exactly go out and say “all VERY POOR avatars are now banned” without receiving MAJOR backlash from the whole playerbase. Most of the players that have/use very poorly optimized avatars aren’t doing it by choice, they are just casual users that can’t do the optimization themselves, so they would be very negatively impacted by such a major forced approach.

What VRChat has been doing instead is implementing stuff like the “performance gated instance”, which is a way for them to slowly encourage the playerbase to at least use optimized at big events. This is more subtle, and won’t affect everyone in a negative way. Instead it is for the event organizers to decide if their community wants to force people to use optimized avatars.

Maybe a bit crackpot but I think vrchat might get more buy in from creators if the performance ranks lined up, like maybe make the performance system recognize a quest avatar as poor if it has 36000 polygons and only one material slot. 20202 polygons with 2 material slots should still be VeryPoor under this suggestion

Or maybe go the other way and add a new performance rank on PC for an avatar with less than 20000 polygons. So that when someone makes a mobile friendly version of their avatar they can potentially show that off to PC users in the form of an s tier performance avatar

Personally for my own stuff, I’ve been working on a good ranked PC avatar for myself, and I’ve paired it up with an overly decimated model with zero toggles for the Android and iOS version. The imposter system is nice, but I like to wave and point at people and with the current imposter system you can’t see what the fingers are up to.

Copying the tl;dr from the bottom to save time:

TL;DR: Base avatar and clothing creators who sell their stuff have no financial incentive to make optimized or mobile versions, as you really need to do it from the ground up with the intent to make an optimized or mobile version. If end-users are willing to shell out regardless of how optimized an asset is, then not optimizing literally raises their per-hour wage, and while some blessed creators are willing to put in the work anyway, it’s hard to fault anyone who isn’t. As such, other creators modifying, kitbashing, and otherwise customizing avatars will necessarily have a significantly harder time optimizing post-hoc, especially for mobile. You really need to be willing to dedicate a lot of time or channel some sort of hyper focus to stick with it long enough to not only learn the techniques but apply them to ever-more-unoptimized assets coming from above.

-–

As someone who has spent literal hundreds of hours optimizing my avatars (including all quest/ios versions being under 20k polys and ‘poor’ rated), I wholeheartedly agree that optimizing for Quest/iOS can be incredibly painstaking and requires a lot of time and effort. There is sadly no ‘magic bullet’ to quickly get an avatar built for PC under the ‘very poor’ mobile limits, and whether we like to admit it or not, there is a WHOLE LOT of entitlement and elitism among a large percentage of PCVR users who are fortunate enough to be able to afford and operate a PCVR-capable machine. I’m willing to bet even if there was such a one-click optimization button, a fair amount of users wouldn’t bother clicking it. Imposters are sort of an attempt toward something like that, but we all know they’re far from perfect, and even if they were, some people would still insist on using fallbacks.

To make a truly optimized Quest/iOS avatar, a creator pretty much has to build it from the ground up with optimization in mind. The number of creators offering ‘quest versions’ of their avatars is vanishingly small (and in some cases it’s just a prefab with the mobile shaders and everything else - polycount, meshes, materials - still wildly over the limits), and the only way that number is going to grow is if the people who make the avatars feel the money they earn from selling optimized versions is worth the extra time and effort required. That’s not a dig at creators; this stuff is *hard* and they deserve to get paid for the time and energy they put into making things. And as Wub said earlier in the thread, there are many goals and targets for optimization, some of which require very different skillsets and/or workflows.

Maybe some creators would be more willing to make ‘mobile optimized’ avatars if the limits were adjusted, but that’s one heck of a big ‘maybe’. The VRC staff that post here have agreed countless times that reviewing the avatar limits is something that needs to happen, and, yeah, it’s frustrating when things some of us think should be a much lower priority or off the roadmap entirely (I will die on the hill that is boops) take precedent, but adjusting or replacing something as fundamental as the performance ranking system is also *really hard* - especially for the mobile limits. You have to remember there are a lot more standalone android-based headsets than just the Quest line, and Meta undoubtedly ‘ruined’ VR in a lot of ways by (among other things) insisting on making the device a ‘gaming console’ in and of itself, rather than a PC peripheral that lets you experience games in a new way. Also by artificially lowering the price and purposefully taking a loss on every unit, skewing peoples’ expectations of what a VR headset should be, do, and cost. It let a lot of people who otherwise would never have considered or been able to afford a headset get one, but whoa mama did we all pay a hefty price for it in the end. Remember, if a product is free or cheaper than it logically should be, YOU are the product.

The point is, there are a lot of different pieces of hardware with a lot of different specs that, ‘officially’ supported or not, people are using to play VRChat. Making it ‘tolerable to play with strict performance limits’ for 90% of that userbase is a much better strategy than ‘entirely unplayable for 70% but with looser performance limits for the 30% who can run them’.

That being said, that entire missive is entirely about optimizing for Quest/iOS.

Before I go off on a rant about PC avatars: Tutorials. Yes, there are tutorials on optimization, but so many of them are just not any good. You have the ones with perfect audio and editing that tell you absolutely nothing you wanted to know, and the ones by people who know what they’re doing but their mic is a tin can and a piece of string and/or they have half the screen covered by their pngtuber avatar. I’m sure there are a lot of really great and helpful ones out there that have appeared in the few years since I started doing this stuff, but I honestly haven’t looked since they weren’t there 3 years ago when I needed them and I’ve worked out my own workflow at this point. And the older ones with higher viewcounts are more likely to appear first in a search, which means anyone brand new to this is going to get poor quality or outdated information. I can empathize with people who go looking for how to do this stuff and get frustrated when they can’t find anything useful, and if your free time is limited, it’s easier to just not bother.

Anyway, old man rant ahead.

PC optimization though? Man, all y’all pushing over the very poor polycount for PC are just bad at this and need to learn some restraint. 70k is a ludicrously generous poly limit for avatars in a game where the average effective per-eye resolution is barely 2k x 2k and a likely majority of users need corrective lenses anyway. People walkin’ around with half a million polys and 8k textures is like trying to push uncompressed 7.1 dolby surround through a pair of $10 wired earbuds from the discount bin at best buy.

Physics simulations in Unity games are not even remotely accurate enough for 30 physbones with a thousand collisions each to be worth the time it took to weight paint everything, let alone the performance hit of that many bones.

We all have dozens upon dozens of upload slots for avatars and it takes mere seconds to switch between them; there’s no reason to have hundreds of thousands of polys and multiple menu toggles’ worth of clothes on a single avatar. I’ve seen an avatar with pants that couldn’t even be toggled yet for some reason it had a pair of 30k poly briefs underneath??? Like dude what are you doing? (Note, this is the same argument given to and ignored by people worried wearing their avatars with nsfw bits in public will get them banned. Bruh, just upload a version without the wang to wear in public, it’s not hard, pun intended).

There’s also no reason for every accessory or piece of clothing to be an entire separate skinned mesh renderer with its own material. UVTileDiscard is trivial to set up in Blender and with Poiyomi and VRCFury on the Unity side. There are tons of tools to help with texture atlasing, but rearranging/combining UVs in Blender really isn’t that hard either. And even then, does the clothing HAVE to be toggleable in the first place? See above: just upload a version without the clothes!

Clothes and accessories aside, again, 70k polys is a very generous poly limit in something like VRChat, and if an avatar base by itself exceeds that limit, I’m sorry but you really need to do better please do better I know you can I believe in you. Rexes are hands down the most repulsive furry base available and I’ve never actually seen one that wasn’t ‘very poor’ rated, so I have to assume the bare base by itself is already over the 70k limit and there is absolutely no reason something that looks like THAT needs more than 70k polys. It’d probably look a lot less like a drowned rat if half the mesh was just straight up deleted. I don’t even want to know what the polycounts on some of the ‘hyper-realistic’ looking ones in Furhub are.

The irony in all this is the people who get the most upset when you tell them you have ‘very poor’ avatars turned off tend to be the ones who have ALL avatars turned off by default (and are the most dismissive of mobile users). It’s especially funny when their reasoning for having all avatars off by default is because too many people use ‘very poor’ rated avatars and it bogs down their framerate.

Ok rant over.

TL;DR: Base avatar and clothing creators who sell their stuff have no financial incentive to make optimized or mobile versions, as you really need to do it from the ground up with the intent to make an optimized or mobile version. If end-users are willing to shell out regardless of how optimized an asset is, then not optimizing literally raises their per-hour wage, and while some blessed creators are willing to put in the work anyway, it’s hard to fault anyone who isn’t. As such, other creators modifying, kitbashing, and otherwise customizing avatars will necessarily have a significantly harder time optimizing post-hoc, especially for mobile. You really need to be willing to dedicate a lot of time or channel some sort of hyper focus to stick with it long enough to not only learn the techniques but apply them to ever-more-unoptimized assets coming from above.

1 Like

As noted in my post above, you can use Assign UV Tile (UDIM) from Prefabulous by Haï~ to setup UV tile discards quickly in Unity non-destructively. No Blender required.