Animperium

The Animation Application

2023-08-01

I have, in recent years, been trying to make animation applications, particularly pertaining to math. However, desktop applications for animating math simply enough simply don't exist, at least not with LaTeX integrated into the application. So initially, my main goal was to create a simple desktop application with the ability to generate math equations via LaTeX syntax. However, I later realized that an apporach like would attract a very niche audience - as there are many other applications for which desktop applications for animations annd video editing simply don't exist for, such as an application for making education videos in biology.

The next question becomes: "How do I make an application that serves various purposes, but is still simple to use?", after all, I also wanted to make it easier for other teachers to make their videos. The solution I came up with was to have a community-oriented store such as that in the Steam application, where users can upload their own mods and plugins for the application. This will open room for a lot of flexibility.

The purpose of this animation application is to create a bridge between more simpler animation applications and more complex animation applications. The application is designed to be simple to use, but also to be able to create complex animations.

When I started building this application, it was unclear what technologies to even work with. Windows Forms and Windows Presentation Foundation (WPF) were the main choices I had. The problem with Windows Forms is that I had to implement animations from scratch, which would be a lot of work. WPF, on the other hand, offers a built-in library for animations, which it calls "Storyboards", that are much easier to implement. The benefit of Windows Forms, however, is that it is much cleaner to work with, especially when dealing with vector graphics.

I decided to go with WPF, as it would be much easier to implement animations, and it offers far more customizability than Windows Forms, although it too has various limitations. As for the programming language, C# was the obvious choice.

From here, I had to learn how to use the Storyboards framework, which turns out to be relatively straightforward. Although despite being straightforward, the complexity of handling graphics in the framework make it difficult to work with. For example, getting intersections between shapes is not as simple as I'd like it to be.

The main hurdle, however, that I am currently facing is that of the complex way in which WPF handles bindings (eg. making sure that a given value remains the same across multiple variables/properties). The benefit of bindings is that it allows me to manipulate how encapsulated the properties are.

Currently, the tools that are used in the application are divided into the following catogories: Mouse Tools, Curve Tools, Shape Tools (drawing shapes), Text Tools, Media Tools, and Effects Tools.

  • Mouse tools are tools that allow the manipulation of items, typically by moving the nodes, vectors, resizing the items, rotating them, etc.
  • Curve tools are for creating custom curves using various splines. Bezier curves are the most common splines, for example. But I plan to include others in the future.
  • Shape tools are for drawing shapes, such as circles, rectangles, polygons, etc.
  • Text tools are for adding text to the animation.
  • Media tools are for adding media to the animation, such as images, videos, audio, etc.
  • Effects tools are for manipulating the items in the animation, such as adding filters, animations, etc. Note that "sound effects" are not included here, as those are considered media.

I am still working on this application and will continue to do so in the near future. I will be posting updates on this blog as I make progress. My current focus is on implementing the implement shape combinations, such as unions, intersections, etc. I will also be working on implementing a way to implement the various basic tools for the application.