What you need before starting:

- A Unity Project with the VRChat SDK imported. 
o Locate instructions to set this up here.
- A rigged 3D model, compatible with Unity. 
o Either download online, potentially using the Unity Asset store, or create and rig your own. However, if you haven’t got much experience with 3D models, it is recommended you source them from the internet or buy 3d models that are ready-to-use on the special marketplaces.
- Basic knowledge of Unity 3D. 

Creation of the Avatar:
Make sure your set-up Unity Project is open, and import the 3D model into it. This can be done through the Assets menu, or by simply dragging it in. A model sourced from Unity’s Asset Store can be downloaded straight into the Unity Project by importing it from within Unity itself. 

Once you have done this, go to the Inspector and set your model’s animation type to Humanoid. The Inspector is a panel on the right-hand side of the screen and is where the majority of the preparation of the avatar takes place. You should now bring it into your Unity scene, and position it at the origin (position 0, 0, 0). Make sure it is standing upright, and not lying down by rotating it around the appropriate axis. Scale it up on all axes so that it is approximately 5 units by 5 units (5 times the size of the Unity Cube object). This way, it will display at the right size in-game. 

The next thing you need to do is add an AvatarDescriptor to the model. You do this by adding a new component to your model. Search for “VRC_Avatar Descriptor” and add it. New settings will appear for your model which we will customise to suit your avatar.

You will need to adjust the viewpoint of the avatar so that it roughly matches the height of the eyes, in order to have the best playing experience. Look for a small pale sphere in the 3D view; that is where your viewpoint is. Make sure it isn’t inside the avatar, or you could have problems with your in-game camera. 

Next, select an animation set for your avatar. The set you select will depend on the type of 3D model you chose for your avatar, and will affect how your avatar moves in-game. 

You have the option of setting your avatar up to lip-sync upon talking in-game, on the condition that your 3D model contains a jawbone. You can add this feature by changing the component’s Lip Sync option to “Jaw Flap Bone”. Set the jawbone of your avatar to your rig’s jawbone to finish enabling lip-sync. Your rig’s jawbone can be located within the armature of the mesh, as a part of your 3D model. 

Now we will double check that nothing has gone wrong during this process. Click on the VRChat SDK menu and select “Show Build Control Panel”. The name of your avatar any errors will be displayed. Any red errors must be corrected before you can upload your avatar to VRChat. Yellow errors may affect your avatar’s behaviour, but may also be ignored. 

After resolving any errors that you had, press Build & Publish. After a short period, an upload screen will appear. Enter your name and relevant details in the fields provided, and make sure your avatar is in the frame for the image, and then upload your model. You should now be able to see and use your new avatar in-game.