#avatar-optimization

1 messages · Page 6 of 1

rose sequoia
#

so i try to only do it to pieces i've already optimized and and made basically all the changes i think ill foreseeably want to make

buoyant holly
#

do something I would point out is clothing that is not currently rendered still takes up vram

rose sequoia
#

(otherwise i rather sacrifice the minor perf hit for easy of fluid editing)

buoyant holly
#

so don't try to put like 50 outfits on one Avatar

rose sequoia
#

or the whole shebang has to be loaded in there at all times

buoyant holly
rose sequoia
buoyant holly
#

which is why there's only a singular vram stat

#

and like the SDK count everything as if it's on all the time

rose sequoia
#

i guess the UV discard thing doesnt work on quest (because its part of the poiyomi shader, right?)
So we just have to use the less optimized ways on Quest.... which is the platform that needs optimization the most... 😦

buoyant holly
#

honestly would probably just want to have only one outfit on Quest

#

because you don't really have the triangle budget for multiple outfits

rose sequoia
#

This also means if people are only partially showing your avatar (shaders hidden, animations on) it will be less compatible than if you used one of the older methods of mesh toggling or blendshape squeezing

#

not the end of the world, but that would be something id consider

buoyant holly
#

the quest crashes if it runs out of vram so yeah you shouldn't be running around with lots of outfits on a quest Avatar

toxic needle
#

last time I went into a public world on standalone quest my game straight up hard crashed instantly even with safety settings on literal maximum so thats not the only problem either :/

marble rain
#

it can be difficult to do if its your first time for sure. but you get there. you kinda want to hover at 40 mb of vram use max. and 10 draw calls

jovial wing
#

Would anyone be able to convert a pc only avi to quest compatible for a freind of mine? I would do it but my pc is broken rn

hollow root
#

Python: Traceback (most recent call last):
File "C:\Users\moody\AppData\Roaming\Blender Foundation\Blender\3.0\scripts\addons\cats-blender-plugin-master\tools\importer.py", line 880, in execute
bpy.ops.cats_importer.display_error('INVOKE_DEFAULT')
File "C:\Program Files\Blender Foundation\Blender 3.0\3.0\scripts\modules\bpy\ops.py", line 130, in call
ret = _op_call(self.idname_py(), C_dict, kw, C_exec, C_undo)
RuntimeError: Error: Python: Traceback (most recent call last):
File "C:\Users\moody\AppData\Roaming\Blender Foundation\Blender\3.0\scripts\addons\cats-blender-plugin-master\tools\importer.py", line 1113, in draw
row.label(text=t('ErrorDisplay.eyes2', naéme=self.eye_meshes_not_named_body[0]))
File "C:\Users\moody\AppData\Roaming\Blender Foundation\Blender\3.0\scripts\addons\cats-blender-plugin-master\tools\translations.py", line 64, in t
return output.format(*args, **kwargs)
KeyError: 'name'

location: C:\Users\moody\AppData\Roaming\Blender Foundation\Blender\3.0\scripts\addons\cats-blender-plugin-master\tools\importer.py:966

location: <unknown location>:-1

When I clicked export in CATS, THIS error popped out, it broke me?!?!?!!@?@?

cold yarrow
#

(this applies for Blender 3.0+)

hollow root
#

In Blender I changed the Tris to 7500 in my model in CATS, but when I put it in unity, it says in the SDK builder tab in the control panel that the preformance is very poor, and it became above 20,001, why didn't it reduce the polygons in unity?

cold yarrow
#

Is there an error in the builder about legacy blendshapes or normals or something?

hollow root
#

I think this will explain

buoyant holly
#

did you actually click on the quick decimate

hollow root
#

Unity is living and is a traitor

hollow root
buoyant holly
#

then your tool wouldn't have done anything if you didn't actually tell it to do anything

#

maybe you should go double-check in blender edit mode to see how many triangles your model actually is

hollow root
#

I think this explains, I swear I tried to follow the tutorial you sent

buoyant holly
#

so you literally haven't decimated your model to 7000

hollow root
#

Should this work easier to reduce polygons on quest?

buoyant holly
#

yes that should potentially work the bake function

hollow root
buoyant holly
#

does what

hollow root
# buoyant holly does what

When I try to make eyes move in a certain direction in rotation states, the eyes are not proportional, and it completely stays away from the eyelid, just watch the video above!

buoyant holly
#

I wouldn't be able to tell what's causing that just from watching your video

radiant shadow
fading sedge
# hollow root Please tell me why it does that?

Looks to me like the two eye bones have different roll, while they both should have none. In blender, select the eye bones in Edit mode and do Alt+R. Do the same for head, neck, chest spine and hips bones, as they can influence eye rotation as well if they have some roll stored

cold yarrow
#

This ^ issue has come up a bunch lately, fascinating.

fading sedge
#

I find that some bases sold out there often have either a 90 or 180deg roll applied on the hips-head bone chain for some reason - something that is easy to miss

dull sonnet
#

Would any1 know how to make an avi only use 1 type of physbone since whenever I edit one almost all the hair has to go (example being women models use 2 phys on the button and 4 on the chest so then I only have 2 to use)

mint topaz
#

i do not understand the question

#

youre probably needing to just create a root bone in blender

dull sonnet
#

Oh okay also would u know any good vids for contact toggles. I followed one but didn't work

mint topaz
#

@dull sonnet

dull sonnet
#

I watched him but once I followed the steps it didn't work 🥲

fading sedge
mint topaz
#

He has pretty much the best explanation around, what part isnt working? @dull sonnet

drowsy jewel
#

can i decimate geometry / unsubdivide without the texture/uvmap messing up?

vivid night
buoyant holly
vivid night
#

That's gonna take foreeevverr lol but you're right ❤️

buoyant holly
#

Checker deselect might be helpful for that

#

If you've ever spent hours selecting every other edgeloop one by one by hand to decimate a model for an LOD, you know how painful that can be. Here is one solution to quickly decimate models cleanly without spending hours on it. Checker Deselect is an option to select every other component in a group selection. Watch to see how it can save you t...

▶ Play video
drowsy jewel
#

but i guess it's alright if some assets are hidden at a given time, based on the toggles?

buoyant holly
#

sdk count everything on your avatar even if it's hidden

buoyant holly
velvet crow
#

Has anyone tested the effectiveness of mip streaming for VRC avatars? I know that it generates 33% larger textures due to the other quality versions it needs to generate, but I wasn't sure if it actually swaps out of VRAM or what adjustments a user would need to do to get it to work properly.

#

I mainly ask because, based on the way mip-streaming is defined in the Unity docs, it sounds like it should be drastically reducing the quality of textures to fit within VRAM. But clearly this isn't really something that is happening in practice.

drowsy jewel
dull sonnet
#

And it just works atm like a toggle

fading sedge
dull sonnet
fading sedge
dull sonnet
#

Just like a screen shot?

fading sedge
#

Yeah, a screenshot

#

Your controller setup, the contact setup. Names of parameters

#

And be more descriptive in how exactly you want it to work and in what way exactly is it doing it wrong

mint topaz
dull sonnet
#

Ill have to see idk how to check

echo ferry
#

I'm not sure what I'm doing wrong?
Pc uploaded perfectly, but the button is faded out and won't let me upload to quest? So guessing its an optimization problem?

sick timber
#

There’s probably errors there blocking upload

#

If there aren’t

#

Disable other avatars in the scene

echo ferry
#

Most i see I it complaining about how many polygons and such
Only things in here are the pc and quest version of the same avatar

velvet crow
echo ferry
#

Was waiting for my pc to load properly

#

I'll send..as soon as I can

#

it says it should be quest but then says no

mint topaz
#

@echo ferry click the 'quest' version

#

its under 'builder'

ornate fern
#

I've really been trying to optimize this avatar. I can't figure out any more techniques that are simple enough for me to do that will let me upload for quest. Does anyone have any other suggestions. I've crunched so many textures and yet I'm still struggling to hit 10mb

buoyant holly
echo ferry
#

thank you

ornate fern
#

Used the one on GitHub, unfortunately It doesn't tell me on avatars

gusty moss
#

Need samone with sdk2 to upload 2 avatars that i bought from booth

#

:3

#

For me.

#

Upload to my account

buoyant holly
fading sedge
buoyant holly
ornate fern
fading sedge
#

Pretty sure you can't upload avatars with an sdk that old

ornate fern
#

I removed all of my expression menus and almost there

fading sedge
#

Most of the size is taken by texture files really

buoyant holly
fading sedge
#

So keep crunching them. Quest really isn't meant to support a hole bunch of 4k texture material swaps like you can do on pc

gusty moss
buoyant holly
#

then how would you be uploading the Avatar in the first place?

fading sedge
buoyant holly
#

and explicitly against vrchat terms of service

buoyant holly
#

did you actually click test upload yet

ornate fern
gusty moss
#

I trust the comunity.

#

😂

buoyant holly
ornate fern
#

unless im missing something

fading sedge
buoyant holly
fading sedge
buoyant holly
#

sound effects also take up file size

fading sedge
#

Maybe also animations if you have some long dancing sequences

fading sedge
ornate fern
buoyant holly
#

blendshapes do contribute to the file size

fading sedge
buoyant holly
#

I might suggest separating your face mesh from your body so that the blendshapes are only affecting the face so it's not having to store the vertex positions of all the body that's never going to change

fading sedge
#

But I might be wrong

buoyant holly
ornate fern
#

in speaking of blender, is there a way to see how much the base model itself is taking up data wise? I have two articles of clothing in unity and I wonder what's the size difference

fading sedge
#

No idea, but I would assume its proportional to amount of vertices

velvet crow
buoyant holly
#

why can't they share that Unity packages

#

if you don't get the unity package you can't do your own maintenance so your commissions become ticking time bombs for future updates to break it

velvet crow
#

Many asset or model creators will allow avatar creators to make avatars for other people, but not to share the assets themselves

#

it's in their licensing agreements

#

Thry's tools even has an account switcher

buoyant holly
#

then you shouldn't be using those assets in commissions given that that explicitly against terms of service the logging into someone's account to upload

velvet crow
#

VRC should make that more apparent then, because it's the first I've heard of it and I even read most of the ToS and guidelines

#

Are you saying that you can get banned if you share your account details to let someone else login and upload an avatar?

#

Or is it the avatar uploader that gets their account banned?

velvet crow
# ornate fern

This is probably a dumb question (since I can't tell), but did you click on "Build Report"? It looks like you have "messages" selected

#

the build report should detail all assets from most to least space used

buoyant holly
#

so looks like if you give your account to somebody to upload an avatar and they cause Mischief you would get ban as you're responsible for your account

#

@velvet crow

velvet crow
#

Well that's not the same as what you said

#

Kind of

#

The top few pretty much say "You're responsible for your account." They don't say you will be banned simply for sharing the login information for your account

buoyant holly
#

well no account sharing is quite clear in the community guidelines

velvet crow
#

There is a conflict of information then

buoyant holly
#

the terms of service doesn't say account sharing is allowed

velvet crow
#

either way

#

it happens, so 🤷

#

if VRC wants it to stop, they should find a better method for uploading avatars

buoyant holly
#

uploading avatars are probably always going to require a computer

velvet crow
#

I'm saying: More explicit avatar sharing rules (allowing to share with specific people rather than public), or allow people to use a temporary, one-time token to only access the API routes required to upload an avatar

buoyant holly
#

personally even if you did have those setup not getting the unity package for the Avatar also sets you up for a ticking time bomb

#

like unity2020 is likely to break content

velvet crow
#

Sure, but that's just an opinion at that point. Many people have their licenses for their assets as "commercial allowed, but do not share source", and many people don't want to spend hundreds of dollars on avatar, when many people do custom avatars for $20-40

buoyant holly
#

well vrchat made it pretty clear to go Unity package

velvet crow
#

I do agree that people should be getting the Unity packages. But people are still uploading for other people, even if they have a PC and are sent the unity package anyways.

#

People don't want to deal with using Unity, so they pay people to do it for them if it just means some money and sending their password

buoyant holly
#

yep and that's probably where a good percentile of stolen accounts happen

velvet crow
#

yep, and that's why VRC should add a solution (which would be minimal effort) of adding tokens

#

dang, even Fusl commented on this 3 years ago 😂

cold yarrow
viral verge
#

I have a question I'm expecting a variety of answers for. It's cool I can see texture memory and fight to optimize it but what in people's opinions is like the lines? Ball park estimates. What in your opinion is good, medium, poor, and very poor?

velvet crow
# viral verge I have a question I'm expecting a variety of answers for. It's cool I can see te...

Firstly, you can use this tool in Unity to see VRAM usage https://github.com/Thryrallo/VRC-Avatar-Performance-Tools It is nice because it shows not only textures, but also meshes (which are still loaded into VRAM).

As far as opinions: I try to use some math.

I would argue that 8 GB of VRAM is the most common, and 6 GB is the lower tier of most common. If you leave some space for the world, game, and other programs, it would probably come out to about 4-5 GB for avatars.

As such, if you had a world with an average of 40 people (basically the average upper end from what I see), you can do 4 GB/40, which leaves you at 100 MB per avatar. Though I often do this with 8 GB, so 6 GB/40 = 150 MB per avatar. But this is total VRAM, not just texture memory.

The best way to approach optimization at least for textures is mainly to use Thry's VRAM tool (linked above) and go down the list, since the largest will be at the top. I often turn down the resolution until it starts to look bad from a foot or two away, and then determine if I can do Normal Quality to take advantage of DXT1 (half the size of DXT5 and BC7 (High Quality), which include alpha).

Also, there are a lot of textures that either use Normal mostly or Diffuse mostly. So you may find a normal map barely does anything and can turn it down, same with diffuse or other materials.

buoyant holly
#

poiyomi if you're using it also has a bunch of handy Shader features that could help with the RAM usage like using decals so if you have tattoos on the Avatar you not make the main body texture 4K just to make the tattoo look nice

velvet crow
#

Yeah, a lot of people poop on Poiyomi, but really it just has a lot of features and gives you the ability to actually optimize your avatar and make it look good.

#

I was able to use a single texture for backface. So I had a 2-sided piece of paper that used just 1 image, instead of needing to do something else that would probably incur more draw calls.

pseudo obsidian
#

I'm pretty sure the primary reason people poop on poiyomi is because the most common place you see his shader is those 500 mat slot, 700,000 tri, 30 mesh avatars that break every performance rule in the book.

So it gets to a point where you see that same, dark rimmed barely lit toon look, several emissions, maybe a dissolve or 2, some toggles and those perf stats and go "man fucking poiyomi and his damn shader."

I may or may not be speaking from experience. However, because it's flexible and full featured, it's also very abusable, as no one bothers to use the tools he provides to stay performant.

I've seen times when people have insisted that locking the shaders breaks their emissions, so they don't do it. I didn't even realize not locking was an option, myself.

#

It's also where I learned to use rgba masks and tiling normals for things such as shirts and other clothing.

#

The real champ is those 512x512 sweater and leather normals I use on my avatar.

heady smelt
#

Just because you can animate a hundred properties in Poi, doesn't mean you should 😆

buoyant holly
dull sonnet
viral verge
velvet crow
#

I'm giving you context on why I came to those numbers and other useful information mainly so you can actually fit within it and have a better process for optimizing

#

What is it with people complaining about useful information lately, jesus

velvet crow
#

Don't be upset when someone goes out of their way to spend time writing up something that gives you a clearer answer with specific numbers that you could have read anyways if you just skimmed it for numbers.

velvet crow
velvet crow
#

So, deal with it. You got good help, accept it 🤷

robust anchor
velvet crow
#

Is it as simple as exporting the avatar without the other content attached? What if the base itself can not be shared?

robust anchor
#

the unitypackage file format functions more or less as a zip-file. It's not a zip-file under the hood but it functions like one in that it combines project files into one larger file for easy of transfer.
When creating one, you can choose which files should be included and which shouldn't be.
If you do not include a file, it will not be within the unitypackage, and so it cannot be restored on the other end.
Say e.g. that I have an avatar's fbx file, which has a license that does not allow sharing it.
I can still create a scene in unity and fashion an avatar with that model.
Then, when I create the unity package, I only include the scene and the textures and materials I made for the avatar [assuming it was a simple texturing commission].
If the recipient was to unpack the unitypackage in an empty project, only the scene and textures/materials are present. If they open the scene, they will not be able to see that licensed avatar model as it literally does not exist in their project files. [and unity will log an appropriate error in the console].
If however the recipient unpacks it in a project that already contains that avatar fbx file, the avatar will work perfectly fine when they open the scene.

#

since the unitypackage file I sent did not distribute the licensed material, there shouldn't be any legal issues regarding the license.

#

and if there are, I think it's unlikely to hold up in a court, although I am not a lawyer

velvet crow
#

I see, that's insightful. Thank you

robust anchor
#

however, this process can be finicky, because if the version of the used fbx isn't the same, the reference MIGHT break [a.k.a unity might not be able to recognize that that file is the one that provides that model]. However, this most likely happens if the "update" is actually a recreation of the file from scratch(so it won't have the same ID unity uses to reference project files)

worldly hull
#

I don't know, what I still can do to enjoy this game...
I optimised my Avatar down to 13k Polygons, 2 Mats and 510KB Diskspace. Now it is even for Quest user as "Medium" ranked. But peoples still can't see me and answer after asking often with: "You are a gray robot". I don't know how can I roleplay in this game, if everyone just see me as a gray robot, even if my Avi is medium ranked for Quest standards.

ivory sluice
#

that will depend on a user's safety settings, i also have it set to show everyone but friends and trusted users as robots since so many people go way over the avatar performance limit, the problem is that most of the ones that are at fault won't do anything about it so there's not much you can do about it

worldly hull
#

VRChat fells way more like a phonecall, while everyone does play a singleplayer game.

#

My one is medium and not excellent, but still? How dangerous is it, to have by default all medium and bellow rank user shown?

vivid night
#

It's a normal thing, no one I ever met unless they are new shows all avatars, it's just a lag fest to have everyone all load in unless you're talking to them. If you want EVERYONE to see you, get a fall back. It's just how it goes. Even if 10 people are good, loading them all in lags and yeah, no thanks. You're hidden.

foggy comet
#

Can someone help me? I have atlased my model in Blender and changed material properties but i can't figure out how to save the texture.

fading sedge
foggy comet
#

Yes it did but I changed the material properties because it looked more dull than before

#

I want to save that version

ivory sluice
velvet crow
long glen
#

do physbones perform better than dynamic bones?

buoyant holly
#

yes they do which is why they're allowed on Quest

vivid night
long glen
#

ahhh

#

I thought they tend to result in worse performance ratings when there's a lot of them?

vivid night
#

They can be bad when you use lots of them sure but dynamic bones are worse

buoyant holly
#

but if you're not like very poor rank with physics bones you'll probably be fine

long glen
#

well

#

i am at very poor rank with my 2nd vroid avatar

#

it definitely has too many physbones where it doesnt need them, but im not sure how to reduce them or what to replace with them

buoyant holly
#

the vroid export tab has a bone reduction setting

#

but here is some video tutorials that covers optimization of vroid in blender https://www.youtube.com/watch?v=PyRmBKBCq9k

This tutorial shows you how to optimize your VRoid Model for VRChat using 𝗩𝗥𝗼𝗶𝗱 𝗦𝘁𝘂𝗱𝗶𝗼
and 𝗕𝗹𝗲𝗻𝗱𝗲𝗿. We aim to get medium or good performance ranking!

𝗕𝗹𝗲𝗻𝗱𝗲𝗿 𝟮.𝟴𝟯: https://download.blender.org/release/Blender2.83/
𝗖𝗔𝗧𝗦 𝗽𝗹𝘂𝗴𝗶𝗻: https://github.com/GiveMeAllYourCats/cats-blender-plugin
𝗠𝗮𝘁𝗲𝗿𝗶𝗮𝗹 𝗖𝗼𝗺𝗯𝗶𝗻𝗲𝗿 𝗮𝗱𝗱-𝗼𝗻: https://vrcat.club/threads/materia...

▶ Play video
long glen
#

is there a way to optimize it directly in unity?

#

i can re-export it, i guess, but it would be a bit of a hassle since I also have a blender mask to attach to it

#

and also the tail needs to be bone weight transfered

buoyant holly
#

not really in unity as it's not modeling software

long glen
#

ah, alright, thanks

#

I guess I'll have to re-export it then tomorrow

velvet crow
#

You can also get away with weight painting tricks to reduce the total number of physbones, but maintain a similar amount of dynamic-ness in the way they look

#

If you need help in Blender I'd be happy to give some guidance 👍

worldly hull
velvet crow
#

Right

worldly hull
#

if someone would try to make the standard anime avi to a fallback, I think it would look similar like this

velvet crow
#

You'll have to strategically decide what features you are okay with keeping and decimate where possible. I would probably prefer a very basic, crappy fallback that is somewhat representative of what I'm wearing, versus a robot or completely different fallback.

velvet crow
worldly hull
velvet crow
#

thats not possible with that many details.

Exactly. You have to compromise

#

You can choose to remove or simplify certain details for the sake of making the main model look better

velvet crow
worldly hull
velvet crow
#

They can be hidden yeah

#

Or wait, hmm

#

I can't remember. I think if "avatar" is hidden, it's still robots, so it doesn't matter

worldly hull
#

I am talking about the satfy system. if peoples have hidden everyone by default without pressing "hide Avatar" directly on me

velvet crow
#

Though my point was: You can probably remove/simplify certain materials to bring it into good/excellent rating for quest. Questies unfortunately just will miss out due to the: abhorrent inherent peformance of VRChat and the limits of the quest

#

Yes, it usually is just robots anways afaik

#

as long as "avatar" is not selected in the trust level for safety

#

If "avatar" is enabled in safety for a trust level, then it will show the avatar

worldly hull
velvet crow
#

🤷

#

At the end of the day VRChat is inherently poorly optimized due to letting users make various avatars, so the limits are tight. It doesn't help that the Quest 2 is a mobile phone

#

I'd say if you already have medium for quest, then you probably did more than enough

#

If you can't sacrifice certain details or features, then you'll have to accept that your avatar is medium

worldly hull
#

but does fallback avatar not have a special permission or something, so that they are visible for everyone and must manully be hidden because they doesen't can harm anyone with that less permissions.

velvet crow
#

fallbacks only happen when the avatar hits the "minimum performance rating" under performance. It is separate from safety

#

If avatar is hidden in safety, they're just a robot

worldly hull
#

only a few mats and 5k poligons should never be ableto harm/crash someone.

velvet crow
#

What is causing the avatar to be medium? 5,000 should be good rated on quest no?

worldly hull
#

Is it even possible to harm someone with a fallback rated avatar? if not, why not giving everyone the visiblity permission, that stays over the safty system? and even if someone would missbehave and make something like a 4k poly giant c_ck or something. they still can be manually be hidden globaly.

velvet crow
#

idk what to tell you. They probably decided that robots is the easy thing for safety settings, rather than performance settings

worldly hull
#

but without having any rights. This game is more like a phonecall conversation than a videochat or even a game.

velvet crow
#

Your only option is to further remove details/decimate, or deal with it being medium. 🤷

worldly hull
velvet crow
#

I'm not sure what you're saying

worldly hull
#

If I make a fallback version of my avatar, can peoples still see me, even if they have avatars disabled in their safty system?

velvet crow
#

Fallback avatars are if the avatar falls below the "minimum performance rating" set in the users' performance settings.

Only robots are shown if the user has a trust rating and that trust rating has "Avatar" hidden

velvet crow
#

Even if your avatar is excellent

worldly hull
velvet crow
#

That's their own choice

#

If they are like that, then they are probably not worth talking to

#

Nothing you can do on your end besides asking them to show your avatar

worldly hull
velvet crow
#

It's not about "evil"

#

If people are hiding everyone's avatars, that's their own choice

#

it's a safety setting for a reason

#

If you're a visitor or new user, your avatar will probably be hidden anyways because IIRC that's the default setting

#

so 🤷

#

idk what to tell you, that is just how this platform works

#

if you don't like it, try to provide feedback on feedback.vrchat.com, go to a different platform, or make your own social VR platform :

worldly hull
# velvet crow it's a *safety* setting for a reason

tell me please the reason... (I mean I thought there is no danger from any fallback avatar?)
I asked the people and they always tell they don't want to be crashed. but is it even physically possible to crash someone with a fallback?

velvet crow
#

perhaps, idk

#

most people on VRC use the platform with notions and knowledge that is false

#

As far as I am aware, with the fallback requirements and shader requirements, it shouldn't be possible to crash people on Quest with a fallback

#

but at that point, it's up to you to convince them it can't happen 🤷

#

Even if something is some way, people believe things they are told, even if they aren't true

worldly hull
velvet crow
#

If someone chooses to hide all avatars like that, it is their own choice and they are reducing their own experience 🤷

worldly hull
#

that's what I am trying to ask.

velvet crow
#

The Safety settings override anything else and, yes, will also hide fallbacks

#

it's just the way it is

worldly hull
#

so no need for a fallback then...

velvet crow
#

🤷

#

fallbacks are for performance

#

Again, if someone is hiding all avatars and only shows robots, they are reducing their own experience and they are probably not worth talking to

#

I personally show all avatars for the most part, and just hide shaders for all users

#

So... yeah. IDK what else to tell you

worldly hull
#

many users just don't know what to hide to be safe, so the decide to just hide everything to make sure this will not happen.

velvet crow
#

Because someone can be obnoxious/a nuisance even with fallbacks avatars

#

it could be the size of the avatar or shape of it

#

someone could make a fallback that is a giant penis 🤷

#

idk

#

Someone could make a fallback that is a really offensive meme, idk

#

again, fallback is for performance

#

safety is not performance, and safety is not all about being crashed

#

Some people might be sensitive to certain colors, idk

#

there's a lot of reasons someone would prefer to see robots instead of fallbacks

#

especially since people can make custom fallbacks

#

You can't force people to see your avatar, if that's what you're getting at

#

People can always choose to hide your avatar, even if its a fallback

worldly hull
# velvet crow someone could make a fallback that is a giant penis 🤷

thats another topic. I am just asking for being safe for being crashed. many peoples don't care about that but does care about being laaged out or crashed. peoples that make really sure can still hide everything, but the thinking is of seperating it, maybe with a warning that it protects your for being crashed or laaged out, but still can contain: "obnoxious/a nuisance" contents.

velvet crow
#

make a feature request then

#

Because really at the end of the day, even if you factually can not be crashed by a fallback, people clearly believe they can. So it's not a matter of features, it's a matter of people's mentality

worldly hull
velvet crow
#

Why are you telling me this? Make a feedback request. There is nothing I can do about it

worldly hull
velvet crow
#

You're not asking, you're telling me about something you want, despite it being a minor issue

#

if people are hiding all avatars, that's not your problem

#

if you don't like it, don't talk to them

#

simple really

#

now please stop pinging me

zealous wigeon
worldly hull
# velvet crow if people are hiding all avatars, that's not your problem

The thing is, I don't wanna ask all the time (also its annoying for everyone) but I don't know, where can see me and where does not?
Currently, I make medium rank optimised avatars for PC and Quest about trending games or movies and if they don't react by just seeing me, I don't know if it's just the safety system censoring me into a gray robot, or if my avatar / the movie or game where my avi is based on, is really that unknown and even if they see my, they just don't know where my avatar is based on...

#

If I stalk around corners with my avatar and noone is reacting, is it because they have blocked my by their safety system, or if they just know my character and what game or movie it is based on?

zealous wigeon
# worldly hull If I stalk around corners with my avatar and noone is reacting, is it because th...

Haven't you brought this up before?

You cannot have a marker saying whether they can see your avatar or not because that would create a culture where you are forced to enable everyone's avatars (to your detriment) because otherwise you'd get people walking up to you and pressuring you to do it, VRChat is filled with socially anxious people, adding something like this would be a very dumb idea.

And that is ignoring the performance side of things, because if you show an avatar then it is costing you performance, no matter how optimized it is.

worldly hull
zealous wigeon
#

At most VRChat could have a system allowing you to swap out the default robot, but then it would have to be out of VRChat approved avatars that perform similarly.

#

You cannot allow User created content to be always shown.

#

Far too many ways it can be used maliciously

worldly hull
zealous wigeon
worldly hull
zealous wigeon
#

Or just left

#

Not unusual for people to just leave if they aren't friends enough with the person they are talking to.

worldly hull
zealous wigeon
# long glen how do I do that?

Create empty game object at the bone (in the armature) where the things you want to "combine" are and drag all bones (at the same level) that you want to be affected by the physbone to be a child of the empty game object and just add the physbone component to that empty game object.

worldly hull
# zealous wigeon Then they blocked you.

Back then 2018, VRChat had a website with a entire list of peoples that you blocked and peoples that blocked you...
Someday it turn into error 404 or something and the only way was to check, over the "In Room" tab of the current lobby if someone disappeared in front of you...
But One day, even this did also disappeared on the only situation you can notice that someone did blocked you is if many peoples are "talking with the air". yesterday someone did inadvertently blocked me because:

"he miss-aimed while trying to block someone else that was voice-spamming loud: "ERIKAAA!" music."

velvet crow
#

and less performant than doing it properly in blender?

zealous wigeon
long glen
#

although now, it randomly removed the physbones like my first avatar and i dont understand why

#

do i have to tell it not to auto fix things?

long glen
#

oh wait i see what i did wrong, i forgot to use the duplicate and convert function

long glen
#

I am kind of annoyed that the VRC SDK will say this, but doesn't really give you a way to fix it in unity

#

I wish it would have some way to edit physbones in unity that doesn't require getting into scripting

buoyant holly
#

how's the ever-loving heck do you have that many physics bones

long glen
#

vroid

#

the converter converts all the springbones to physbones, but it doesnt seem to give you any way to edit them or say

#

"hey, maybe dont convert basically every pixel into a physbone"

#

it's because there's physbones in the dress and hair but the converter doesn't differentiate them and turns every spring bone into a physbone

#

i dont really know what it's talking about with the collision check

buoyant holly
#

then maybe edit it in vroid so it doesn't have so many bones in the first place

long glen
#

vroid's editor is pretty limited

#

i cant tell if i somehow have a different version, because on videos it looks different, but it says it's updated on steam

#

it has 24 physbones but a lot are just unnecessary

buoyant holly
#

yeah they did change up the UI in a major version about a year ago

long glen
#

it doesnt seem to have a good bone editor

#

it's just like "this is how many bones there are" and doesnt let you control where they are or where you even want them

#

blender seems to have a good bone editor plugin but when I tried putting the avatar in unity it totally screwed up the textures and even some shapes

#

the physbones are what i need to optimize right now, but i dont understand how to make certain parts of the avatar (like the dress) move without using them, or even how to edit them or see what sections are causing the most performance issues

mint topaz
#

when you duplicate the vroid to vrchat ready

#

theres an option

#

then you can add physbones yourself

long glen
#

it can remove the physbones if i dont use the duplicate and convert option, but I dont have any idea how to add them myself

#

the other thing is a lot of the physbones it does have are needed for the hair to move

#

and i cant tell how to reduce or edit them directly in unity

gentle summit
#

does anyone know how to combine materials and atlas textures? also combine multiple skinned meshes?

buoyant holly
velvet crow
toxic needle
#

Soooooo here's the thing, I have:

  1. reduced skinned mesh renderers from 5 to 3 (face and body separated + body shapekeys deleted, main body is now once piece instead of separate torso and legs, and clothes are now one mesh)
  2. material slots overall reduced from 12 to 11

HOW THE HELL DID MY DRAW CALLS INCREASE

toxic needle
#

I followed every optimisation tip I could find, I even learned to weight paint elbows and shoulders on clothing, and this is the reward I get?

fading sedge
#

I'm no expert, but 11 material slots still sounds like a lot. Any way you can combine some materials of your clothing?

toxic needle
#

all are referenced from 2 atlases (and one for emissions) but I need them separated for hiding clothing etc until I find a better method

#

I have found something about SCSS which is supposedly good but there is zero information about it except for the wiki which is not particularly easy to interpret

fading sedge
#

Separate meshes means separate material slots, even if they use the same material. If you have like 10 different clothing items, then that's the best you can hope for

toxic needle
#

there are no materials spread across, and everything else is combined excluding the ones that need separate shaders or toggling on/off with the material

#

I've searched so many guides for any solution but none of them go any more in-depth than telling you to atlas your materials and combine meshes

void violet
#

Draw calls should only be influenced by the material slots called to draw in the scene. IE, if I have a clothing item that is inactive the the material slot on it should be irrelevant as its not being rendered.

But, once you get the slots and meshes optimized only other methods I know of to reduce would be something like GPU instancing though that is not applicable to Skinned Mesh Renders and requires two or more of the same mesh.

fading sedge
fading sedge
#

Why do you have 11 material slots on just 3 meshes?

toxic needle
#

To toggle clothing, accessories, and tail, as well as for each necessary shader, eyes and different emissions

#

For what I could gather, materials are less resource intensive than individual meshes

fading sedge
#

Still quite heavy though

#

Try toggling some things with blendshapes instead of materials

#

Also I would think that not having all the meshes on at the same time is more optimized than just disabling some materials while still technically rendering the same mesh.

toxic needle
#

I was told that they all still had to be rendered anyway so it doesnt matter

void violet
#

They are not all rendered if the game object is inactive.

#

You can look at your batches when you go into unity and view the stats on a scene

fading sedge
#

Vrchat still counts them for their rating on upload, but if the mesh is disabled, the game won't render it

toxic needle
#

I have the screenshots for the render analysis

#

bottom is the supposedly better one

#

So currently I need individual shaders for everything that needs toggling, and for ones with unique properties like metal glasses, eyes, glowing hair emissions etc. What other method is there of doing that?

onyx harness
#

what shader are you using?

toxic needle
#

poiyomi

onyx harness
#

You can use Udim for toggling

#

1 material with up to 16 toggles

fading sedge
#

You could use texture maps for things like metal ness and emissions instead of using separate materials/shaders

onyx harness
#

especially with Poi

toxic needle
#

where should I look to find an explanation on how to set that up?

onyx harness
#

Poi has a website with good docs

toxic needle
#

After all this time is was in the docs all along

#

Does that work for unique shader properties as well?

#

Like the glasses need metallic but nothing else, eyes and clothing have different emissions, probably half are because of this

onyx harness
#

you can turn on metallic and put a mask in to only work on the glasses part of the texture

#

black off, white on

toxic needle
#

How does having like 5 different masks affect the material count?

onyx harness
#

got my face with metallics like

#

though 1k will be reduced xD

#

masks will affect the vram/bundle size but you could have 1000 masks on 1 material

#

idk what 1000 things you'd be masking but...

toxic needle
#

Looks like I'll be remaking my altases

#

Thank you so much for the advice

onyx harness
#

one of the materials I use has 16 toggles, 2 unique emissions, metallics, plus smoothness and specular, matcap and audiolink on there too

toxic needle
#

Is there any place that identifies different optimisation techniques or is it just f around and find out

onyx harness
#

without udim this would be like 5-6 materials

#

it's just past knowledge from the community really.

toxic needle
#

Someone who has more knowledge than me should consider making one with links to each thing

#

There are so many complaints about people's unoptimised avatars but theres no easy way to get started

onyx harness
#

if you can get down to even Poor on the rating system you're ahead of 95% of the people that talk about vrchat content being unoptimised

toxic needle
#

My goal is stable frames when I'm mirror dwelling, only one of my home worlds can currently do that so whoever made the world did it really well

onyx harness
#

there is a good amount of people that just don't want to work for more than 10 minutes on it in unity let alone blender. The info is out there but you gotta be willing to ask questions rn and a lot of people aren't.

toxic needle
#

But still how are you supposed to ask for help on how to do something when you dont know what youre asking for. This is maybe the 5th time I've been here for help and you're the first to mention UV tiles and masking which completely solves the issue

#

I need to stop complaining and go to bed, lots of things to think about for tomorrow

onyx harness
#

udim is 'new' to the vrc community. Shaders have had it for a while but people either haven't explored it, or have and it did nothing because of the setup it needs. it has been recommended in her for a while though, it's just not a common thing that people talk about

toxic needle
#

Actually one last thought, none of this will work if people have shaders hidden right?

cold yarrow
#

UV tile discard is my next task, definitely.

#

been meaning to get to it.

onyx harness
#

and if animations are off then nothing will work

cold yarrow
#

which is why it's good to make sure your avatar's default state is kinda sane. A thing I need to do, actually 🙂

long glen
heady smelt
#

i have an avi i want to upload but it takes up to much memory somehow, anyway to fix this?

cold yarrow
zealous wigeon
#

However, "texture memory" size (and total VRAM size if you use Thry's VRAM checker) is far more important to look at.
A low download size isn't very good if your texture memory (and total VRAM) is really high.

heady smelt
#

i mean parameters taking up to much memory, i cant really delete anything so idk waht to do

cold yarrow
#

Yeah no real choice there, that's a hard limit. You can see if you're using floats when you want an int, or ints when you want a bool.... or you can split the avatar into two, and only put half the accessories on each.

heady smelt
#

thankyou illl see what i can do

velvet crow
long glen
#

Is there a way to export a VRC-ready prefab from unity to Blender, and then export it back to Unity?

#

I tried exporting from VRM to Blender and that worked, and but when I tried to import that to unity it messed up the textures and shapes randomly

#

I think I tried dragging it into unity as an fbx file? not sure

#

It was the file type that begins with f when exporting from blender with one of the add-ons

cold yarrow
#

You can import a VRM directly into Blender with an add-on

#

if that helps

long glen
#

I think I have that add-on

#

but I'm not sure how to export it from Unity once it's already ready for VRChat

#

I don't want to mess up the scripts by doing it wrong

serene tinsel
#

anyone know how to use the material combiner in cats? I've got my model from VRoid with 19 materials that imports just fine, but as soon as I click on "save atlast to..." it immediately turns into this

#

the ... makes me think there's supposed to be a dialog or something where I could maybe play around with more settings, but nothing pops up, the model just breaks

fading sedge
#

Did you update the material list before creating the atlas?

serene tinsel
#

ye, it had all 19 materials in the list

fading sedge
#

Hmm, looks like a weird bug

#

Is the model 1 mesh or several?

mint topaz
#

if its a vroid, its one mesh

serene tinsel
#

i think it's one mesh yea

mint topaz
#

speaking of; you're able to atlas in vroid studio

#

just a little bit more limited than blender, but you can do it in vroid studio

serene tinsel
mint topaz
#

huh

#

and so i assume blenders your second option for atlasing

serene tinsel
mint topaz
#

spooky

#

im not sure whats wrong with it tbh

#

the atlasing*

serene tinsel
#

should mention that the vroid atlasing shows up just fine in blender

#

it's only when I export the vroid-atlased model to unity that he loses his eyes and body

#

have you been able to get the cats atlaser to work at all? was it some special version of blender or a different plugin mix?

serene tinsel
#

turns out that it actually originally imports as three meshes, but clicking on fix model merges them all as one of its steps. However, trying to atlas before the meshes are joined doesn't really help either

long glen
#

yeah vroid has an atlas function that works

#

but if you need to get it to 1 material slot it doesnt let you do that

#

or if you want to make use of the 4 material slots i guess, it doesn't let you choose anything but the preset numbers

#

I was having issues when trying to atlas with blender and not vroid yesterday

#

i saw a youtube comment that kind of fixed it, you have to choose file > external data > unpack all into files and make sure you have the file in a folder also

#

it still seems to make certain vroid things like the skin, hair, and certain clothes/accessories automatically have a weird texture, even if you literally only atlas them by themselves

radiant shadow
#

to atlas with cats/whatever in blender , you have to do something first or it will fail since i has no idea where the textures are

velvet crow
#

It is technically harder and more work than CATS, but in the end, I find it less of a headache than trying to get CATS to work how I want

pseudo obsidian
# velvet crow It is technically harder and more work than CATS, but in the end, I find it less...

I always describe it as "Atlasing is better than nothing, but I'd investigate baking to a new UV setup, rearranged or re-done, instead of atlasing materials as is."

However, I'm glad they do anything to try, as the latter is better than the former, but the former is much better than nothing.

It's kind of a shame that most of the time, material optimization ends up being in the hands of users when they get a model. I get allowing some customization and an easy way to simply remove something and not have to go to blender to fix it is nice, but if that's the goal, why are we selling fully done packs that are 20 plus things stapled together?

People want avatars, but they don't want to commit an avatar to the "Done" bin and move to the next; the one avatar must always be modular and always be able to be back pedaled on the off chance that I don't like piercing A or Jacket F.

Sorry this turned into a rant. Long story short; Atlasing is much better than nothing, but if you want to really keep the quality AND lower your material count, UV baking is the way to go, even if all you're doing is rearranging all your existing UV's into one single material, pack em tight and bake to that.

velvet crow
#

Yep, completely agree

#

I wish there were better user moderation/performance settings that allow users to hide avatars or at least let it be known that their avatar is hidden for performance reasons.

#

One of the mods did this pretty well by allowing you to hide avatars based on more specific characteristics, even down to shader draw calls or something (iirc)

pseudo obsidian
#

I give VRchat props in the sense that They've given us some semblance of control on what we do and do not see AND kept the limits from being hard ones as sometimes some really neat creative avatars by responsible people can be made.

However, as neat as that mod sounded, I already have issues getting people to get familiar with the current performance settings; getting that granular would require I start opening up "Performance Settings and You" seminars.

#

And then no one will listen and will just blast "Let it all through"

#

I still find Quest users who simply do not care that they suffer crashes and Low spec PC players who "Simply cannot play if I don't see everyones avatar."

#

I feel if they can get the avatars performance stats (Minus the vram, as this obviously wont be accurate until it's unpacked/loaded.) to kind of precede the avatar itself, you can safely block avatars of a certain ranking and they never enter your RAM/vram/storage in the first place.

#

The only way to flat block an avatar, outright, is to have a download limit that is egregiously low and to not show them.

#

Man, I'm wordy as hell tonight.

pseudo obsidian
velvet crow
#

Like the current options are: Download Size, fallback threshold, and then general quality and MSAA. Nothing else, besides kind of the safety settings, but I don't consider the safety settings performance settings

wet harness
#

question for someone who knows a bit how unity performs:
If I want to create a "thing" with lots of movable parts (let's say 50 for that example), what would be better optimized: skinned mesh renderer with 50 bones, skinned mesh renderer with 50 blendshapes, or 50 static meshes?
Assume about 10k polygons and 1 material.
I'm sure 50 static meshes is out of the question, because every mesh would create 1 draw call.
So bones or blendshapes?
Please ping me, so the answer doesn't get drowned ;)

fading sedge
#

50 bones doesn't sound too bad. 50 blend shapes will contribute to the file size if that is your concern

cold yarrow
wet harness
cold yarrow
wet harness
#

as I thought

buoyant holly
wet harness
marble rain
#

but 50 bones is quite abit

toxic needle
#

I'm looking at the poiyomi UV tile discard setup in the docs and one of the steps is increasing the grid size to 4 by 4, but the option isnt there in my blender setup and no explanation of how to get it. Any advice?

proper grail
#

if you cant find it, just L+select islands what you would like to discard and add 1 x and/or 1 y to it

#

its just a visual helper

#

I know it wasnt in the blender version I was using when I set that up

wooden prism
#

Can someone pls optimize my avi kazutora for it to be available to get uploading on quest

velvet crow
velvet crow
dreamy oasis
#

Hey guys i kinda need help well i find that prefab of a rocket launcher but the hard part its that he have 200k polygon !!!

Do you have any way to fix it in unity like a plugin to remove some polygon ?

buoyant holly
dreamy oasis
buoyant holly
#

well your error message says you don't have git installed

dreamy oasis
#

i need to install it ?

#

wait i didnt know that im sorry

buoyant holly
#

well that appears to be what your are messages is telling you

dreamy oasis
#

how to install git ?

buoyant holly
median wharf
#

Any idea if liltoon is well optimized?

#

Im trying it out, I don't wanna be a lag source

dreamy oasis
#

realy easy to control too

buoyant holly
#

like checking the page it auto rewrites the Shader to turn off features you're not using so it should be fine

median wharf
#

Weird, i felt like it wasn't doing this, like it doesn't lock like poiyomi

buoyant holly
#
median wharf
#

yeah i did read that

#

yeah it does lock on upload, i guess its just more subtills?

dreamy oasis
buoyant holly
#

no clue myself as I use blender to do that kind of cleanup work

dreamy oasis
buoyant holly
#

Cool

marble rain
velvet crow
#

I think "worse" as in it swapping to the lower res ones. It should also be swapping the lower res versions in and out of VRAM, not storing all of them. The only extra space would be on disk and buffering adjacent resolutions to the current mip level in VRAM.

Though it doesn't matter either way because VRChat doesn't actually use texture streaming.
https://ask.vrchat.com/t/unity-mipmap-streaming-in-vrchat/15858/3

marble rain
#

yea. atm it wont do anything and no it pretty much stores all mipmaps on the gpu

velvet crow
#

That defeats the purpose of mipmaps though

#

This system forces Unity to only load the mip levels needed to render the current Camera
position, instead of loading all of them by default. It trades a small amount of CPU resources to save a potentially large amount of GPU memory.

You can set a total memory limit for all textures in an application, and the system automatically reduces mip levels to stay within this budget.
https://docs.unity3d.com/Manual/TextureStreaming.html#getting-started

#

mipmaps don't store all the mip levels in VRAM at once

#

unless you're saying with the way VRChat works now, it is storing all the mip levels in VRAM no matter what

marble rain
#

thats only if streaming. otherwise it just stores it in gpu

simple wagon
ivory sluice
#

mip maps are basically texture lod so it helps the renderer to get more avegarged results for the pixels depending on how far it is, disabling them for high detail textures results on the pixels being "jittery" because it can only take one texel per pixel on the screen, to avoid this without mip maps you'd have to iterate the texture varoius times.

#

In my case i disable them for low detail textures on big objects like lightmaps or objects with simple gradients or small color variations, and have them enabled for things like normal maps, detailed textures and any texture that will be tiled

finite flax
#

Bruh quest is so hard to publish for 😦

#

Can't get my model below 15k, and I need to get to 10k?

zealous wigeon
finite flax
#

I see

#

I'm still in a bad place then, I do want to use it as a fallback 😭

#

I'll be using a higher poly version so I want questies to still see the avatar

buoyant holly
#

do you have any mesh hidden under clothing?

finite flax
#

Deleted most of it already

#

I think most of the polys are in the hair I exported from Vroid

buoyant holly
#

I suppose you could separate the hair from the rest of the Avatar and whack it with a decimated modifier

buoyant holly
#

cool

#

would you mind hosting a wireframe of the Avatar so I can make suggestions for reductions?

finite flax
#

Face and hands also have a lot of polys, I've been trying to reduce them

#

At this point it feels like I'm reducing polygons by the unit

buoyant holly
#

are you familiar with dissolving Edge Loops as that would make much less of a mess tackling the hands and face

finite flax
#

Yeah I've been selecting edge rings and loops and collapsing/dissolving them depending on what I need

buoyant holly
#

and honestly even if you can only hit medium ranked on quest you're still miles better than most folks

#

but yeah it would be handy to have a custom fallback so you only have to go through this mess once

finite flax
#

The problem is I want to use it as a fallback, so I can still use the og

#

Yeah I'll only do this again once I want a new fallback but I'm prob fine with this one

buoyant holly
#

not sure it would get you a lot of polygons but I suppose the interior of the mouth would be somewhere that could be reduced with minimum visual impact

finite flax
#

OHH thanks

#

Also eyesockets

buoyant holly
#

yup

#

and the hair you could probably chop off every other Edge Loop

finite flax
#

Oh...

#

Checker deselect...

#

After I did the same thing but manually

#

I'll keep it in mind next time

#

But yeah no, the hair is already obliterated enough, I think if I take any more polys she'll be bald

buoyant holly
#

there's some spots in the tips of the hair I was noticing lots of edge loops

finite flax
#

Mostly broken up, I still need some polys there to keep the hair curves

buoyant holly
#

yeah now the hair seems as low as it can go

#

what's your current triangle count

#

you could probably simplify the ears

#

or even just move some vertices around to completely cover the ears so you can completely remove them

finite flax
#

I'll try

#

I'm at 11134 rn

buoyant holly
#

I'd probably remove the ears first and then worry about moving the hair when you know how much it helps?

finite flax
#

Oops I forgot to mirror the fixed hand

#

Also did the ears anyways

buoyant holly
#

awesome you did it

#

it can all fit within fallback triangle count now

#

and now you know where to Target for next time

finite flax
#

Holy fuck

finite flax
#

Also, some reduced parts can still help me on the original model, like the shoes

buoyant holly
finite flax
#

I tried it but it doesn't remove the warning

buoyant holly
#

do you have like lots of unnecessary blend shapes?

#

have any 4K textures where you don't need them?

finite flax
#

I packed all textures in a single 2048px texture, and I only have blendshapes for lipsync, blinking and a single additional blinking

#

I have a lot of animations, it's probably those 😅

buoyant holly
#

yeah that might be a good idea to try to cut out some unneeded animations

finite flax
#

I kept the important animations and thanos snapped the rest, I can now upload it!!

#

Thank you very much for the help

buoyant holly
#

glad to be of help

#

and now you can be done for a while with having to hyper optimized that much

#

as all the quest users will see your fallback if it's a pc-only avatar or a very poor Quest Avatar

finite flax
#

Lesgooo

#

Is there any way I can see the quest version on pc without uploading a standalone of it?

ivory sluice
#

no

zealous wigeon
wooden prism
#

Can someone pls optimize my kazutora model for me to have on quest and upload it for me I been waiting months for it

#

It’ll and it sucks ik it’s gonna be a lot of work

cold yarrow
#

it is a lot of work 🙂

buoyant holly
wooden prism
#

Yeah ik

rose sequoia
#

Thry's avatar evaluator tool mentions that having states without a motion "might cause issues" and suggested playing empty animation clips in them... Does anyone know what these "issues" might be? (are they performance-related issues?)

#

If it would optimize performance i might go and fix them up,but otherwise meh

frozen pumice
#

Is there any way to find an avatar on its own without having to use an avatar world?

toxic needle
#

you can find free ones on gumroad, jinxxy, booth etc by searching vrc avatars + lowest price first

#

Or are you searching for one specific one

#

Because if thats the case then no, ask #avatar-search-old or search the name of the exact model you're looking for, theres a chance the creator has an avatar world containing it advertised

frozen pumice
#

Ok, thank you

onyx harness
rose sequoia
undone cradle
#
#

Hate that Unity still hasn't made WD Off the default, it's a leftover backwards compatibility from before Unity 5, ancient stuff that isn't needed any more.

onyx harness
#

Who wrote this xD

mint topaz
#

bruh lol

proper grail
#

Honestly, I just use write defaults off with a topmost layer that plays a single 1 frame animation on 0 speed that has all of the defaults I care about
Same thing more control

heady smelt
raven geyser
#

Anyone else knows that a lot of avatars tend to be flagged as very poor. It seems like it's pretty hard to write avatars that are poor or better

buoyant holly
#

yes a lot of folks don't give a hoot about optimization

cold yarrow
#

yeah, it's quite annoying

heady smelt
#

impossible if you need multiple light source, if you know...
difficult if you want toggles n clothes, polygons...
annoying if you do, because your avi autoshows but in shield status. therefore hiding things. others wont click your avi to enable "show all."
not if its already showing. annoying to have to say "hey, you can see me but you still need to click and enable 'show all..."

mint topaz
#

uh huh

#

its your own fault for commissioning someone here, mind you

#

take care next time

rose sequoia
#

I just like Write Defaults On because it makes setting up animations for things easier most of the time. With them off I have to consider all the changes the last state did and potentially reverse them with a counter-animation before moving on to do whatever I want to do next (vs just moving on and only needing to animate what will differ from the avatar's default state).

#

Unless someone tells/shows me it actually has performance benefit to use WD off I'd rather just save the time of making double-ups of animations all the time.

proper grail
#

Hmm it might just be a different thought process, wd off always made sense to me as all the animations in a layer control the same set of things.

proper grail
#

did you just say he scammed you

onyx harness
#

This man looks like he just lost control of his account. Went from saying this person is a scammer just a couple hours ago in every channel to recommending them in every channel.

mint topaz
#

this

#

sounds like a scam

#

lol

tropic sonnet
#

True lmao

vocal kite
#

Hey y'all, I'm trying to reduce the polygon count on an avatar by quite a bit. The tool I managed to find that looked nice is unfortunately outdated and no longer works (Mantis LOD Editor Online). Does anyone have any tools or modern guides that would still work? https://www.youtube.com/watch?v=thFhsYGDEJw Here's the unfortunately outdated guide I found.

This Tutorial Will Show you How To Decimate your Avatars for Uploading to VRChat.

NOTE: Models over 25-30k you May have To Deciminate using a different Method.

If you Have any Questions Leave your Comments Below.

Like, Share, Comment & Subscribe!

Thank you!

TimeStamps

Learn How To Add Dynamic Bone To your Avatar
https://youtu.be/d-6EN...

▶ Play video
cold yarrow
#

decimate in Unity? weird. Just do it in a modeling app like Blender.

vocal kite
#

Fair! I'm still new to VRchat, unity, and blender in general, so I'm not sure what the best way to do it is. Still happy for any guides or tips!

heady smelt
# vocal kite Hey y'all, I'm trying to reduce the polygon count on an avatar by quite a bit. T...

this tool still works, but is no longer free...Ill let you figure out how to ethically solve that one

In Blender, there's three good ways to decimate
this video explains two of them in a few minutes (cats and manual edge looping): https://youtu.be/8MkgXcidxg4?t=182
the other way is to select the mesh in object mode, enter edit mode, select what you want to decimate, click on mesh in the top left, select cleanup, select decimate geometry

vocal kite
#

Thank you! I've been messing with cats for a little while and having some issues, I'll look into these other ideas!

buoyant holly
#

not the most exciting thing in the world but as preparation for the next furality condensed all of my badges down to a 1k material

ivory sluice
#

Man the luma badge brings me so many memories

tawdry garnet
#

How much texture memory usage would be considered fine for the Quest 2? I know there's no official performance rating for it yet, but I want to know roughly how much I should aim for

runic slate
#

is it more optimized to have separate image textures for toggleable clothing, or to put every single texture onto one (large) image so there's only one material?
the full image texture is 3600px

ivory sluice
#

it's more optimized to have it one material because it reduces the draw call count

runic slate
#

even if its a large image?

mint topaz
#

more material slots = more draw time

#

so yea

runic slate
#

alright, thanks

#

is there a specific image size i should keep the texture less than? what is considered "too big"

ivory sluice
#

the avg is 2048x2048 for thing like the body texture or various pieces of clothing in one material, use 4096x4096 only if it's to combine a lot of objects in one.

Another thing you can do to reduce texture size is reducing the resolution depending on how small is the object, because it will be less noticeable and it will cover less pixels than a big object like the main body

eager field
#

hey guys im currently trying to make a super optimized version of my personal model to use as a fallback, I know you can only have 1 material slot for an avi thats fall back so im going to have to atlas everything, only issue is some of my materials usually need to be transparent and cutout, is there anyway to still do that with an atlassed texture

vivid night
#

Fall backs are technically quest as far as I've experienced so, no.

eager field
#

damn guess i'll have to figure out a way around it then

#

also is there any sort of limitation for how many blendshapes can be on a fallback?

vivid night
#

I'm no expert but as far as it goes, having blendshapes adds more size to the avi, so make sure you have very little.

worldly hull
#

Is thwre a way to filter extreme very poor avatars from low very poor avatars?
Because I have shown every avatar, because my PC can handle 100 mats and 300k polygons, but it can not handle avatars with 2mio polygons and 500 materials...
Is there a way to filter them out?
Because if I only allow poor and bellow, 90% of the players are hidden my default because most peoples are very poor.
I just want to filter them for myself, so that i can still see peoples with 300k polys, but hide that peoples that would lag the hell out of my PC or even crash me..

ivory sluice
#

No, but you can try with memory size because the poorer the avatar, the more memory it'll use

worldly hull
#

Its on 200MB for me.

ivory sluice
#

I have it on 35

worldly hull
ivory sluice
#

No, very poor is already the over-the-limit rank, maybe they'll make it higher some day but for now it's set as if it was the worst case flr performance, where an avatar uses very heavy shaders and there are various of these avatars on the instance, and also being run on a normal computer

worldly hull
#

The thing is, even if you just 1 pilygon ocer 70k the qvatar would still run well on most PC's vut you get durectly k7cked in the same topic like the 2mio poly, 500 mats avatars.

#

And if you want to see most of the players, you have to enable very poor.

ivory sluice
#

Yea, in vrc it's ranked by tresholds, it would be cool if it used some kind of "performance points" system where you could limit performance by a specified amount of points, but apart that it hasn't been requested on the canny, it would have to be a very big change and since some people just want to be hated by everyone, they'll find any possible exploits to crash or just be annoying.

For now what people have to do is to meet the minimum performance rank (poor) with their avatars, because if they are doing something, then they have to do it well.

worldly hull
#

A bunch of cubes crunched to 6MB but with 16K textures

ivory sluice
#

Yeah i don't even know what this kind of people that crash, annoy and do other malicious stuff in vrchat just for the fun of it do after closing their computer

#

It's like they only exist to be the worst kind of person because they don't have anything else to do i. Their life

worldly hull
ivory sluice
#

Yea that's what they are aiming for at the end
For now i am just staying away from publics like black cat or any spanish lobby since there's always someone with clients or being straight up toxic.

And that's helping me to be less paranoic but it's gonna take its time

worldly hull
#

Last time, i got my 8 tundra trackers and tried it with my virtual desktop pico 4 for my first time...
But after I joined a lobby, i got a very loud high pitched peep sound to hear that are close to destroy my eardrums and my game started to no longer respond until i closed it over the task manager.
After I rebootet my entire vr setup, virtual desktop, recallibrated my headset to my lighthoused with open space callibrator, put my safty higher and rejoined the lobby. I got crashed again by the same person.

ivory sluice
#

My safety is as strict as everyone with everything on and only friends with the avatar activated (only the avatar, no light nor shaders nor animations), max download size 35 mb and all very poors blocked.
Because low ram and the sane people with exploits to crash other users.

Because fucking up someone's game it's hilarious apparently.

worldly hull
ivory sluice
#

there was a way to activate a more strict safety mode by clicking some buttons but i don't know if they changed
but in general, there's no feature afaik that will automatically activate it, you'll have to do it manually
i was working on some thing that i haven't finished yet that automatically skips rendering anything but the skybox when your delta time is extremely high using a crt and a shader that renders over everything, but i don't know if it'll prevent crashes, it does skip rendering and works at max performance but yea, some crashes happen during 2 or 3 frames and others just crash instantly

modest blade
#

what cause a lag spike when loading a avatar? cloth and physbone initialization? or texture decompression? or anything else?

proper grail
#

Its usually loading textures yeah, but each shader has to compile as well.

modest blade
proper grail
#

its just that its usually just the worst that makes a stutter, they all start at the same time using different parts of the 'puter but if there is one thing that cant be done in 1s/144hz = 6.9ms than the whole thing waits till it can

#

So i guess if i were to rate; Textures first as they decompress as they nyoom to the gpu, large audio files that compete with texture decompression with a certain setting (but honestly if it makes stutter worse you choosing between stutter at avatar load or stutter at first play), Shader compilation as every avatar pretty much has multiple unique shaders. I wouldnt consider things that would happen every frame for rating this

modest blade
#

if I understood your rate correctly, its

#

Texture Compression > Audio Compression > Any Compression > Shader Compilation > Anything Else

#

one more thing, how performant is Physbone we are currently using? is it performant enough to let temporarily unused Physbone left on?

empty geyser
#

Quick question regarding quest avatars: if my PC avatar is rated "Good" performance, does that mean quest only users can see it? Or, does it have to be a quest only avatar so that they can see it?

zealous wigeon
#

For each platform you need to specifically make a version

#

Unity asset bundles are platform specific

empty geyser
#

I know that, what I'm asking is if my avatar will be rated as PC & quest compatible.

zealous wigeon
#

If you uploaded both versions with the same blueprint ID, then its rating will depend on what platform you are on, Quest ratings are stricter.

empty geyser
#

It is over the polygon limit for android build, I know that much. I was just curious if having the PC avatar as "good" rating would allow quest users to see it.

radiant shadow
#

no

empty geyser
#

Thank you, that's all I needed to know. I will have to optimize it then.

radiant shadow
#

quest care not what rating a pc uploaded rank is, they only see the quest version

empty geyser
#

I see the VRC website doesn't mention very poor status, so I'm not sure.

buoyant holly
#

very poor avatars have to be manually turned on on Quest

empty geyser
#

Ah okay.

#

The avatar in question is over by 10k polys

radiant shadow
#

yet to test any on my quest , my fallbacks are all <10k poly anyway

buoyant holly
#

so basically you'll have to optimize at the very least to poor if random people want to see you

buoyant holly
empty geyser
#

Uhh, sure, but I'm well aware of where it could use work 😅

buoyant holly
#

question do you have mesh under your clothing

empty geyser
#

no

#

It's a single mesh, only has one toggle for a weapon.

#

the problem is that I'm using a few prefabs in unity that aren't attached to the rig, so I'd have to convert them to FBX then optimize in blender, which is a hassle tbf.

buoyant holly
#

are you could potentially drop the prefabs from the quest build?

empty geyser
buoyant holly
empty geyser
#

Yep I just now did that

buoyant holly
#

cool

#

question is the friend primary platform PC or Quest

empty geyser
#

PC

buoyant holly
#

cool just wanted to know so I know how pretty you have to worry about making the quest props

rose sequoia
#

Supposing I have a puppet hand that I've set up rotation constraints for, to mimic the hand/finger rotations of one of the avatar's hands, but I only have that puppet hand visible sometimes. Will disabling the rotation constraints while the puppet hand is not visible improve performance? What about if I just change the weight on the constraints to 0? Does having a bunch of disabled constraints affect performance at all, or is it the same as if the constraints were not even in the scene?

#

(the puppet hand would be "hidden" by scaling its parent bone to 0,0,0)

proper grail
#

as this is a small indie dev game, scaling to 0 might/probably will cause issues if udon references (aim for 0.001), and scaling to 0 does nothing for changing what needs to be done performancewise. Uncheck/disable the entire gameobject if youre worried about such things

rose sequoia
proper grail
#

Disabling an object does nothing, okie

rose sequoia
#

eh? If the object had a skinned mesh renderer on it, then it would hide the mesh. Disabling an object with no components on itself or any of its children will not noticeably change anything. Are you suggesting that disabling a game object with children that have rotation constraints will have a performance impact of some kind? (I'm not saying it wont, i haven't tested that)
edit: Just tested this - disabling a gameobject that has constraints does not appear to have any effect - the constraints continue to stay in effect.

proper grail
#

I dont think your constraints are necessary if disabling them changes nothing?

rose sequoia
#

Disabling the constraints... disables them. Making the gameobject the constraints are on inactivate does not disable the constraints.

proper grail
#

It does, and should

#

odd, i guess just disable the constraints

rose sequoia
#

I will test again, I may have made a mistake, But I feel like this very unlikely to be the case - toggles for world-constrained objects would be made very differently if disabling the gameobject they were parented under also disabled all of the constraints under it.

rose sequoia
proper grail
#

256 copies of my avatar with a gameobect disabled, 26.6ms. Parent constraint disabled gameobject enabled 32.0 ms. Enabled at 1, 34.6. Set to 0, 36.4ms.

#

Doesnt seem like theres much of a difference between enabled/disabled/0/1 with a constraint. But turning off the gameobject it holds does it

rose sequoia
#

I have a feeling we're having some miscommunication around the disabling of game objects the impact that has on constraints, but I dont think its too importantto worry about.

But your findings that the performance impact of the constraint being enables/disable/0/1 is sad news if true... because it sounds like it doesnt matter what the current state of the constraint is at, its performance impact stays

proper grail
#

Even i found it weird that disabling the constraint via its own on/off button didnt change much.. Lemme test again with more lag

rose sequoia
#

My ideal scenario would be that I could have 16 or so rotation constraints set up to allow for a gimmick that might be used once every now and then. But if allowing for that to happen means I cause a continual performance impact even while not using it (ie. even if i am setting the constraints to be off/0 when not in use) - it not really worth the cost

proper grail
#

512 avatar deleted a buncha extra stuff test! object+constraint disabled 75.5ms, object enabled constraint disabled 76.0 ms, constraint on 1 76ms, constraint on 0, 76ms

#

yeah imma go with dont even worry about it

rose sequoia
#

Unity, why you be like this. Just let me optimize things in you!

#

oh wait i misread a number. Was that a typo or did you get 176ms with the constraint enabled, and 76 with the constraint either disabled or 0 weighted?

proper grail
#

it was more or less 76ms no matter what bleh

#

guess constraints are cheap

rose sequoia
#

hmmm

#

Without any more information i guess i'll just go ahead and include this thing and just assume it will not actually have any noticeable impact even if unused 90% of the time

proper grail
#

but if you wanna test this yourself just get a constraint in attached to the avatar instead of the armature and name it something unique, enter play mode and duplicate the avatar till happy with the amount of lag, type in the hierarchy search bar the name of the gameobject constraint, select all and play with all the settings at once!

rose sequoia
#

ahh, that makes sense

tough wave
#

So ignoring VRC's ranking, is it generally better to keep outfits as separate meshes to toggle, use the shader to make them transparent, shrink them with blend shapes, or some combo of those?

buoyant holly
#

and the blendshape method would probably be the worst as it would be having the calculate the blendshapes every frame and the cost of blendshapes goes higher the more vertices are affected

rose sequoia
#

Would the blendshape route really necessarily be the worst option? I thought that having a bunch of skinned mesh renderers going at once is pretty bad on performance for their draw calls?

#

well, tbh it really does depend on how many verts. So if you are planning to combine 25 outfits into one mesh then the blendshape option might be not very amazing xD

buoyant holly
tough wave
rose sequoia
#

Heres a question regarding animation files: which is better for performance (or is there even a difference)?
In both scenarios you have two states, one state is for having an item toggled off, the other is for having the same item toggled on.
A) 2 animations with 1 frame each, one toggling an item off, the other toggling the same item on.
B) 1 animation with 2 frames. First frame toggles item off, 2nd frame toggles item on. use Speed = -1 in the "off" state and speed = 1 in the "on" state.

I assume the only impact will be on... avatar size? Is storing/accessing two animations with not many frames more/less costly than storing/accessing one animation with more frames?
What if you exaggerate the scenario to something like 10 single frame animations vs 1 animation with a large number of frames that you use a motion time to specifically play the frame that contains the combination of toggles that you want (simulating 10 non-mutually exclusive animations).
Are animations basically free real estate and not worth bothering to optimize/combine where I can?

mild estuary
#

animation clips are barely any data at all. it's way more important to optimize the number of skinned meshes used, blend shapes, and unique materials used

heady smelt
# rose sequoia Heres a question regarding animation files: which is better for performance (or ...

Option A is what you have to use. EXCEPT it has to have two frames, toggling the item on&on (or off&off if its an off toggle), with Loop Time on. Then it'll run 60 times a sec. Any other option, or no loop time, then it'll desync. And others might see you with wrong clothes/items. So doesnt matter if any other way is less laggy. Remember transition speed should also be 0.02, minimum, according to docs

rose sequoia
heady smelt
#

avatar sync bug. read that section

#

you can make an alt, meet yourself, and test or take my and docs word for it

rose sequoia
#

This isnt just an issue you you are using write default off, perhaps?

#

its hard to imagine why a running animation with 1 frame would be running for a remote user and not actually be animating its thing

heady smelt
#

the only way option B will work is if you set speed paramater in the state to a float and control it via a radial in menu. but controls will be weird.

rose sequoia
#

why would you need it to be controlled?

heady smelt
#

elsw its default at frame 1.

rose sequoia
#

not if you have hard set to -1

heady smelt
#

if you set it up as described, t force sync

heady smelt
rose sequoia
#

right. My question was only regarding the performance impact, not the functionality of the setup, but yes for context im only considering this from an "all write defaults on" perspective

heady smelt
heady smelt
rose sequoia
#

I understand that you dont agree with setting up an animator this way, but I am still wanting to learn what the potential relative performance impacts would be if one was to setup a configuration like this.

#

Regarding "saving 0.2 frames". I dont know that i actualy want to save the frames specifically , im trying to figure out if saving them reduces the overall avatar size/perf impact (because i dont know )

heady smelt
rose sequoia
#

Thanks, your opinion that it would probably be extremely low/negligible is good info!

proper grail
#

I dont think B would even work, animations tend to play even tho they are 1 frame. Sorta like a counter. 10 seconds on -1 play would mean youd need 10.01 seconds on 1 speed to get back to the next keyframe

#

But using Motion time on something with 0 play speed works for choosing the 0 or 1st keyframe

heady smelt
rose sequoia
#

I used option B before and its worked, but i usually dont because its more organized (imo) to have a single animation for each toggle state.
(if you don't agree this works thats fine I'm not trying to argue/discuss that point, just looking to figure out the size/performance impact difference, if its not negligible)

undone cradle
wet harness
#

why would you enable loop time? that is not needed if you toggle something on/off

#

assuming you have a bool as parameter:
[off state] -- bool = true --> [on state]
off and on state both have a one frame animation with loop time turned off. Of course, make a transition back with bool = false.
The transition time doesn't really matter, as it just switches and stays in that state, if it desyncs, it will sync the next time the data is sent.
I do it like that since 2020, and it works without any issue with transition time of 0.

#

(works of course as well with ints)

#

works with WD on and off

heady smelt
# wet harness why would you enable loop time? that is not needed if you toggle something on/of...

Because that will rerun the animation. Without it, it'll run out after 2 frames.
This will cause desync (maybe for the slower machines?) or material swaps/transforms to show wrong for only some. The dev log I posted above explains it. And yeah, it'll sync the next time. But that implies a change will occurr. What if you have your avi spawn in ready to go, and you dont change anything, and clothing on naughty parts didnt show up.

sinful moss
#

Does anyone know how to deal with the “too many animators” error on the sdk control panel?

rose sequoia
#

It might sound a bit too obvious, but how many animators do you have in your avatar? Is there a reason ?
(Also this channel probs isn't the right place for that kind of question)

wet harness
onyx harness
# heady smelt Option A is what you have to use. EXCEPT it has to have two frames, toggling the...

Sorry for coming in so late but I don't believe that's how unity handles the animations.
You can have animations with just 1 keyframe, unity treats it as a 1 second animation when it comes to Exit time, % transition time and Loop Time iirc. You don't need Loop Time either as unity will continue animating the object(s) to the values of the last keyframe for each property of said animation. The animator may be in a desynced state for a brief moment after the avatar loads in on remote, if the local user is not currently in the uploaded state, but it'll sync as long as the user is receiving the Expression Parameter List values. As for transition duration, though I don't recall reading about the recommended 0.02s, I'd say 0s transition duration does about the same. Both would transition to the next state in the next frame.

As for the issue you linked to a bit later in the dev blog concerning desyncing on remote load. This is a bug referring to an Expression Parameter List issue where it would either receive the incorrect values from a previous load or no values at all, resulting in all 0's. This led to controllers progressing the layer(s) with those values leading to an undesirable state on remote until the local user loaded into the model and sent the correct Expression Parameter List values. The issue wasn't due to any variations of animation or state setup/design.

#

In their example, B is a design that has be popularised recently in an effort to reduce the number of animations, and thus size, of the avatar. As unity will 'hold' the values of a keyframe when loop time is disabled, having the Off and On values be 1 frame after the other and transitioning between states that use -1 and 1 as their speeds, the layer will act the same as any other toggle.

heady smelt
#

I used Sippbox's method to create a toggle state. One state into a state and back. Other methods still have the problem. Desync, that were resolved by turning on loop time and am inimum transition time of 0.02.

#

Here, is a VRCContactReciever looking for an OnEnter hand event.
The wearer of the avi can always initiate it, but almost always do only show for them.
Maybe one hit in 10 is shown over the network. I can never initiate it either.
The animation starting the particle effect after a collision, has 1 frame to turn it on, no loop time.

#

Here is the same avatar, same build. Except now the animation to turn on the particle effect has two frames, that turn on the particle effect. Loop time is on.
And now the wearer can always activate, and it syncs properply through the network for others.
As well can I now activate it, and I see it.

Addendum is that, nearly every Booth avatar always has two frames and loop time. So, an onanimation has two frames to turn it on and loop time on. Vice versa for off. This happens with everything, including clothing. Don't know what specifically cause it, maybe avatars that has really much stuff going on (like 30 toggles). Quest seems to be more affected than stronger computers.

This is the same, or very close, to the bug mentioned in the dev update.
https://ask.vrchat.com/t/developer-update-26-january-2023/16072
The fix is just to make an animation with two frames, each one doing the same. And Loop Time on.
But if you want to make something that's not going to sync properly over the network by instead turning off LoopTime and using only one animation, be my guest

#

@wet harness @onyx harness

onyx harness
#

This is the same, or very close, to the bug mentioned in the dev update.
Is this in reference to the "Avatar Sync Bug" or something else?

heady smelt
#

Yes.

#

I'm not a world maker. So I don't know if that part specifically refers to this. SO I added, "it's very close if it's not."

onyx harness
#

That bug is in reference to avatar initialisation differences in the Expression Parameter List values where remote users receive the wrong values for an avatar before the local user has loaded into an said avatar.

#

Basically in the time frame between Remote loading the avatar and Local not, it leads to controllers transitioning through logic using unintended values animating things it's not meant to such as changing materials or disabling objects (depends on what's animated in the 0 value animation)

#

OnEnter, being that it only triggers as True for 1 frame, has always given people issue. It's interesting that giving the animations 2 frames and loop time actually consistently resolves this though

#

I'm definitely going to try it and look into it further

heady smelt
#

This doesn't only occur with VRCContact Recievers. It happens with everything.
Including a simple material switch toggle, or a mesh on/off toggle.

I only know it's fixed with LoopTime on, and two frames doing the same thing.
Only reference to this bug I can find, is the warning here:
https://docs.vrchat.com/docs/state-behaviors

onyx harness
heady smelt
#

I see. But what I'm talking about, is when the clothing doesn't enable even afterward.

#

It continues to say off, until turned back off then on in the menu.

#

And 2 frames/loop time resolves that, as Unity is constantly spamming the clothing back on

onyx harness
#

I've never seen a case where a player will enter a state, stay in said state and not animate the property loop time or not.

#

I haven't used loop time on toggles since sdk3 dropped and haven't had a desync issue on remote sides to date.

heady smelt
#

It's very rare. I had the problem until I turned on Loop Time. But my avatar is optimized to use its bones as toggles for scaling stuff, like a hat is turned to 0 0 0 scale.
Others who've had this problem, set up the avatar as a typical, unoptimized one, with mesh toggles.

#

I can only guess it's related to device speed, as quest seems more affected than PCVR. Or it's an internet speed thing

onyx harness
#

I can only speak for what I've done/experienced but be material, mesh, bone, alpha, udim, I've touched just about every toggle method with loop time on and off without any difference in desync between them. My Quest experiences are considerably smaller but even then, bone or mesh, using 2 keyframes with loop time off hasn't resulted in desync yet.
When things are/were desyncing, was it all toggles or a select few?

heady smelt
#

It was random each time. At times, nearly every toggle failed. At times, it was only one, like a belt buckle on a pair of shorts. And very hard to reproduce with a friend. Best way to catch it in action is just to go to a public world, and ask everyone if anyone is seeing anything missing

#

Usually, there'd be one who says "Oh yeah, I can't see the socks!"

#

I did have success, seeing it in action by meeting my alt. But not reliably every time

onyx harness
#

It is a shame people can't bring up some sort of debug view of another person's model. Even just to see what parameter values they currently are receiving. Though I'm sure people would find some way to abuse it

#

Well I can't really just sit here and say you didn't experience desync. I'll keep an eye out for it in my 2 frame looping off vrchat adventures. See if I can replicate it at all. Maybe I'll try some 1 frame, loop off avatars too

hybrid rampart
#

Help, I tried and use the merge material a.k.a save atlas to thingy with the Cats blender addon and now my most of my avatar seems turn into this hair abomination

#

I think it´s the UVs staying the same, using the hair texture instead of the rest

radiant shadow
#

looks like vrm, they have a quirk with atlas

buoyant holly
#

well for one I know the hair uses tiling stacked uv's

heady smelt
# hybrid rampart Help, I tried and use the merge material a.k.a save atlas to thingy with the Cat...

How I'd fix that, is to import it to Unity before atlasing. Then drop into scene, right click the avi, use FBX exporter, to reexport it. Then use BetterFBX plugin on Blender to reimport. Then I'd do the atlas and export. BetterFBX is optional, but it'd be very messy when importing it to Blender otherwise, and you'd have to use Cats to refix some bones. Might be a better way, this is the only way I know to fix it

rose sequoia
#

And would this affect only avatar download size, you think?

dull sonnet
#

What would be the best way to get physbones on because the hair itself has well over 8 but only 8 are aloud can some1 help out

proper grail
#

Physbones support a root bone! Parent all the hair bones to a hair.root and put the script there. Dont use end bones, use endpoint position in the physbone script

untold acorn
#

Dose the “texture memory” in the avatar details means how much VRAM the avatar is taking? No matter what my shader safety strategy is, as long as this avatar is showed.

buoyant holly
untold acorn
buoyant holly
#

unfortunately the only spot in the vrchat documentation that mentions texture memory

zealous wigeon
#

In regards to what is good and bad hasn't been established yet, that will probably wait for when they can add it to the performance metrics (adding it isn't simple, as the game only knows the texture memory after it has already loaded in the avatar).
I would assume 100MB of texture memory would be medium or poor, but anything they have said about it has been very preliminary.

untold acorn
#

Super thanks for both. Appreciated!

buoyant holly
#

but yeah try to see if you can get your avatar as low as possible without looking bad

turbid pendant
#

Hi im making an avatar but it has 2 million polygons how can i make this less?

buoyant holly
#

this video shows various ways of reducing triangle count https://www.youtube.com/watch?v=8MkgXcidxg4

Did this video help you? Consider sending me a tip on Ko-fi! https://ko-fi.com/sippbox

Making optimized Quest models is hard. But it doesn't have to be! With recently updated polygon limits and fallback avatars, it's a better time than ever to create something that represents you to Quest users! Hopefully this tutorial will help you out!

0:00 ...

▶ Play video
turbid pendant
#

i used the disintegrate

#

changed the subdivide to 2 and it divided it in half

buoyant holly
#

why are you using a subdivide modifier on your avatar

turbid pendant
#

idk but i changed the iterations and it workede

dense olive
#

I have changed the UVmap of my catears in blender, and the shadow looks strange, anyone has an idea?

#

The uv is changed to match the 2nd texture.

dense olive
#

I also have apply all shape keys of the mesh. It looks like a problem of normal, and I have tried export a modified_UV_Catear with unmodified shapekeys, but the problem still occurs.

proper grail
dense olive
proper grail
#

darn, nuclear it is. Delete materials and all old textures that use the old uv map hmph

#

So strange

ivory sluice
#

for me it looks like you are using the wrong normal map on the material

hollow root
#

How are the posts being deleted in the wikis, posts that I post in a wiki are not all spam, and they all get deleted

modest blade
#

how does vrchat handle shadow and reflection? are there something like invisible shadow and reflection clone for every avatar instance?

buoyant holly
#

avatars would just be using the baked reflection probes for their reflections

ivory sluice
#

There's no invisible shadow for every avatar individually, if it was the case then the game would run vay slower than how it runs now with the current avatars and worlds

mossy stump
#

Does anyone have a visual representation of the cost of shapekeys on a model?
I know there's a point where it's better to just separate off the head mesh but I'm wanting to see if there's any specific numbers

zealous wigeon
# mossy stump Does anyone have a visual representation of the cost of shapekeys on a model? I...
mossy stump
zealous wigeon
# mossy stump I’m more looking for benchmarking.

I have unfortunately not seen one, would like to see performance graphs for things in general, but only seen one comparing physbone components growth to constraints, physbones seem to be logarithmic, while constraints are basically linear.

mossy stump
#

Yeah, I know the person who made that graph

simple birch
#

is there a way i can have transparency on a material with it being quest optimized? i tried all mobile shaders but theres no result

buoyant holly
#

transparency is not supported on Quest avatars

rose sequoia
#

Does anyone know if there is any significant impact to having a trail renderer emitting vs not emitting? Does the material required only cost a draw call while there are parts of the trail still existing (and so if you wait for all the trail parts to stop existing and stop emitting - do you save 1 draw call during that time?)

winged spire
wet harness
#

that should save the draw call while not in use

rose sequoia
wet harness
median wharf
#

anyone has exemple of any state animator abuse

buoyant holly
#

hey

don't use massive amounts of transitions out of Any State. you're asking the animator to check dozens (or god forbid, hundreds) of conditions every frame the animator runs. its ok to check that many once when params change, not EVERY UPDATE.

tia

pulls out popcorn

Likes

748

Retweets

326

median wharf
#

thanks

#

no honestly thanks, i was doing some stuff wrong tho I don't think it was as bad as what i see here

proud mango
#

Ah yes, then there’s myself a newbie never touching the animator in Unity trying to figure out making how to make massive direct blend tree for all my avatar toggles. Well, hopefully someone comes up with documation or a tutorial how to do it cause I’m tearing hairs out at this point, but I guess time will tell, I really hope someone does to help everyone with making a good animator to help with cpu times.

frozen hazel
#

what video does this refer to?

#

i think i need it bad

ivory sluice
#

that is indeed an amalgamation

frozen hazel
#

guide me to the right direction

buoyant holly
frozen hazel
#

u gotta do it in blender? but i have the bones in the unity scene

buoyant holly
#

Unity is not modeling software you'll have to merge the bones in blender

frozen hazel
#

how do i take it from unity though i would need to make it a fbx

#

wouldnt that get rid of all the components too

buoyant holly
#

there would be a fbx already for the Avatar somewhere in the assets folder

frozen hazel
#

so i have to put everything together on blender ?

#

all the hairs and clothing and everything

buoyant holly
#

yes basically most operations related to modifying avatars happens in blender

frozen hazel
#

welp that sounds like an immense hassle lol

buoyant holly
#

well you're wanting to optimize your avatars so going to have to put in the work

frozen hazel
#

i guess so ill have to try one day thx

frozen hazel
#

this is for each bone lol

buoyant holly
#

why do you have like 10 copies of each bone

frozen hazel
#

cause each clothing has their armature

rose sequoia
#

🙁

buoyant holly
modest blade
#

thats the most common and likely the default way the cloths sell on booth uses to intergrate

#

performance heavy thought

#

talking about bones, if I disable the bone object, will it reduce performance cost ? and in terms of Physbone, if I disable the object with the physbone script but not the script, will it reduce the performance cost?

modest blade
# ivory sluice There's no invisible shadow for every avatar individually, if it was the case th...

I mean.. let me explain

Local avatar has its head chopped off. If not, your view will be clipped inside the avatar head.

however, in mirror and shadow(nearby a realtime light source) will show the head.

so I suspect that for local player, here will be a shadow clone and mirror clone thats not directly visible, but can interact with light source and mirror.

I suppose these clones are not available for remote avatar instances

onyx harness
#

Blender scary
But it’s more like they want to sell clothing/accessory addons without expecting experience with blender so it’s more widely available.

ivory sluice
ivory sluice
# onyx harness Blender scary But it’s more like they want to sell clothing/accessory addons wit...

Ppl need to learn blender if they are going to edit avatars. It's like makinv a mod for minecraft, you need to know java ( you also won't get support from the forums as i've seen the "bgolus" of the forum is really mean). And using automated tools will have you very very limited as i saw.

So you need to know blender to put clothing on your avatar, ppl cannot go adding 100 separate skinned meshes with 1000 bones, 300 material slots and 200k polygons

hushed pasture
#

Is there a way to animate a texture change without needing a duplicate material? 🤔 Example; Changing a gold chain to silver via animating the swapping of the main texture.

lone tiger
#

You can't swap textures in materials, you need to do a material swap. In your example though what is possible is to change the albedo tint, which is available in pretty much all commonly used shaders.

hushed pasture
undone cradle
#

That's not guaranteed to run at all times though, AnyState is even worse in that regard.

#

I just pretend every transition is like an if statement in code that has to run every frame. xD

lone tiger
#

I'm gonna quote someone here who actually did some tests: https://twitter.com/jellejurre/status/1623025880623640579
Worth to read an entire thread too.

@dtupper Anystates don't actually matter that much

One extra layer adds as about much frametime as being in a layer with 200 anystate transitions

The rest I agree with though, animators can absolutely lag you the hell out. Less layer more better

undone cradle
# lone tiger I'm gonna quote someone here who actually did some tests: https://twitter.com/je...

Yea reducing layer count is a thing as well.
Optimizing layer count is hard with WD On though, gotta drive all relevant things with all animations, otherwise they reset to default.

Benefit of WD Off there, you can just have it pass through a state to do setup for a particular feature.

I made a gun you can pick up 2-handed both left and right-handed, it just passes through different setup states for constraints and the rest of the states are shared between them, no need to make a huge splitting tree like WD On would require, and tbh I'd just put it in a separate layer instead with WD On, too much work to do it the other way.

lone tiger
#

Syncing that though is another problem.

undone cradle
#

Yeah, gotta pass through the correct states on load. Not very useful for clothing toggles, but pickup states and such? Very useful.

solid smelt
#

For toggles I just have a long line of states that it iterates thru when I make a change. 1 layer for all toggles

lone tiger
#

I use a direct blendtree for toggles, radials and stuff like that.
A single FX layer with a single blend tree state does the same job as dozens of layers if I would have done them without utilizing a direct blendtree.

undone cradle
#

I suppose if you have a gradual increase in something, like different hair styles, from small to large hair styles.

#

but no way to use all of them

grizzled shard
lone tiger
#

You can mismatch parameter types between parameters list and animator controller, so you can define a parameter as a float in animator controller and as a bool or integer in your synced parameter list. False bool will translate to float 0, while bool true will translate to float 1. Integers translate directly, so integer 120 for example will directly correspond to float value 120.

#

This can be done with built-in VRChat parameters too.

#

IsLocal or VRMode can be used as a float parameters that are either 0 or 1 for example.

grizzled shard
#

Ah! Didn't know about the automatic conversion. Handy.

proper grail
#

NEAT, huge tip. I was wonderin how people had those 18 direct state toggle layer

cold yarrow
#

also that hilarious duplicate bone armature, that's a bad way of doing things

cold yarrow
modest blade
modest blade
#

If I disable the object with grabpass shader, will it reduce the performance cost? or it will keep eating the resources even if it is disabled

ivory sluice
#

It will reduce perf cost yes

modest blade
#

ok, thanks

onyx harness
#

No idea at what scale but the example that was used was an rng layer that swapped back and forth between states each with Pdrivers to generate a random Int for other systems. This was used as an example of what not to do.

neat karma
#

Did not use blender

onyx harness
neat karma
#

Will dm if u want

#

Idk if i can link

onyx harness
#

Sure, dm. Would help a lot if everyone used it.

lone tiger
#

I know bd_ made one and apparently that one merges armatures and stuff, but I never used a tool like that.

cold yarrow
#

My friend made one she includes with her clothing assets, it's not too hard to do it. The bd_ one is really cool but kinda all-encompassing. I think VRCFury does this too though

toxic needle
#

I finally finished my optimised avatar using UDIM and now comes the animating. Previously I've just used separate layers for all the toggles (as pictured), what is the process for combining them into fewer ones?

acoustic gyro
#

thats alotta words....
to bad im not readin em

onyx harness
#

Damn bro, still better than 80% of other custom models

#

Though you could merge 2 meshes into others and be vrcPerfMedium

proven dock
#

yeah plus reducing material slots is always good for actual performance reasons even though you're already fine there by the measurement

cold yarrow
lone tiger
# toxic needle I finally finished my optimised avatar using UDIM and now comes the animating. P...

Direct blend tree.PatPatPat
@undone cradle @grizzled shard
Basically you create a new layer, make a new blend treee state, regardless of your Write Defaults preference that state must be set to Write Defaults ON, because WD OFF direct blend trees are more annoying to work with and are very easy to break.
Direct blend trees are exempt from WD mixing and don't break if rest of your layers are WD off as long as you don't have other WD Off blend tree states anywhere else.
Under the root direct blend tree you can add more blend trees, where you basically blend/switch between two or more animations/blend trees based on float parameters.
You need to create a float parameter that will always be 1 and be used as sort of a layer weight.
Since blend trees only accept float parameters as input/outputs, you need to rely on parameter type mismatching, which I described earlier: #avatar-optimization message
At that point you can think of root direct blend tree as a simplified animator controller and blend trees coming out of it as animator layers.
You can easily put any radials and get some simpler logic done with this method. Stuff that requires changing animator tracking control, parameter drivers etc. can't be put in direct blend tree obviously.

This way of using direct blend trees is not documented anywhere yet and it might produce strange results if for example you will put long animations in there. Few people researched it and use it and so far it only sees use in very few prefabs, such as ThatFatKidsMom Avatar Prop.

grizzled shard
cold yarrow
#

Nice write-up, yeah.

grizzled shard
#

It works, managed to condense five animator layers down into one.

buoyant holly
#

Cool

lone tiger
#

You can condense wayyyy more than 5 layers.
Also I should have mentioned that Lyuma's emulator and possibly also Gesture Manager(?) don't support parameter type mismatching. Lyuma will just throw a lot of warnings in console about parameters not found.
So if you want to test if any stuff using that behaviour is working, you need to manipulate parameters directly in your animator instead in menus provided by these tools.