Did you know that adding bones to your 3D character can be a big improvement? From hair to a tail to a skirt, making things move makes everything cooler and more interesting.
In this guide we are going to learn how to add bones to our character or avatar to improve its realism and offer more creative possibilities when it comes to animation.
Specifically, we're going to look at how we've added googly eyes to one of our avatars inspired by 100Avatars, our collection of avatars widely used in VRChat. Let's get started with the process!
Unity 2019 or newer
MayaLT 2019 or your preferred 3D software
Dynamic Bones (Unity Asset)
Adding the bones
Of course, our character's body parts do not move on their own. The same goes for the eyes, as they need a bone to make them bounce. Let's start the process with an avatar that is already rigged, i.e. already has a skeleton set up. Say hello to our friendly Toast!
Do you have your 3D character ready? Perfect, it's time to add the new bones.
Once you open your character file in Maya, use the Create Joints tool and add the bones wherever you want. We recommend you to make the bone chains as long as you want so it looks as smooth as possible.
Since the eyes don't need any chain at all, we basically created the eye bones starting from the head. Be sure to skin the new bones properly. Personally, we had to remove the pupils from the eyes and skin them separately.
If you want to further customise your character, use Blend Shapes Visemes to add facial expressions while talking. We'll be making our own guide on how to create and upload a VRChat avatar with blend shapes visemes very soon, so stay tuned.
Now, export your character making sure you have the skin weight correct and the skin checker box ticked.
Time to bounce
Next stop, Unity. Be sure to have the Dynamic Bones Asset installed in your project because it's what we need to be able to move the new bones.
Move all the bones and make sure the skin weights are exactly how you want them to be. If everything is correct, we continue with the process.
Drag and drop the DynamicBones.cs script onto your character mesh or add a new component on the inspector tab. Time for some tweaks.
As you can see a lot of stuff came out. Lots of levers, buttons and numbers appeared which can be a little intimidating at first, but I will try to show you that's it's really easy to get really good results by just adjusting a few parameters.
It's quite easy to do, but, you will need patience to get really great result as most of the work comes from testing and adjusting what seems wrong. Lots of testing.
While there are a lot of things you can touch, we will stick to the basics!
By default, Dynamic Bones gives pretty good results for the bones to interact with meshes and being affected by gravity, but our case is a little bit special, and we will have to adjust it correctly.
First of all, we need to assign which bones we want to be dynamic. For that, we will select the Root Bone, that is, the bone before all of our dynamic bones. In this particular case, since we want to make the eyes dynamic, both eye bones are attached to the head bone. That is our root.
Be sure not to select the end of the bone. Rookie mistake.
Now it's time to test. Move your character as many times as necessary and make sure it does what you want. You can get a lot of different effects by just adjusting a couple of parameters.
Here is an example of what we don't want the eyes of our Toast to do. While the eyes move accordignly on the Y and X axis, we don't want them to move in the Z axis, so we will have to freeze this axis of movement.
Luckily, you can freeze any axis you want, so you can avoid these kind of problems. This way, we will make sure that our character's eyes don't pop out of their sockets.
The eyes are already where they should be, but we need to adjust the way the eyes move and behave when they move. In this table we leave you all the options we have with their meaning.
Adjusts how fast the bone will come to a stop
Adjusts how much the bone is pulled back into its default position
Adjust how much the chain of bones will move and bend
A multiplier for how much the character's velocity is ignored when calculating velocity. how the eyes move
Knowing what each option do, now is time to test. Tweak some settings and try by yourself.
For the eyes, we adjusted the elasticity, the stiffness and the damping to get the behaviour we desired.This is what gave us the best results, but of course, every character has his own, and you will have to figure out for yourself.
Once you have your dynamic bones as good as you want, that's it! There's no more to do. Now you can do whatever you want with it; using it on your game or scenes, or upload it to VRChat.
Dynamic bones are a simple yet super effective way to give life to your 3D characters. With just a little bit of tweaking you can get really good results. In this way, we will make our avatars or 3D characters more dynamic and realistic.
The truth is that moving hair, clothes and eyes is only in principle. Your imagination is the limit and the possibilities are endless: be creative!