Adding Custom Bones to the Rig (Optional)
Refining your VRM Rig in Blender Video Tutorial
It is certainly possible to rig your avatar in your 3D Asset creation tool of choice from scratch such as Maya, Blender etc.
Note that it is not possible to add unique animations to your character though, as Mona will use standard animations for all characters.
It is possible to add bones after using Mixamo, and then continue refining the rig afterwards for use with a VRMs Spring Bones. This is completely optional however.
Some of these bones may be used for avatar elements that sway or move as secondary motion such as hair, clothes, etc. This can be done using a UniVRM tool in Unity called Spring Bones. These do not need to be manually animated as the tool adds a spring effect to the bones themselves.
It is also possible to have these bones have colliders that interact with your character.
We will go into this feature later in the VRM tutorials, but you do need the bones for the VRM process to use as Spring Bones. Therefore they need to be made in the 3D Asset creation tool.
Each 3D Creation tool approaches adding bones differently. This tutorial will cover Blender. There are many tutorials on YouTube or using the tool documentation to find out more using your preferred method.
This tutorial uses a rig created using Mixamo. 'VRM for Blender' also has a tool that quickly creates a skeleton, or rig, you could paint the weights to manually.
The easiest way to add bones in Blender is to go into 'Edit' Mode on the armature/rig and use duplicate and extrude on bones. Make sure that all the bones are part of the one rig. If they are separate rigs then it will not work.
- Select the Armature/rig/skeleton
- Go into Edit mode, or press tab to enter Edit mode.
Select Armature / Rig and Edit.
- Select a bone and use 'Shift + d' to duplicate it. Use a bone under the parent you would like you new bones to be under. eg. if you want something parented to the spine, select the upper arm. After duplicating you can easy position the bone using the usual 'G' to position, 'R' to rotate, and 'S' to scale.
Duplicate Bone on rig.
- If you want to reparent a bone, select the bone, then shift + click the parent bone. Right click and select 'Parent > Make > Keep Offset/Connected'.
Reparent bone if needed.
- Add extra bones if needed by extruding a current bone. Press 'E' to extrude (recommended) or use the Extrude button on the left of the viewport. You can select the end of the bone, or the bone itself.
Extrude bones as needed.
Once you have added all the bones you will need to make the model move with the new bones. For that you can use Weight Painting.
Weightpainting in Blender (Intermediate) Video Tutorial
Each 3D Creation tool has it's own approach to weight painting. The following tutorial continue with Blender.
Weight painting tells each vertex on your model which bone it needs to move with. If it is set to 0, then the bone will not affect it. If it is set to 1, the vertex will align to the bone 100%. If a vertex has 0.5 on one bone, and 0.5 on another, both bones will affect the vertex.
This tutorial will be an extremely simplified method to do so using Blender as there is a lot to understand, but this may get you started at least. There are a lot of Tutorials on Youtube or resources for your preferred tool to look into it in depth as needed.
- Select your Rig first, then Shift + Click the avatar model. At the top right of the viewport, select the Weight Paint. Selecting the rig first will allow you to select the bones directly while Weight painting.
Select the Weight Paint mode.
- Make sure that Auto Normalize button is on under the Tool button. This will improve your weight painting so that weights will always equal 1 regardless of how many bones affect them, rather than having multiple bones adding to more than 1. This makes understanding the result much easier.
Set Auto Normalize to On.
- Use Ctrl + Click to select the bone you would like to apply some of your model to. If you have imported your model from rigging in Mixamo, many of your bones will already have weights.
Select Bone to Weight.
- Paint the weights on the model. Note that it is quite easy to paint the wrong areas, so you can either use Undo or Adjust the weight to Zero (at the top left of the viewport) and adjust. Adjust the weight of, radius and strength of your brush to affect the vertices as needed.
Paint Weights of the model.
- It is possible to hide meshes, or parts of meshes, using the 'H' hotkey. Use the Paint Mask tool at the top with the Select box tool selected to select polygons or meshes to hide. You can use 'Ctrl + L' to select the entire mesh after selecting part of it. To Unhide, you can use 'Alt + H'. Note that hiding assets is on a mode level (eg. Weight Paint, Edit, etc.) so if you were to go to Edit mode the polygons would be visible again. In the Paint Mask mode, make sure to select the mesh you want to paint after hiding the polygons. If you have not selected the polygons, you will not be able to paint them.
Hiding polygons for easier Weight Painting
- You will need to deselect the Paint Mask mode if you want to select a different bone to weight paint.
- Use other tools like Blur, Average, Smear or Gradient found on the left of the Viewport to adjust your weights as needed.
- Select the Rig and models to Export your rig and avatar as an fbx. Make sure to have 'Selected Objects' selected on export.
Once again, this tutorial is quite simplified in comparison to the many ways you can apply your weights. More tutorials will be added in the future.
With rigging done, you can we can now take the Avatar into Unity to create the VRM!