This guide covers some information useful for uploading avatars created by CoderWolf specifically, for a more detailed guide on uploading avatars please check the VRChat website:
This guide and my avatars are designed for VRChat Avatars SDK 3.0.
Import the model into unity and select it in the project view. Under the “Model” tab make sure “Legacy Blend Shape Normals” is checked. Under “Rig” set the “Animation Type” to “Humanoid“. Apply then configure the avatar. In Mapping there are some changes you will have to make, most bones map correctly automatically, however the following will likely need to be changed:
Toes L/R: BoneFootPaw.L/R
Remove the jaw bone, set this to “None” to fix mouth always being open. We use visemes for mouth movement in the Avatar Descriptor later.
Apply and press “Done” when ready to move on.
VRC Avatar Descriptor
Drag your model into the scene, set its position to 0, 0, 0. Press “Add Component” and begin typing “VRC”, select the “VRC Avatar Descriptor” from the list.
Not seeing it? Make sure you have added the VRC Avatars 3 SDK to your project.
In the Avatar Descriptor under “LipSync” press “Auto Detect!” or set mode to “Viseme Blend Shape“. The “Face Mesh” is set by dragging in the body mesh called “ObjBody” in the “Hierachy” over the left of the window.
Each viseme is named with a capital letter denoting a new sound – that is, “visBP” is valid for a “b” and “p” sound. Fill out the list.
Enable “Eye Look” and select “BoneEye.L” and “BoneEye.R” as the eye bones.
Rotations can be tweaked, the following settings are my preference.
X: -90 Y: 180 Z: 0
X: -82 Y: 180 Z: 0
X: -82 Y: 0 Z: 180
X: -90 Y: 172 Z: 0
X: -90 Y: -172 Z: 0
Under Eyelids set the “Eyelid Type” to “Blendshapes” and the “Eyelids Mesh” is again the body mesh, “ObjBody“. “Blink” shape is called “Blink“, set the others to “-none-“.
If your model comes with a custom gesture you can optionally override the default ones. Navigate to the VRC Avatars 3 SDK, Assets/VRCSDK/Examples3/Animation/Controllers and duplicate the “vrc_AvatarV3HandsLayer.controller“. Move your new controller where you prefer and rename it how you wish. Select your avatar in the viewport, under “Playable Layers” in the avatar descriptor press “Customize” and then “Default Gesture“. Drag your new controller onto the opened slot.
Select your new controller again and switch to the “Animator” tab. If you cant find it go to Window→Animation→Animator.
You can now swap out existing actions for your custom ones by selecting the action in the graph and dragging your animation into the “Motion” slot. Your new animation is likely located inside your avatar.fbx file (click the little arrow on your avatar to expand it in the project view).