๐Ÿ•’ 7 Minute Read

Last Updated: Oct 5th 2023


Contributors: Jellejurre, JustSleightly


Scaling in VRChat

VRChat recently added Avatar Scaling to the game. Players can scale their avatar using the hand circle menu between the minimum and maximum. By default, these values are 0.2m and 5m, but these can be set by worlds to be anything from 0.1m to 100m, and worlds can even force avatars to be a certain height. Worlds can also disable scaling if they want, but by default, scaling is enabled.

<aside> ๐Ÿ’ก Avatars that are uploaded with sizes outside of the default size range wonโ€™t be scaled by default, but will be set to a value inside of the range when the user uses avatar scaling or when the world forces a certain avatar height. You canโ€™t upload an avatar with a shoulder height lower than 0.1m, but you can upload an avatar with any height above that.

</aside>

This scaling update may break older systems, which use static offsets in certain places, and arenโ€™t designed to change scale. This article will go over how to design systems or modify systems to work in this new scaling environment.

The general rule for creating scale-friendly systems is that whenever the avatar scales, you want all relative effects to be the same. This means that for example the distance between two objects, or the distance an audio source can play, should scale with avatar height.

<aside> โ›” It seems that VRChat currently does not late sync scale parameters. All scale related float parameters seem to be set to 1.0 for late joiners. Hopefully this will be fixed soon.

</aside>


Shader Material Properties

Depending on the shader and what properties you use, some values may be absolute instead of relative, and not scale well with your avatar. Examples include many properties that utilize offsets from the surface/UV, such as vertex offset, point-to-point dissolve start/end values, and geometric dissolve offsets.

You may be able to resolve some of these properties with avatar scale with Scale Friendly Animating, or in some cases even utilizing vertex colors.


Constraint Components

Constraint components all respond quite well to scaling, since offsets are relative to constraint target scale. The only exception to this is parent constraint offsets. Their offsets are absolute, and donโ€™t scale with target scale in Unity.