VRoid to VRChat Pipeline 2021

We're going to do

  • create an avatar with VRoid Studio
  • use Blender to fix up the model
  • finish with Unity and upload to VRChat


VRoid Studio related

Blender related

Unity related

How to VRoid

  • Face Editor
  • Hair Editor
  • Body Editor
  • Clothing Editor
  • General Editor
  • Camera/Exporter

Face Editor

Design: Use the sliders to shape the head and face. - Nothing crazy here, just a lot of sliders to work through.

Expression: Use the sliders to adjust the eyes, mouth, and eyebrows. - Expressions with open mouths usually result in jaw and chin clipping when talking. You'll want to adjust them. - The default BLINK value usually results in clipping eyelids. You'll want to adjust that. - After adjusting BLINK, take that adjusted Closed value and apply it to BLINK_R and BLINK_L to the closed eye. - If the NEUTRAL expression has the eyes closed at all, that value will need added in BLINK_R and BLINK_L as well.

Texture: Import and edit face and eye textures. - Search 'vroid' on Booth for textures. - All outfits share the same face, so give layers good names and toggle transparancy on textures you're not using.

Hair Editor

Design: Load and save presets, and edit hair. - By default, presets are located here: C:\Users\YOUR USER\AppData\LocalLow\pixiv\VRoidStudio\hair_presets - To add a downloaded preset, put the acquired 'preset##' folder into that Windows folder. Folders have to be named in that fashion. - To edit the preset name, open preset.json in the preset## folder. Searching for 'preset' or 'プリセット' should find where to change the name. - To merge existing hair presets with other hairs, or accessories made from hair, use HP4VR. By default, it will find your hair_presets folder, and expects accessories to be in the folder with the program.

Bone: Makes the hair wiggle. - Downloaded hair will probably have a lot more bones than needed and will make your avatar more poorly rated. Minimize the number of bones used and save as a new preset.

Texture: Import and edit hair textures.

you can change and edit the color of the hair and set them to use same or different materials mine is personally a mess and i'm not sure how to clean it up selecting the hair by group doesn't seem to always change the textures on all the children so i just click each hair one by one to check after setting them all

Body Editor

Design: Use the sliders to shape the body.

Texture: Import and edit body textures.

use ur program of choice to crop out bodyparts that might clip thru clothes will link with outfit default sized hands, thin fingers

Clothing Editor

Design: Load presets, select clothing and shoes, and use sliders to adjust shape.

Texture: Import and edit clothing textures.

you make outfits into a single slot and can switch between them after that the body textures will change along with the outfit similar to within the outfits, when you make a clothing piece, you can use it again later i dont know how to rename clothing presets or clothing items just be sure to go thru the clothes and delete duplicates and stuff so the list isnt too longer when moving to the shoes section for the first time, it tends to show the names of the tops theyre associated with instead of the names of the shoes going to another section and back a few times seems to fix it

General Editor


Rim Light:


adjust lighting if you want in the general area, i dont know how this affects stuff in unity later, but its probably obvious i just haven't bothered, i built my vroid with no lights, no outline


Pose & Animation: Test movement of hair bones and check for body and clothes clipping.

Export: Export your model in VRM format.

check option to delete transparent meshes, leave the sliders alone export with 8 textures, 4k rez (wish there was like 4 textures version, if you know what ur doing you can remap this stuff to fewer textures) save vrm file somewhere, note a vrm cannot be edited in vroid studio again, one way process not a big deal though, just save and keep a backup of your vroidstudio file

How to Blender

  • Install and import VRM
  • Cats: import and fix model
  • Cats: eye tracking and visemes
  • Adjust rest pose
  • Adjust UV
  • Export FBX

Install and import VRM

install 2.83 import / enable cats and vrm addon Edit > Preferences > Add-ons > Install... pick the zip file to bring it in there's a pull down you can use to pick just user add-ons to make them easier to find check the boxes to enable them press N or click the TINY arrow tab towards the top right by the compass to see the menu with cats it pops out to the side in CATS > Import Model, and import your vrm

Cats: fix model

in CATS > click the wrench next to fix model, uncheck Combine Same Materials, click OK, then Fix Model that will get rid of unused bones on clothing mesh thats been disabled, combine the mesh pieces, auto switch the view so you can see the texture. it won't look perfect, thats okay sometimes cats will crash here (and at many other points), more so if you've done anything else to the file before pushing the buttons it seems to just expect very specific things

Cats: eye tracking and visemes

in CATS > open Eye Tracking Head and eyes should autofill. if not fix them for blink left and right select close l and close rad ignore lowerlid. if your model did have shapes for the lower lid, you can put them here. click Create Eye Tracking, it should think and make it happen Click Start Eye Testing and use the sliders to test it out in CATS > open Visemes for AA i pick MTH_A, OH - MTH_O, CH - MTH_I click Create Visemes, it will just say at the bottom of the blender window that it did it, nothing else really happens this will make a set of all the needed visemes for vrchat and similar programs cause vroids only have AEIOU (there's like 20 visemes) you can play with using different shapes, i assume it uses those three and the shape key mix intensity number to generate the other ones. they're mostly not accurate to the sound they should be making, but the primary vowels are (you can OOO and AAA with some accuracy)

Adjust rest pose

the vroid model by default is probably too straight up and down for vrchats auto ik to figure out how to move the joints scooting the joints in the right direction lets it know what to do in CATS > Start Pose Mode click right thigh (its called leg) (need to double check, but basically, you want to gently rotate the leg out to the side, up to the front, and rotated out. you may also get this working by moving the location of the legs out a bit. if you know what you're doing, this is probably no brainer stuff. hitting just the letter is kidna different than shift letter. im not sure how or if it matters which way you select the direction to go. again, i know how to make it work, not what i'm doingS) R shift X 5- enter R shift Y 5 enter R shift Z 5- enter (i tried using 1deg, but that didn't seem to be enough to fix the knee issue. 5 seems okay if a little big. the minuses might be wrong depending on what leg youre doing, just make sure its going the right way and if it's not, hit minus) right click copy pose, right click other leg and paste x flipped pose click right shin (its called knee) (here you just need the leg to bend backwards the correct direction) r shift X 5 enter on both (or copy paste x flipped pose) in CATS > Apply as Rest Pose

Adjust UV

assign better vertex groups - select UV editing tab at the top - select the avatar mesh on the right - click the Object Data Properties tab (triangle with vertixes) - switch to Edit Mode and Face Select - click the plus sign to add a empty group, double click to rename - hold shift, click a face in the right eye, the left eye, then ctrl and NUM pad plus sign a few times until all of the eye faces are selected - double check the correct Vertex Group is selected, click Assign - click deselect and then select to test

adjust materials - select the Vertex Group you want to move - click the Material Properties tab (checkerboard circle) - select the texture you want to move to, click Assign - double check with Deselect / Select

In this case, I've moved the eyes from the FaceMouth texture (that will use Cutout later) to the FaceEyeline texture (that will use Transparancy later).

Export FBX

in CATS > Export Model Contine to Export when it complains about having too many textures Save it somewhere, don't change any of the other settings. using the cats button to export will set them correctly

How to Unity

  • install, import addons, log into vrchat sdk
  • import vrm, convert for vrchat, check/fix materials
  • import fbx, humanoid rig, apply materials, add to scene
  • pumpkins to copy all settings to fbx from converted vrm, set view point, tpose
  • vrctools to set gender, adjust order of emotes, make more expressions, test blend shapes
  • set up dynamic bones
  • upload, use pumpkins to pose or use image

install, import addons, log into vrchat sdk

you probably dont need unity hub, but it makes it easy to manage projects make a new 2018.4.20 project (or current required version), default settings is good import all those unity packages (vrcsdk, vrm tools, pumpkins, vrctools, dynamicbones) log into vrchat sdk, itll need ur 2factor and you need to be at least new user (i think, i'm user atm) save the project, and then save a backup of this clean project with just the logged in sdk and tools for later when ur project is a mess and you want to start over

import vrm, convert for vrchat, check/fix materials

use vrm tools to import the vrm from the first steps select the vrm in the inventory and pick option to convert for vrchat in vrm tools some option about shape normals, i check it, idk what it is i leave the option of suprised in there uncheck any quest options you can use the imbeded dynamic bone values if you want, pick in the pull down the values from the vrm are WAY jiggly tho, you'll probably want to change at least the boobs if you copy the dynamic bones, it'll make a new component of the avatar that holds all the details normally we put the script in the bone we're dealing with itll automatically put a copy of the av in the scene but we wont be using it, but dont delete yet (you could actually upload it at this point, but it will be meh) it will make anims for expressions (joy, fun, anger, sorrow, suprise), but mine always calls suprise Unknown, you can edit that it will make the gesture controller things for it and put them in the right spot on the descriptor get rid of one of the extra sets of materials so you dont mix them up ive done more than once inspect materials, itll use mtoon and make sure cutout/transparancy/opaque and face culling is correct copy the first texture into the emmission section, adjust the HDR white color to something darker to be less full bright check out textures, i've been changing the fitlering from michael something to bilinear, 4k size, high quality compression, check crunch and leave slider as is all the solid color textures (rim lights, matcaps) i set to minimum size, leave the filtering the same in the materials is where you would fix the tints and rim lighting and matcaps and stuff but like i said i havent messed with this yet

import fbx, humanoid rig, apply materials, add to scene

import the fbx set the rig to humanoid, ignore errors after applying, configure, check out the head, most likely will need to set the jaw to NONE cause vroid uses blendshapes/visemes no jaw bone and unity tries to guess and will often stick a hair bone in there or duplicate an eye bone in there look over the rest of the bones, its normally okay but sometimes its weird if you kept the upper chest bone there are sliders to test it, but these dont reflect what vrchats locomotion/inverse kinematics/idk do to your joints. thats why we did the little rotates in blender, so it knows what direction to move ur hips/knees. without that change, the knees point in by default i think cause of the small hips on the material tab, drag the set of mats ur using to the spaces and apply drag a copy of the fbx into the scene, move the location forward a bit

pumpkins to copy all settings to fbx from converted vrm, set view point, tpose

use pumpkins to copy all the stuff from the vrm avatar to the fbx, really its for the descriptor and it can be done manually but that should put the FX and expression menus in the right spots after doing that, you can remove the vrm model from the scene if it doesnt, you drag the sitting and standing anims from the vrchat folder to the fbx's descriptor continue to use the same set of FX and expression menus if your face mesh blend shapes haven't changed between avatars use pumpkins to auto set the eye height, tpose

vrctools to set gender, adjust order of emotes, make more expressions, test blend shapes

sdk2 has a gender picker for anims, thats not in the sdk3 layout? but using vrctools you can edit it it controls default animation set, but i dont think sdk3 avs have gendered walks? idk vrctools makes it easy to check the face emotes and what hand gesture they're assigned to create new emotes as well you can set the default emotion here or manually on the body element of the fbx with the skinned mesh renderer part

set up dynamic bones

drill down in the fbx's tree in the scene get to the highest boob bone and select it, it should show its info hit button to add component, add dynamic bone enter the numbers you want and check distant disable drag the boob bone into the top space hit the gear to copy component, click the other boob, paste component as new drag the correct bone into the new top space drill down to the head, eyes and hairbones should be under there make a new component, at the bottom an option for exclustions, change the 0 to 4 drag the 4 eye bones into those slots drag the head bone into the top slot adjust the values as wanted same with clothes bones you wanna move cats fixing might get rid of a few too many bones on clothes like the hood on the hoodie, it doesnt seem to wiggle right? can probably just manually merge bones in cats instead of doing it automatically but something else i need to mess with can test by hitting play, swapping back to the scene, and moving the av around from the root bone

Damping Elasticity Stiffness Inert Radius
Boobs0. Offset: (-0.1,-0.1,0.3)
Tail0. y=-0.002

upload, use pumpkins to pose or use image

before uploading, fix any issues the vrcsdk menu brings up ignore the thing about the lights at the top, maybe if your computer is bad several of the issues can just be fixed by hitting the fix button the one about shader keywords, check the boxes and remove they keywords or dont, idk how much it matters or how much you may need them depending on your matcaps rimlights and stuff using pumpkin tools, you can add an overlay, a background, adjust the position of the camera, adjust your pose, adjust your face expression. once you have it how you like, you can save it as a preset. optional tho if you don't care ur dude is tposed or just upload a solid image as an overlay put in the name and info and check the boxes and upload with sdk3, you can save some time testing by choosing to test locally. sdk2 didn't have that option and u had to wait the whole time every change. in the vrcsdk window, there is a tab to show your uploads you can delete avatars and copy the ID of them to paste into the pipeline manager option to keep them related if you want to update a public avatar without breaking the link ppl already have favorited to it