A couple of weeks ago I wrote about MoveIt! for Unreal Engine, a character control system that includes a more natural motion for your characters. I decided to implement this system on Just Let Me Go, to give a better motion to the main character, Amelia (however, my first test used a different character). Since I use Character Creator to make my characters, that made my job easier.
The MoveIt! documentation includes instructions to do everything. You just need to follow them and you are done in a few minutes.
Applying the system to a new character is very straightforward, if your character uses a rig that has the same setup as the UE mannequin rig. Fortunately, the CC characters already have this setup so I didn’t need to any work to fix anything, because the character was ready to go as soon as it finished importing. So, the next step was to simply retarget the animations from the MoveIt! character to my imported character (this process creates a copy of all the animations and Blueprints, all of them compatible with your custom character).
Retargeting animations creates a lot of animations and Blueprints in a single folder, and that leaves things very unorganized. However, MoveIt! includes an utility that reorganizes everything in folders with the click of a button.
The next step was to make a copy of the MoveIt! pawn actor, and replace the pawn’s character and Animation Blueprint with my own (meaning the imported character and the Animation Blueprint that is automatically generated when you perform the animation retargeting).
The character worked perfectly without any problem. However, I have to say it was funny to see the cute anime girl stand and run around like a tough warrior dude.
After understanding the process, I decided to do the same for Just Let Me Go. However, there was a big difference here: Amelia’s Blueprint already has a lot of functions programmed in it, so it was not as simple as just copying the MoveIt! character Blueprint and replace my character. The first thing I had to do was reparent my character’s class and set the new parent as the MICharacter class. Then, I copied the input method from the MoveIt! character into my character’s Blueprint, and adapted it to work with all the stuff I already had, while also removing stuff I would no longer need. Luckily for me, I know how I had set things up and how everything was connected, so it was easy to do.
Since I retargeted the animations from the MoveIt! character to Amelia, so all the animations were created for me, and, obviously (yet again making the cute woman look funny as she was running around like the tough warrior dude). While the character’s Blueprint had to be manually adjusted to make it work with MoveIt!, the Animation Blueprint was a lot easier, since I used the MoveIt! AnimBlueprint generated during retargeting, and I simply added some extra networks that I had created for the original Amelia. Now, this was the most time-consuming part: I replaced all the (needed) animations in the Animation Blueprint for my own animations, and I also had to create new animations for the movement start, stop, etc.
After replacing all the animations, she moves very nicely, transitioning from the idle state to moving state, crouching, etc. However, my work was not done yet.
In MoveIt!, you have different moving states: walking, walking slowly, jogging and sprinting. In my case, Amelia has walking, jogging and running (the running one has a stamina meter, so she’s forced to go back into jogging state after a few seconds). Since my states are configured in a very specific way, I decided it was easier to simply modify the Animation Blueprint nodes so she could switch from one to the other. This means I also had to make movement-start and movement-stop animations for jogging and running.
On top of that, she has two “crouching” states. A regular crouching, and a crawling state that she can use to slide behind shorter objects. To fit these two, I made another modification to my Animation Blueprint, so she can switch between both of them. As you imagine, I not only had to make a crouch-walk-start and crouch-walk-stop animation, but also a crawl-walk-start and crawl-walk-stop animations.
Even if it sounds like a lot of work, since I am very familiar with Blueprints and Animation Blueprints, I was able to do this in a few hours (including the time it took me to create the required animations). While I still need to rework the animations so they reach final quality, the result I have right now is still pretty cool. You can see her in motion in the video below