The Wearing of Many Hats.

If you have done game development for any length of time, you know that you will have to play many different roles as a project moves along. From texturing to coding, you may be required to do a little bit of everything. That is where I have been for the last few weeks.

Completing the control rig in Unreal’s Control Rig plugin has been a challenge, but it has been an interesting experience. I definitely have a lot to learn when it comes to rigging. There are technical artists that spend the majority of their time creating rigs, and it is as much an artform as any other discipline. Getting Suzy’s bone structure to animate properly was difficult, and compromises were needed, but I am happy to say that she is done*.

I began to do her first animation, her walk cycle, when I discovered a serious problem with her tail. I had used a certain type of IK system in Control Rig (FABRIK in case you are curious), and while it is a great IK system, it just wasn’t even close to what I was looking for. So, back to the drawing board. I have been working hard to replicate the Rigify control rig available in Blender. While I haven’t achieved such a lofty goal, that shouldn’t be a surprise. But, I was able to capture the over-all feel of Rigify, if not the high-powered end result. The tail in particular was quite challenging and I really wanted Suzy’s tail to behave the same way as Rigify. What I thought would take an hour or two turned into a full day’s work. You just never know with these things. But I was able to get it to work, and get the results that I see in Blender. In some ways, this is unfortunate, because Suzy’s tail isn’t nearly as good as I had hoped it would be.

Weight painting is another part of rigging, and there are no unimportant parts to rigging. Getting the weight painting correct is a perfect example of this. No matter what I did, I couldn’t get her tail bones to deform the tail in a smooth way. No amount of weight blending would cure the problem. More bones in the tail seems like the only solution to this problem, but I am way too far along to change the bone structure now. I will just have to make it work, and remember this lesson in the future. You live and you learn.

The last hat that I have had to wear recently is that of a programmer. This isn’t something that concerned me. After all, I have more experience as a C++ programmer than any other skill that I have used on these game development projects. But this situation was new. The developers of the gFur plugin decided to drop support for the free version. This means that they are not updating the plugin for the current version of the UE4 engine (4.26.0 at the time that this is being written), or any of the future versions to follow. Luckily, they include the source code for the plugin which allowed me to recompile the plugin for the current version of the engine. There were a few little things that needed to be changed to satisfy some dependencies, but nothing difficult. A change to the plugin’s build file in VS2017 to point to the location where the FBX libraries and includes are located on my system were all that was necessary to get everything working nicely. Not a problem for an experienced programmer, but someone that doesn’t code would have had a hard time. It just goes to show how many hats you have to wear in game development.

* Is anything in game development really ever done? No, not really.

An Unreal Control Rig

After finally getting Suzy’s hair in a reasonable state, I have turned back towards her rigging. Rigging a character is a challenging process, and there are people in the industry that work mainly, or solely, rigging characters and creating animations with those rigs. I knew that this was going to be a difficult step in the ever evolving process. So I devised a strategy for setting up Suzy, and if all went well (spoiler: it didn’t), we would use this process for all of the characters in our games.

Originally, animation was going to be performed in a combination of programs. For Suzy’s facial animations, I had planned on using Blender to take advantage of Rigify via the UE2Rigify plugin. That fell through when I discovered that the facial animation keys were not being baked to the source rig. No baked keys means no facial animations in the exported animation sequences. Not ideal, clearly.

For the ‘macro’ animations I had planned on using Cascadeur. This software not only allows you to rig your characters and animate them, but it also performs physics simulations to ensure that your animations are reasonably accurate. I was really excited about learning Cascadeur and animating Suzy with it. That fell through when I discovered that there is a limit of 128 bones in your skeleton. Suzy’s skeleton is over 200. I thought that I may be able to work around that by removing many of the bones in Suzy’s skeleton and using the simplified skeleton in Cascadeur. Not ideal, but it would have worked.

Not being able to animate Suzy’s face was a real show-stopper, though, and forced me to look into other technologies. That led me to take a closer look at ‘Control Rig’, a plugin developed by Epic to allow game developers the ability to fully rig and animate their characters directly in the Unreal editor. I had taken a brief look at it in the past, but foolishly dismissed it. “I’m going to use Blender or Cascadeur“, I though to myself, “so, what would I need this for?” On top of that, Control Rig was experimental, so there was no guarantee that Epic would continue to include the plugin with the editor. Definitely not ideal.

But, in desperation I turned back to Control Rig, and I am glad I did. After looking further into it, I can see that it will give us substantial benefits. By creating the rig IN the editor, it will allow us to animate directly in the editor and save those NLA sequences as separate assets. Because we are using the editor as a DCC tool, we are assured that all of the scale and rotation issues that may crop up from external DCC software are a non-issue. But the biggest advantage of Control Rig is the fact that a developer that is creating character assets to sell on the marketplace will be able to include the rig along with the rest of the assets that make up the character. The customer will be able to create their own custom animations with the exact same rig used to generate the original animation sequences that are supplied with the asset pack. The deciding factor came when Epic’s developers stated in one of the live streams that Control Rig was not going to be dropped. It was being used in the creation of Fortnite, so it was safe to use in our workflow.

By using Control Rig, we will be sure that what we are seeing in our created animation sequences will be exactly what we will get. And, just as importantly, we will be able to supply our marketplace customers with a fully defined rig directly in the editor. That rig will be self-contained in the asset pack, which means we will not have to support rigging the character in multiple (external) DCC packages. The customer will get a full-featured rig and we will only have to support a single DCC package. Now, that is ideal.

Rigging is Hard

I am in the process of creating Suzy, the star Capuchin monkey of the game we have in development. She needs to have accurate movement and the ability to make complex facial animations (Capuchin monkeys are very animated, no pun intended). The rig needed to animate her is very complex, and is the most challenging rig I have ever attempted. This isn’t saying much, because I am an inexperienced technical artist and a terrible animator. Encouraging words, I know.

This has been a long learning process overall. Learning to create the hair effects has been challenging, but fun. It took more time that I anticipated, but this is to be expected when you have to learn not one, but two separate hair systems (Blender and then Houdini). But when it comes to creating the rig, I have essentially jumped head first into the deep end of the pool.

The skeletal structure of the bones need to be defined so that a wide range of movement is possible, without severely distorting the mesh in unrealistic ways. To that end, twist bones are used to make sure that the mesh doesn’t collapse on itself when the arms or legs are moved. There isn’t nearly as much information on correct usage of twist bones for rigging as there is for modeling, so some trial-and-error was necessary.

Hopefully the bone structure that I have defined will be suitable for a wide variety of animations because we plan on selling this asset on the Unreal Engine Marketplace. If Suzy were just going to be used in this game alone, I wouldn’t worry so much about her rigging…I could rig her for our specific use-case. But once she is ‘in the wild’ there is no telling what a developer might do with her.