Unity Blendshapes to add Muscles to VRoid Characters

VRoid gives you a lot of flexibility over many things of a character, but arm thickness is not one of them. You can control the muscular/plumpness of the chest somewhat, but there are no controls on the arms. This can look a bit strange when the rest of the body is of larger dimensions, but the arms are not.

I have two characters I am trying to bring across from a comic series I drew. (Note: my interest in VRoid Studio is inspired by my lack of drawing skill!)

First consider Helen.

My current effort to convert here into a 3D VRoid character is as follows.

VRoid Studio allows me to increase the size of the clothes on the arms, the legs, the waist etc, but the arms remain fairly slim. I wanted to flesh out the arms a bit more. (I would tighten up the sleeves a bit at that time.)

Pushing things to a greater extreme clearly shows the need to have the clothes might tightly hug the arms.

Also note that the algorithm to enlarge the arms makes a difference. The current code tapers off and the wrist and shoulder to avoid a harsh edge. But it expands the current positions by multiplying by a scale factor. The arms may look a bit different by adding a fixed offset to data points – it would avoid the elbows being a lot skinnier than the rest of the arms.

See BigArmBlendShape.cs for a proof of concept.

Let’s now look at a second example.

Let’s start with a simple base character.

Ummm. Ignoring skin and clothes, the VRoid character lacks the muscles I am after. So let’s start with beefing up the arms as before.

Well, the arms are more muscular, but it feels out of proportion as the chest area is not stronger looking. This is where a second blendshape kicks in for the torso. It expands the mid-chest area, not touching the neck and above or waist and below. The top of the chest is expanded more than the lower part of the chest.

This is starting to look more like it – a solid strong chest with strong left and right arms. For prototype code, see BigChestBlendShape.cs. (No, it is not as good as a correctly designed character, but lacking that artistic skill and Blender skill set this is a decent second best choice for me.)

Here are some before and after side views as well. Before taking supplements…

After supplements…

Note that blendshapes do not move the bones of a character. So widening the chest does eat into that space for normal arms. Something to think more about.

Both of the BigArmsBlendShape.cs and BigChestBlendShape.cs scripts must be dropped onto the root node of a VRoid Character in Unity as they look for children with a fixed set of names. I would still like to fine tune the scripts a bit more – for example, where the arm and chest expanding scripts meet can get a little rough near the shoulders, but all up I am reasonably happy that I can create arms and chest with larger dimensions.

Oh, and if trying the scripts yourself, they assume the character is at position 0,0,0 and rotation 0,0,0 with scale 1,1,1 in a scene. They pick up bone locations etc and I have not bothered with code to compute things relative to the origin of the character. Sometimes I also drag an empty game object into the scene to position it manually at the shoulder, neck etc so I can read off the accurate x/y/z values for manual tuning.

Leave a Reply

Fill in your details below or click an icon to log in:

WordPress.com Logo

You are commenting using your WordPress.com account. Log Out /  Change )

Facebook photo

You are commenting using your Facebook account. Log Out /  Change )

Connecting to %s