Specialization: Animation system
Why did I choose this specialization?
I have always been interested in animation systems and how they work. I saw this specialization as an opportunity to learn more about how animation systems work and to create my animation system. I also wanted to learn more about the math involved in animation systems and how to use it to create a system that can blend animations in ways I was never able to do in Unity.
What is the goal of this specialization?
The goal of this specialization is to create an animation system that is based on the features of Unity's animation system.
Features
State machine
The state machine editor is built using ImGuiNodeEditor
Live Update
The editor displays the animation controller in real-time and allows the user to change the state machine while the game is running, and see the changes reflected in the game immediately
Multiple layers
Multiple layers can be used to blend and combine animations
Full control over weights for overriding animations
The weight of each layer can be controlled to blend the output animation of each layer
None state
The none state blends down the weight of a layer so a layer can be turned off and then blended back into an animation without the character jumping to the animation
Blackboard
The blackboard is used to store variables that can be accessed by the state machine
Transitions
Transitions are used to move between states in the state machine
Blendspaces
1D blend spaces for blending between animations based on variable
Sockets
Sockets can be used to attach objects to the character
Features that I wanted to add
Additive layers and animations
Additive layers can be used to add animations on top of the base animation
Animation events
Animation events can be used to trigger events in the game
Animation sync
Sync animations when transitioning between animations to sync stuff like footsteps
Conclusion
In conclusion, this specialization has been a great learning experience for me. I have learned a lot about how animation systems work and the math involved, and I came to realize that there is still a lot of untapped potential in a lot of modern animation systems. I am excited to continue learning and to use this knowledge to add to my animation system to make it even better in the future.
Special thanks
I would like to thank my animators for their paciance and help with making a user friendly animation system, that had the features they wanted.