Tutorial
Heading
Aug 4, 2023

How to reduce the file size of any VRM avatar

Quick and easy methods in Blender and Unity to reduce the weight of any VRM avatar

Premise

Editing a VRM file is easier than it looks. In this example we will be using Avastars, an OG NFT collection of more than 25,000 unique characters. Thanks to Polygonal Mind and VIPE, we’ve managed to transform these 2D characters into fully functional 3D avatars as VRMs.

Because we wanted to maintain a high quality result, the file size of these avatars exceed 8 MB. This is the avatar file size limit for some virtual worlds. For this reason, you may need to reduce their file size sacrificing some quality, but ensuring its interoperability by allowing its use on many platforms.

Fortunately, the world is not coming to an end: this can be easily achieved by only reducing the size of the textures. In fact, we have some extra good news, because these methods we are about to explain can be used to reduce the weight of any VRM avatar and do not result in a significant change in quality terms.

Let's dive in the process, so take your notes!

Mission

To empower the user to customize their VRM, reducing the file size and ensuring compatibility with many more platforms.

Method 1: Blender

Step 1: installing the required software and add-ons

We can use the 3D software Blender to perform a re-compression of the VRM, as well as the necessary plugin.

Here are the links!

To install the Add-on successfully, go to Edit>Preferences>Add-ons>Install and finally click on the checkbox. And you're done!

Step 2: import your VRM in Blender

Once you have it set, in the File tab you will find a new import method thanks to the plugin you have installed.

Click on Import>VRM and select the avatar that you aim to recompress.

Step 3: reduce all the texture maps size to 1024 px

In the shader editor panel, select the image to be reduced, click on Resize and type the new image size (1024 x 1024 px). Do this for all the head and the body texture maps of the VRM!

Step 4: select all the objects and export the VRM

When the images are reduced, select all objects in the scene and export them again as VRM. You can overwrite the one you already have or give it a new name.

Step 5: check the size and make sure it’s below 8 MB

Now it's time to check that everything is OK! Look in the folder where you have exported your VRM avatar and just make sure the file is smaller than 8 MB.

With this last step, we would be finished!

Method 2: Unity

Step 1: installing the required software and plug-ins

For this method the following software and plugins are required:

Note that for this process we will be using Unity VRM Plugin version 0.99.0. If you decide to go with another version, please read through the documentation carefully to avoid any issue during the process of installing!

Step 2: opening your Unity project and import the package

Let's start by creating a new Unity project and importing the Unity VRM Plugin we downloaded in the previous step.

Step 3: file handling

Now, import your VRM character into the project by dragging it into the Project tab in the Unity Editor.

The importing method will decompress the VRM and display all the data from a VRM by folders, including:

  • 📁 Avatar
  • 📁 AvatarDescription
  • 📁 BlendShapes
  • 📁 Materials
  • 📁 Meshes
  • 📁 MetaObject
  • 📁 Textures
  • 📦 VRM Prefab (decompressed assembly)
  • 📃 VRM File (uncompressed)

Drag the VRM prefab into the Hierarchy, this will load the object in the 0,0,0 position of the world origin.

Once loaded, your avatar should look like this:

Step 4: recompressing textures

To recompress the textures, open the Textures folder imported a few steps back. Here everything included in the VRM will show up, from Material data to VRM Metadata.

If you click on a file, the Inspector panel will display its data; there you can read what’s the current compression used and the estimated file size. Avastars, in our case, are generated in 2048 px square quality.

If we aim to do an horizontal increase of compression the best approach is to select all texture files (except the PFP thumbnail) and select a more suitable compression for low-end devices, e.g. 512 px.

Results will show up immediately, so you are able to check the quality output of your re-compression. And of course, rollback if you made a mistake.

2048 px Quality
512 px Quality

As we see, at this distance is very hard to really notice changes on the avatar as the camera is quite far. Doing a detail closeup can display better the changes on texture size, even if they are not truly significant.

2048 px Quality Closeup
512 px Quality Closeup

Step 5: exporting in VRM

Once you have everything ready, select your 3D avatar in the Hierarchy panel and click on the VRM0 tab, selecting Export to VRM 0.x

We are almost finished! Next, choose Export and select a file location for your newest compression export.

We already have our Avastar with all its textures recompressed to 512 px, so its file size will be less than 5 MB. Perfect for any low-end platform or if you want to load several avatars in a single virtual world in real time!

A quick and easy way to reduce our avatars weight for using them on any platform

This method can also be used for any VRM avatar you like. It’s a quick trick for reducing the file size of your character without sacrificing major visual or functional changes, only textures quality. Which in most platforms you won’t notice, especially on those requiring avatars with less than 8 MB.

We hope it has helped you, you can take a look at our blog for more tutorials related to the world of 3D!

vrm
Avatars
Blender
Unity
No items found.
News
Transforming Icons: Bored Ape Yacht Club 3D Avatar Collection
Tutorial
How to import Decentraland SkyboxEditor into Unity
Tutorial
Doing a MANA transaction in a Decentraland scene