#avatar-optimization

1 messages · Page 7 of 1

lone tiger
#

This is around ~50FX layers condensed into one big direct blend tree. I even took animator layers from various stuff that I bought and use on my avatar and converted them into blend tree logic.

onyx harness
#

I feel like if I put this on a commercial avatar people would freak out at me. It looks really cool too and I’ve seen what it can do for animator performance.
Maybe I can make one of these that the prefabs use as default but give a copy of the standard version too. Or maybe I just need to learn more about it so I can teach people how to use/modify this sort of setup

#

The models sit at about 80-100 layers right now, the Animator.Update is a few ms just for the fx

lone tiger
#

On what I have shown above it's 0.44-0.46ms.

fringe portal
#

when I join meshes with the hoodie the hoodie's UV resets and turns white, the only fix I have for it right now is to keep it seperated, how do I join the meshes without the UV resetting pls?

ivory sluice
#

it doesn't reset, that's because your uv map's name on the hoodie mismatches the one on the other object, make sure their uvs have the same name

fringe portal
ivory sluice
#

and to change the name double click the uv map on the list

fringe portal
ivory sluice
#

yw yw

simple wagon
#

spent an hour yesterday troubleshooting a direct blendtree setup I was making only to realize that the animations in the blend tree apply additively so a couple of the layers I was moving into the blend tree just won't work since they make use of layer weights and the override blending.

tired grove
buoyant holly
#

you have to use vrchat mobile shaders to even be able to upload on Quest

tired grove
#

im using mobile shaders

buoyant holly
#

your stats screen literally shows you using the standard Shader somewhere

tired grove
#

i know, thats an old screenshot sorry

#

i changed that

buoyant holly
#

there's a hard limit on physics bones

#

and it looks like that Avatar would perform terribly even on PC

#

your polygon count is in 6 digits

tired grove
#

do you have any suggestion on how i could decompress that

buoyant holly
grand palm
#

I was optimizing my avatar in blender by using the edge looping method. How would I resolve this and my normal maps no longer work ether

proper grail
#

You dissolved a seam. Easiest to not but if you gotta; check the UV map, remake some seams, pin the good bits, and with the entire uv island selected unwrap it again. Feel free to move the corrupted uv bits off to the side. They will go back but where they should on the unwrap.

buoyant holly
#

in general when you're dissolving Edge loop you don't want to dissolve uv seams

heady smelt
#

Could someone DM me and help me optimize my avatar for quest?

buoyant holly
# heady smelt Could someone DM me and help me optimize my avatar for quest?

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
stuck dove
#

I added cloning and look at these stats lmao. I need to optimize ut, but all I can do is blender decimating. right now this avatar is so bad it takes like 10 fps off all my friends except for the one that has a 3090. the texture memory doubles when the clone is active btw

#

I might need to pay someone to optimize it I think

velvet crow
#

I know Tupper mentioned that Any State causes significant animator lag. I think he mentioned that one giant Blend Tree is a lot more performant? Is there a guide on how to do this?

buoyant holly
bold wharf
#

@velvet crow There isn't any "Real" documentation or guides on how to do it as Direct BlendTrees and their associated tech is still all rather unknown, but its being worked on. What Asovrix posted here is a pretty decent how to however.

#

Well I say unknown, it is known but they have a few quirks is all.

#

If you run into any issues feel free to ping me, I've got some experience with making/using them.

heady smelt
#

Never even understood why any states were popular. just takes more time to set up than a regular entry>off><On state

proper grail
#

Its how its set up in the example fx controllers

heady smelt
#

oh, makes sense then suppose. I watched sippbox tutorial on how to make it instead so went with that concept

onyx harness
#

This can also be helpful for those that already don’t use AnyState in their animators. If you’re still using 100 layers in your Fx, now is a good time to look into Direct Blendtrees.

rose sequoia
#

So if I'm trying to set up the fancy direct blend tree to combine a bunch of layers, does this float need to be synced?:
"You need to create a float parameter that will always be 1 and be used as sort of a layer weight."
Or can I set its default value to 1.0 in the fx controller, put that on the main/first blend tree, and that will work ok?
(Does doing this setup cost me 8 parameter memory?)

onyx harness
#

It can stay as just a local param

rose sequoia
#

cool, i wasnt sure if vrchat actually respected default values set in animation controllers (dont think i've ever tried it)

proper grail
#

There are three defaults you gotta worry about; the setup in scene, the defaults in the animator, and the defaults in the parameters list

rose sequoia
#

Im not sure what the "setup in the scene" is, can you explain that one?

#

or is this not related to paramters?

proper grail
#

there is an avatar in scene used for upload

rose sequoia
#

do you mean the default state of all the objects in the scene and their components etc etc

proper grail
#

yis

rose sequoia
#

ah gotcha, yep

#

I have never used blend trees before, so im trying to figure out how to replicate some basic conditions xD

onyx harness
rose sequoia
#

Is it simple to explain how to do this using this direct blend tree method? (if i can wrap my head around this i think ill be good to do all the things):
If Hoodie_Off = True, Play Hoodie_Off animation
If LeftSleevePulledUp = true AND Hoodie_Off = True, Do Nothing
If LeftSleevePulledUp = true AND Hoodie_Off = False, Play "PullSleeveUp" animation

#

I am not sure how to achieve this "and" logic

onyx harness
rose sequoia
#

can mostly ignore teh first one, its the bottom two regarding the sleeve that im unsure about

#

(the idea is that you never try to play the sleeve animation if the hoodie is currently off)

onyx harness
#

Just an educated guess

rose sequoia
#

I understand conceptually what you mean, but not sure how that translates to the setup i need to do with these blend trees

onyx harness
#

So you’d have 3, a hoodie off, hoodie on with sleeve off and a hoodie on with sleeve on

#

First blendtree is the hoodie tree with Hoodie off and the Sleeves blendtree as its motions

rose sequoia
#

Do all of these need to have the type as "Direct"?

onyx harness
#

And the sleeves blendtree has the sleeves anima in it.

onyx harness
#

I can’t really show it as I wonder about a department store in a foreign country.

rose sequoia
#

I appreciate the advice, I'll see if I can do it

onyx harness
#

Yeah just play with it, see what works

rose sequoia
#

So I have the main Blend tree, and it has one motion that goes to the "Hoodie Off" blend tree, using "Hoodie_Off" Parameter. This is my first hurdle. I want it to get into this blend tree basically only when Hoodie_Off is false, but a value of 0 will mean it doesnt go there..

#

I'll try using the dummy "always on" float to just make it always go down that parth and see if that breaks anything

onyx harness
#

You can set the values the motions will require. So you can set the off animation to need a value of 1 and the other motion a value of 0

#

I think the setting on the blendtree is something like “auto set values”

rose sequoia
#

that sounds exactly like what i need, but im struggling to find it

#

If i change them from Direct Blend trees to "1D" I get some more fields and a "Automate Threshholds" which i can untick, perhaps its this

#

I might try and hope this technique doesnt require every blend tree involved to be a direct one

onyx harness
#

I’m ngl, if you tossed this into the vrlabs support or text support section you’d probs get some good help. I saw this in there months ago at this point. Plus the people there are just unity/problem solving smart.

#

Though the finding being in here will help other people aiming to learn the same thing.

rose sequoia
#

Through trial-and-error I figured it out and learned some basics about blend trees, huzzah!

#

having the sub-blend trees be 1d or direct did not seem to matter

#

(I ended up using a mix of both, with the 1D trees to allow me to branch conditionally, and direct ones at the ends to let me play an animation while also having a custom name show on the state (rather than whatever-the-animation-name-is)

#

it ended up looking like this:

#

Now I need to go and edit all the other layers that did things related to these bool parameters that are not directly related to having the clothing on/off... annnd then go and build in logic for all the other toggles I have. Exciting optimization time ahead

dense olive
#

Sorry to reply to a message so old like this. I want to know what is generally a good import settings for avatar textures.

The only tutorials I could find specifically about VRChat is this one: https://github.com/absolute-quantum/cats-blender-plugin/wiki/Bake. You and the tutorial all mentioned "texture filtering", which I suppose has something to do with "Filter Mode" and "Aniso Level". But it is so confusing to decide what number should I set especially for "Aniso Level". The tutorial tell me to set it to x8 or x16 for desktop, but when I change it to a number over 1, it says the aniso filtering is already enabled through quality settings. I try to understand what it means, and find this post:https://forum.unity.com/threads/anisotropic-textures-settings-in-quality-settings.463683/. It confuses me more..

Anyway, what should be a generally good import settings? Here is my settings so far. Would be really grateful if you can give a look.

GitHub

:smiley_cat: A tool designed to shorten steps needed to import and optimize models into VRChat. Compatible models are: MMD, XNALara, Mixamo, DAZ/Poser, Blender Rigify, Sims 2, Motion Builder, 3DS M...

lone tiger
# rose sequoia it ended up looking like this:

That's a strange way to do that. What we usually do is not having motions coming out of root direct blend tree.
If you want a basic toggle, you just add a 1D blend tree, assign a parameter to it and add off and on animations to it. Having a direct blend tree under your root blend tree is usually used only if you want to categorize your stuff.

rose sequoia
#

(what ive done makes sense and is easy to follow for me, so if its effectively the same im happy to leave it)

lone tiger
#

Performant probably yes, but I am not too sure if it will sync properly if you only have animation changing something from default (let's say OFF) to a different value (ON), but not anything changing it back to default anywhere in your entire animator.

rose sequoia
#

Do write defaults function differently from within blend trees?

#

having to do double the work as if i have WD off is going to be much more of a pain, if thats truly what i may need to do 😦

#

(will have to make brand new "off" animations for everything)

lone tiger
#

From my testing, blending between scene/default state and animated state is not reliable. Let's say I only have an animation for a shapekey to be 100, while scene default is 0. Activating the animation works fine, but blending it off doesn't always reliably set the shapekey back to 0.

rose sequoia
#

hmm ok. Thanks unfortunate but what must be done must be done!
So this would be the way to set up a basic on/off toggle, right?
Root Direct Blend tree > 1D Blend tree
Then in that 1D Blend tree, I'd add set the parameter to the float "bool" for the toggle, and add 2 motions. Then put the animation I want when the param is "0" in the first motion slot, and the animation for when the param is "1" in the 2nd motion slot,
Would that be right?

#

(so basically first animation is toggling the thing off, 2nd is toggling the thing on - so there is no reliance on write defaults to keep the thing off)

rose sequoia
#

Heres a bonus question - can I run an animation using a float for its Motion Time, or do I need to keep animations like that on their own layer?
eg. I have OSC send a 2 floats representing the time in hours and mins. I currently have two separate layers running two animations with the minute or hour floats as the motion time, controlling an animation thats spinning hands on a clock.
I've not been able to find a place to specify the motion time while working within this forest of blend trees.

lone tiger
rose sequoia
obtuse goblet
#

does the sdk remove unused blendshapes?

ivory sluice
#

no

rose sequoia
#

That would be a cool feature if it scan all animations from all controllers, then trim any un-animated blend shapes that are left at a default state of 0 on upload.

neat karma
#

Fummy enough VRM does remove all unused blendshapes if u tick one checkbox but that is not VRChat SDK xD

hoary juniper
#

@dense olive You can ignore the "is already enabled in quality settings" message, it doesn't apply when things are loaded in VRC

#

Besides that, I would say the defaults are fine. Kaiser filtering can be useful for some things but I don't think it's something you really need to adjust beyond, say, setting compression to high quality

dense olive
#

About how about textures for quest?

proper grail
#

that setting is overridden by the person who loads your avatar is what hes saying

dense olive
#

Oh, thank you!

#

So basically just change filter mode to trilinear and compression quality to high?

wicked wolf
#

so, am I right in saying that having Write Defaults off in all of the animator nodes in your avatar means it'll have better performance?

undone cradle
#

WD On can be used in a safer manner, if you use reset animations and such, but people tend not to do that.
WD Off forces you to do it, and makes what I call "setup" animations easier to handle.
Instead of branching the entire tree or making another layer on your animator, you can pass through a state setting all the settings (toggle gameobjects, etc), then have a single tree doing all the stuff the WD On branches would have in common.

wicked wolf
#

interesting

#

so I should try my best to try and have write defaults off then

#

but it's ok to use it sometimes if I'm smart about it

#

ok, makes sense, thanks!

proper grail
#

write defaults is an all or nothing thing, cant mix them or the write default on layers will grab random defaults from the wd off layers

bold wharf
#

*Unless its a direct blendtree, then you can set them as WD on and they just work
Thought I'd mention this since they have been discussed recently in this channel

proper grail
#

I shall test if this behavior is.. place your toggle layer at the top or bottom dependent

bold wharf
#

It.. shouldn't be.

proper grail
#

i cant find any evidence that blend trees are even write defaults compatible bleh

bold wharf
#

Yeah uh, the source on this is dude trust me

#

But from everyone I know there hasn't been any reproducible issues with having a WD on Direct Blendtree and WD off rest of controller

proper grail
#

Im still stuck on any advantage wd on would give, on or off still seems like I have to make both on/off animations to have it function

bold wharf
#

WD on just work

#

WD off are the biggest pain in the ass to get working

#

You have to follow a lot of very specific steps.

#

This is direct blendtrees I am talking about however

#

Not just your regular states

proper grail
#

me dum, cant get it to work with only an on state WD on

proper grail
#

oh my.. It seems WD on for a single blend tree with many many states is for a whole nother reason entirely. Gotta be on for sure

rose sequoia
#

WD on with the direct blend tree method worked for me like you expect (not having to waste time making "reverse " animations). However apparently it -can- desync so I've just been treating direct blend trees as if they are WD off. (Which is inconvenient, but meh)

gray night
#

i need someone to help me recolour a model ( preferably u do it ) so it can be quest compatible. the problem, the colouring of the skin. i can make the avi quest compatible and it looks great on pc but it looks bad on quest. im kinda looking to either not pay or pay only a little bit. i dont mind paying but all i really need help with is colouring. can someone help pls?

undone cradle
ivory sluice
#

Or try disabling normals on your model if you need something like emission too
At the cost of needing specular highlights to be diaabled and directional lights might appear weird

#

But in case you only need a main texture then yes, use toon lit as swingly said

dreamy stream
#

I find it weird that my avatar is still ranked as poor even though there are only 3 stats are colored red and not even exceed the max numbers. Other stats are mostly green and some are gray (gray stats are actually just related to D.bones).

ivory sluice
#

The overall performance is calculated as the maximum, not average, exceeding the max values result on a more intense red color meaning that your avatar is too heavy. Even if all stats are green, if there's ony one red, your overall performamce will be red

dreamy stream
#

Thanks for the informative answer. I kinda wish stat system has some sort of weight management and each stat has weight. So that we can manage the available weight between stats to fit into a target rank.

#

But that idea needs balancing so thats kinda takes time to do i guess

ivory sluice
#

It would be a good idea, but first they'd need to make sure no exploits are possible and that it's balanced enough, at least that's what i'd do

heady smelt
heady smelt
# dreamy stream Thanks for the informative answer. I kinda wish stat system has some sort of wei...

However, Poor rating is actually the mark to aim for. anything less is barely achievable if you want toggles, clothes, fun things.
the sdk will even punish you for optimizing.
docs say, to split the body mesh into two if it's above 32k polys so the head's blendshapes need to calculate less. thats one more mesh that will count
Using bones weight painted to an item toggle, or even clothes (to scale them instead to hide, rather than using another skinned mesh renderer), you'll easily exceed the 400 bones minumum.
Particle systems limited to 1 particle? sdk detects but still dislikes any high amount of the component. audio sources can't be changed live so you need multiple, but sdk doesn't account for how many will be on at any given time. same for meshes (turning off a mesh disables rendering of the polys, but sdk counts max polys possible, not max amount of polys that can be on at any given time).

If vrchat made a calculative system instead (120k poly is okay, if it has one material, one mesh, 1k resolution, bare minimum bones, etc.) and it came out as good?
the system had probably backfired in some way. Like, now you can really squeeze into that poor limit, and use so much unoptimized things so it deserves to be very poor. you can fill out the rating limits, ton of particle systems, high poly count, multiple skinned mesh renderers and ordinary renders, etc.
A calculative system had most likely been more restrictive.
"sure, you can use 4 particle systems and avoid VeryPoor." *adds 400 bones "oh oh, now you can only use 2 particle systems :p"
and accepting it as is is a necessary evil.

The thing we're all hoping in is a custom rating after VeryPoor so we can set it up after our own PC's limits

velvet crow
#

The thing we're all hoping in is a custom rating after VeryPoor so we can set it up after our own PC's limits
I'm hoping for a system that allows me to block avatars based on each stat, rather than global "very poor". For example, if someone is otherwise medium/good besides materials or 71,000 polys, they shouldn't be blocked by me

mint topaz
#

^

#

agreed

jovial tartan
#

Does anyone know if hidden objects with polygons actually affect performance along with mat slots?

#

I know they are still in vram but do they actually affect framerate as they are hidden and not rendered?

ivory sluice
#

if deactivated it won't do anything, it will be removed from the rasterizer's vertex buffer, if you mean hidden as with a transparent shader then no

serene cedar
#

Can someone teach me how to AO map properly?

#

I've never done AO mapping before and I'd like genuine like, support over a VC so that I can make my avatar look nicer.

lofty grail
#

Not that im complaining about how much texture memory I thought I'd be using vs what VRC reads in game, but can anyone explain why the estimation in the thry calculator is so much larger?

ivory sluice
#

maybe thry calculates the overall vram, the avatar stats only shows the uncompressed texture memory

radiant shadow
#

vrchat ignore mesh size

#

expand it and you will see that has some size too

lofty grail
#

I also probably can't read and if i could I would have seen it specify all active objects lol.

verbal surge
#

Does it make sense to separate props into (standard) meshes, if the body mesh has a lot of polygons and shape keys? (Each prop is currently being toggled by a blendshape)

heady smelt
south lagoon
#

question i want to optimise an avatar (35MB assets only) I watched all the youtube videos but i wanted to ask. could i delete vertices one by one (ones that i deicde arent needed) will that help optimise the avatar for quest (10MB and yes i will be deleting faces, converting the quads to squares and etc. i will also be deleting some meshes)

#

does anyone recommend a method to optimize. this is my first time and i am willing to do long manually ways or quick ones

onyx harness
#

The biggest things on avatars by far are textures; size and number.

#

If you can decrease the textures max size a couple steps it’ll drop quickly.

south lagoon
#

0 textures on it

onyx harness
#

Might need to use less assets then.

#

What is contributing to this 35. Break it down for me

south lagoon
#

4 different hairs, 4 different bangs, 3 jackets, 2 turtlenecks, 2 thigh highs, shoes, a dress, a t shirt, shorts, 2 pairs of undergarment (SFW) and body and a face

#

i am deleting one hair

#

i want to learn to optimise AS MUCH as possible to keep most of this

onyx harness
#

You know how you keep it all?
You split it into more avatars.

#

Welcome to quest.

south lagoon
onyx harness
#

But 35 mb for just that? Is that what comes up when you try to build and publish?

#

Where’s the 35 coming from?

south lagoon
# onyx harness Where’s the 35 coming from?

35 MB is what I was told from blender when I exported it. it might have been from many meshes, i seperated all the bangs from the hair, the belts from dress and leg warmer, and turtlenecks (2 of them)

#

idk if there are assets that arent optimized yet.

onyx harness
south lagoon
rose sequoia
#

If I have unused space in a texture (this is the main atlas texture for the avatar) is there any benefit to filling that space with a particular thing? Like is White better than black or "nothing" (like deleting those areas so they would theoretically show as transparent if the areas were UV-mapped nad I was to use a transparent shader, which they arnt and I'm not)

#

I assumed it didnt really matter (as there is no visible different) but I just had the idea that maybe there was some minor performance impact that I may as well address.

undone cradle
undone cradle
# rose sequoia If I have unused space in a texture (this is the main atlas texture for the avat...

As long as it's a flat color it's fine.

What would be better is utilizing more of your texture with the atlas.
you could manually arrange a new UV map and bake to that.

https://youtu.be/7gGFMtckrkc

This video is meant for anyone who wants to combine their textures in Blender to optimize their game objects. Although this is using a VRChat model, this technique can be applied to any game asset.

Stop by my Patreon to help grow our community of sharing knowledge with one another!
https://www.SwaMusic.com/PATREON

Chapters:
01:00 Combining mes...

▶ Play video
rose sequoia
#

The unused space is useful as developments are made and I need to combine more textures - its simpler at the moment to keep the unused spaces, but I know what you mean.
Flat colour-ahoy! (thanks)

marble rain
velvet crow
marble rain
#

honestly it takes less time to make a optimized one then a non optimized.

neat karma
#

I optimize mine in unity as well as I can, blender is learning curve and only 3 hours a day wont be enough to really sit down and try for me

versed swan
#

The only way I need to optimize mine is making everything 1 texture and model. (currently my avatar is 15 models and 14 textures. but I really really do not wanna have to redraw the entire texture.

#

and then deal with unity weirdness on textures.

proper grail
#

There exists a button in blender that will draw one UV map to another

#

Its in the Bake panel, diffuse with the lighting options unchecked. It will bake to the selected texture in the material nodes for each material in the object to the selected UVmap

neat karma
#

Need to learn that so I can shrink down on the materials

modest blade
#

these bars stack on each other, is this hyperthread?

modest blade
#

I found these two properties taking almost 0.1ms, is that when a state is on and running animation that has GameObject ON/OFF animation without exit that state causing this?

GameObject.Activate
GameObject.Deactivate

#

Any tricks to optimize Animation and Constraint overhead instead of remove them?

south lagoon
#

i have multiple metals and hair materials with my model (from different assets that were added on). How could I combine them into ONE material with their UV maps still intact and exactly the same

undone cradle
modest blade
rose sequoia
modest blade
#

I have large amount(very large) of stuff and other functions may toggle ON/OFF the stuff I want to use blend tree toggle, like toggle a folder, the content inside are going to use blend tree toggle, which im afraid it may be affect by WD

rose sequoia
#

I found as long as its simple toggles and you dont need animated transitions between them or complicated logic - this works well

#

ive converted a good chunk of my avatar's toggle fx layers over to one big blend tree. The ones that remain either need to be separate because they are more than just toggles, or have very complicated logic and i havnt had the time to try and set them up yet

modest blade
#

does that mean Default State will NOT be affected if it is disabled/enabled by Blendtree?

originally, everytime the object enables, its current state will be recorded as its default state

rose sequoia
#

When i tested it (with the blend tree as WD ON) all the toggles inside the blend tree seemed to act as if WD was ON, they would revert to default after stopping animating... however from some discussion in here it sounds like that is not reliable in a setup like this, and you need to manually animate the toggles on/off as if WD was off anyway

modest blade
#

i made a 1D blendtree with WD off, however, it affects my avatar face blendshape somehow

#

the blendtree is like this

#

i have no clue why its affecting other animations that DO NOT exist in this blendtree and this whole animation layer.

when this blendtree is enabled, my face blendshape bump to infinity

lone tiger
#

they are broken

#

if there is more than one blend tree on a WD Off state in a layer they tend to affect stuff in an unexpected ways too

modest blade
#

guess there is no workaround for now, I have to use WD on, its gonna take years to redesign my systems

#

(

#

ty guys

modest blade
robust anchor
modest blade
robust anchor
#

and the sub-blend-trees all affect different parameters?

lone tiger
#

Yes, that's the way you can have conditional logic in blend trees.

modest blade
robust anchor
#

there is nothing to blend in-between

lone tiger
#

wait that wasn't supposed to be a reply to that message

#

🥴

modest blade
#

setup is like this

lone tiger
#

You could technically do something like this, but I don't recommend this method:

#

Since stuff doesn't seem to reliably turn off from my testing in editor if there is no animation anywhere in your animator that animated it back off (blend tree layer would need to be a layer lower in the animator for it to have higher priority).

modest blade
lone tiger
#

you could, but why do that if you can just toggle between two states within a single blend tree?🥴

modest blade
#

my current problem is that Blendtree did enable objects, however, when the weight goes 0, the object didnt turn back off, I set objects OFF before Play

robust anchor
#

all WD does is "If an animation in a layer does not set a value set by at least 1 other animation in that layer, the animation sets the value from the scene at the time of building"

lone tiger
#

There is no reason to have a separate layer with everything off and then another where you have logic to set it on. All of that can be done within a single blend tree by just switching between off and on.

modest blade
#

my understanding is that

everytime a Object is Enabled(from disabled), its state will be recorded as the "Default State". When the object is not animated by any animation, it will go back to the Default State recorded

modest blade
#

is this how you set "turn OFF"?

lone tiger
#

If you insist on having less animation files, then yes, that's the way.

modest blade
#

I have ON and OFF animation, but how do I use these two in Direct Blend? or you are using 1D?

bold wharf
#

To make blend tree toggles the first blendtree MUST be set as direct. You can then organise them by using more direct blendtrees, once you get to the blendtree that holds motions that NEEDS to be 1D

modest blade
#

omfg I set the toggles to 1D, then Direct, then 1D, then Direct, bruh I confused myself

#

so the first one need to be direct, the most left one,
the follow up use 1D

#

in the follow ups, use ON and OFF animation

#

Im I correct?

bold wharf
#

You also need a parameter that is permanently set to 1 and that should be the parameter assigned to all direct blendtrees

lone tiger
#

Root blend tree should be direct, but anything under it can be whatever depending on what you need.

modest blade
#

changing it back

#

do I need to change the Threshold?

bold wharf
#

Are you using bools?

#

IF so then no

modest blade
#

bools --> float

#

ok

#

is blendTree toggle act exactly like normal state toggle? will it make other things behave differently?

bold wharf
#

Yes, aside from the fact that you can't have transition duration

modest blade
#

got it, thank you guys

bold wharf
#

Also since I saw this earlier and forgor to say something, you should always be using WD on direct Blendtrees for this. Even if the rest of your controller is WD off. WD off blendtrees require a lot of specific things to be done to make them able to work which don't need to be done in a WD on one. Additionally, as far as has been seen, WD on direct blendtrees do not cause issues when using mixed WDs

modest blade
#

do I have to set Object default state depents on animation also?

#

or I can leave object Enabled/Disabled as it originally is

#

I mean, make all objects default disabled or enabled

lone tiger
#

That depends on what your avatar is setup in scene. Take into account safety settings too, since with animations disabled you appear pretty much like in your Unity scene. With shaders disabled it can get even weirder too.

modest blade
#

understood, thanks

south lagoon
#

how would i set them as the same material

undone cradle
south lagoon
versed swan
#

is there a model ruler or something that I can download so my model can be the correct size

#

Woo! simple math fixed it!

undone cradle
versed swan
#

how do I make it crossplatform once everything is setup

robust anchor
#

you have to upload a quest version. and when doing that, you can mark the avatar as a fallback avatar

robust anchor
#

make sure to not change the avatar's id when you do that though, as otherwise VRChat has no idea the PC version and Quest version are from the same avatar

versed swan
#

mk

#

so just re-upload the avatar using the same model but make it using android?

#

is that correct?

#

nvm easier than I thought!

#

How do I change which shader it is?

onyx harness
versed swan
#

how does one exactly go about doing that.

south lagoon
undone cradle
#

yea just assign the same material to all the hair then. 👍

south lagoon
#

awesome!! ok thank you!!

grizzled shard
# versed swan how does one exactly go about doing that.

In the Unity browser, right-click an empty area, go to Create -> Material. You have created a material with default settings. Adjust the shader, textures, settings etc as desired.

Select the mesh and look at the inspector, you should see a section labeled Materials with Element 0, Element 1, etc. Replace the relevant element field with your created material, by dragging it in from the Unity browser or clicking the little selection circle on the far right of the field. The mesh is now using your custom material.

fair oxide
#

I need help with optimizing an avatar, I'm using The material combiner tool in cats, I'm using blender 2.93, all my UVMaps are the same name, all the image types I want to merge are PNG. All of the sizes are compatible with 512. For some reason my skin texture turns completely white, is anyone able to help me determine the issue, or do you know someone who might be able to help me who is a little bit more advanced with atlas tools? I know there are alternative ways to optimize, my goal here is to trouble shoot the issue with the atlas tool.

radiant shadow
#

redo texture on the missing material , could be its just confused where the texture is

fair oxide
#

what do you mean redo?

rose sequoia
#

If you have a look at the uv mapping for those white sections- what has it done? Maybe that might reveal something about the issue/may be it's just a matter of manually correcting some of the UV sections

jovial tartan
south lagoon
#

does pumpkin tool still break projects? i heard a lot of creators and users stopped using pumpkin cause it would break their unity projects. idk if it was fixed.

zealous wigeon
#

Been using it for a while now, probably approaching 1 year.
Must have just been a bad update it had.

#

Haven't had any problems with the most recent one.

#

You could always just copy the unity project and back it up somewhere, if you want to be on the safe side.

south lagoon
#

i know people had problems in the past. idk if it was cause it was outdated or etc. cause people end up having to delete it or it will cause errors to the point it cant upload. but poiyomi has the same with their thry scripts

#

personally never used it myself. but i can only rely on my peers' opinions on this

zealous wigeon
#

Doing a "reimport all" almost always fixes script issues for me, only been once when it didn't when UdonSharp was broken for another reason.

south lagoon
formal anvil
#

hi! I've got a question regarding inactive game objects and performance: if a part of my avi is set inactive by menu's toggle on/off feature, does inactive mesh/material or whatever affect performance? I asked reddit and I had conflicting answers so thought I might ask here as well

ivory sluice
#

if it's a gameobject it won't do anything if toggled off, so it's good for performance

zealous wigeon
# formal anvil hi! I've got a question regarding inactive game objects and performance: if a pa...

Stereo is correct, but there are still small caveats, which are only really an issue if you overdo it.

You will need to use an extra layer in the animator (unless you are skilled enough to combine layers) which is a cost on the CPU side of things, each layer adding a fraction of a ms, which when scaled up with all your layers and everyone else's can become heavy.

And while it seems like Unity might be smart enough to let hidden gameobject's textures be unloaded from VRAM, they still have to be somewhere and if they do not fit in RAM, they will have to fit in the pagefile on your C drive. Grabbing textures from the pagefile would probably cause a noticeable stutter. Unlikely to be much of an issue on computers with 32GB of RAM, but still.

So a all-in-one avatar is still bad.

ivory sluice
#

Exactly, remember that a vrchat avatar is not a custom character editor, use only what you need and if there's too much, separate variants as different avatars

formal anvil
#

noted, thank you for the input! I'm keeping things from getting too heavy but was unsure how much I can add(under reasonable amount)

modest blade
#

I have a crazy Idea.

more textures, the more vram usage and more performance cost. what if I make a texture, with all the color needed, then modify the UV map to let it match the color?(sort like a lut table)

i know atlas is a thing, i want to discuss this silly idea

buoyant holly
#

you could also potentially use vertex colors

rose sequoia
#

I uploaded a test version of my avatar with 100% of constraints removed. In a empty world, I went from a rough 75 fps to a capped out 80fps... now I feel like I need to try and optimize ma constraints somehow 😦

#

Don't suppose there are any tricks for that kind of endeavour? (Like the magical direct blend tree method to reduce layer count)

ivory sluice
#

no unfortunately, there are no lighter alternatives to a constraint from what vrchat allows on avatars

rose sequoia
#

Sadness

#

Might see if there are any parent constraints that I could swap out for the slightly lighter rotation constraints

simple wagon
modest blade
#

I tried to not put everything under my armature to make it more maintenance friendly

#

using parent constrain, and now my avatars 40% of performance cost is from constrain bruh

rose sequoia
rose sequoia
modest blade
#

performance debt

rose sequoia
#

I might test if animating every single constraint off gives the same performance as them all just not existing. If it does, I might look into setting up some logic to turn off some constraints when I don't necessarily need them running.

modest blade
#

maybe not, I have most of my object with constraint OFF when its not needed and still has the performance cost.

#

still worth testing though

rose sequoia
#

Oof

#

Maybe if all weights are also 0 then it lessens it's impact?

modest blade
#

test it? create a empty project then make 200 object with parent constraint

#

im outside now, could not do the test myself, sry

rose sequoia
#

I'm at work currently so will have to wait until I'm home to try 😦

modest blade
#

well, guess we have to wait till we have the chance

robust anchor
#

parent constraints are the only constraints that can be avoidable without changing the behaviour of the object. [if the parent constraint only has 1 source].
and this will improve performance, as the object with the constraint won't have to have its transform matrix recalculated each frame if you instead use regular parenting.

thin steeple
#

Is there not a way to get CATS to decimate a single mesh in a scene without it merging all of the meshes?

#

Like, i want to lightly decimate some of these meshes, but CATS always merges all of the meshs then decimates

heady smelt
#

A better way, had been decimating edge loops on your own. Sippbox made a tutorial about it, in "how to upload a quest avi."
otherwise, no. at least not yet. same if you try to decimate via the bake feature. sad
the best way, if you want to use cats, maybe to preserve blendshapes. copy everyhting on your avi. make a duplicate. delete the meshes you dont want.
decimate that. then use cats to merge it.

#

First option easiest, second option nicests results, third option best automatic result but with drawbacks as you know (uniting meshes)

#

(edited it, think you wanted the heart closer to the easiest solution)

feral stone
#

I was wondering if anyone could point me to a guide or give me suggestions when it comes to optimizing texture memory?

#

I'm very aware of how bad this is and would like to optimize it ASAP, so any advice is welcome

#

I'd like to get it to like 25mb or lower

buoyant holly
feral stone
#

Thanks!

buoyant holly
#

basically use the texture import settings to set a lower maximum resolution for the texture

feral stone
#

Alr alr, thank you

buoyant holly
#

like your if a texture looks good at 2K instead of 4K go with the 2K

#

and like black and white mask textures can be at a lower resolution than like your color

#

the text tutorial I linked it would give pretty good detail on how to go about that

feral stone
#

Thank you so much, I'll take a look at it and try getting it way lower

buoyant holly
#

hopefully you're able to get it under 150

feral stone
#

Already got it to 78mb! I'd like to get it a tiny bit lower, so we'll see how I do

#

I guess it'll be fine just to have to extra compressed on the Quest version

buoyant holly
#

you can set texture compression settings on PC vs Quest so yeah just have an extra squished on Quest

feral stone
#

Yeah, not a huge deal

#

Really trying to find a comfy middle ground on my pedantic attention to detail and the performance of the game for others

buoyant holly
#

you might could use tiling detail maps for some of the repetitious detail to still look detailed but not consume as much vram

#

out of curiosity do you have a picture of your avatar Blizz

#

so I might could make suggestions?

feral stone
#

Just a booth model, it's pretty well optimized outside of the texturing

buoyant holly
#

cool

feral stone
#

The reason why there's so many physbones is due to that jacket, probs gonna replace it with smth else in the future

#

But outside of that and the texture memory, it's pretty optimized

buoyant holly
#

still great job getting it under very poor in a couple of minutes

feral stone
#

I'd have everything on one mesh, but I really struggle with making blendshapes for stuff that goes over the torso

#

So that jacket has its own thing so that I can just toggle its visibility using shaders

buoyant holly
#

like the stuff I could think of off the top my head besides whack the resolution more would involve mesh editing in blender to make it like mirrored uvs so you need less texture space but that might be a bit Overkill

feral stone
#

I was thinking of doing that down the road, but I more just wanted to be ready for the new rating system when it drops

buoyant holly
#

Cool

#

so you should be good to go now on vram stuff

feral stone
#

Ye, just reducing some actual file sizes now and playing around with resolutions until I find what I like

thin steeple
feral stone
#

I genuinely didn't realize how much of an impact on performance this had, I only started to realize once avatar creator friends told me about it and when Tupper started openly talking about it on Twitter

thin steeple
#

Those poor souls with 4GB of VRAM ...

#

World takes half of that... someone's avatar takes the other half.. another avatar loads and 10fps

thin steeple
feral stone
#

Alright, think I settled on a good amount lol

thin steeple
#

That's a great amount

feral stone
#

Yeah.... here's how it was before

thin steeple
#

according to Tupper, 150mb+ will grant you very poor in the near future

feral stone
#

Turns out I had EMISSIONS at 8k for no reason

thin steeple
#

I always make my emissions 1k (unless it looks like a mess then I do 2k)

feral stone
#

So I put those all down to 2K and made my main avatar texture 4k, I know 2k is more ideal, but I am compromising performance and detail here

#

I'll probs make them all lower on the Quest version

#

emissions to 1k and main texture to 2k

#

Also reduced filesize by 75%, which is nice

#

was like 20mb before, now it's 5mb

buoyant holly
feral stone
#

Forgive me, I had no idea 😔

#

I am repenting now though

buoyant holly
#

you're still doing better than most Avatar uploaders as you actually are trying to do something about your vram

feral stone
#

I really do care about performance for others in the game and would've done this in the first place if knew at the time

buoyant holly
#

it's only been the past month or so that VRam was viewable on Avatar stats without installing a Unity extension

robust anchor
#

depending on the desired effect, it just might be cheaper to generate it on the fly with a shader, as opposed to a texture.
especially if it is a high detail effect that should not be affected by UV-seams [the no UV-seams makes tiling a texture not feasable except on very specific geometry].

buoyant holly
#

if you know your way around blender to do mesh editing you could probably make the tiling texture stuff more practical

#

like having your uv Cuts match the clothing seam cuts

thin steeple
#

and then someone with shaders off, makes you look like a cut up crime scene lol

buoyant holly
#

You would still have the regular normal map below the tiling texture

#

And like the standard shader has a detail map mode so that's not going to disappear

feral stone
#

(click the images to see the stats, lol)

buoyant holly
#

Cool

rose sequoia
# modest blade well, guess we have to wait till we have the chance

I only just now read this vrcht dev update and it actually goes into some detail regarding constraint perf impact!
https://ask.vrchat.com/t/developer-update-16-february-2023/16474
Basically - disbling the game object the component is on or the component itself " incurs a cost so low that the constraint basically doesn’t exist." But just changing the constraints " Is Active" property (but leaving the game object and component enabled) only reduces the cost a little.

modest blade
#

shxt i use parent constraint to bound my physbone colliders(a lot)

#

guess i would have to parent them under the bones instead

lone tiger
#

Disabling individual components in a gameobject is also more performant than disabling entire gameobject.

rose sequoia
#

I have a bunch of parent constraints scattered all around an avatar - I want to try to do a count and also possibly quickly locate all of them to see if I can notice any that might be easily removed/optimized.
Anyone know of a way to count all constraints on an avatar and/or select/show the location of them? (similar to how the VRC SDK shows a count of PhysBone components and has a "Select" button to show where they are in the scene)

grizzled shard
velvet crow
onyx harness
marble rain
#

like if u need to smoothly blend 50+ layers with alot of states. its gonna take days to make it work. and ontop of that you cannot use Avatar masks in blend trees.

#

but that said anything in scale takes alot of performance. it should always be Drawcalls(Materials) > Animation layers > Polygons > Bones. since many people started to realize that to many materials causes issues.

bold wharf
marble rain
bold wharf
#

I mean the only thing you are directly changing is the parameter type in animator from bool to float if even necessary. After that its literally just plugging in your on and off animations. And if you don't have an off or on due to however your animations were set up previously, it takes less than 10 seconds to make one

#

It seriously doesn't take a lot of time or effort to switch your toggle setups to this.

marble rain
# bold wharf I mean the only thing you are directly changing is the parameter type in animato...

your missing the big point here lol. if you have 50 layers. with a bunch of bools or other types lets assume 8 different types in each layer. each controlling something separate, you will first of all run out of syncable space. second it takes hours or longer to redefine and restructure it all. due to the unknown logic at talk. all of this depends on how simple your set up is. but regardless. you will run out of syncable types.

bold wharf
#

Ok so two things;
Firstly you won't run out of syncable types because you only change them in the animator, not in the sync params list
Second this is about toggles, not any sort of advanced logic. It is like three clicks to setup a toggle layer in a blendtree via this method
I suggest you give a read to the docs linked. Every ms of frametime counts and as others have pointed out above animator layers can very easily add up.

#

This method does have its short comings, don't get me wrong. You can't put every single layer into a huge blendtree, its simply not possible. But for your basic on off toggles, or hue sliders/other radials it seriously is easy to set up

marble rain
#

and the point still stands.

#

the amount of animations, or any other things. is not something that can be determined without looking at each product.

bold wharf
#

Ok so you have a bool toggle right? In your synced parameter list it is a bool, normally it would be a bool in your animator as well. With this method you just change it in the animator and leave it be bool in the synced parameter list. You are mismatching parameter types. The Number of parameters or types getting synced doesn't change

marble rain
#

you cant use bools in a blend tree.

#

it only accepts float

marble rain
bold wharf
#

Yes

#

You change them to float

#

but only in the animator

marble rain
#

no. you have to do that everywhere.

bold wharf
#

You can missmatch your parameter type between animator and expressions paramater list

#

I too know my way around unity

#

And I have been using this direct blend tree method for my toggles for months now

marble rain
#

the only reason why thats possible is because the bool is seen as a 0 or 1 as well. if you work outside those values u cannot.

bold wharf
#

Nope ints work as well

#

Just need your thresholds to looks like this

marble rain
#

those are not INT. those are floats.

bold wharf
#

Yes but it is still controlled by an int

marble rain
#

you will never get a 3 from a bool.

#

or 2

bold wharf
#

Yep

#

You will get 1 or 0, which works fine for a toggle

#

In fact, thats kinda the point of bools

onyx harness
# marble rain no. you have to do that everywhere.

Surprisingly, you actually don’t. This is the step that stumped me on this concept for months till I saw you can set the parameter as Bool in the Expression Parameter list and Float in the Animator Controller. It actually converts it for you in that process from 0 & 1 to 0.0 & 1.0 thus allowing you to use 1 bit to control a blendtree.

#

Heck even Ints giving 0, 1, 2, 3… in the Expression Parameter List are converted to 0.0, 1.0, 2.0, 3.0… in the Animator Controller. it’s strange but it works

marble rain
onyx harness
#

I also might just be lacking knowledge to fully understand what you meant

marble rain
#

thats what i was trying to get at

#

Blendtrees only accepts Floats. as parameter

onyx harness
#

Indeed. Though blendtrees can take values over 1 as their threshold even if it doesn’t make much sense when thinking a float is -1.0 to 1.0. The thing is the conversion sets the value of the float to 2.0, 3.0 and so on when using an Int value of 2, 3 and so on. It does meet these threshold values.

#

Why? I can’t say, I literally don’t understand it, but it happens.

#

Thus the Int in the Expression Parameter List can be mismatched as a Float in the Animator Controller and then used by the Blendtree.

lone tiger
#

Values of floats in blendtrees can be above 1 or under -1.

toxic needle
#

Is there an issue with mixing WD on and off?

#

Or rather if I make my toggles into a blendtree should I change things like gogoloco to the WD variant as well

onyx harness
#

You can use WD on for the Direct blendtree in a WD Off setup. This is the only instance where mixing is okay

toxic needle
#

Cool beans, thank you

zenith mist
#

is this optimized enough?

tropic sonnet
#

oh yeah, that's quest compatible for sure

heavy knot
tired grove
neat karma
#

Woo progress on trying to optimize my avatar, I joined some meshes in blender after rebuilding the avatar in blender instead of unity, next thing would be material slots

#

But that requires uv mapping right...

#

Oh yes I need to decimate some stuff too

#

So close to getting poor or better

modest blade
#

i have tested in a empty world with nobody else, my avatar only has a 2-3ms(I know its heavy already ;( im working to optimize it) cpu time when present in the scene just one.

if any mirror(4096) enabled or realtime lighting present in the scene or another avatar instance present, the cpu time could bump to 10 - 15ms

is this normal?

proper grail
#

Not at all, soundslike you have 80 grabpass materials

modest blade
#

I have 4 grabpass material, the objects are disabled when its not needed, which in the test it is disabled

#

mind explain a bit more about grabpass?

proper grail
#

Grabpass more or less waits until the scene is drawn and than does a secondary draw

#

realtime lights have a heavy cost as well, each overlapping one doubles drawcalls as well as activates usually dormant shader code

#

youll hit the upper limit of 500 drawcalls for 144hz preeeeety quickly with not many of each

modest blade
#

so mirrors, realtime light could make grabpass stuff explode?

proper grail
#

'tis not very VR friendly, yeah

modest blade
#

alright, thanks for the help

modest blade
#

lag spike when loading the avatar, what is causing that?

tawdry drift
#

loading the avatar

modest blade
#

yeah... Id like to know all possible causes(maybe compression? script initialization? etc....) so I can optimize it

heavy knot
#

make sure that's off on all the textures

modest blade
#

alrighr, I have all my textures crunched to reduce file size

heavy knot
#

VRChat already does LZMA compression on the bundles

modest blade
#

if not crunch, how can I keep file size small while visually acceptable?

heavy knot
#

limit yourself to 2k textures

onyx harness
#

I stopped crunching my bigger (1k/2k) diffuse textures

heavy knot
#

only use 4k in rare occasions like for a single texture avatar

onyx harness
#

All the masks and single channel textures still use it though

modest blade
#

I current avatar size is 50mb, its a really large avatar(by all means), it is all 2k or less already

#

if I dont crunch it, it could bump to 70-100 I suppose, since there is too much texture

onyx harness
#

Compressed is 50mb? Sounds like one of my avatars

#

Do you have audio/big mesh files?

modest blade
#

yes, 7 audio(5full length song compressed to less than 2mb each in audition)

#

2 sound effect, less than 0.5mb

#

for mesh, I dont think I have any single huge file size mesh

onyx harness
#

I had an fbx that was like 25-30mb. Removed unused vertex colour maps, uv map layers and blendshapes on all meshes. Now it’s 11mb.

#

The model is still very packed (like 3-4 avatars in 1) but its better now.

modest blade
#

I did clean up all unnecessary blendshape , uv and vertex color

my fbx is still big though, I have like 15 set of cloth in that one fbx

#

I do merge cloth and accessories in blender to make it as clean as possible

onyx harness
#

Good ol’ wardrobe avatars. Never seen the light of public worlds.

modest blade
#

not sure what do.you mean

#

well, I do use them all thought, not a waste

onyx harness
#

Avatars with multiple outfits on them, I call them wardrobe avatars.

modest blade
#

wardrobe yes, that much stuff do cause performance issue, thats why I do merge in blender to keep everything clean as possible

#

bruh but still, its file size is large af

onyx harness
#

I use markcreator’s size profiler for compressed size and Thrys Avatar Evaluator for Vram

heavy knot
#

You already take the uncompressed amount to vram on the textures

#

all it does is just makes the assetbundle smaller and cause lag on load due to it having to decompress the textures again

modest blade
#

yes, thats exactly whats happening now, so I seek for instruction to keep the file size small and solve the lag spike

heavy knot
#

how many textures do you have in total

onyx harness
#

Reduce the number of textures you use

#

It’s a balance of compress to keep small and uncompress to keep lag free.

modest blade
#

I have no idea for now since im not near by my pc, but should be a absurd amount

onyx harness
#

This all rides on the texture count

modest blade
#

can I combine them somehow?

#

instead of remove

onyx harness
#

I’ve atlased masks and then used the tile/scale and offset of some texture inputs to position it right

#

Like viewing the frames of a spritesheet

#

Like 16 masks in 1 texture instead of 16 textures.

modest blade
#

atlas?

onyx harness
#

Like merging. Take 4 textures and make 1 2x2 texture

modest blade
#

you mean combine textures into a big one then offset and tile parts in shader?

neat karma
#

My avatar is just under 100 MB vram usage and I didnt compress anything and its like 19MB as download

#

Everything but my skin is less as 2K

#

I really need to decimate my boots

#

Came from booth and made for my base but noticed they are 30K!!!! Polygons

#

But i dont want to lose much of the shape

#

Would i need to redo the uv stuff too if I decimate them a bit more?

neat karma
#

I think the polygons are in the shoelaces

#

cus the rest seems pretty optimized on it

#

and the skirt is a big polygon issue too

marble rain
#

you most likely got to many materials. if your optimized you shouldn't be above 30 mb of vram use for textures alone.

neat karma
#

yep

#

trying to optimize but those polys of just the boots and skirt are v

#

big yike

#

but ey I only knew unity xd

#

trying to now make it in blender

#

but I got like no skill in blender xd

marble rain
#

that could be worse in polygons.

#

how many materials does the avatar have?

neat karma
#

enough to make it very poor

#

I blame the booth creators

#

am already suprised I was able to sort of recreate my avatar in blender

#

but ye idk anything about texture editing or uv mapping or weightpainting at all

#

currently tris for the whole model are 150K

#

50K of that is just the boots and skirt

#

got 11 skinned meshes currently

#

think the body and face also take up alot of the tris

crisp sandal
#

hey guys !!

#

so i have a really small problem with my avatar i made

#

so the avatar is super fins and everything is going good !

#

but in vrchat if i put like clothes and stuff

#

and change the avatar and go back

#

everything goes back to default

#

help

neat karma
#

thats intentional

#

because you did not uncheck the saved? in the params menu

crisp sandal
#

oh

#

so i go to the params menu?

neat karma
#

in unity yes

crisp sandal
#

okay !

#

one momentt

neat karma
#

do remind

crisp sandal
#

okay !

#

theres the params

#

ahh i cant send imagess

neat karma
#

if u can remove all clothes, it wont put them back if u change out of it then

crisp sandal
#

oh okay

neat karma
#

mhmm body plus head = 46K tris, Skirt + boots is 51K tris, thats 4 out of 11 meshes lmao

hollow root
ember tide
#

can anyone help me optimize my model for both PC and Quest?

#

im brand spanking new to the whole modeling thing

#

i am currently using a vroid model as the base. Which i have already set uploaded to PC but it is very poor in performance. and it is not yet even built for android

vivid night
# ember tide can anyone help me optimize my model for both PC and Quest?

This time we're looking into some simple tips on how to optimize your VRChat avatar in Blender.

Rainhet's Tutorial Playlist:
https://youtube.com/playlist?list=PL2EEbgwoJzdt5kFVDyY2lliNqf7cWJeD3

#Blender #VRChat #Tutorial #Optimization

If you found this helpful and entertaining, please consider coming a Patron.
https://www.patreon.com/Aggrota...

▶ Play video
feral stone
#

Hey all, was wondering if anyone could point me to a guide or video that goes over optimizing physbone transformations?

It's literally the only thing keeping me from being green in the game now and I don't mind merging a few bones or whatever to fix it

#

I'm capable of using Blender and Unity, so anything that uses either of those programs is fine for me

proper grail
#

if you wanna be lazy just adding most of the back hair to the list of ignored bones should be the 21 bones yous trying to get rid of

feral stone
#

Not a bad idea actually

bronze lantern
#

I am trying to optimize my avatar to get him to poor so I can attend events, what would be the best thing to optimize in order to get him to poor?

bold wharf
#

Why do you have so many skinned meshes? Do you have a lot of toggles or something?

#

Because easiest way would be to just pick a single set of clothing and ditch the rest of your toggles.

bronze lantern
#

Yes this avatar does, I bought him from a gumroad

#

I am trying to optimize it

bold wharf
#

Yes

zealous wigeon
#

You'll simply have to remove stuff.

bold wharf
#

Getting rid of excess clothing would be easy to do and bring down all three of your very poor stats.

#

If you absolutely must keep every single toggle then you're going to have a lot of work ahead of you

bronze lantern
#

Alright that makes sense, I don't use a lot of the toggles, I think most of them are just to enable or disable clothes

#

Guess I need to throw him in blender and combine the meshes?

bold wharf
#

To hit poor you need to drop 3 meshes, if you wanna be really lazy you can just delete them in unity

bronze lantern
bold wharf
#

I don't think so

feral stone
#

I'd say to just put them all on one mesh and make blendshapes to replace some of the clothing toggles you'd like to keep

zealous wigeon
feral stone
#

This video helped me a lot with that
https://youtu.be/73REcZVWMhA

A simple tutorial on Texture Atlasing/Texture Baking using Blender 2.8+.

Links in Video:
Pumkins Tools: https://github.com/rurre/PumkinsAvatarTools/releases/tag/0.9.5b

=TIME STAMPS=
0:00 - Intro
0:08 - Disclaimer
0:30 - Combine Your Meshes
0:42 - Removing Leftover UVMaps
1:04 - Removing Unused Materials
1:17 - Creating Baking UVMap
1:40 - ...

▶ Play video
feral stone
neat karma
#

guess u need to go into blender to decimate

zealous wigeon
feral stone
bronze lantern
#

Okay, so I removed all accessories, and toggles/meshes I rarely use, hes now down to these stats, I guess the next thing would be to decimate to reduce polys

zealous wigeon
zealous wigeon
zealous wigeon
#

Unfortunately.

bronze lantern
#

Oh, Yeah that's absolutely true I don't use the toggles for removing shirt often, so I can get rid of his chest to reduce it

zealous wigeon
marble rain
zealous wigeon
marble rain
#

its far to close. its not ideal

neat karma
#

me somehow being able to show 6 godfall avatars on Intel HD4000 graphicsvrcThinking

bold wharf
feral stone
rose sequoia
#

Just keep in mind what your avatar will look like with shaders hidden (if you have 16 overlapping assets hidden only via UV discard, then the experience for users hiding your shaders will not be amazing).

#

It's so frustrating that we're forced to do toggles in a less optimized way on quest (which needs the optimization much more than PC does) 😦

buoyant holly
#

you probably shouldn't be having as much stuff on your avatar on Quest in the first place

ember tide
#

See, i have 0 experience with both blender and unity in terms of toggels and optimization. There are so many things that need help (i started with a vroid model so thatsprobably why?)

#

and i am trying to work on getting my avatar in good condition for both PC and Quest

buoyant holly
#

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
#

0:00 | Intro
0:53 | What you need
1:11 | Vroid removing transparent areas
6:25 | Exporting from vroid
12:01 | Blender
14:12 | Setting up your avatar in Blender
16:59 | Cleaning eyebrows
19:16 | Demonstrating editing the mesh
21:31 | Combining materials
23:04 | Reducing polygons
25:10 | Exporting from blender
26:00 | Unity
26:46 | Configuring mod...

▶ Play video
neat karma
#

It is funny how I found out that of someone does not show my shaders my clothes are all white but my skin and hair and tail are normal

echo badge
#

What I can think of is it not add more vertices to make is smooth but just click on the smooth button in view mode

buoyant holly
#

Back once again with another free @VRChat avatar optimizer tool!

VRCFury can now automatically convert toggles on your avatar into direct blend trees -- saving animator layers and frame time, no configuration needed! https://vrcfury.com

Thx to @hfcRedddd for the idea

▶ Play video
marble rain
#

i wouldn't use it. cause it doesn't really work lol

buoyant holly
#

how so

marble rain
#

does not create proper animators, or animation files. for like the direct tree. infact it does not even create a direct tree at all

#

it just creates a lot of empty animators

buoyant holly
#

maybe let the developer know that they can fix it so it does what it's supposed to

verbal bloom
#

Anyone know why the tips of these are scrunching up rather than hanging loose?

#

I assume it might be something to do with end bones, but...

ivory furnace
#

does anybody have any good tutorials for optimizing hair? i have finished modeling everything and kept my tris at 2500 but as soon as I attempt to do any kind of hair things get totally out of control.im currently building from curves > converting to mesh > desubdividing

#

this is my first model so hopefully I'm not sounding to stupid here

buoyant holly
ivory furnace
#

awesome thanks. I think I may also be overcomplicating the overall structure with layers but Im not sure how else to achieve the sort of look Im going for.

buoyant holly
#

do I'm wondering if doing some retopology on the hair so it's like one solid sculpt might result in less triangles?

ivory furnace
buoyant holly
#

question are you targeting PC or quest with the avatar

ivory furnace
#

def pc

ivory furnace
#

that looks fantastic! thanks

buoyant holly
#

glad to be of help

#

it just tends to be an uncommon art style in vrchat because everyone running around as anime or furries so geometry spline hair tends to fit those out Styles better

ivory furnace
#

i def like that style a lot. i just really wanted to make something trad goth for myself because i couldn't find anything anywhere. that said i cant imagine my first one will be usable : P

buoyant holly
#

your first one would probably be usable but doesn't seem to capture the look you're going for to well?

ivory furnace
#

A little bit of not capturing the look and a little bit of it probably not being super functional. its a learning experience so I'm comfortable redoing things a few times until they look acceptable.

proper grail
#

all of those options are vastly more time consuming than "how to merge 2 meshes blender" (one button, merge mesh btw) and wont work as well as youd think, the viseme parameter is only the most dominate viseme currently and doesnt reflect the mix that vrchats viseme system uses.

#

yeah my first thought was why is the blush and body separate mesh in the first place. weird that the blush has a vertex groups that are not 100% head. weird that the body and blush have the same material but are assigned different in unity

#

but, go with one, make the default state go straight to Sil and make another transition from entry to sil at viseme=0. Go from sil to exit if != 1. No need for a selector or idle

#

it will still clip at certain times, again as you only get the most dominant viseme and vrchat uses a blend of every

#

unless you want three layers; one for converting viseme int to the 14 viseme floats, one for smoothing, and one for translating the smoothed values into blendshapes.. itll still only have one active at a time

#

blend tree method will give you a super robot look, you get one viseme with no blending. Atleast 1 would let you choose the transition time for a little smoothing

undone cradle
#

the knowledge is all over the internet, Blender is far easier to learn than any other 3D modelling software if you ask me. 🤷‍♂️

#

just search for more general tutorials, instead of "how to make blush blendshape blender", try something like "how to merge meshes blender" for merging, and "how to make shape key blender" for blendshapes.

tawdry drift
#

anyone dming you in here asking money to tell you how to fix something/commission is a scam anyways

heady smelt
#

Has there been any guidance as to what the new VRAM requirements will be for each performance level?

#

I have mine cut down to ~45MB now, just trying to keep myself at medium when the moment comes.

zealous wigeon
#

As you can tell, they were extremely generous

heady smelt
#

Thank you. Couldn't find the right search term to track it down.

#

Am excited to be able to set my safety settings to a reasonable level rather than having to tick people on in big instances.

buoyant holly
#

looks like you would be good rank on PC and need to shave off 5 MB to not be very poor on Quest

south lintel
# marble rain it just creates a lot of empty animators

I'm always here to help if you have trouble 🙂. Because vrcf is totally non-destructive, it makes a clone of each of your animators before it begins your work. If you don't see any direct trees being made, it's possible that your toggles are ineligible because they have behaviours, more than two states in their layer, etc. When the optimizer runs, an optimizer report is printed to the unity console which can help you determine why a toggle wasn't optimized if you are interested.

marble rain
#

No need lol. Everything i make is optimized. To the bone and beside i know unity in and out.

fading sedge
calm spade
#
#

It's also counted in mb

fading sedge
#

Ah, ok

heady smelt
#

Ight I've got a question bc I'm genuinely curious

#

I'm I'm the middle of atlasing but as I made my texture dimensions 4096x4096, I wondered if there's a better size

buoyant holly
#

I guess a question would be is how much empty space is there in your Atlas

heady smelt
#

0

buoyant holly
#

then that's probably fine if it contains like all of your avatar

heady smelt
#

Alrighty just figured I'd ask bc like why not

marble rain
#

a single 4k texture will not do anything bad.

grim palm
#

Can puss in boots be a avatar

empty garden
#

trying to optimize an avatar for quest for a friend, but quest isnt something i deal with often, what magic boxes do i click on in the quirky little shaders to make this problem go away?

ivory sluice
#

you have to cut the mesh out by hand since quest avatar shaders don't support transparency

empty garden
#

i was afraid that was the case, thanks

ivory sluice
#

yw

south flax
#

getting a bit stuck, trying to update my avatar (been away a while) from VRoid, Using blender 2.93.15, latest versions of material-combiner-addon, VRM_Addon_for_Blender and cats-blender-plugin however when i try to create an atlas and select save atlas to instead of normal popping up a save dialog and working, it just combined everything into 2 materials (even tho i have all selected) and is mangling the heck out of the texture and dont save it anywhere

i also noticed when importing the model for the first time its not greyed out, in the past i had to select fix model to get the textures to work, i am assuming its some form of incompatibility somewhere but not 100% where

any advice?

#

this is has worked in the past, and ive tried going though a bunch of tutorials to see if i missed anything since its been a while, but no matter what i do i get the same result

#

i know the CATS plugin isnt exactly updated much and VRoid has been updated since the last time i did this, could it be the release version is not supported? it was in Beta last time i tried, i rly dno anymore ^^;

#

(i can move this to #avatar-help if this is the wrong place, just seamed more fitting given the issue)

south flax
#

ahh, worked it out, its an issue with material combiner (Blender 3.4, 2.9 below)

#

it does indeed work correctly now

#

i will leave this here in case someone else also has this issue

radiant shadow
#

blender 2.93.3

south flax
tawdry drift
#

you can unpack textures in the shader tab too

#

in the orange image node itll look like a folder

grand palm
#

What should I combine?

jovial tartan
velvet crow
#

If you're just using one texture at a time on a material, and swapping them out, does it matter if they are atlased or not? I.E: For one material, is there a difference between swapping the texture and UV shifting the texture?

onyx harness
velvet crow
#

Oh? I see. I guess I never checked if you could

left pivot
#

Any advice for dropping 15mb of vram usage? Most obvious place to start? Etc

proper grail
#

Texture import settings. Set alpha source to none for any texture that doesnt need it and lower the max size. Maps and masks can be set to bilinear resizing and set much lower size than perceived textures

marble rain
left pivot
#

It's a 6mb avatar. I was horrified to see it unpacking to 90mb in vram. Surely I'm doing something wrong

merry swift
left pivot
#

Need good for club standards, otherwise yeah I wouldn't care.

merry swift
#

Any clubs I've been to are medium or better and 100MB VRAM if they even specify

radiant shadow
#

set anything on texture compression (ignore crunch) , never none - seen people who forget that

merry swift
proper grail
#

the only two settings that affect vram size are Max Size and Alpha Source

proper grail
#

no.

merry swift
merry swift
left pivot
#

I'll look into it when I get home. Thanks for the advice boys

radiant shadow
#

texture compression do affect vram size , we're not talking crunch

proper grail
#

unless your settings are weird, dxt1 is an rgb texture while dxt5 and bc7 are rgba. The vram size should not change if your other settings are correct

radiant shadow
#

nothing wierd, this is default

merry swift
#

Raz's article linked in the description does a great job explaining the formats

radiant shadow
#

feel free to upload a test av with none vs high quality and see vram size difference

merry swift
#

I also have Unity's own import matrix linked if you want to refer to that

#

I'm pretty sure I do anyway

radiant shadow
#

same av , high vs none compression - default unity texture settings

#

26 vs 90~

merry swift
#

That's actually smaller than I'd have expected

#

I still have much to learn 😅

proper grail
#

highest quality/lowest compression is the 26mb side?

tropic sonnet
#

...

proper grail
#

'aight i talked it over with the boys and it turns out that if you use textures with no alpha channel than high compression will add a blank alpha channel, increasing vram size by 100% (3 channels to 4?). Setting it back to normal will undo this unoptimization

#

My testing failed as the texture I was using to test this.. used the alpha channel for hair cutout

fleet stirrup
vocal zephyr
#
VRChat

The Avatar Performance Ranking System allows you to see how much a user's avatar is affecting performance via analysis of the components on that user's avatar. You can also use it on yourself to see how performant your avatar is. This system is provided to inform users what is likely the most perfor...

buoyant holly
marble rain
merry swift
#

You make really good points though

arctic halo
toxic needle
#

Currently working on a model with an extremely regular uv map (thank you shugan for making my life easier) and want to reduce polygons. Obviously CATS decimate is an option but makes the uv really hard to work with.

With other models I would select the edge loops and dissolve them one, but with this many individual strands I dont have the time or the patience. Is there a way to select vertices on a model by selecting it on the uv map (like what I'm showing in the image) or dissolve them directly in the map editor etc

toxic needle
#

half an hour of googling later I found the sync button in case anyone wants the answer

wet harness
#

hm...
So if you don't care about the performance rank, but actual optimization, even with a bunch of stuff on an avatar, I suppose you have to focus on those key things:

  • Animator logic and keeping it performant (not many loops, low amount of layers, etc)
  • keep the amount of blendshapes low, or at least separate high blendshape meshes in to 32k max meshes (unity can optimize meshes with blendshapes below 32k quite a bit, faces for example)
  • keeping VRAM usage low (textures and meshes)
  • keep the amount of total material slots that are active low
  • be careful about the shader/shader features that you use
  • don't overuse constraints, use them only when necessary
  • don't overuse physbones/physbone colliders and contacts
  • deactivate things completly if not in use (things like physbones for a coat, that are deactivated when the coat is deactivated)

Did I miss anything?

Reason for asking is simple: The performance rank system is flawed in many ways, but particular in the way that it takes deactivated things in to account that have basically zero impact if deactivated. As long as that is the case, I don't care too much about the performance rank itself. But I still want it to be as optimized as I can make it with reasonable effort (you know, 80/20 rule and stuff).

ivory sluice
#

It's not flawed, it just won't update everytime an action is executed for performance reasons and for not having avatars loaded/unloaded every 2 by 3

And mesh/shader vram is being worked on

wet harness
ivory sluice
#

What flaw did i mention tho

buoyant holly
#

counting everything as if it's on all the time which simplifies in a way that doesn't reflect the real-world performance of the avatar?

merry swift
#

calculating performance in realtime is also, counter to the whole point, expensive ;)

buoyant holly
#

yes that would be silly to attempt to try to account for toggles

merry swift
#

I think any engineering effort put into improving the performance ranking system is better spent elsewhere rn. I'd personally prefer seeing the network delay issues addressed before putting more polish (or basic functionality as you'd probably call it) on performance ranking

#

VRC's current performance ranking system gets Teeh's seal of "Good enough"

buoyant holly
#

and it has gotten better recently now that it takes Vram into account

muted ravine
#

VRAM should just be its own limit / settings imho and not count into the general ranking.
Then just leave the end user choose the VRAM limit(s)

It doesn't make sense to target an arbitrary 8GB limit when you have different VRAM GPU sizes.
At minimum it should / could auto adjust the limits based on GPU total VRAM installed on the user's computer.
It's simple calculations as explained in the video.

zealous wigeon
buoyant holly
#

and putting it on Avatar ranking makes it to where everyone can see the vram at a glance

muted ravine
#

of course it's better than nothing.

buoyant holly
#

and also the quest would not benefit from user set vram limit because that has fixed Ram

muted ravine
muted ravine
#

with one choice 😄

#

quest already has all its own limits. 😄

#

Do hidden avatars still use VRAM btw ?

zealous wigeon
zealous wigeon
muted ravine
zealous wigeon
muted ravine
zealous wigeon
zealous wigeon
muted ravine
zealous wigeon
# muted ravine yeah exactly, we'd need more levels 🙂

Or, we cap off very poor, or replace it, with "Too Poor" a ranking with the same limitations as Very Poor on Quest.
A ranking that will use dark patterns to make it really annoying to show, which would dissuade people from using it for more than just experimental avatars.

muted ravine
#

For clubs it's the same, the rule "no very poor" nowadays is not very useful anymore imho.
Because the user can already set to hide all verypoor or all poor.
so the user already has the choice 🙂
If there was also a blocking setting for all the other levels in vrchat, clubs wouldn't need to do the police anymore basically 😄

zealous wigeon
muted ravine
#

yeah but with fallback it's kinda ok nowaday, and that's why you need a nice looking fallback 😄

zealous wigeon
muted ravine
#

although I kinda like seeing a bunch of default vrchat fallback wuffies dancing ;))

ivory sluice
#

perhaps w the new avatar jam there'll be some cool new legacy fallbacks

muted ravine
#

yeah it'd actually be cool if you could choose yourself which default fallback to display for others 😄

muted ravine
zealous wigeon
muted ravine
#

yeah I mean for those who have not set their own fallback I'd rather see the wuffy than the toothbrush 😉

ivory sluice
#

it'd be cooler if you could set a fallback from a public avatar made to be a fallback but it seems like you can't

#

at least from what i've seen when i visited a fallback avatar world

zealous wigeon
muted ravine
#

or just upload my own fallback for others 😄

#

would also make better performance too

wet harness
muted ravine
zealous wigeon
wet harness
#

for example: I don't care that much if an avatar has 100k polygon, that has usually not that big of an impact, but I would actually tighten up some other limits, like physbones for example

zealous wigeon
#

They seem to be logarithmic (can't get better than that basically)

ivory sluice
#

it's basically using only what's needed and having its own runtime parameter limits from what i see, and that makes then very performant

muted ravine
#

could also be that it was in not displayed accessories or such maybe..

zealous wigeon
wet harness
# zealous wigeon To not devalue the system I think it would then have to check the amount of VRAM...

not if it would be in the settings file, which there are already some options, like camera resolutions past 8k (IIRC), and some other settings.
So it would be nice if we could say in the Menu "Use conf file limits" or whatever, to switch to it.
People who go in to that effort of creating such a conf file, or modifying it, should know what they are doing. And if not, and they are still doing it, their fault. VRChat already warns with certain settings (horizon adjust, greater then 4k pictures) about performance impact.
It's basically about having the option to adjust, and not getting forced limits.

muted ravine
#

similar to physbone, just set you own limits..

zealous wigeon
muted ravine
#

anyway trying to optimize some old avatars

zealous wigeon
wet harness
# zealous wigeon Physbones are incredibly optimized.

I've still seen quite heavy avatars, and if there are a bunch of it, it does have an impact, and CPU frametime is usually more precious then CPU frametime in most cases.
Also, smooth 45FPS because the GPU can't keep up is smoother then the stuttery mess that gets produced if the CPU can't keep up.

muted ravine
#

anyone knows why thry shows a different total than vrchat for texture ?
when I count the individual texture sizes in Thry's list, it's closer to vrchat (100M) than what Thry's displays (177)

wet harness
zealous wigeon
muted ravine
#

Thry is 177 text + 15 mesh
VRchat says 102M

#

when I sum the texture list in Thry it's more like vrchat

ivory sluice
#

maybe they use different ways to guess the size, vrchat taking it from the asset bundle and thry from the project assets in use

wet harness
muted ravine
#

not sure where the 177MB are coming from.

ivory sluice
#

prolly because all the textures are crunched

wet harness
# muted ravine

I see several textures that look almost identical, maybe you have some duplicates? And maybe you could use masks and some shader feature to make the differences?

zealous wigeon
muted ravine
muted ravine
ivory sluice
#

yee but it might be calculating the uncompressed memory size

zealous wigeon
ivory sluice
#

uncompressed as for decompressing after download

wet harness
muted ravine
zealous wigeon
wet harness
proper grail
#

if they have unique names they are packed as different textures

#

you can reuse textures, but not duplicate and rename them

wet harness
ivory sluice
wet harness
zealous wigeon
wet harness
muted ravine
#

yeah, one thing that would be nice is to be able to "strip" what's over the limit too 🙂
there used to be a performance mod that was doing that "back in the days" and in real time 😉
that was super nice and definitely helped performances

wet harness
#

as avatars performance ranks are calculated on the fly, after loading an avatar, it shouldn't be to hard to implement reading those limits from a config file if it exists. The VRChat client it self is almost setup for it. (unless they have those variables hardcoded in the code, instead having them defined as constants, which would be bad programming practice)

muted ravine
#

Yeah I still don't understand why it has to load the entire packing before deciding ... to hide it

zealous wigeon
# wet harness that's why I would like to have adjustable limits, they can "replace" that to a ...

And confuse people about what the rankings mean.
Diluting their usefulness.

I understand that most people really do not care about their rank unless they have to, which I assume is a group you are part of, but the rankings should mean something and should be set in stone to not punish people with poor computers, because we both know that just like Quest, if given the option, people will make performance terrible in VRChat and then blame VRChat, and then not do anything to fix the issue.

muted ravine
#

splitting the perf info and the actual avatar might help at some point maybe 😉
that way it doesn't even download the package if it's over the limit basically

zealous wigeon
ivory sluice
#

needing to read the assetbundle data before deciding ig
'd be good that the avatars had the stats saved on them

muted ravine
wet harness
muted ravine
#

just an api request asking which rank is this avatar basically

zealous wigeon
muted ravine
limpid solstice
zealous wigeon
wet harness
muted ravine
zealous wigeon
# wet harness please don't make assumptions about me without knowing me, thank you. I tried to...

I shouldn't make assumptions, sorry.

I get what you mean with the variance in hardware, but if VRChat doesn't detect and then force what settings you could change that config file to, what is stopping VRChat from basically stopping to have a performance ranking system in the first place, users would just set all those things to the max.

One friend in a group does it and then it spreads to everyone else and now the people with poor computers suffer.

muted ravine
#

They should activate crunch compress by default imho. 😉 would save on download size too.
There are still very very few who do it .

zealous wigeon
limpid solstice
#

Calculating an avatars performance on the server side would be nice, they could even add abilities to check the avatar for anything malicious

wet harness
ivory sluice
#

it shouldn't be crunch compressing textures but administrating texture memory better
apart that crunch compression just destroys tthe quality most of the time

zealous wigeon
limpid solstice
wet harness
muted ravine
#

everything that is cpu heavy basically..

buoyant holly
zealous wigeon
wet harness
muted ravine
zealous wigeon
buoyant holly
#

and honestly the ranking system needs to stay around as a thing that's the same for everybody so that folks have goal post to optimize their avatars towards

wet harness
buoyant holly
#

most people are not going to have the foggiest idea what numbers they should set stuff to

zealous wigeon
zealous wigeon
buoyant holly
#

you can just use show Avatar to show all of your very poor but reasonable friends

wet harness
# zealous wigeon You mean people would turn those limits up? My evidence for why that wouldn't h...

Quest is used by a lot of people who don't know anything about how any of those things even remotely work, from my experience. A lot of kids and people who sometimes don't even have a PC. And most of them don't spend that much time in VRChat, as you can easily see from their user ranks.
Many people in my friends list (mainly PC) are aware of those things and they go and hunt down bad avatars in an instance to block them, if the performance is to bad.

buoyant holly
#

PC users have no way of knowing if the Avatar is causing trouble for Quest users outside of asking as the Avatar statue can see what only be reflecting the PC Avatar

muted ravine
#

😄

buoyant holly
#

asking for a while doesn't necessarily mean vrc would consider it a good idea

zealous wigeon
# wet harness Quest is used by a _lot_ of people who don't know anything about how any of thos...

Back in the day when VRChat was even more enthusiast, when the people you met where all VR enthusiast, it was very common to mod the SDK to get around the hard polygon limit at the time, I won't deny that it was low, but it is a good example for that even knowledgeable people will disregard that.

But also, as the rankings get better and representative of true performance, people like your friends and me won't have to find the poorly performing avatar as often. VRChat would have to make toggles represented, which sure isn't going to be easy.

zealous wigeon
muted ravine
wet harness
buoyant holly
#

vrchat does actually have to worry about performance limits to some extent like I'm honestly surprised they haven't been kicked off of The Quest store for the egregious performance most of the time

#

which is why there's no transparency shaders for avatars and constrained on quest

wet harness
buoyant holly
#

how so most people won't have any ability to know what numbers correspond to their actual performance

wet harness
heady smelt
#

I know my avatars have dropped from good/medium to very poor since the change but i aint gunna do any work since the hassle

wet harness
#

for quest, fixed limits do actually make sense, maybe even different ones for quest 1 and quest 2, but PC is a whole spectrum

zealous wigeon
wet harness
buoyant holly
#

you said it yourself everyone has variable Hardware so like a million polygons could be completely fine for one person and but a disaster for somebody else so how would they know which category they in

zealous wigeon
muted ravine
wet harness
ivory sluice
wet harness
muted ravine
#

(just kidding of course :P)

#

but yeah every ranking system will have its flaws and people trying to work around or abuse basically.. 😐

wet harness
zealous wigeon
wet harness
#

by showing very poor avatars

buoyant holly
#

graphics cards don't exactly come with numbers that quantify their performance characteristics outside of vram that could be easily read

ivory sluice
zealous wigeon
wet harness
zealous wigeon
muted ravine
#

they should add 2 more ranks and move all ranks down 1 slot

buoyant holly
#

there's not really any room on Quest for more ranks and it would be weird for PC and Quest have different number of ranks

wet harness
#

I'm pretty much done. I don't have any more arguments anymore against you two who apparently would like a console like experience.
I'm sorry, but I play on PC, and I would like to tweak things so things run to my liking on my end.
So long, and thanks for the fish.

zealous wigeon
proper grail
#

Less ranks. Optimal, Okay, and Clearly Built in Unity

ivory sluice
buoyant holly
#

people shouldn't be making their avatars for the $5,000 computer people especially public Avatar makers

merry swift
#

lots of bikeshedding in here 😅

wet harness
ivory sluice
#

that's why i always have shaders disabled

buoyant holly
#

at least one source of that has been removed with the vram counting to Avatar ranking

buoyant holly
zealous wigeon
# wet harness I'm pretty much done. I don't have any more arguments anymore against you two wh...

Sorry for bringing it back into topic.
But a customizable Too Poor that sits beyond very poor?
The rankings should be set in stone for them to be globally useful.

But if you then had a rank, you yourself set, that set the lower limit, would you agree that it would accomplish what you want?

Tightening the ranks should be allowed, but not loosening them, especially as you can just auto show very poor on PC.

marble rain
buoyant holly
#

and users can strip out people's shaders

wet harness
# zealous wigeon Sorry for bringing it back into topic. But a customizable Too Poor that sits bey...

I basically would like to have custom limits for the ranks, and it could be implemented that you can easily switch between default and custom, like you can with the shield level. Maybe even display both, default and custom in the avatar details tab.
People who care about such things, like people who go to 80+ instances can easily see if their avatar would meet the requirements.

It would just give people with lower spec then default and higher spec then default hardware the ability to more enjoy VRChat, instead of enabling and blocking avatars all the time in a busy instance.

marble rain
#

that already exist to an extend lol

wet harness
marble rain
#

that is outside the scope of ranking.

buoyant holly
#

and also can be stripped out using the shield system

marble rain
#

determining every factor is near impossible. and requires a crap ton of testing.

wet harness
marble rain
#

it takes more effort to make a crap animator. then it does to make it good lol.

zealous wigeon
wet harness
zealous wigeon
marble rain
#

that tool doesn't really work welll

#

i wouldn't recommend it

zealous wigeon
marble rain
#

because it actually does not create any blendtrees or files.

#

it just bricks it

zealous wigeon
#

First time I've heard about it just being broken.

wet harness
wet harness
buoyant holly
#

at least on a nice note that tool is completely non-destructive

#

as it works on duplicates of the Avatar not the original Avatar

marble rain
#

you dont really learn anything from using tools. over getting your hands dirty fyi.,

wet harness
zealous wigeon
zealous wigeon
buoyant holly
#

there still could be some benefit to be had for automating repetitious busy work

marble rain
#

sure. but honestly i often find majority of tools. only slow me down lol.

wet harness
# zealous wigeon I don't get why individually customizeable ranks would help then? You are alread...

hm... I suppose you could have a "meta" rank, with it's own limits, and if an avatar hits does limits it will rank that avatar to a specific default rank.
But that wouldn't fix the issue with an avatar that is for example ranked good otherwise but has 71k Poly, as it would also be ranked very poor but I would like to show.
You kinda need to override the default ranks, or make them somehow not affect avatars. And thinking about it, it don't think there is an easy or sensible way to implement or configure that (you mentioned earlier that it could confuse people, that certainly would ^^).
Adjusting the default ranks with custom values and calling that a "custom rank set" would probably be easier to implement and understand.

zealous wigeon
#

Specifically upping the polygon count feels like it should be on the horizon, it has been 5 years since they set it to 70k.

(People will complain it is too low no matter what they set it to though).

wet harness
marble rain
#

upping the limit is not wise

buoyant holly
#

especially since people would mostly be using that to stuff more toggles into their Avatar

zealous wigeon
marble rain
#

Disabled and enabled objects should be counted differently.

wet harness
#

what the?
I just wrote half an essay and the discord deleted it with "no spamming"?

marble rain
#

as disabled objects only really occur a small cost.

zealous wigeon
wet harness
marble rain
#

obviously the problem with disabled objects is that they still cost vram and memory etc if it has a texture

#

and so on.

wet harness
wet harness
marble rain
#

the thing is. disabled objects disables anything it has on it or under it.

zealous wigeon
marble rain
#

and well any attached objects via another object automaticly nulls it

wet harness
zealous wigeon
buoyant holly
#

disabled objects would still take up vram

marble rain
#

it should honestly just show Polygons = 70.000 (81.000) for instance. inside the parenthese it would show total amount for active + disabled

#

same for materials.

#

animators