I chose to do my specialization within tools since I enjoy collaborating with people, both other programmers and from other disciplines.
I was uncertain on what kind of tool I wanted to make, so I asked the other member of my project group if they wanted/needed any particular tool.
I was uncertain on what kind of tool I wanted to make, so I asked the other member of my project group if they wanted/needed any particular tool.
I decided to do an animation state editor, even though I’m not very familiar with animations, since our animators really wanted one, and all other requests were too small of a tool to qualify as a specialization. We had two and a half weeks to plan our specialization and create it, and design our portfolio.

The plan was for the animators to just be able to drag a mesh into the editor and then add the animations for that mesh by draging those as well, this would create the nodes they needed to then start playing around with the settings. These settings will be e.g. what animations are linked, how fast they blend and so on.
The plan was also to be able to show joins and bones on the skeletal mesh, for the animator to be able to pick a join and the blend only from that joint and outward.
When the animatiors were done all the changes will be saved onto a json-file that then can be imported into the game.
It turned out that our animation blending was worse than I originally thought, so I had to spend a lot of time learning, not only more about animations in general but also blending. And then implementing this to improve the blending in our engine. This took up a big chunk of the already tight time frame that we had for our specialization.

We already had ImGui Node Editor implemented into our engine, thanks to the visual scripting. But since I had never used the actual Node Editor directly before, I started by familiarizing myself with it.
It turned out that we were missing some functions in our ImGui library that was needed to make the layout easier. So, after adding them I started to create the interface part of the animation editor.
I Started with making nodes that could be linked together an “infinite” number of times. I followed the way unity does it, and added an Entry-, Exit- and “Any State”-node that automatically are created when the program starts.
I Started with making nodes that could be linked together an “infinite” number of times. I followed the way unity does it, and added an Entry-, Exit- and “Any State”-node that automatically are created when the program starts.
Since we already had the Drag&Drop functionality, it was easy to make so that when an animation was dropped into the editor it created a node, with the first node created having a different colour than the rest.
To be able to save, I linked the save file to the skeleton Mesh. I added the classic “ctrl+s” save-command, but also so it automatically saves when you exit the program.
The load was easily added, by checking if the Mesh that is dropped has a json-file associated with it and loading it if it does.


I added a play button, that plays the selected animation. I plan to add so that if you select a link and press play it will play the blending from the first to the second animation.
Another issue I encountered was with the state machine that I had implemented into our game a couple of months back. We had not fully implemented the state machine into our engine during the previous game project, and so the integration was removed between the state machine and the animations when we started game project #7. This further complicated this.
What did I learn:
Since this project didn't go as planned