Quick Start - Mixamo Avatar Creation

*Article old and out of date. Better to go directly to VRChat's own documentation pages*

https://creators.vrchat.com/avatars/creating-your-first-avatar/

## Quick Start - Mixamo and Uploading Your Avatar.

Now that Unity has loaded us into the project, we're going to import the VR Chat SDK (The tools that will let you upload your files to VR Chat). Let's do that now. To import the SDK, we're going to go up into Assets -> Import Package -> Custom Package... and then select the VR Chat SDK file in whichever location you've downloaded it to.

Then a screen will pop up asking which files you'd like to import, we'll just click the import button and allow it to load the SDK into the project.

And now, the SDK has been imported! Let's move to step two!

## Step Two: Rigging our Model with Mixamo

**[If you already have an avatar rigged and ready to go, you can skip to *Step Three ]***

So we have our model downloaded, which is definitely a great way to be! But many models you'll find on the net, including the one we've downloaded, aren't what people call "Rigged". This means, they don't have marked points to tell VR Chat what to move so they can be animated, walk around, and well- be avatars! In the past, this would've been a tricky process for a beginner, but today there's a free service called Mixamo that will attempt to automate that rigging process so anyone can have a basic, rigged model. We're going to run our model through Mixamo so we can get it into VR Chat now.

First, navigate to Mixamo on your web browser. You should see this:

As stated at the top of the page, you'll need an account for Mixamo to be able to use it's system, so be sure to log into it once ya do.

Next, you'll want to switch to the Animations tab, where you'll see this page once it loads

Once you do get to this page, you'll want to click on the upload button on the right side, and you will then be greeted with this popup, but before we do anything, let's briefly take a look at our model before we go to upload. Currently Mixamo seems to accepts two types of models, those are:

.FBX models, which have all the info inside of them. They're very common and very useful.

.OBJ models, which are also very common and almost always come with a .mat and a number of image files (those are going to be the "textures" of the model, or the skin details/colors. Without textures, the model would be a dull gray!)

After we've extracted our model from the .zip file, we see that it has three files inside.

These are:

Gingerbread Man.mtl (The materials file, which tells the model what to do with the Gingerbread.png textures)

Gingerbread Man.obj (The actual model)

Gingerbread.png (The textures)

If we want this model to show up with its textures in Mixamo, we're going to need to put it into a .zip file. So on Mac, you'll just select those files, right click, and select "Compress items". On Windows, there are a number of ways to do it. If you have Winrar, you'll want to select the files, right click, and select "Add to Archive". Then change it from exporting as a RAR to as a ZIP. We'll then be dragging it into Mixamo.

It may take a couple of minutes to process the upload, but once it's done, you'll see the character in a T-Pose. If the model is in the correct position, they'll be facing front. You'll want to hit the next button to proceed to the rigging screen.

#### Quick Note - Missing/Unexpected Textures

If you've reached this step and notice the model looking strange in Mixamo, for example like in the screenshot below, you will want to continue with these steps, and when we're working with the model in Unity, you'll just want to follow the extra step for untextured models. Unfortunately sometimes Mixamo doesn't like certain textures, and will play with them in weird ways. Luckily, it's very common, and very fixable.

So now that we've hit next, you're going to see several colored markers, with text next to them saying where they will go. You're going to mark the chin, wrists, elbows, knees, and groin of the model you'd like to rig. Notice that when you move, for example, the left elbow, the right elbow will move with it so that they're mirrored. If the model you're using isn't completely symmetrical, you can turn off symmetry via the checkbox on the very bottom of the window. Below is a good example of what our Gingerbread Man will look like once his markers are placed correctly.

Once we've hit next again, you'll see the model spinning around while it processes the new rig settings. And once it's all done, we'll get a neat animation of your model in action! If it doesn't look quite right, try going back and placing the markers one more time. However, if it looks good, you're well on your way! *[If the autorigging doesn't work the first time, you might have to move the groin placement up a few inches]*

Now to download the model. Just simply click on the Download button on the right and then another window will appear for the settings, you can just leave it as FBX and T-pose, just click the download button and you're good to go!

## Step Three: Importing and Setting our Model as a Humanoid

Okay, so we've done some great things so far! We've taken an unrigged model and rigged it, and put the VR Chat SDK into our blank Unity project! Now is where we get to see some real action.

So open back up your empty Unity project, and we're going to go down to the "Project Browser" at the very bottom. At this point you should already have a "VRCSDK" folder down there, and if you've saved your scene (File -> Save Scene), you may also have the saved scene file in there like this:

Now, we're going to right click in the blank space next to our VRCSDK folder icon, and go to Create -> Folder. This'll make a new folder, we'll call it GingerBread.

Now you're just going to want to double click on that GingerBread (or whichever other name you have for it) folder, and you'll see a blank gray area now where your items used to be. You've now navigated inside the folder. We're now going to take our downloaded Mixamo .FBX file and drag and drop it right into that blank space.

As you can see, this has created a file for the model, as well as two folders, one for the Unity materials, and another for his photo textures. However, he's still not quite ready to be animated in VR Chat. We're next going to need to single click on that model file (the one with a photo of our Gingerbread Man), and then check the bar on the right side. If you aren't on the "Rig" settings page, just click the button labeled "Rig".

Now you'll notice that under the "Animation Type" section, it says "Generic". Unfortunately, this isn't the type of animation VR Chat wants, but fortunately, changing it isn't difficult at all. We're just going to click where it says Generic, and change that to "Humanoid". Then all that's left is to hit "Apply". You should see a check mark near the button labeled "Configure..."

But before you continue you will want to click on configure next to make sure the bones were all assigned to the right place, which sometimes they might get a bit mixed up depending on how much you've personalized the rig.

One thing to keep in mind is if you wish to have IK, to let your avatar bend and move a bit more properly instead of sliding around across the floor, it'll need to have finger bones set, which, if your model lacks fingers, you can easily add unweighted dummy bones to the end of the hand bone in programs such as Blender/Maya/etc as you only need three of them and that's the Thumb, Index, and Middle, as I've done below.

To set up the fingers, you'll want to swap through the Left Hand/Right Hand buttons pictured above in the config window, and you'll be met with these options

Depending on how your model is set up, all those slots, or even some of the slots will be empty. If your model lacks fingers, as I said before, all you need at minium is the root bones, or as they're named in the config window, the Proximal bones, specifically for the Thumb, Index, and Middle finger.

Also, within the config mode, there's four slots under Body.  Hips, Spine, Chest, and Upper Chest.

The two slots you need to keep in mind is Chest and Upper Chest. The IK doesn't register the Upper Chest slot and you will need to leave that one set to none, which you can do by clicking on the small black dot to the side of it, And then make sure the Chest slot has the highest spine bone set to it that the neck and shoulders connect to. For example, if you used the auto-rigger from Mixamo, it will be named Spine2.

Otherwise you'll get this error when you try to upload

Once you've done that, this

Should become this

Keep in mind if there's a bone set to more than one slot, you'll most likely see something like this picture below, which is simple to fix as you may notice, the red text mentions the other slot it's set to, it'll be up to you to determine which one is in the right spot. For the example provided, I would just change Upper Chest to none.

Our next step is going to be dropping our newly setup model into the Unity window so we can see it, fixing any missing textures, and making sure it's the correct size before we upload the Avatar to VR Chat!

## Step Four: Turning our Model into an Avatar

So now we have a fully rigged Mixamo model, set as a Humanoid, into a Unity project with the VR Chat SDK inside. Great stuff! Now's the time to really get that model ready to be an Avatar!

Our first step is an easy one, just take your model (in our case the Gingerbread Man), and drop him right into the viewer window (The one with the grid).

You should be able to see him like in the photo above in your project, if not, try clicking his name in the left bar, and in the right bar (the inspector), under the Transform, change the X, Y, and Z position numbers to 0, like in the photo. If you still are having trouble seeing him, try double clicking his name in the left bar.

So now we've got him in our project! But what if the model you put in has no textures? Luckily, that's an easy fix too!

### Fixing Missing/Weird Textures

So let's say our Gingerbread man looks silvery-gray when we put him into our viewer. In the bottom section of your Unity project (the Project Browser), you're going to want to go into that GingerBread folder we created earlier, and then Materials. Chances are, you'll see something like this:

This means that it couldn't find the image for your character's textures. So what we're going to want to do is find that image in your original model files (in our case, the Gingerbread Man files we got from Models Resource). Inside those files, we find our Gingerbread.png, which are his textures. Some characters may have multiple textures and materials, so you will have to match them up a bit if the textures are missing from your Mixamo model.

Now, let's just quick drag that image file right into the materials folder in Unity's browser.

And we're going to want to click on the Blank Material file, in this case the highlighted gray circle above. You'll see a section in the right bar labeled "Albedo", all you'll need to do is drag your image file from the browser into the box to the left of that word, "Albedo". Once you do, our friend the Gingerbread man will look quite a bit more colorful. While you're in here, it's generally recommended to turn the "Smoothness" slider down to something less, maybe a .15. This stops the model from looking a bit too shiny or plasticky when in VR Chat. Although it's totally appropriate if that's the look you wind up going for for your Avatar.

### Resizing your Model

With our model in here, we're very close to uploading it to VR Chat. However, we've got to make sure that it's as tall or as short as we want it to be once it gets in there, so we're going to compare it to something that's already sized for VR Chat. We're going to want to go into our Asset Browser, and then click on the VRCSDK folder in our sidebar.

Now we want to go into the Examples folder, and then Scenes. Inside is a file called "Example-Avatars.unity", we're going to take that and drag and drop it into the viewer sidebar right under the Gingerbread Man's name.

Once you do, you'll notice that a sample avatar is in the project, and in this case, well-

He's quite a bit bigger than our tiny Gingerbread Man! No good! So we're going to need to make the Gingerbread Man larger! In the top left of the Unity screen are five tools, you're going to want to pick the "Scale" tool, which has an icon of a box with four arrows coming out of it.

Next we'll select our Gingerbread Man, and when the mouse is over the viewer section once again, scroll down to zoom out. You'll see a couple of colored squares around our tiny, tiny Gingerbread Man.

We're going to use the white one (the box in the very center), click it, and then move your mouse up, watching the Gingerbread Man grow to our liking. Ideally, you're going to want to shoot for about the size of the sample avatar, but if you want him to be shorter or taller, that's your choice as well. You may have him size up with his feet quite a bit lower than the sample avatar, like in this photo:

If that's the case, just click the Move Tool (The four arrows pointing out from one another, forming a cross), and the little scale boxes will turn into arrows. We're going to use the up pointing arrow to move our model up.

    Once you've got the model exactly how you want it, you can remove the sample avatar from the viewer by right clicking its name in the left bar, and selecting "Remove Scene"

Alright, we're almost done! I'll bet you're pretty excited to get this model into VR Chat, so let's do it!

## Step Five: Adding the Avatar Descriptor and Uploading to VR Chat

Awesome, so we've got ourselves a great looking model and are ready to upload it as an avatar. The first thing we're going to want to do is click on our Gingerbread Man's name in the left bar, then look over at his options in the right bar. Under the Animator section, you'll see an option labeled "Controller", it should be set to None by default. We're going to change that by clicking the circle on its right, and selecting "SampleAvatarController".

Now that we've done that, we're going to add the "Avatar Descriptor" to our model. This will tell VR Chat that what we have is, in fact, an avatar. It'll also tell it where the eyes are so it knows where you'll be seeing from while in VR!

### Adding the Avatar Descriptor

Still in the right bar, we're going to want to click on the big "Add Component" button at the bottom, and then search for VRC\_Avatar. We're then going to click on VRC\_Avatar Descriptor.

Now you'll see a new section added under the Animator section that we edited in the previous step. This'll have a ton of options to configure. Luckily, we only really need to configure one or two of them.

However, before we do so, now's a good time to log into the VR Chat SDK. Right under the new "Pipeline Manager" section, you'll see a "Login" button. Click that, and a new window will open. Use that to enter your VR Chat username and password, make sure it's the exact same info you use to log in and use VR Chat.

Now we'll close out of that window and refocus ourselves back on that Avatar Descriptor section. First, check out the "Default Animation Set" option. If your model is a Male or masculine, leave it set to Male. If not, you can change it to Female. The next thing we'll check out is the View Position section. This is going to be where we tell VR Chat where the eyes are.

The first thing we can do to make this easier is take a look at our viewer window. You'll see a shape that sort of looks like a cross, and it should say "Front" under it.

This symbol will allow us to move around our view so we can see the character from the side. Click the right arrow to be moved around to a side view of your avatar. You'll notice a white ball, floating somewhere in front of your character. Typically it'll be a little too high or sometimes even a little too low. This is your character's eye marker. Looking at your View Position, the only option you'll likely need to change is the Y setting, which moves that dot up and down. Every so often you may need to change the z to move it in or out, but for now we'll just stick with Y.

If you need the white dot to go lower, you're going to want to change the number in the Y box to something lower by a few points, say from 1.6 to 1.4. If you need it to go higher, you can raise that number. Once you change it, the white dot will move (it may take a few seconds for the dot to catch up). You're going to want that white dot to be in front of the avatar's eyes, about where a VR headset would be if they were wearing one.

Here is my Gingerbread man with the Y set to 1.6. Notice how it's way too high, and nowhere near his eyes.

Now here he is again, but with that Y adjusted to 1.4. Looks much better.

Once you've got that set to what you want it to, you're all ready to upload it to VR Chat! Let's get this going on, shall we?

### Uploading to VR Chat

This part is by far the most easy thing you'll do. You just want to go to the "VRChat SDK" option in the top bar, then go to "Show Build Control Panel". A new window will pop up. If you don't see any errors, you're going to want to hit the "Build and Publish" button.

Once you do, it'll take a few minutes to create the file. If it asks you what to name the new VRC Avatar file, or if you'd like to name the project, absolutely do. Name it whatever you'd like and hit okay.

Then it'll take you to the final upload screen, which looks like this:

Notice that the photo of our Gingerbread Man has him facing backwards, definitely not what we want. An easy fix for that is to click on his name in the left bar and change under "Rotation", change his Y to 180.

Next, we'll enter a name for him in the top box, let's go with Gingy. Come up with a clever description and pop that into the description box, and then mark if there is any NSFW content in your avatar.

Once you're all done, just check the "I agree" check box, and hit the upload button. In a few moments, you'll get a confirmation saying that your first avatar has been successfully uploaded to VR Chat! Congratulations!

If you'd like to stay around, make sure to check out our Quick Start for Worlds tutorial as well!