Yuriy Fomin, a Senior 3D Animator at Cold Symmetry who worked on Mortal Shell, shared some character animation tips and tricks.
In case you missed it
You might find these articles interesting
Hi there! Yuriy Fomin is here, I'm currently located in Saint-Petersburg and work as a Senior Animator at Saber Interactive. In several weeks, I will continue my animation journey with a different company. I am so excited to join the team to do cinematic projects. So far, I have had the pleasure to work on Quake Champions, World War Z, Mortal Shell and also make a little contribution to “Love, Death & Robots” by Netflix.
First Steps in Animation
I have been working with rig controls for 5 years. I started as a CG Generalist at an advertising company, making CG trailers and intros for mobile games and doing sculpting, modeling, and basic rigging. Then, I realized that all I had been doing felt static. There was no storytelling in there. But I was naive and inexperienced. When I look at modern artists who are so talented they can tell a story in one static image, I see how wrong I was to make such conclusions about modeling and sculpting characters.
Anyway, back to my story. So, from the moment when I decided to shift from static to moving imagery, my passion for animation started growing. Since I watched different making-of videos and film analyses, I decided to use movement in animation as the main aspect of storytelling. So, how does one start to animate? Self-education and mentorship. I’ve managed to learn the basics of animation with a professional animator by my side. Now, he is my friend and colleague. I was very lucky that he agreed to teach me, given the fact that at the time I did not have enough money to pay for any courses or tutorials. Big thanks to him.
Becoming a Part of Mortal Shell's Team
My career as a part of an animation team on Mortal Shell began with a funny story. It all started rather simply: I saw a post in one of the animation communities and I wrote to Cold Symmetry. They quickly replied and told me to animate a combo move as a test. I did it quickly and... drum roll… I failed. For the next several days, I was upset and so I decided to ask Anton Gonzalez how the project was going. And luckily for me, Anton gave me a second chance because he was not happy with the results of some other animator in the team. And like that, I was given a task to animate one of the game characters. Anton was very pleased with my new results. You may ask, how did it happen that I failed the first test animation (that was rigged in UE4) and succeeded with the other? The answer is… well, I still don’t know it. Maybe it was luck, maybe it was some kind of inspiration that came to me while I was working with already existing in-game content. Maybe both. So, don’t ruin your first chances!
Thus, I became responsible for gameplay animations and some cinematic intros for different NPCs including creatures like humanoids, fish, and cats.
Four Stages of Creating a Character
I’ve had the pleasure to work on different types of characters, including large ones. The most challenging ones were heavy characters like Grisha. He was the most difficult character to animate in Mortal Shell. He was a pain in my neck in the beginning, especially when I was trying to catch his mood and the feeling from the design brief. He has been reworked a lot of times. The challenge I faced was to stay in balance between weight and dynamics. Dynamics and timings are one of the key pillars in Mortal Shell when it comes down to fighting the enemies. When I was adding more weight to Grisha he was losing his dynamics during combos. One of the nuisances in gamedev is that it all usually depends on the designer’s vision, and animators have to understand it through lots of interactions. I was no exception. After several attempts, you get used to a character. Weight, timing, dynamics – these are the main points I keep in mind throughout the process. They can be varied to give different types of characters an appropriate feeling.
The process itself has no magic at all, and those who work in the industry know it already. It consists of reference, blocking, spline and polish. Each stage has its own purposes. Reference is an animator’s weapon when they work on games with exaggerated realism and detailed body mechanics as well as when they want to demonstrate some ideas to designers.
The blocking stage gives me an understanding of whether the movements look strange or fit the character perfectly. Besides, this stage allows you to feel the poses and timings of the character. If everyone is happy with the idea and the look of it I can jump into working with splines.
The whole pipeline takes place in Maya. Scripts and plugins make the process a lot easier – thanks to Alan Camilio for animBot, it is definitely a time saver. My favorite tools for splines in animBot are: Push and Pull, Ease in Out, Time Offsetter, Blend to Neighbors. There are also superb functions for checking arcs and spacing.
Copy Xform World Space is very powerful, as it allows you to animate in world space without any constraints. When I am satisfied with the hips, I start working on the upper body, then the legs, arms, and head. Locators or Copy Xform World Space are great if you want to clean those parts separately. When the main body mechanics work well, I add details like secondary motion, noise for realism, dynamics for parts of the character's armor. This approach is called the layering method.
Crucixs animation breakdown:
I was lucky enough to work on huge and powerful creatures with different looks and behaviors. To visualize and understand their appropriate weight and characteristics you need to understand what makes them so heavy. It could depend on many factors like heavy weapons they wield or if they have a specific center of mass. The first trick I use is making ease-in and ease-out animations more even. Such characters should start and finish their movements slower, therefore, the anticipation phase must be much longer than usual. The core of the animation for heavy characters is in their hips and legs (if they are bipedal). To make it look even heavier, try adding moments when characters balance themselves in the last second as if they are about to fall.
At the polish stage, I like to use animation layers to add extra rotation to the hips and play with noises on the legs. Animation layers are very handy if you want to give the animation extra detail.
Catfish Animation Breakdown
As an example, let’s use an animation of a huge catfish jumping out of the water, swallowing the player, and teleporting him to a certain location. I made several versions of how exactly this giant fish might appear.
Three movement versions at the blocking stage:
The second version where the catfish jumps out of the water and spins a little like a whale was approved. I used a video about a whale on YouTube as a reference. By the way, YouTube can save you time when looking for good-quality references. Needless to say, the animation needed to look more cinematic so I added a water splashes effect. Such details bring an extra layer of believability and weight to your idea. The main difference between animations in games and film is that game animation must look appealing from different camera angles. I always keep that in mind and make sure to check the results from different camera positions.
Once I finalized the idea and chose good spacing that stressed the weight I started working on small details. For creatures like fish which have flexible spine, tail, and fins, I needed to work on overlapping and secondary movements. As you can see, I added impact to the tail animation at the spline stage. It could have been done by hand but it would have taken too much time. So I combined usage of aims and the Overlapper script made by Dmitri Kolpakov. I used this combination on every small limb. In the end, I got something like this:
Let’s talk about the water splashes effect. Actually, it’s not even VFX. The trick here is to use footage as a JPG sequence on a plane. Is it necessary for the animation pipeline? No, it is not, but it helps you to sell your idea and it was very useful to other VFX artists working on Mortal Shell. So, your first step should be to find some footage with a black background on YouTube or anywhere else.
After that, open Maya and create a simple plane.
Then, select the plane and go to "Material Attributes", assign your sequence to the color channel, and turn on “Use Image Sequence”.
Do it again for the transparency channel.
You can play around with the ambient channel to change color and intensity.
Then animate your sequence however you want. In my case, I retimed the sequence in the place where fish splashes the water. When you are done with animating, you might notice that your transparency channel has the original timing – just copy your curves from the color channel to the transparency channel.
Tips and Tricks on Working with In-Game Animations
Creating in-game animations is a lot like fixing a sinking boat. Whenever you fix something in your animation, something else might break in the actual game. That is why you need to cooperate with your colleagues and be careful. Go through iterations and be patient. Sometimes, when you work on some animations for a long time you might get really tired of them. Don’t be afraid of it, just take a deep breath and try to add some tiny details. It can refresh your eyes and fill you with enthusiasm once again.
Making a demo reel is always a problem for me because I try to make it dynamic and rhythmic. To help with it, I search for royalty-free music needed to represent the atmosphere of the game. Then, I try to choose my best animation shots I want to show that'd fit the music. Another challenge is diversity – the reel should be a nice mixture of heavy and light characters. It is also important to avoid repetitiveness in the types of characters and their movements, color graduation, and camera angles. The balance of these things should be managed in every single animation reel.
A Piece of Advice for Beginners
Beginners are always gold. That is why we are always looking for novices to invite to our team. This approach allows us to look at the problems we face and the decisions we make from a different angle. Also, it keeps seniors humble! But being a junior is pretty tough. Don’t push yourself to the limit when you just start out. Don’t rush to find the result quickly. Enjoy the process of making animations and keep training.
Body mechanics is the skeleton of your skills in animation. Always try to find some free time to create short animations – within the range of 100 frames, I'd recommend. Better to do less than more. Don’t animate 800 frames, let it be 80 instead. Don’t forget – quality over quantity. Make animations simple. When you are happy with the result and confident in it, move on to a new animation. Except this time add some tiny details, adjust camera movements, imagine that this project is part of real production.
Also, if you want to do simple locomotion it will be better to make a network with a locomotion system using UE4. As a potential employee, you’ll have a better chance to get a job. It will be a big advantage that could separate you from other candidates. Being a junior means being a person who can and will start solving technical difficulties, so do not be afraid if Maya crashes or if you face an unexpected issue with the rig. Try to understand the problem and solve it yourself, it will be to your advantage because such issues help to better understand the rig itself.
Use different methods and approaches once you get the basics of using Maya. Experiment, absorb knowledge from different tutorials. My advice to every animator is to follow different tutorials, no matter what level of expertise they have. I would advise the Animation Sherpa training by Richard Lico. It will teach you how to speed up your workflow and how rigging and animation work together. Pavel Barnev’s YouTube channel is also great as it has lots and lots of priceless educational videos. And, of course, Twitter for being the best social network with unlimited educational and fun posts.