#avatar-optimization
1 messages ยท Page 59 of 1
?
If you have multiple uv's and then atlas you get some odd results, so id check that before atlasing
is there anyone here who'd be able to help me?
cause all my materials when just moved into unity from blender turn white and brown
three days is good start!
Can you show screenshot?
dont cry ๐
okey! lets see if i can help!
I learned that people say that using decimate for a character you are eventually gonna rig causes issues, is that true?
Decimating is automatic and messy, if you set it too low you can have long polygons that cover a joint. Polygons cant bend over joints like that so youll end in bad clipping and the like
For skinned meshes, retopologization and edge dissolving are the preferred methods for getting a clean topology
Ah okay
IIRC it doesn't matter, pretty sure you can do stuff like .Left and .Right
Is there a common method for smoothing an avatar out in blender after decimation? I really want to get mine optimized, but it always looks scuffed afterwards.
Is there a tutorial on doing that?
you enable sculpt mode, select smooth brush, and use it on the mesh
but i'm sure there's tutorials
Okay, I'll give that a try later. Thank you!
There a brush that relax the topology
well i finally made an excellent avatar without compromising quality, which isn't much but hey i'm happy about it lol
been working on my own tool (RAT) for automatically prepping my avatar model for baking through CATs all inside of a single button for PC and Quest. it automatically joins the meshes (and applies modifiers), deletes unused or debug models, and as a bonus - the baked textures and model are exported to unity automatically so it's even easier to update the avatars! been working on a smooth non-destructive workflow for avatar creation in blender ๐ soon i want to add automatic curve to mesh and then join into the workflow as well (for hair/tail curves) so i don't have to do it manually
Oh! I've actually got the curve stuff kicking around somewhere
Is this inside Unity or Blender?
it's inside blender
Meshes are already joined with Cats bake, but applying modifiers not so much. One suggestion: we actually use Subdiv modifiers for normal baking and then discard them, so it's best to leave those alone? (I think I also account for multires somewhere...)
yeah i avoided using CATs for that specifically because i needed to apply specific modifiers to certain objects (lowering my subdiv levels for quest version maybe? :-) i also have to smart uv the whole mesh too, but that's because im not doing any texture painting yet
i have to do a lot of object and edit mode changes so i thought i might as well join everything to while im there ๐
Works!
For future reference, 'Reproject' in Bake does that (smart project stuff) but the dev version does some magic to detect bad uv maps and reproject them regardless of option
oh yeah i should probably use that :> i have been running the dev version as well
What's considered a bad UV map ?
@calm spade eitner no UV map, or (need to finish this) tris that are at 0,0:1,0:0,1. That's where blender puts them by default if you create a uv map but don't unwrap anything
It stops e.g. you have hair that has a material that doesn't care about texturing, but when you try to bake it it turns gray or something
Why is my fbx like 25MB big, and how would I reduce it? I tried to minimise materials, remove blendshapes, ...
are you embedding textures in there?
I hope I am not, the unity import is without texures - where would I check that blender?
I'm having problem with animating a part of my model that has dynamic bones. When I try to move the bone, it wont move. Does anyone know how to solve that?
The dynamic bones script prevents movement from the outside, you should animate without the dynamic bones script, then add it later
I use currently 2x2k texture on quest avatar and below 10k tris. I could make them good by having instead one 2048x4096. Is that better ?
'quest' shouldnt have very high texture resolutions, one i got is 1k (1024x1024)
recommended is 1k, but thats quite awhile ago, might be higher now
If I remember the quest have a lots of video memories so it wont be an issue I think
It's still reccomended to do 1024x1024 iirc
no, quite the opposite lol
memory is shared between CPU and GPU
I can still drop the rez to 2k by 1k for the quest version.
That would be a good idea. Also keep in mind: if you still use Box mipmapping, your textures are gonna be blurry anyway, until you get extra close
why would one to use one and not the other
Huh?
box vs kaizer
Box is the simplest scaling algorithm possible, averages the four pixels in the previous mipmap. Very blurry, but extremely consistent
Kaizer is much sharper, so you can see way more detail from a distance
I think the the current rez of headset box is better overall then dancing pixel in the distance
It's not like, no mipmap
Its just a different scaling algorithm
It's pretty impossible to tell if anything shifts as it moves
Kaiser can sometimes give you texture smudging
So try out both
Looks like kaiser was updated in unity 2020.1 ๐ค
Im going to restart my avatar how would I put pants on
Me debating back and forth to what degree I want to care about avatar stats and optimize
So with a lot of toggles I'd eventually reach the mat limit and before that the poly one
But if I dont and switch avatars a lot that can be negative for performance too and when VRC decides to mess up, I'll be stuck with whatever I have at the time
No way to have a lot of clothing toggles with fairly high poly models without the stats going
but actual performance wouldnt be nearly as bad as it looks because most of it wouldnt even be enabled
the performance rating is like the theoretical performance meanwhile you dont know the actual performance. If most of the things will be hidden, likely your actual performance will be far better than your theoretical.
Yeah is true, though people jus looking at my stats wouldn't know that and I may very well get hidden by people or auto hidden due to the perf rating, even if the actual performance wouldn't be nearly as bad as it looks like if the max amount of things I can have turned on at the same time would never exceed those limits
And the opinions about that go all sorts of direction, from people telling me I should absolutely optimize it as much as possible to those telling me I shouldn't worry so much about it so long as I'm not going into absolute extremes where my actual performance impact is really bad
Just have a fairly good optimized one for publics and the one with all the toggles for privates
Are there any issues using shaders under the mobile category for a desktop avatar?
You mean for using them on PC? No
https://blenderartists.org/t/uv-unwrapping-slim-algorithm-in-development-suspended/688922 So I found this thing floating around
It's an algorithm for like, super good automatic unwrapping, it's been sloooowly starting to be integrated into Blender for forever, but it hasn't quite landed yet
But they have a standalone program that does it. And I've worked out a way to hack it into blender as an addon kinda?
So here's the result, with as few seams as possible, to turn my entire mesh into one giant island
When I use that as a Bake target and then decimate down as much as I can before the mesh gets super janky, I can get it down to 2000 tris without significant texture distortion: https://cdn.discordapp.com/attachments/790488253764730920/825832871113523290/unknown.png
If I can work out how to wrap this into Bake it'd be amazing... but also a lot of work -w-
for reference, 2000 tris is about what you'd want a model to have to work for a character model on the PS2
Their unwrapping method seems to make so much sense you start to ask yourself why that isn't the default
because that's basically impossible to paint manually and most of our uv techniques came about before substance painter was invented
@buoyant holly it's actually probably better for painting manually... but not when you've got one giant island like I do
@calm spade Probably more expensive, big deal 10 years ago, not so much now. I'm a little sad it isn't already in blender, but I suspect it may be in Substance Painter? (does it do uv unwrapping?)
Substance has the option, but to be fair I've never used it, because why would i
You could go even further and expect the software to place seems for you in places of interest, since you detect weight paint groups and places where the mesh bends, shapekeys etc
Mmm doesn't say
Well yeah, that's my current hangup: generating one giant island isn't the normal workflow, so I wouldn't expect people to have done it
I'm not talking about like, smart UV unwrapping, just general unwrapping (that's what Blender does, this algorithm just does it better)
It might only do it if you've got no UVMap on the model, I'll give it a try later
If I end up integrating this somehow, I'm totally gonna add a 'PS2' preset for avatar generation
not sure if anyone would use that as they probably be good enough with the new Quest limit but I suppose that's handy if you have a model that's not behaving with the normal tools
Well, more just for fun x3
definitely interesting to look at
Just decimate it in blender
many different things go into determining the performance rating
@heady smelt https://youtu.be/JqoIGxUrLbw
polygon count is one of them
but things like dynamic bone collision count is another
I would not recommend using that
use the decimation options in CATS plugin
more beginner friendly
if however, you know what you're doing, then using the default blender decimation function is fine
the main thing to look out for is shape keys
decimation of a mesh with shape keys is risky
Bake takes care of atlassing, decimating and shape keys all in one go!
yea I've heard about that
which is why it's a lot more beginner friendly
however if you're serious about optimization, getting in there and doing some more manual work can yield better results
since you might be able to clean up geometry better than an algorithm could
using both is probably an even better idea
absolutely yeah, Bake is intended to be a 'one size fits all' sorta deal
bruh
Anyone know how to optimize materials?
is there a way to check in unity how many poli's my avatar has?
In your asset, you can open the asset, select the mesh object, it'll show the poly count in the preview window in the bottom right corner
The SDK should also display performance metrics
Shader?
No material?
Is there any way to profile the performance of an avatar other than the stats the are listed in the SDK and client? I would like to do some experimentation and see if things have an actual impact.
Intel GPA, just find a world (alone) and benchmark in an empty avatar then swap to your actual and there should be a minor discrepancy
Oooo. I was thinking to granular. Measuring on a meta level like that would probably be good enough to influence my decisions. Thatnks!
@pure thicket
You want to test avatars in game without having to upload them and trial+error alot?
I believe the prefabs servers database has a unity plugin for that
There is the local testing. That will work fine for this.
I assume the package is not too different. Prolly gets linted on the server to strip non allowed scripts. But id think tye rest is the same
So some time ago, it was talked about how active blendshapes can impact performance quite a lot with high poly models, but I haven't really been able to figure out how to "bake" blendshapes to the mesh so that I can remove the blendshapes that are always active and never change ingame. I was also wondering if there is a difference in performance if I combine multiple blendshapes to be just one. The amount of stuff that moves would be the same but it would be controlled by a single blendshape, which might be better? (I dunno but it'd be good to know if that is the case)
you can use the "Propagate to Shapes" option under the Vertex menu in edit mode
it will take whatever you have selected on the mesh, and apply those vertex positions to every other shape key
and yes, I do believe that combining blendshapes would also help performance
you can do that by activating both blendshapes in Object mode, and then going to the drop down menu on the right, and clicking "New shape from mix"
Yeee I know how to combine it, am jus not sure if that would be nearly enough since it still affects the same amount of everything
I havent been able to actually see that option pop up
shape keys store the position of every vertex on the model
that's why they are so bad on high poly meshes
Oh
every little thing you add is one more thing that every shape key needs to keep track of
you see the problem now? xD
Yeah xD
recently I've been working on a sugar glider nanachi for a friend
the wings are fairly high poly
I decided against merging it into the main mesh, since doing so would most likely be terrible for performance due to all the shape keys
I guess I could test it in Unity, place a bunch of unoptimized versions of the model with active shapes, then place a more "optimized" version that has all of these shapes combined and see if that makes a difference in performance
It wouldn't seem like that there is what I'd need
So that also means that, it doesnt actually matter how much one blendshape is moving, just the amount of blendshapes + poly count of the affected mesh is what kills it?
from my understanding, yes
also you need to go to the Vertex tab at the top in Edit mode
I will take a look at that in a bit
But that also means that I might just make some expressions in Blender and turn each expression into a single blendshape instead of, affecting like dozens of blendshapes with every gesture I make
that could be a good idea yes
Thank you
๐
Yeah I read about that specific setting online but I couldnt find it
But yeah that is basically pretty much what I'd want, now it stays like that
Cats Bake dev version has an option to 'bake' the current shape mix to the basis, clean up shape keys based on naming, and split the non-shapekeys tris out into their own mesh (with custom normals so it's difficult to tell there's a seam at all)
The seam is more visible on Quest than on Desktop, though
Oh I see
Anyone know how to decimate a particular part of a model? it decimated the whole model even when i have just one mesh selected
With what tool ?
@untold glacier select what you want to decimate in Edit mode, hit f3, search for Decimate
click it, it will show up in the bottom left
reduce the value to decimate
you can enable symmetry too
I have an avatar with one material shared between two skinned meshes. How come the performance display tells me I have two material slots? Is this an SDK bug?
There is only one material slot in the materials tab.
While the textures will be shared, two separate skinned meshes still need to be rendered.. seperate. Two is correct
so uhhhh i just uploaded my vroid model into vrchat and it isn't quite the best,how can i optimize stuff
bcuz issues
like hair being rigid and following head
Well adding dynamic bones would make it less optimized
i have like 3 errors and 2 poor things (overall preformance and too many material slots)
aaaaa pain
Fix the errors first, then you can fix the materials in Blender with the help of the Cats plugin
problem is i'm an idiot unity newborn that knows nothing
Time to learn !
Quick question: is there a method to be able to work on both the quest and PC versions of an avatar within the same project, or is it best to keep the two seperate?
You can swap the build target, it gets quite slow unless you enable some sort of local caching option
wait uhhhh how do i make an avatar both quest and pc compatible
Just upload it as windows and then switch to android and upload it there too
Do AvatarMasks have an effect on performance?
upload both versions to the same avatar ID
for quest, you need to set your build target to Android in unity
Unity needs to recompile a ton of shit when you do that though, so you probably want a second project
I'm not sure where to put this since it has to do with quest shaders. I have an avatar with material textures that utilize alpha transparency to display correctly. However, when I set the shader to any of the supported quest shaders, the transparency gets discarded. Is it possible to retain alpha transparency for quest avatars?
nope transparency is not supported on the quest as it's too expensive for mobile Hardware
ok how do i make an avatar quest compatible?
Bananers is boomy now
@wary heron remove what you can't have, reduce polygon count, combine materials and textures
ok so my avatar is ready for quest,how do i put it there since it doesn't let me switch build target to android
You need to install the Android sdk for unity. https://docs.unity3d.com/Manual/android-sdksetup.html
Suggest another project instead of switching between pc<>android, it likes to set all your material crunch back to default (could just be a me issue) and bigger projects takes awhile to switch even with cache
hey im making an avatar in unity but having a bit of trouble ? i have imported using vroid. i get my avatar into vr chat but with 3 main issues : when walking my legs go to far in front where it looks very stupid, my avatar stands on his tiptoes however i can fix this by changing height but half my shoe is in the floor and finally when i move my arms it sometimes reveals a gap on either side making my hoodie disappear in parts on my chest is there any one who can help i have been working on this now for well over 24 hours i just want it done ๐ฆ
after all my optimization and whatnot I went from 1.85mbs to .71mbs. I got bored and attempted to see how well optimized I could make my avatar using nearly every tip and trick I was provided.
I felt like I went on a damn pilgrimage.
glances to my friends avatars with a bajillion polys, bunch of small, useless toggle meshes with a dozen materials and dynamic bone counts in the triple digits
Please instruct our brethren, they have strayed the course
๐
I'll get my stone tablets with the Optimization Commandments.
"Tupper has bestowed upon me these fifteen.." -drops one stone tablet- "Uh... TEN! These ten commandments on optimizing avatars!"
Things you can do on any avatar anytime that you should make sure to do.
Make sure Legacy Blend Shape Normals is checked on
Disabling Streaming/Generate Mipmaps
Adjust the size of your textures as well as turning on crunch compression.
Use Blender 2.79 to 2.8+'s inbuilt baking/atlasing instead of using Cat's Blender Plugin.
While it may be helpful for beginners, it can create unnecessary empty space that makes your texture bigger than it should be. Aim for 4k or less.
Adjust sizes of avatars and in extension, bounding boxes. While big avatars be pretty cool. It adds up at the end. The smaller the avatar/bounding box, the smaller the download size.
Wait what? Since when does bounding box affect download size?
You're saying if I edit any avatar's bounding box to be supermassive it will increase the file size sent over the network?
Where none of the vertex data is changed, added or modified...
All the textures are the same...materials etc.
That just doesn't make sense.
Most likely yes.
All I did was copy an existing avatar and made it smaller
I don't know the technical jargon, but it's a thing.
that doesnt sound right, do you have a comparison of the build report?
The filesize actually shrunk with the bounding box, not just the performance ranking?
Download size, not performance
Was generate lightmaps enabled or something? I'm floored.
Nothing changes in terms of data layout, the bounding box is just a few numbers.
While the performance system prefers smaller bounding box, the download size for some reason is affected. Further testing will occur with that to give a better answer
looking at the build report should tell you exactly what affects the file size so that'd be interesting to see
maybe some unity builtins that's dependent on that?
As of right now, I have two models that are identical in every way except for size for some reason it affects download size.
How significant, im unsure
Something is being generated based on that space, like lightmaps or something, but lightmaps are usually turned off by a warning in the plugin window...so what else could it be?
I don't know, but what I do know is this means we can increase VRChat's performance 10 fold if we shrink everything and everyone. 
Time to recreate Honey I Shrunk the Kids.
doesnt make sense though, you can dynamically scale meshes which will affect the bounding box size, by that logic you could "compress" avatars by uploading them as tiny and restoring their scale at run time
yeah test and get the build reports
if I had to guess, something related with shader variants and the smaller avatar got compiled with less variants thus reducing file size, unless you're already using a shader that has shader locking
Because as far as testing went; I have two avatars completely identical in everyway except for size. The download size showed that the smaller avatar had a smaller download size than the average sized avatar. They both have same animations, controllers, materials, everything.
How much of an impact it makes to performance and download size, im not sure. It could be pointless to do for all I know.
But yeah, possible bug
How much of a difference did it make are we talking a few megs here or just off by less than a percent?
You should test it on a barebones avatar with a single small mesh and one material.
okay i just tested it
results are inconclusive
regular avatar 13.6mb
scaled down 13.5mb
built regular avatar again
13.5mb
first build slightly larger?
Inb4 rounding error ๐ฅด
a diff check of the entire build report shows them all identical
except for the tallied file size
Could be a rounding thing.
Or it could be special cases with each avatar.
I'll try with my .71mg avatar and see if the results are the same.
Later though, Im on mobile and require sleep
I'll keep people updated on what I find out.
But the other stuff however. Significant difference.
If I had to guess, some small amount of meta data as part of the asset bundle that changes every build is just small enough to create a size difference because of rounding
Possible 
Need to access that to see all the individual stuff like that.
Right now as I stand, im at 0.71mbs. I still have animations to work on.
How do I see build report like that?
unity editor log
Alright, I see it. Thank you.
Small changes might result in the asset bundle being less compressible
I wouldn't worry about 100KB of file size difference tho
Alright, so now that I have time I can see where both avatars are standing with the height/bounding box difference.
The small avatar is 1.69mbs
The average sized avatar is 2.31 mbs
I'm not sure what may be causing this big of difference
everything is the same except for size of the avatar and bounding box.
These are different avatars now?
nope, identical in every way
Okay so you're importing the same avatar twice, where are you scaling it?
There are a few ways to do so.
simply scaling it
It's transform?
yep
Okay instead of scaling the transform, try scaling it in the importer.
See if that thing you mentioned can happen?
yes scaling the one in the viewport will add lotsa weird animation data when it packages
What thing I mentioned?
not sure if it was you or someone else, I think it was mentioned that this could probably get abused via animation or something.
but yeah, this is literally the difference between the two https://gyazo.com/afac0972f6231f795ad62d0385bf2df8
do keep in mind, this is just more me fooling around with download size
Oh, you mean what Temporal was saying?
yeah
Okay so what happens if you perform the scaling through the importer instead of the transform?
about to find out
Alright so..
Average size - 2.31mbs
Small size - 1.69mbs
Uploaded average, but scaled the size down before upload. - 2.31mbs
So it can't be tricked, but maybe it can with the animation thing that was mentioned.
Have you made a bug report for this yet? These numbers are significant.
also I did something to go from .71mbs to .67mbs, but not sure what..
I passed my target goal of .69mbs
Do game objects that are disabled count towards lag? I know they count against avatar performance rank but do they actually cause extra lag when disabled?
There is a non zero cost since they still technically exist, but you dont have to render it so you remove that performance hit
They're counted against your performance rating (since perf rating tries to cover worst-case) but in practice you avoid most of the cost
Thanks, that's what I was guessing
I'm looking to have a pinned root dyamic bone, where it's 3 children rotate around their roots and the root bone does nothing. Is that possible?
Hard to imagine what you want. Image needed
If you set stiffness to 1 and use stiffness distrib (where the beginning is 1 and goes to your original stiffness value), you can sorta disable the first bone
Does anyone know if you can use LODs on avatars?
LOD Group isn't a whitelisted component
That sounds like it'll work, let me try it
https://www.youtube.com/watch?v=sZzq-D0DNic might be wrong place to ask but i am having truble finding a updated version of this guyied, can i get a link or advice?
wow 24 hours and no responces
This isn't an official support line, we're players just like everyone else.
yeah i know just hoped somone would have responed
All you have to do is type material atlas vrchat in youtube and you'll get many more recent videos
i tried the miost recent thing i could find dint have voice or text just "do this " kind
https://www.youtube.com/watch?v=lqe8JRiYuu0&t all other guids use much older blender
If that tutorial isn't helping, you'll have to look up how to do whatever step you're stuck on in the latest version of Blender.
that guid dose nto relly explan what he is doing thats the problem , and seemse like all the full guides i find are for blender 2.8 or older wich is just difrint enugh to make it hard from me
Idk man, what step are you stuck on?
well the problem i am having is kinda at 10 seconds in that vid or anything past it, i dont understand what they are doing or why or how they are able to move the uv map with out things getting messed up
when i try it distorts the thing
i tried following the vid but feels like i am missing a step
Make sure you have the second UV map slot selected. That'll be the new one you just created.
If you're seeing your avatar's UVs get all messed up with you go to move them around for atlasing, it means you're editing your first UV map.
All good, glad it worked out in the end
sorry if i seemed snapy with that"24 hour" comment, just i normaly try everything i can befor i ask
Nah it's cool, you could argue I was snappy in my reply. ๐
can anyone help me set a toggle to a object on my avatar please help
@silver raft https://www.youtube.com/watch?v=ROp4GHBj1N8
if you're planning on implementing toggles or other things you can control on the avatar, I HIGHLY suggest using SDK3, as it was literally built around that concept. for help with SDK2, you can go to #avatars-2-general. if you're for some reason dead set on using SDK2 and still want to do toggles, then search up "vrchat inventory system"
i might have not been specific i want to have an animation to pull out a hammer. for example when i make a fist
Okay I don't have experience doing object toggles on hand gestures but if you follow and understand that tutorial, I'm willing to bet it's the same principle applied to a different animator.
So, instead of playing the toggle animation through a layer in your FX animator, you would run it through a layer in your Gesture animator instead. (I assume)
In both scenarios, you're just playing an animation in response to a state change. And yes that tutorial is most certainly SDK3.
Why textures become white after making an atlas with CATS? I have all base color textures connected in Blender...
I'm having that exact same problem
My teaxtures kept breaking in cats
I switched to the older version on blender and it seemed to work better
How do you reduce the material slot count of an object in unity?
I placed a custom material over an object and each one seems to count for 2 slots now
It's because you're rendering multiple meshes with multiple materials. mesh x mat = total material count
I have 8 meshes that use 1 mat each
dont even know how to use multiple mats on one mesh
Uhhh okay that's weird, can you send a screenshot of your material import settings?
like, for the avatar's main blender file?
No in Unity, select your imported model in the asset window and click the material tab on the right.
That's your material import settings page.
cant post imgs here, put it in av3 help?
Yeah
Just going to post an easily searchable variant of the question here if ppl have the issue in the future:
When importing a blender model or unity default they have 1 extra material slot assigned
How much of an impact would an avatar with 300 bones have compared to an avatar with 70 bones. Not dynamic bones, just regular bones.
Significant, since all those bone transforms need to be received other players
Depends on how deep the bone chains go as well
Bone amount is part of the avatar performance ratings
If an avatar had a total of 500 bones (none are dynamic bones), but only say, 50 bones were shown at any given time, and the other 450 were toggled off, would this mean that the avatar's computer resource utilization for those bones be 1/10th that of an avatar with 500 bones shown with 0 toggled off?
You can't turn off bones
Internally it still need to calculate the transform of those bones so it can apply the transformation to the skinned mesh
I was told that when a mesh/material or a dynamic bone was toggled off, it does not impact performance, are you saying bones are different?
Example, if you want to render a mesh you need to know the location of the vertices. So for every vertex you get the top few weighted bones as transformation matrix and apply the average transformation to the vertex. However even if a bone is "disabled", you still need to get the transform to calculate the final location of the bone.
how do i get into the incpector part of my avatar where it says rig and animation and stuff?????
Select the model (.fbx file) in the project viewer. The window with all your files.
????
So if a mesh and the weighted bones related to that mesh were both toggled off, they would still use computer resources?
https://www.google.com/search?q=unity+project+viewer
I recommend following a basic unity tutorial first. This channel is mainly focused on optimizing avatars. Not a generic Unity help channel :P
Not sure if it won't use extra resources at all but it will be definitely less
Do you know of some way for people to measure and quantify how much resources an avatar uses? If I had a tool like that, I could use it to compare different methods of setting up my avatars to find what would be the most optimized for my purposes.
Avatars performance stats tell something, but not the whole story. It's not that hard to make a "good" avatar perform better than a "very poor"
Ill check it out ๐ ๐ ๐
Are you still there? I have one more
Go ahead, shoot :P
@unreal plover My common sense is telling me that if I want to be able to toggle between 3 outfits, it would be better if all 3 outfits were tied to the same bones. Compared to the idea of giving each outfit its own set of weighted bones that toggle on/off with the mesh, which of these two methods do you think would perform better? My question based around a concern that a weighted bone could become too heavy and thus cause performance issues, especially while being toggled on all the time
First method would probably be faster. Since you basically just disable the mesh renderer for the disabled outfits
Personally dislike avatars with multiple outfits, since you can always just change avatar and keep download size low
Also hard to differentiate between optimized "very poors" and true very poors lol
Well i feel like multiple avatars reloading all their skin, blendshapes, materials, and everything else may end up costing people more download time overall compared to having to just switch between outfits
odd question, is it more or less optimized to attach everything to an armature via parent constrants, or directly to the armature bones?
or no difference
Constraints have a CPU cost, albeit cheap
Directly to the bones is prefered, otherwise it looks a bit funky in the camera
blender
ah okie, time to youtube and google.. I asked the creator if i could pay to have it more optimized but they didn't know how
Not surprised 
I hate it when sellers don't list performance stats
Well there are things that even they forget that aren't necessarily important enough to update. 
Polycount and whatnot, yeah understandable.
Best plugin for atlasing?
CATS's blender plugin with the material combiner add on
cats bake is better imo
because it gets rid of stuff from the textures that you didn't use on the model
that's good
Tyty
Can you atlas multiple meshes together?
it looks really promising, but I still never got it to work proberly, it always fucked up some stuff, I probably have to take a closer look how to use it properly
it doesn't work well if you have self-overlapping UVs
So uploading an avatar to quest.. any tools available that help you see what's taking up most of the size of the avatar to help pinpoint what's eating up most of 10MB limit?
So im trying to texture atlas, is it possible to do this in unity cos im having nothing but issues trying to do it in blender
This should still work
ohh if that works that'll be perfect.
i tried asking in the unity discord and i got told to come here so i did ;-;
and i looked at multiple guides on blender(they where great) i was just faced with constant technical difficulties for like an hour or two
when you run that build size viewer and find out the model itself takes up probably just about the full 10MB.. doesn't leave much room for texture reducing.
๐
optimize the mesh?
Look at Total Compressed Build Size which is the file size VRChat actually reports. The stuff below is uncompressed asset size which gives an indication on how the compressed size is split up
Isn't my model, not really sure how to optimize the mesh.
Uh, yeah, basically, I've made almost all the textures around the size of 88kb to 682kb according to the list on that. basically two 682kb textures, a 341kb texture, and a 170kb texture, the rest are 80kb and below. Dropping them all to that size basically still has the model at 12MB. With the model showing it takes up 83.7% of the uncompressed size in the list. So I'm not sure if reducing any more textures could even just barely get it there. lol
What is the poly count at?
uhhh, I don't really see the poly count listed
Should be in the VRChat SDK Builder
.<
That's not even going to get rendered on Quest :)
So, uh. What is the reason you wanted to upload it to Quest?
that's about the amount of 4-5 of my PC avatars combined have
I wasn't doing it for me. :o Was attempting to help a friend get their model quest compatible. I was sitting here going "damn, reducing textures size sure isn't doing much..." which is why I asked a bit ago (which Nara helped with) to see if there was something to show what's taking up all the size. lol
But yeah, it's pretty much a no go. xD
the tris limit on quest is 20k I think >.>
Probably going to have to reduce the poly count. Meshes don't tend to take up a lot of file size but can when you have a lot of polys.
There a simple way to do that, or is that me going into blender and manually merging stuff together to form a single poly
also if the armature has a lot of bones, together with tris count and bone count, that can add up a lot with the vertex groups
Cause probably isn't really worth me reworking the whole model for that. xD
see it as an opportunity to learn how to decimate proberly and optimize
got a good video on it? :p
170k tris to 20k tris is not really doable without retopology
Could give that bake feature in CATS a shot
Quest bake would probably still struggle with that amount of reduction
Well can't really lose anything by trying it, and if it works they'll have a lot less work to do on getting a decently optimized Quest avatar in. ยฏ_(ใ)_/ยฏ
Could also try Mesh Compression in the FBX import settings in Unity
You could at least upload it, but (Quest) people will struggle rendering it
Hey can i get a little bit of help with a shader issue? I'm looking to optimize my avatar for quest, and need to limit my shaders to mobile versions. I need to find something that is in the mobile category, and allows for transparent alpha to render as blank. The mobile/particle section works, but the sdk decides that doesn't work. Does anyone have any ideas for this to work?
You can't use transparency for Quest avatars
ah beans....
i'll just remove the toggleable items from the model for the quest version
you can do that without complication right? I know it'll mess with the animations, but since the quest and pc variants are slightly different, would it bug something out?
It'll likely work. Main thing is that you'll have users on one platform seeing something but the other won't see that happening, which may lead to some confusion.
Right, i won't bring it to attention, as it's really only blush, or eye hearts/stars.
then you should be fine maybe if you have geometry budget leftover cut those into geometry
Trying to minimize draw calls by having everything on my avatar use the same mesh, but I keep running into an issue where things cannot be moved by their bones in Unity unless they're all parented to the same armature. Considering I want one set of objects to be floating next to my avatar and not parented under the hips or whatever, should I put all of those things I want under a second mesh?
Why can't you animate bones parented to the armature for floating objects ?
I'm not sure, actually. I thought it was an intended effect I didn't know about
That is odd, animator grabs everything in the object.. armatures and meshes, lights, audio
for example, only the highest item in this list below the mesh actually moves around when I transform bones, everything else is static
ahh, cant post images here, whoops
Can through links
it looks like
gameobject:
-Mesh
-Hips
-Item1
-Item2
(where each item is their own armature)
You should be able to have everything on a single mesh
and in the same armature
One thing i'd expect would be necessary for an animation of these objects would be to set the masking of all other bones to off in unity
I tried exporting from blender in slightly different ways, and for whatever reason only the armature highest in that hierarchy receives transforms (e.g. dragging around the bone in unity and actually seeing it move)
Are you animating in blender ?
no animations, just moving items in the window
Ok i guess i'm confused by what you're trying to do with those items
yeah, I'll try and explain it better
Under the prefab/gameobject, I have one mesh, the armature for my avatar, and the armature for multiple other objects that I want to position in Unity. But, unless the content of those item armatures are bones parented somewhere on the first (avatar) armature, they don't move in response to anything and stay static at 0,0,0
Can you post a screenshot of your hierarchy ?
sure thing, putting it on imgur now
In Unity: https://imgur.com/ix0O4rx
In Blender: https://imgur.com/XmHGaXs
everything shares one mesh, texture, and material, so I'm trying to have everything on one avatar and toggleable via shapekeys and bone transforms
yeah there's no reason to not combine all that
you can scale the bones of the items with an animation
ah, so I should join all the armatures?
yeah
is there any way to have the static movement that comes with being an object outside of the main armature while still being parented to the hips, chest, etc. ?
I tried it on a different avatar, but had the object jittering around like it was on a bone, rather than floating
Do you want objects to follow your or not ?
yeah, not planning on any static/world-based rigidbodies or anything
Then if the armatures are merged it'll do that automatically
per the bone it's parented to
I'll give it another shot then, I feel like every hour I spend in blender is another several things that click and I look back and want to kick myself for not understanding earlier
That's the way 
thanks a bunch for your help, it's pretty nice to have an admin help you out 
Are there any better ways to prevent legs from going through long skirts? Dynamic bones has the "bead curtain" problem and Unity Cloth kills all detail on the mesh.
Weight painting with bones + constraints
Constraints on the leg bones?
skirt bones on the leg bones yeah
Thanks, I should give that shot. Would it be advisable to have a dozen constraints on an avatar (performance-wise)?
Yeah, not a big deal
Ive been workin on a method, it pretty much involves making a duplicate body and bridging the empty space between the legs with fill or bridge edge loops. Than putting the skirt on a temp shape key just to smooth and scale it back to where it was. And finally using the data transfer to grab nearest face interp vertex weight data. If ya want it to be dynamic bone ish can just duplicate each leg bone and rename them skirt and give them an end bone and rename the skirts vertex group legs to skirt and parent the skirt bone to the leg bone. It looks alright and with a decent dynamic bone stiffness and downwards force itll even look like the skirt catches the leg. Also it counts as like 4 dynamic bones.
Shrinkwrap is a pretty good visualisation of what face vertex group data will be grabbed, can be used to check for problem areas
breath skirt.
I'm sorry, I don't understand what you said. Still pretty new to all this stuff.
Than its just crazy ive been in blender too long rambling!
That's some genius rambling tho', how does it look in action?
@heady smelt I would strongly advise against using constraints. Unfortunately VRChat doesn't count them against performance ranks but they actually take up a surprising amount of performance resources
But I guess constraints are still better performance-wise than rigidbodies + spring joints in scenario where you simply want to "lock" 2 objects together?
In some ways yes. Rigidbodies can at least run on GPU as opposed to Constraints being locked to CPU
In that case Rigidbodies would be better on people who are CPU-bound for performance
As constraints use a very small amount of the CPU and runs on multiple cores, the CPU-bound issue is very rarely an issue unless the CPU is at 100%, in which case they would have more problems than the tiny processing power needed for constraints (in most cases)
Its a stretch to use rigid bodies instead of constraints if you're worried about optimization. If you care that much your can compare them in the profiler.
I asked that question because yesterday I purchased a booth item which is essentially a personal selfie camera that is stuck to your viewpoint via rigidbodies and spring joints. Having just 2 of these already puts your avatar at medium perf rating, so I thought they're way less performant than constraints, which I already use a lot to reduce the amount of dynamic bones used to move hair.
Well you cant do a spring joint system with constraints so you're stuck with rigidbodies there. If you're worried about performance, just toggle it off when you're not using it
If you want to do testing, open the profiler and look for the physics/constraint manager under the scripts section. Less ms the better
But I guess for just having a plane being visible in my viewpoint I could just replace both rigidbodies and spring joints in that with constraint(s).
And yes, I want to make all of that as a toggle anyways.
What exactly are you trying to do? Stuck with your viewpoint how? World object?
It's not a world object. I am not at home atm, so I can't look at it in Unity, but iirc that item is essentially a plane with a camera that you're meant to put on the root of your avatar, in front of your avatar's head so it will show you a small preview of your upper body in the corner of your view. Here is the link to booth page for it: https://booth.pm/en/items/1124131
That plane is then supposed to be 'tied' to your viewpoint/head via rigidbodies.
What I am thinking of is if I could simply do that thing with constraints instead and get rid of rigidbodies altogether.
Yeah if you want a screen to just be in front of your face there is no need for rigid bodies. Just place it where it needs to be and parent constraint it to your head bone
Fixing things in place with rigid bodies + fixed joints is the pre-constraints method of fixing it
Yeah, that asset existed for quite a while before SDK3/Unity 2018 and I guess author didn't look into switching to constraints.
Even though there is a version specifically for SDK3 avatars.
Constraints are not an SDK3 thing, they were once we got to 2018
Just a case of "if it ain't broke don't fix it"
@languid quartz Constraints actually use a suprisingly large amount of CPU time which is why I say to avoid them
To give you an idea, 1 single constraint = about 10 dynamic bones worth of frame time
And yes while they can be multithreaded, they still add up dangerously fast
Where are you getting those metrics from?
I profiled a lot of things in Unity a while back to count frametimes of my avatar
I ran Dynamic Bones alongside constraints and counted the frame time of each
Well constraints are no where near as bad as dynamic bones, even though the frame times of small quantities may seem similar, dynamic bones has a much steeper cost the more you add
How so
Here are the profiler tests I just did, lowest vs highest of each:
10 dynamic bones: 0.03 - 0.22
1 parent constraint 0.02 - 0.08
100 dynamic bones: 0.20 - 0.92
10 parent constraints: 0.08 - 0.24
1000 dynamic bones: 2.52 - 4.75
100 parent constraints: 0.4 - 0.8
I mean thats not what im seeing
Where are you seeing yours
Have you tested this example before? Setting this up wouldn't take too long and would show you the number.
What about the other dynamic bones processes?
Dynamic bones uses FixedUpdate, Update, and LateUpdate
It only uses Late Update
It can use FixedUpdate, but only if the Update Rate on the script are set to Physics
I cant post pictures here apparently, but using default dynamic bones settings uses all 3
The other two are negligible then
Of course they run, but only to do the if (UpdateRate == Physics) check
Which would return false in 99% of cases and not calculate anything
could be different versions of the script too
Yeah Update is about 1/3 of LateUpdate so it gets worse the more you have
That's still miles below Constraints
But it isnt though thats what im trying to tell you
If youre testing 100 dynamic bones, do you have 1 strand or 10 strands of 10?
Do you actually know code-wise what the Update function is running?
I had 1 strand of 10 in this test
I'm just looking at frame times, why does it matter what the code is actually doing?
I know multiple components adds to performance hits
So the thing is, Dynamic bones are garbage performance I agree. Constraints are way worse though when used in excess
If used sparingly, they're still really bad but of course not as bad as 1000 bones (which I hope nobody uses)
Have you ever gotten your FPS tanked by someone with 1000 bones?
It depends on how much excess though that's the thing
1000 bones doing what exactly? Skinned, constraints, ect
Well each constraint is a linear hit to frame time. .02 is a pretty big amount considering most people would use a ton of constraints for certain things
Imaging a lobby of 24 people, each with 5 constraints active. That's 2.4ms of frame time JUST to calculate constraints
Only 5 constraints per player
I've seen people with an entire skeleton of constraints (the ones who clone themselves while still doing movement)
I mean there is no other way of doing it, its really just a fight of how to do things the most optimized way
Too bad they dont work in half the worlds, jitter constantly, and drift over time
Not in my experience
If you're using joints, raising the Mass scale in the joint settings reduces jitter. Essentially 'stiffens' the joint connection
I do agree though VRC's physics are kinda scuffed sometimes. But they're much better than if you had to use a ton of constraints
I mean ideally if you wanted to attach an object to your avatar, you should really combine the mesh and use a bone on the main rig
I don't think constraints are as scary as you say they are, from my tests they are more optimized than dynamic bones and they are much more stable than the fixed joint / rigid body system everyone used to do before the constraint system showed up. Nothing costs nothing
The scary part is they can't be blocked
I'm not against them being added to the safety system, but I usually have non friends not shown
We've needed a rework of the performance ranking for a while now, but I doubt it will ever come
It's coming soon. They're working on adding blendshape penalties which will be great
You dont think that will just be a single addition of that and nothing else?
They'll hopefully tweak some numbers too
I know they want to work on the whole performance ranking but other things are more important. They didnt talk about it all in the dev stream
I just try not to follow the ranks anymore. They're not representative enough of actual performance
I know they've said they're very rough metrics, but they're extremely rough to the point you can have an fps killing excellent and a really performant very poor
Its hard to count for every edge case, especially since shaders are a black box
If you know what you're doing then yeah the performance ranking does not mean nearly as much as it seems
There's so many ways around the perf system without shaders at all though
Constraints, jacking up vertex counts, certain SDK bugs that allow for insane fps drops with small perf rank hits
Not even to mention VRAM usage with texture sizes
Which is why most people crash often
Only way I crash is slow memory leaks tbh
There are no memory leaks
I haven't crashed in like 6 months and I play 8+ hour sessions almost every day
World hopping or same instance for the 8 hours?
World hopping every 1-2 hours
Fridays though are minimal world hopping. Typically only around 3 instances over the course of the session
Changing instances clears RAM usage so thats probably why you dont have iit. Also my ram iis probably fucked
I have 16gb of ram which according to most people isn't enough
same
After 4-6 hours in the same instance I'm usually at 99% ram usage ๐คทโโ๏ธ
Technically your ram is never full unless you have a ton of users in the instance and they have huge file sizes
By the way, it seems that dynamic bones actually aren't affected by multiple scripts
https://cdn.discordapp.com/attachments/808131675962998825/834209835145887754/unknown.png
100 constraints, 100 dynamic bones on 1 chain
https://cdn.discordapp.com/attachments/808131675962998825/834209930352787466/unknown.png
100 constraints, 100 dynamic bones on 10 chains of 10 each
Constraints still show a major hit over bones, even if I doubled the bone counts
I've been using constraints on some avatars to reduce the number of dynamic bone scripts without leaving things as stiff as concrete. Seeing you say constraints are potentially worse is quite surprising because I haven't spoken with someone who shares this opinion before. Thus, I went and tested these numbers myself but the results I'm getting differ significantly.
Here's 100 parent constraints, 100 dynamic bones on 1 chain
https://gyazo.com/64d8b0c5c428cdc875ff539ccdf786d3
and this is 100 parent constraints, 100 dynamic bones on 10 chains also with 10 each
https://gyazo.com/cb8121135ab89aecc1a7c2f394004f7d
I imagine there aren't a lot of different ways to set this up. Is there anything that comes to mind as to why the results are so different?
Hmm maybe there's some sort of Unity setting that changes something?
I've observed my test's frametime hit in VRC itself though. Turning on a single constraint took exactly .02ms of frame time off my game
(Tested using an overlay with frametime counters)
Hmm I see, if it were a unity setting that sounds like an endless rabbit hole. I wasn't too concerned with it before but I'll do more testing myself and see if the changes I made are actually helping at all.
Trust me, I did the same you did. I started using Rotation Constraints to mimic dynamic bone chains to stay in the "Good" perf rank. Once I figured out constraints are oddly unperformant I trashed that entire setup in favor for more optimized bone chains
All the different constraints hit the same? I usually have up to 10 rotation constraints for twist bone.
Yes they all hit the same and add up
I went ahead and seperated my head from the body as its own object in blender. After ensuring all the blendshape information was still safe, I exported it, but when brough tinto Unity, the head now acts all broken, but if I use the blendshapes, it will put the head into the right spot and pose
has anyone run into this before? It's like the basis blendshape is broken only to Unity, but not blender (2.79)
Make sure the list order is correct
and that the shapekeys in blender don't move the mesh
yeah... blender just broke the blendshapes. It didn't even import its own fbx correctly. Just reloaded a backup and fixed it
How tf do I reduce my avatar polygons my m optimizing it for quest
Is there a specific version of Dynamic Bones I should be using? The newer version has no issues within Unity Editor but ingame I get that twitchy flapping glitch (whatever it's called). Older versions of DB glitch both in Editor and ingame.
Occurs when a bone with Stiffness >0.5 touches a collider.
Using too high of a stiffness and then also a collider is always going to give you problems since they will fight. The actual version of dynamic bones does not matter since VRC replaces your scripts with their own
Got it, guess I'll use the older versions in Editor so I can tell when they glitch.
You can manually decimate it or use Cats bake feature
Cats bake ๐?
@calm spade thank you I love you now you are my friend Iโm not asking I claim you as my friend now lol jk tysm yayyyyyy!!!!
how many dynamic bones can you have before you start to lag peoples systems?
Less is always better. If you need more than 100 then you're doing something wrong. I try to aim below 16 transforms for avatars i use in public instances. Also please don't go excessive on collision checks. You really don't need colliders on every single bone
https://streamable.com/6kfesp This is what 14 dynamic bone transforms looks like ๐
wow that's very nice and even more stupidly efficient when physics Bones come out
Did someone say constraints
I also started working on an in-unity material optimizer ๐
https://streamable.com/7ibjiq say bye bye to duplicate materials next step is atlassing
Does that only work if the meshes are joined ?
Shouldn't be that difficult to add. I'm focusing on atlassing first tho
I have texture atlassing in Unity now ๐ฅณ https://streamable.com/fv59wz
does it handle PBR material Maps
It's on my todo list. The plan is to extract that from the materials of the unoptimized object and atlas those textures too
The same is with applying hue-shift/saturations/brightness from shaders like Poiyomi
would be an interesting question though to figure out what to do when dealing with mask textures
I got something I wanna ask, I was looking intro draw calls, "on average how many draw calls should an avatar have? been
,
,
" obviously as little as possible, but I wanna know some approximations about it I was unable to find much material talking about this in particular and since I haven't messes up with many models in particular to get an idea I was wondering about it.
In general every material you render is a draw call (sometimes more if it needs multiple passes, e.g. outlines). For most of the avatars you really don't need more than 1 material, unless you have extra props you want on toggle.
There is a small catch that it might be preferable to split the face with all the visemes from the rest of the body to reduce the load of computing the visemes. This would cost another draw call but with high polygon avatars it should actually be more performant.
I would say you should aim for:
1 / 2 materials for the body + clothes
1 material for all the props with instancing enabled
VRCLens/Virtual Lens cameras add another 6 materials + 1 for the mesh
Particles always add two slots, but you might only use one. Obviously the disabled one has (almost) no performance cost
^
That's not what I was looking for, I already know how it works and how to optimize, but I wanted in relation to the the performance ranking system as it "if this avatar is
i would expect between x and y draw calls"
as I was wondering because, in the end you can have tons of things on your avatar and be seen by the performance system as "optimized" i managed to add 13 toggles on a good quality avatar, but it has around 35 draw calls
Lots of things aren't taken into account in drawcalls so it's not a relevant measure for avatars
it also doesn't take enabling/disabling things into account
๐ค I was just wondering, i mean aren't the draw calls the easiest way to see how optimized your avatar is in a more "raw" way, like the more draw calls the harder on your system the lower your framerate
for meshes and materials yeah sure, but not the rest
ok, i got another question, let's say i have an avatar that is ranked as good
but it has everything i could possibly add on to it before it gets to medium
wouldn't that make it overall less optimized in comparation with a
avatar that only had 1 thing that get over the overall good performace?
I know is kinda dumb, but since a lot of people are only looking at the performance system that is in vrc, is there a better way to see how "hard" an avatar is on your system beside draw calls?
Best way to check is with the Unity profiler
There's no easy way to determine performance except for testing everything out or just making an educated guess. To be fair, the most I've seen people block (on PC) is
and that happens rarely.
Heck you could fit a really shitty fur shader on a
and it would probably perform worse than 
I usually just put a random dance animation on and check how many times I can duplicate the avatar before I drop below a certain fps
It also depends on system specs. If you're on an old CPU dynamic bones are going to hurt your FPS way more than a more intense shader or more polygons
dance animation and put AA to 1!
https://i.imgur.com/fD3h0SA.png why when I disable rotation axises do my constraints do stuff like this
I just wanna have a skirt without dynamic bones or cloth physics maaaaan
i have were i have decimated a model to 5000 polys in blender but it is still showing up as 90000 in the vrchat sdk. Is there any way to fix this?
everything else is excellent
never mind i fixed it
Instancing work?
Hey, does someone of you know how much blendshapes affect the size of the Avatar? i want to have a lot of blend shapes but still a decent avatar size
Are you referring to the file size?
Or size as in how big / small the avatar is when looking at it
file size
i'm currently working on an idea for an avatar keyboard which works with shapekeys/blendshapes
Depends on the polycount, otherwise doesn't matter too much.
If it's only facial shape keys and you're above 32k, it's a good idea to split your face mesh from your body.
Its a 900 poly mesh with roughly 900+ shapekeys
30 characters with 30 polys each. And 30 shapekeys each character
It would probably be better to do it via a shader instead of shapekeys
It's still going to be a lot of data. You're essentially storing mesh verts * shapekeys * 3 floating point numbers (might be more cuz i think each transform also saves normal data).
I don't think 900 polycount mesh is going to effect much, but is 900+ shape keys necessary?
The most I've seen on avatars is like 60 shape keys in the face alone. So I couldn't imagine why you would even have 900.
In my testing on a 10k vert head each unique shapekey added about 100kb to the packaged, compressed model.
assuming 900 verts, it's going to be ~10MB of data (900 * 900 * 12 bytes), not sure how much compression will help
It's only the face, there are other meshes with shapekeys (far less on them tho, but they modify almost all faces of model), but entire avatar is way below 10MB. It also has 6 2k textures.
What are the current avatar requirements for quest (poly count, shaders, animation limits)?
this seems outdated
I've uploaded an avatar with 60k polys on quest and it worked fine.
It's not outdated and your avatar would need to be manually shown by each Quest user individually, because it's very poor perf rating.
Does using a high amount of the Parameter's total memory impact performance in some way?
15k polys, no shaders outside of the ones provided in the SDK, 2 meshes, 2 material slots, no dynamic bones, no audio
You can raise the poly count to 20k and the material count to 4 but then it becomes a Poor perf level
meaning most Quest players will have to enable it unless they have their safety settings set to allow Poor avatars
I've got an mmd-imported model in Blender where most of the many, many materials are actually just single colors, rather than images... is there a way to quickly convert those to single-color image textures (or any method that will let me atlas) other than individually making a color-picked image for each one?
You can combine same materials with cats blender plugin if thats what you mean
I'm a lil confused, in blender there is only 19000 polys on this model I'm working on. But in unity it claims 37000. Is this tris or something?
a poly (polygon) isn't necessarily a tris. You can have faces with 4 edges (i.e. making it a quad) wich will be converted to 2 tris
So, in lamans terms. Just times the poly value by 2
if your model is in quads you need to multiply by 2
Rest in peace to my plan of makin it my fallback then xD
Blender should give the tris count too though
It does, i just didn't know what it meant till now lmao. Thought polys or quads were just what vrc used
Unity/VRChat converts to tris, else it needs to render your model separate for tris and quads (therefore doubling your drawcalls)
Wow, makes me wonder why creators even model with quads
I wouldn't know the difficulty though, I don't create models myself
Modelling with quads is easier since it's easier to see what aligns and whatnot
and because you can only use loop cuts through quads
modeling in quads is usually cleaner and easier
Also going from quads to tris is easier than the other way around
Fair enough.
Also fallback avatars need to be
: 10k tris and 1 material slot
unless you mean just uploading a quest version
I was messing around with dynamic bones and optimization. Is it true that if I just add one dynamic bone the pref level jumps to poor?
you may have 32 dynamic bones, 16 dynamic bone scripts, or 8 colliding bones before poor is hit
Hmm. Weird. My avi is rated good and if I add one dynamic bone to the hair (12 bones, no colliders) the rating jumps to poor
Iโll relook at it. Thx
Maybe my dyn bone script is buggy
how are textures stored in VRAM, after they've been downloaded and unpacked? are they compressed at all when they're sitting in video memory, or are they something close to as they are in my unity project?
if you're willing to read and infer a bit of terminology, this link might help
https://gamedev.stackexchange.com/questions/130378/how-does-gpu-handle-texture-and-vram
I found a way to animate my entire hair with just a single DynamicBone Component https://i.imgur.com/ySX7g1V.png
looks very handy have any gifs of it in action
You can look at it here: https://fellr.net/files/content/n2axe.webm
Crunched textures will take the the VRAM footprint of the non-crunched variant. For example Crunched DXT5 will be stored as (Compressed) DXT5 in VRAM. DXT5 uses 1 byte per pixel.
All the bits per pixel values can be found here https://docs.unity3d.com/Manual/class-TextureImporterOverride.html#supported-formats
Astc works very well for 'less vram footprint while still looking good' imo
im making an avatar whose upper right arm keeps twisting like 90 degrees to the right when using it in desktop mode, but it appears fine in the avatar preview and when using it in vr. anyone know what causes this?
https://i.imgur.com/VLEsTxI.png how the preview looks vs https://i.imgur.com/r5udFDx.png how it actually looks
Can someone help me with something I need someone to join as a collaborator and try to make my avatar quest compatible because whenever I do it my application just crashes, I also need help to see if my drawing finger gestures will work dm if your down
what would cause cats blender plugin to make a model's material darker after baking it?
If I have a lot of dynamic bone elements on my avatar, but I create a toggle to disable them in game, will that save frames?
Iโd like to have a way to optimize my avatar without uploading multiple versions
Kind of like if I disable particle effects on my avatar it saves frames
The game shouldnโt run the dynamic bone calculations if the object is disabled correct?
Disabling the dynamic bones will save frames, but they'll still count towards your performance ranking.
The Rex avatar does this on the tongue, for example
Which way of making avatars more detailed is better. Making avatar higher poly but no transparency or alpha channels
Or create avatar lower poly with alpha channel to achieve higher detail
As in instead of making a curve parasol we achieve same round shape with alpha channel on the texture
Depends what you're going to aim the avatar at
For PC they can take the higher polys and it'll probably look better, but it'll likely make your avatar suffer for performance
If you use alpha channels and transparency then your performance ranking will be a heck of a lot better but you'll basically block yourself from Quest compatibility since the Quest version doesn't handle transparency too good
The standards are one thing. But what does actually impact more the game?
I think i should check how much does it take for gpu
I mean the pure time to render. If model takes 1ms to render with alpha and takes for example 0.8ms with higher poly but no alpha i will go with one that impacts the game
My thoughts exactly. VRC should also add two pref ratings. One for if everything is on, and one for whatโs actually enabled. My Avi is labeled Very Poor, but I have stuff disabled to the point where it should really be labeled Medium
Dynamic Bone Limiter is actually working dynamically. https://docs.vrchat.com/docs/avatar-dynamic-bone-limits
If an avatar enables/disables Dynamic Bone components via an animation that brings it above/below the limit, the components will stop updating/start updating accordingly.
Another thing is Avatar Performance Ranking system allows you to block avatars if their ranking is poor or very poor, but they're only going to be completely replaced with robots only if their: polygon count, mesh count, material count or bone count are too high.
In other situations, such as if only dynamic bone components render your avatar very poor, then only dynamic bone components will get disabled.
yes
Thx
what's the best way for going about optimising avatars for full body?
Proportions
like, my legs are too long, with my feet being off by about 15cm
any guides out there on what proportions I should be having on my avatars?
Well, your actual ones would be the ideal
That's one way.
You could also use a photo of your self t posing (from a distance) and try to overlay that and correct by that
yeah, I'll look into it, cheers!
You can use Y-bot/X-bot avatars as an approximate reference, their proportions and rigs are usually fitting most people. You can download those from Mixamo.
Does anyone have a good workflow for handling shape keys with modifiers in Blender for avatars?
I found an addon for apply individual modifiers, but I'm trying to add an option to apply all the modifiers, I'll still finish it, but their has to be an easier way... https://github.com/przemir/ApplyModifierForObjectWithShapeKeys
@calm spade AHHH THANK YOU! The repo needs better SEO...
Yeah that's github in a nutshell 
If you have suggestions i can send them to her though
Include the words "apply modifier and keep shape keys" the read me somewhere and repeat it in different ways :3
fair enough !
I will start making a PC Avatar to Quest i will ask stuff here soon
is there a way to combine skinned mesh renderers and what are ways i can do that?
In blender, join the meshes
does anyone know how to change the material slot order for unity?
how can i do that in blender
Unity orders material slots based on vertex number (the order the vertexes were placed in.) In blender you can delete and re-add vertices belonging to your material slots, readding them in whichever order you want the slots to appear in in unity.
#avatar-help message
@lone tiger could you help me with some of the Cats/Atlasing stuff?
I dont know how id go about atlasing the model with the eyes not being offset? and even then I still dont know how to animate it
im losing it over here
Quest not having simple cutout is so painful. Is it really so intensive?
Hey whatโs the best way to reduce the polygons on toggle-able objects on a model? I have this Giant Wrench I made. That is supposed to go into my avatars back. but Iโm worried about the avatars quality. Itโs green so it meets the requirements. But when I put the wrench on my avatar it doubles or triples in polygons and goes into the red. Is red not that big a deal? Iโm knew to this so forgive me.
yes
a PC VR setup is like a order of magnitude more powerful then essentially a cellphone slap to your head
I'd recommend trying to decimate it in blender
I saw these 2 videos
https://www.youtube.com/watch?v=lqe8JRiYuu0 and https://www.youtube.com/watch?v=sZzq-D0DNic
I'm trying to use what was shown in them JUST to unmirror a face and when I do the texture that the bake gives me looks fine
but when I actually apply it by changing the texture on the material and switching to the other UV map
there are seemingly random black spots on the face that aren't there in the UV and I don't know what I'm doing wrong..
Any ideas?
this is a pretty handy tool for auto generating lower polygon count versions of models
but mighty handy skill to learn how to dissolve Edge loops in addition
Do disabled meshes and stuff impact performance?
if it's disabled, barely. it'll still be counted towards the performance rank though
I know that, but was wondering about impact on frames mostly
I'm putting props on avatar and It kinda pushes over 16 mats now x)
potentially wanna use it at certain events (but these require medium avatars)
- particle systems seems to count as 2 material slots even if trails are not used
so im trying to upload a avatar, but when i went to upload, the sdk is stating that the "avatar is too large to upload on this platform" and stating that its 15 something MB. I know its the animations are causing the size, because when i remove the action layer, it uploads fine. I have legacy blend shape normals on, and i lowered the texture resolution and also compressed them. But ive had all these animations with the exact same action layer on other avatars and its worked fine. So im not sure why VRChat is bugging now.
Pc does not have a size limit, are you trying to upload it as a quest model? You may have accidently set your build target to android.
What's the difference between a mesh and a skinned mesh?
A skinned mesh has bones that allows for deformation (arms, legs, etc.) and shapekeys. Normal mesh doesn't allow this
Im uploading to quest, but I was able to place all these animations on the avatar(quest version) in the past so idk
oooh, so if I'm going for a better performance rating I'll need to merge all my body parts together
can I save space on a texture by having multiple parts of my UV overlap if I want them to have the same/similar appearance? Or does that cause problems
I guess same question for if the texture is symmetrical, can I texture half of it and flip the other UVs over without having Unity scream at me?
yes that's perfectly acceptable to overlap textures game studios do that all the time
Woo that saves so much space, thank you
Yep, you can do that as well.
Even more space!
Hooray! :)
But do be careful to have about 32 pixels of padding if the seam is in a noticable location, mipmapping might pick a different color at medium distances
I did not know about that, that changes things! Thank you
i try'd to optimize my avatar by cleaning some unnecessary stuf from it
and or just to decimate it
what ever i do i get the same result
why is that happen and how to prevent triangle explosion
https://streamable.com/qq56sd
don't decimate areas with shapekeys on them, such as face/head
so even the "safe" decimation will not work
and if i clean something from avatar face that will be the same result
ok then ty
that and blender things rule that you must tab between edit/object mode a few times for the blender gods to bless your shape keys with non explodey
You can also dissolve edge loops, that shouldn't destroy shape keys.
You would need to convert your model from tris to quads first to do that though.
yeah i quadralize it already
and thank you @lone tiger@proper grail ๐
looking for someone to optimize an avatar for quest and upload it and let me clone it dm me for link its 60k polygons
this tool does a pretty good job of optimizing avatars https://github.com/GiveMeAllYourCats/cats-blender-plugin/wiki/Bake
thank you but if i had a pc that ran windows or something than could run blender or unity i would do it myself but haha chrome os go brrrr
oh dear that does make things a lot more complicated for you
i'm trying to remove polygons remove some materials from an avatar but i don't know what im doing wrong can simone get on a call and walk me trow what im doing
ill say
if you install the cats blender plugin and import the fbx model, you can go down to the decimate menu and choose the maximum amount of polygons that you want the result to have
its much easier than it sounds
So i decimated my model to around 9500 for quest yet unity counts it as too many and says its poor. though here https://docs.vrchat.com/docs/avatar-performance-ranking-system it says under 10000 for quest is good. So what am I doing wrong
polygons are not the only thing that affect the performance ranking, you know
check amount of material slots
and amount of meshes
your SDK is outdated then
alright ty, haven't messed with quest project in a while
It doesn't matter what the sdk says. Just how it shows up in game
just wondering, for optimization/performance rank reasons is it better to have multiple outfits on one avatar or multiple avatars of the same character but with different outfits?
Latter If u up for optimization different outfits are always different meshes
There's a lot of things to consider with this.
Having multiple avatars means you'll be switching between them which can cause issues for others; I see people at single digit fps or crashing completely because people change avatars constantly. However, you'll have less polys/materials/meshes per avatar and the performance rating will reflect this so you'll be able to get into events and whatnot. On the other side, having 1 avatar with multiple outfits will have a heavier impact on it's initial load and your rating will be an accumulation of all the outfits + body so the polys/materials/meshes will be pushed into the higher ratings. With that being said, this isn't a 1:1 with optimisation though as you'll only have 1 outfit rendering at any time (Assuming outfit toggles disable meshes) so the number of polys/materials/draw calls will be relatively the same on both (+1/-1).
I have dump test avatars that are well and truly in the very poor rating that perform like medium. Hundreds and thousands of polygons with 50+ materials and 40+ skinned meshes total but you only see ~50k polys, ~10 materials and ~4-8 skinned meshes at any given time. Still a lot, yes, but by the Rating's standards it'd be PC Medium.
@sand jackal why did you remove the swaria 2 avatar form your world
Swaria 2 has never been in one of my public worlds. Its a secret avtr you get in my private beta build of my home world.
I am trying to get the avatar
Here. Lets take this into the DM's. I've opened them up as i don't think we should be talking here.
Is there really a hard limit of 10k tri and no dynamic bones on Quest avatars? Iโve seen some avatars that look pretty detailed that are quest compatible
They're rarely under that threshold, but the limit was recently doubled
Iโm running SDK 2021.02.23.11.41 and the Build and Publish button for Android is greyed out. I have 30k tri which I guess is over the limit...
But it is good to know I can stop at under 20k and it should work... maybe ๐
It will
afaik sdk patches are YYYY.MM.DD.Hour.Minutes. With that in mind using an sdk from late Feb might give you some issues. Recommend updating
Yeah. I probably will eventually. Itโs always a pain when the new SDK breaks FX layer stuff like going from Decemberโs version to Februaryโs.
I plan to update for sure once the dynamic bone update drops
Got a Quest version of my avi uploaded. Thanks!
Hey! I was able to publish a PC avatar, then a Quest avatar, but Iโm struggling on figuring out how to publish the same avatar for cross-platform performance. Any pointers?
Publish them to the same blueprint ID. You can see that ID on Pipeline manager script under avatar descriptor.
Hey, how do you connect polys/quads
like for example sometimes people will split a face in half
then merge the meshes
but there will be a seam visible from far away
how to fix?
15k poly is ranked as medium on Quest ignoring materials and such obviously
Easiest way to get a nice smooth on an organic spot youd wanna split would be to
1; add the seam vertices to their temp vert group
2; make a duplicate of the mesh and hide it
3; add a data transfer modifier for face corner data, custom normals. Set the vertex group to the temp group and the source the hidden duplicate
4; perform the split
5; apply the modifier for each split piece, delete the duplicate mesh, delete the temp vert group.
But a seam far away seems to be an entirely different problem, alpha in the texture. Alpha will show up as white as mipmapping does its thing.
Use Merge By Distance?
Didn't work for what I'm trying to do
When I hit Ctrl L it still only selects one side
higher the distance when you merge by distance
Ah you might have not selected all of the "double" vertices
Hi, is it possible to combine all materials on a mesh in unity?
i have an atlassed texture and tried applying it but it adds 8 materials with that texture
removing any of them makes part of the mesh invisible
i'm not able to post an image to show it
ideally i want to just have one material with the atlased texture
unity isn't a 3d modeling program, you need blender for that
if the entire model is already using a single texture, then all you need to do is assign all of the faces the same one material
and delete the other ones
i have blender open right now, how do i do that?
the mesh is all one object but parts of it have different materials
okay, that makes it easier
click on the mesh in Object mode, then switch to Edit mode in the top left (or by hitting TAB). select everything by hitting A, then go to the Materials tab in the bottom right (looks like a red circle).
in that tab, you should see all of the materials used on the model
before you do anything though, is there anything on the model that requires transparency?
yep
because if so, that should be its own material
no
alright
in that case, click on one of the materials, and then click "Assign" below the list
that will assign all selected vertices (everything in this case) to that material
then, you can just delete the other materials by clicking on them and hitting the minus sign on the right of the material list
alright, the whole thing is just black now but the uv's seem to be intact
how do i put the texture on it?
click on the material in the list, then look for "Base color" in the material properties below. select "Image texture", then browse for the image by clicking Open
or, if the texture is already in the project, there is a list button you can click to the left of "New", which is to the left of "Open"
๐
how can i reduce the poly count on my avatar?
mantis lod editor ain't free anymore
any other decimation tools?
Blender decimation modifier
and I believe CATS has a tool to assist that too but don't quote me on that
Looking for something to use within Unity. My dumbass deleted the blender file
Wait, nevermind.
Ty
It fuckin massacred my avatar lmao
Also, there's something really wrong with it now. Idk if it's just lighting but the avatar is half glowing white.
Then turn the massacre down, I can remember a slider which is basically intensity but I haven't opened blender in a while so no promises my terminology is correct
I should check it so you don't have a blind person directing you
I know. I was fucking with the slider and tried to get it to look acceptable and be under 20k faces
And it looks, blocky
It's like 15 hundred faces now
yo, sounds like a quest avatar, nice
Would I be able to post imgur links here?
This is my current issue https://i.imgur.com/PmwyV9a.png
Links maybe, iirc straight up images don't work but I'd move to the help channel tbh. Sounds more helpy to me
Oh that's, not something I've seen before. Now I definitely recommend posting it in the Help channel with a short description of what happen and what you did. Maybe the people lurking in there can help better
How can I use Blendshapes to hide parts of my avatar's base to prevent clipping so that I do not have to separate the skinned mesh?
Scaling just Y and Z works kind of, but my avatar's hands still show
Ugh I can't post a pic...
post a link to image instead
I would highly recommend against that, it's literally going against optimization
Well it's that or have separate meshes for each body party that needs to be hidden
Since my avatar's clothing is layered
About 8 extra skinned meshes
Or 8 blendshapes on the torso skinned mesh
Honestly, idk which one would cause more lag, but the blendshape method makes my avatar's pref rating better XD
What's the maximum materials for a poor rating?
They don't matter if they're disabled, having them continuously active with shapekeys would be awful
just delete the clipping geometry and have two veresions of your avatar
one where it has the clothes (but without the body clipping trough) and another without the clothes
Any guides for optimizing material slots? Got something online but the view is too high, and I figured I'd might as fix that too. I managed to make a texture atlas (?) and apply it, but doing such sorta messed with the rig so loading it in game just wound up with it being invisible. I have basically no knowledge so uh, yay
Idk if I can just take the rig from the original model and put it on the other imported one w/ just the one material slot
Texture atlas should in no way mess with the rig
You probably messed up on the import/export at some point
Well it didn't mess with it
But i couldn't find any way to delete material slots, so I was hoping I could just re-import the model and use the old rig, or I guess just delete other material slots
Like I said, basically no unity knowledge lmao
Material atlas would require a full reimport
Okay so that's what I did, would I have to rig it from scratch, or is there some way to just.. take the rig from the old one?
Well I'd downloaded the same model that was used in the unity package from elsewhere, since like I said I couldn't figure out how to use the rigged model w/ the atlas
Again I must stress that my actual experience with both blender and unity basically doesn't exist. Not for this, anyway
Did you follow a tutorial or went in blindly ?
Please don't try to bypass the bot, it's doing that for a reason 
...what reason? The site is just poorly named
Getting models from random places kinda leads to those results though
Feel free to ask your fellow vrchat players in #vrchat-general-1
Would it not be more on topic to ask here or some other Avatar chat? Again im just trying to take a pre-existing model and reduce the amount of material slots.
In Blender, just import the fbx from your existing unity project, and then export back to the same place, that shouldn't break anything unless you do anything extra
So do unity packages just work like zips? After adding it to the project I can just open the project location and take the fbx directly from there?
yes
Ah okay
It didn't really click that I could just take the model from the project after importing the package until you said to take the model from the project itself
Knowing that I should be fine thanks ;p
FYI that only ever works when you're only editing the mesh
any changes to the armature would require a full reimport
Kk
I don't even technically need to do this but I want it to be as optimized as possible. Its just the one model anyway, afterwards I'm going to learn more about making them myself
onto my avatar, I don't know how to map it. After I uploaded it, I saw he was T-Posing and wanted to map the model.
if it's T posing and you do not have full body, that means you did not set the rig type to Humanoid
the SDK should have warned you about that
I have no idea what you mean by that. no such term
you can map bones in the rig config, which unity should do mostly automatically. there's weight painting, there's rigging, you could be talking about many things
Just a quick question that may not have a concise answer but should I work on cleaning up my model after all is done or try and get all my assets cleaned up before I put them together?
having an organised unity project is always a good idea, but it won't make a different for the actual uploaded model
Oh sorry I was using slang that's my fault, I meant more so in the context of optimization when just trying to make sure that my model as a whole stays within the poly limit
I see
good question
so for example
you have your model, and separate models for a coat and a hat
you're asking if you should optimize the coat, hat and body separately, before putting them together?
or if you should do the optimization after they are together?
that's probably an easier editor experience to modify them separately for doing like polygon reduction
^
making everything a texture Atlas would go towards the end of the project if you using already existing models
and not that I would recommend it but if you were using the decimate modifier to reduce stuff would give you a little more control if they're separate objects as far as how much reduction is done on each
Which is better as far as performance is concerned?:
- Having props be separate meshes and using parent constraints to move them around the model, or
- Combined mesh, using shapekeys to move props around (let's assume the 1frame animation isn't an issue)
probably the first one as you're not having to do blendshape calculations constantly?
That makes a lot of sense, wow. Thank you!
I'm not sure why I thought blendshapes would be mathematically free.
typically over a certain polygon count it's recommended to separate the face from the rest of your model as that's less vertex calculations for the blendshapes
which is probably why VRoid Studio exports with the face separate from the rest of the combine stuff
I figured that was a good idea in general so that you wouldn't break your shapes if you edited stuff--oh wait you mean after yeaaaaaaah...
I'm still kinda new to this, you just gave me two small but very significant revelations, thank you again!
Gatta make a new plan!
glad to be of help and if you're wondering doing the sliding like different sets of eyes on anime avatars typically that works fine because that's like a hundred polygons on all of the special effects not like adding the entire polygon budget of a decent sword
That makes sense! My current project calls for optimizing as a top priority though especially if I want props and toggles, so I'm trying my best~
was it this command?