Avatar optimization best practices?

I’m a casual avatar creator (mostly, I’ve just worked on my own avatar) looking for information on the best practices for optimizing for better performance rank.

  • I know about the CATS blender addon, but I don’t really know how to use it properly.
  • I’m confused by recent news about VRAM performance ranking. As I understand it, until this point the best practice was to combine all of an avatar’s textures into an atlas so that it can be drawn with a single draw call. However, this typically requires higher texture resolution to achieve comparable results to using multiple textures/materials, which if the atlas is inefficiently packed would result in wasted space and crunchier textures to fit within the VRAM limits. (If I don’t have a square number of materials, it inevitably ends up inefficiently packed).
  • Are there / what are the best practices for physbone parameters. I don’t want to compromise too much on secondary motion/dynamics, but I don’t know what my options are for reducing overhead of these components.

Any resources or tips from more experienced avatar creators would be appreciated.

I think best practices are going to involve making sure the texture area of each component is allocated well. If you throw a uv test map on your avatar, are the letters and pixels evenly sized? Should they be? A plain color area isn’t going to need as much texture space as finer details.

I made a test avatar with material swaps that basically lower the resolution on the texture. Good way to inspect parts and get an opinion on the allocation of texture space. Since the default mip scaling method is bicubic, I resized the image bicubic. So for 2048x2048 on himiko I made textures 1024 512 256 128 64 32 16 8. For 1024 and 512 most of the difference is in the hair detail, which makes sense, most of the texture atlas is hair.

The really low resolutions are good for getting a close look at how the model is colored at a distance. Good idea to group things by color so that the model will be textured kind of okay at a distance.

I’ve learned a lot about texturing by basically wrecking havoc on the texture for the himiko 2022 avatar. I suspect it’s atlased manually.

Performance of PhysBones is largely dictated by the number of PhysBone components, affected transforms, and colliders. The performance tool guide is appropriate to follow here. There are rigging tricks you can use to keep the numbers down while attaining good visual results.

Cloth physics should be avoided. You can often achieve good cloth visuals with a normal map, clever rigging, and perhaps a PhysBone component.

Atlasing textures will generally use only a small amount of extra VRAM (blank space in the atlas). If you design your textures to fit nicely in the atlas, they should use the same. You should atlas your textures and combine your meshes whenever possible.

Stick to common Shaders, such as the built-in ones, or popular ones such as Poiyomi. Tread carefully when looking for shaders with specific effects. Many fur shaders like to use tessellation, for example, which can look amazing and perform horrendously. And the performance tool won’t warn you.

The VRAM limits on PC are very forgiving. It’s very unlikely you’ll run afoul of them if you stick to reasonable resolutions. Limits on Quest are (appropriately) much tighter, and you must accept some loss in quality here. Crunching textures reduces their download size, but not their VRAM usage.

You can often reduce the resolution of secondary textures (such as AO and emission) significantly without affecting visuals. Experiment with resolution options.

I once saw someone with an 8k uncompressed texture which was solid white except for a tiny logo in one corner. Don’t be that person.

I would recommend keeping your avatars ‘simple’. Avoid novelties such as props (though you can probably get away with a simple one) etc. Avoid making avatars that can switch between different avatars; split those up into separate avatars.

Keep subdivision low and bake details as a normal map whenever possible.

Just to give you an idea of what quality you can reach within the performance limitations, many modern AAA game characters would probably be considered ‘Medium’ or better. AAA characters from older games (as few as five years back) would probably comfortably be ‘Excellent’.

I would recommend dissecting some open-source game assets, and perhaps checking out characters from well-regarded assets online (e.g. via the asset store). They can help you learn how a quality model is constructed.

If you are having issues achieving a certain look or quality that you feel should be achievable within your target performance parameters, don’t be afraid to ask online for advice.

Remember to multiply your avatar statistics by a large number when deciding if they are acceptable; you may find yourself in a room with 30 other similar avatars, and it still needs to perform well.

If you aim for good performance on the Quest, you will want to make sure you are intimately familiar with the limitations and design your avatar appropriately. You must be prepared to compromise if you target the Quest.

Accept that your first avatar will have issues, be them technical and artistic. It’s all a learning curve. Don’t stress out too much and just try your best.