There’s More than One Way to Skin a Character: Don’t Get Caught in a Loop!

Articles
12/23/2019

My name is Nataliia Velychko, and I’m an Animation Artist at Plarium Kharkiv. In this article I will tell you about some things I learned from skinning for an RPG with more than 400 characters.

When describing the creation and implementation process of a character for a game, the character skinning bit is often left out. However, there are times when high-quality skinning becomes the basis for the game’s visuals.

If a game incorporates only one or a few characters, skin setup often fades into the background because it is only necessary to do it once at the start of a project. But what if there are 300 or more characters in a game? And then, what if they have different anatomy, polygon count, and rig functionality? We faced these problems in Raid: Shadow Legends.

The game currently has over 400 characters, and this number grows with each new update. In a game like this, you need to approach the skinning process differently.

Creating a Character for a Game with a Full Cast

Firstly, our new character needs a rig. At this point we want to ask ourselves two questions: is there already a character in the game that has similar anatomic and functional features to the new character, or, are we creating an entirely new type of character? If we have a similar character, we use the existing rig and check the geometry for consistency with all its technical specifications and bones. But, if there isn’t, we need to develop a unique rig that will encompass all our requirements and necessary functionality.

Take a look at the image below to see some of our existing rigs.

When creating the 3D model of the character, we usually try to follow the templates we have. But this isn’t always possible since there can be a big difference between characters anatomically. For this reason, before we even start skinning, we have to check whether the bone positions in the rig match our model and whether or not it has enough loops. This is also the time when we need to focus on the character’s features and try to predict any problems that may arise.

It is important to check that the result of our skinning matches with the character concept by looking at the following:

  • Proportions
  • Weapon position
  • Shield position
  • Outfit appearance and textures

Another important factor to check is that the silhouette matches the artist’s vision.

Throughout the process, close and seamless cooperation between teams is crucial because some situations need to be dealt with more flexibly and adjusted quickly. For example, if a shield hanging on a character’s back penetrates its body in animations, we can discuss this issue with the concept artist and come up with a solution. Similarly, we can turn to the modelers if we come to realize that we need to add loops or edit the geometry during the skinning process.

The Influence of Correct Skin Setup on Character Animation and Visualization in a Game

A close eye needs to be kept on a character’s weight distribution, as a transfer of weight from one bone to the other that is overly soft or sharp may cause distortion in the geometry. Let’s use the characters in the next two visuals as examples.

At a quick glance, the images contain two identical characters with the same animation. But, if you take a close look at the cloak and tunic tail, you can see that the model to the right has a more uniform weight distribution. This causes the cloth to flow more naturally and helps to create the impression that the mesh is more detailed in the geometry on the right.

Some people might doubt whether such perfectionism is necessary, but if you want to give your product the advantage over your competitors, this is the kind of quality and attention to detail that can take it to the next level.

Using One Animation for Multiple Characters

So, a high-quality skin and animation can make the character look natural – sometimes it can seem so simple. Unfortunately, this only applies to cases where we create a unique animation for each specific character. If we’re making multiple characters that use the same animation but have different geometries, it’s a different story, and a high-quality skin is only the beginning.

What we have in Raid is a standard model that can be used as the base, and then we adjust the skin settings for all other elements. For instance, we build an animation of a tunic’s tail that is as long as it can be, has an arbitrary width, and strictly corresponds to the positions of the bones. Then, if we need a character with a wider or narrower skirt, we can adjust the skin and the geometry. It is important that this part of the process is controllable, and that we understand how much we can change the basic silhouette.

Problems often turn up when a character is equipped with items such as bags, weapons on a belt, and so on, as they can penetrate the body depending on the character’s posture. When this happens, we have to adjust the position and angle of the items, as well as how their various weights affect them.

At this point it is crucial to check the finished skin in test animations and note where critically positioned joints are. If the geometry deforms correctly and we’re happy with it, we can apply the animation of the character’s category. For example, in Raid: Shadow Legends there are different animations depending on the type of weapon a Champion uses. This could be a spear, shield and sword, crossbow, two-handed sword, bow, chain, two weapons, or something else. 

However, if the geometry deforms incorrectly during the tests, we fix it according to the animation, and then hand over the character for more testing.

Skinning Characters with Unique Geometry

Even in a perfectly organized project there are characters that are different. Sometimes characters don’t correspond exactly to the standards and requirements of a game’s technical documentation. An example of when this can happen is if we want to have characters in a themed event. This is when the skin setup can be a great help.

What is of utmost importance here is that we understand the final goal. The existing rig may not have sufficient functionality, but we know how a character should look and the silhouette and personality it should have to conform to the concept as much as possible.

Krisk the Ageless (pictured above) is an example of a non-standard character in Raid. His rig doesn’t have bones for the carapace or the items over his legs. For him, we faced two conflicting objectives:

  • The hands, tail, and body must not penetrate the carapace and armor in animations
  • The carapace and armor has to preserve its original shape and should not bend much

So, we were working to achieve the two following goals simultaneously: making the armor and carapace as rigid as possible, and avoiding penetration of other body parts into it. Luckily, our character belongs to the world of fantasy, so we had the opportunity to disregard some of the laws of physics and anatomy. But, certain rules still had to be followed so that the world we created stayed realistic and believable.

Keeping our goals in mind, we bound the items to his legs, and we distributed the weight of the ropes they were fixed to between the pelvis and the legs. We also decided to bind his armor and carapace to the bones of his back, pelvis and chest. Of course, in unique cases such as this, it is always necessary to continually check the character’s appearance in the relevant animations and make changes to the skin over and over until the desired result is achieved.

Saving Time with Process Optimization

As our project keeps developing, the complexity of tasks in hand grows. But, the time allocated for the development of a single character decreases with each new update. So, what can we do to save time? Often, we use the Mirror Skin Weights option to mirror the weight of the finished mesh half to the unfinished one. But this can present other problems. What if the character isn’t symmetrical and the skin can’t be copied correctly? What if every second character has a long tunic, and we waste time configuring the skin for each one? In these instances, we use props.

Props are low-poly geometrical objects that repeat the shape of the part of the character the skin will be copied to. We’ve made an extensive library of props for tunics, skirts, wings, hair, cloaks, tails, and other elements that can be used by the team to speed up the skinning process.

How to work with props

  • Create a low-poly geometry based on the character model. We will use a cloak as an example below
  • Bind the model to the skeleton, and distribute the weight between prop vertices
  • Transfer the weights from the prop to the required vertices or to the entire geometry using Copy Skin Weights

Take a look at the final results in the image below.

There are other ways to speed up the process as well. Sometimes we copy the skin from one character to the other and then customize it further. This is a great time saver, but is suitable only for characters with few differences in geometry. In the example below we’ve copied the skin so that their bodies are almost the same, but the characters have different weapons, different hairstyles and collars, and one has a shield on her back.

We can also simplify and speed up the skinning process significantly by using different scripts. The Deformation Learning Solver is a great example of this. It’s available in Maya 2014 and higher, but it’s a little unstable in Maya 2018. This script is useful if a model has a complex geometry and dense mesh. It does have a disadvantage, though, and that is the necessity to recheck the weight distribution and number of bones impacting the vertex. If you don’t check these things, the hair and cloak of a character will affect the body, while the skirt or tunic tails will affect the legs.

Deformation Learning Solver steps:

  • Add the weight of just one bone to each vertex when setting up a character’s skin for it to function correctly. It’s possible for the script to distribute the weight automatically, but since it can lower the quality, it’s better to avoid doing so
  • Open Deformation Learning Solver, select the geometry, and click Tool, then Apply Delta Mush.
  • In INPUTS to the right, select deltaMush and specify the required smoothing degree in Smoothing Iterations. The default value is 20
  • Check the smoothing degree in the animation by going to the Deformation Learning Solver window and selecting Tool → Select Influence Joints → Sampling → Run
  • Select the geometry and in the Deformation Learning Solver window, click Learning, and then Solve
  • Clean up the effect by deleting excess weight from the vertices
  • Finally, check your results!

In the more than two years of working on Raid: Shadow Legends, we’ve had a lot of complex and unusual tasks. But, we were always able to find new ways of working with the rig to create a high-quality skin and character animation. I’ve found that flexibility and searching for new methods to optimize our work processes have been key to our work.

All of us here at Plarium are always discovering new ways to enhance our work, and we want to share these discoveries with you. Thank you for reading, and keep an eye out for upcoming articles filled with tips and tricks on animation and more!

Original article: render.ru