How to Upload an Avatar

The basics of installing and getting familiar with the VRChat Creator Companion and Unity, and importing an avatar, either from a demo scene, a prefab, or an FBX file. You will be able to upload the avatar using VRChat's Avatar 3.0 system!

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 figured I would just post the script here!

Uploading an avatar isn’t as hard as you might think! This tutorial will cover the basics of uploading an avatar, including installing all the right tools!

But before I get into that, let me first go over the prerequisites!
You’ll need:

  1. A Windows PC
  2. A VRChat account (Not a Steam, Oculus or Viveport account! If you have 4 random letters and numbers after your name, then you don’t have a VRChat account! Log into VRChat's website to convert it to one!)
  3. And lastly, your VRChat account needs to be of at least New User ranking, the blue one! If you only have the Visitor rank,you can’t upload anything. Just spend more time in VRChat, make new friends, try not to get blocked and you will eventually get to New User rank.

After you’ve done all that you will then need to go to this link to download the VRChat Creator Companion! You may have to login to your VRChat account first; alternatively, you can use this link for a direct download. Open the exe and follow the installation instructions.

After it opens, if you don’t already have the correct Unity version installed it will offer to download it for you. Click the green button to install the correct version of Unity.

Once Unity is installed, in the Creator Companion, click New, Avatar, and you will be able to enter a project name and location. I recommend making a dedicated  folder for your VRChat Assets (I named mine VRChat Projects), and then a sub-folder to specifically store your Unity projects. I'd recommend putting it on your larger drive if you have multiple, because Unity projects can get pretty big!

After that’s done click Create and it will set up your new Unity project!

Click on the projects text on the left side, and under your new project click Open Project to open it!

Once Unity opens, you will be presented with a scene that looks like this, which is Unity’s default layout. 

Before we cover anything else, go up to the top row of options, VRChat SDK>Show Control Panel, and log in. If you can log in successfully then you should be good to go!

If you want to change the Unity editor to dark mode, you can go to Edit>Preferences>General>Editor Theme.

At the bottom of the screen should be the Project view, which shows all of the game assets in the project. 

I would recommend making separate Unity projects for each Avatar you plan to spend a significant amount of time working on; this way, if your Unity project breaks then you only lose the work of one avatar and can salvage what you can.
 
By the way, the creator companion lets you effortlessly backup your projects! Do it often, especially when you make significant changes!

You can rearrange these panels however you want. For the sake of conformity and ease of learning, I will be keeping the default layout for this series unless I explicitly open a new tab required for the lesson, which I will make clear. If you ever want to reset to the default layout, you can simply click the dropdown in the top right corner which should say Layout and select Default, or Window>Layouts>Default.

There are plenty of models you can download from sites like Booth and Gumroad, most of which are already set up for you. Here’s a link to a list of models that you can use for free!

To import new assets, drag it from Windows Explorer into the Unity Project view in the background. Do this for your Unity package that your avatar comes in!

For example, this unity package, Pumkin’s avatar tools, just go to this link here, go to releases, and download the unitypackage. Then in windows explorer, just drag it into the project view of the Unity editor! Then, a window should pop up with every file checked, just click import.

You can also import unity packages by going to Assets>Import custom Assets>Custom package.

If your avatar package comes with a scene with your avatar set up, then just use that. 
The avatar I am going to use for this tutorial is one that comes with the VRChat Avatar SDK. To get to it, scroll at the bottom left of the package manager, and under packages, click VRChat>Examples>Physbones and then the physbones example avatar scene.

Otherwise it might come with a prefab file, which has a blue box icon. You can just drag it into the scene, and it includes the avatar and all its Unity components set up. Use that if there isn’t a scene file included in your package.

If your model doesn’t come with a scene file, create a new Unity scene to store the model in by right clicking in the project view and going to Create>Scene. You can rename your files by clicking on them and pressing f2. Open the scene by double-clicking on it and drag the model from the project view into the scene view.

Unity scenes are like separate levels or worlds: we can create multiple different scenes in a single Unity project but not vice versa. Unity scenes can contain multiple different avatars and make it easy to create slight variations.

Many models that you will download in Unity packages will come with a Unity scene with the model already setup. In that case, much of the time all you will have to do is upload! However, because VRChat updates all the time, many of these packages are outdated and don’t come with the latest features, such as PhysBones or avatar 3.0 support. If your avatar does come with these features, then you can skip forward to this timestamp for uploading it. If not, or if it has errors that prevent it from uploading, you’ll have to follow a different tutorial I made  where I show how to set up an avatar for VRChat.

First we should get familiar with Unity’s interface. The largest and most prominent window is the scene view; this is a 3D view of your Unity scene. You can use the mouse wheel to zoom in and out. You can use the middle mouse button to pan (or press Q to use the left mouse button instead), and if you hold ALT and left click you can pivot. You can look around by holding the right mouse button and moving your mouse, and while holding, you can also navigate the scene by using the WASD keys, as well as E and Q for ascending and descending.

There should be two objects in the default scene. You can see them in the Hierarchy tab, which is on the left side of the screen by default. If you click on the Main Camera, it will highlight in the editor, a 3-axis gizmo will appear on the object in the scene tab, and information will appear in the rightmost tab, the Inspector. The inspector shows all the information of an object, and each collapsable section is called a component. Every object will have a transform component, which denotes its X Y and Z position, rotation and scale. If you edit the value in the Inspector, the object updates in the Scene view, and vice versa.

If your avatar package comes with a scene with your avatar set up, then just use that. Otherwise it might come with a prefab file, which you can just drag into the scene, and it includes the avatar and all its components set up. Use that if there isn’t a scene file included in your package. If neither of those are the case, you will have to watch this other tutorial I made.
If your avatar doesn’t come with either of those and only comes with an FBX file and textures, there are a few extra steps you have to follow, detailed in the next page.

To upload, go to VRChat SDK, Control panel. When the new window opens, click on the builder tab and click build and upload. After Unity finishes doing it’s thing you will see a view pop-up where you can enter your avatar’s details and hit upload!

But wait! Before hitting upload, you will see your avatar’s preview picture in this window. You can change that by clicking on the scene view tab at the top here, then click on the VRCCam and drag it around! If you look at the inspector on the right, you can change the properties of the camera, like the field of view or the background! Instead of showing the default skybox, you can make it a solid color background instead! I like to use the eyedropper tool on the avatar to get the color and then adjust from there!

Now go back into the game view by clicking the game tab at the top, and click upload! If everything works, then congratulations! You now have uploaded your first avatar to VRChat!

I also have plenty of world creation tutorials on my YouTube channel, click on this playlist if you want to start the course!

Here are some good free avatars you can upload yourself right now!
https://gitlab.com/s-ilent/SCSS/-/wikis/Other/Avatar-Models

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 a prefab file, which you can just drag into the scene, and it includes the avatar and all its components set up. Use that if there isn’t a scene file included in your package.
If your avatar doesn’t come with either of those and only comes with an FBX file and textures, there are a few extra steps you have to follow.

To import new assets, drag it from Windows Explorer into the Unity Project view in the background. 

If not, or if it has errors that prevent it from uploading, you’ll have to follow the rest of this tutorial where I’m going to show how to set up an avatar for VRChat. 

Navigate to the FBX file in the project and click on it. We first have to configure the rig, which determines how our avatar’s bones will move. In the Inspector, we can see that the default is generic and we have to switch it to Humanoid. Then press the configure button. 
We need to make sure all of the necessary bones are assigned. On the body tab, all of the bones are necessary for VRChat, except the upper chest and the toes, which are optional. This example model doesn’t have the chest filled, so in the box next to chest, click the circle and in the new window search for “chest”.
After that’s applied, click on the Head tab and make sure everything except for the jaw is assigned. Click the circle button next to “neck” and repeat the process to fill that in.
The jaw should not be assigned in VRChat, although many models will automatically assign it to an incorrect bone. To remove bone assignment, click on the green circle next to “jaw” and press the delete key.
After you’ve checked that all the bones are mapped correctly, click done at the bottom and click apply.

OK, now let’s drag our avatar into the scene. With it selected, in the top of its transform component you will see three dots. Click on them and then click reset position. This will reset the avatar’s position to the center of the scene, or 0 on the X Y and Z axes.

You will see that this model  doesn’t have any textures on it. Click on the FBX file again and click the materials tab in the inspector. Click extract materials, and extract them to the avatar’s folder. These are the materials that the avatar uses. Materials combine image textures with shading algorithms called shaders to give the impression of detail on a geometric surface. Now that we have these materials, click on them. In the inspector you can see these slots, these are where we can drag in our textures. The one we care about right now is the albedo or base color slot. Drag in your textures and they are now applied to the model!
At the top of the inspector it says our model is using the standard shader; this is Unity’s default shader and it is meant to give photorealistic results. If you want a more toon look to this avatar you can change the shader by clicking on the drop-down, VRChat>Mobile>Toon Lit. This shader is compatible with Quest however it doesn’t look great on PC. There are plenty of different shaders you can download online, including many meant specifically for VRChat.

Now to set up our avatar specifically for VRChat. There is a great community tool I’m going to use for this called Pumkin’s Avatar Tools. You can easily import it into the VRChat Creator Companion!
https://rurre.github.io/vpm/
https://github.com/rurre/vpm#readme
The old way download it from this link and import it into the project by dragging it from Windows Explorer into the project view. Then, a window should pop up with every file checked, just click import.

Now go up to Pumpkin>Tools>Avatar Tools, and a new window will open. Select your avatar in the hierarchy and then click “Select from Scene'' in the Pumkin Tools window. Or drag in your avatar from the hierarchy into the slot, either works.

Now click Quick setup avatar, and you should see that two components are now added to the root gameobject of your avatar. 
One of them is the pipeline manager: this will contain the ID of your avatar that denotes it as *your* avatar for VRChat. You don’t have to worry about it right now.
The other component is the VRC Avatar Descriptor: this contains all the important parts of the avatar.

Sorry I didn't get around to finishing this tutorial! Watch Sippbox's for the rest!