VRoid Studio, Blender, and Mixamo are great products, but they are excessively frustrating to use together. After weeks of cursing my computer, I have finally created a workflow that works.
Tools
- Blender version 4.4
- Mixamo as of May 21, 2025
- VRoid Studio version 2.1.5
Export VRoid Character
Creating a character in VRoid Studio is out of scope of this post. Nevertheless, here are a couple of creation tips related to animation:
- Set the model's height to make animations shared between characters more consistent.
- Slimmer clothes are easier to animate without clipping.
To export a finished character, click "Export as VRM". I recommend these export settings:
- Reduce materials to 2 to clean up texture images.
- Use the VRM0.0 format.
Notes about the Output
The ".vrm" file format is exactly the same as the ".glb" file format. This is important for the next step. The only difference is in the metadata of the file which we don't care about for this process.
The armature of the exported model is very messy in my opinion. The bones are named weirdly, they aren't aligned, and there are usually many extras.
Import Character into Blender
1. Set up the Scene
First create a new Blender file and remove the default cube in the scene.
2. Import the VRoid Model
Most tutorials list these steps:
- Rename the ".vrm" file to a ".glb" file.
- In Blender, go to import a "glTF 2.0 (.glb/.gltf)" file.
- Select the ".glb" file.
I prefer to skip the renaming step and just enter the full file name in the import menu.
After importing, the screen looks like this:
3. Remove Sphere
In the outliner, there is a "glTF_not_exported" collection with an `Icosphere`. Its purpose is to customize the bone shapes. Delete it to use Blender's bone shapes instead.
4. Clean up Armature
Install and enable the "VRoid Bones" Blender add-on. This will fix most of the armature's problems. In "Edit" mode with the model selected: hit "N", select the "Misc" tab, then click "Fix Armature" without changing any of the default settings.
The leaf bones (such as fingers and toes) are still oriented incorrectly. Without touching anything, go to the "Scripting" tab and run this:
import bpy
bones = bpy.context.active_object.data.edit_bones
for bone in bones:
if bone.children:
continue
bone.align_orientation(bone.parent)
The finger, toe, and other leaf bones should no longer be pointed upwards but should be pointed outwards. It's not perfect, but it's close. Additional manual tweaks may be desired.
The extra bones for skirt and hair can be removed too, but I personally don't worry about those. Figuring out what is useful and what isn't is tedious after a few models. I recommend just leaving those.
5. Fix Orientation
The character is facing in the positive y direction, but Mixamo uses a different orientation. Rotate the character 180 degrees about the z axis. Then apply all transforms.
Not doing this step will cause issues when blending animations.
Get Mixamo Animations
1. Export from Blender to ".fbx"
Make sure that the "FBX format" Blender add-on is enabled. It should be enabled by default.
Export the model to an ".fbx" file that includes only the "Armature" and "Mesh". This can be set in the export modal. Leave the other settings at their default.
2. Import ".fbx" to Mixamo
In Mixamo, click "UPLOAD CHARACTER" and select your ".fbx" file. It should work after some delay. Sometimes a couple of attempts are needed.
After finalizing the import, the character should be facing forwards after a fresh page load.
3. Find Animations
Find the desired Mixamo animations.
Adjust the "Character Arm-Space" to reduce animation clipping—60 works for shorts and pants, and 70 works for skirts.
Make a note of the settings that work.
4. Select a Bot Character
The VRoid armature has extra bones that confuse Mixamo and our import plugin, so replace the uploaded character with a bot character such as "X Bot".
5. Download Animations
Find and download all of the desired animations. Change the settings as previously noted. The options in the download modal can be tweaked for better performance, or they can be left as-is.
Add Animations in Blender
There is a Mixamo import plugin that promises to do the import automatically, but I have not been able to get it to work flawlessly. Therefore, an alternative method of retargeting animations will be used.
1. Preparation
Install and enable the "Rokoko Studio Live" Blender add-on. A Rokoko account is required for the plugin.
2. Import Animations
Import each of "*.fbx" files downloaded from Mixamo.
3. Retarget Animations
For each Mixamo armature:
- Open the "Rokoko Studio Live" side menu (by pressing "N").
- Set the source to the Mixamo armature, and set the target to the original armature.
- Click "Build Bone List".
- Click "Retarget Animation".
If Blender crashes repeatedly on this step, install the beta version of the Rokoko plugin. It can be conveniently installed from the add-on options.
Clean Up
1. Delete Extra Objects
Delete all of the Mixamo armatures. They will all be named like "Armature.001", "Armature.002", etc.
Open the "Rokoko Studio Live" side menu, and clear out the "Source" input so that Blender does not consider it used and can clean it up.s
2. Play and Rename Objects
All of the actions with the "Retarget" suffix will work with the original character's armature. Now is the time to clean up the actions collection.
For each of the actions with the "Retarget" suffix, play and rename as desired.
For each of the actions without the "Retarget" suffix, deactivate the "Fake User" shield-shaped button.
3. Delete unused data.
Save the Blender file then close it. Blender will remove all unused data after closing.
4. Delete unused files.
Optionally delete the ".fbx", ".glb", and ".vrm" files. Those files have served their purposes.
Debugging
Symptom: The fingers are broken when animating or posing.
Cause: The leaf bones are not aligned.
Solution: Run my script.
Symptom: The animations do a twirl when blending.
Cause: The armature is not oriented the same direction as the animation.
Solution: Rotate the character before applying the animations.
Symptom: The animations wobble while playing.
Cause: Mixamo gets confused with some armatures.
Solution: Use a Mixamo armature in Mixamo, then retarget it in Blender.