#avatar-optimization
1 messages · Page 5 of 1
Why would you use skinned meshes on particles tho
can someone tell me why the sdk is telling me my avatar is very poor? everything is green except the ploy count which is 71k
well there's the problem, your poly count is 71K
the moment you pass 70k, you go to very poor
over just the polys??
yes
your ranking is not an "average" of the stats
it's the worst of all the stats
if any one stat says very poor but the rest is excellent, you are very poor
😩
now I'm not saying that's the way it should be or that it's a fair system, it's just how it is
well thanks
yeah, really wanted to get my guy into some rave events, they limit avatars so no very poor ones.
you can remove some polys easily by just dissolving loops
alt + click to select a loop and ctrl + X to dissolve it
just be careful not to dissolve seams otherwise you'll have a bad time lol
i confirm 30% of mt avatar making time consists fixing the fuckup i did by dissolving seams
https://www.youtube.com/watch?v=8MkgXcidxg4 this video shows some dissolving Edge Loops if visuals help
Did this video help you? Consider sending me a tip on Ko-fi! https://ko-fi.com/sippbox
Making optimized Quest models is hard. But it doesn't have to be! With recently updated polygon limits and fallback avatars, it's a better time than ever to create something that represents you to Quest users! Hopefully this tutorial will help you out!
0:00 ...
maybe you should Mark the edges of all of your uvs so you don't accidentally dissolve them
much appreciated!
you could also check to see if there's any faces completely hidden under your clothing
I did everything Flipping right!!!, Why is there no texture, and why when I extracted materials, my material is gray or white, why is my material not here
Sometimes it does not bind the texture to the material, don't really know why it doesn't, but it is super easy to fix, just drag in the texture file to the albedo slot.
Material settings and textures do not transfer between Blender and Unity. You are meant to set them up again.
Do you mean drag it into the assets folder?
Yes.
That imports it (and fun fact puts it into a folder on your computer, because the assets folder is an actual folder on your computer, all files being unmodified, you can import by just dragging things into that folder.)
But it doesn't allow me to put texture into the model itself, it turnes the cursor into a no sign, just show a screenshot of this
You drag it to the albedo slot.
textures go on materials, materials go on meshes
Thank you very much!!!
Sh how did you get the ice cube thing sacred
I'm just too cool 
Wow Scared, I didn't notice
Sacred really got the ice 🥶 🥶
I swear to god, this Rig type non-humanoid issue will torment me everytime from now on, Why the rig type says Non-humanoid?, I did everything for god's sake
did you set it as humanoid in the FBX's import settings?
also, make sure to never unpack your model
I swear I never unpacked it, the issue is just kinda has a personality of it's own(just kidding), please reply buddy!
Now I am confused
unity doesn't just "know" the model you imported has a humanoid rig
you need to specify
Where do I click or do to specify?
This is covered in like the most basic of avatar creation tutorials. But click on the fbx then go to top right and change it from generic to humanoid first. Then "configure" and make sure all the bones match up with no jaw bone
^ the chest bone should be mapped, but the jaw should not be mapped
corrected :)
Should I map upperchest too?, please reply
if your model has one, yes
My model has no upperchest I think, does that mean I am doomed
I swear everything is automatically set, the non-humanoid rig type is just on to me, and I did nothing flipping wrong, why all the help doesn't work😡 😡 😡 😡 😡
I'll try these fixes now, I hope they work, thanks for support
I swear I did all the requierments, and it is still like this, remember when you said that I need to drag model to scene again?
can you screenshot your Rig tab in the import settings, aswell as your hierarchy?
also, which object is your avatar descriptor on?
what object is your avatar descriptor on
I pressed apply I swear to GOD'S SAKE, is there any armature suppose to be mapped by another here?, or why it still says Rig type: Non-humanoid?
I know, I know all this and I aknowldged all od this, it just doesn't go away and nothing changes, like it's some sort of virus
Unity just has a clear personality and it just hates me and treats me like flipping garbage
The pig bot just deleted my issue
I never spammed, even the bot is a provoker
dude how do you make the polygon amount lower
methods, from worst to best @stoic narwhal
- decimation. this destroys toplogy, but its quick and easy
- dissolving edge loops. it takes longer, but isnt that difficult. please know which ones you should and shouldnt dissolve
- retopping - by far the best method
When I did everything to change my avatar from non-humanoid to humanoid, and nothing gets fixed no matter what, I deleted the model, and then dragged it into the project again and made the requierments, it was finally set to humanoid
hi guys i really need help i try to upload a Avatar in unity but when i try to upload it it's say Unity- EditorSceneManager, Set Active Failed, you cannot save a preview scene.
like how i fix it plz help
is your asset/avatar as prefab in your scene window? you can "unpack prefabs" by right-clicking on it
no, you should never do that, you're basically shooting yourself in the foot. unpacking breaks the reference to the original FBX, so doing any updates to the file will not be reflected in the scene
you double clicked on the avatar rather than dragging it into a scene. if the avatar came with a scene file (unity icon), double click that. otherwise, make a new scene and drop your avatar in it
Playing w/ uploading a VRoid avatar for the first time. I have uploaded a PC version, but uploading to quest gave restrictions about bones and polygons and more, so I updated the VRM to be more optimized but still complains about bones and more.
Is there a more straightforward way to questify VRoid avatars? The optimizer built into VRoid studio is definitely not suited for this purpose.
for quest you'll definitely need to do manual optimization
I wonder when this will be increased, at least for the 2 lower ranks...
I wonder if the polygon count can be separated, one for shape key influenced polygons and another for not shape key influenced polygons.
Could be named like:
**"shapekey polygons: ?K/20k" **
and: "standard polygons: ?K/150K"... just for example.
they dont need to increase it. since having 70k already hurts performance alot if there are 40 people. and beside you need alot of polygons affected by blendshapes to reduce performance even by a small margin. and even then blendshapes are rarely active for more then a 0.01 second or less even. and that is also why blendshapes are not counted towards performance. cause its neglectable
I'm sure this has been covered but is there a good reason you cannot use other shaders on Quest avatars?! It can't just be performance can it?
I mean Quest worlds can have any shader. PC avatars can have any shader. This limitation seems arbitrary but I don't know everything.
performance, but also that it's mobile hardware running android, and not everything will work
so it's also stability
and also, having a lot of different shaders means more space taken up by them in ram, whereas if everyone is using the same mobile shaders, it can reuse those
Wouldn't shaders used in world building work? I can have NPCs prancing around that look fine.
there's only one of the world, and there can be upwards of 40 people
Possibly but if it works in a world on the exact same character model it should work on an avatar.
allowing the world to use custom shaders makes more sense compared to 40 people all using different shaders at the same time
I can easily have 40 NPC avatars in a Quest world without issue. My worlds do not host many simultaneous users.
It's a one size fits all limit that makes no sense for some use cases.
I agree but it may also be the future for VRC. Low traffic meetings, performance, etc.
The PC end is wide open, I guess that might be the way around.
keep in mind that the quest platform has to run "well" on the lowest common denominator, the quest 1
the quest 1 uses the same SOC as the galaxy s8, a very old phone. it also has a total of 4gb of shared ram
you really should not expect much from that
I agree but put a disclaimer on your worlds and avatars. It's kind of self policing if you get my drift. They do it now.
Exactly
custom shaders in worlds can also be used to improve performance, rather than relying on other methods like scripting to achieve certain effects or features
Just saying they need to add a few more shaders to the list.
allowing the same on avatars, while it would help for certain things, it would have the opposite effect at scale, which is really the point here. the amount of avatars is the difference
And that's why we have world population limits.
I agree that adding a few new official shaders would be nice, but I disagree that custom shaders should be allowed
Good to remember that the Quest 1 is still supported
for the better or for worse
on one hand, it makes more people have access to VRC
on the other, it potentially holds back features because of performance constraints
That would be more work for them and us, we have plans to improve our own shaders, but ultimately it's still a mobile platform
also hey ruuubick, good to see ya.

"we have plans to improve our own shaders" this is interesting, what sorts of improvements?
more options in the existing shaders? new shaders?
I understand. It's really just one type of shader that's killing me. Something to do with vertex shading...
for example, options for using/not using vertex colors?
Yeah!
Maybe the silent filamented shaders...
it essentially doubles the amount of stuff to render for that material
if someone uses it on an entire hoodie because they can see through the inside of the cuffs, that's not a good usecase
but people will still do it because it's the easiest fix
the proper fix would be to shrink that part into the arm in blender
Blender....ewwwwww. My fault for not learning it though.
I can't make a list, because it's still being looked into, but there are options that could be added and wouldn't be too detrimental, but some could, and it's not like we can just take it back if we give it, so we have to be extremely careful and heavily performance test
Double sided
^^
adding a few extra polys where needed is better than rendering each existing one twice
I'd need to ask smart shader people, but I can't think of something that would be less expensive to do with a shader than geometry. Maybe fractals?
No need to shrink if you flip normals!
parallax? numerical displays? or text in general
Definitely understand but since the load is so variable there can be infinite combinations of poly complexity, world rendering loads, population limits. Just saying some of use only have 5 players in a low poly world and avatars that are 3K polys so no problem there.
rather than having shape keys and geometry for each digit
the issue is that the limits are the same regardless of how many people are in the world
That's fair, we just control the baseline with shaders I guess
Yeah, it's very much a much weaker hardware 
I cannot believe the future of VRC is wide open, do what you want, purposeless worlds. I firmly believe it is the best chance for the metaverse to actually work. I just laugh at Zuck's sad attempts. VRC is amazing and I'm a Plus member but it cannot be sustained.
there's a shader dev discord if you want to talk to smarter shader peeps, Tupper's already in there
Meta guidelines recommend 500k-1M polygon in view on Quest 2 at any time
and people still try to upload 300,000 poly avatars on quest .-.
Oh I've specifically never joined that one lmao, it's chaos, I just get to see the funny screenshots
I like that physbones have a hard limit on quest, because people go to the help channel being like "why can't I upload?!", and then you see right under the physbone warnings that the rest of the avatar is god awful lol
I think quest should have hard limits for most stats tbh
maybe double what the VP amount is
so people can still go over if they want and don't give a shit about stealing frames from others
Polygons? No issue here. Shader? Yeah, those areas are not black.
but not too much
vertex colors most likely
Exactly
all the mobile shaders multiply the base texture by vertex colors
And blender scares me
removing vertex colors in blender is stupid easy
I'm old. I just learned Unity. My brain is full.
never too old to learn blender :p
it's great fun once you get the hang of it
73 damn, cool to see people in that age group be interested in VR stuff
I'm the only one. Lol.
there's a few people I know in their 50's
Children!
one of them is big into shader stuff now too
this video is a great watch, they have an interview with the person I mentioned at the end https://youtu.be/hVWlgh8QP5s
Join me on my one year journey descending deep into the world of VRChat. It was an incredible insight into the lives of hundreds of thousands of people who call this digital world their home.
Maplist Below
Please do your own research before purchasing equipment!
Join the VRChat Discord here: https://discord.gg/vrchat
Join my Discord here: h...
Nice
horror
I accidentally made my whole characters body a physics object so it jiggled a lot , it was also 150K tris 😭
compressed or uncompressed?
not sure, is there a way to tell outside of unity? the textures didn't seem to be utilizing crunch compression by the look of them
The load in size is the compressed size. Right now we can only see texture memory in the avatar stats for the uncompressed side of things
I'd be interested in that. Which discord is it?
things like meshes, audio and the such are still hidden
question is does he even know anything about shaders
Hey, how do I go about atlasing metal textures on my avatar? Whenever I do atlas manually or automatically all the metal materials turn white or just a weird colour but everything else atlases perfectly. Bonus if you could link me to a video explaining it!
A simple tutorial on Texture Atlasing/Texture Baking using Blender 2.8+.
Links in Video:
Pumkins Tools: https://github.com/rurre/PumkinsAvatarTools/releases/tag/0.9.5b
=TIME STAMPS=
0:00 - Intro
0:08 - Disclaimer
0:30 - Combine Your Meshes
0:42 - Removing Leftover UVMaps
1:04 - Removing Unused Materials
1:17 - Creating Baking UVMap
1:40 - ...
Is there a plug in on blender or like, any easier way to combine textures with the weird UV things? It's very hard and anytime I try I break a bunch of stuff LOL.. i just don't want my things to have too many textures so it can be quest and pc
vrchat cats has a texture baking tool in it https://github.com/absolute-quantum/cats-blender-plugin/wiki/Bake
I think there is automatic blender plugins that does it, but you'll have to do baking https://www.youtube.com/watch?v=wG6ON8wZYLc, it is a bit finicky and very much manual the way he shows it off.
I just do it as he shows, that way I know it does things as I want it to do.
In this Blender tutorial, I will show you how to bake multiple materials to one texture map.
● Download the project files for free:
Gumroad: https://ryankingart.gumroad.com/l/vajiz
Patreon: https://www.patreon.com/posts/61022279
● Texture Baking for Beginners: https://youtu.be/Se8GdHptD4A
● Texture Baking Tutorial Playlist: https://www.youtube....
Awesome thank you
Maybe because if you have to Show "very poor" because if you dont want 3/4 of the full loby being hidden. So everyone is forced to see all very poor avatars, where 100k would be still the most harmless once. Most uses 500k+ avatars and because of that the safty is so low and you can not show less than 200k, jou have to show everyone over 70k, what also shows the hardcore very poor avatars with 200mats and 500k-1mio poligons.
Better would it be to sepwrate shapekey piligons and allow a bunch of not shapekey poligons.
Like max. 10k shapekey poligons with 150k none- shapekey poligons.
i like the idea of breaking down more performance metrics like this, especially if we could then do something like specify how many materials we'll accept before an avatar is performance blocked (like we can with max avatar download size)
do what I resorted to, automatically block then unblock anyone youre talking to
I believe a Too Poor ranking (alternatively redefining Poor as current Very Poor) would do more good than your suggestion, as we don't want people to use a lot of polygons (also to make the range of very poor not infinite).
(side note, I use the optimize shapekeys option in the dev version of CATS and I don't think any of the bases I have used have had less than 10k shapekey tris, which is my way of saying, it would annoy people and would be ignored since bases would not be setup for it).
If we then make the Too Poor (or redefined Very Poor) ranking even more annoying to show than Very Poor is on Quest (confirmation box, wait timers, max Too Poor cap, something like that) then experimental avatars would still be possible, but people would be dissuaded to use avatars of that ranking.
Because honestly, VRChat forcing optimization is the only way to make avatars perform better.
Vrchat is not like these games where you can have a lot of characters but all of them are made by the devs hence being correctly optimized.
The avatar performance ranking should have a maximum just as with quest's 10 mb limit.
And the 70k poly limit is an approximation of the 16bit index limit keeping apart that that theory people spread so much of "polygons don't use any performance actually" is completely false, so it should be actually lowered at around 65k.
If people were more reserved with what they use (i don't include the ones who don't know if x thing on their avatar is performance heavy and change it whenever they can if someone tells them) then the performance limit wouldn't be considered strict
again shapekeys affected polygons do not matter. in the small amount that it affects.
like there is a reason why if you have multiple clothes or options on your avatar it is much better to have it use shapekeys/blendshapes to hide and show it. instead of seperate mesh/material
Thats a endless task...
Currently I have every very poor shown, because only 1/4 of the players habe a lower ranked avatar than very poor.
Otherwise, they are doing stuff that I can not see and hear peoples laughts about things, that are not visible for me. I have goodnhardware that can handle avatars uo to 200k. But if someone over 200k apears I start to suffer and can not tell who is it, especially if everyone is standing and sitting to close to eachother.
I for myself do also add some items to the avatar. Things like swords, guns, food, e.g.
So you have to make my avatar way less than a few polygons below thw 70k.
Most of them don't even have shapekeys and generating none-shapekey p8ligons is a very simple and easy task for most GPUs. So like I sayd just seperate the shapekey influenced polygons and and none-shapekey polygons, do allow more detailed avatars, or just more items on it.
Because if vrchat dont allow that or make the tollerqncw bigger, most peoples give a F about the ranks and stay in very poor, especially if you are already in verypoor... you dont have any motivation to still optimize your avatar with atlasing same shader using textures and keep the poligons in a still good looking way down. Once.in very poor, no motivation to stay optimized.
Which if you addressed most of my message means you are in support of a Too Poor ranking since it would force people to care about ranking.
Only reason why I do not suggest a hard cap on PC is just because I want experimental avatars to still exist, they should just be heavily dissuaded.
Like characters in videogames have a bunch of weapons and grenades in their pocket, my avatar have also a bunch of items included.
I also mean by seperating the polygons, to allow more items or avatar details and stay still in a better good optimized ranking because the performance doesent suffer, if just a very tiny scale of all your poligons are using shapekey...
Poligons are very, very, very simple for our GPUs. So I just would wish to seperate them to be able to use more none-shapekey polygons like for more items on my avatar or just more avatar details and 10-15k poligons just with shapekeys included for face emotions and stuff like that.
Making a: "Too poor!" Rank would be also a additional good feature but nothing related with the Polygon-topic here...
@zealous wigeon
If I make for example my avatar with 40k i only have 30k left for other Polygon-needed-items for the avatar.
Its just to solve this Problem with making higher limits, without making the performance suffer to much. ☝️
With 30k you can have an entire closet
I have an avatar with 12 clothing pieces and all clothes combined don't go over 15k
And as i said before, polygons can be either fast to calculate or ver slow, it doesn't have a constant time, you can have a simple fast vertex shader or an extremely slow one
Whats with poiyomi toon shader 8.0?
Not sure, never tought of using it, but most times it's a pretty intensive shader with so many effects turned on
It does lock rhe shader automaticly, before you upload the avatar.
Do you happen to have any graphs showing off the extra impact shapekey meshes have on PC architecture, because I've had a hard time detecting any statistically significant difference.
As I have been told, the Quests benefits far more from them being split, but on Quest you shouldn't even have enough polygons for that to matter in the first place.
Also I do think my Too Poor suggestion is on topic because you want more polygons and a soft (but harder than usual) cap set to Very Poor (or redefined Poor) would likely have a higher polygon cap. And ironically I don't think it matters if shapekey meshes and non-shapekey meshes are counted separately because the majority do not combine their meshes, so the mesh with shapekeys (the body) will keep the same count post modifications, so optimizationr related to shapekeys would probably be the same with your change as without.
Seen graphs that put poiyomi at about the same, or slightly above standard shaders (if you only use standard shader features).
But what shader you using doesent have impact on the polycount limits. In this case you should meassure it or something to count the shader as good or as a very poor ranking reason.
Even right now youcould destroy it with this thinking you with 10k, so should we rank 10k avatars now as very poor? - it doesent make sence to blame the polygons for the shader used shader.
But this also would be tjat vrchat have to treat "very poor" no longer like it today and in a far less rude way because very poor woul no longee include the to poor guys. Maybe allow very pore more stuff by default.
Again, the vertex performance impact depends on the calculations it has to go trough on the vertex shader, then a constant additional impact for the rasterizer to draw the pixels, but it's not as notable as the vert shader. Vrchat cannot rank shaders because unity cannot guess a shader's performance impact, and even less in game since these are compiled into assembly programs.
And for poiyomi, that the shader can be locked doesn't mean it becomes extremely performant, what locking does is converting variables into constants so the directx compiler can omit memory usage and a couple of calculations making it maybe 1 or 3% more performant, at the cost of a slight additional memory usage.
So, but we have to do something about the current state, because most peoples have more than 70k polygons, but are also under the "too poor" dudes who have up to a few million polygons and way to many phys bones on their avatar, what looks like cloth physics standards, so many they are...
Peoples with potato PCs should still have the excelent - poor and better performing PCs should be able to get a setting to show 70k+ up to 300k or something...
Just adding an extra note to that the Too Poor ranking suggestion is on topic, because it would obviously not be massively over 70k, maybe 2-3 times at most, but even that is a lot.
And what is with the seperating of the blendshape polygons?
Because someone sayd the reason why we dont have more than 70k is because of the blendshapes. So when we will get more? Atleast when will the middle-class hardware good enough to allow 70k+ poligonsnfor medium and poor?
Like a gtx 1080 was 2016 highend, but today it is cheap enough for the middle-class gaming pc
What now if the 4090 is in 5 years for middle-class cheap gaming PCs? Will we then still have only up to 70k for medium and poor?
32K polygons is the point when a mesh with shapekeys gets more expensive than a separated mesh (according to VRChat, depends on amount of active shapekeys, so guessing this is with the standard talking visemes).
The closest number to 70K that has something to do with Unity is 65536, which is when a mesh's size grows massively as Unity has to use 32-bits to for the polygons instead of 16-bits.
And apparently this also causes, or caused some performance impact back in the day, doesn't seem like it continues to do that with the later Unity versions though.
And, do we need more polygons?
Or would we be better served with having a prop system, or a ranking system that understood toggles?
lol. no. blendshapes do not cause issues. with that small amount.
which is false by a crap ton. blendshapes are not expensive. you can have 1000s animated without causing more then 1-2% frame drop.. and even then majority of avatars only have a few animated every frame cause of the mouth moving when you speak. that said it all depends on how many polygons it affects. if a million yes it will cause issues. but then again that will never be the case for vrc. and even then. you switching out your clothes for example that has lets say 2k polygons that will not cause any issues. as its only for a few frames and likely only cost a fraction of a nanasecond
and we dont need more polygons. majority of models are going to look great at 32k. obviously some models do require more. but rarely do they need to be over 70k for the base model.
Or shapekeys... if they are not the same..
So what I've heard with that any non-zero shape key constantly does those calculations is false then?
And that shapekeys affect the entire mesh?
I though I already told here, that also many peoples would like to add some items on their avatar. Like swords, weapons, tool, cloths, hats... my model habe just 40k and peoples tell me really often that my models looks "old" because it so low poly with just 40k. + the thing that I want to add some stoff in it and removing them just to try to gind the perfect transformstion agsin is cancer and having a bunch of scene saves is also aids. We get every 2 year a collection 8f new and even faster GPUs, so why not living the luxus and enjoy a medium or poor avatar rank woth 150k poligons? A GTX 1080 should not be anymore that expensive and for the potato PC Players, they still can only show excellent and good avatars.
It would be nice to see how many % of the entire vrchat community have uploaded a good ranked avatar and how many a very poor because the rankings are way to limited...
We are in 2022 and not 2006 or something to have avatars with Playstation 2 graphic.
People who say a 40k polygon avatar looks old or ps2 as some say are the same ones that complain that a there are not full ultra realistic physics on each background prop on a videogame tbf
they are the same. shapekeys in blender. and unity blendshapes.
so a shapekey/blendshape does not modify or have any impact on performance unless you start changing it every frame. but then again only the face constantly changes.
So why we not just put the limit higher for the medium or atleast poor level?
(If it doesen't matter how many shapekey polygons they are of the final poly number)
cause they either don't know how to make a model look good. or they simply have a model with 32k polygons but not understanding how to make the same shapes at that level.
because 99% of players do not have the gpu to actually do that. and even then it kinda becomes a cpu problem. majority of people uses something between 1060-3070 ish
problem is that the higher the numbers are the more vram we also need.
majority of gpus are only at 8 gb
Yes there are some peoples that mean the ass alone of a avatar must have atleast 200k polygons to look smooth and round or something...
and then are peoples like me out there that just add a bunch of items to their avatar, what also increase the poly number of the final ranking and upload.
that is true.
but the thing is Hidden objects still need to be calculated when you load into it. in order to avoid having to do that once you bring them into existence.
so it can store that information on the gpu etc.
but i assume you mean you would like to see a Hidden polygon count and a visible one Dwight?
Thats why we need a even higher ranking level like ultra poor for all the peoples where have a few million polys included with a few thousands physbones I can't hide them automaticly by setting without also hidding everyone else that is just a tiny bit over the 70k polygons.
well from what i understand we are getting a new ranking system soonish.
I hope more ballanced and not just with more messed up limitations.
the limits exist for the purpose of having 40x people in a world.
70.000 x 40 is 2.8 million polygons.
the more polygons you put on the heavier it becomes. and if double that. to 140k it suddenly becomes 5.6 million.
Not everyone have 70k, instead I am forced to show the very poor rank by default, if I dont want to have 3/4 of the entire lobby just seeing as their fallback avatar or performance blocked.
A lexichi v4 uses like 15k polygons and keeps a topology good enough to look how it's intended
Making the poly limit higher will just make people want to get it higher some time later, then repeat, it's cool that there is new and powerful harware today, but not everyone has that much money and if my pc can run gta 5 at max graphics, tm2020 also at max and minecraft rtx (i mean bedrock, not that java edition screenspace raytracing thing), vrchat content should be performant as it should.
Very poor is already the "over poor" ranking, it means that this content is not recommended to be shown because it could cause performance issues, you are asking for a "over over poor" rank, and with time then someone will ask for a "over over over poor" one.
Vrchat should add an upload restiction for way over poor avatars, not add another rank for something that went twice over the limit, and users should know what to use and what not if they are going to make public content for the game
So I also wiöl see the hardcore dudes woth millions of polys and way to man particles physbones and shadereffects.
thats just how it is. but its not really the polygons its mostly the materials and such that are causing them to go very poor really.
And with shadow caster pass and additional light pass, then it's around 16,8M
Vr is already hard enough on the system as it is.
If you still have a GTX950, then yes.
no not really.
A 1060 can barely keep up nowadays in modern VRChat. In non-populated instances.
gtx 1060, gtx 1070 and 1080
even 2060 is barely keeping up
for vrc atleast.
but any other vr game it will be fine
even my 2070 barely keeps up
cause to low vram.
And it doesn't seem like we'll be getting much more VRAM in the future since we are still on 8GB of VRAM on the medium end.
I would be very surprised if the 4070 or came with more than 8GB (the 3060 12GB was odd, which is why they just replaced it with a 3060 8GB).
eh we are.
the 4000 series has 12gb for 4070
16 for 80
and 24 for 90
most likely 8 for 60
And even the 1060 is already 6 years old. I just want a better setting to hide the crashers and the "I give a F on performance" avatars. My 3060Ti is good enough for 40 people lobby on very poor 70k+ avatars, but some dudes with 800k avatars make me lag as hell and its to anoying to search with 10fps the troublemaker in the lobby.
That is the 4070ti though (rebadged 4080)?
Have they said anything about the 4070?
It's so fed up that some simple looking vrchat avatar can anihilate your vram
pretty sure its 4070.
And well not only avatars but worlds, where unfortunately you cannot limit anything from them
Checking out rumors, they say the same, so hopefully.
saw a 1.6 gb vram model the other day lol
Every time new gpus came out, the last one gets cheaper and the last of the last on even more cheaper with more GPU cores. So that even low Budget dudes can purchase a cheap gpu that was a more expwnaive bwfore thw 4000er series was available.
As I understood it isn't exactly simple to limit VRAM usage for avatars, but so looking forward to it.
People do not constantly upgrade their computers, it is normal to keep your setup for a generation or two.
Which I'd say is still the 1000-series since the 4000-series is barely out the door and no reasonably priced cards are available yet.
If we screw the limits to small, the people start more and morw ignoring them and staying all in very poor..
So what is the performance ranking for if wveryone ia ranked as very poor, even the avatars where are just a bit over 70k and also the 1mio+ poly models. But I think I am repeating myself again....
A number they could only get by trusting the SDK.
It would seem like all that is stored about an avatar is its ranking and its size, the rest needs to be calculated after load.
So the solution is to set a hard/semi-hard limit, or a Too Poor limit.
Force people (the mass) to optimize because they won't do it themselves.
Yea basically that
then people can pay for it.
Leave an opening for experimental avatars, but heavily dissuade its usage.
Because we can't have a rank for every additional 50k polygon
Like, allow experimental avatars to be uploaded only locally but only the ones who meet the performamce requirements to be put on the servers
Eh, I'd still say they should be allowed to be viewed by everyone, but just use a ton of dark patterns (is it a light pattern if it is for good things?) to make it really annoying to enable (confirmation box, swapping buttons, timers, etc).
show button that doesn't save between worlds. 😂
Imo it would be a good way to make people optimize their content
Forcing would end in modified vrcsdk's remember back then were 20k was the final limittion for uploading avatars...
Easy solution, make it so the VRChat client blocks avatars that lie about their stats.
Even with modding (under the assumption it still exists) that would only work client side so most people wouldn't be able to see those avatars.
I'm sure that if they added the forced limit they would also make avatars that got to upload over the limit being automatically removed or permanently hidden in game, like quest avatar's materials getting its shaders replaced by the in game ones
Even with anticheat and stuff like that. They will always find a way to crack and avoid. I think a better way would be in giving peoples with optimized avatars some specials like a gold name or somwthing, just for using a optimized avatar.
The red to green scale is already serving that purpose, I don't think people would care.
I don't think they'll be able to modify the unity mesh system itself, and even less all intalled vrchat apps on all devices
Some cool features that only optimized avatars would have. Make the people want to use only optimised stuff, not force them.
I agree that making people want to optimize is better than forcing, but the best I can come up with would just be dissuading people to use poorly performing avatars, using those systems I've continually mentioned (confirmation boxes, swapping location of buttons and timers until they can be shown).
I was going to at one point suggest making very poor avatars banned in public worlds, but all that achieves is make people want to go to publics even less, that isn't a solution.
Could make sense for group instances to have the ability to set such limitations though.
Problem is that, with the experience i've had in this game, 90% of people won't optimize just because they just don't want to
But your max perf rank per instance idea is actually very good
How effectiv was adding EAC to vrchat to get rid off all the client users?
Donno, I knew people that used mods before, not heard anyone mention using them afterwards.
Malicious usage though, no clue, not run into any for the 3/4 year I've been playing.
I still get crashed and i still see peoples in a german server flying around superfast.
Well, crashing and flying can be done with avatars so that doesn't mean clients.
Im glad about that, but fearing that vrchat shutdown the avatars would be a nightmare.
It was a horrible time back then with a 20k limition.
I recently read someone publicly saying that some mod with a weird name was getting finished. That person is also known for constantly threatening users with everything you can imagine internet-wise and just being a complete pos in gemeral.
Unfortunately he stays anonymous (keeping apart he publicly said his height and that turns out he lives on the same city as me) and discord messages cannot be counted as vrchat report evidence so nothing can be done. Only thing ppl can do about these a-holes is just leaving them alone
Spawning portal in front of you was a hard thing and be able to still see you after you did blocked this person and joining you in the next session after you quit the session.
It is better today.
No but i mean recently as of 5 days ago
Like, some people just don't learn and want to bring back their wacky clients
And that's one of them
It was a very dark time back them
I asked some peoples and they told me, they have everyone hidden by default... meaning every lobby and every person is a damn grey robot while they sit in front of a mirror and do nothing.
No matter how good or bad optimized you are.
Even excellent would be a grey robot.
Even a quest fallback would be a grey robot.
heh, people would pride themselves in not having that badge. xD
ah yes, I just hide avatars on Visitor and New User to avoid those pesky assetbundle crashers.
haven't bumped into one for months though
might set New User to shown
That peoples hides everyone... and you have no clue about that. Some of them even hide the vrc+ profile picture, nomatter why you ever should do this... no clue if they fear dickpics on profile pictires or something
I j6st want to know where can see me and where not. Is it so hard to let me know that? That would save me a lot of time and nerves..
Is nice that it doesn't exist for us that don't want to have to explain why we aren't showing someone's avatar.
"show my avatar show my avatar show my avatar, why aren't you showing my avatar?" xD
then you also need to differentiate between fallback and hidden fully (robot).
That's not how it works
But i also keep visitors and new users as hidden and the rest with only the avatar activated, and it runs well
As i said, unfortunately unity cannot guess a shader's performance, and that's most of the reason why some avatars are extremely heavy, an excellent avatar can performs extremely poorly, but that's not at the ranking system's fault, that's why i have all shaders off except for the ones i really trust with their avatars, it's still not bad seeing avatars with pbr lighting compared to the probably unlit-but-not-unlit shaders they are using
And how should I know if someone have hidden me or if someone just dont know where the character is from?
Balance between people that want to showoff and the main demographic of VRChat, shy people.
My avatar was medium ranked and got ignored. Amd I eant to know was it bwcause of I am a grey eobot or if tjey dont know where the character is from?
why would it matter
Crashers be like: wait until enough people have you shown (and they'd know if there was an icon), and then swap into the crasher. .___.
I don't see the positives outweighing the negatives at all for this.
||Crashers and modders when their parents tell them to get a fucking job timmy, you are 28 already and you only stay on your computer to annoy and threaten people on the internet timmy||
To let me know why they dont react, so that I can stop wondering, if I am a robot or if they dont get what my avatar is meaned to be.
So you initiate conversation by showing something off?
Somehow, yes.
Normally, itnstart like: wait, is that person not from the Movie X/Y!?
i think you should realize that not everyone may know what it is or is the biggest fan
Or from the game... so many posibillities
its the internet, people see everything everyday anyways
I just assume the people aren't seeing my avatar, makes it easier.
Everyone have something that he know. Damn, Example: is that Iron Man in the corner!?
its vrchat my dude, it may be a really cool iron man but its hardly something people will fawn over for a good amount of time
Especially if ypu have a soundboard with voicelines. Noone wpuld get ot if he see just a robot and not the avatar
i mean yeah, i also wish all avatars were performant enough so i could unlock them all and find users with rabbit avatars, but that's not the case
probably the latter
Just a example I have nothing to do with Ironman.
i know
It just comes down to "it would be nice but the toxicity would overwhelm the benefit"
honestly if it's not a popular anime hard to tell the difference between a IP Anime Avatar and some random Booth p.m. creation
yee
yea
It would be weird if a stranger asks to show him. Just to make sure that you are not a robot and the roleplay can make much more sence.
I for myself made Avatar from a very new Youtube series where no Avatar existed currently about that topic, because it is so complicated to make and now I am wondering if they don't see me because I am a grey robot or they dont know where it is from.
If it's very new then it's almost entirely the latter. What's the series?
Would be cringe to tell.
ill be frank but youre also not even remotely the first person to develop new or original avatars, so to anyone else it could just be a cool avatar or smth
I dont think so... especcially with my quality standards.

Would be nice to have: "medium avatar - come on and give that dude a changse to be shown... :("
As text above the name, lol.
if someone's the sort to use trust ranked block avatars they're probably not going to show the avatar
Compressed all my textures and my avatar's download size went from 35.08mb to... 34.44mb 
crunch compression does not help much with avatar download size, because the entire bundle also gets compressed
the first thing you should be doing is reducing the resolution of each texture as much as possible. smaller parts need lower resolution textures
and even for one material, not everything needs the same resolution
AO maps can typically be much lower resolution
I recommend using Thry's avatar evaluator to see a breakdown of how much VRAM each asset takes up, and optimize for that
I did that also, all my textures down to 2048x2048 or significantly lower, but... admittedly, I do have a few different textures in there, so I daresay it's just a natural consequence of that. I'll check out the VRAM and remove some textures! Thank you for the help!!
it's also important to judge the clarity of details not from an inch away, but from a few feet
Good point!
keep lowering the texture resolution until the detail loss is too much, and then go back up one level
you can often get away with a lower resolution than you might think at first
Just noticed a few of my textures have unnecessary transparency, removing that basically halves their size wahoo
glad to hear that helped
don't forget to disable sRGB on data textures like AO, metallic, roughness, etc
otherwise it uses a gamma brightness curve instead of a linear curve
which would make mid-gray on the textures not actually represent 50%
how would i be able to fix this error? im not too sure what is really going on
downgrade blender, too recent for your cats version
theres a list of what CATS is compatible with on their github, ensure you use a compatible version of blender
You either downgrade Blender, or you get the hidden dev version of CATS available in their discord's #faq channel (their discord, not this ones).
didnt think about that, thank you sm <3
Is there anyway to have outlines on my avatar for quest??
and pc? cause i know poiyomi shaders for like pc has
outlines but i cant use that for quest..
you can fake it on quest
how?
use the Matcap Lit shader with one of these matcaps
how "outliney" does it look? just curious [P.S nevermind i'll find out once i open unity!! hope it works :) ]
The third most one I have some shots of Loona using it. It gives a decent look, but is a bit dynamic, for better or worse.
ie: you can get really thick black sections, depending on angle the model is viewed from and your topology.
Some pics showing in unity and native on quest;
(NOTE) the thick line on the mouth is painted on by me, not something to matcap can do.
You can see the thicker black spots near her right eye her eye, but again, this may not be as prevalent for you though, depending on how your model looks. Used with the provided Matcap lit shader for quest here.
Oh, the outline on the mouth is painted on, btw, the matcap won't do that. Figured I'd add. Lol
I'm wondering, are using UDIM tiles more performance-friendly than the usual method for toggling materials? I'm currently using UDIM discard in Poiyomi to handle toggles on a character and I was wondering how optimized it is compared to, say, using blendshapes or toggling off the entire mesh of the object.
you can either go for best real world performance, or best VRChat rating, not both. it's not a clear cut line, every case is different. in general, toggling off the renderers completely is the most performant option, if those things were already separate materials.
as for the best way to toggle stuff on the same mesh, UV Tile discard (the actual name of the feature, since it has nothing to do with UDIMs), is the most performant way to do it. it avoids rendering any of the pixels because it throws away geometry in the vertex shader, which makes it better than blendshapes and bone scaling as those are still fully rendering the mesh even if it's not visible.
blendshapes have a big CPU cost when they change, and in a CPU bound game like VRC, it comes especially important
UVTD is pretty easy to set up, and not enough people use it. you can make a 2nd UV map for it so you don't clutter up your primary one
anyone have a good tip on how to merge materials so I can make my avatar compatible with quest? So far I have been using CAT with blender (yes, the right blender version and CAT version) to import my model. But when I click on "fix model" i get this:
I tried looking into it and it turns out that the materials in the fbx are black, which isnt right. I am still having issues with this and I would appreciate any help on how to fix this 😄
oh my god I think i fixed it.... I had to import the textures...
what sort of model are you using such that you need CATS' "fix model"?
a fbx, it has 6 separate materials and I saw in a youtube video that throwing it into blender with CATS can help merge those materials so I can finally publish it for quest since max is 4
I manually added the textures and the avatar comes out all glossy looking :/
oh ok yeah, I forgot it did that, I keep doing that with just Blender
im on the right track so far?
is it supposed to look like the avatar covered itself in butter?
I couldn't tell you what it's supposed to look
haha I guess so, this is what the quest version in unity is supposed to look like:
theres a material combiner you can use with cats if that helps
yes! That's why im using cats, but im trying to figure out why my avatar looks all glossy for some reason after manually adding the textures to the materials in blender
probably some effect of whatever material that is, you'd have to see what it's doing
I'll figure it out eventually, thank you Kazin
I'm just finished an avatar in blender and working on optimization. Wondering if you can organize meshes? like how you'd do it in unity with empty gameobject. I tried doing this before an had every mesh in an empty blender object, but exporting it messed it up. like the dropdown in unity didn't show armature, it just went straight to hips
not that I know of no. normally, you would have all of the meshes parented directly to the armature
besides, if you're working on optimization, you'd probably be merging as many meshes as possible anyways, reducing the amount of meshes you would have in the list anyways
oof, I am working on merging, atlasing, and also creating custom blendshapes for lowpoly objects so I can merge them too
So I'm trying to atlas textures and they keep making awkward sizes instead of square. like two 4k textures are going 16k by 4k.
You should not atlas 4K images
I planned on compressing them to 4k or 2k afterwards in unity or krita. Would manually compressing individual textures first make it work?
Can anyone help me with trying to optimize my model? When I took it to unity I had too many bones and when I removed a few the model started to spike up whenever I use pose mode. I'm just trying to upload my first avatar. Are any bones important?
Use the cats blender addon for that
I am
Anyone know how to resolve this issue? It doesn't appear for uploading my avatar to windows but only for uploading to quest (it wont let me upload to quest)
is there a real "Too high" for avatar texture memory?
it's listed in avatar details but isn't rated so i can assume it's not too bad?
it's the worst offender actually
ranking system for it isn't implemented yet
I would say if you're anywhere above 150, you're doing it wrong
below 100 is decent
below 50 is very good
I would still recommend going every texture one at a time and lowering the import resolution as much as you can
if you have any PBR maps like AO, normal or metallic, those can typically be lower res
especially AO
i think the albedo and normal maps are the higher res ones
i cut them down on quest becasue file size
but they sure dont look that great
yea it's important to have good UV density to not be wasteful
that shouldn't happen. if you do two 4k it should create a 8k. but its advised you only do one 4k texture and rest below and then set it to 4k in unity
You'll want to use the 'merge bones to parents' option
Blender's default behavior if you delete a bone is to just... delete it, and then anything that was weighted to it just stops working
I am happy to announce that after way too many hours I have finished my first attempt at avatar optimisation
- 3 accessories are now mesh renderers instead of skinned mesh, reducing the skinned mesh count to 5 (torso and legs are still separate from the main body as I don't want anything to do with weight painting for clothing (also as a result the animations to toggle those off are now controlled by scaling the material layer from 1 to 0))
- Every material except for the eyes is now called from 2 custom atlases instead of individual materials
This has reduced the total draw calls from a whopping 44 all the way down to 17 (I have no idea how good or bad that is)
@toxic needle you deserve a cookie 
17 with a realtime light in your scene ?
I think I disabled the directional lighting when I ran it like the guide-ish said
Actually shaders havent been set up properly yet, I'll run it again once everything is identical to the original
Shaders wouldn't make a difference drawcall wise, but congrats!
44 all the way down to 17 is a pretty decent reduction

any progress is good progress! there is more that can be done but don't lose sight of what you've already accomplished
Might be a dumb question but what are some easy ways to lower the file size of avatars when making them quest compatible?
Easiest way is reducing the size of the textures
ok ok that's good, are there anymore complicated methods? stuff that can rly bring down stuff like file size for quest.
For most avatars textures are going to be a good 80% of the file size. Your effort is best spent on needing fewer/smaller/more compressed textures.
Audio sources can get pretty big, if you have them.
Beyond that, mesh data, but now you're putting a lot of effort into saving not very much space. Everything else is going to be a rounding error.
GOT IT!! thank you again! I rly appreciate it
Is there something that will automatically remove any physbone components that aren't actually being used? The original outfit this avatar had on used a bunch of physbones that are no longer required.
"aren't being used" is not something a script could easily figure out
how do you define "no longer being used"?
if you define that as no root transform being set, then physbone scripts that were put directly on a bone chain would get removed, even though they were working
You can always go to the physbone components and delete them lol
I mean none of the objects in the scene link to the bones... eg. bones existed for an outfit, the outfit was deleted from the scene.
I know I could, but I was wondering if there's a script for it so I don't miss some xD
You can also delete the bones from the hierarchy of the outfit's armature, or if was an outfit that came with the avatar, delete them from the avatar armature's hierarchy
But thats if you dont want to use the outfit anymore
I know I can do it that way, I just wanted a more automatic way of doing it.
Oh alright
This blender issue in exporting is really confusing and annoying
you're not exporting it as a vrm are you?
I just want to export it as .Vroid, not .VRM
You're not able to do that
Well, my new Frank Frogboy model was removed from the new Vroid, nothing left but the old mid ones, the updated vroid doesn't keep ANYTHING!!!!!
I can only see the recently edited ones which dissapear after some days
There is NO WAY you can reimport stuff back into Vroid. It's just how it goes. You really shouldn't be altering Vrm files in blender unless it's really minor or you know what you're doing, I had lots of issues with that, better to export it as a fbx. Especially if you did a "Fix Model" in CATS.
The updated versoin of vroid is the WORST!!!!
I wouldn't store stuff in vroid, always save it, export it as vrm and save those for editing in Blender for later and exporting a an fbx.
And make backups of the .vroid files
So where does most of the size come from for these meshes? I noticed that the 10 MB mesh has about the same about of verts as the other top two, but is 1/5th the size. Is it mostly blendshapes? Is there some tool that can breakdown these sizes so I can try to optimize the meshes?
blendshapes would contribute to file size as basically it's a duplicate of the mesh vertices but in the new position
I see. So removing some blendshapes that are not going to be used can probably do a significant part in reducing mesh size?
Blendshapes, UV maps, Vertex Colours. Any information the mesh needs to hold will increase it’s size afaik.
depends on how much the blendshape affects. otherwise it wont do much
Thanks for this. I think I got the colors right but why does my exported version end up like this crunched up character?!
Blender is my nemesis.
FWIW, this is a modular character fbx I imported to blender, fixed the vertex colors but then when exported back to fbx it ends up all, well, blended. Lol.
I just know it's something simple.
could be for a lot of reasons. I would start by resetting the pose in the rig config in unity
click on your FBX, go to the Rig tab in the inspector, click Configure
then do Pose > Reset pose
Thanks so much! Will try!
When I use a blendshape on an avatar to hide something (eg. hide the feet so they don't stick out of shoes) the feet still take up the same number of polys right? in which case... how difficult is it for someone with basically no Blender experience to edit the model to the parts I am hiding anyway?
or is there something I can import in unity that will do it for me >_>
you are still rendering all those polys even if you shrink them yes
so do you want to delete that part of the mesh entirely?
Yeah, save on polys that way if the outfit is covering them all the time anyway
you won't be able to do that in unity, it's a game engine and is not meant for that whatsoever
blender is an actual 3d modeling program, you'll need to do it there
Figured as much, just thought there might be something because polytool can remove polys
Usually when I see this, it's because the weight painting is screwed up. This mostly happens when you modify the mesh in any way (since weight paints are data on each vertex), or if the armature is broken/missing pieces.
A good example: I did some remeshing on an avatar and the visemes got completely screwed up because I used the "symmetry" option to mirror the geometry (which deleted the existing vertices and made new ones).
to clarify, symmetrize will delete half the mesh and mirror it. snap to symmetry will align the mesh to be symmetrical, without destroying half of it
Lol, this is why I leave blender to people with actual talent. There was actually a video on importing modular Synty characters that was very instructive. It fixed the vertex colors and looked great but there is now a scale issue to be fixed. That will be the challenge for today! Thanks for your suggestions!
I do think people are a bit too scared of Blender tbh.
Those "Apply Clothes" scripts that constrain a clothing rig to an avatar rig are quite unoptimized with the amount of constraints they generate. 😩
Bone count through the roof as well.
I've been doing some avatar stuff recently and it's gotten to the point where I am pretty much taking these models into blender to redo them because they so poorly optimized.
That’s the reality of purchasing models.
This might be a bit of an out stretch but does anyone here quest compatiblize pc avatars?
I do it from time to time, but I also care a lot about quality so I put a lot of time into it, like full retopo and baking
Just need to do a lot of bone removing, mesh deleting, decimation
Just made 1 today. It looks horrifying
Usually better things to do is unsubdivide the mesh
Allow me to vent for a moment. This model I'm editing for a client, one he bought on gumroad for $25, has 357k polys. And 200k of them are in the WRIST WATCH... This is maddening.
AND the watch is merged with the FACE mesh!!
So the blendshapes for visemes, and facial expressions have to calculate all 200k polys of this watch for every frame that they are active
absolutely unforgivable
why would there be any blendshapes for it? and also that is super easy to reduce to 5-10k poly. unless u do the blendshape way which is only one blendshape and wont affect it at all. plus it wont calculate it every frame.
It was merged with the face mesh for some reason
my point is that it shouldn't have had any blendshapes but because it was merged with the face mesh, it was calculating each vertex for every frame for every face blendshape that was active
because when a mesh has blendshapes, it has to recalculate every single vertex in that entire mesh whenever blendshapes are active (every frame for each blendshape) which instantly kills performance. That's why it's always best practice to keep your face mesh separated from the rest of your model when the model is highpoly.
What do you mean by "the blendshape way"
instead of using a material slot. you make a blendshape for hide and show.
What does this have to do with what I was talking about?
and no blendshapes do not have to recalculate every frame. that is false. if they are not shown they wont need to do anything. a blendshape its never active for more then a few frames.
What?
What
jesus christ, that is horrible
while it may be true that blendshapes only have a performance impact when they change values (needs more testing), if it's merged with the face then there is almost always multiple blendshapes changing because of visemes, eyelids, and facial expressions
and the more vertices are affected by blendshapes, let alone multiple at once, the worst the impact will be
Everybody else I've talked to says that it's every frame as long as the blendshape is active. Not exclusively while it is changing.
but yea, that watch basically needs a full retopo lol
Searching this discord yields the same results
Every key is more or less an entire duplicate of the mesh but in a different spot, a single key not on 0 forces a caclulateskinnedmeshkey dohicky to move verts around from the basis to the 0 to 1 value each frame for each key. Just activating the first key is the most painful, gpus tend to hand bunches on at the same time just fine
that is what I thought previously, and so did Tupper, but I did some testing in unity with the profiler and found the opposite
the impact was only when the blendshapes changed, and the impact was the same amount no matter how many blendshapes were already active
tested in editor using a sphere with 10 blendshapes and 2 million polys
Interesting
because they dont know what they talk about. a Blendshape is simply a block of memory containing the information about the polygon.
it's important to keep in mind that testing in the editor is not the same as testing in game, and my testing method might have been flawed, because I was changing the blendshapes manually rather than through animations
no your method is good.
it's possible that if an animation is controlling the blendshape, that the value is seen as "always" changing
and thus would still incur a performance cost
best way to test blendshapes impact truly is creating a animated one that lets say changes 200k polygons every frame.
again, needs further testing
This makes sense
a Blendshape that is not animated or not changing every frame occurs no performance hit. however it does take up a small amount of vram. all through the amount depends on affected polygons.
but either way, I still dislike using blendshapes for toggles for the simple fact that you're still always rendering that mesh even if not visible
you wont render it since its hidden. inside another mesh. it gets occluded or should be.
It's still being rendered if you can't see it
nope
it's why occlusion culling has to be set up in worlds
and why meshes behind other meshes still incur performance hits
It renders it first, and then renders the other pixels on top of it
it is still being rendered just not visible because of depth buffer
^
i use blendshapes more then anything. due to the fact that the amount it typically affects is far smaller then a constant like drawcalls etc.
all those vertices still need to go through skinning and still get rendered, it's honestly not a very good way to do things
afaik when a mesh is disabled it incurs no performance hit other than the vram it takes up
the only excuse to do that really is for getting around quest restrictions on meshes
it doesn't have to deform or render at all, so it's more performant just to hide it in some cases
but even then you should not go overboard with it
does not matter. since its all on one mesh. and 0 skinned mesh render
wym 0 skinned mesh renderer? the whole thing is skinned because you're using blendshapes
the moment a model has blendshapes or bones, it becomes a skinned mesh
like take a example right. a avatar with 10 pieces of clothes, and each cloth has lets say 5k polygons, would you rather have 10 extra materials. which also creates atleast another 10 drawcalls or more. typically its more then just 10. or would you do 10 blendshapes.
those 10 pieces of clothing would most likely not all be on at the same time. so in the end, having separate meshes may be better. it really depends though
another good option is to use UV Tile discard
if they're low poly enough, blendshapes might not be so bad
where you still only have one mesh one material, but you're stopping the rendering of the hidden stuff at the vertex shader
before even rendering any pixels
well in that case you would have 10 different meshes,
one way or another its gonna cost more to do that.
you would yes, so the SDK would still think it's worse, but in actuality you're not rendering all 10 of those
that is true.
you're only rendering the visible ones
but u need to keep it all in memory all the time.
there's a tradeoff between what the SDK thinks is good vs what is actually good for real world performance
and you often can't have both
but does 10 separate meshes vs 1 with shapekeys actually take up more space in vram?
yes.
you sure? because each shape key also adds to the mesh size
proportional to the amount of vertices in the mesh
its 10 materials. lets say each is 2k. or 1k even.
And the mesh is the same material and poly count at the end of it all
if all things are combined into one mesh, those 10 shape keys are influencing all of the vertices of the mesh, which includes the base + all 10 clothes
so each of those shape keys needs to store data for where every vertex goes
If the single mesh with the shapekeys has ten materials then it is probably the same space in vram as ten meshes (but as sacred said the shapekeys take up space too)
we need 10 pieces of clothes with 1 material lets go
If the mesh is one material vs ten, and it's atlassed, the avatar with ten separate meshes can be atlassed too and then it will only count as one texture
so vram size will also be the same
the thing is a single blendshape affecting lets say 50k polygons wont take more then a few mb of vram at best. while 10 materials at 1 or 2k would take up far more.
you would still need higher resolution textures to have all 10 pieces of clothing together, so at the end of the day the VRAM usage may not be that much lower, if at all
well yes and no
Not if you atlas them. Even if the material slots are separate, if they use the same texture, the vram size will stay the same as a mesh with only one material slot
a single 4k atlas would be enough to store all 10 pieces of clothes.
My point is that you can still have that same atlas across the ten materials slots and it wouldn't take up as much space in the vram as 10 separate textures/materials
i wanna see another avatar with a solid black 4k texture for its clothes
it would take up the same space as one
just remember you lag out or almost crash if someone with to many materials loads in. why? because it has to load them all in regardless of being active or not.
LOL i hope thats just a joke
sadly...
just use the color select
or that.
I'm making a prop pack right now that is going to contain 220+ low poly assets and it uses two materials and one skinned mesh. The colour texture is an 8x8 pixel grid
centered uv snapping for the win
so you can make some really colourful stuff using the lowest possible texture size and creative UV Mapping
also any of you noticed how bad the lag has gotten now when someone with even 20 materials load in?
yea, crunching every texture will do that
i know im gonna get 20 fps no matter where i go, but thats where alcohol comes in. Motion blur for the brain
progress on the aforementioned pack
oof.
this is what you can do with two materials (transparency gets weird with one) and an 8x8 texture
well you are only doing simple colors so it makes sense.
(and another 4x4 texture for metallic and smoothness, and a 4x1 texture for alpha transparency)
I've seen ones with over 1500 material slots...
"Vrchat is so poorly made I get like 10 fps in my home world"
Meanwhile, the avatar they're wearing
It is my meme public avatar. In actuality it doesn’t show any more than a
rated avatar but it’s red in every stat.
Literally just to show that the rating system isn’t the be all end all of performance.
Because there a lot of people that think it is.

wha?
that's going to be a performance dumpster fire you having 15,00 draw calls
it would be, if you could see them
Yep, just put a bunch of disabled meshes in there and you have a potentially bad avatar, if you show them, which I guess it doesn't. 😅
The performance rank is correct in saying the avatar is potentially really bad though.
What the perf rank is completely unaware of though... shaders.
I would note all of the disabled meshes still take up vram for the model data and whatever textures they have
Unoptimized avatars with one material per triangle be like
I'm 99.99% sure they're all on the default standard shader so no texture files. I'll see if I can find it, check the mesh vram. I know the texture vram is like 1 mb
there is still one mesh showing so it's not just a ghost xD
It's actually not as horrific as I thought. As it's using the same meshes over and over, the meshes are only using ~1mb looking through Thry's Vram tool. Altogether it says 2.5MiB.
Red in all aspects but texture memory
they're loaded into VRAM, but will get moved out of VRAM when something that's actually rendering needs to take the space.
Memory allocation go brrrr.
reminds me of my one polygon avatar without a texture, that uses the heaviest shader that I could find back then. Had a material swap with a standard shader, so you can surprise people and show them that performance stats are not that good of an indication
(it is an indication, just not that good >.<)
wish there would be an easier way to update avatars, if you have a base model with dozens of different outfits. If you upload it as a dozen different avatars, it's sometimes a PITA to update things like facial animations, as you then have to repeat the steps a dozen times
which is basically the main reason why my main avatar is a bit on the big side, VRAM wise. And in 99% of all cases it's also not an issue as VRAM usage in the worlds I'm usually in (also no 80 player instances) is usually around 6-8GB.
I do have a more optimized version for more busy instances tho
Oops
Enable read/write on the mesh
Where is that?
There should be an auto-fix button in the sdk for it
ooo thanks
This is... somewhat debatable, but mostly dependent on what you're doing with blendshapes and textures.
Using the VRAM calculator on a specific avatar I am working on, the total blendshapes on meshes causes the VRAM usage to go from about 50 MB for just textures, to over 170 MB.
THE AMOUNT OF PAIN I HAD TO GO THRU TO MAKE THIS QUEST COMPATIBLE, how do avatar creators just do this on the regular? like im so impressed 😭
the simple answer is that they don't, why do you think VRC on quest has terrible performance and crashing issues lol
props to you for actually giving a damn
thats textures. not blendshape 😄
I actually was told by a Questie once. "Why don't creators just make every avi cross compatible, it seems really elitist to me" Yeah okay sir. 🙄
tbh it seems a lot of people think it's just a box you tick before upload
they think their little magic box on their face is just as powerful as an expensive gaming PC, completely ignoring the fact that one runs android while the other runs windows
having an issue where when I join meshes, the uv on one of them gets reset
they might have UVmaps with different names?
Make sure both meshes have the same UVMap name.
Hey question, so for something like a roleplay avatar with a bunch of toggles such as clothing (armour, coats etc) and props, what's the best way to make optimized toggles? I've heard mixed things about using blendshapes vs toggling separate skinned meshes, where blendshapes might make the avatar be shown as "medium" but would infact apparently be worse in performance than toggles
TL;DR how do I make optimized toggles for clothing and props
ty, ty, ty
for PC, consider using Poiyomi's UV tile discard
i'll check that out, thanks!
For the last year I thought I had a reasonable grasp of how skinned mesh renderers and materials impacted performance, but a conversation I had a few days ago has made me a bit uncertain, so i was hoping someone might be able to break down (a little bit) some details. Consider the following 2 scenarios:
Scenario #1-
Skinned Mesh 1: Mat_A, Mat_B, Mat_C
Scenario #2-
Skinned Mesh 1:Mat_A, Mat_B
Skinned Mesh 2:Mat_C
Both scenarios are using the same total number of material slots (relevant for draw calls)
My understanding is that Scenario #2 is worse on performance because each Skinned Mesh renderer brings its own inherent performance cost (comparable to a draw call). So its a significant performance gain (to the equivalent degree of reducing the overall material count by 1) to merge Mesh#2 with Mesh#1.
Is this right?
What I've heard recently is casting doubts on this, suggesting the performance gains of reducing the Skinned Mesh renderer count by merging in a scenario like this is basically negligible... If that is actually true, I'd be much more liberal with splitting meshes to optimize for blendshapes based on polycount (where it would not mean duplicating a material).
To take it to an extreme; surely having 8 skinned mesh renderer with 1 distinct material each is worse than 1 skinned mesh renderer with 8 materials... right?? Have I been living in a skinned mesh renderer delusion!?
I'm about to start updating an avatar to work with Vive Facial tracking, and if i can split off a mesh to put the 55 blendshapes required I feel like that might be the more responsible thing...
Any insight/opinions/comments?
If merging 2 skinned mesh renderers would not facilitate reducing the overall number of material slots used, is there actually any practical reason to? (from a performance perspective)
So yeah, Draw Calls. Each material * the number of passes, Each mesh, Each skinned mesh +1 if its doing any shape key (* the number of verts). To keep it simple, scenario 1 is at its best 4 draw calls, and scenario 2 is 5 draw calls.
this is what I thought was the case...
The argument for two skinned meshes is because shakepeys are expensive to run on high poly meshes, hence separating the face from the rest of the model, the additional drawcall is worth it, if the model is medium-high poly
I dont want to focus my question too much about comparing the performance effects of shape keys, but yea.
So your personal understanding (ignoring the number of shape keys) is that Scenario #2 is causing an additonal draw call that Scenario #1 is not, due to the additional Skinned mesh renderer?
Yes
Thanks, I know real-world performance for this kinda stuff can get very nuanced, so i suspect the convo I had recently just unraveled things in a bit too much for me. Its reassuring to hear that this simpler way to roughly gauge performance is still correct.
a few questions about optimizing:
if i had 2 skinned meshes, but UV mapped them to using the same material on both, would that be performatively better?
what about for skinned meshes that are visibly disabled, do they still cause performance issues when off?
is there a performance impact with material swaps? such as a shirt that swaps materials for having 10+ designs?
if i use something like poiyomi, would it be better to use the "simpler" settings? (i.e. for shading, or emissions) does audiolink impact performance more or less than regular emissions that scroll or fade?
please @ me or reply so i can get notified, thank you for your time 🙂
You mean embedded textures on the fbx/prefab? Why would VRC/Unity be importing those when I have over-written them with other materials?
I've tested some avatars, and it is very clear that "texture memory" in-game does not include the mesh data that is apparently stored in VRAM (according to Thry's memory calculator)
And I was explained here before that blendshapes and other vertex data can drastically increase the size of a mesh, plus that the mesh is loaded into VRAM anyways
that would still be 2 draw calls for the two skinned mesh renderer using the same material but I suppose it wouldn't be spending the whatever amount of time is required for swapping to a completely different material, disabled skinned mesh renderers wouldn't be taking up rendering time but would still be loaded in vram and materials that you're swapping at runtime would still take up the rambling not loaded
Would anyone know if it would be more optimized to have more meshes or more materials? I have multiple body parts I want to toggle, either by disabling the mesh or making an extra material for that part of the mesh that I'd make transparent.
you can have both by using uv tile discarding
I'll look into that, thanks.
You can also just have them weight painted to their own bone and scale it to 0 to hide them.
Oh yeah true, ok thank you both!
Hello I'm new at avatar creation I wanted to optimize my avatar but when i had to optimization in blander cats I fond taht i have no material combinder but when i click manualy donwload i get redirected to site that does not exist where could i find it ?
Ok found it
Why does blender show 68k but unity 129k when i try to build it ?
Is it because i used quads in blender ?
Yes, unity triangulates the mesh on import.
Tris are easier/faster to render so game engines tend to lean more into them.
if you have quads and only quads there is a keep quads button in the fbx import settings! Be 100% sure in blender that all faces = 4 verts though, as unity shaders will do quads and tris separately leading to odd behavior with mixed 'gons
I see I switched to polygons back
how much does using 4k textures intead of 1k lowers the fps?
that would be mostly affecting vram?
and how much does having lots of prefabs such as WorldConstraint and ParentConstraints, even if disabled, lowers it aswell?
hi
I just found out my avatar is extremely badly optimized when I let it public and a few friends started cloning me
and yeah you probably don't want to be unnecessarily using 4K textures as a lot of people's unoptimized avatars make people run out of vram pretty quick
I always do try to avoid using when possible
the texture itself is 2k, but some masks i was able to make it 512 without any major lag issue
yeah texture masks don't necessarily need to be the same resolution as the color
im using poiyomi, and one thing I noticed was that the Panosphere thing drains a lot the fps
do you happen to know about the Iridescent thing?
I don't use poiyomi so I'm not terribly knowledgeable on it
https://twitter.com/VIANVOLAEUS/status/1517951135528665088?s=20 and a set of tweets you might want to look at as it shows how to use the RBG masking to make it look more detailed without using 4K textures
Single material, 3.3k △, using RGBA masked 256px normals in @poiyomi's shader. 🧵👇
282
thx, ill look into that
Back to shader: Can use seamless tiled normal maps per RGB area - tiny (128/256px) normal maps, but tiled around 50-100 times in the shader, giving you a higher effective TD.
You can combine these with an base nrm map for creases and baked normal details etc: (Blend with Base)
When will we ever get a "Extreme very poor" ranking? Because I am tired of showing every very poor, but hiding the extrem very poor peoples, because if I would only allow poor and below, the most peoples in the lobby would only wear fallback avatars.
is there a way to block peoples with 300k polygons and 500 materials, but still show peoples, that reached a bit out over the 70k polygon limit?
I think very poor is the "over the limit" ranking already, a "very very poor" ranking would just make someone else in the future to ask for a "very very very poor" and repeat, you can request on the feedback page for the poly limit to be increased on pc. Tho i don't assure that the devs will do it. 70k is already a lot knowing how unoptimized most shaders in use are
Very poor ranking is getting removed apprently. and we only go to Poor.
you can not filter that way, if every avatar with just a bit over 70k poly gets the same rank like the peoples that have a few mio poly and a few hundreds of materials.
A good PC can handle that, but can not handle good the mio of poly avis.
Try to take a look in a public lobby, how many custom avatars have over 70k polys and how much materials with none atlasing...
removing very poor would make it even worse iv poor is now the rank with all the few mio poly avis thounsands of bones and stuff.
(My avatar for example is already over the 70k because I dont want to remove other features of it to add new onces and scaling the polys down to hell would look bad and end up in even more "that avatar looks old" answers.)
by the way, I made that picture of someone, that "tried" to made their avatar quest compatible....
he called it: "optimized E-Girl"
he told me, he already gives up and just needed to make his avatar quest compatible.
how should this work then?
I doubt they’d get rid of very poor, not for pc at least. You’d be cutting out a majority of people’s personal models and would go down worse than EAC imo. Plus I have vp models that, due to sdk3 logic, will literally never show more than the medium level stats.
How would you separate those models from the so called ‘very very poor’ models? The stats look the same, the performance when used is just different.
Something like a performance ranking compatible toggle system separate from the "normal" one, could work, like this: https://feedback.vrchat.com/feature-requests/p/vrc-toggle-system-compatible-with-the-performance-rankings (linking to this because I can't be bothered to write it out again).
probably the best path is to encourage creators to actually consider performance
Isn't that what they are doing right now though?
Feel like they would need to use a more heavy handed approach, like giving better ranked avatars some benefit, all I can come up with though is allowing instances to set min performance ranks.
instances that auto robot very poor dream
dunno, the difference performance wise between very poor ranked avatar A and very poor ranked avatar B can be worlds apart. The main issue is basically, that a lot of creators do not know how where to exactly optimize. Also that as soon as it hits very poor (meaning 70.001 polys), a "its very poor anyway" comes pretty quickly to mind, which does end up in not looking as much to performance as one should.
The ranking system cannot cover all the possibilities avatars and their animators might have. If one wants a reliable ranking, then it can only be through vrchat using a "controlled environment, load the avatar in and toggle each and every parameter through in all combinations" and measure the performance (cpu time, gpu time and vram consumption) at all times, then coming to a conclusion. Which is not really feasible and even then probably misses some things.
I looked at @zealous wigeon (this is partly my feedback to you 🙂 )canny for example and see directly "vram usage", "controller performance" etc missing, "simply" counting together meshes and materials in different combinations is not the full result of how much of an impact an avatar has.
VRAM usage is already counted and is always the same amount.
But yeah, trying to measure the animator's performance would be hard.
Best they could do is estimate it, apparently layers are for example significantly more performance hungry since they all run in parallel, but while I have basically only scratched the surface of animators, couldn't they count layers and the different types of states and have a sort of lookup table/graph?
If they plug enough holes then shouldn't the performance ranking system be able to be seen as somewhat trustable?
Right now if all your avatar is a simple avatar with no toggles, standard shaders and nothing unusual in the animator then the performance ranking system should be representative enough right?
hi so like i made my own avatar thru vroid, but the optimization and poiyomi shaders are really only good for pc. my brother's pc doesn't have a graphics card that supports VR so I have to just stick to my quest until i build my own pc.
with that being said, the version of the avatar i made for quest isn't really optimized for it, but i only really know blender and unity through youtube tutorials. can someone help me with reducing polygons and make it run smoother for quest while still looking good?
Not really i think, they know that their system is more of a guideline. Yes, there are a couple of things one might take into consideration, but in the end its all about "how to effectively tell?" Which i personally wouldnt know an answer to either.
The vram usage vrchat calculates is only about texture sizes, they dont count the mesh in. (Which can use a lot as well) and there comes another issue, when is vram usage bad? Is my very poor with 170mb total usage bad compared to a good rated one with 120mb download and over 200mb vram in textures alone?...
What we would need it better guidelines I would say and also sort of "bonus points?" If it makes sense. Like "oh you get a poor rating despite using 150k tris, cause only 20k are blendshaped and your total vram is under 100mb" or such. Then ppl might care a bit more
Yeah, don't get why they do not count the entire avatar into the VRAM calculations.
when is vram usage bad?
Hard to answer on PC, but Tupper did throw out an example that Good rating could be something around 30-40MB in Texture memory I think, which I think is fine. And when that metric is hopefully added it is another hole plugged. Would be far more useful if it included entire avatar size.
However, I see it as mostly useful on Quest, since it is set hardware and they know how much RAM they have to play with, if they are aggressive with it then they could probably significantly help against Quest crashing, since that seems to be caused by the tiny amount of RAM being filled.
But personally, anyone using more than 200MB texture memory for their avatar is being wasteful and shouldn't use it in populated instances, at 1GB you are either malicious or very ignorant.
What we would need it better guidelines I would say and also sort of "bonus points?" If it makes sense.
I definitely think that would be a useful addition, but would require the team to do a lot of testing, I would call it worth it.
And personally I think with a point system the metrics should be be removed overall and only kept as a guideline, far more flexible if ranks were determined using points, would be a far more complicated system though.
Agreed on that
200 x 80 = 16gb vram, not counting world, way too much
larger worlds are easy 80 people
Wish we could see a world's VRAM usage in VRChat, feels like some use multiple GB sometimes.
Cause it probably is. With my 3070ti (8gb) I noticed stuttering pretty quickly coming up, same world with sameish ppl now on my 4080 (16gb) no big deal, but that it showed 13.5gb utilization made me almost cry
100 mb vram should be the limit for avatars. reason being that if you have 40 people that's already 4gb of vram. and just by being in vr and even a simple world takes up around 2-3 gb of vram. so if you have 8 gb of vram available your only gonna have 5-6 gb of free vram. for avatars and world. and majority of worlds are around 500 + mb of vram
This is why all the good worlds have at least 3 places for people to gather, and occlusion culling properly setup.
So you don't have to load every avatar in the environment
So it is more complicated than just the addition of every avatar plus world, because you aren't always rendering them all the time.
Also, when your homie pops into view that has 47 materials, that's why you get a massive frame drop.
And will go away when you look away
What are some good ways/main ways to reduce vram use in textures
I'm gonna put together a small page on some general tips for it.
1: make them smaller.
done!
i guess theres texture packing too but thats sometimes involves shader editing to use the correct channel and it gets bleh
They still get decompressed into VRAM
Yeah the smaller one is obvious, I was moreso thinking of more lesser known ways to do so that most people wouldn't know.
atlas / bake set compression med/high (never none) , ignore crunch its only for download size
and use vertex colors whenever you can
If you don't need the alpha layer, save the PNGs as 8-bit with no alpha.
That's pretty minimal though
Vertex colors are great and basically free
Unfortunately they're a bit difficult for people who aren't more technically inclined to this type of stuff
Photoshop seems to do better at compressing PNGs smaller than Blender itself too
The ideal of the page I'm planning to make is for some general things that most people should be able to easily figure out and do on their own without a ton of Blender work, I'll definitely include it though as a more kind of advanced thing
how theyre saved in the OS is largely irrelevant to the texture import settings as they are converted to something a gpu can use
Image type dont matter , unity converts it to its own so dont bother using jpg/whatever it will be just as large as a png in unity
the imported image size won't matter, remember that unity will convert it to dds, what matters is the asset's import options
Yeah Blender bakes tend to be massive, I tend to re-save my textures in a different program, I've had textures go to 50mb in file size to like, 8mb just by doing that.
hmm and there is editing UVs to keep all solid colors in one lil dot and/or overlapping mirroring bits. This does mess with shaders that use uv size like poi glitter tho
ooh that'd be great
What’s the poly count where Unity shits the bed and drops performance again?
Somewhere in the 60,000 tris it happens but I forget where
It is the point where Unity has to use a 32bit integer for the polygons, which mostly just increases file size, by a lot.
Whether it measurably drops performance in this Unity version is not something I have seen proven or disproven yet, was an issue with older versions though.
And the limit of an unsigned 16bit integer is 65536 vertices.
Does anyone know where I might be able to get some help in optimizing an avatar I got off of Booth
for quest that is
not keeping in mind the 32 bit index thing, for me starting at 140k polygons you'll have to use light performance shaders like lightmap only shaders or just lightweight overall, the limit where your performace can start getting lower regardless of shaders would be 280k (so like double of double of the max for avatars), from there you'll have to start using lod groups is possible, static batching/gpu instancing and if you can, reduce poly count of meshes.
The max allowed poly count for renderers using the 32 bit index is 4200M polys, but i doubt anyone would do that
Also keep in mind things like fur shaders will x16 your mesh's poly count, realtime lights with shadows will add x1 the count of all meshes (with shadow casters) for each light, and outline shaders will x2 the mesh's count so be careful when using these
Those were the perfect answers I was looking for. Thanks!
yw!
Hey guys, if anyone is around I have a QUESTion (:D), I'm optimizing an avatar for use as a fallback for when people can't see my PC avatar, it's the same avatar I normally use, but MUCH more optimized and down-scaled, I'm running into ONE really big problem that is keeping me from being able to make the avatar quest compatible, and that's the frIGGEN MATERIALS
The model in question was made in Vroid Studio, I then imported it into blender to get the polygons and materials in order. The issue I started to face came when I exported the model using CATS. The merged materials just... wouldn't apply to the model. They would just break. So, I decided to see if I could export the it as a .vrm and at least make sure all of my other changes worked, which they did! Fixed bones, polygons, everything. But no matter what I do and try, I cannot merge/fix the materials.
Does anyone have any guidance for me? ;u; 🙏
Did you atlas the materials and THEN export the model? cause it changes the model, also you gotta make sure you either cut out the eye lashes and eye brows or remove them or it won't look right for quest, it'll be bloby
I did! When I atlas it, though, it makes the model look funky! One sec
Unatlased
Atlased
Did you fix the model first before atlasing?
I'm gonna start from the beginning in Blender, I wanna make sure I am doing everything right. If I recall, I /DID/ fix the model first, but lemme make sure.
Just re-imported the model, clicked "Fix Model" and
Well...
Pretty sure this isn't the desired effect 😆
do you have it saved in vroid atm?
Whatcha mean?
like you made it in the program, do you have a saved version of it in there still
Oh, yeah!
Okay by the export part there should be something like optimization settings
Yes! 👀
okay hold on will talk you through this
sorry it's taking forever, reinstalled windows and don't have it, redownloading it
No problem! I appreciate the help ❤️
😄 ❤️
Okay on reduce polygons, delete transparent meshes, it won't for all of them but it reduces it don't do edit hair cross section, it messes up your hair
Got that! 🗒️ 👀
Then reduce materials, combine hair mesh, 2 materials
then export
it will be more optimized now and when you fix and atlas it in blender, it should have a much better result
Lemme know if it works properly 😄
I finally got it working, but I think I forgot to fix the eyelashes/eyebrows thing, cause now there's these weird like... white spots. But I'm not well-versed enough to fix them ;o;
is it shine maybe
Can move the spectacular down
How do I do that?
I think it has more to do with some of spots of transparency on the model? Cause like, the skirt parts TEXTURE, has a design on it, which you can see the transparented part in full scale on the white portion
The eyebrows, eyelashes and that stuff, i'm unsure how to fix - since separating the meshes doesn't seem to give me access to those parts. I think is mostly in part of them being hand-drawn in VRoid
In this image, on the skirt
The white shows up on the eyebrows, the necklace, the rim of the skirt, and there's some weird aliasing problem on the eyebrow?
you mean those odd grey parts?
Yes? I think we're on the same page? Hold on-
I think I need to give you a quick Blender lesson in a call and teach you how to use the Knife tool
It's quick and easy but not easily explained through text
it will be time consuming but it will be easy peasey
Are you free to do that?
These thingies
UHHH, it's actually 6am for me and I am doing some final looks before going to bed cause I have work tomorrow
It's pretty much this, you can cut out stuff you don't want with "K" which is the knife tool
cause the meshes are too big
📓
but make sure when you cut stuff it's to the next edge and never in the middle, never between, always to an edge or you'll ruin your visemes
then you can highlight the parts you don't want and delete them
If you need more info/help msg me when you're free anytime, happy to help
Sticky noted
guys anyone knows how to use CATS altas tool?
original
but once I click "save altas to..." it becomes this
Eyyy, that was happening to me too. Did you make sure to hit "Fix Model" at the START of the project, before doing any changes?
Are conversion commissions a thing? Cause I'm about ready to just pay someone to fix this for me cause I'm losing my mind. I'm gonna go to bed and tackle this later, thank you @vivid night for the help.
Send me over the file and I'll do it for you lol
Free
I get that it's frustrating, I had to learn it by myself so, I get it
If you do it I will pay you. >:T Lemme DM you
That is a vrm 'bug' you need to 'extract' the textures to somewhere then atlas or it will fail
#avatar-help message how to fix that
(atlas has no clue where your textures are,so it just uses one) @timber fox
ah i see, I'll try your method
thx
it works!
if anyone knows the answer to whatever this is i'd love it. I followed sippbox's tutorial for gestures and the gestures work but my eyes are left behind and my??? visemes broke lmfao
I imported legacy blendshapes instead of setting it automatically with the sdk so maybe its to do with that
Looks like you have broken/missing weight for eyes vertex, they are not weight painted to head.
It is issue on fbx itself
worth checking out LOL
yup that's it
oops yeah i accidentally deleted my eye vertex when replacing my eye bones
thanks!
Is there a way to merge bones or something? In unity it says mine has 309 but all of them are needed so idk what to do
You'd probably be doing that in something like Blender
I'll try to figure that out 😬
Maybe you have some end/leaf bones with no weight painting influence on any mesh that you could safely delete (with the fbx open in blender)
I know you are a busy bean, but I had a quick question. That warning on the performance rank that says "A material on this avatar has custom shader keywords...etc" Is that nothing to worry about, or should I fix?
it """""can""""" cause performance issues if you have like a million keywords
but you most likely dont
@heady smelt tldr
if you dont know how to fix it, do not
Probably a Poi thing
it can break shit
POI does have a few issues with keywords but its nothing to worry about
again, best not to touch it
Thank you, sorry for the pingle
nah iz ok
It can cause issues if map + everyone present has over 160something custom keywords. Issues like shaders simply not rendering, as the keyword cap of 255 has been reached
Afaik only bones that have influence on a mesh are counted by performance ranking
not performance issues, unity has a maximum keyword count of 256, once that limit is reached no more keywords (ones with different names from the ones already loaded) can be added and shaders might start breaking
performance will not be affected
Im pretty sure the sdk doesnt check the weighting on every bone then exlcudes those with zero weights - but its possible I'm wrong (i'd be surprised if it did this and i thought i remember saving bone count be removing leaf bones).
But it also makes phsybones increased unnecessarily unless you manually add exclusions to every chain. So its good to dump them
I thought that unity its self would somewhat ignore zero weight bones like that but might be wrong...
also end-bones are required for proper physbone behaviour in many cases
i am like 80% the vrchat SDK counts all bones in the armature towards the bone count for performance ranking
It is based on the mesh renderer, it looks at each skinned mesh renderer and just sums up the count of bones in each
I think
yeah, so its a good optimization idea to add end points in the physbone themself, so you dont waste vrchat bone perf slots
end position doesn't add to transform count?
I'll have to check that out later, anyway gtg now...
i dont think so. I have an avatar (and old version of it, at least) that had a large number of bones, like 300, but half of those were for dangly bits of different outfits which were all on different skinned meshes
and even after removing those skinned meshes, the sdk still counted those bones
(removing them as in removing the mesh component in the scene
its a bit an of annoying way that it works like this, tbh 😦
and i wish it worked dynamically like you mentioned, would be easier to work with xD
It does take some time for performance stats to update in-editor, might have just not updated the numbers yet
nah its been an issue ive struggle with and had to work around for ages. Hey if you can show me some way to have it dynamically ignore bones in the perf count (without modifying the SDK) I'd love to learn the trick!
(im strictly talking about the effect on the SDK perf count, not actual in-game perf impact)
you can't even do it with an SDK modification, in-game performance rank is actually counted when the avatar is loaded
oh? nice thats good
that is what the "loading..." stage is after an avi has downloaded, otherwise it would be immediate
there used to be a mod that disabled it for faster avi loading
i wonder if it would be a good feature to have an avatar uploaded and its calculated perf details baked in to the upload, then add an option to "trust" whatever perf rank details the avatar says it has to reduce that extra load (but keep the default option to do a proper check if people want to be more safe against faked perf data)
might be useful in trusted environments when people are changing avatars a bunch
FYI
ChatGPT is not a valid source for answering questions
shh, let the man/machine speak
chatgpt can be very confidently incorrect sometimes
It learned about ligma the hard way
Ask it the right questions and it absolutely is, chatgpt solves many unity problems for me everyday
not if the issue is caused by a change that happened after 2021. xD
Second round of optimisation complete
Every texture atlased reducing the compressed size from 7.5 to 4.5mb and build size from 75 to 26mb
Accessories moved from individual meshes reducing skinned meshes from 9 to 5 (will be reduced further in the future now I know how material hiding works)
Materials reduced from 16 to 12
Draw calls reduced from 13 to 11
Unity render time reduced from avg 7.2ms to 3.8ms
I dont know how you guys do this, its exhausting
haha it sure is
The thrill of chasing lower numbers.
material hiding? care to share some information about it? (please ping me, so I get notified ;)
12 atlas textures wtf? and also its not really possible to have drawcalls fall below amount of materials 😄
Technically, if some of those materials cannot be shown at the same time. [e.g. a toggle that disables one mesh while enabling another]. The SDK's material slot count will have to assume all meshes are enabled, as it's not really possible to make an unbreakable automatic test for which things can be enabled at the same time
Its less exhausting when its part of the workflow deff. Knowing what shader features are available to shove as much into one material and set of textures is actually easier to me than setting up 13 separate materials
it's very possible and easily done to make a automated test for it. however it's utterly useless and yes i know that it may have some hidden once.
3 atlases, 2 normal and one emission which are used by all of the materials, and as for the draws that's what unity says
Intriguing, is there anywhere I find out more about that? There is a grand total of nill tutorials when it comes to optimization
Im having trouble finding the usual, but the keywords are usually Bake textures in blender or something related. The main idea in the videos is to fill the uv map for each optimized material, bake all the textures/maps/masks at a reasonable resolution, duplicating all the meshes and joining the duplicates together as 1 (this step is entirely for backup reasons), removing all the old uv maps on the 1, assigning the new materials to be able to delete a lot of the old ones, and exporting with only that one mesh+armature.
Poiyomi dissolve alpha which is performed per material, I saw some guides mention it so I'm giving it a go to see if theres any noticeable performance difference due to cutting out so many skinned meshes
ffs after all that theres not a single ingame performance difference
What am I doing wrong, is there some obscure forum comparing all types of optimisation techniques so I can know what to focus on?
This time we're looking into some simple tips on how to optimize your VRChat avatar in Blender.
Rainhet's Tutorial Playlist:
https://youtube.com/playlist?list=PL2EEbgwoJzdt5kFVDyY2lliNqf7cWJeD3
#Blender #VRChat #Tutorial #Optimization
If you found this helpful and entertaining, please consider coming a Patron.
https://www.patreon.com/Aggrota...
I appreciate it but I've already gone through all of that sort of thing
question where you in a world by yourself
ye
I was going by the steamvr render timing (just fps basically), I tested just normal, hi/low mirrors, and with others in the world but no dice
at this might be handy for measuring the difference between the Avatar before and after
heres the stats
Unity frame render time went from 7.2ms to 3.8ms but no change ingame
it still has to render the everything else besides the avatar
Unity environments are identical, only difference is the avi
if you're running vrchat in VR it would be doing more than desktop because it basically as to render the scene separately for each eye
But I would've though that that level of optimisation would have some measurable effect
you're not going to notice a huge difference with like 2 draw calls
whats the thing to focus on then to get the most improvement?
still probably going to be helpful the optimizations you made and out of curiosity what framerate where you running at anyway
90hz oculus link cable, I realise now that I should revisit some of the oculus debug settings again
vrchat will not be running above the frame rate cap
so even if like the actual frame rate went from like 92 to 95 you're not going to see it
I'm trying to get a stable 90, not alternating between 45 and 90 fps
then you would have to hit 90 all the time because any drops below 90 would instantly drop it to 45
question does your frame rate stay at 90 if you use like one of those Quest compatible public avatars
just wondering to see as far as if it's like the amount to draw calls dropping your frame rate or just like the basic cost to run any Avatar
Alone with no mirrors it will be consistent 90 my home worlds
of course mirrors are going to drop your framerate because it's literally rendering the world twice
I know that, I still want to improve it as much as possible
I should test with a fallback in the mirror first to see if the test I'm doing is useful at all
yeah good idea and definitely helpful the optimizations you did just it's not necessarily going to magically fix your FPS given that it wasn't like a huge reduction
ok thank you
so million dollar question, what is the best / most efficient optimisation that can be done
I guess that would depend on the model in question as far as what needs help the most besides more just in general get the numbers as low as you can go
I guess I mean for any avatar like materials, skinned meshes, the best way to do clothing. Things that have the biggest impact on performance
my understanding is, generally, focus on reducing draw calls. So reduce the number of materials and mesh renderers.
Most of the time those will be: What a chonky unoptimized avatar will have way too many of; and probably give most bang for your buck in terms of effort.
At least, thats the way I understand it
Awesome thats a few ideas i can use moving forwards thank you
A super easy thing to quickly cut down on your avatar's VRAM usage is to lower the resolution of your textures. Like if your avatar is in a bad place using like 500+ MB vram for its textures, halfing the resolution on all those textures will probably save you a whole bunch of vram usage. Even easier than reducing mats/meshes
Less VRAM = it will take longer/more avatars before people hit their VRAM max and start chugging
vram is in a good place for now, 26mb with 2 regular atlases and an emission one, unless theres a better way?
(i dont think you'll see, like, granular perf increases from lower VRAM usage, its just to help not contribute to capping people out in a world too quickly)
26mb is not a whole lot of vram compared to most avatars
yeah 26 is great compared to whats out there
double checked that number from the unity tests and correction, build size is 26, vram is roughly 70. Still pretty ok
yee. I would probably put "optimizing your vram" on the low priority list at that level
assuming you cant getany quick free wins by lowering any rogue textures down a bit in res
and if it's helpful contacts the reason to focus on draw calls is because those are aspects of the Avatar that affect CPU
The documentation recommends splitting the head because of the blendshapes if the body mesh is large, is there anything that explains the process? If so I could try adding the clothing to the big body mesh if thats a good idea
explains how to separate teh head from the rest of the mesh?
in terms of the setup afterwards
and question how many triangles is your avatar anyway
nice
that would pretty much just be having your blendshapes pointing to the Head
oh yeah, would need to change your animations that control any blendshapes on your head
to point to "head.smile = 100" rather than "body.smile = 100" etc
no gesture animations for now, I might try somewhere down the line but thats not a complication atm
I do have separate torso and leg meshes from the body (which is face/neck/hands) cause of clothes clipping, and getting the weight painting just right isnt something I want to spend time on unless its something really recommended
question is your clothing something that toggles at all or are they always on
this i think is a bit debatable - but you might find you'd get more performance by reducing draw calls by combining your leg/torso/body together and just adding a handful of blendshapes to squeeze those parts that clip (rather than turning the meshes off). Maybe.
I believe there is also some magical way to discard parts of a mesh through shader somethingsomething which would mean you could avoid even needing to add the blendshapes
UV discarding is more efficient rendering wise than blendshape
yeha tahts the one!
so if you wanted to try and learn how that works, you can merge basically all your body together to reduce a bunch of mesh renderers
and use UV discarding to hide parts that you are currently relying on turning meshes off for
UV Tile Discard (previously known as UDIM Discard) provides an efficient way to toggle portions of a model on and off at runtime. This is done by placing portions of the model on different UV Tiles, and then discarding specific tiles at runtime.
ah shit here we go again
So separate the face to get the blendshapes away from the majority of the polys and then move everything (except maybe the clothing for outfits versatility) to the same mesh
That is fantastic fellas, thank you so much
yee
When im very set on a piece of clothing being "the main one i'll use" I also merge in that clothing to the body mesh, if it wont add too much complication
Although i keep a "working" copy of the separate body and clothing meshes and if i ever make changes to them, i change those working versions, then re-merge
