#avatar-optimization
1 messages · Page 6 of 1
do something I would point out is clothing that is not currently rendered still takes up vram
(otherwise i rather sacrifice the minor perf hit for easy of fluid editing)
so don't try to put like 50 outfits on one Avatar
do you know if there is anything you can do during runetime to remove any parts of your avatar from vram usage?
or the whole shebang has to be loaded in there at all times
nope it's all loaded in vram constantly
sadness
which is why there's only a singular vram stat
and like the SDK count everything as if it's on all the time
i guess the UV discard thing doesnt work on quest (because its part of the poiyomi shader, right?)
So we just have to use the less optimized ways on Quest.... which is the platform that needs optimization the most... 😦
honestly would probably just want to have only one outfit on Quest
because you don't really have the triangle budget for multiple outfits
This also means if people are only partially showing your avatar (shaders hidden, animations on) it will be less compatible than if you used one of the older methods of mesh toggling or blendshape squeezing
not the end of the world, but that would be something id consider
the quest crashes if it runs out of vram so yeah you shouldn't be running around with lots of outfits on a quest Avatar
last time I went into a public world on standalone quest my game straight up hard crashed instantly even with safety settings on literal maximum so thats not the only problem either :/
it can be difficult to do if its your first time for sure. but you get there. you kinda want to hover at 40 mb of vram use max. and 10 draw calls
Would anyone be able to convert a pc only avi to quest compatible for a freind of mine? I would do it but my pc is broken rn
Python: Traceback (most recent call last):
File "C:\Users\moody\AppData\Roaming\Blender Foundation\Blender\3.0\scripts\addons\cats-blender-plugin-master\tools\importer.py", line 880, in execute
bpy.ops.cats_importer.display_error('INVOKE_DEFAULT')
File "C:\Program Files\Blender Foundation\Blender 3.0\3.0\scripts\modules\bpy\ops.py", line 130, in call
ret = _op_call(self.idname_py(), C_dict, kw, C_exec, C_undo)
RuntimeError: Error: Python: Traceback (most recent call last):
File "C:\Users\moody\AppData\Roaming\Blender Foundation\Blender\3.0\scripts\addons\cats-blender-plugin-master\tools\importer.py", line 1113, in draw
row.label(text=t('ErrorDisplay.eyes2', naéme=self.eye_meshes_not_named_body[0]))
File "C:\Users\moody\AppData\Roaming\Blender Foundation\Blender\3.0\scripts\addons\cats-blender-plugin-master\tools\translations.py", line 64, in t
return output.format(*args, **kwargs)
KeyError: 'name'
location: C:\Users\moody\AppData\Roaming\Blender Foundation\Blender\3.0\scripts\addons\cats-blender-plugin-master\tools\importer.py:966
location: <unknown location>:-1
When I clicked export in CATS, THIS error popped out, it broke me?!?!?!!@?@?
You're using the wrong CATS - you need the development version, not the one from the master branch. Get this: https://github.com/absolute-quantum/cats-blender-plugin/archive/refs/heads/development.zip
(this applies for Blender 3.0+)
In Blender I changed the Tris to 7500 in my model in CATS, but when I put it in unity, it says in the SDK builder tab in the control panel that the preformance is very poor, and it became above 20,001, why didn't it reduce the polygons in unity?
Is there an error in the builder about legacy blendshapes or normals or something?
I think this will explain
did you actually click on the quick decimate
Unity is living and is a traitor
No, but the tris is already low and it said in the warning no more decimation because it's already less than 7500
then your tool wouldn't have done anything if you didn't actually tell it to do anything
maybe you should go double-check in blender edit mode to see how many triangles your model actually is
I think this explains, I swear I tried to follow the tutorial you sent
that screenshot is only going to tell you stuff related to PC triangle counts not Quest triangle counts
so you literally haven't decimated your model to 7000
Should this work easier to reduce polygons on quest?
yes that should potentially work the bake function
Please tell me why it does that?
does what
When I try to make eyes move in a certain direction in rotation states, the eyes are not proportional, and it completely stays away from the eyelid, just watch the video above!
I wouldn't be able to tell what's causing that just from watching your video
got more eyebones? Eye_L / Eye_R - LeftEye / RightEye
Looks to me like the two eye bones have different roll, while they both should have none. In blender, select the eye bones in Edit mode and do Alt+R. Do the same for head, neck, chest spine and hips bones, as they can influence eye rotation as well if they have some roll stored
This ^ issue has come up a bunch lately, fascinating.
I find that some bases sold out there often have either a 90 or 180deg roll applied on the hips-head bone chain for some reason - something that is easy to miss
Would any1 know how to make an avi only use 1 type of physbone since whenever I edit one almost all the hair has to go (example being women models use 2 phys on the button and 4 on the chest so then I only have 2 to use)
i do not understand the question
youre probably needing to just create a root bone in blender
Oh okay also would u know any good vids for contact toggles. I followed one but didn't work
@dull sonnet
I watched him but once I followed the steps it didn't work 🥲
In what way did it not work exactly?
He has pretty much the best explanation around, what part isnt working? @dull sonnet
can i decimate geometry / unsubdivide without the texture/uvmap messing up?
If you only do it a tiny bit
manually dissolving Edge Loops less likely break uvs https://www.youtube.com/watch?v=oWhuCxFXy9k
#b3d #blender #secrets #tutorial
Visit the Blender Secrets website: https://www.blendersecrets.org/book
e-Book bundle (20% Discount) : https://gumroad.com/l/IxofeY
That's gonna take foreeevverr lol but you're right ❤️
Checker deselect might be helpful for that
If you've ever spent hours selecting every other edgeloop one by one by hand to decimate a model for an LOD, you know how painful that can be. Here is one solution to quickly decimate models cleanly without spending hours on it. Checker Deselect is an option to select every other component in a group selection. Watch to see how it can save you t...
i'm trying to get the avatar that is 250k polys to like 150 but sounds impossible unless i just delete most of the assets
but i guess it's alright if some assets are hidden at a given time, based on the toggles?
sdk count everything on your avatar even if it's hidden
you could try dissolving Edge loops
Has anyone tested the effectiveness of mip streaming for VRC avatars? I know that it generates 33% larger textures due to the other quality versions it needs to generate, but I wasn't sure if it actually swaps out of VRAM or what adjustments a user would need to do to get it to work properly.
I mainly ask because, based on the way mip-streaming is defined in the Unity docs, it sounds like it should be drastically reducing the quality of textures to fit within VRAM. But clearly this isn't really something that is happening in practice.
hmm what is that?
Hard to explain but my hand was grabbing my prop on my waist
And it just works atm like a toggle
Can you be more specific? I don't really understand what you mean right now
When I reach down to grab my prop with a gesture it doesn't grab it at all. And it works like a normal toggle atm like on my hip to on my hand.
Ok, gonna need more details that that. Can you show us how you set it up in your controller?
Just like a screen shot?
Yeah, a screenshot
Your controller setup, the contact setup. Names of parameters
And be more descriptive in how exactly you want it to work and in what way exactly is it doing it wrong
#b3d #blender #secrets #tutorial
Visit the Blender Secrets website: https://www.blendersecrets.org/book
e-Book bundle (20% Discount) : https://gumroad.com/l/IxofeY
part of me believes you havent setup the gesturerigt/left parameter?
Ill have to see idk how to check
I'm not sure what I'm doing wrong?
Pc uploaded perfectly, but the button is faded out and won't let me upload to quest? So guessing its an optimization problem?
Show the sdk window
There’s probably errors there blocking upload
If there aren’t
Disable other avatars in the scene
Most i see I it complaining about how many polygons and such
Only things in here are the pc and quest version of the same avatar
when they say "show the sdk window" they mean "take a screenshot"
Was waiting for my pc to load properly
I'll send..as soon as I can
it says it should be quest but then says no
I've really been trying to optimize this avatar. I can't figure out any more techniques that are simple enough for me to do that will let me upload for quest. Does anyone have any other suggestions. I've crunched so many textures and yet I'm still struggling to hit 10mb
this is an editor extension intended for worlds but it will tell you what's taking up file size for a Unity asset bundle so could tell you what's taking up file size on your avatar https://github.com/oneVR/VRWorldToolkit
thank you
Should I use the one on GitHub or the one in the VRChat Creator Companion (The one in the VRChat Creator Companion is giving me namespace errors)
Used the one on GitHub, unfortunately It doesn't tell me on avatars
Need samone with sdk2 to upload 2 avatars that i bought from booth
:3
For me.
Upload to my account
that's because you actually need to upload a test build for it to actually read the file size report
I know that sometimes the VRC will be stuck with the MB value and not re-calculate it even as you keep changing stuff. So it could be that you are already below 10mb, but the sdk doesn't know it yet. One way to fix this is to switch to windows build, build a test avatar, and then switch back to android build
you can still download sdk2 from the website
yeah that's how I've been getting this value. (The build done was 15 minutes from posting, I hadn't changed anything)
Pretty sure you can't upload avatars with an sdk that old
I removed all of my expression menus and almost there
Most of the size is taken by texture files really
I would suggest swapping back to PC and then clicking test upload to get the exact file size breakdown
So keep crunching them. Quest really isn't meant to support a hole bunch of 4k texture material swaps like you can do on pc
I dont have a pc im a quest. And the friend who helped me he said he cant help me.
then how would you be uploading the Avatar in the first place?
I would suggest you don't ask strangers for that. In order to upload an avatar, they would need your vrc password, and that's a recepy for getting your account stolen
and explicitly against vrchat terms of service
did you actually click test upload yet
I've only got 3 textures, all are under 50kb now lol
that's explicitly against terms of service having other people upload for you like that
yep, that's how i was able to generate this report
unless im missing something
And that is exactly how you get your account stolen
okay not sure what's wrong then just from your screenshot? are you having any errors in your console
Ok, well that shouldn't be taking up so much. The next heaviest thing is usually the vertexes and blendshapes
sound effects also take up file size
Maybe also animations if you have some long dancing sequences
Quest does not support sound
no errors in my console. no sound effects, but this model does have quite a lot of blendshapes
blendshapes do contribute to the file size
That's probably it then. Try deleting a few in blender if not using all of them
I might suggest separating your face mesh from your body so that the blendshapes are only affecting the face so it's not having to store the vertex positions of all the body that's never going to change
I'm not sure they work like that. Always thought they only store the vertexes that are actually deformed
But I might be wrong
Do you want your avatar to be efficient and be loved by everyone because of all the frames you're saving them? Follow these tips and you should be good! Any recommended numbers or limits in this document are subject to change at any time. Although some of the descriptions provided below are not prec...
in speaking of blender, is there a way to see how much the base model itself is taking up data wise? I have two articles of clothing in unity and I wonder what's the size difference
No idea, but I would assume its proportional to amount of vertices
Wait it is? Then VRC really needs to figure out a solution, because people are giving out their login information constantly. Avatar creators can't share the unity packages, so they have to login to the user's account to upload for them.
why can't they share that Unity packages
if you don't get the unity package you can't do your own maintenance so your commissions become ticking time bombs for future updates to break it
Many asset or model creators will allow avatar creators to make avatars for other people, but not to share the assets themselves
it's in their licensing agreements
Thry's tools even has an account switcher
then you shouldn't be using those assets in commissions given that that explicitly against terms of service the logging into someone's account to upload
VRC should make that more apparent then, because it's the first I've heard of it and I even read most of the ToS and guidelines
Are you saying that you can get banned if you share your account details to let someone else login and upload an avatar?
Or is it the avatar uploader that gets their account banned?
This is probably a dumb question (since I can't tell), but did you click on "Build Report"? It looks like you have "messages" selected
the build report should detail all assets from most to least space used
so looks like if you give your account to somebody to upload an avatar and they cause Mischief you would get ban as you're responsible for your account
@velvet crow
Well that's not the same as what you said
Kind of
The top few pretty much say "You're responsible for your account." They don't say you will be banned simply for sharing the login information for your account
well no account sharing is quite clear in the community guidelines
There is a conflict of information then
either way
it happens, so 🤷
if VRC wants it to stop, they should find a better method for uploading avatars
uploading avatars are probably always going to require a computer
I'm saying: More explicit avatar sharing rules (allowing to share with specific people rather than public), or allow people to use a temporary, one-time token to only access the API routes required to upload an avatar
personally even if you did have those setup not getting the unity package for the Avatar also sets you up for a ticking time bomb
like unity2020 is likely to break content
Sure, but that's just an opinion at that point. Many people have their licenses for their assets as "commercial allowed, but do not share source", and many people don't want to spend hundreds of dollars on avatar, when many people do custom avatars for $20-40
well vrchat made it pretty clear to go Unity package
I do agree that people should be getting the Unity packages. But people are still uploading for other people, even if they have a PC and are sent the unity package anyways.
People don't want to deal with using Unity, so they pay people to do it for them if it just means some money and sending their password
yep and that's probably where a good percentile of stolen accounts happen
yep, and that's why VRC should add a solution (which would be minimal effort) of adding tokens
dang, even Fusl commented on this 3 years ago 😂
In the settings in Interface under Status Bar you can enable scene statistics
I have a question I'm expecting a variety of answers for. It's cool I can see texture memory and fight to optimize it but what in people's opinions is like the lines? Ball park estimates. What in your opinion is good, medium, poor, and very poor?
Firstly, you can use this tool in Unity to see VRAM usage https://github.com/Thryrallo/VRC-Avatar-Performance-Tools It is nice because it shows not only textures, but also meshes (which are still loaded into VRAM).
As far as opinions: I try to use some math.
I would argue that 8 GB of VRAM is the most common, and 6 GB is the lower tier of most common. If you leave some space for the world, game, and other programs, it would probably come out to about 4-5 GB for avatars.
As such, if you had a world with an average of 40 people (basically the average upper end from what I see), you can do 4 GB/40, which leaves you at 100 MB per avatar. Though I often do this with 8 GB, so 6 GB/40 = 150 MB per avatar. But this is total VRAM, not just texture memory.
The best way to approach optimization at least for textures is mainly to use Thry's VRAM tool (linked above) and go down the list, since the largest will be at the top. I often turn down the resolution until it starts to look bad from a foot or two away, and then determine if I can do Normal Quality to take advantage of DXT1 (half the size of DXT5 and BC7 (High Quality), which include alpha).
Also, there are a lot of textures that either use Normal mostly or Diffuse mostly. So you may find a normal map barely does anything and can turn it down, same with diffuse or other materials.
poiyomi if you're using it also has a bunch of handy Shader features that could help with the RAM usage like using decals so if you have tattoos on the Avatar you not make the main body texture 4K just to make the tattoo look nice
Yeah, a lot of people poop on Poiyomi, but really it just has a lot of features and gives you the ability to actually optimize your avatar and make it look good.
I was able to use a single texture for backface. So I had a 2-sided piece of paper that used just 1 image, instead of needing to do something else that would probably incur more draw calls.
I'm pretty sure the primary reason people poop on poiyomi is because the most common place you see his shader is those 500 mat slot, 700,000 tri, 30 mesh avatars that break every performance rule in the book.
So it gets to a point where you see that same, dark rimmed barely lit toon look, several emissions, maybe a dissolve or 2, some toggles and those perf stats and go "man fucking poiyomi and his damn shader."
I may or may not be speaking from experience. However, because it's flexible and full featured, it's also very abusable, as no one bothers to use the tools he provides to stay performant.
I've seen times when people have insisted that locking the shaders breaks their emissions, so they don't do it. I didn't even realize not locking was an option, myself.
It's also where I learned to use rgba masks and tiling normals for things such as shirts and other clothing.
The real champ is those 512x512 sweater and leather normals I use on my avatar.
Just because you can animate a hundred properties in Poi, doesn't mean you should 😆
Back to shader: Can use seamless tiled normal maps per RGB area - tiny (128/256px) normal maps, but tiled around 50-100 times in the shader, giving you a higher effective TD.
You can combine these with an base nrm map for creases and baked normal details etc: (Blend with Base)
Single material, 3.3k △, using RGBA masked 256px normals in @poiyomi's shader. 🧵👇
283
I re watched the vid and did it again im able to grab the gun but not put it back on my hip
Dangit, I just wanted a simple number to aim for and all I get is this overly complicated vague non answer that doesn't even give me a specific in the vram offshoot you decided to answer for instead
I'm sorry but I told you "100 MB" or "150 MB". It's written in there
I'm giving you context on why I came to those numbers and other useful information mainly so you can actually fit within it and have a better process for optimizing
What is it with people complaining about useful information lately, jesus
You also didn't ask for a specific number. You asked for "opinions on lines" and that you expected a "variety of answers for".
Don't be upset when someone goes out of their way to spend time writing up something that gives you a clearer answer with specific numbers that you could have read anyways if you just skimmed it for numbers.
yeah for sure. poiyomi getting bad rep 😭
But also, at the end of the day, if you want to do something properly you can't really take shortcuts, otherwise you may just cause other problems.
So, deal with it. You got good help, accept it 🤷
Even then you can still share a unitypackage file, so long as it only references the licensed files as opposed to containing them. [meaning the recipient will need to have that asset already imported into their project]
Is it as simple as exporting the avatar without the other content attached? What if the base itself can not be shared?
the unitypackage file format functions more or less as a zip-file. It's not a zip-file under the hood but it functions like one in that it combines project files into one larger file for easy of transfer.
When creating one, you can choose which files should be included and which shouldn't be.
If you do not include a file, it will not be within the unitypackage, and so it cannot be restored on the other end.
Say e.g. that I have an avatar's fbx file, which has a license that does not allow sharing it.
I can still create a scene in unity and fashion an avatar with that model.
Then, when I create the unity package, I only include the scene and the textures and materials I made for the avatar [assuming it was a simple texturing commission].
If the recipient was to unpack the unitypackage in an empty project, only the scene and textures/materials are present. If they open the scene, they will not be able to see that licensed avatar model as it literally does not exist in their project files. [and unity will log an appropriate error in the console].
If however the recipient unpacks it in a project that already contains that avatar fbx file, the avatar will work perfectly fine when they open the scene.
since the unitypackage file I sent did not distribute the licensed material, there shouldn't be any legal issues regarding the license.
and if there are, I think it's unlikely to hold up in a court, although I am not a lawyer
I see, that's insightful. Thank you
however, this process can be finicky, because if the version of the used fbx isn't the same, the reference MIGHT break [a.k.a unity might not be able to recognize that that file is the one that provides that model]. However, this most likely happens if the "update" is actually a recreation of the file from scratch(so it won't have the same ID unity uses to reference project files)
I don't know, what I still can do to enjoy this game...
I optimised my Avatar down to 13k Polygons, 2 Mats and 510KB Diskspace. Now it is even for Quest user as "Medium" ranked. But peoples still can't see me and answer after asking often with: "You are a gray robot". I don't know how can I roleplay in this game, if everyone just see me as a gray robot, even if my Avi is medium ranked for Quest standards.
that will depend on a user's safety settings, i also have it set to show everyone but friends and trusted users as robots since so many people go way over the avatar performance limit, the problem is that most of the ones that are at fault won't do anything about it so there's not much you can do about it
BUt I dont get it, why someone should hide medium and bellow ranked users?
Is it even possible to make a "excellent ranked" crasher avatar?
VRChat fells way more like a phonecall, while everyone does play a singleplayer game.
My one is medium and not excellent, but still? How dangerous is it, to have by default all medium and bellow rank user shown?
It's a normal thing, no one I ever met unless they are new shows all avatars, it's just a lag fest to have everyone all load in unless you're talking to them. If you want EVERYONE to see you, get a fall back. It's just how it goes. Even if 10 people are good, loading them all in lags and yeah, no thanks. You're hidden.
Can someone help me? I have atlased my model in Blender and changed material properties but i can't figure out how to save the texture.
If you used the CATs plug in, it literally saved the texture in the folder you selected when creating the Atlas
Yes it did but I changed the material properties because it looked more dull than before
I want to save that version
it's not blocked by performance rank but by user rank on the shield level, doesn't matter if it's excellent.
and yes, an excellent avatar can crash by using corrupted or crasher shaders, because directx->unity->vrchat does not have a way to guess a shader's performance, that's why i always have all shaders disabled
Like dainami said, you can make a fallback. You can take your existing avatar and decimate it further and put it into 1 material. It will probably not look good, but it will at least be something and not a gray robot.
do physbones perform better than dynamic bones?
yes they do which is why they're allowed on Quest
That's the sole reason they were made
ahhh
I thought they tend to result in worse performance ratings when there's a lot of them?
They can be bad when you use lots of them sure but dynamic bones are worse
but if you're not like very poor rank with physics bones you'll probably be fine
well
i am at very poor rank with my 2nd vroid avatar
it definitely has too many physbones where it doesnt need them, but im not sure how to reduce them or what to replace with them
the vroid export tab has a bone reduction setting
but here is some video tutorials that covers optimization of vroid in blender https://www.youtube.com/watch?v=PyRmBKBCq9k
This tutorial shows you how to optimize your VRoid Model for VRChat using 𝗩𝗥𝗼𝗶𝗱 𝗦𝘁𝘂𝗱𝗶𝗼
and 𝗕𝗹𝗲𝗻𝗱𝗲𝗿. We aim to get medium or good performance ranking!
𝗕𝗹𝗲𝗻𝗱𝗲𝗿 𝟮.𝟴𝟯: https://download.blender.org/release/Blender2.83/
𝗖𝗔𝗧𝗦 𝗽𝗹𝘂𝗴𝗶𝗻: https://github.com/GiveMeAllYourCats/cats-blender-plugin
𝗠𝗮𝘁𝗲𝗿𝗶𝗮𝗹 𝗖𝗼𝗺𝗯𝗶𝗻𝗲𝗿 𝗮𝗱𝗱-𝗼𝗻: https://vrcat.club/threads/materia...
is there a way to optimize it directly in unity?
i can re-export it, i guess, but it would be a bit of a hassle since I also have a blender mask to attach to it
and also the tail needs to be bone weight transfered
not really in unity as it's not modeling software
For physbones, you can often combine the root if you have symmetrical or similar body parts. For example, breasts can have a "breast root" bone. Hair can also have a "hair root bone". This reduces the number of physbone components, which AFAIK is more performant, even if you have the same number of transforms (number of affected bones, basically).
You can also get away with weight painting tricks to reduce the total number of physbones, but maintain a similar amount of dynamic-ness in the way they look
If you need help in Blender I'd be happy to give some guidance 👍
R.i.P...
Its not easy with detailed anime Models, even not with MMD. Thats why I only see small simple cartoon characters under 5k like this here as fallback.
Right
if someone would try to make the standard anime avi to a fallback, I think it would look similar like this
You'll have to strategically decide what features you are okay with keeping and decimate where possible. I would probably prefer a very basic, crappy fallback that is somewhat representative of what I'm wearing, versus a robot or completely different fallback.
A lot of these were probably decimated with cats or something, where it can't necessarily make smarter decisions on what to change or remove.
thats notg possible witgh that many details.
My only idea would be to also have a that looking avatar but maybe with a sign on the head with the text; "Please show me, to let let me NOT stay this lowpoly-Mess for you" or something:
thats not possible with that many details.
Exactly. You have to compromise
You can choose to remove or simplify certain details for the sake of making the main model look better
but yeah, you can do that too. "please unhide my avatar" fallbacks is something a lot of people do
Oh hell no. R.i:P
And are you sure that fallback avis can not be hidden my tghe safty system?
They can be hidden yeah
Or wait, hmm
I can't remember. I think if "avatar" is hidden, it's still robots, so it doesn't matter
I am talking about the satfy system. if peoples have hidden everyone by default without pressing "hide Avatar" directly on me
Though my point was: You can probably remove/simplify certain materials to bring it into good/excellent rating for quest. Questies unfortunately just will miss out due to the: abhorrent inherent peformance of VRChat and the limits of the quest
Yes, it usually is just robots anways afaik
as long as "avatar" is not selected in the trust level for safety
If "avatar" is enabled in safety for a trust level, then it will show the avatar
I atlas the hell out of it already. I even made my avatar have their items and weapons weightpainted on a bone on the hand, that is scaled to 0 and scales up to 1 if I "enable" the item.
🤷
At the end of the day VRChat is inherently poorly optimized due to letting users make various avatars, so the limits are tight. It doesn't help that the Quest 2 is a mobile phone
I'd say if you already have medium for quest, then you probably did more than enough
If you can't sacrifice certain details or features, then you'll have to accept that your avatar is medium
but does fallback avatar not have a special permission or something, so that they are visible for everyone and must manully be hidden because they doesen't can harm anyone with that less permissions.
fallbacks only happen when the avatar hits the "minimum performance rating" under performance. It is separate from safety
If avatar is hidden in safety, they're just a robot
only a few mats and 5k poligons should never be ableto harm/crash someone.
What is causing the avatar to be medium? 5,000 should be good rated on quest no?
I hoped they have some admin-like visiblity permissions over the safty system.
Is it even possible to harm someone with a fallback rated avatar? if not, why not giving everyone the visiblity permission, that stays over the safty system? and even if someone would missbehave and make something like a 4k poly giant c_ck or something. they still can be manually be hidden globaly.
idk what to tell you. They probably decided that robots is the easy thing for safety settings, rather than performance settings
but without having any rights. This game is more like a phonecall conversation than a videochat or even a game.
Your only option is to further remove details/decimate, or deal with it being medium. 🤷
but I thought that atleast fallback avatars have permissions to be seen?
I'm not sure what you're saying
If I make a fallback version of my avatar, can peoples still see me, even if they have avatars disabled in their safty system?
Fallback avatars are if the avatar falls below the "minimum performance rating" set in the users' performance settings.
Only robots are shown if the user has a trust rating and that trust rating has "Avatar" hidden
If someone chooses to hide all avatars except friends, that's their own choice and they will override the avatars anyways
Even if your avatar is excellent
they turn it off for everyone, for visitors and thrusted users. no one have any permissions my default without microphone.
That's their own choice
If they are like that, then they are probably not worth talking to
Nothing you can do on your end besides asking them to show your avatar
but how to play this game, or even roleplay if even hightly optmized fallback avatars are counted as evil?
It's not about "evil"
If people are hiding everyone's avatars, that's their own choice
it's a safety setting for a reason
If you're a visitor or new user, your avatar will probably be hidden anyways because IIRC that's the default setting
so 🤷
idk what to tell you, that is just how this platform works
if you don't like it, try to provide feedback on feedback.vrchat.com, go to a different platform, or make your own social VR platform :
tell me please the reason... (I mean I thought there is no danger from any fallback avatar?)
I asked the people and they always tell they don't want to be crashed. but is it even physically possible to crash someone with a fallback?
perhaps, idk
most people on VRC use the platform with notions and knowledge that is false
As far as I am aware, with the fallback requirements and shader requirements, it shouldn't be possible to crash people on Quest with a fallback
but at that point, it's up to you to convince them it can't happen 🤷
Even if something is some way, people believe things they are told, even if they aren't true
is quest not banned already?
I heared about it something, atleast quest1 and quest 2 and the comming quest 3 should have more performance.
If someone chooses to hide all avatars like that, it is their own choice and they are reducing their own experience 🤷
and even fallback does being affected by that, right?
that's what I am trying to ask.
The Safety settings override anything else and, yes, will also hide fallbacks
it's just the way it is
so no need for a fallback then...
🤷
fallbacks are for performance
Again, if someone is hiding all avatars and only shows robots, they are reducing their own experience and they are probably not worth talking to
I personally show all avatars for the most part, and just hide shaders for all users
So... yeah. IDK what else to tell you
but what is with some teching knowledge or making a "Don't hurt me" performance option, where peoples can be sure that they can not be crashed, but dont hide the hell out of the game.
many users just don't know what to hide to be safe, so the decide to just hide everything to make sure this will not happen.
Because someone can be obnoxious/a nuisance even with fallbacks avatars
it could be the size of the avatar or shape of it
someone could make a fallback that is a giant penis 🤷
idk
Someone could make a fallback that is a really offensive meme, idk
again, fallback is for performance
safety is not performance, and safety is not all about being crashed
Some people might be sensitive to certain colors, idk
there's a lot of reasons someone would prefer to see robots instead of fallbacks
especially since people can make custom fallbacks
You can't force people to see your avatar, if that's what you're getting at
People can always choose to hide your avatar, even if its a fallback
thats another topic. I am just asking for being safe for being crashed. many peoples don't care about that but does care about being laaged out or crashed. peoples that make really sure can still hide everything, but the thinking is of seperating it, maybe with a warning that it protects your for being crashed or laaged out, but still can contain: "obnoxious/a nuisance" contents.
make a feature request then
Because really at the end of the day, even if you factually can not be crashed by a fallback, people clearly believe they can. So it's not a matter of features, it's a matter of people's mentality
Just adding a small red text in the UI panel with a new button, with pre-chossen setting, that have everything included for peoples that don't know what they have to hide and what they can still show.
Why are you telling me this? Make a feedback request. There is nothing I can do about it
I am just asking, maybe I just have a bad idea with many reason why this is not and never should be... IDK
You're not asking, you're telling me about something you want, despite it being a minor issue
if people are hiding all avatars, that's not your problem
if you don't like it, don't talk to them
simple really
now please stop pinging me
There are things the system doesn't account for, on PC you could have an excellent ranked avatar that takes up GB of texture memory.
And on both PC and Quest you could have an animator so heavy that it causes everyone's game to freeze for several seconds.
The thing is, I don't wanna ask all the time (also its annoying for everyone) but I don't know, where can see me and where does not?
Currently, I make medium rank optimised avatars for PC and Quest about trending games or movies and if they don't react by just seeing me, I don't know if it's just the safety system censoring me into a gray robot, or if my avatar / the movie or game where my avi is based on, is really that unknown and even if they see my, they just don't know where my avatar is based on...
If I stalk around corners with my avatar and noone is reacting, is it because they have blocked my by their safety system, or if they just know my character and what game or movie it is based on?
Haven't you brought this up before?
You cannot have a marker saying whether they can see your avatar or not because that would create a culture where you are forced to enable everyone's avatars (to your detriment) because otherwise you'd get people walking up to you and pressuring you to do it, VRChat is filled with socially anxious people, adding something like this would be a very dumb idea.
And that is ignoring the performance side of things, because if you show an avatar then it is costing you performance, no matter how optimized it is.
no matter if 5k or 500k poligons or if it have 2 materials or 200?
Well yes, it will always cost you performance.
At most VRChat could have a system allowing you to swap out the default robot, but then it would have to be out of VRChat approved avatars that perform similarly.
You cannot allow User created content to be always shown.
Far too many ways it can be used maliciously
IDK why or what does it mean but some players try to point with a laser on me.
Probably just people checking your bio.
If I am not all that engaged in VRChat then I start checking avatar metrics and the bio's people have written.
and if they disappear in front of you?
Then they blocked you.
Or just left
Not unusual for people to just leave if they aren't friends enough with the person they are talking to.
It always confused me all the time, then I ask some players and they also disappear in front of me.
how do I do that?
Create empty game object at the bone (in the armature) where the things you want to "combine" are and drag all bones (at the same level) that you want to be affected by the physbone to be a child of the empty game object and just add the physbone component to that empty game object.
Back then 2018, VRChat had a website with a entire list of peoples that you blocked and peoples that blocked you...
Someday it turn into error 404 or something and the only way was to check, over the "In Room" tab of the current lobby if someone disappeared in front of you...
But One day, even this did also disappeared on the only situation you can notice that someone did blocked you is if many peoples are "talking with the air". yesterday someone did inadvertently blocked me because:
"he miss-aimed while trying to block someone else that was voice-spamming loud: "ERIKAAA!" music."
doesn't this constrain the bones, so its less performant than just multiple components?
and less performant than doing it properly in blender?
I have no idea.
Good that you mentioned it.
trying to do it in blender broke it, but it worked with optimizing in vroid
although now, it randomly removed the physbones like my first avatar and i dont understand why
do i have to tell it not to auto fix things?
oh wait i see what i did wrong, i forgot to use the duplicate and convert function
I am kind of annoyed that the VRC SDK will say this, but doesn't really give you a way to fix it in unity
I wish it would have some way to edit physbones in unity that doesn't require getting into scripting
how's the ever-loving heck do you have that many physics bones
vroid
the converter converts all the springbones to physbones, but it doesnt seem to give you any way to edit them or say
"hey, maybe dont convert basically every pixel into a physbone"
it's because there's physbones in the dress and hair but the converter doesn't differentiate them and turns every spring bone into a physbone
i dont really know what it's talking about with the collision check
then maybe edit it in vroid so it doesn't have so many bones in the first place
vroid's editor is pretty limited
i cant tell if i somehow have a different version, because on videos it looks different, but it says it's updated on steam
it has 24 physbones but a lot are just unnecessary
yeah they did change up the UI in a major version about a year ago
it doesnt seem to have a good bone editor
it's just like "this is how many bones there are" and doesnt let you control where they are or where you even want them
blender seems to have a good bone editor plugin but when I tried putting the avatar in unity it totally screwed up the textures and even some shapes
the physbones are what i need to optimize right now, but i dont understand how to make certain parts of the avatar (like the dress) move without using them, or even how to edit them or see what sections are causing the most performance issues
you can choose to not import any
when you duplicate the vroid to vrchat ready
theres an option
then you can add physbones yourself
it can remove the physbones if i dont use the duplicate and convert option, but I dont have any idea how to add them myself
the other thing is a lot of the physbones it does have are needed for the hair to move
and i cant tell how to reduce or edit them directly in unity
does anyone know how to combine materials and atlas textures? also combine multiple skinned meshes?
Did this video help you? Consider sending me a tip on Ko-fi! https://ko-fi.com/sippbox
The Avatar Dynamics update recently dropped for VRChat, and with it brings the highly anticipated replacement for dynamic bones, PhysBones! With Physbones, you can apply secondary motion to parts of your avatar, such as hair or skirts, making avatars much mor...
Knees clipping through your skirt? Want to make a hair brush that collides with your hair physics? PhysBone Colliders can help with that! This tutorial will show you how to use them.
Join my discord for avatar help and free assets! https://discord.gg/PrzeWMNqKG
VRChat SDK3: https://vrchat.com/home/download
Music use...
PhysBoneColliders should be a separate script from Physbones, and often people don't add that many of them.
Though either way, if you want help learning how to edit bones in Blender I'd be happy to help you in my free time.
Soooooo here's the thing, I have:
- reduced skinned mesh renderers from 5 to 3 (face and body separated + body shapekeys deleted, main body is now once piece instead of separate torso and legs, and clothes are now one mesh)
- material slots overall reduced from 12 to 11
HOW THE HELL DID MY DRAW CALLS INCREASE
I followed every optimisation tip I could find, I even learned to weight paint elbows and shoulders on clothing, and this is the reward I get?
I'm no expert, but 11 material slots still sounds like a lot. Any way you can combine some materials of your clothing?
all are referenced from 2 atlases (and one for emissions) but I need them separated for hiding clothing etc until I find a better method
I have found something about SCSS which is supposedly good but there is zero information about it except for the wiki which is not particularly easy to interpret
Separate meshes means separate material slots, even if they use the same material. If you have like 10 different clothing items, then that's the best you can hope for
there are no materials spread across, and everything else is combined excluding the ones that need separate shaders or toggling on/off with the material
I've searched so many guides for any solution but none of them go any more in-depth than telling you to atlas your materials and combine meshes
Draw calls should only be influenced by the material slots called to draw in the scene. IE, if I have a clothing item that is inactive the the material slot on it should be irrelevant as its not being rendered.
But, once you get the slots and meshes optimized only other methods I know of to reduce would be something like GPU instancing though that is not applicable to Skinned Mesh Renders and requires two or more of the same mesh.
Sorry, this doesn't tell me much. How many meshes do you have total?
3
Why do you have 11 material slots on just 3 meshes?
To toggle clothing, accessories, and tail, as well as for each necessary shader, eyes and different emissions
For what I could gather, materials are less resource intensive than individual meshes
Still quite heavy though
Try toggling some things with blendshapes instead of materials
Also I would think that not having all the meshes on at the same time is more optimized than just disabling some materials while still technically rendering the same mesh.
I was told that they all still had to be rendered anyway so it doesnt matter
They are not all rendered if the game object is inactive.
You can look at your batches when you go into unity and view the stats on a scene
Vrchat still counts them for their rating on upload, but if the mesh is disabled, the game won't render it
I have the screenshots for the render analysis
bottom is the supposedly better one
So currently I need individual shaders for everything that needs toggling, and for ones with unique properties like metal glasses, eyes, glowing hair emissions etc. What other method is there of doing that?
what shader are you using?
poiyomi
You could use texture maps for things like metal ness and emissions instead of using separate materials/shaders
especially with Poi
where should I look to find an explanation on how to set that up?
Poi has a website with good docs
UV Tile Discard (previously known as UDIM Discard) provides an efficient way to toggle portions of a model on and off at runtime. This is done by placing portions of the model on different UV Tiles, and then discarding specific tiles at runtime.
After all this time is was in the docs all along
Does that work for unique shader properties as well?
Like the glasses need metallic but nothing else, eyes and clothing have different emissions, probably half are because of this
you can turn on metallic and put a mask in to only work on the glasses part of the texture
black off, white on
How does having like 5 different masks affect the material count?
got my face with metallics like
though 1k will be reduced xD
masks will affect the vram/bundle size but you could have 1000 masks on 1 material
idk what 1000 things you'd be masking but...
one of the materials I use has 16 toggles, 2 unique emissions, metallics, plus smoothness and specular, matcap and audiolink on there too
Is there any place that identifies different optimisation techniques or is it just f around and find out
without udim this would be like 5-6 materials
it's just past knowledge from the community really.
Someone who has more knowledge than me should consider making one with links to each thing
There are so many complaints about people's unoptimised avatars but theres no easy way to get started
if you can get down to even Poor on the rating system you're ahead of 95% of the people that talk about vrchat content being unoptimised
My goal is stable frames when I'm mirror dwelling, only one of my home worlds can currently do that so whoever made the world did it really well
there is a good amount of people that just don't want to work for more than 10 minutes on it in unity let alone blender. The info is out there but you gotta be willing to ask questions rn and a lot of people aren't.
But still how are you supposed to ask for help on how to do something when you dont know what youre asking for. This is maybe the 5th time I've been here for help and you're the first to mention UV tiles and masking which completely solves the issue
I need to stop complaining and go to bed, lots of things to think about for tomorrow
udim is 'new' to the vrc community. Shaders have had it for a while but people either haven't explored it, or have and it did nothing because of the setup it needs. it has been recommended in her for a while though, it's just not a common thing that people talk about
Actually one last thought, none of this will work if people have shaders hidden right?
same with material toggles
and if animations are off then nothing will work
which is why it's good to make sure your avatar's default state is kinda sane. A thing I need to do, actually 🙂
Yeah I looked deeper in unity and it's basically spamming colliders under all the physbones. Is it best to edit them in Blender?
i have an avi i want to upload but it takes up to much memory somehow, anyway to fix this?
if you mean video RAM, decrease texture sizes, number of textures. If you mean overall upload size, do those plus compression. Maybe fewer props, clothing, etc.
However, "texture memory" size (and total VRAM size if you use Thry's VRAM checker) is far more important to look at.
A low download size isn't very good if your texture memory (and total VRAM) is really high.
i mean parameters taking up to much memory, i cant really delete anything so idk waht to do
Yeah no real choice there, that's a hard limit. You can see if you're using floats when you want an int, or ints when you want a bool.... or you can split the avatar into two, and only put half the accessories on each.
thankyou illl see what i can do
The colliders are a unity concept and should be editable in unity, at least to remove them.
Is there a way to export a VRC-ready prefab from unity to Blender, and then export it back to Unity?
I tried exporting from VRM to Blender and that worked, and but when I tried to import that to unity it messed up the textures and shapes randomly
I think I tried dragging it into unity as an fbx file? not sure
It was the file type that begins with f when exporting from blender with one of the add-ons
I think I have that add-on
but I'm not sure how to export it from Unity once it's already ready for VRChat
I don't want to mess up the scripts by doing it wrong
anyone know how to use the material combiner in cats? I've got my model from VRoid with 19 materials that imports just fine, but as soon as I click on "save atlast to..." it immediately turns into this
the ... makes me think there's supposed to be a dialog or something where I could maybe play around with more settings, but nothing pops up, the model just breaks
Did you update the material list before creating the atlas?
ye, it had all 19 materials in the list
if its a vroid, its one mesh
i think it's one mesh yea
speaking of; you're able to atlas in vroid studio
just a little bit more limited than blender, but you can do it in vroid studio
ye i tried that, but it imported without eyes
should mention that the vroid atlasing shows up just fine in blender
it's only when I export the vroid-atlased model to unity that he loses his eyes and body
have you been able to get the cats atlaser to work at all? was it some special version of blender or a different plugin mix?
turns out that it actually originally imports as three meshes, but clicking on fix model merges them all as one of its steps. However, trying to atlas before the meshes are joined doesn't really help either
yeah vroid has an atlas function that works
but if you need to get it to 1 material slot it doesnt let you do that
or if you want to make use of the 4 material slots i guess, it doesn't let you choose anything but the preset numbers
I was having issues when trying to atlas with blender and not vroid yesterday
i saw a youtube comment that kind of fixed it, you have to choose file > external data > unpack all into files and make sure you have the file in a folder also
it still seems to make certain vroid things like the skin, hair, and certain clothes/accessories automatically have a weird texture, even if you literally only atlas them by themselves
to atlas with cats/whatever in blender , you have to do something first or it will fail since i has no idea where the textures are
if you dont do it - you get this
Honestly, I've found texture baking/atlasing with blender to be a bit easier than CATS. Though I also often manually make a new single UV map rather than atlas the textures. Mainly since I can then prioritize materials differently. Like having some small accessory take up way less space, rather then being the same size as another texture for skin/clothes.
It is technically harder and more work than CATS, but in the end, I find it less of a headache than trying to get CATS to work how I want
I always describe it as "Atlasing is better than nothing, but I'd investigate baking to a new UV setup, rearranged or re-done, instead of atlasing materials as is."
However, I'm glad they do anything to try, as the latter is better than the former, but the former is much better than nothing.
It's kind of a shame that most of the time, material optimization ends up being in the hands of users when they get a model. I get allowing some customization and an easy way to simply remove something and not have to go to blender to fix it is nice, but if that's the goal, why are we selling fully done packs that are 20 plus things stapled together?
People want avatars, but they don't want to commit an avatar to the "Done" bin and move to the next; the one avatar must always be modular and always be able to be back pedaled on the off chance that I don't like piercing A or Jacket F.
Sorry this turned into a rant. Long story short; Atlasing is much better than nothing, but if you want to really keep the quality AND lower your material count, UV baking is the way to go, even if all you're doing is rearranging all your existing UV's into one single material, pack em tight and bake to that.
Yep, completely agree
I wish there were better user moderation/performance settings that allow users to hide avatars or at least let it be known that their avatar is hidden for performance reasons.
One of the mods did this pretty well by allowing you to hide avatars based on more specific characteristics, even down to shader draw calls or something (iirc)
I give VRchat props in the sense that They've given us some semblance of control on what we do and do not see AND kept the limits from being hard ones as sometimes some really neat creative avatars by responsible people can be made.
However, as neat as that mod sounded, I already have issues getting people to get familiar with the current performance settings; getting that granular would require I start opening up "Performance Settings and You" seminars.
And then no one will listen and will just blast "Let it all through"
I still find Quest users who simply do not care that they suffer crashes and Low spec PC players who "Simply cannot play if I don't see everyones avatar."
I feel if they can get the avatars performance stats (Minus the vram, as this obviously wont be accurate until it's unpacked/loaded.) to kind of precede the avatar itself, you can safely block avatars of a certain ranking and they never enter your RAM/vram/storage in the first place.
The only way to flat block an avatar, outright, is to have a download limit that is egregiously low and to not show them.
Man, I'm wordy as hell tonight.
Even if I don't like it for a broad usage, I definitely personally wish I could do some things like that. You know how great it would be to block based on shader limit? God, I could pretty much set that as a catch all and live comfortably.
I think part of the issue is that the performance settings are simply not intuitive, and they can probably have presets if they do open it up to a boarder range of blockable statistics
Like the current options are: Download Size, fallback threshold, and then general quality and MSAA. Nothing else, besides kind of the safety settings, but I don't consider the safety settings performance settings
question for someone who knows a bit how unity performs:
If I want to create a "thing" with lots of movable parts (let's say 50 for that example), what would be better optimized: skinned mesh renderer with 50 bones, skinned mesh renderer with 50 blendshapes, or 50 static meshes?
Assume about 10k polygons and 1 material.
I'm sure 50 static meshes is out of the question, because every mesh would create 1 draw call.
So bones or blendshapes?
Please ping me, so the answer doesn't get drowned ;)
50 bones doesn't sound too bad. 50 blend shapes will contribute to the file size if that is your concern
UV tile discard could help cut this down a lot
I'm talking more about a prop, that has movable parts, as far as I can tell UV tile discard can't move the mesh
oh I see, I was thinking you were using the blendshapes for hiding the parts. Definitely bones then
as I thought
50 bones would be better because that would be one draw call whereas 50 separate objects would be 50 draw call and blendshapes can't really be used for rotations easily and also would be more expensive than the bones
I didn't think of rotations...
in that case skinned mesh renderer with a rig is basically the only option ;)
depends on how many polygons. is affected. and how often. cause you may not even need 50 blendshapes for it. or 50 bones.
but 50 bones is quite abit
I'm looking at the poiyomi UV tile discard setup in the docs and one of the steps is increasing the grid size to 4 by 4, but the option isnt there in my blender setup and no explanation of how to get it. Any advice?
if you cant find it, just L+select islands what you would like to discard and add 1 x and/or 1 y to it
its just a visual helper
I know it wasnt in the blender version I was using when I set that up
Can someone pls optimize my avi kazutora for it to be available to get uploading on quest
found something that might be useful for avatar optimization
https://github.com/d4rkc0d3r/d4rkAvatarOptimizer
wrote up some notes on the @poiyomi docs blog about optimizing VRAM usage and bundle filesize using texture import settings
with VRC adding avatar texture memory in the UI2.0 update, I want people to understand why it's important, and how to optimize it!
Hey guys i kinda need help well i find that prefab of a rocket launcher but the hard part its that he have 200k polygon !!!
Do you have any way to fix it in unity like a plugin to remove some polygon ?
he wont add me with the .git adder
well your error message says you don't have git installed
well that appears to be what your are messages is telling you
how to install git ?
Any idea if liltoon is well optimized?
Im trying it out, I don't wanna be a lag source
I use it its realy cool dont be worry
realy easy to control too
like checking the page it auto rewrites the Shader to turn off features you're not using so it should be fine
Weird, i felt like it wasn't doing this, like it doesn't lock like poiyomi
it worked but too be honest ive been reading the doc i realy dont understand how the lod generator work
no clue myself as I use blender to do that kind of cleanup work
well i read a lot and test a lot and it work thank you !
Cool
what i dont like about that one is that he states mipmaps will make it look worse when that is a full on not true. the only thing it does is using extra vram to store multiple lower resolution textures etc.
I think "worse" as in it swapping to the lower res ones. It should also be swapping the lower res versions in and out of VRAM, not storing all of them. The only extra space would be on disk and buffering adjacent resolutions to the current mip level in VRAM.
Though it doesn't matter either way because VRChat doesn't actually use texture streaming.
https://ask.vrchat.com/t/unity-mipmap-streaming-in-vrchat/15858/3
yea. atm it wont do anything and no it pretty much stores all mipmaps on the gpu
That defeats the purpose of mipmaps though
This system forces Unity to only load the mip levels needed to render the current Camera
position, instead of loading all of them by default. It trades a small amount of CPU resources to save a potentially large amount of GPU memory.You can set a total memory limit for all textures in an application, and the system automatically reduces mip levels to stay within this budget.
https://docs.unity3d.com/Manual/TextureStreaming.html#getting-started
mipmaps don't store all the mip levels in VRAM at once
unless you're saying with the way VRChat works now, it is storing all the mip levels in VRAM no matter what
thats only if streaming. otherwise it just stores it in gpu
I don't see where it says that mipmaps are bad. For me, it says the opposite. That DISABLING mipmaps will make it look worse.
mip maps are basically texture lod so it helps the renderer to get more avegarged results for the pixels depending on how far it is, disabling them for high detail textures results on the pixels being "jittery" because it can only take one texel per pixel on the screen, to avoid this without mip maps you'd have to iterate the texture varoius times.
In my case i disable them for low detail textures on big objects like lightmaps or objects with simple gradients or small color variations, and have them enabled for things like normal maps, detailed textures and any texture that will be tiled
Bruh quest is so hard to publish for 😦
Can't get my model below 15k, and I need to get to 10k?
10k is only if you want to use it as a fallback, the medium barrier is at 15k and poor at 20k. At least medium is good since then Quest users can see you automatically, without changing settings themselves.
I see
I'm still in a bad place then, I do want to use it as a fallback 😭
I'll be using a higher poly version so I want questies to still see the avatar
do you have any mesh hidden under clothing?
Deleted most of it already
I think most of the polys are in the hair I exported from Vroid
I suppose you could separate the hair from the rest of the Avatar and whack it with a decimated modifier
Wooo that did some work
cool
would you mind hosting a wireframe of the Avatar so I can make suggestions for reductions?
Face and hands also have a lot of polys, I've been trying to reduce them
At this point it feels like I'm reducing polygons by the unit
are you familiar with dissolving Edge Loops as that would make much less of a mess tackling the hands and face
Yeah I've been selecting edge rings and loops and collapsing/dissolving them depending on what I need
and honestly even if you can only hit medium ranked on quest you're still miles better than most folks
but yeah it would be handy to have a custom fallback so you only have to go through this mess once
The problem is I want to use it as a fallback, so I can still use the og
Yeah I'll only do this again once I want a new fallback but I'm prob fine with this one
not sure it would get you a lot of polygons but I suppose the interior of the mouth would be somewhere that could be reduced with minimum visual impact
yup
and the hair you could probably chop off every other Edge Loop
In this short video we will take a look at how you can quickly select alternating polygon/face loops in Blender which, for example, can be useful to create fake screw threads etc.
I hope you'll find the tutorial useful.
Thanks for watching this video!
Cheers,
Wolf3D
Oh...
Checker deselect...
After I did the same thing but manually
I'll keep it in mind next time
But yeah no, the hair is already obliterated enough, I think if I take any more polys she'll be bald
Mostly broken up, I still need some polys there to keep the hair curves
yeah now the hair seems as low as it can go
what's your current triangle count
you could probably simplify the ears
or even just move some vertices around to completely cover the ears so you can completely remove them
That sounds better actually
I'll try
I'm at 11134 rn
I'd probably remove the ears first and then worry about moving the hair when you know how much it helps?
awesome you did it
it can all fit within fallback triangle count now
and now you know where to Target for next time
Holy fuck
Yeah I'll keep the 10k limit on mind next time I make a fallback
Also, some reduced parts can still help me on the original model, like the shoes
I tried it but it doesn't remove the warning
do you have like lots of unnecessary blend shapes?
have any 4K textures where you don't need them?
I packed all textures in a single 2048px texture, and I only have blendshapes for lipsync, blinking and a single additional blinking
I have a lot of animations, it's probably those 😅
yeah that might be a good idea to try to cut out some unneeded animations
this tool is technically intended for worlds but will tell you what's taking up file size in a Avatar just swap back to PC and use the local test build option and it'll tell you what's taking up file size https://github.com/oneVR/VRWorldToolkit
I kept the important animations and thanos snapped the rest, I can now upload it!!
Thank you very much for the help
glad to be of help
and now you can be done for a while with having to hyper optimized that much
as all the quest users will see your fallback if it's a pc-only avatar or a very poor Quest Avatar
Lesgooo
Is there any way I can see the quest version on pc without uploading a standalone of it?
no
Only thing you can do is upload the Quest version to PC, doesn't catch everything, but is the only thing you can do without a Quest.
Can someone pls optimize my kazutora model for me to have on quest and upload it for me I been waiting months for it
It’ll and it sucks ik it’s gonna be a lot of work
it is a lot of work 🙂
folks are unlikely to optimize your model for free
Yeah ik
Thry's avatar evaluator tool mentions that having states without a motion "might cause issues" and suggested playing empty animation clips in them... Does anyone know what these "issues" might be? (are they performance-related issues?)
If it would optimize performance i might go and fix them up,but otherwise meh
Is there any way to find an avatar on its own without having to use an avatar world?
you can find free ones on gumroad, jinxxy, booth etc by searching vrc avatars + lowest price first
Or are you searching for one specific one
Because if thats the case then no, ask #avatar-search-old or search the name of the exact model you're looking for, theres a chance the creator has an avatar world containing it advertised
Ok, thank you
Write Defaults Off literally stops working completely if even a single state is left with no animation applied. Some Write Default On creators and tutorials advise to leave it blank as unity takes care of animating things for you basically. But if you swap to Off or already use Off then you'll have a amazing time filling all those states in.
Ah, ok cool thanks - inconsequential for me.
WD Off for the win. :)
https://docs.vrchat.com/docs/avatars-30#write-defaults-on-states
What is Avatars 3.0? Avatars 3.0 is our name for all the features available for avatars in VRChat. AV3's features are focused on improving expression, performance, and the abilities of avatars in VRChat. Avatars 3.0 is heavily integrated with the Action Menu for controlling and interacting with the ...
Hate that Unity still hasn't made WD Off the default, it's a leftover backwards compatibility from before Unity 5, ancient stuff that isn't needed any more.
This page is quite frustrating. It talks about setting a standard for all creators to use Off, mentions they're On by default and need to be disabled, goes on to recommend using Off and explain that this may then require some "reset" animations just o end the whole argument with this
Who wrote this xD
bruh lol
Honestly, I just use write defaults off with a topmost layer that plays a single 1 frame animation on 0 speed that has all of the defaults I care about
Same thing more control
I only appreciate how the community first favored wd on, now not
https://github.com/hai-vr/combo-gesture-expressions-av3/issues/146
Anyone else knows that a lot of avatars tend to be flagged as very poor. It seems like it's pretty hard to write avatars that are poor or better
yes a lot of folks don't give a hoot about optimization
yeah, it's quite annoying
impossible if you need multiple light source, if you know...
difficult if you want toggles n clothes, polygons...
annoying if you do, because your avi autoshows but in shield status. therefore hiding things. others wont click your avi to enable "show all."
not if its already showing. annoying to have to say "hey, you can see me but you still need to click and enable 'show all..."
uh huh
its your own fault for commissioning someone here, mind you
take care next time
I just like Write Defaults On because it makes setting up animations for things easier most of the time. With them off I have to consider all the changes the last state did and potentially reverse them with a counter-animation before moving on to do whatever I want to do next (vs just moving on and only needing to animate what will differ from the avatar's default state).
Unless someone tells/shows me it actually has performance benefit to use WD off I'd rather just save the time of making double-ups of animations all the time.
Hmm it might just be a different thought process, wd off always made sense to me as all the animations in a layer control the same set of things.
did you just say he scammed you
This man looks like he just lost control of his account. Went from saying this person is a scammer just a couple hours ago in every channel to recommending them in every channel.
True lmao
Hey y'all, I'm trying to reduce the polygon count on an avatar by quite a bit. The tool I managed to find that looked nice is unfortunately outdated and no longer works (Mantis LOD Editor Online). Does anyone have any tools or modern guides that would still work? https://www.youtube.com/watch?v=thFhsYGDEJw Here's the unfortunately outdated guide I found.
This Tutorial Will Show you How To Decimate your Avatars for Uploading to VRChat.
NOTE: Models over 25-30k you May have To Deciminate using a different Method.
If you Have any Questions Leave your Comments Below.
Like, Share, Comment & Subscribe!
Thank you!
TimeStamps
Learn How To Add Dynamic Bone To your Avatar
https://youtu.be/d-6EN...
decimate in Unity? weird. Just do it in a modeling app like Blender.
Fair! I'm still new to VRchat, unity, and blender in general, so I'm not sure what the best way to do it is. Still happy for any guides or tips!
this tool still works, but is no longer free...Ill let you figure out how to ethically solve that one
In Blender, there's three good ways to decimate
this video explains two of them in a few minutes (cats and manual edge looping): https://youtu.be/8MkgXcidxg4?t=182
the other way is to select the mesh in object mode, enter edit mode, select what you want to decimate, click on mesh in the top left, select cleanup, select decimate geometry
Thank you! I've been messing with cats for a little while and having some issues, I'll look into these other ideas!
not the most exciting thing in the world but as preparation for the next furality condensed all of my badges down to a 1k material
Man the luma badge brings me so many memories
How much texture memory usage would be considered fine for the Quest 2? I know there's no official performance rating for it yet, but I want to know roughly how much I should aim for
is it more optimized to have separate image textures for toggleable clothing, or to put every single texture onto one (large) image so there's only one material?
the full image texture is 3600px
it's more optimized to have it one material because it reduces the draw call count
even if its a large image?
alright, thanks
is there a specific image size i should keep the texture less than? what is considered "too big"
the avg is 2048x2048 for thing like the body texture or various pieces of clothing in one material, use 4096x4096 only if it's to combine a lot of objects in one.
Another thing you can do to reduce texture size is reducing the resolution depending on how small is the object, because it will be less noticeable and it will cover less pixels than a big object like the main body
hey guys im currently trying to make a super optimized version of my personal model to use as a fallback, I know you can only have 1 material slot for an avi thats fall back so im going to have to atlas everything, only issue is some of my materials usually need to be transparent and cutout, is there anyway to still do that with an atlassed texture
Fall backs are technically quest as far as I've experienced so, no.
damn guess i'll have to figure out a way around it then
also is there any sort of limitation for how many blendshapes can be on a fallback?
I'm no expert but as far as it goes, having blendshapes adds more size to the avi, so make sure you have very little.
Is thwre a way to filter extreme very poor avatars from low very poor avatars?
Because I have shown every avatar, because my PC can handle 100 mats and 300k polygons, but it can not handle avatars with 2mio polygons and 500 materials...
Is there a way to filter them out?
Because if I only allow poor and bellow, 90% of the players are hidden my default because most peoples are very poor.
I just want to filter them for myself, so that i can still see peoples with 300k polys, but hide that peoples that would lag the hell out of my PC or even crash me..
No, but you can try with memory size because the poorer the avatar, the more memory it'll use
Its on 200MB for me.
I have it on 35
Why by the way is there no option for it?
No, very poor is already the over-the-limit rank, maybe they'll make it higher some day but for now it's set as if it was the worst case flr performance, where an avatar uses very heavy shaders and there are various of these avatars on the instance, and also being run on a normal computer
The thing is, even if you just 1 pilygon ocer 70k the qvatar would still run well on most PC's vut you get durectly k7cked in the same topic like the 2mio poly, 500 mats avatars.
And if you want to see most of the players, you have to enable very poor.
Yea, in vrc it's ranked by tresholds, it would be cool if it used some kind of "performance points" system where you could limit performance by a specified amount of points, but apart that it hasn't been requested on the canny, it would have to be a very big change and since some people just want to be hated by everyone, they'll find any possible exploits to crash or just be annoying.
For now what people have to do is to meet the minimum performance rank (poor) with their avatars, because if they are doing something, then they have to do it well.
Excellent zip bomb avatar.
A bunch of cubes crunched to 6MB but with 16K textures
Yeah i don't even know what this kind of people that crash, annoy and do other malicious stuff in vrchat just for the fun of it do after closing their computer
It's like they only exist to be the worst kind of person because they don't have anything else to do i. Their life
The fact that it makes you angry let them enjoy their missbehavior even more. (Paradox)
Yea that's what they are aiming for at the end
For now i am just staying away from publics like black cat or any spanish lobby since there's always someone with clients or being straight up toxic.
And that's helping me to be less paranoic but it's gonna take its time
Last time, i got my 8 tundra trackers and tried it with my virtual desktop pico 4 for my first time...
But after I joined a lobby, i got a very loud high pitched peep sound to hear that are close to destroy my eardrums and my game started to no longer respond until i closed it over the task manager.
After I rebootet my entire vr setup, virtual desktop, recallibrated my headset to my lighthoused with open space callibrator, put my safty higher and rejoined the lobby. I got crashed again by the same person.
My safety is as strict as everyone with everything on and only friends with the avatar activated (only the avatar, no light nor shaders nor animations), max download size 35 mb and all very poors blocked.
Because low ram and the sane people with exploits to crash other users.
Because fucking up someone's game it's hilarious apparently.
Would it possible to peogram a crash protection that turns the safty mode to true, if the ram or xpu is over floating?
there was a way to activate a more strict safety mode by clicking some buttons but i don't know if they changed
but in general, there's no feature afaik that will automatically activate it, you'll have to do it manually
i was working on some thing that i haven't finished yet that automatically skips rendering anything but the skybox when your delta time is extremely high using a crt and a shader that renders over everything, but i don't know if it'll prevent crashes, it does skip rendering and works at max performance but yea, some crashes happen during 2 or 3 frames and others just crash instantly
what cause a lag spike when loading a avatar? cloth and physbone initialization? or texture decompression? or anything else?
Its usually loading textures yeah, but each shader has to compile as well.
I'd like to know the most critical part, or acknowledge their impact sorted in order, so I can do optimization effectively
its just that its usually just the worst that makes a stutter, they all start at the same time using different parts of the 'puter but if there is one thing that cant be done in 1s/144hz = 6.9ms than the whole thing waits till it can
So i guess if i were to rate; Textures first as they decompress as they nyoom to the gpu, large audio files that compete with texture decompression with a certain setting (but honestly if it makes stutter worse you choosing between stutter at avatar load or stutter at first play), Shader compilation as every avatar pretty much has multiple unique shaders. I wouldnt consider things that would happen every frame for rating this
if I understood your rate correctly, its
Texture Compression > Audio Compression > Any Compression > Shader Compilation > Anything Else
one more thing, how performant is Physbone we are currently using? is it performant enough to let temporarily unused Physbone left on?
Quick question regarding quest avatars: if my PC avatar is rated "Good" performance, does that mean quest only users can see it? Or, does it have to be a quest only avatar so that they can see it?
PC avatars and Quest avatars are entirely separate, the only thing connecting them is the blueprint ID.
For each platform you need to specifically make a version
Unity asset bundles are platform specific
I know that, what I'm asking is if my avatar will be rated as PC & quest compatible.
If you uploaded both versions with the same blueprint ID, then its rating will depend on what platform you are on, Quest ratings are stricter.
It is over the polygon limit for android build, I know that much. I was just curious if having the PC avatar as "good" rating would allow quest users to see it.
no
Thank you, that's all I needed to know. I will have to optimize it then.
quest care not what rating a pc uploaded rank is, they only see the quest version
Quest users can see very poor quest uploaded avatars right?
I see the VRC website doesn't mention very poor status, so I'm not sure.
very poor avatars have to be manually turned on on Quest
yet to test any on my quest , my fallbacks are all <10k poly anyway
so basically you'll have to optimize at the very least to poor if random people want to see you
I see..
could you show a wireframe so I can make some suggestions for triangle reduction
Uhh, sure, but I'm well aware of where it could use work 😅
question do you have mesh under your clothing
no
It's a single mesh, only has one toggle for a weapon.
the problem is that I'm using a few prefabs in unity that aren't attached to the rig, so I'd have to convert them to FBX then optimize in blender, which is a hassle tbf.
are you could potentially drop the prefabs from the quest build?
I would but this isn't my avatar, working on it for a friend, they want the prefabs. 😅
you should be able to find the original fbx files that make up the prefab somewhere in the project
Yep I just now did that
PC
cool just wanted to know so I know how pretty you have to worry about making the quest props
Supposing I have a puppet hand that I've set up rotation constraints for, to mimic the hand/finger rotations of one of the avatar's hands, but I only have that puppet hand visible sometimes. Will disabling the rotation constraints while the puppet hand is not visible improve performance? What about if I just change the weight on the constraints to 0? Does having a bunch of disabled constraints affect performance at all, or is it the same as if the constraints were not even in the scene?
(the puppet hand would be "hidden" by scaling its parent bone to 0,0,0)
as this is a small indie dev game, scaling to 0 might/probably will cause issues if udon references (aim for 0.001), and scaling to 0 does nothing for changing what needs to be done performancewise. Uncheck/disable the entire gameobject if youre worried about such things
unchecking a gameobject which is a bone does not do anything. But either way, I am looking for information regarding the performance impact of active, inactive and 0-weighted constraints - the way the "puppet hand", in this example is made not visible is not relevant, I just added it for extra context.
Disabling an object does nothing, okie
eh? If the object had a skinned mesh renderer on it, then it would hide the mesh. Disabling an object with no components on itself or any of its children will not noticeably change anything. Are you suggesting that disabling a game object with children that have rotation constraints will have a performance impact of some kind? (I'm not saying it wont, i haven't tested that)
edit: Just tested this - disabling a gameobject that has constraints does not appear to have any effect - the constraints continue to stay in effect.
I dont think your constraints are necessary if disabling them changes nothing?
Disabling the constraints... disables them. Making the gameobject the constraints are on inactivate does not disable the constraints.
I will test again, I may have made a mistake, But I feel like this very unlikely to be the case - toggles for world-constrained objects would be made very differently if disabling the gameobject they were parented under also disabled all of the constraints under it.
Right, so my question is regarding the performance impact of disabling constraints vs setting their weight to 0 vs there not being any constraints to begin with
256 copies of my avatar with a gameobect disabled, 26.6ms. Parent constraint disabled gameobject enabled 32.0 ms. Enabled at 1, 34.6. Set to 0, 36.4ms.
Doesnt seem like theres much of a difference between enabled/disabled/0/1 with a constraint. But turning off the gameobject it holds does it
I have a feeling we're having some miscommunication around the disabling of game objects the impact that has on constraints, but I dont think its too importantto worry about.
But your findings that the performance impact of the constraint being enables/disable/0/1 is sad news if true... because it sounds like it doesnt matter what the current state of the constraint is at, its performance impact stays
Even i found it weird that disabling the constraint via its own on/off button didnt change much.. Lemme test again with more lag
My ideal scenario would be that I could have 16 or so rotation constraints set up to allow for a gimmick that might be used once every now and then. But if allowing for that to happen means I cause a continual performance impact even while not using it (ie. even if i am setting the constraints to be off/0 when not in use) - it not really worth the cost
512 avatar deleted a buncha extra stuff test! object+constraint disabled 75.5ms, object enabled constraint disabled 76.0 ms, constraint on 1 76ms, constraint on 0, 76ms
yeah imma go with dont even worry about it
Unity, why you be like this. Just let me optimize things in you!
oh wait i misread a number. Was that a typo or did you get 176ms with the constraint enabled, and 76 with the constraint either disabled or 0 weighted?
hmmm
Without any more information i guess i'll just go ahead and include this thing and just assume it will not actually have any noticeable impact even if unused 90% of the time
but if you wanna test this yourself just get a constraint in attached to the avatar instead of the armature and name it something unique, enter play mode and duplicate the avatar till happy with the amount of lag, type in the hierarchy search bar the name of the gameobject constraint, select all and play with all the settings at once!
ahh, that makes sense
So ignoring VRC's ranking, is it generally better to keep outfits as separate meshes to toggle, use the shader to make them transparent, shrink them with blend shapes, or some combo of those?
the Shader method would potentially have lower amounts of draw calls https://poiyomi.vercel.app/special-fx/uv-tile-discard
UV Tile Discard (previously known as UDIM Discard) provides an efficient way to toggle portions of a model on and off at runtime. This is done by placing portions of the model on different UV Tiles, and then discarding specific tiles at runtime.
and the blendshape method would probably be the worst as it would be having the calculate the blendshapes every frame and the cost of blendshapes goes higher the more vertices are affected
Would the blendshape route really necessarily be the worst option? I thought that having a bunch of skinned mesh renderers going at once is pretty bad on performance for their draw calls?
well, tbh it really does depend on how many verts. So if you are planning to combine 25 outfits into one mesh then the blendshape option might be not very amazing xD
Do you want your avatar to be efficient and be loved by everyone because of all the frames you're saving them? Follow these tips and you should be good! Any recommended numbers or limits in this document are subject to change at any time. Although some of the descriptions provided below are not prec...
Oh perfect, exactly what I was looking for. Thanks!
Heres a question regarding animation files: which is better for performance (or is there even a difference)?
In both scenarios you have two states, one state is for having an item toggled off, the other is for having the same item toggled on.
A) 2 animations with 1 frame each, one toggling an item off, the other toggling the same item on.
B) 1 animation with 2 frames. First frame toggles item off, 2nd frame toggles item on. use Speed = -1 in the "off" state and speed = 1 in the "on" state.
I assume the only impact will be on... avatar size? Is storing/accessing two animations with not many frames more/less costly than storing/accessing one animation with more frames?
What if you exaggerate the scenario to something like 10 single frame animations vs 1 animation with a large number of frames that you use a motion time to specifically play the frame that contains the combination of toggles that you want (simulating 10 non-mutually exclusive animations).
Are animations basically free real estate and not worth bothering to optimize/combine where I can?
animation clips are barely any data at all. it's way more important to optimize the number of skinned meshes used, blend shapes, and unique materials used
Option A is what you have to use. EXCEPT it has to have two frames, toggling the item on&on (or off&off if its an off toggle), with Loop Time on. Then it'll run 60 times a sec. Any other option, or no loop time, then it'll desync. And others might see you with wrong clothes/items. So doesnt matter if any other way is less laggy. Remember transition speed should also be 0.02, minimum, according to docs
can you explain why you believe option B would not work?
avatar sync bug. read that section
you can make an alt, meet yourself, and test or take my and docs word for it
This isnt just an issue you you are using write default off, perhaps?
its hard to imagine why a running animation with 1 frame would be running for a remote user and not actually be animating its thing
the only way option B will work is if you set speed paramater in the state to a float and control it via a radial in menu. but controls will be weird.
why would you need it to be controlled?
elsw its default at frame 1.
not if you have hard set to -1
if you set it up as described, t force sync
And it might be. If youre using WD on ( which docs say you shouldnt) then you might not have to worry.
right. My question was only regarding the performance impact, not the functionality of the setup, but yes for context im only considering this from an "all write defaults on" perspective
its happening because if you toggle on a toggle, bool rhat activates it isnt sent to remote, so anim isnt run.
If you want to make something broken, that docs and the cokmunity advice agaijst, to save 0.2 frsmes. sure
then the item would be whatever the default it, at least until the param syncs, sure. It seems like the isse would occur for either
I understand that you dont agree with setting up an animator this way, but I am still wanting to learn what the potential relative performance impacts would be if one was to setup a configuration like this.
Regarding "saving 0.2 frames". I dont know that i actualy want to save the frames specifically , im trying to figure out if saving them reduces the overall avatar size/perf impact (because i dont know )
I dont know if the impact is even measurable in frames, as itd be extremely low. But yes, cant answer during your specific conditions. Recommend someone else takes a lookat the linked question
Thanks, your opinion that it would probably be extremely low/negligible is good info!
I dont think B would even work, animations tend to play even tho they are 1 frame. Sorta like a counter. 10 seconds on -1 play would mean youd need 10.01 seconds on 1 speed to get back to the next keyframe
But using Motion time on something with 0 play speed works for choosing the 0 or 1st keyframe
That's what I was trying to say earlier, but couldn't type well as I was in VR.
I used option B before and its worked, but i usually dont because its more organized (imo) to have a single animation for each toggle state.
(if you don't agree this works thats fine I'm not trying to argue/discuss that point, just looking to figure out the size/performance impact difference, if its not negligible)
Unity plays single-frame animations for a full second in animator states, so yeah the 2-frame thing isn't really needed unless you specifically need a state to last for a single frame with exit time.
why would you enable loop time? that is not needed if you toggle something on/off
assuming you have a bool as parameter:
[off state] -- bool = true --> [on state]
off and on state both have a one frame animation with loop time turned off. Of course, make a transition back with bool = false.
The transition time doesn't really matter, as it just switches and stays in that state, if it desyncs, it will sync the next time the data is sent.
I do it like that since 2020, and it works without any issue with transition time of 0.
(works of course as well with ints)
works with WD on and off
Because that will rerun the animation. Without it, it'll run out after 2 frames.
This will cause desync (maybe for the slower machines?) or material swaps/transforms to show wrong for only some. The dev log I posted above explains it. And yeah, it'll sync the next time. But that implies a change will occurr. What if you have your avi spawn in ready to go, and you dont change anything, and clothing on naughty parts didnt show up.
Does anyone know how to deal with the “too many animators” error on the sdk control panel?
It might sound a bit too obvious, but how many animators do you have in your avatar? Is there a reason ?
(Also this channel probs isn't the right place for that kind of question)
the slowest parameter sync is 1/s and can be as high as 0.1/s, that's plenty fast.
And: "clothing on naughty parts didnt show up." Just design the animator so that doesn't happen. It's not hard to do.
Sorry for coming in so late but I don't believe that's how unity handles the animations.
You can have animations with just 1 keyframe, unity treats it as a 1 second animation when it comes to Exit time, % transition time and Loop Time iirc. You don't need Loop Time either as unity will continue animating the object(s) to the values of the last keyframe for each property of said animation. The animator may be in a desynced state for a brief moment after the avatar loads in on remote, if the local user is not currently in the uploaded state, but it'll sync as long as the user is receiving the Expression Parameter List values. As for transition duration, though I don't recall reading about the recommended 0.02s, I'd say 0s transition duration does about the same. Both would transition to the next state in the next frame.
As for the issue you linked to a bit later in the dev blog concerning desyncing on remote load. This is a bug referring to an Expression Parameter List issue where it would either receive the incorrect values from a previous load or no values at all, resulting in all 0's. This led to controllers progressing the layer(s) with those values leading to an undesirable state on remote until the local user loaded into the model and sent the correct Expression Parameter List values. The issue wasn't due to any variations of animation or state setup/design.
In their example, B is a design that has be popularised recently in an effort to reduce the number of animations, and thus size, of the avatar. As unity will 'hold' the values of a keyframe when loop time is disabled, having the Off and On values be 1 frame after the other and transitioning between states that use -1 and 1 as their speeds, the layer will act the same as any other toggle.
I used Sippbox's method to create a toggle state. One state into a state and back. Other methods still have the problem. Desync, that were resolved by turning on loop time and am inimum transition time of 0.02.
Here, is a VRCContactReciever looking for an OnEnter hand event.
The wearer of the avi can always initiate it, but almost always do only show for them.
Maybe one hit in 10 is shown over the network. I can never initiate it either.
The animation starting the particle effect after a collision, has 1 frame to turn it on, no loop time.
Here is the same avatar, same build. Except now the animation to turn on the particle effect has two frames, that turn on the particle effect. Loop time is on.
And now the wearer can always activate, and it syncs properply through the network for others.
As well can I now activate it, and I see it.
Addendum is that, nearly every Booth avatar always has two frames and loop time. So, an onanimation has two frames to turn it on and loop time on. Vice versa for off. This happens with everything, including clothing. Don't know what specifically cause it, maybe avatars that has really much stuff going on (like 30 toggles). Quest seems to be more affected than stronger computers.
This is the same, or very close, to the bug mentioned in the dev update.
https://ask.vrchat.com/t/developer-update-26-january-2023/16072
The fix is just to make an animation with two frames, each one doing the same. And Loop Time on.
But if you want to make something that's not going to sync properly over the network by instead turning off LoopTime and using only one animation, be my guest
@wet harness @onyx harness
This is the same, or very close, to the bug mentioned in the dev update.
Is this in reference to the "Avatar Sync Bug" or something else?
Yes.
I'm not a world maker. So I don't know if that part specifically refers to this. SO I added, "it's very close if it's not."
That bug is in reference to avatar initialisation differences in the Expression Parameter List values where remote users receive the wrong values for an avatar before the local user has loaded into an said avatar.
Basically in the time frame between Remote loading the avatar and Local not, it leads to controllers transitioning through logic using unintended values animating things it's not meant to such as changing materials or disabling objects (depends on what's animated in the 0 value animation)
OnEnter, being that it only triggers as True for 1 frame, has always given people issue. It's interesting that giving the animations 2 frames and loop time actually consistently resolves this though
I'm definitely going to try it and look into it further
This doesn't only occur with VRCContact Recievers. It happens with everything.
Including a simple material switch toggle, or a mesh on/off toggle.
I only know it's fixed with LoopTime on, and two frames doing the same thing.
Only reference to this bug I can find, is the warning here:
https://docs.vrchat.com/docs/state-behaviors
if you've ever seen someone load in nude and then clothing enable this is why
I see. But what I'm talking about, is when the clothing doesn't enable even afterward.
It continues to say off, until turned back off then on in the menu.
And 2 frames/loop time resolves that, as Unity is constantly spamming the clothing back on
I've never seen a case where a player will enter a state, stay in said state and not animate the property loop time or not.
I haven't used loop time on toggles since sdk3 dropped and haven't had a desync issue on remote sides to date.
It's very rare. I had the problem until I turned on Loop Time. But my avatar is optimized to use its bones as toggles for scaling stuff, like a hat is turned to 0 0 0 scale.
Others who've had this problem, set up the avatar as a typical, unoptimized one, with mesh toggles.
I can only guess it's related to device speed, as quest seems more affected than PCVR. Or it's an internet speed thing
I can only speak for what I've done/experienced but be material, mesh, bone, alpha, udim, I've touched just about every toggle method with loop time on and off without any difference in desync between them. My Quest experiences are considerably smaller but even then, bone or mesh, using 2 keyframes with loop time off hasn't resulted in desync yet.
When things are/were desyncing, was it all toggles or a select few?
It was random each time. At times, nearly every toggle failed. At times, it was only one, like a belt buckle on a pair of shorts. And very hard to reproduce with a friend. Best way to catch it in action is just to go to a public world, and ask everyone if anyone is seeing anything missing
Usually, there'd be one who says "Oh yeah, I can't see the socks!"
I did have success, seeing it in action by meeting my alt. But not reliably every time
It is a shame people can't bring up some sort of debug view of another person's model. Even just to see what parameter values they currently are receiving. Though I'm sure people would find some way to abuse it
Well I can't really just sit here and say you didn't experience desync. I'll keep an eye out for it in my 2 frame looping off vrchat adventures. See if I can replicate it at all. Maybe I'll try some 1 frame, loop off avatars too
Help, I tried and use the merge material a.k.a save atlas to thingy with the Cats blender addon and now my most of my avatar seems turn into this hair abomination
I think it´s the UVs staying the same, using the hair texture instead of the rest
looks like vrm, they have a quirk with atlas
well for one I know the hair uses tiling stacked uv's
How I'd fix that, is to import it to Unity before atlasing. Then drop into scene, right click the avi, use FBX exporter, to reexport it. Then use BetterFBX plugin on Blender to reimport. Then I'd do the atlas and export. BetterFBX is optional, but it'd be very messy when importing it to Blender otherwise, and you'd have to use Cats to refix some bones. Might be a better way, this is the only way I know to fix it
You mentioned a reason people do this would be to reduce avatar size. Do you have any idea on the scope of size being saved by people using this method? Like, an avatar probably will have less than 100 toggle animations. Optimizing that into , let's say, 50 - is that actually saving any significant amount of space?
And would this affect only avatar download size, you think?
What would be the best way to get physbones on because the hair itself has well over 8 but only 8 are aloud can some1 help out
Physbones support a root bone! Parent all the hair bones to a hair.root and put the script there. Dont use end bones, use endpoint position in the physbone script
Oh okay thank you very much
Dose the “texture memory” in the avatar details means how much VRAM the avatar is taking? No matter what my shader safety strategy is, as long as this avatar is showed.
yes that would be how much vram the Avatar takes up and safety settings wouldn't change the vram usage
Thank you, is there an article that I can refer to?
unfortunately the only spot in the vrchat documentation that mentions texture memory
https://github.com/Thryrallo/VRC-Avatar-Performance-Tools this Unity editor extension will try to estimate vram usage of the avatar
It only refers to how much VRAM the textures are taking up.
It doesn't count the mesh or for example any audio files.
Thry's avatar evaluator does however.
In regards to what is good and bad hasn't been established yet, that will probably wait for when they can add it to the performance metrics (adding it isn't simple, as the game only knows the texture memory after it has already loaded in the avatar).
I would assume 100MB of texture memory would be medium or poor, but anything they have said about it has been very preliminary.
Super thanks for both. Appreciated!
but yeah try to see if you can get your avatar as low as possible without looking bad
https://twitter.com/FaraVR/status/1612185972766130189?s=20 example of a handy Shader trick that can help with vram
Showing the use of Detail Normals with RGBA Color Masking in @poiyomi . Still on my quest to reduce the use of 4K normal maps in VRC. This entire set is a single 2K normal but still has low frequency cloth detail with the use of DNs. DNs are all 256px
Tips and guidelines for optimizing texture memory (VRAM) and filesize for VRChat creation.
Hi im making an avatar but it has 2 million polygons how can i make this less?
this video shows various ways of reducing triangle count https://www.youtube.com/watch?v=8MkgXcidxg4
Did this video help you? Consider sending me a tip on Ko-fi! https://ko-fi.com/sippbox
Making optimized Quest models is hard. But it doesn't have to be! With recently updated polygon limits and fallback avatars, it's a better time than ever to create something that represents you to Quest users! Hopefully this tutorial will help you out!
0:00 ...
why are you using a subdivide modifier on your avatar
idk but i changed the iterations and it workede
I have changed the UVmap of my catears in blender, and the shadow looks strange, anyone has an idea?
The uv is changed to match the 2nd texture.
I also have apply all shape keys of the mesh. It looks like a problem of normal, and I have tried export a modified_UV_Catear with unmodified shapekeys, but the problem still occurs.
This button will 100% clear any oddly locked normals
Thanks for your reply, but the problem can not be solved.
darn, nuclear it is. Delete materials and all old textures that use the old uv map hmph
So strange
for me it looks like you are using the wrong normal map on the material
How are the posts being deleted in the wikis, posts that I post in a wiki are not all spam, and they all get deleted
how does vrchat handle shadow and reflection? are there something like invisible shadow and reflection clone for every avatar instance?
There's no invisible shadow for every avatar individually, if it was the case then the game would run vay slower than how it runs now with the current avatars and worlds
Does anyone have a visual representation of the cost of shapekeys on a model?
I know there's a point where it's better to just separate off the head mesh but I'm wanting to see if there's any specific numbers
VRChat's given point is when above 32k polygons. https://docs.vrchat.com/docs/avatar-optimizing-tips#-except-when-youre-using-shapekeys
Do you want your avatar to be efficient and be loved by everyone because of all the frames you're saving them? Follow these tips and you should be good! Any recommended numbers or limits in this document are subject to change at any time. Although some of the descriptions provided below are not prec...
I’m more looking for benchmarking.
I have unfortunately not seen one, would like to see performance graphs for things in general, but only seen one comparing physbone components growth to constraints, physbones seem to be logarithmic, while constraints are basically linear.
Yeah, I know the person who made that graph
is there a way i can have transparency on a material with it being quest optimized? i tried all mobile shaders but theres no result
transparency is not supported on Quest avatars
Does anyone know if there is any significant impact to having a trail renderer emitting vs not emitting? Does the material required only cost a draw call while there are parts of the trail still existing (and so if you wait for all the trail parts to stop existing and stop emitting - do you save 1 draw call during that time?)
It is very slightly possible through the VRChat/Mobile/Particles/Multiply shader but that is not proper transparency and doesn't support using a texture
just disable the trailrenderer entirely if you don't draw, and enable it when you want to draw and emit / stop emitting
that should save the draw call while not in use
if you want, you can take a look at my pen prefab:
https://github.com/tschaerni/OtterPen
I was trying to figure out if disabling it entirely did actually stop the draw call (because if it didnt, i figured I'd re-use it as some kind of flare/extra effect while not drawing - like have it change to give a short trail effect elsewhere).
But I suspect your probably right, that simply stopping the emitting probably doesnt free up the performance impact as disabling it would
as far as I understand it, as long as something is active, it's loaded in to the VRAM and causes drawcalls. But if it's completely disabled, it's still loaded in to VRAM (but gets swapped first if VRAM is full), but doesn't cause a drawcall
anyone has exemple of any state animator abuse
hey
don't use massive amounts of transitions out of Any State. you're asking the animator to check dozens (or god forbid, hundreds) of conditions every frame the animator runs. its ok to check that many once when params change, not EVERY UPDATE.
tia
pulls out popcorn
748
326
thanks
no honestly thanks, i was doing some stuff wrong tho I don't think it was as bad as what i see here
Ah yes, then there’s myself a newbie never touching the animator in Unity trying to figure out making how to make massive direct blend tree for all my avatar toggles. Well, hopefully someone comes up with documation or a tutorial how to do it cause I’m tearing hairs out at this point, but I guess time will tell, I really hope someone does to help everyone with making a good animator to help with cpu times.
that is indeed an amalgamation
guide me to the right direction
u gotta do it in blender? but i have the bones in the unity scene
Unity is not modeling software you'll have to merge the bones in blender
how do i take it from unity though i would need to make it a fbx
wouldnt that get rid of all the components too
there would be a fbx already for the Avatar somewhere in the assets folder
so i have to put everything together on blender ?
all the hairs and clothing and everything
yes basically most operations related to modifying avatars happens in blender
welp that sounds like an immense hassle lol
well you're wanting to optimize your avatars so going to have to put in the work
i guess so ill have to try one day thx
wait till u see my friends avatar though
this is for each bone lol
why do you have like 10 copies of each bone
cause each clothing has their armature
🙁
That is terrible for performance
thats the most common and likely the default way the cloths sell on booth uses to intergrate
performance heavy thought
talking about bones, if I disable the bone object, will it reduce performance cost ? and in terms of Physbone, if I disable the object with the physbone script but not the script, will it reduce the performance cost?
I mean.. let me explain
Local avatar has its head chopped off. If not, your view will be clipped inside the avatar head.
however, in mirror and shadow(nearby a realtime light source) will show the head.
so I suspect that for local player, here will be a shadow clone and mirror clone thats not directly visible, but can interact with light source and mirror.
I suppose these clones are not available for remote avatar instances
Booth models, dressing scripts for modular clothing. Hips goes to hips, spine to spine and so on but nothing is merged so it’s just hips, hips, hips, hips, hips, hips, hips, hips, spine, spine…
Blender scary
But it’s more like they want to sell clothing/accessory addons without expecting experience with blender so it’s more widely available.
It doesn't clone the avatar, what it does is use a script that tells the renderer to shrink the head bone to 0 if it's rendering from the main camera. The beat saber avatar mod also has a script that does that
Ppl need to learn blender if they are going to edit avatars. It's like makinv a mod for minecraft, you need to know java ( you also won't get support from the forums as i've seen the "bgolus" of the forum is really mean). And using automated tools will have you very very limited as i saw.
So you need to know blender to put clothing on your avatar, ppl cannot go adding 100 separate skinned meshes with 1000 bones, 300 material slots and 200k polygons
Is there a way to animate a texture change without needing a duplicate material? 🤔 Example; Changing a gold chain to silver via animating the swapping of the main texture.
You can't swap textures in materials, you need to do a material swap. In your example though what is possible is to change the albedo tint, which is available in pretty much all commonly used shaders.
Yeah was just using that as an example wasn't quite the goal. Thank you for the answer regardless. Saves me a lot of time trying the impossible lol
Hm, I bet you could get the same issues with normal states if you have too many transitions from one state.
That's not guaranteed to run at all times though, AnyState is even worse in that regard.
I just pretend every transition is like an if statement in code that has to run every frame. xD
I'm gonna quote someone here who actually did some tests: https://twitter.com/jellejurre/status/1623025880623640579
Worth to read an entire thread too.
@dtupper Anystates don't actually matter that much
One extra layer adds as about much frametime as being in a layer with 200 anystate transitions
The rest I agree with though, animators can absolutely lag you the hell out. Less layer more better
Yea reducing layer count is a thing as well.
Optimizing layer count is hard with WD On though, gotta drive all relevant things with all animations, otherwise they reset to default.
Benefit of WD Off there, you can just have it pass through a state to do setup for a particular feature.
I made a gun you can pick up 2-handed both left and right-handed, it just passes through different setup states for constraints and the rest of the states are shared between them, no need to make a huge splitting tree like WD On would require, and tbh I'd just put it in a separate layer instead with WD On, too much work to do it the other way.
Syncing that though is another problem.
Yeah, gotta pass through the correct states on load. Not very useful for clothing toggles, but pickup states and such? Very useful.
For toggles I just have a long line of states that it iterates thru when I make a change. 1 layer for all toggles
I use a direct blendtree for toggles, radials and stuff like that.
A single FX layer with a single blend tree state does the same job as dozens of layers if I would have done them without utilizing a direct blendtree.
what do you mean by direct blend tree? 🤔
How would you enable all toggles with a blend?
I suppose if you have a gradual increase in something, like different hair styles, from small to large hair styles.
but no way to use all of them
How do you do toggles with a direct blendtree? Thought they only accepted floats, while toggles typically use bools.
You can mismatch parameter types between parameters list and animator controller, so you can define a parameter as a float in animator controller and as a bool or integer in your synced parameter list. False bool will translate to float 0, while bool true will translate to float 1. Integers translate directly, so integer 120 for example will directly correspond to float value 120.
This can be done with built-in VRChat parameters too.
IsLocal or VRMode can be used as a float parameters that are either 0 or 1 for example.
Ah! Didn't know about the automatic conversion. Handy.
NEAT, huge tip. I was wonderin how people had those 18 direct state toggle layer
thanks for confirming this works - I tried it and it wasn't, but now I need to go back and figure out what I did wrong because it should
also that hilarious duplicate bone armature, that's a bad way of doing things
You can do sprite-sheet animations though, so you could have a double-width texture and scroll it around rather than swapping material, but there are definitely limits of how good this is to do 🙂
understood, thanks for the explaination
If I disable the object with grabpass shader, will it reduce the performance cost? or it will keep eating the resources even if it is disabled
It will reduce perf cost yes
ok, thanks
I did this for a while. If you’re cool with the delay this introduces then that’s fine but this also introduces a new issue that is constantly transitioning through states which I’ve been told, at a large scale, will too cause lag.
No idea at what scale but the example that was used was an rng layer that swapped back and forth between states each with Pdrivers to generate a random Int for other systems. This was used as an example of what not to do.
My booth model does not have that many bones and I have like 10 different outfits and only have the extra bones that the outfit needs, like skirt bones or wings or that
Did not use blender
What dresser unity script did you use to merge the clothing to the model?
Sure, dm. Would help a lot if everyone used it.
I know bd_ made one and apparently that one merges armatures and stuff, but I never used a tool like that.
My friend made one she includes with her clothing assets, it's not too hard to do it. The bd_ one is really cool but kinda all-encompassing. I think VRCFury does this too though
I finally finished my optimised avatar using UDIM and now comes the animating. Previously I've just used separate layers for all the toggles (as pictured), what is the process for combining them into fewer ones?
thats alotta words....
to bad im not readin em
Damn bro, still better than 80% of other custom models
Though you could merge 2 meshes into others and be 
yeah plus reducing material slots is always good for actual performance reasons even though you're already fine there by the measurement
Yay tile discard! There's no real reason to combine those - each "task" done having its own layer is the standard way of doing things. You could do it all in one with a direct blend tree though, if you wanted. There's not a lot of docs on this though.
Direct blend tree.
@undone cradle @grizzled shard
Basically you create a new layer, make a new blend treee state, regardless of your Write Defaults preference that state must be set to Write Defaults ON, because WD OFF direct blend trees are more annoying to work with and are very easy to break.
Direct blend trees are exempt from WD mixing and don't break if rest of your layers are WD off as long as you don't have other WD Off blend tree states anywhere else.
Under the root direct blend tree you can add more blend trees, where you basically blend/switch between two or more animations/blend trees based on float parameters.
You need to create a float parameter that will always be 1 and be used as sort of a layer weight.
Since blend trees only accept float parameters as input/outputs, you need to rely on parameter type mismatching, which I described earlier: #avatar-optimization message
At that point you can think of root direct blend tree as a simplified animator controller and blend trees coming out of it as animator layers.
You can easily put any radials and get some simpler logic done with this method. Stuff that requires changing animator tracking control, parameter drivers etc. can't be put in direct blend tree obviously.
This way of using direct blend trees is not documented anywhere yet and it might produce strange results if for example you will put long animations in there. Few people researched it and use it and so far it only sees use in very few prefabs, such as ThatFatKidsMom Avatar Prop.
Sweet, thanks for this write-up! Gonna experiment with it later.
Nice write-up, yeah.
It works, managed to condense five animator layers down into one.
Cool
You can condense wayyyy more than 5 layers.
Also I should have mentioned that Lyuma's emulator and possibly also Gesture Manager(?) don't support parameter type mismatching. Lyuma will just throw a lot of warnings in console about parameters not found.
So if you want to test if any stuff using that behaviour is working, you need to manipulate parameters directly in your animator instead in menus provided by these tools.