Advanced Search
Search Results
368 total results found
Saving Startup Files
Are you tired of having to delete the default Blender objects when making a new .blend file? Do you like having Active Zero Weight on but hate having to turn it on each time? Look no further because Blender has a button for that! First, you're going to creat...
Blu's List of known VCC Community Repositories
This is a list of Community Repositories that can be added to the VRChat Creator Companion for use in your projects. Work in Progress! Expect this page to be updated on a regular basis as more Community Repositories become available to the public. For Avatar...
Terrain Tips!
I apologize for the lack of pictures! This was originally written as a video tutorial script, and I haven't gotten around to recording the video for the tutorial yet! Since these tutorials take so long to make, I don’t want to reinvent the wheel. There is an ...
Upload an Avatar to VRChat 2023
Sippbox created a video tutorial very similar to this one! I apologize for the lack of pictures! This was originally written as a video tutorial script, and I didn't get around to recording the video for the tutorial! Because Sippbox beat me to it, I figure...
Set Up an FBX Avatar for VRChat!
If you want to follow along, I am going to use this model from the now outdated VRChat tutorial. Unzip it in Windows Explorer before importing. If your avatar package comes with a scene with your avatar set up, then just use that. Otherwise it might come with...
Introduction
The general methodology used to generate this data is to not look at the performance of a single instance of a Component, but to add more and more components and extract the formula for the performance from this data. For example: If we want to know how much f...
Introduction
To put the numbers in this section into perspective, I’d like to mention two points: Every test here is done without any state behaviours. Having one or more state behaviours on any layer of any controller increases the runtime of all controllers on that av...
Baseline: Two state toggle
For our baseline, we are going to look at the simple 2 state toggle. The default toggle we will be comparing against. Two animations, each with two frames, both with the same value. Write defaults on. In every layer count test, the graph for layers vs frame ...
AnyState & Direct Blend Trees
AnyState AnyState seems to be similar in performance to non-AnyState toggles, no matter the amount of AnyState toggles. This indicates the amount of transitions checks is not a significant contributing factor to frame time, which is confirmed by other tests. ...
Miscellaneous
Now for some miscellaneous data which doesn’t directly relate to toggles, but might be useful to someone: State count per layer and transition count don’t seem to matter much (which might be why AnyState is so cheap) The only time where this isn’t true i...
Multiple Controllers
Having multiple controllers does NOT scale linearly (that is, having 2 controllers with 100 layers causes way less lag than 1 controller with 200 layers). The actual relationship is hard to describe, but here is a visual to maybe help with this. Where every l...
Constraints
After animator controllers, I’m very happy to talk about something simple. Constraints behave weirdly, but in a very predictable way. Take the total amount of enabled constraints (type doesn’t matter) and use this graph to get the frame time. You can see that...
Audio Sources
Try as I might, I can’t seem to make these have any performance impact at all, even in unity where the max is 64 compared to VRChat’s 3 per avatar.
Contact Senders/Receivers
The first thing I want to say is that contacts have a max limit of 4096 per instance. If you have more than 4096 contacts in one instance, some will stop working Contact senders and receivers are pretty straightforward as well, costing: 0.5 ms of frame tim...
Cloth
Cloth components are very heavy and should be used very sparingly. For any reasonable amount of vertices (up to ~200k vertices), a cloth component will add around 0.2 ms per 1000 vertices. Above this, the frame time shoots up hard before tapering off, but thi...
What's Next?
I am planning to continue benchmarking components after this. Some components I have already started on, but I’m not sure enough yet about my data to post it. The components I want to benchmark in the future are: PhysBones/PhysBone colliders Skinned mesh...
PhysBones
Physbones are quite well optimized, and within reason can be considered pretty cheap. It seems that the frame time of PhysBones is mostly reliant on how many transforms they animate, at a rate of 2 ms per 1000 affected PhysBone transforms. The component hier...
UV Tile Discarding
This page could do with some revisions to better explain things. However still serves well as a guide. UV Tile Discarding, AKA "the best thing that'll ever happen to you" is a method of optimization and a valuable tool for avatar creation at the same time. I...