Animation has ironically been the hardest part of an animation degree for me hence why I strive to improve in this project. As abbreviated from John F Kennedy, we go to the moon, not because it is easy but because it is hard. This blog entails all of the research undergone in order to meet my specialization. In this project, I hope to accomplish a smoothed out animation. Furthermore I hope to implement these into a working game engine where the player can move around in a sandbox. Specifically I am focusing on Unreal Engine which will be discussed throughout a large portion of this blog.
The original idea for this project can be seen in the slides below however upon investigating how many animations and blueprinting goes into a project I started to realize that this is out of scope. I substituted this for a project based around trying various basic controls. There is already a 3rd person game in unreal that can be used as a template however for a better understanding on blueprinting I will attempt to rebuild this with more controls and states.
The slides below show the project before I had a better idea of the projects scope and what I can accomplish in that amount of time. What started with an Idea of alternating weapons and attacks ended up becoming a sandbox to trial and error blueprint and movement designs.
State machines are something that will be discussed more in depth later. For now we will talk about how I intend to lay them out. Seen below is the modified version of this and how I intend to work my project.
The reference is a personal favorite, The exaggeration is something this reference seems to excel at with it’s little jolly trot. I Hope to give this walk cycle some justice and give it some life in 3D.
This run cycle is another one that I have enjoyed to working with for a long time. However during cleanup and enough time given I would liked to implement the below reference into my final cleanup.
Dive roll was something that I really wanted to give love and attention however some of the animation was lost as well as issues I had putting it into the character blueprints. I used two References for this, the first is the reference given above. The second is from the “Body Mechanics exercise” Provided by SAE Qantm Brisbane. The rough version of this animation can also be found in “Quick Test” Section of this blog.
This was surprisingly hard to find a good reference for, I ended up stumbling across this list of walk cycles. Among the various different actions in this tutorial I found probably the most helpful crouch animation.
This resource was followed very loosely, some of the poses I changed a bit because they didn’t seem to intemperate as nicely as I liked. Specifically I changed the jump contact and the recovery arm poses to read a little better in 3D. Unfortunately the arms and legs are a little more shaky on the falling loop then I would like. Additionally I was planning on doing a run and jump which used another resource as listed below.
Typically for a movie animation you would follow a pipeline much like the one above. However game animation is exceedingly different. Unlike movie animation that allows you to focus on improving animation where the viewer can see, game animation, especially for third person needs to be polished and refined in every direction. Additionally game animation needs to be tested and reiterated multiple times. The diagram below is more accurate to Unreals vast and non linear Pipeline.
The most relevant part of this pipeline graph seems to be the “Animation to test to polish” cycle. Additionally planning the animation is another thing that needs to be taken into account. To accommodate for this, at the end of the blog will be a customized pipeline to better show the work that I intend to incorporate.
In this section I will show quick tests of some of the working animation, one of which example didn’t quite make it into the characters controls. Additionally I will show different blueprints that I have managed to figure out and implement into the games design.
This is the rough version of the roll, unfortunately I never managed to figure out the controls for it so it remains in the library.
This video shows the jump animation before the pre anticipation mechanics were added in.
This is one of the messiest parts of the blueprint. It is the main area for controlling the characters movements speed. The is also where I first learnt about flip flops and there various uses.
This video shows how the previously mentioned flip flops have been implemented to make the character have a crouch toggle
This area is is where I learnt about camera rotation and movement/moment rotation.
This is the character blueprints. All of this is what drives the animations to switch among each other. Inbetween each state is another set of rulings that checks to see if the change is true or not that transitions them freely.
Practices and Techniques
3DS and Unreal
This production will be completed entirely via Unreal and 3Ds Max. A lot of this knowledge has been curated from various sources such as the Unreal Engine 4 3rd Person tutorial series, Unreal Document section and various forums that helped with trouble shooting issues that had came up. Through this I have learnt a few practices and techniques that have broadened my previous non existent knowledge of unreal.
When you import into unreal with an FBX you can just drop and drag the scene that you are working on into the unreal. One thing to consider with FBX importing is how you want your normals. You can decide whether or not you want to import your normals or let them automatically compute hard edges. If you let Unreal compute some of your normals however it may generate some hard edges and spoil the smoothing groups.
One key note when importing is that Skeletons are what is used to share animations across characters. There is, however, an exception to this, if a skeleton has extra joints that disrupt their hierarchy then they will have to be done on a separate mesh. Some extensions on the skeletal mesh, however, is still allowed. You can edit a lot of the hierarchy in the persona editor that will be discussed in the next header.
Persona allows you to edit animations in unreal. Access persona you double click inside the content browser in any form that is classed is classed as animation. Persona has tabs that are available in the top right that allow you to swap between animation, mesh and skeleton mesh.
Among many things, you can add an animation blueprint to be set off at a certain point in the animation. An example of this may be a dust particle system going off when the characters foot touches the ground. This is what is known as a notifier.
Input settings is the basis where controls are setup. This can be found in unreal under the edit tab then head to project settings. This brings up a long list of options. You can find input under the “Engine” header. This gives you access to a set list of controls. Axis mapping centres around define what key inputs accomplish what. When setting up moving forward and back tools you can use the same input. This is because they use the same axis for movement all you have to do is set one negative to the other. The rest of the controls are for mapping for mobile and console gaming, however we wont touch these because our game assets will center around computer controls.
Blend Spaces is the blending of multiple animation that smoothly transition to each other. A shining example of this can be found in the “Idle_Walk_Run” Blend space. This animation slowly transitions depending on what speed the player character is running.
Blueprints are essentially simplified coding for UE4. The Animation blueprint is from what I’ve gathered the code that checks variables and plays an animation. This also greatly ties into state machines which is within these blueprints.
State machines are a system inside animation blueprints. As the name suggests this plays on the state that the player is in. Based on my research the most universal state machine I have come across is the jump states. Typically as the diagram below shows this is divided into four main states. In order this transitions through “idol_walk_run” to “jump_up” to “jump_falling” to “jump_land” back to “idol_walk_run”. Different rules determine what makes these transition between one another.
Character blueprints control how the character moves and furthermore determines what inputs do what. This however does not change the overall animation that is exclusive to Animation blueprints which was discussed earlier.
Root motion is the act of the player capsule following the animation, this needs to be considered whenever you are rigging as you need a separate controller for it.
Flip flop is a blueprint piece that acts as a toggle. An example I have used in this is with the crouch control. When the key is pressed the character is set to crouch, however when the button is pressed again the toggle is set to off and the player resumes a normal. stance.
Casting is something I’ve found very useful, it is the ability of carrying over a variable from one blueprint to another. An example I have managed to set up in my project is casting from the “Character blueprint” to the “Animation Blueprint”. What this then allows me to do is set a character to play a certain animation whenever a controller input is set to “true”. In this example whenever the Jump button is held down the player will crouch.
One of the misconceptions that I came across when researching this is that a lot of people have “Cast to Mycharacter”. The reason that my example is different to this is because I used a different set of naming conventions. Ergo, your casting should read “Cast to “.
The principles of animation
As always it never hurts to look over the fundamentals of animations and how we can incorporate it into our game animations. Most of this research will be based on the “Animator’s Survival Kit” As written by Richard Williams. I hope to make a game that runs smooth and effectively using the 12 principles of animation.
With the knowledge gained from this research I will plan to implement a pipeline of my own design. SAE Qantm has a rig to accommodate for projects such as this meaning most of the production pipeline is out of the way. This results in me being able to focus on parts of the unreal closer related to my specialization.
Although this is a lot simpler in design to most production pipelines it allows for lots of flexibility especially during the production stage. Pre production is represented by the planning stage. This is where all of the planning for what animations will be made. Below is what I used for this project, however as more testing came into play, the end result drifted far from its origins.
Unreal Engine. (2017, February 14). Blueprint 3rd Person Game | v4.8 | Unreal Engine. Retrieved from:https://www.youtube.com/playlist?list=PLZlv_N0_O1ga0IoRrpI4xkX4qmCrhGu56
Unreal Engine. (n.d.). Casting in Blueprints. Retrieved from https://docs.unrealengine.com/latest/INT/Engine/Blueprints/UserGuide/CastNodes/
Viggerz. (2014, October 7). Thread: Jump Anticipation Blueprint. Retrieved from https://forums.unrealengine.com/showthread.php?48730-Jump-Anticipation-Blueprint
DanZaidan. (2014, May 21). How can I capture gameplay footage? Retrieved from https://answers.unrealengine.com/questions/46288/capturing-gameplay-video.html
PLURALSIGHT. (2014, April 14). How Animation for Games is Different from Animation for Movies. Retrieved from https://www.pluralsight.com/blog/film-games/how-animation-for-games-is-different-from-animation-for-movies
E. (2015, November 07). Game Character Production Pipeline (Part 2). Retrieved from https://111426studio.wordpress.com/2015/11/07/game-character-production-pipeline-part-2/
25 Best Walk Cycle Animation Videos and keyframe illustrations. (n.d.). Retrieved from http://webneel.com/walk-cycle-animation
M. (2014, April 24). Jump Animation Reference. Retrieved from https://martinsammut.wordpress.com/2014/01/10/jump-animation-reference/
Wallpaper retrieved from
REE ANIMATION. (2016, February 28). The Legend of Zelda – Animation Project – Combo Attack A – Character Animation. Retrieved from:https://www.youtube.com/watch?v=7RmSMmKlGI4