Tutorial
Heading
Apr 7, 2021

Add dynamic bones to your 3D character in Unity

Learn how to add bones to our character or avatar to improve its realism and offer more creative possibilities!

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!

Resources

  • 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.

Full Body Skeleton
Rigged Character in Maya LT

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.

Maya Path To Create Bones
Skeleton menu joints

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.

Example of eye bones
Eyes rigged character

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.

Avatar inside Unity
Dynamic Bones asset installed

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!

Adding Dynamic Bones Component
Dynamic Bones Inspector Menu

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.

Let's start!

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.

Dynamic Bones Script
Dynamic Bones Script

Testing

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.

Testing Dynamic Bones
Testing dynamic bones

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.

Locking Rotation Axis
Freezing Axis

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.

Explaining Dynamic Bones Settings
Dynamic Bones Eyes Elasticity

 Damping  Adjusts how fast the bone will come to a stop
 Elasticity  Adjusts how much the bone is pulled back into its default position
 Stiffness  Adjust how much the chain of bones will move and bend
 Inert  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.

Finished settings
Final Settings

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.

Conclusion

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!

Avatars
Unity
Maya
Pedro Solans
3D ANIMATOR

Junior 3D Animator improving every day possible. Videogame and cat enthusiast.

News
Transforming Icons: Bored Ape Yacht Club 3D Avatar Collection
Tutorial
How to import Decentraland SkyboxEditor into Unity
Tutorial
Doing a MANA transaction in a Decentraland scene