#avatar-optimization

1 messages · Page 3 of 1

buoyant holly
#

this wouldn't help with the triangle count but might help with the material and mesh Total

#

a helpful blender tool that might could handle the triangle count and material reduction

heady smelt
#

i have 34 textures but only 10 of them are unique help

buoyant holly
#

I suppose you could override the Redundant materials with materials that have the same texture?

heady smelt
#

ok

#

how do i do that

buoyant holly
#

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

heady smelt
#

ok

tribal dagger
#

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?

stray tangle
#

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

tribal dagger
#

so can i like use the same material on multiple different clothing?

stray tangle
#

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

tribal dagger
#

oh, dammit

#

so if i want a toggleable hat and shoes then it will allways be 2 material slot

stray tangle
#

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

tribal dagger
#

thanks

#

it would be cool if you could just connect your clothing set to the skeleton and it could just use one mesh

stray tangle
#

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

tribal dagger
stray tangle
#

yea you can do that

tribal dagger
#

okay, i need to learn how to do that

stray tangle
#

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

tribal dagger
stray tangle
#

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

tribal dagger
#

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

stray tangle
#

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

tribal dagger
#

okay so where do you put the complete set on the hierarchy? until now i put every different armor part on separate body parts

stray tangle
#

that is a really terrible way of doing it

#

you should be adding your outfit in blender first of all

tribal dagger
#

yea first thing i do when i start my new avatar

stray tangle
#

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

tribal dagger
#

i see, i need to learn how to use blender better, i was more familiar with unity

stray tangle
#

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?

tribal dagger
#

ye

#

-.-

stray tangle
#

send it via DM so I can see what it is

tidal sun
#

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?

ivory sluice
#

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

novel veldt
#

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?

ivory sluice
#

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

undone cradle
hollow root
#

Just look at this reply by d4rkcod3r

hollow root
#

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!!!!!

buoyant holly
ivory yew
hollow root
ivory yew
hollow root
chilly sigil
#

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.

mystic crescent
#

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.

radiant shadow
#

nah thats fine, if you used anystate for all those, it would be bad

woeful pecan
#

Is it better to have 1 large texture or several small ones for optimization?

buoyant holly
#

1 large texture because each extra material initiates another draw call

woeful pecan
#

Thanks.

buoyant holly
#

which is why the recommendations tend to be stuff everything into texture atlases

woeful pecan
#

Would you mind explaining how texture atlases work?

buoyant holly
#

you just stuff all the individual textures into one big texture and rearrange the uvs to fit

zealous wigeon
#

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).

woeful pecan
#

Ah, the usual then. I manually UV map my stuff to stack similar shells for higher optimized detailing.

radiant shadow
#

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

buoyant holly
#

on Quest I would definitely make sure to make your atlas vram efficient as going over the vram limit crashes the quest

woeful pecan
#

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.

zealous wigeon
#

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.

midnight sky
#

what does this mean.

#

i went into blender and deleted some bones

#

it didnt change at all

misty kite
#

hi! im making her quest atm, how do i fix this? (the hair NOT the pink)

misty kite
#

itll fix it

thick fable
#

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)

buoyant holly
#

you need to make the Avatar physically smaller as it's like 6 meters tall

thick fable
#

Where can I change the size in unity?

buoyant holly
#

in the transforms in the inspector

thick fable
#

Is this too small? I want to keep around average human height

buoyant holly
#

an average human is like one and a half or two Unity cubes tall if it helps

thick fable
#

so around 0.4 would be human sized?

buoyant holly
#

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

thick fable
#

alright thank you!

buoyant holly
#

and after that the avatari should be medium ranked

thick fable
#

yeah its good now

misty kite
ivory yew
onyx harness
misty kite
#

really? it was fine on the pc version
how do i do that?

onyx harness
misty kite
#

ahh

onyx harness
#

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

misty kite
#

thank you!

mystic crescent
#

@buoyant holly @thick fable Isn't a Unity cube, 1 meter tall?

buoyant holly
#

which is why two of them stacked on top of each other is it pretty good scale reference

undone cradle
outer cape
#

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

buoyant holly
glad hazel
#

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?

buoyant holly
#

you'd probably want to be doing stuff like merging meshes in blender

stray tangle
glad hazel
#

ok thank you!

tough lark
#

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

buoyant holly
#

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

spiral kettle
#

if combining materials and atlasing textures is so important, then why don't modelers on booth ever do it?

proper grail
#

To sell you an incomplete model for easier customization?

#

most are not game ready

solid crescent
# spiral kettle if combining materials and atlasing textures is so important, then why don't mod...

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.

buoyant holly
#

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

onyx harness
#

so less effort for the same income? easy choice for people

ivory sluice
#

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

onyx harness
#

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.

ivory sluice
#

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

hollow root
#

Imported FBX vroid file and and got solid pink, what do I do?

hollow root
#

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

hollow root
#

I have a question, Do you have to use Material combiner before you bake avatar, or You can use Bake instead of Material Combiner ?

ivory sluice
# hollow root

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

ivory sluice
ivory sluice
ivory sluice
# hollow root I have a question, Do you have to use Material combiner before you bake avatar, ...

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

buoyant holly
#

what they were referring to by bake

zealous wigeon
#

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)

ivory sluice
#

yee
does it have any thing that makes them different from other bases?

hollow root
#

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

buoyant holly
#

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...

▶ Play video
hollow root
buoyant holly
#

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

tardy nexus
#

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.

proper grail
#

Yeah, the idea is to keep any mesh using shape keys under ~20k tris.

undone cradle
#

2.8-2.93 are definitely better suited though.

fossil blaze
#

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.

ivory sluice
#

how many textures are you using and what resolution?

buoyant holly
fossil blaze
ivory sluice
#

350k º.º

fossil blaze
#

i dont get why

#

it's the simplest thing

#

like i dont get why there are so many damn polys

buoyant holly
#

you could probably bake that fishnet into the leg texture

#

can you show us the wire frame

fossil blaze
buoyant holly
#

give me a sec to open Unity to take a screenshot

ivory sluice
#

yea wireframe mesh leggings and warmers are easy but extremely vertex intensive

buoyant holly
#

that would be horrible if that was all geometry

fossil blaze
#

deleting the fishnets take off 100k polys.... wtf...

buoyant holly
fossil blaze
buoyant holly
#

oh dear it's the worst kind of leggings

ivory sluice
#

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

fossil blaze
#

thats so fucked

ivory sluice
#

and as it can be expected, whoever made the clothing went straight to marvelous and forgot what retopology is

buoyant holly
#

this Avatar is going to have to go in blender to fix

fossil blaze
buoyant holly
#

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

fossil blaze
#

i wasted so much time vrcTupCry

buoyant holly
#

yeah unfortunately a lot of Western made anime avatars are like horrendously put together

ivory sluice
#

sadly a lot of bases of this kind is just sculpts without retopology and things that are done in ways that shouldn't

fossil blaze
#

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

buoyant holly
#

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

grave sage
#

its saying avatar is poor performance, even tho its under 32k polygons and all other stats are excellent and good?

ivory sluice
#

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

grave sage
#

for pc limits it says being below 32k polys should give an excellent rating tho, right?

ivory sluice
#

You're right, now that i see it your platform is windows but it's ranking it as android

grave sage
#

yeah, thats what i thought

#

so i was like ????

#

i tried reloading the sdk but it still pops up as that

ivory sluice
#

I don't think anything will happen if you upload it, perhaps the in game ranking system will correct it

grave sage
#

ah okay

#

ty ty

ivory sluice
#

Yw yw

grave sage
#

just quit out of unity and reloaded it and now its fixed

#

dsjfmlskd

pseudo obsidian
#

Unity be like screeching dumb noises sometimes.

tulip rose
#

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.

grand palm
#

What can I atlas here? What shouldn't break anything?

high sluice
#

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

cyan plaza
#

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

cyan plaza
#

ooh nvm, figured out how to delete bones !!

dusk vortex
#

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?

buoyant holly
#

any texture compression does nothing to how much texture memory it takes up

dusk vortex
#

Uncompressed even it shouldn't be taking up 2.8 gb

#

these are low variance 2k textures

buoyant holly
#

okay yeah that is a bit odd

dusk vortex
#

and only a few, at that. Most of that material data has empty texture slots.

buoyant holly
#

was just checking in case you had like a kajillion 8K textures you crunched compress the heck out of

dusk vortex
#

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.

undone cradle
#

Patch notes:

  • Fix integer overflow in Avatar VRAM calculation

Someone made an avatar with over 4.3GB texture memory usage? 😂
Shame!

marble rain
cyan plaza
#

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)

stray tangle
#

metallics/normal/AO can typically all be lower res than the albedo

marble rain
cyan plaza
#

the atlas tab says its not downloaded and the download link doesn't work

marble rain
# dusk vortex nope.

thats a massive amount of vram. i suspect if its not textures its the actual body it self.

marble rain
cyan plaza
#

oo! ok, thank you so much

marble rain
#

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

dusk vortex
#

It won't be getting much smaller than that, size wise.

median wharf
#

any of you guys know any good atlas tool outside cats. I just wanna learn alternatives

stray tangle
#

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

median wharf
#

im already baking my stuff

#

its more about learning other alternatives

buoyant holly
#

at this point baking is pretty much the best approach can do as you can get a lot more texture efficiency

median wharf
#

aaaaa

buoyant holly
#

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

median wharf
#

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

stray tangle
#

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

buoyant holly
#

but there's not really any way to simplify it anymore than like cats bake

median wharf
#

well there is that

#

and it is way faster

#

(i mean to load)

#

(gift from thulen from half a year ago )

buoyant holly
#

your video is only showing baking a diffuse texture

#

whereas the cats baked can handle a full PBR texture set in one click

median wharf
#

last time i used cats baking, the spacing were always to big to my taste, but maybe i missused it

buoyant holly
#

you can provide your own UV unwrap for cats bake

median wharf
#

oh didnt know

buoyant holly
#

"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."

median wharf
#

will need to try that way eventually.

marble rain
# stray tangle or use CATS Bake, not Atlas

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.

stray tangle
#

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

radiant shadow
#

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

stray tangle
#

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

marble rain
# stray tangle what? Bake also generates a new UV map, but actually packs the islands instead o...

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.

marble rain
median wharf
marble rain
median wharf
#

well atlasing is good in that case.

marble rain
#

its always good.

median wharf
#

it isnt

marble rain
#

it is

#

more materials = more draw calls. aka more resources used.

median wharf
#

okay, let me precise

marble rain
#

Atlas purpose is to reduce the draw call to a minimum while maintaining the details and lower size

median wharf
#

when you trying to reduce the amount of texture/material, atlasing isnt always the best option

marble rain
#

it is lol

#

the only way to reduce material usage is litterly a atlas.

median wharf
#

I don't think its going anywhere sorry

marble rain
#

huh

#

then do tell me the way. cause you have a special solution in that case

median wharf
#

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

marble rain
#

to many textures is rarely a case lol

median wharf
#

like explained before you come here

marble rain
#

if you have 40 materials your doing something extreamly wrong lol

median wharf
#

to me if you reach an avatar with 300mb , you will have to do sacrifice if you going to atlas to stay green.

marble rain
#

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

median wharf
#

my avatar is using 8mb right now

marble rain
#

are you looking at download size?

median wharf
#

nope

marble rain
#

i could easily reduce mine to that but textures would be low resolution

median wharf
marble rain
#

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

median wharf
marble rain
#

i guess that was in the beta.

median wharf
#

rindo test uv being an audiolink layer

marble rain
#

mhm

median wharf
#

this wasnt in the beta , but i can go look on the beta give me a sec

marble rain
#

no mine was

#

it showed wrong in the beta but i guess that was corrected

median wharf
#

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

marble rain
#

there is no need to go that low in texture size but the body size is fairly high

median wharf
#

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.

marble rain
#

as long as you kinda stay around 40-50 mb

median wharf
#

it was really not satisfied by the result

marble rain
#

optimizing for quest can be horrible.

#

even if you do atlases etc

median wharf
#

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

marble rain
#

yea. even 15k is kinda stretching it lol

#

for some models

robust valley
#

hey can someone point me to a video on making multiple atlas without using CATS?

stray tangle
#

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

robust valley
#

So what about the other maps? I assume just scale the same ratio right?

stray tangle
#

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

robust valley
#

thanks I forgot the whole process and needed a refresher

marble rain
marble rain
stray tangle
#

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

ivory sluice
#

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

stray tangle
#

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

marble rain
ivory sluice
#

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.

marble rain
ivory sluice
#

Well that depends on the shader they're using

buoyant holly
#

like if the Anime Avatar has medals that react to the lighting they're technically using PBR

ivory sluice
#

What would be a non pbr shader now that i think about it?

buoyant holly
#

well Poiyomi Toon Shader when you set it to Toon mode would be disregarding physically accurate lighting principles

ivory sluice
#

Sounds reasonable

#

So technically these shaders do pbr (not fully tho) then convert things like NdotL and specular highlights to a different lighting modr

marble rain
ivory sluice
#

Yee

buoyant holly
#

Poiyomi Toon Shader is very customizable

ivory sluice
#

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

marble rain
#

very. Poiyomi has yet to fail me on what i seek

digital fern
#

can you guys help me optimize an avatar for Quest? anything I try doesn't seem to be working for me

calm spade
#

What did you try so far ?

digital fern
#

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...

calm spade
#

What is still saying Quest users can't see it ?

digital fern
#

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

buoyant holly
#

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

digital fern
buoyant holly
digital fern
#

pretty sure that was checked when I opened the export menu tho

buoyant holly
#

so then I would suggest editing the body textures to be transparent underclothing so that it erases more triangles

digital fern
#

how do I do that?

buoyant holly
#

@digital fern screenshots on how to do it

digital fern
#

so just erase the skin you wont be able to see anyway?

#

gotcha

buoyant holly
#

yes

#

yes as the erase transparent button will delete all of those triangles you're not going to see anyway

digital fern
#

@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???

buoyant holly
#

the head is always separated from the body with VROID

digital fern
#

yeah I can see that, was pretty obvious with blender

buoyant holly
#

and medium rank is still better than most avatars on vrchat

digital fern
#

but isn't medium still hidden by default on Quest?

buoyant holly
#

no that's poor and very poor

digital fern
#

o

buoyant holly
#

so if you're medium rank everyone can see you

digital fern
#

wait so why does it say it's not compatiable with Android if it's within the polygon limit and it's medium performance?

buoyant holly
#

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

digital fern
#

I already uploaded for PC... many times... Not sure if it'll ever let me enable Android build

buoyant holly
#

do you have Android installed for your Unity

digital fern
#

that's a thing to install???

languid quartz
#

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.

digital fern
#

wonderful

#

a random plugin complained about something I did

buoyant holly
#

make sure you only have the one Avatar you're trying to upload in your Unity scene

digital fern
#

yep, there's only one in the unity void rn

languid quartz
#

Are you allowed to press the build & publish button or no?

digital fern
#

yes but it still says it's not android compatiable

buoyant holly
#

have you actually completed a upload process on the Android build

digital fern
#

now it's saying the VRM shaders are incompatiable, so how do I change the shaders to the VRChat ones?

languid quartz
#

You would have to upload the avatar and check back on the android compatibility afterwards.

languid quartz
digital fern
#

yep, but there's no option to change the shader for some reason...

languid quartz
#

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

digital fern
#

this is what it shows

languid quartz
#

That's a texture, not a material

digital fern
#

oh the materials? gotcha

#

are the... facial features supposed to do that...?

languid quartz
#

Model likely uses transparency, which aren't allowed on Quest avatars.

digital fern
#

...

#

how do I fix it?

languid quartz
#

You can apparently "cut out" those transparent sections in blender but I don't know the exact process on how to do it.

brave breach
#

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.

onyx harness
#

well auto fix everything you can

#

it's there for that reason

brave breach
#

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

brave breach
#

Switch build target to Quest in the builder and publish

dusk remnant
#

I'd duplicate your project and convert it to quest there instead as opposed to doing it in the same project.

calm spade
#

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

dusk remnant
#

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.

buoyant holly
#

you could just make a separate scene for PC

dusk remnant
#

And duplicate all my materials etc too for when I change them on Quest

#

But yeah I could 🌞

buoyant holly
#

the tool can also automatically handle swapping the shaders

#

when you switch builds

dusk remnant
#

I'll give it a look, was considering writing something similar myself for swapping textures etc too

buoyant holly
#

you can set different texture settings for each platform in unity

#

labeled d is the area you can set platform overrides

manic sundial
#

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

tranquil glen
manic sundial
#

found the shader translucent is the culprit

#

need to find a clear shader

tranquil glen
#

Use the toonlit quest shader

manic sundial
tranquil glen
#

could be the presence of vertex color

#

remove it

buoyant holly
#

maybe you have your normal pointing the wrong way around on your model

#

as Unity randers with backface culling

dusk remnant
#

Try going into edit mode in Blender, select all vertices, Shift+N to recalculate outside normals

thin steeple
#

Click the play button and try again

#

Oh, old message D: sorry

cyan plaza
#

how do i enable this? my avatar is fully ready for quest but wont let me switch build target to android

solid cape
#

Is there quest cutout shaders?

ivory sluice
#

No unfortunately

#

You can only use opaque shaders
Only transparent shaders for avatars are for particles

fierce finch
#

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

stray tangle
#

you can have a very optimized avatar for when you need it and a slightly less optimized one for more features or quality

fierce finch
#

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

stray tangle
#

and by when you need it I mean when you go to events or meetups that require Medium or better

fierce finch
#

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

stray tangle
#

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

thin steeple
mystic owl
#

Does the Quest Version (for Oculus Quest 2) still don't support any shaders that have transparency/cutout?

radiant shadow
#

no and likely never will ,its heavy , already strained in vrchat

mystic owl
#

oh well, good to know.
porting my avatar that uses hair like this won't be an option then :S

runic hill
#

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

stray tangle
runic hill
#

all good managed to sort it thankyou 🙂 but yeah that was the issue 😂 like an absolute idiot i am hahaha

rose sequoia
#

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?

mystic owl
#

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.

modest garnet
#

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?

ivory sluice
#

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

simple wagon
# modest garnet I've been doing some reading lately on how Unity handles images used as textures...

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.

marble rain
radiant shadow
#

4k / alpha = 21.3 on high quality , never seen 16

modest garnet
#

Thank you so much for the information, everyone!

dull cloud
#

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?

sick timber
#

The builds are stored completely separately

dull cloud
velvet crow
marble rain
#

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

velvet crow
#

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

stray tangle
#

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

velvet crow
#

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

buoyant holly
marble rain
#

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.

velvet crow
# marble rain GPU compressed texture formats like DXT / BC / ETC are specifically designed to ...

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.

heady smelt
#

anyone up to helping me optimize my avatar?? never done it before and i dont know enough to not mess everything up LOL

autumn phoenix
#

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

https://www.youtube.com/watch?v=o3Gnu_iJ4bw

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...

▶ Play video
thin steeple
#

Funny floating point numbers

hexed temple
#

How the.. lol

spark cove
#

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?

zealous wigeon
spark cove
zealous wigeon
spark cove
#

Yeah, that's what I thought. No luck unfortunately

#

Will have to see

zealous wigeon
spark cove
#

I've resized all the textures to 512x512

rough igloo
#

is there a way to increase the amount of polygons in vroid?

glass ibex
stray tangle
zealous spear
#

does making the character smaller/shorter decrease polygons?

ivory sluice
#

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

ivory sluice
#

yww

rose sequoia
#

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...)

onyx harness
marble rain
onyx harness
marble rain
#

even if its the same texture.

#

even if you have two materials using the same texture. it still needs to draw it twice.

onyx harness
#

Yes 2 materials would be at least 2 draws but the texture applied shouldn’t change that, no?

marble rain
#

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

onyx harness
#

So yes, the amount of draw calls is not increasing as the number of materials and shaders used aren’t changing.

marble rain
#

each material always increases draw calls. regardless of the texture being the same or not

#

material != texture

zealous wigeon
onyx harness
#

We’re saying the same thing, why are you responding like we’re not?

zealous wigeon
#

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).

onyx harness
# zealous wigeon No, it is only somewhat true if using GPU instancing on the material's shader, b...

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.

onyx harness
#

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.

zealous wigeon
zealous wigeon
#

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.

marble rain
stray tangle
#

using the same texture only saves on vram (depends) and texture reads

#

same amount of drawcalls

onyx harness
marble rain
#

you said your using the same texture on two materials. which is where its causing more drawcalls

marble rain
buoyant holly
onyx harness
#

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…”

lime hamlet
#

:)

marble rain
#

just to make sure you understand

#

each material = 1 draw call minimum 😄

lime hamlet
#

each one of my material subtracts a drawcall

onyx harness
#

Yes, that’s where the 2 is coming from

onyx harness
rose sequoia
#

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 ❤️

marble rain
#

as long as u keep it to max 4 materials in my opinion you should not cause any issues

feral flume
#

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.

ivory sluice
#

there shouldn't be any other avatars with errors or any broken or missing scripts on the scene

feral flume
#

mmm thats not the case.. but i could try putting it in it's own scene

#

That worked! Tysm!!!

ivory sluice
#

nice¡!

lime hamlet
#

workin on some sculpting of an outfit for a new quest model

lime hamlet
#

Oops wrong channel 😅

onyx harness
smoky shadow
#

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...

languid quartz
marble rain
hoary peak
#

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

stray tangle
#

you can't stack transparency with the same material

hoary peak
#

(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

stray tangle
#

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

hoary peak
#

Ok so the face material would use the Poiyomi shader which would allow me to just project some decals onto him

stray tangle
#

yea basically

#

and you don't need your material to be transparent

hoary peak
#

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.

stray tangle
#

I don't think you should have it float off the skin, it looks rather bad imo.

hoary peak
#

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

stray tangle
marble rain
vapid sky
#

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

buoyant holly
#

any particular reason you couldn't just optimized it to be removing that little bit above 70k

vapid sky
#

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

buoyant holly
#

it shouldn't mess with the textures if you like dissolve Edge loops

vapid sky
#

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

#

🧠

buoyant holly
#

yes no need to render triangles you never see

vapid sky
#

I was honestly trying to make the main version better than "very poor", but I will just have 2 versions

heady smelt
#

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

stray tangle
#

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

heady smelt
#

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

stray tangle
#

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

heady smelt
#

ok

zealous wigeon
# heady smelt 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.

stray tangle
#

yeaa, still waiting on the changes to merged to main .-.

#

they are being slow about it

zealous wigeon
#

Had less bugs with the developer version

#

They could at least link it on their github properly.

split delta
#

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?

radiant shadow
#

yes - public fallbacks not possible

#

only public fallback ones are the one from vrchat

marble rain
buoyant holly
#

you can manually set the uvs for the baking tool

marble rain
#

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

buoyant holly
#

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

marble rain
#

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.

buoyant holly
#

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

marble rain
#

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

onyx harness
#

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.

marble rain
onyx harness
marble rain
onyx harness
#

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.

marble rain
#

i know. thats the thing but also i hope no one does that lol.

onyx harness
#

wait, why not? what's the negative to using a smaller texture?

marble rain
#

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.

onyx harness
#

oh that's super common

marble rain
#

only one 4k

onyx harness
#

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

marble rain
#

well yea.

spice cobalt
#

whats a easy way to retexture?

#

and a place to like buy accessories etc for avatars

pure bridge
#

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

pure bridge
#

deviantart is the only guaranteed free option out of all of these by the way

spice cobalt
#

thanks tho for all the info

radiant shadow
#

🤔 highest i could get a quest avatar vram use was 129mb (1mat/4poly/10kb fbx -> 9.8mb total build size) 🔨 🐇

heady smelt
radiant shadow
#

sdk dont like when i use an avatar with 1 material but change it to higher - it will still report 1

heady smelt
#

lovely avatar

radiant shadow
#

yeh i saw one in vrhcat that was a plane and 40k poly, was like um why so i made that 4 one

heady smelt
#

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

radiant shadow
#

adds more vram since they are 'different' textures

#

just duplicated a bunch

heady smelt
#

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

radiant shadow
#

nah it just go, okey this is different i guess

heady smelt
#

LOL

lavish nexus
#

Does it have to be exactly 5000 tris for it to be used as a fallback?

calm spade
#

It doesn't, it has to be at least good rating on both platforms

lavish nexus
#

From what I've read it's 7,500 polys/tris

calm spade
#

Good is under 10000

lavish nexus
#

Nice

polar canyon
#

Is reducing avatar texture size a good way to reduce download size/help the performance rank?

onyx harness
#

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.

polar canyon
#

Cool, thanks.

marble rain
#

texture size wont affect the rank yet. but it will in the future

ivory sluice
#

I hope so

onyx harness
#

The day it happens all the models advertised online as vrcPerfGood or vrcPerfMedium will instantly become vrcPerfVeryPoor

ivory sluice
#

yus
i hope they find a way to do the same with shaders too

marble rain
#

most models sure. but not all. i know alot of people who have around 20-30 mb of vram use only including my self

onyx harness
ivory sluice
#

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)

simple wagon
#

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.

marble rain
#

that said animations are not heavy. they are baked changes.

marble rain
ivory sluice
#

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

simple wagon
marble rain
marble rain
ivory sluice
onyx harness
marble rain
#

tbh. not optimizing avatars is just a weird thing. its super easy keeping them fast and easy.

onyx harness
#

you can post a 400k poly, 25 material model on gumroad for $50 and everyone who buys it won't care about the stats

marble rain
#

keep polygons below 100k, keep material use to 4 and no lights etc

#

99% of avatars in vrc has far to many materials.

ivory sluice
marble rain
#

8gb of ram is diff not ideal 😄

radiant shadow
#

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

marble rain
#

the 2060 can handle Vr decently but yea diff not gonna be doing well in vr

ivory sluice
onyx harness
#

I'm sitting 32gb ram in vrc, still using like 28gb after playing an hour in publics

marble rain
ivory sluice
# radiant shadow 8gb ram theres your issue 🔨

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

onyx harness
#

Problem continues because the average joe doesn't know anything about costs

marble rain
#

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

onyx harness
marble rain
#

Oo. there is something else going on with your system then. cause that amount of ram is eh wierd.

ivory sluice
#

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

marble rain
#

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

ivory sluice
#

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

marble rain
#

eh. LOD still requires more memory. because it has to store each variant of the reduced amount of what ever it is.

onyx harness
#

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

buoyant holly
#

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

marble rain
#

and then suddenly you would run out of memory

ivory sluice
#

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

marble rain
lucid burrow
#

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?

marble rain
#

when you get that low. it does not matter.

lucid burrow
#

I want to call my wolfboy kilobyte just to rub it in.

#

I'm thinking of doing a rebuild for vrcPerfExcellent 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.

proper grail
#

Shape keys cost is exponential

lucid burrow
#

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.

proper grail
#

The listed amount of keys isnt an issue

lucid burrow
#

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

proper grail
#

If it has 1 shape key is the same as having 300, but the more verts in a skinned mesh will balloon the size

proper grail
#

Size, cost, pretty much everything isnt linear

lucid burrow
#

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.

lucid burrow
#

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.

heady smelt
#

cobs edit streak: x3

stray tangle
heady smelt
#

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

lucid burrow
#

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.

stray tangle
#

yep

lucid burrow
undone cradle
#

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.

lucid burrow
#

@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

undone cradle
#

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

lucid burrow
#

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.

undone cradle
#

2.79 is significantly different UI.

#

2.80 was a massive rework.

lucid burrow
#

I had this issue trying to use a retopology plugin.

undone cradle
#

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.

lucid burrow
#

Which version allows you to weight paint in pose mode? This would greatly speed up this suffering switching back and forth.

onyx harness
#

Doesn't Cats have Merge to Active which merges all selected bones to the last selected bone including weights?

undone cradle
#

Probably, Idk I avoid relying on CATS too much.
It isn't exactly being updated much any more.

heady smelt
#

Their name is brail

#

That’s cool

lucid burrow
onyx harness
#

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

undone cradle
#

Huh, this toolset has a merge bones tool.
https://mrven.gumroad.com/l/hPXIh

Gumroad

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...

lucid burrow
#

so the two bones merge and delete into earL(and transfer weight to here) and thats parented to root.

undone cradle
lucid burrow
#

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.

heady smelt
#

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?

stray tangle
#

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

heady smelt
#

ohh ok thank you

quiet grail
#

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

zealous wigeon
quiet grail
#

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

zealous wigeon
#

That is what I did for my hoodie strings and it worked, Ignoring collisions.

quiet grail
#

You can't move bones in Unity though, that breaks the prefab

zealous wigeon
#

Why does it need to be a prefab?

stray tangle
#

not unpacking the avatar is crucial if you want to be able to easily update the FBX

zealous wigeon
#

Shall remember that though, not often I setup much with my avatar in Unity.

quiet grail
#

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

stray tangle
#

@quiet grail you can remove the end bones and just use an end offset on the physbones

quiet grail
#

@stray tangle how do I remove the end bones?

stray tangle
#

blender

quiet grail
#

they don't exist in Beldner

#

Blender

#

oh wait, do you mean unchecking the 'leaf' option?

stray tangle
#

yes

#

you should never have that checked

marble rain
quiet grail
#

Both of these options just caused me issues so I've just left things be for now

marble rain
quiet grail
#

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.

marble rain
#

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

proper grail
#

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

marble rain
#

that wont do anything.

#

it will always count the total amount of affected bones. even if you setup the ignore bones.

proper grail
#

retest, look for if the last simulated bone moves and if its counted. You got circa dynamic bone intel

signal narwhal
#

what are the best texture settings for reducing megabyte count on an avatar?

onyx harness
signal narwhal
#

yippee, PolyCount Optimizing!

  • First: less than 7500 tris (Good Quality)
  • Second: 33k tris (VeryPoor Quality)
marble rain
novel snow
#

Got my hands on the official crewmate model from Among Us VR and uploaded it publicly

simple wagon
marble rain
simple wagon
# marble rain thats not exactly true. it wont be half the size. and it's not always going to b...

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.

marble rain
#

true but in most cases textures has a alpha going on to.

simple wagon
#

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.

marble rain
#

yep yep-..

heady smelt
lucid burrow
#

This vert/filesize table is pretty accurate.

#

Already figured out how to get texture memory under 1mb.

heady smelt
#

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

simple wagon
# heady smelt <@956174681663242340> useful texture size optimizing info here

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.

buoyant holly
#

I would also note compression settings don't do anything for vram usage just download size

marble rain
simple wagon
# buoyant holly I would also note compression settings don't do anything for vram usage just do...

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)

simple wagon
lucid burrow
#

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.

marble rain
lucid burrow
simple wagon
#

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".

marble rain
simple wagon
#

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

marble rain
#

mhm. obviously something like Substance painter works well with resize.

simple wagon
#

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.

undone cradle
undone cradle
#

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.

marble rain
tacit kestrel
#

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.

onyx harness
tacit kestrel
#

Ahh I see, looks like I have no choice but to re-optimize everything. Thanks for replying!

marble rain
marble rain
#

try to keep max 8 mats preferable 4 max

heady smelt
#

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

stray tangle
#

for example, for organizing all the physbones under empty gameobjects

heady smelt
stray tangle
#

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

heady smelt
#

Ah I see

#

thnx

tacit kestrel
onyx harness
# heady smelt I get that but why would someone do that instead of just placing the component o...

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

subtle glen
#

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)

stray tangle
subtle glen
#

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

marble rain
#

no psd files does not lower vram use. it ends up as the same file in unity regardless

ivory sluice
#

That format is specifically DirectDraw Surface (DDS)
It's a format that makes rasterizing textures faster

lucid burrow
#

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.

buoyant holly
#

basically there's no point to the jpeg step of your process as as Unity compression can take care of file size compression

marble rain
ivory sluice
#

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

steel sphinx
#

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.

marble rain
pure bridge
# steel sphinx So I’m probably going to want to optimize my avatar at some point, at a minimum ...

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

steel sphinx
# pure bridge id like to see a picture of your avatar so i could get a clearer idea of what yo...

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.

velvet crow
# lucid burrow I converted my .png textures to .jpeg + crunch compression in unity and the text...

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.

lucid burrow
#

I got my avatar to 560kb download size and 40kb of texture memory.

velvet crow
#

Oh holy crap 😂

lucid burrow
#

🤣

velvet crow
#

What are you using, like 128x128 textures or something? Or maybe non-alpha textures?

lucid burrow
#

1 material, use of shaders. It was hard preserving face detail.

velvet crow
#

Ah, I see. Well that's awesome anyways.

lucid burrow
#

I found the bone sacrifice from vrcPerfGood - vrcPerfExcellent more difficult.

velvet crow
radiant shadow
marble rain
# pure bridge merging meshes is easy and should have been done a while ago anyway, a single me...

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.

marble rain
velvet crow
#

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

marble rain
#

so a 4k with no alpha and normal quality goes down to 8 mb while high quality stays on 16 mb.

velvet crow
#

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

marble rain
#

i use Png only

velvet crow
marble rain
#

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.

velvet crow
#

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

proper grail
#

The texture import settings do be having a lot of fun buttons

velvet crow
#

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

proper grail
#

Alpha source, set it to none and on normal quality it culls the alpha channel.

velvet crow
#

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

radiant shadow
#

remove blendshapes / poly / seperate mesh that has them - slightly lowers it

stray tangle
velvet crow
#

I see, thanks

stray tangle
#

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

velvet crow
#

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?

stray tangle
#

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

marble rain
marble rain
stray tangle
#

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