#avatar-optimization
1 messages · Page 3 of 1
a helpful blender tool that might could handle the triangle count and material reduction
i have 34 textures but only 10 of them are unique help
I suppose you could override the Redundant materials with materials that have the same texture?
like drag the material from the file explorer onto the parts of the model that have redundant materials
but I would suggest saving before you try this
ok
hello guys, i decided to start again my avatar now that i know a bit, and i want to learn how to optimise my materials. I know i can combine them when all your textures are visible and connected, but what about toggleable outfits with multiple parts? Can i combine them if its one set and allways be used together?
this is a bit more of a complex topic, since there are trade offs between real-world performance and what the rating system "thinks" is better for performance
for example, separate meshes for clothing where only one can be on at a time is better for real world performance, but the SDK think it's worse because of more meshes and more material slots
in any case, clothing shouldn't have more than one material unless you need something special like transparency which needs to go on its own material
so can i like use the same material on multiple different clothing?
if they are separate meshes it doesn't matter, because the amount of material slots on the meshes is what matters
if multiple meshes share one material, it's still multiple slots
oh, dammit
so if i want a toggleable hat and shoes then it will allways be 2 material slot
you can do multiple toggles within one mesh
there are multiple ways to do that
the best one IMO is if you're using the Poiyomi shader, use the UV Tile discard option
just grabbed an image from the VRLabs discord of someone's setup for that
you basically just move the UVs for different pieces of clothing into a separate UV tile
because the texture repeats, it looks the same
but the shader can tell that they are from different UV tiles, and can then just not render the stuff you don't want it to
thanks
it would be cool if you could just connect your clothing set to the skeleton and it could just use one mesh
...you can?
you shouldn't have more than one armature first of all
you can have as many meshes as you want parented to the same armature
no i mean toggleable full set of clothing with one material slot
yea you can do that
okay, i need to learn how to do that
either atlas all textures or pack all of the UV's and bake textures, then join all the meshes and use UV tile discard
if you go that route, keep in mind that people with custom shaders disabled will see all of the clothes on at the same time
so there's cases where it might not be a good option
wait i still need to process this and its still new to me, so you can have a hat and a shoes that use one material slot and you can also toggle them
yes
you can toggle them separately either using UV tile discard, have bones which you scale down to hide them, or use alpha and cutout
don't recommend shape keys as the GPU cost increases the more active shape keys you have
i want to use them together, they are outfits, but like for the basic armor part i want to decrease the amount of material slot as much as possible
yea if it's like one set of armor, you should have it as one material and one mesh
toggle parts using UV tile discard
okay so where do you put the complete set on the hierarchy? until now i put every different armor part on separate body parts
that is a really terrible way of doing it
you should be adding your outfit in blender first of all
yea first thing i do when i start my new avatar
to get the pieces to move with the correct bones, assign the vertices of each piece to the correct vertex groups
if they are solid pieces that do not bend, you can just assign all of the verts a weight of 1 for the bone you want them to move with
but if they do need to bend, then you can either do the weight painting yourself, or start by transfering weights from the body to the piece of armor
to make it bend the same way as the body
i see, i need to learn how to use blender better, i was more familiar with unity
and for future reference, never unpack your avatar in Unity
what was that link? could you send me the name in DM so I can see what it was?
send it via DM so I can see what it is
Does anyone per chance know how I can optimize the TACHI avatar by ReFleX? Trying to get it to 10MB. I've lowered the texture quality which I believe lowered it from 17 to 15 I think, but is there anything else I should do?
Reduce their resolution and remove any unneeded textures, materials always use any textures you put even if you change it to a shader that doesn't use the slot you put it in
Hello yall! I have run into a bit of a dilemma. I have looked into the unity documentation on GPU instancing on materials. I was wondering if it is better to have to GPU instancing for all materials on avatars? From what I have found it seems it is suggested as can increase framerate. The only downside is not to use it on meshes under 256 vertices but other then that is better to use then Dynamic batching. So what do yall think?
i'm curious if dynamic batching can be used on objects such as avatars
but optimization-wise, the best way to optimize your avatar would be light shaders and low material count, afaik dynamic batching requires equal materials on all meshes to batch
yep, same materials, and at that point you might as well turn it into 1 mesh. 😅
Mostly useful for stuff like wall prefabs in worlds.
Just look at this reply by d4rkcod3r
Why when I extract any material in any model, the shader goes soldi pink!!!???, I am so ungreatful about this😡, what ha I DONE TO GET THIS darn!!!!!
good to know sorry for sending you on a bit of a wild goose chase
Is it like a hot pink? Just reset the shader to whatever you’re using and it should fix it
But I assgined the albedo texure into the pink shaders, is this good?
can you send a pic of your unity please
It was originally hot pink, then I assigned the albedo colors of the shader into the pink shader models
Hello!
I am trying to optimize 7-Mesh model into 1; so using CATS I created an Atlas with every material in the 7 meshes and then used Model Options -> Join Meshes; which combines everything but no matter how I do it I end up messing up the materials.
The whole avatar becomes only one color despite me re-applying the Atlas on it; and I thought maybe it was a Blender bug but even after exporting the avatar in Unity it remains one solid color (using a material with the atlas texture inside).
It seems like I can combine 3 to 4 meshes without a problem but as soon as I combine a 5th everything turns gray (even without atlasing) so I'm a bit confused here and hoping that someone ran into the same issue and fixed it.
Unsure where to ask this...
I have this really big state machine and I'm unsure if this is poorly optimized, or how I would optomize it better. I'm assuming that this current setup would have to check every transition value per tick?
I'm theory I could split it up into ranges/groups.
@chilly sigil Heya, I think you're having the issue where one of your models has a different named UVMap so when you merge it down it gets overridden with your base UVMap. Quick fix is to check the UVMaps and make sure that they are named the same.
Unfortunately I don't use CATS so I dunno much about it.
nah thats fine, if you used anystate for all those, it would be bad
Is it better to have 1 large texture or several small ones for optimization?
1 large texture because each extra material initiates another draw call
Thanks.
which is why the recommendations tend to be stuff everything into texture atlases
Would you mind explaining how texture atlases work?
you just stuff all the individual textures into one big texture and rearrange the uvs to fit
Which can be done manually, but tools like the material combiner CATS uses does it automatically, which is less efficient (as there can be more wasted space).
Ah, the usual then. I manually UV map my stuff to stack similar shells for higher optimized detailing.
i'll take a bad atlas vs none wich i keep running into hello 200 materials 💩 , you can always bake it after to shift things around
on Quest I would definitely make sure to make your atlas vram efficient as going over the vram limit crashes the quest
Honestly depends on the model. I can understand manually doing that with a 100k polygon model is gonna be a bitch to make. However I do believe it gives me less control on the texture map to cover certain details.
And if you are lucky the avatar, and accessory, creator could have made UV maps good enough that just dumb atlasing looks basically the same as doing custom UV maps.
what does this mean.
i went into blender and deleted some bones
it didnt change at all
hi! im making her quest atm, how do i fix this? (the hair NOT the pink)
Hey I just got done with my avatar and these are the problems with it right now is there any way I can fix these? (Here is the problems and my avatar)
you need to make the Avatar physically smaller as it's like 6 meters tall
Where can I change the size in unity?
Is this too small? I want to keep around average human height
an average human is like one and a half or two Unity cubes tall if it helps
so around 0.4 would be human sized?
yep if that's how it looks against like 2 Unity cubes
and if it's helpful to think about 2 Unity cubes would be about 6 ft tall
alright thank you!
and after that the avatari should be medium ranked
yeah its good now
i still need help with this
can you post a picture of the material
The polygon’s normals are inverted so they’re facing inwards rather than outwards. You’ll need to flip that in blender.
really? it was fine on the pc version
how do i do that?
The oc version might have both sides of the faces showing to avoid the issue
ahh
Here, in blender enable this. Blue shows the front of the faces and Red shows the back.
Select the faces you want to flip and navigate the menus Mesh/Normals/Flip
thank you!
@buoyant holly @thick fable Isn't a Unity cube, 1 meter tall?
yup
which is why two of them stacked on top of each other is it pretty good scale reference
Well, it'll be bad as long as it is in the Idle state in that example.
65 transitions to check every tick.
AnyState would be checking it even when you aren't in Idle though, so that's even worse. xD
Hello is there anyone that could demonstrate how to use Unity I want to make avatars for myself but don’t know how to use the program. Dm me if you could show me how at some point
Before getting started ensure you have a Unity project with the SDK set up. Step 0 - Create a model! Although most users choose to find a model instead (see step 1), it is TOTALLY possible to create an avatar model from scratch. You can use any 3D software you like, as long as it supports exporting ...
Part 2: https://www.youtube.com/watch?v=rRAnDMUbWt8
0:00 - Intro
0:23 - What You'll Need
1:26 - Installing Software
2:26 - Get the VRChat SDK
2:53 - Make a Unity 3D Project
3:26 - Import the SDK
Link [1]: (Example Avatar Files) https://assets.vrchat.com/misc/Tutorial_Avatar_Robot_v1.zip
Link [2]: (How to merge Steam / Oculus / Viveport accoun...
Hey I am a relatively new person to creating avatars but I am trying to push it through to quest use. Is there a way that I can merge 3 meshes together?
you'd probably want to be doing stuff like merging meshes in blender
all of that is done in blender. joining meshes is as simple as doing ctrl + J, but combining materials is more complicated
ok thank you!
How to optimize video memory usage? I have an avatar that is 90mb but usess over 400 mb video memory according to the avatar details in BETA
basically what texture size it is is what effects vram
so like one is going to have a bit of a hard time optimizing that if they have like 20 outfits in one Avatar
if combining materials and atlasing textures is so important, then why don't modelers on booth ever do it?
Doing those processes create some irreversible changes. For example, If you atlas it can make applying cool effects to specific parts of an avatar much harder. And if you merge meshes you lose the ability to make toggles for that clothing. And if you trim away parts of the mesh that are under clothing it makes it hard to add different clothing down the line. It’s better for creators to supply the completely package, and maybe a quest optimized version along with it, rather than strip away the chance of customer customization.
and a lot of those avatars sell additional outfits so that's not going to work great if the clothing are merged into the same material as the head and body
also because models still sell even if they're 10x the very poor limits

so less effort for the same income? easy choice for people
I hate how some just treat optimization as a low priority and the ranking system as very strict.
I heard so many times "polygons don't consume anything" with people that use 200k polygon avatars with the heaviest vertex shaders imaginable.
There's so many know-it-alls on vrchat that claim performance is not important then use avatars that are nearly crash tier, then they complain when my safety settings has them blocked
It's the "I don't have a problem, therefore there isn't an issue" mentality. Problem is they're playing on $8k computer setups their daddy bought for them so there's no concept of performance issues.
It's basically this, or they treat this game as a render engine or a character customizator, but instead of using only the needed objects and textures when done they have all parts loaded in your memory all the time and they're also poorly done
Each time I open Vrchat.club, it says this site can't be reached, WTHeck am I suppose to do if I want to report an error or find a bug in Cat-plugin Material Combiner😡 😡 😡 😡 😡 ?, wait, isn't it not available in my region?
When I opened a new or reset Blender, the material combiner was removed, I tried to install it again in a new blender project, it said Modules Installed () from 'C:\Users\moody\Downloads\material-combiner-addon-master (2).zip' into 'C:\Users\moody\AppData\Roaming\Blender Foundation\Blender\3.0\scripts\addons'
but I never found THE FLIPPING ADD-ON
I have a question, Do you have to use Material combiner before you bake avatar, or You can use Bake instead of Material Combiner ?
the importer is looking for the textures but it hasn't found it, happens 99% of the time, you have to put your texture manually
i don't know that is this webpage
cats only works on blender 2.7x, with updates things like blender python functions or parameters change, making it impossible to import scripts made for old versions on newer ones
i also don't know what bake you refer to, but try merging materials manually by creating a new set of UVs on the objects, selecting all polygons on the mesh then on the uv editor window scale down all islands so they all can fit on the texture and order them around the texture, you can create for example a 2048x2048 texture as a color grid (the option on the texture creation context below that is set as "blank" by default, set it as color grid) then you can order the islands correctly , all of them have to be minimum 4 pixels apart from each other to avoid pixel bleeding (two pixels isn't enough i learned it the hard way).
After that put the textures on each corresponding material, and then put a image texture node with a new texture, that will be the bake result, copy and paste this node on all materials and make sure you have that node selected or else you might get "circular dependencies".
Then go to the render parameters, on color settings (way at the bottom) set it from "filmic" to "standard", go to the Bake section, change the mode from combined to Diffuse and uncheck "Direct" and "Indirect", click bake and then your texture will be baked.
Also always make a backup by creating a collection on the hierarchy, selecting all objects, duplicating them and drag&dropping it on the collection, then hide the collection.
Then remove all material slots, create a new one and remove the first UV map on your "atlased" avatar
what they were referring to by bake
And if using a blender version above 2.93, you can find the link to their hidden dev version (I seriously cannot find where this is stored on their github) if you join their discord and go this this message #703190726447595581 message
(not sure if they want people to directly link to it, so I won't)
But it's a vroid avatar
yee
does it have any thing that makes them different from other bases?
I wanted to get rid of the black on my new third vrc avatar, it deleted the texure of the eyes , I tried to revert, nothing happened, Everything is undone but this issue, this is a curse to me!?!?!?!?!?!?!, I felt like it's permanent
Quest shaders don't support transparency so you're going to have to modify the Avatar in blender to not use transparency
0:00 | Intro
0:53 | What you need
1:11 | Vroid removing transparent areas
6:25 | Exporting from vroid
12:01 | Blender
14:12 | Setting up your avatar in Blender
16:59 | Cleaning eyebrows
19:16 | Demonstrating editing the mesh
21:31 | Combining materials
23:04 | Reducing polygons
25:10 | Exporting from blender
26:00 | Unity
26:46 | Configuring mod...
What the heck am I suppose to do with the ploygons? , I solved the materials problem in blander cats material combiner
basically you need to cut out the shape of the eyebrows in blender so you no longer need transparency the video I linked shows how
I'm going to commission a custom avatar in February and I want to keep performance in mind when working with my artist. Aiming for medium and making a custom fallback later. I'm assuming that keeping the head mesh separate is especially important for optimization when I intend to impliment face tracking? Since it will have multiple shapekeys applied for nearly every frame.
Yeah, the idea is to keep any mesh using shape keys under ~20k tris.
I use the 0.19.0dev build on 3.0.1 just fine. 🤷♂️
2.8-2.93 are definitely better suited though.
i dont understand why im having so much trouble optimizing this avatar below 10 mb, its stuck at 12 at the moment. all the textures are compressed as much as they can be, there are literally 3 physbones on the avi and like 9 pieces of clothing/accessories.
how many textures are you using and what resolution?
this tool is technically intended for worlds but it does have a function that tells you what to take you up file size on a vrchat project https://github.com/oneVR/VRWorldToolkit/releases/tag/V2.0.0
350k º.º
i dont get why
it's the simplest thing
like i dont get why there are so many damn polys
even for a PC Avatar that's kind of unoptimized
you could probably bake that fishnet into the leg texture
can you show us the wire frame
how would i do that?
give me a sec to open Unity to take a screenshot
yea wireframe mesh leggings and warmers are easy but extremely vertex intensive
that would be horrible if that was all geometry
deleting the fishnets take off 100k polys.... wtf...
oh dear it's the worst kind of leggings
yeah unfortunately it's done a lot because it's as easy as duplicating a mesh and adding a modifier, but it multiplies your tris by 8, so if your fishnet is 100k then your legs only are like 12k polygons, so even your base itself needs a lot of reducing to not cause lag to other users
thats so fucked
and as it can be expected, whoever made the clothing went straight to marvelous and forgot what retopology is
this Avatar is going to have to go in blender to fix
fuck, i really knowing nothing about blender
and even then I'm honestly wondering if it would be just easier to recreate the Avatar in VRoid Studio as that's going to be not so disastrously unoptimized
i wasted so much time 
yeah unfortunately a lot of Western made anime avatars are like horrendously put together
sadly a lot of bases of this kind is just sculpts without retopology and things that are done in ways that shouldn't
fuck. guess i'll just delete the fishnets and go looking for some optimized ones later
ty for the help yall
deleting the fishnets will at least allow me to upload it for now
what you would want to do to be the most optimized would be to do some texture baking so you could take the texture from the fishnets and projected onto the legs
but that would require explaining blender
its saying avatar is poor performance, even tho its under 32k polygons and all other stats are excellent and good?
The second stat warns you the limit it 10k and your poly count is 19k, the avatar performance ranking is the maximum between all stats, it's not averaged
for pc limits it says being below 32k polys should give an excellent rating tho, right?
You're right, now that i see it your platform is windows but it's ranking it as android
yeah, thats what i thought
so i was like ????
i tried reloading the sdk but it still pops up as that
I don't think anything will happen if you upload it, perhaps the in game ranking system will correct it
Yw yw
Unity be like screeching dumb noises sometimes.
Question, at what point is it better to go from a texture atlas to separate materials.
Like let's say I have a handful of material swops on an avatar. My intuition would say to have the animated part on it's own material, that way I can save on file size. But idk where the line would be.
What can I atlas here? What shouldn't break anything?
I tried taking my VRoid model through blender and stuff to optimize it, but I was just getting frustrated, im honestly just gonna use the vrm converter, idc anymore if its not optimized
how do i merge materials without atlas? atlas isnt showing as downladed and when i click the link to download it, it gives me an error page
also how do I delete bones?
srry i am VERY new to making avatars
ooh nvm, figured out how to delete bones !!
Uhm
Halp
my texture files are only 500kb uncompressed in explorer
my entire uncompressed project, is only 101 mb
The model compressed is 57mb, but it somehow uses 2.8gb of texture memory in vrc?
any texture compression does nothing to how much texture memory it takes up
Uncompressed even it shouldn't be taking up 2.8 gb
these are low variance 2k textures
okay yeah that is a bit odd
and only a few, at that. Most of that material data has empty texture slots.
was just checking in case you had like a kajillion 8K textures you crunched compress the heck out of
nope.
They're 500kb in explorer, and between 2.7 and 5mb in the unity editor.
the math doesn't add up.
Oh, now i can't even change into it.
"Encountered an error while trying to wear avatar"
This might need to go in bugs, not here.
Reuploading it reverted the file size to a realistic number.
Patch notes:
- Fix integer overflow in Avatar VRAM calculation
Someone made an avatar with over 4.3GB texture memory usage? 😂
Shame!
you can't. merge materials so to speak. without making a atlas. and the way to find out what materials you can atlas together is by finding out if you need the shader to be different presets. so transparent, cutout etc ideally you want all materials that share the same preset to be on the same atlas
ah ok, but my atlas is broken, like its not downloaded, do i have to download that separate? and where can i download it? (sorry for all the questions)
better, but still quite high. try reducing the resolution of as many textures as you can
metallics/normal/AO can typically all be lower res than the albedo
Cats for blender can create a atlas for you. just remember to assign all textures to each part before you do so
the atlas tab says its not downloaded and the download link doesn't work
thats a massive amount of vram. i suspect if its not textures its the actual body it self.
ah yea
https://github.com/Grim-es/material-combiner-addon follow this to add it
oo! ok, thank you so much
also it is often required to modify the material sizes in blender to. so you dont end up with a 16384x16384 atlas. ideally you want that atlas maxed out at 8k or 4k
Yeah, the avatar has a lot of play functionality. Like a rideable vehicle etc.
It won't be getting much smaller than that, size wise.
any of you guys know any good atlas tool outside cats. I just wanna learn alternatives
can do it manually
or use CATS Bake, not Atlas
which is far better
if you have UVPackmaster, (UVP), you can get a much more efficient UV pack
at this point baking is pretty much the best approach can do as you can get a lot more texture efficiency
aaaaa
as honestly a lot of the kitbashed clothing I've seen people use leaves lots of empty space in their textures
and it can actually handle PBR materials
i know baking is superior outside after texture edit, its just i think if some people i know find it too complicated, at less they have alternative
that's what CATS bake does, it simplifies baking into one button
you have knobs to tweak if you want/need to
and like rain said, it handles all PBR textures
but there's not really any way to simplify it anymore than like cats bake
well there is that
and it is way faster
(i mean to load)
(gift from thulen from half a year ago )
your video is only showing baking a diffuse texture
whereas the cats baked can handle a full PBR texture set in one click
last time i used cats baking, the spacing were always to big to my taste, but maybe i missused it
you can provide your own UV unwrap for cats bake
oh didnt know
"Generate UVMap: Produces a new, non-overlapping UVMap. Neccesary for Normal maps to be produced correctly. Only disable if your UVMap doesn't overlap.
Prioritize Head/Eyes: Scales the islands for Head/Eyes up by a given factor, letting them be extra detailed.
Overlap correction: The method used to ensure islands don't self-intersect. Use 'unmirror' if your islands self-intersect only across the middle of the X axis, 'Reproject' if you have any other unusual situation. 'None' is fine if none of your islands are self-intersecting. 'Manual' can be used if you have specific needs, this will use any UVMap named 'Target' when baking."
will need to try that way eventually.
i highly recommend not to use the bake tool. it only really breaks your model and makes it look worse. plus the god awful uv map it creates. the atlas tool is faster and better since it just merges the current UV maps and textures.
what? Bake also generates a new UV map, but actually packs the islands instead of tiling the existing UVs into a big grid with a lot of wasted space
it's a lot more efficient
it doesn't "break your model", you're doing something wrong
Yet to use bake since it make masking parts / recoloring a hell , having same 'parts' near eachother make it so you can have very tiny masks and not bleed to nearby stuff - exsample have fun masking out just the hair without going all over the place and bleed to nearby
you can create your own UV map and use that for baking
if you want it more organized
and you still get the benefits of doing all the PBR textures at the same time
nope it breaks it. and yes it generates a new UV map but it's so garbage. it's far easier and better to make one yourself. and its not efficient at all. and not only that most models already have a decent UV map. which you can change to your liking. and doing the create atlas with cats immediately does it all for you. without spending more then a few mins. there is a strong reason as to why no one suggest using bake. its not better. it does not create a good uv map either.
god that is a bad UV map. also smaller = less quality in the end. bigger uv for like arms,body etc is better. there is no such thing as wasted space in a uv map if you do it correctly.
you don't need 4k texture quality on literally everything, some stuff are less noticable than other when lower rez. having to choose what i want lower rez over having everything lower rez because an atlas is way too big. I will definitly go with choosing what to reduce quality.
never said that. i use 4k on one texture. while 1k or 512x512 on all other. the only 4k i use is for detailed textures
well atlasing is good in that case.
its always good.
it isnt
okay, let me precise
Atlas purpose is to reduce the draw call to a minimum while maintaining the details and lower size
when you trying to reduce the amount of texture/material, atlasing isnt always the best option
I don't think its going anywhere sorry
atlas is good when you dont have many texture, because its simpler, if you have too many of them or material, you will have too many atlas or 1 atlas way to big that will loss quality over compression, uvmaping to follow with a bake is going to keep more of its quality and use way less data over part of the texture that aren't used
to many textures is rarely a case lol
like explained before you come here
if you have 40 materials your doing something extreamly wrong lol
to me if you reach an avatar with 300mb , you will have to do sacrifice if you going to atlas to stay green.
and the Bake does the exact same thing as Atlas. it makes an atlas. by packing materials and uv together.
eh
300mb lol
try 39 mb
my avatar is using 8mb right now
are you looking at download size?
nope
i could easily reduce mine to that but textures would be low resolution
also a atlas 4k for example can contain 4x 2k textures. or 8x 1k or 16x 512x512.
you may want to use unity to see the texture size.
cause the one in vrc is kinda wrong
i guess that was in the beta.
rindo test uv being an audiolink layer
mhm
this wasnt in the beta , but i can go look on the beta give me a sec
the mesh could also be way lower in mb if I would have split my model in 2, separating the face. but I got lazy, would maybe revisite the idea if they decide to include mesh size
there is no need to go that low in texture size but the body size is fairly high
it could be higher yeah, you right
I just wanted to see how much I could optimize a booth model without losing much quality, i even try to make a quest compatible green version but gave up on that.
as long as you kinda stay around 40-50 mb
it was really not satisfied by the result
its really just the mesh that become complicated
getting to medium is possible, while looking allright, but trying to go to green would need to retopo
hey can someone point me to a video on making multiple atlas without using CATS?
you can just atlas the UVs and textures manually
if you want to atlas 4 materials, put the UVs for each one in a 2x2 grid and do the same for the textures in an image editing program
So what about the other maps? I assume just scale the same ratio right?
yes, need to do the same thing manually
I would only really recommend atlasing if you value being able to update the textures more easily after the fact
otherwise you should just re-pack all the UVs and bake the textures
thanks I forgot the whole process and needed a refresher
why not just use cats? it automates it all.
what. you atlas for performance sake. and greatly reducing draw calls
I said atlas for ease of editing, re-pack and bake for more efficiency
you misread what I said
or just have everything already set up for baking such that you can just drop in your new images and redo the bake
I personally prefer doing it manually because it's more eficcient, like saving more texture space by prioritizing uv islands by its size depending on how much will it be seen/rendered/detailed or by making the island more "uniform" if it's a more solid surface.
Cats is cool for automating things and making avatars faster.
But for most times doing these functions by hand gives better results.
I normally use addons for high precision or repetitive tasks, automating manual tasks is something else
like I mentioned earlier too, you can totally just make your own UV map and use CATS to do the baking for all of the textures at once, and nothing else. still saves time that way
it's just another tool among the many that could be used to make the task of reducing material count less of a chore
cats does not resize the UV at all. it only merges them along side the material combiner. for the UV map. yea i create them manually. and i talk about the Cats Atlas. not the Bake which just creates more work.
Yea that's why i say i do it manually to change island sized depending on their detail or priority, i don't know what the bake does tho, i'll guess it bakes pbr stuff like color (hopefully skipping the one minus metallic multiplication), normal, unity's metallic data texture and emission.
yea it seems like the bake one does that mostly. but not alot of people do PBR cause its alot more heavy.
Well that depends on the shader they're using
like if the Anime Avatar has medals that react to the lighting they're technically using PBR
What would be a non pbr shader now that i think about it?
well Poiyomi Toon Shader when you set it to Toon mode would be disregarding physically accurate lighting principles
Sounds reasonable
So technically these shaders do pbr (not fully tho) then convert things like NdotL and specular highlights to a different lighting modr
using realistic allows you to do PBR and even then i still use the atlas option but that said i only have a AO map not normal and other things
only if you setup to do so
Yee
Poiyomi Toon Shader is very customizable
Well i make my shaders skip the tbn matrix and pixel light calculations if there's no normal map.
It's not really a concern for a 150 line pc shader but i'm paranoic when it comes to optimization
very. Poiyomi has yet to fail me on what i seek
can you guys help me optimize an avatar for Quest? anything I try doesn't seem to be working for me
What did you try so far ?
I've used two tutorials on YouTube, one telling me to reduce the polygons in the software I used to make the model, VROID Studio. And the other saying to put it through Blender and use a plugin to reduce the textures and polygons which didn't work because of unavaliable download links I can't access...
still saying Quest users can't see it even after all that...
What is still saying Quest users can't see it ?
the VRChat SDK
"This avatar does not meet minimum performance requirements for Quest, it will be blocked by default on VRChat for Quest, and will not show unless a user chooses to show your avatar."
I've tried everything and yet it keeps showing up as having 21291 Polygons o.o
have you tried clicking the delete transparent mesh in VROID Studio as you could use that to erase all of the body under the clothing by making them fully transparent
show me where that option is please?
pretty sure that was checked when I opened the export menu tho
so then I would suggest editing the body textures to be transparent underclothing so that it erases more triangles
how do I do that?
yes
yes as the erase transparent button will delete all of those triangles you're not going to see anyway
@buoyant holly can you tell me how to solve the message saying there's two skinned mesh renderers when there's only one?...
"2 renderers" yet I only see one???
the head is always separated from the body with VROID
yeah I can see that, was pretty obvious with blender
and medium rank is still better than most avatars on vrchat
but isn't medium still hidden by default on Quest?
no that's poor and very poor
o
so if you're medium rank everyone can see you
wait so why does it say it's not compatiable with Android if it's within the polygon limit and it's medium performance?
have you actually swapped to the Android platform to upload it yet
the Avatar has to be uploaded once for PC and once for Quest
Part 1: https://www.youtube.com/watch?v=xjS8rreIMos
00:00 - Intro
00:19 - Importing Your Avatar: UnityPackage Import
00:42 - Importing Your Avatar: FBX Import
01:20 - Importing Your Avatar: FBX Rig Configuration
02:23 - Importing Your Avatar: FBX Material Setup
03:56 - Avatar Descriptor
04:25 - Avatar Descriptor: View Position
04:45 - Avatar De...
I already uploaded for PC... many times... Not sure if it'll ever let me enable Android build
do you have Android installed for your Unity
Setting up Unity to create Quest content is actually pretty straightforward. This image covers it pretty well: If you're starting a brand new project, this won't take long at all. However, if you're converting a Windows platform project to an Android platform project, you will have to convert your a...
that's a thing to install???
well, not everyone using Unity needs it so it'd be wasted space and downloads from Unity's servers to have it be installed by default.
just spent my precious time downloading the Android SDK and loading it onto Unity, and then I get this message -_-
wonderful
a random plugin complained about something I did
make sure you only have the one Avatar you're trying to upload in your Unity scene
yep, there's only one in the unity void rn
Are you allowed to press the build & publish button or no?
yes but it still says it's not android compatiable
have you actually completed a upload process on the Android build
now it's saying the VRM shaders are incompatiable, so how do I change the shaders to the VRChat ones?
You would have to upload the avatar and check back on the android compatibility afterwards.
Do you know how to get to the materials the model is using?
yep, but there's no option to change the shader for some reason...
If they're greyed out then they're likely embedded materials and you'd have to go back to the model import tab and extract them
this is what it shows
That's a texture, not a material
Model likely uses transparency, which aren't allowed on Quest avatars.
You can apparently "cut out" those transparent sections in blender but I don't know the exact process on how to do it.
The view position Y value is the height of the sphere indicator in meters, so 1.6m by default which i believe is around 5' 10''
You want like 2.25 or so
You can just scalle the avatar down until the sphere lines up right with that height set.
Make sure you drag in Spine2 for the Upper Chest
That should do it unless other bones aren't assigned properly
Should be fine for Quest so long as you use oone of the VRChat mobile shaders but you need to switch build targets to android and publish for it
Can you hide the white box?
If you click it in the scene, it should open it in the inspector where you can hide it
I think it's probably just in your scene. I don't think it's part of either camera. Is there a box in your world somewher?
You should be able to switch to the scene tab from the game tab
Switch build target to Quest in the builder and publish
I'd duplicate your project and convert it to quest there instead as opposed to doing it in the same project.
No reason to do that given how fast the cache server is in 2019
It just takes a bit long on the first switch back and forth, but should be super fast after that
I keep a duplicate as I end up making changes for the Quest version and I'm worried about accidentally changing the PC version, but yeah there's no technical reason for it I guess.
you could just make a separate scene for PC
or use something like easy quest switch https://github.com/JordoVR/EasyQuestSwitch
And duplicate all my materials etc too for when I change them on Quest
But yeah I could 🌞
the tool can also automatically handle swapping the shaders
when you switch builds
I'll give it a look, was considering writing something similar myself for swapping textures etc too
you can set different texture settings for each platform in unity
labeled d is the area you can set platform overrides
I need help to clear these 4 errors to make my avatar quest compatible i have all night
2 of them are physbones
and 1 is a ghost shader
Search t:renderer in the scene to find all shader present
Use the toonlit quest shader
it does this
maybe you have your normal pointing the wrong way around on your model
as Unity randers with backface culling
Try going into edit mode in Blender, select all vertices, Shift+N to recalculate outside normals
how do i enable this? my avatar is fully ready for quest but wont let me switch build target to android
Is there quest cutout shaders?
No unfortunately
You can only use opaque shaders
Only transparent shaders for avatars are for particles
So, do people regularly go over the 32k polygons threshold for models? I'm getting the feeling that I should be pushing myself harder to increase polygon counts for visual quality as I always model towards that threshold
people do go higher, but optimization is never a bad thing
you can have a very optimized avatar for when you need it and a slightly less optimized one for more features or quality
And what would that "when you need it" case be other than the Quest? Because IIRC, the Quest ones are far stricter on polygon limits, like 10k or something
10k if you want a Good rating on questions, but you can go up to 20k before being very poor
and by when you need it I mean when you go to events or meetups that require Medium or better
Ahh, events. I didn't even think of that
Thank you, that allays my concerns a bit. I just need to figure out a modelling technique that lets me put better quality into hair. Might be too late for some of the stuff I have right now
for high quality hair, look into Hair cards
you would basically model a mesh for the general shape of the hair, and add a bunch of hair cards to add extra volume and fuzz
quest is 20k limit before you're a fallback, 70k limit for pc before you're fallback
Does the Quest Version (for Oculus Quest 2) still don't support any shaders that have transparency/cutout?
no and likely never will ,its heavy , already strained in vrchat
oh well, good to know.
porting my avatar that uses hair like this won't be an option then :S
womp
Hello hello,
So I've uploaded a custom avi that meets the requirements for fallback on both pc and quest. They uploaded fine and the avi works fine.
But... in the new UI can't seem to figure out how to set this custom avi as a fallback...
If I go into the fallbacks tab it just shows me the public avis. I've tried google and the docs but can't find anything up to date enough to help me. If anyone has some pointers id be grateful
did you hit the fallback checkbox when uploading it?
all good managed to sort it thankyou 🙂 but yeah that was the issue 😂 like an absolute idiot i am hahaha
Transforms on a child object shouldn't affect the transforms of a parent unless you have some other things in the mix, like constraints. Do you have any constraints set up on the parent object that's causing you woe?
Currently working on a Tool that creates Blendshapes for Avatars on 1 Click directly in Unity 😄
If you make Avatars with a very similar facial structure, this works pretty well (the meshes don't need to have the same number of vertices or the same vertices-order).
I prepared an 1-Frame-Animation for each Blendshape and via Script, I create a copy of the original mesh, deform the original mesh, calculate the differences between both meshes and make a Blendshape out of it.
I've been doing some reading lately on how Unity handles images used as textures, in an effort to try and further reduce the size of my avatars. The current model I'm working on has a single 4096 x 4096 atlas, which is a PNG exported from a PSD working file. What's the best method / most optimal settings for decent compression without too much artifacting?
All textures will be set to the same format unity uses to sample them quickly, the best setting would be to set the quality to high so the arrifacting is as low as you can, but knowing a 2048x2048 uses 5.6 mb with mips enabled a 4096x4096 won't be very light
check out this blog post on the poiyomi website.https://www.poiyomi.com/blog/2022-10-17-texture-optimization
The long short is to use BC7 (high quality compression). If your texture has no/doesn't need alpha channels you can use DXT1 (Normal compression, may need to set alpha source to "none") . Half as large as BC7 but has more artifacts. If possible reduce resolution instead.
Tips and guidelines for optimizing texture memory and filesize for VRChat creation.
a 4k atlas is fine. just use high quality compression and it only uses 16 mb.
4k / alpha = 21.3 on high quality , never seen 16
Thank you so much for the information, everyone!
Commenting here- unsure if there is a better place for it.
Does attaching a Quest avatar to a PC avatar make the avatar size bigger?
Or do people only render/load the specific version of the avatar per their headset?
My PC avatar is fairly large (100 MB) and I'd like to attach a Quest version however not if it will make it larger overall.
Essentially asking if I attach a 10 MB Quest avatar to the same ID; is that avatar now 110 MB on PC? Or will it display as 10 MB on Quest and 100 MB on PC?
It will be 10 on quest, 100 on pc
The builds are stored completely separately
Figured as much! Thanks so much!!
My understanding is that no matter how you compress an image, it expands to about the same size in VRAM. So even if you were to compress a 2K texture on Normal with 50 crunch, or High Quality, it would expand into a compressed lossless format in VRAM, correct?
Crunch does not reduce vram use. it only reduces Disk storage. aka how big the file is on your pc / or their server. and no a compressed file will always be what it states. since it does not need to be unpacked again. since unity allows it to read directly into the compressed texture. so if a 4k texture is compressed to 16MB it will not take up more Vram then 16mb
but then again. dont use to many 4k textures. try and limit your self to 2 max. normal maps, ao maps etc only need to be 1k
I see. I'll need to test again and check the texture memory, because I could've sworn that even if you squish a texture into, say, 100 KB at 2K, it would still expand to about 4 MB in a lossless format so the GPU can quickly access it from VRAM
all textures are decompressed when they go in VRAM, so crunch compression does nothing to help vram usage. the best thing you can do is lower the resolution of your textures
you can be inconsistent with resolutions to get better savings. for example, a material's base color could be 2k, but the normal map could be 1k, and the metallics 512, etc
turn the res of each texture down individually
Right yeah. I knew all that. I guess I misread Hostile's message while tired or something because I thought by saying "a compressed file will always be what it states" as "that is the size in VRAM" and not "that's the size on disk", despite what they said right before that
that's pretty much what Nintendo titles do with their PBR textures to fit the switches vram requirements
that is not true. with the compression methods unity uses they do not decompress all the data. it only uses 16mb of vram if it's a 4k texture using BC7 etc
GPU compressed texture formats like DXT / BC / ETC are specifically designed to be read directly from their compressed form. They don't need to be unpacked into a raw RGBA buffer.
Correct. The point is: Just because a texture is 100 KB doesn't mean that's going to be it's size in VRAM, because it's going to convert to a lossless format that is easy to decode (similar to Cineform/ProRes for video editing). Yes, it's not going to be raw RGBA, but it's going to be significantly larger (close to High Quality iirc).
You're both right, there was just some communication breakdown.
I was just confirming it originally becuse I misread Hostile's message, especially since I personally am trying to not go over 2K in texture resolution for my avatars is possible, or really just a total texture memory of no more than 50 MB.
anyone up to helping me optimize my avatar?? never done it before and i dont know enough to not mess everything up LOL
I've made twisted bones related video because I was struggling to understand this shit myself and tried to explain it in a clear manner for other people
I've tried to make the most informative video on the subject for Intermediate Blender users, so if you don't know 3D modeling at all and want to improve your premade VRoid, this tutorial might be too complicated for you.
You can get your professional custom VTuber model here:
https://www.fiverr.com/aspiecow
Twitch
https://www.twitch.tv/aspiecow...
Funny floating point numbers
How the.. lol
I have this one model that was slighty too big to upload as a quest avatar. 11MB if I recall, so I took it into blender; decimated and deleted double sided normals. Things that weren't needed. I go to upload the model and now it's saying 43MB. How does that work?
Did you do the autofixes?
One of them significantly lowers that number.
Just done that now, about to find out :)
However worth noting that the mesh barely takes up any space compared to textures.
And with mesh compression doing certain things can make it take up more space.
Did you reimport in textures then?
I've resized all the textures to 512x512
is there a way to increase the amount of polygons in vroid?
Maybe you need to select the FBX and check the "Legacy Blendshape Normals" manually.
why would you want to increase it?
does making the character smaller/shorter decrease polygons?
No
But it's true that the smaller you mesh is the less detailed it needs to be
You have to remove polygons manually tho
ok thank u 🙂
yww
If I have two different materials that both reference the same texture file at least once, will that cause the same amount of VRAM usage as if one of those materials instead referenced a different, distinct, texture?
(so like, if I can get away with referencing the same texture across different materials which have different shaders - is it worth doing because it helps with optimization, or is it loading two instances of that texture anyway so there is no difference...)
The texture is saved once and referenced twice.
same amount of Vram. if its the same texture. however it will cause more drawcalls. which is not good either.
I don’t think the number of materials were increasing so the drawcalls shouldn’t increase, no?
I understand merging materials but if you’re using different shaders or have completely loaded one’s inputs without the knowledge to make/merge then I can see a reason to keep them separate.
each indiviual material causes extra drawcall
even if its the same texture.
even if you have two materials using the same texture. it still needs to draw it twice.
How I interpreted it was the number of materials in the example wasn’t increasing. The question was more if using 1 texture in 2 materials counts as 1 texture or more.
Yes 2 materials would be at least 2 draws but the texture applied shouldn’t change that, no?
1 material referenced in multiple materials still counts as one correct. however each and every material will cause more drawcalls.
you can reference a texture in 100s of materials and it wont cause extra Vram use, as long as its the same texture
So yes, the amount of draw calls is not increasing as the number of materials and shaders used aren’t changing.
each material always increases draw calls. regardless of the texture being the same or not
material != texture
No, it is only somewhat true if using GPU instancing on the material's shader, but that still isn't as good as if you were using the same material (also not sure if GPU instancing works on skinned meshes).
Yes, in the example the number of materials isn’t increasing nor are the shaders being used changing so the number of draw calls isn’t increasing. Adding a texture doesn’t increase draw calls.
We’re saying the same thing, why are you responding like we’re not?
Shaders are part of materials, the amount of materials is what matters for draw calls, textures are included in material draw calls.
Using the same material twice will cost an extra draw call, unless using GPU instancing (assuming it works).
Skinned meshes using GPU Instancing, afaik it doesn’t. I tried it some time ago in 2018 unity, maybe it’s changed.
It’d be nice to use 1 material but that’s not always viable. For instance I have very little knowledge when it comes to making shaders. If I was using 2 shaders I found which gave different looks I wouldn’t have the slightest clue how to merge them into 1 allowing me to merge the materials.
I sorta mentioned it above but it’s not using the same material twice, it’s using the same texture in 2 different materials and how that’s referenced. I’m not sure why drawcalls even came up tbh.
The question started with 2 materials and ended with 2 materials. As long as the shader settings aren’t changing to increase the number of passes, the draws wouldn’t increase either.
Well then it is understandable.
Maybe it is possible to combine "effects" if using a mask in a behemoth shader like poiyomi, but that is complex.
Yeah since the material's shaders wouldn't be different anyway.
You are honestly confusing me when you refer to materials and shaders, even if the shader's setting are the same they are separate materials, so are one draw call each.
because drawcalls are related. your using 2 materials which means 2 draw calls as a minimum. even if both materials has the same texture.
using the same texture only saves on vram (depends) and texture reads
same amount of drawcalls
You said “however it will cause more drawcalls”. The number of materials never changes, why is using the same texture on multiple materials causing more drawcalls?
you said your using the same texture on two materials. which is where its causing more drawcalls
only if its the same material,. if its on two different materials then it will always cause more drawcalls
from the fact that you using two different materials at all not the fact that the texture is reused
We started with 2 materials not 1. Started with 2, ended with 2. 2 - 2 = 0
we’ve gained 0 drawcalls
Where is the confusion?
“If I have two different materials that both reference the same texture file…”
:)
each one of my material subtracts a drawcall
Yes, that’s where the 2 is coming from
The whole discussion stems from the use of the phrase “will cause more”. “More” as in, more than 2 draw calls on the existing 2 materials.
Thanks for the discussion yep - I am fully aware that additional materials = additional draw calls. I am in a situation where I need to use two separate materials however I COULD design a texture in a way that it could be used in both materials for this particular situation. So I was just trying to figure out if it was worth maintaining that compatibility with the texture or if its just going to store two copies of the same thing in vram anyway so there is no point in worrying about keeping that possible optimization.
It sounds like it is worthwhile, thanks ❤️
as long as u keep it to max 4 materials in my opinion you should not cause any issues
My avatar doesnt have anything that it says will definitely stop it from being uploaded but the button is still greyed out and its so frustrating? anybody know what's going on with this?
Like ive made sure all the textures and shaders are good as well as made sure i dont have too many phys bones etc.
there shouldn't be any other avatars with errors or any broken or missing scripts on the scene
mmm thats not the case.. but i could try putting it in it's own scene
That worked! Tysm!!!
nice¡!
workin on some sculpting of an outfit for a new quest model
Oops wrong channel 😅
Nah fam, show where it goes and the story is complete. Show that you can get crazy details without 6 figure polys
tru
is there a unity plugin to see texture memory without uploading?
cause i can't seem to figure out what's causing big texture memory for my avatars, and it's pain uploading test everytime just to check...
You can use Thry's VRAM checker, should make it easy to figure out what's doing that.
just check all materials your using and all textures in them. that gives you the amount
I have a question about texture atlasing and shaders. My character has a little "blush" image that appears on his cheek, which I'm creating via a blendshape on a single quad that allows it to "appear" on his cheek. However the blush texture requires an alpha channel for transparency which the original face texture does not. Does including these two together, and subsequently having an alpha channel for my whole face texture improve my performace? I know this is a relatively small element in terms of optimization, but I am concerned mostly with knowing the fundamentals of good performance as much as anything else.
I know that having fewer materials is almost always better though
no, in fact it won't work at all
you can't stack transparency with the same material
(also, if theres just a better way to do this kind of thing, i'm happy to do so, im just doing what I know)
oh interesting
the better way to do it would be to use a shader like Poiyomi's that allows you to do decals
which is basically a texture you slap onto the main texture, you can choose the blending mode
you can also use a separate UV maps for decals
Ok so the face material would use the Poiyomi shader which would allow me to just project some decals onto him
Yeah, the last time I did this trick I just had the blush be a separate material, and it worked fine, but I knew it wasn't the best way to do things
Might still be what I do if I want the blush to "float" off the skin, but i'm definitely going to look at decals first.
I don't think you should have it float off the skin, it looks rather bad imo.
Is there a generally agreed upon way to see the resource use of your avatar in unity? I'd be cool to see what my avatar requires and what increases/decreases this in realtime
use VRWorldToolkit to see a build report, use Thry's avatar evaluator to see VRAM usage
thanks!
if you keep material count low and vram use low. your typically good.
I been optimising my avi but because it's a little over 70k, it goes from medium to very poor 😢 hopefully one day the poly count for at least "poor" is increased
any particular reason you couldn't just optimized it to be removing that little bit above 70k
because then I'll have to decimate the body which I don't really want to do, since it messes with textures and shading, or I have to go without shoes lol
it shouldn't mess with the textures if you like dissolve Edge loops
I just thought, for the optimised version of my avatar, I could just remove any of the hidden body parts
idk why i didn't think to do that
🧠
yes no need to render triangles you never see
I was honestly trying to make the main version better than "very poor", but I will just have 2 versions
quick question about optimization via mat combiner
would it be best to use quadratic, power of 2, or automatic, as I have a texture that when combined is almost 8k, but most of it comes from junk space
you should use CATS Bake instead of Atlas
Bake actually makes a new UV map that is far more efficient
you can even make your own UV map using whatever tools you want and use that as your baking target
last few times I tried cats bake my blender froze which I why I don't use it much
and I don't mean like just freeze like a wait
I mean like a crash freeze
yes, it takes a while
especially if you have options like AO bake enabled
and it also depends on what resolution you are using
use the Dev version of CATS, and enable "Draft quality" to do a low quality bake to ensure everything works properly
ok
And unless they have made it easier to find, the actual dev version of CATS is only available on their discord in the FAQ channel, it being the second message in it.
yeaa, still waiting on the changes to merged to main .-.
they are being slow about it
Had less bugs with the developer version
They could at least link it on their github properly.
Hopefully a quick question I made a fallback compatible avatar and threw it in a world, however I've been told that it's not possible to set a public avatar as a fallback and that you have to upload it yourself to use it as a fallback? Is that true?
yes - public fallbacks not possible
only public fallback ones are the one from vrchat
just use the Material combiner. Bake isn't better or does anything better. in most cases it just makes the UV worse. and there is no thing such as wasted space in a UV map. it takes up as much data as the resolution of the UV Map is.
you can manually set the uvs for the baking tool
and its still hot garbage.
never seen or heard it work well or create a decent UV map
your better off manually creating one, to get the best result
that's the point I was trying to make you manually make one
and just a quick exaggerated example of what wasted space in a UV map could look like as 90% of the vram is not contributing to anything
well. the thing is. if your UV map is a 4096x4096. it will only take up as much Vram as the UV map takes. in this case compressed and everything it takes 16 MB of vram.
yes but you could get better utilisation of the 16 MB of vram with a good UV unwrap
like in the picture I posted you're not utilizing most of the 16 MB for actual stuff you see
no but that also doesn't matter to much. and simply making it take up most of the UV is better for quality true. but otherwise it does not matter
If you keep the texture 4k maybe, but if you have a uv like the one above then repositioning and scaling it to use the whole tile and swapping to a 512 texture that aligns with the new uvmap will give the same quality whilst using a fraction of the memory.
Even if your uvs only utilise a small piece of the whole tile, the hardware will still load the entire texture into memory. Thus you’re using unnecessary amounts of memory for something you’ll never see.
no a 512x512 texture will never give the same quality as a 4096x4096.
"but if you have a uv like the one above then repositioning and scaling it to use the whole tile and swapping to a 512 texture that aligns with the new uvmap"
you need to read the whole message fam
and i did lol. i guess we are on a missunderstanding again imao
Probably.
If you keep the same uvmap the 4k will always look better, but if you create a new uvmap that uses the whole tile then you can use a smaller texture but use the same number of pixels.
i know. thats the thing but also i hope no one does that lol.
wait, why not? what's the negative to using a smaller texture?
well i mean as i hope no one creates a big UV map and only uses half of it thats what i mean
i use between 512-4096 size textures.
oh that's super common
only one 4k
People use game rips like clothing from the sims but only 1 or 2 parts of the outfit so there's massive blank areas on the textures
that or people make models and don't know how to unwrap which is also pretty common
well yea.
any texture can be edited in your photo editor of choice whether thats photoshop, paint dot net, or fuckin windows paint if you're psychotic
it sounds like you're brand new to texturing so i would be weary of the UV map of your model
ever seen a diagram like this in a textbook when talking about map projections, about unwrapping an orange?
or diagrams of a cube unfolded?
every model you get will be cut up and laid as flat as possible in manners like this, and while some textures make it easy to see which part is which, it can be more difficult if you want to access key or small details or specific areas of, say, a coat or some other big uniform mesh
id learn just a little bit of blender so you can go in and export the UV layout of your models as a texture, you can also leave blender open as you work and turn on sync-select in order to find exact parts that you want to touch up
for example, here is the uv map for the clothes of a model i uh. still need to finish ;u; its a month late please do not yell at me
if i wanted to focus on specifically that group of comets i could just select them on the mdel itself and see which triangles get highlighted on its unfolded UV map to the left
although, if you take a closer look at the texture itself, you can see that its set up in a way that you can quickly identify which part is which, even to the point of being able to tell what is at the front and what is at the back or other various orientations based on the texture alone
most textures are detailed enough that you should be fine just doing your best guesses with trial and error to see what needs to be changed and what needs to be left alone, without ever having to access the UV map
booth and gumroad have the most VRChat specific stuff, but if you want general 3d assets there's plenty of gems on sketchfab, cgtrader, or deviantart if ur fuckin desperate
deviantart is the only guaranteed free option out of all of these by the way
yea i use booth a lot
thanks tho for all the info
🤔 highest i could get a quest avatar vram use was 129mb (1mat/4poly/10kb fbx -> 9.8mb total build size) 🔨 🐇
what was the texture tho and compression
sdk dont like when i use an avatar with 1 material but change it to higher - it will still report 1
lovely avatar
yeh i saw one in vrhcat that was a plane and 40k poly, was like um why so i made that 4 one
does increasing the size from the amount of material slots the model originally had actually do anything
like in the 3d engine it had materials in there assigned to polygon selection os
so what is new materials gonna be assigned to
I would think unity would at least be smart enough to see the material is using the same texture so maybe they can do some kind of optimizaiton there
not anything they can do about that?
no batching
nah it just go, okey this is different i guess
LOL
Does it have to be exactly 5000 tris for it to be used as a fallback?
It doesn't, it has to be at least good rating on both platforms
The Avatar Performance Ranking System allows you to see how much a user's avatar is affecting performance via analysis of the components on that user's avatar. You can also use it on yourself to see how performant your avatar is. This system is provided to inform users what is likely the most perfor...
From what I've read it's 7,500 polys/tris
Good is under 10000
Nice
Is reducing avatar texture size a good way to reduce download size/help the performance rank?
It won't have any effect on the rank of the model rn.
but yes, reducing the texture sizes and number will reduce download size and vram usage.
Cool, thanks.
texture size wont affect the rank yet. but it will in the future
I hope so
yus
i hope they find a way to do the same with shaders too
most models sure. but not all. i know alot of people who have around 20-30 mb of vram use only including my self
Shaders are a lot harder. Bar restricting it to a set of premade shaders there's not a whole lot that can be done.
yeah that's the problem, if unity doesn't have anything than can guess a shader's performance by amount of calculations and/or number of passes including grabpass then they'd have to do it themselves, but apart that reading asm shaders doesn't seem easy, ig they'd need agreements or licenses with directx.
for now i'll have all avatars limited to vrc whitelisted shaders (aka fallback shaders) it helped me a lot with performance
now i just need more ram sticks so my pc doesn't need to use virtual memory (that sometimes ends up crashing because of memory overload, caused by avatars with three digit mb memory usage)
I think the next large bottleneck for perfomance gains would be aninmators/layers/states. Large player instances start to cpu bottleneck me even with all medium avatars due to animator calcs.
Sadly, there isn't a huge amount of documentation on how to optimize animators and animator layers.
optimizing animations and layers and such can only really be done through by choosing bools over int whenever it can. etc otherwise it has to be done through coding. on vrc's side
that said animations are not heavy. they are baked changes.
if anything you need more Vram. ideally 8 gb of vram for vrchat is a minimum. in vr that is
yee, i only have like 6, it's terrible how i can run trackmania 2020, gta 5 and destiny 2 smoothly with no crashes but the content on vrchat has me at half my fps constantly and if i'm lucky i don't crash after some friend switches 10 avatars in a minute
I have seen some people testing the performance impact of animator layers and states. There is a performance impact to having too many layers, so condensing layers may be a good idea. The testing is still preliminary though.
that is a Vrchat issue then. but it also depends on how they have set the layers up and such
what kind of setup are you running?
oh god avatars with vrlens and other weird av3 experiments are hell
yeah but 99% of vrchat creators also aren't being paid 80k/year to make these assets and don't have higher ups threatening to drop them if they mess up
tbh. not optimizing avatars is just a weird thing. its super easy keeping them fast and easy.
you can post a 400k poly, 25 material model on gumroad for $50 and everyone who buys it won't care about the stats
keep polygons below 100k, keep material use to 4 and no lights etc
99% of avatars in vrc has far to many materials.
intel i5 8400, a 1060 (secondary) and 2060, both 6gb (ig only blender uses the 1060), 8 gb of ram (yea my pc has to use a vritual memory cuz of that)
ig a mid 2019 setup
8gb of ram is diff not ideal 😄
8gb ram theres your issue 🔨
thats gone instantly in vrchat , rest of the pc similar to my old but i had 32 and not really much issue
the 2060 can handle Vr decently but yea diff not gonna be doing well in vr
obviously, but if people are dedicated to make a world or avatar they can at least keep in mind the performance cost of what they use, optimization is very important for realime graphics, and as i said various times, unity is a game engine not a rendering engine
I'm sitting 32gb ram in vrc, still using like 28gb after playing an hour in publics
let me guess you show everyone? cause i rarely get to even 16gb used after 10 + hours in public
ik ik, the first thing i'll get when i save up money i'll get higher memory and higher quality sticks, like 2x16gb or something that doesn't make my pc need to use my main drive as a ram storage. for now i'll be cautious with my cache
A lot of people sell and don't play. They sell models that look how people want and the performance cost will never affect them. A lot of the bigger models come out through that situation.
Problem continues because the average joe doesn't know anything about costs
alot of people just don't wanna bother with it. even if its litterly a simple click or two and your avatar runs a crap ton better lol
I'm keeping it to like 5-10 people shown, 5m max distance. In the rare occasions I'm online I'm in groups where people will cycle through; triple digits type moments
Oo. there is something else going on with your system then. cause that amount of ram is eh wierd.
when they don't know i do my best to tell them what alternatives they can use or what quick steps they have to do to make it better, tho i've seem some others that have seen in my sight "my avatar is poorly performant but fuck the people" or they just don't want to, and in most cases that people complains to me that i don't see their avatar
ideally i would want to show all 40-80 people in a instance without my frames dropping below 20. but that requires everyone to be good rated or close to good rated.
hence the 50 mb vram that vrc suggested is fine. cause 50x40 or 50x80 is 2-4gb for avatars.
and getting to 50mb is easy AF while keeping a good level of detail
there should be some kind of lod system for shaders, well there is an lod keyword but i'm not sure how does it affect the shader apart from specifying how performant they are
eh. LOD still requires more memory. because it has to store each variant of the reduced amount of what ever it is.
more memory for being more performant at distance?
brutal trade off
I've seen some models that run a pseudo LoD through Particle drivers/Contacts
well a avatar LOD system would still be less performance than the current Avatar distance hiding
you're still having to do like Network ik stuff even with a PlayStation 1 Quality Avatar
depends on the other LOD. but it could be between whatever amount it requires.
and then suddenly you would run out of memory
yea it's more for performance other than memory, but it won't really have a strong impact since shaders obviously get rendered faster the less pixels have to be rasterized (not taking in mind the vertex shaders)
What would help would be for people to use shaders that only do what they need to do, like if you want an unlit object, don't use a long pbr shader but just an unlit one, but that's more complex
well yea. because the hiding just hides them. removes it from view etc. a lod will not solve avatar issues at all
Has anyone switched to a jawbone vs using blendshapes and checked the difference in mesh data size?
I'm trying to remove another 600kb. My texture memory is 0.04mb and I can't figure out how to get my filesize under 1mb (currently ~1500kb)
From my understanding of shaders so far, it only compiles used parts of the shader. I have checked using vrchat mobile shaders, different versions of poi and another realistic shader and found the difference to be under 200kb after compilation. It's hard to gauge with 3 sig figs.
I can't think of any other route other than making sure there's no extras in the inspector. Are there any defaults in gestures, layers expressions and menu stuff that are better being zeroed than left default.
Also I assume the avatar picture/vrcam is part of the filesize, are they all a set resolution or can that be messed with too?
when you get that low. it does not matter.
I'm so close.
I want to call my wolfboy kilobyte just to rub it in.
I'm thinking of doing a rebuild for
in blender cause I need to 117 bones -> 75 bones and 69,999 polys - 31,999 polys.
That could cut my mesh data in half but I don't think polys alone count for 600kb. That would be 1-2 days of work and no closer.
Also I'm trying to understand the logic of why the file size is smaller with 2 skinned meshes vs 1 skinned mesh.
I had someone kind of explain this quirk to me but I can't find the theory on it anywhere.
Shape keys cost is exponential
So I should do like 3 custom shape keys for visemes instead of having over a dozen preloaded ones?
I also wonder how much data my blink/eyelook takes up.
I feel like that would take away from the avatar to not have that though.
The listed amount of keys isnt an issue
I can live with a floppy jawbone.
I just don't know if this change is going to yield 600kb
And I'm avoiding having to rebuild everything
If it has 1 shape key is the same as having 300, but the more verts in a skinned mesh will balloon the size
In terms of filesize?
Size, cost, pretty much everything isnt linear
I wish there was like a table that showed the default breakdowns of the default components and cost.
Especially in the inspector. (A breakdown in mb of each part of the component)
Instead of learning how to do legacy jawbone stuff inorder to see the cost difference.
Even my shader gives me readouts on the input textures for texture memory.
And I can just look at the texture filesize at each resolution for the overall cost in filesize.
I guess some things you won't know till after compiling, I'd like to see though where in the file post compilation I'm using the most memory.
cobs edit streak: x3
after 65,535 vertices in a mesh, Unity needs to use 32 bit index values rather than 16 bit, increasing the file size
im gonna test that so i can get some solid statistics for you guys 0.0
its one of my like 10 hypotheses
well for quest anyway im not sure if quest can use 32bit past 65k verts or 16bit unsigned
Thank-you, giving me those numbers/values think I found a discussion somewhere else on this exact concept.
So what happens (I think) when a single mesh (using 1 material and a 1k texture) renderer is over 65,535 verts, it switches to rendering in 32 bit index values.
yep
I thought it sub divides this into two 16 bit indices?
Unity used to do this in older versions, but Unity 2019 uses a bigger buffer instead, less draw calls that way.
I bet the reason VRChat put the Good through Poor polycount limit at 70k to begin with was because of the mesh splitting Unity did back then.
I see, it's hard to google search 2022 relevant info. I have been using the search function here instead. I am just going to rebuild. Almost at 75 bones and got triangles down to 65.5k and vertices to 34.1k
@undone cradle I got a weird question with blender itself. I can't figure out how to turn 3 bones into 1 and keep the weights. I have just been connecting hair bones to root and dissolving.
The CATS functions work as intended but I want to use Alt+M
Alt+M is split vertices?
Doesn't seem to do anything in bone editing, really.
Are you using Blender 2.79 by any chance?
nvm, looking at docs it seems like it should do merging
but it also says the merge option should be in this drop-down, and it's not there. 🤔
ah, this is why! xD
lemme find a 2.8+ alternative
not quite as simple, but I'll test it
Ah, I am in 2.91.0. I didn't realize it is this picky with plugins, key bindings and what you can do version to version.
I had this issue trying to use a retopology plugin.
oh boy the vertex mix method is pain. xD
might as well redo the weight painting unless it's just one bone you need to merge.
Which version allows you to weight paint in pose mode? This would greatly speed up this suffering switching back and forth.
Doesn't Cats have Merge to Active which merges all selected bones to the last selected bone including weights?
Probably, Idk I avoid relying on CATS too much.
It isn't exactly being updated much any more.
Yes you can merge weights say 3 bones in the ear and root, you can basically just use CATS but the bone length might be an issue when I apply the physbones in unity. (it is much shorter) I think the work around will be just increase radius and height later in unity?
True, I don't use the bleeding edge version of blender. Forever 2.93.1
Cats starts having issues in the 3's iirc
I'ma stick to my 2's
Huh, this toolset has a merge bones tool.
https://mrven.gumroad.com/l/hPXIh
UPDATE Asset Creation Toolset 3.2 (Blender 3.1 and higher) (15 April, 2022):[New][Create Palette Texture] Baking PBR Palettes. Now you can bake Color, Roughness, Metallic, Emission and Alpha from Principled BSDF[New]Export FBX/OBJ] OBJ Export Support[New]Export FBX/OBJ] Triangulate meshes before Export[Improvement][Obj Name -> Data Name] "Obj Na...
so the two bones merge and delete into earL(and transfer weight to here) and thats parented to root.
yep, I have to use version 0.19.1-dev to have it work in 3.0.1.
I also learned yesterday that I might need to buy/learn substance painter after trying to generate normals from a texture (definitely not optimal) in materialize.
This way I can lower texture resolution but preserve details with normals. Currently it is just monkey'd.
is there existing cutout shader for quest? i have some eyelashes what they need have it bc its straigh plane mesh. i tried mobile particle but vrchat manager says that i cant use it even when its in mobile shader.
any ideas?
no, any kind of transparency is not allowed on quest avatars
mobile GPUs work differently and transparency is more taxing
you'll need to cut it out in mesh in blender
either that or have them painted on the face texture
ohh ok thank you
I am a bit grumble that if I try to save on components by putting the physroot for my ears on my head bone, the system counts the ignored head bone, and the eyebones and jaw bone which are all on the ignore list as physbones
Create a empty gameobject and put the ear bones under it, then have the physbone script on that empty gameobject, seems to work fine, but not sure if there is any downside.
If I do that, I'd have to split the armatures for the ears away from the main body which means putting the ears on a different skinned mesh which also violates the good rating
No, fairly sure you can just move the ear bones to be children of the empty gameobject (that is sitting under your head bone).
That is what I did for my hoodie strings and it worked, Ignoring collisions.
You can't move bones in Unity though, that breaks the prefab
Why does it need to be a prefab?
not unpacking the avatar is crucial if you want to be able to easily update the FBX
Guess I do things inefficiently then, I just use pumpkin tools.
Shall remember that though, not often I setup much with my avatar in Unity.
Hmm... seems its counting _end bones too so I think I'm screwed eitherway and will just need to disable my wing dynamics for the fallback version
@quiet grail you can remove the end bones and just use an end offset on the physbones
@stray tangle how do I remove the end bones?
blender
they don't exist in Beldner
Blender
oh wait, do you mean unchecking the 'leaf' option?
you can remove the leaf bones in unity. by opening up the fbx in unity and just remove all end bones. this will make a new variant of the prefab.
Both of these options just caused me issues so I've just left things be for now
what kind of issues are you having?
I don't want to do anything that would break the avatar if I unpack the FBX, and removing leaf bones still doesn't fix everything. Plus my idea of putting the thing on my head bone didn't work as now I can't bend my head up and down any more only side to side.
what exactly are you doing? unpacking a fbx wont break anything. it just makes a variant of the fbx, and any changes to it wont affect the actual prefab
right click head bone -> create empty, drag ear bones onto new empty. If you remove end bones set an end length in the phys bone script
that wont do anything.
it will always count the total amount of affected bones. even if you setup the ignore bones.
retest, look for if the last simulated bone moves and if its counted. You got circa dynamic bone intel
what are the best texture settings for reducing megabyte count on an avatar?
Lower Max size, but here, brings some things together on the subject
https://www.poiyomi.com/blog/2022-10-17-texture-optimization
Tips and guidelines for optimizing texture memory and filesize for VRChat creation.
yippee, PolyCount Optimizing!
- First: less than 7500 tris (Good Quality)
- Second: 33k tris (VeryPoor Quality)
Dont use 8k textures, use High quality compression, and keep it to max 4 materials. with max one 4k material and rest below that
Got my hands on the official crewmate model from Among Us VR and uploaded it publicly
If you don't need high quality, normal quality compression (with no alpha transparency) will be half the size of high quality compression. If you have transparency, go for high compression.
thats not exactly true. it wont be half the size. and it's not always going to be larger either. majority of the time it will be the same size
normal quality compression uses DXT1 compression if there is no alpha. DXT1 has 4 bits per pixel (bpp). If there is an alpha channel normal quality uses DXT5 compression, which has 8 bbp. This is the same bpp as BC7 (used in the high quality compression). For the same size image DXT1 will be half the size of BC7/DXT5.
I am not taking into account crunch compression which will alter the filesize (but not VRAM size) of DXT1/5 compressed images.
On an additional note, if your texture has an alpha channel you should almost always use high quality compression if you prefer quality. BC7 works much better than DXT5 at preventing artifacting and has the same VRAM size/impact. The main downside of BC7 is that it does not work with crunch compression so filesize will always match VRAM usage.
true but in most cases textures has a alpha going on to.
depending on your use case you can turn off the alpha in the texture import settings.
you can also force DXT1 compression in the PC only settings.
My main use case is when I'm combining non-transparent and transparent materials. non-transparent materials don't need the alpha channel on their textures so I can use DXT1 to cut it's size down.
yep yep-..
@lucid burrow useful texture size optimizing info here
This vert/filesize table is pretty accurate.
Already figured out how to get texture memory under 1mb.
kinda useless since the majority of the data is in a considerably higher magnitude range than your avarage polymoddeled avatar
unless you are using it with sculpts
especially if u want less than 1mb
u jus better of knowing less verts less size done lol
Keep in mind that reducing the resolution 1 level (1024 to 512 for example) will have a much greater impact than changing the compression algorithm.
I personally reduce texture resolution until I can't stand the difference in quality. Then I check how different compression types further affect the quality. Sometimes I have to test different resolutions and compression types to find the best compromise between size and quality.
I would also note compression settings don't do anything for vram usage just download size
false. it reduces vram use by a factor of 4 typically. so a 4k is 64 mb of vram but with compression on low-high it reduces it to 16mb. and even further with no alpha
What you are referring to is crunch compression which is additional compression that affects the download size only^. I am referring to compression formats. These are what unity uses to convert your imported images into formats suitable for games and is what determines the VRAM usage of a texture.
I will admit that my previous messages may have not been clear and concise in the wording used.
(^ can also affect quality)
Useful unity pages on textures, texture formats, and compression that I look at often.
Main Information Page
https://docs.unity3d.com/Manual/texture-compression-formats.html
Page of Useful Tables on Formats
https://docs.unity3d.com/Manual/class-TextureImporterOverride.html
Yes. I ended up using 4k then applying 1k in unity and some compression. Then I use 512 compressed masks for the emission layers instead of having 4-8 different materials.
This gave best results for a optimized hue shifting audiolink
Only after doing this, it gave me the idea to make a single black/white mask for emission layers and use the image texture offset for the emission layer section I want to light up. I kind of want to try flipbook but zero will to remake the UV's again for this to work. I might see if this can just be done with gradients.
it's not wise to make a 4k and then reduce it to 1k. your losing alot of details that way. it's better to just output it as a 1k and then compress it
Thanks, I have been experimenting a bit but haven't had time to compare in game. I'll give that a try.
When altering texture size, try different resizing algorithms if the program you are using allows you to. They usually have different names in different programs inside their image resizing windows. Unity calls it "resize algorithm", GIMP calls it "interpolation", and photoshop calls it "resample image".
even then it's not advised. texture quality gets lost.
yeah, I'm just giving tips for people who have higher resolution textures. Most people already have the 2-4k textures and want to reduce their size. Reducing resolution will always result in some loss of quality, you are literally removing 75% of the pixels when cutting the resolution in half.
The ideal practice is to remake the texture in the lower resolution to ensure all the details you want are there. But since most people already have high res textures that they don't want to remake; their only options is texture resizing
mhm. obviously something like Substance painter works well with resize.
yeah, not sure how substance handles the change in resolution on texture export. It probably some sort of algorithm sampling and blending of the high res texture that heavily focuses on minimizing loss of detail.
A surprising number of avatar creators I have talked to don't use substance and instead retexture in photoshop, so the resizing tips should be helpful.
you can achieve Good with 10 000 tris too these days. 😅
I use Substance, but if there was a decent alternative I'd jump so fast. xD
Quixel Mixer and ArmorPaint just don't cut it. 😩
Sad times when Adobe buys all the good stuff.
Not really an argument for the Photoshop users though, they're already paying Adobe for that. 😂
Affinity Photo and Krita are neat alternatives for that kind of texturing I'd say.
photoshop is garbage for it ngl. the best one out there is substance.
Hi there, making my first custom model here. I'm trying to go about having toggleable outfits. Would like to know if hidden cloth meshes still count towards the overall polycount? My base model is under 70k, but will exceed if hidden meshes counts. Thanks in advanced.
Everything counts even if it's hidden, else people would upload with the meshes disabled and have a 0 polygon model that is actually 500k
Ahh I see, looks like I have no choice but to re-optimize everything. Thanks for replying!
worry more about to many materials. then poly. however i would still keep it to max 70k polygons
try to keep max 8 mats preferable 4 max
Does adding a root transform actually helps anything? Because I noticed it just takes the bone with the component as the default root so what is the point on specifying the root then?
If it works anyway
the point is if you want the script to be somewhere else instead of directly on the bone
for example, for organizing all the physbones under empty gameobjects
I get that but why would someone do that instead of just placing the component on the target object?
it's cleaner, and technically more safe
if you change the parenting of the bones in blender and re-export, the physbones will be gone
but by having them not on the actual bone, it's safe
Thank you for the advice. I got mine at 7 but will try to reduce to 4 if I can 🙂
should be easy if you atlas
With the changes to masking on the Fx controller, if you had the component on a tail bone which you also wished to control the bone rotations of, you'd have to mask that object for both Gesture and Fx. This doesn't work anymore as Fx effectively overwrites Gesture leaving you with component control but not transform control. Having the component on another object with the root set would allow you control over both.
First example that I could think of
Hey so does using Photoshop files on materials actually lower vram usage? I accidentally saved my texture in .psd and that was the only thing that changed and according to the performance information in-game vram size dropped by 10mb almost perfectly matching the file size drop on the texture file.
I was under the impression unity converted all the textures to their own file format???
(ping me if you respond so I can see it)
I highly doubt it does, need more information
Will test more tomorrow.
But like... I changed nothing else. Super odd since unity outputs the same file type anyhow..
I honestly think the performance information thingy bugged out or something
no psd files does not lower vram use. it ends up as the same file in unity regardless
All textures will be converted to the same format in unity, if you have a 32kb 512x512 texture and a 16mb texture with the same resolution, if they both have the same import settings, it will use the same amount of memory in game
That format is specifically DirectDraw Surface (DDS)
It's a format that makes rasterizing textures faster
I converted my .png textures to .jpeg + crunch compression in unity and the texture memory went really low.
I downscaled my textures I was using on something else from 4k to 1k using an ai tool.
Got really good results.
I think I can de-saturate the image and use a smaller cross section of the pattern then use the shader for colours.
basically there's no point to the jpeg step of your process as as Unity compression can take care of file size compression
Jpeg is lower quality by default. cause it holds less data then Png since jpg cant have transparency and also just in general jpq contains less clarity and color.
Yee it's better to use png since jpeg basically converts your image into blocks of 2D waveforms, making it look bad compared to png, and both will use the same size when converted by unity.
And crunch compression is basically making your download size lower at the cost of losing a lot of image data so i don't recommend it a lot
So I’m probably going to want to optimize my avatar at some point, at a minimum so there is some way for quest users to see at least a fall back version.
My base avatar is currently made of 4 meshes: The main body, the face, some funny cross plane mesh on the top that creates an illusion of a 3D glow, and a ground shadow. 3 of these are identified as “skinned” meshes, and I’ve heard that these can be merged to increase performance.
Issue is that 2 of these use varying textured materials that ether have different materials for different expressions (face) or have separate shaders (cross plane). The latter I could live without if I can’t use additive to remove the parts of the texture that’s supposed to be removed, but the former is impossible to remove without making my avatar headless (might be funny tbh). Would I be able to retain the ability to swap materials for the face while having separate shaders for different parts, or am I going to need to get rid of certain things to get this to work?
Ps: I’ve never merged anything in unity or blender yet.
merge them in blender. and create a texture atlas. or keep 4 seperate materials. best case is 1 material
merging meshes is easy and should have been done a while ago anyway, a single mesh can still have multiple materials on it so your avatar functionality would be near identical. the only time you should avoid combining everything, apart from having a super showy avatar with a lot of props on it that you re-use, is if your avatar is approaching the PC triangle limit of 70k and uses shape keys. in that case you isolate the parts using shape keys (which is the face most of the time) because the performance cost of them tends to outweigh the extra drawcall
your specific circumstances are interesting, but thats kind of expected since optimization is more of a case-by-case basis. you have tools that you'll reuse again like combining everything, using shape keys for certain toggles, atlasing as much as possible, but what you apply them on will vary
id like to see a picture of your avatar so i could get a clearer idea of what you were doing
id say for ease of use and also to keep texture memory low, your best bet would be to batch everything down into one mesh and then have two materials, a single atlas for your entire avatar and a separate material which has only the face texture, which you can easily animate and swap as you desire
you might need to drop the 3d glow if it has any alpha/transparent FX since you cant have transparency on VRC quest
you can keep the shadow if youre willing to make it completely flat / non transparent, only because i think it would look better than a solid emission for glow
Sure, here is what it looks like. Its from a 3ds game, so I'm trying to replicate the style as much as possible. I think the face mesh actually uses a face atlas, so if I could figure out how to merge it with the body texture I'd be good to go there. The only other issue is the light and the shadow, which shouldn't have the same shades as the rest of the body, although I might not care about ether if the effects they're using count as transparent. I'm not sure what counts as transparent, but the shadow uses transclipping, and the light uses additive.
Poly count is a non issue in this case, apart from making it harder to bend stuff.
There are 4 skinned meshes here, which confuses me since there should be 5; the lights, the face, the body, the shadow, and the prop.
Downscaling to a lower resolution helps a lot (since each resolution step is x^4). But using normal quality or crunch compression does not reduce the VRAM. It only reduces the download size.
You can often get away with 100 quality crunch compression and still drastically reduce the size while maintaining great quality, which is good because it reduces download size. But it does nothing to help texture memory.
If you want to maintain/increase effective resolution, you can try to redo the UV maps, but that's a lot of work.
In my case, I had an avatar where the eye's pupils only took up about 5-10% of the entire texture, and there were two of them. I was able to remap them so they overlap and fill the max bounds of the texture. I was able to go from a 2K texture to a 512 texture and get better effective resolution, while reducing VRAM usage 16 fold.
I got my avatar to 560kb download size and 40kb of texture memory.
Oh holy crap 😂
🤣
What are you using, like 128x128 textures or something? Or maybe non-alpha textures?
1 material, use of shaders. It was hard preserving face detail.
Ah, I see. Well that's awesome anyways.
Skin has very little tone, much is being relied on the shader. Clothes black and white hair. Edit the UV's alittle and get to like 25k polys and yeah 🤷♂️
I found the bone sacrifice from
-
more difficult.
Sorry for the necro ping, but what are you using that shows the texture memory in unity? This would be useful to have
yeah
Contribute to Thryrallo/VRCAvatarTools development by creating an account on GitHub.
Very much depends on the blendshape / drawcall. and what they do. a drawcall is always considered to be the worse of them both in this case as in vrc the amount of drawcalls is far higher than the amount of constantly changing blendshapes. in most case with 40-50 people in a world your looking at a minimum of 1000 drawcalls every single frame if you show everyone. where as the amount of animated blendshapes is often far below that i even bet that the amount of animated blendshapes you find is almost 0. and even then i find it hard pressed to believe otherwise as there is no need for animated blendshapes in general.
eh no. Crunch compression only affects download size. but using normal or high or low quality compression affects Vram depending on if you have a alpha or not.
Between High and Normal quality, even with crunch compression, I have not observed a difference in VRAM size (as far as I could tell). With Low Quality, maybe, I haven't tested that
you need to turn off Alpha when importing to unity. and use normal quality. it will reduce it by half. typically
so a 4k with no alpha and normal quality goes down to 8 mb while high quality stays on 16 mb.
I'll have to test that. I do use PNGs but they are typically 24-bit, which does not include an alpha channel. I find it strange that it would cut in half and not 25%, since alpha is only one of four channels
i use Png only
thanks
well it's because with no alpha and normal quality it compresses it to 4 bits rather then 8 bits. as it does with high quality.
Wow, I am shocked. Thanks for that tip. This is insane. I wonder how many people are running alpha textures because that's the default export type from Photoshop/Blender
The texture import settings do be having a lot of fun buttons
Well this did require me to re-export the file from Photoshop without the alpha channel. I'll need to look into an easier way to do that without the need of photoshop
Alpha source, set it to none and on normal quality it culls the alpha channel.
oh, well I'll be damned 😂
thanks
And while we're here I guess: Is there anything in general I can do to reduce the Mesh size? I am surprised this is so large
remove blendshapes / poly / seperate mesh that has them - slightly lowers it
- remove useless vertex colors/UVMaps/vertex groups/shape keys
- see if any mesh is above 65,536 vertices. if so, Unity can't use 16 bit indices anymore and needs to use 32 bit indices, which increases file size
I see, thanks
for better real world performance, you can make the head its own mesh, remove the shape keys from the body, and use custom normals to blend the seam
there are always tradoffs, and in the case of VRC you need to balance real world performance and SDK performance stats
Would there not be an extra draw call from having the head as a separate mesh? Or is the extra draw call less of an impact than the blendshapes and what not?
it would be an extra drawcall, but it's possible that the performance would be better than the impact of the blendshapes
I saw someone mention that by disabling Tangents in the import setting, you can reduce the CPU impact of blendshapes to an almost negligible point. however, doing so means you won't be able to use normal maps, which is a pretty big deal
blendshapes impact is far lower then extra drawcalls. and a seperated mesh wont just generate one extra drawcall. in most cases your taking about 4 + drawcalls. and ontop of that you then need to anchor it to the body. plus the small amount of blendshapes he likely has will not improve performance if removed.
dont seperate it. blendshapes barely increase the total vram use. i removed like 20 ish unused blendshapes and it only went down by 1 mb
I don't know how many blendshapes they have so it's kinda hard to know what the actual impact would be. if they had a higher poly mesh, blendshapes would have a bigger impact
will instantly become 
