Ibiyemi Abiodun
« main pageJuly 2017 to August 2018
I was interested in trying out 2D animation, but I wasn’t really satisfied with any of the animation software that I could get my hands on for free. So I made my own 2D animation software:
After working on this for over a year, I ended up with a Direct2D-based vector graphics editor that could open, modify, and save complex SVG files. It featured the usual cast of vector graphics tools such as gradient editors, a Bézier pen tool, and affine transformations.
What I learned
It was cool, but it was incredibly slow and could not animate in real time. In
other words, I found out the hard way why the best animation software is
expensive. The main solution I tried was using ReactiveX Observable
s to create
a scene graph that would automatically re-render just the dirty regions when a
property was changed.
It didn’t help that much, and in hindsight I think that may C# have been a poor choice of language for a project like this. In C#, every call to the Direct2D API required marshalling, and this was at least partially responsible for the performance ceiling that I encountered.
Besides that, I learned a lot about how graphics APIs work at a low level. I learned about algorithms like de Casteljau’s algorithm for turning curves into line segments, and I learned about how to tesselate polygons into triangles.