Put on your 3D Glasses to watch an animation of my final project:
There's also a non-anaglyph version if you don't have 3D glasses with you.
I put a lot of work into this project. Part of that is because I was super-enthusiastic about this idea, but also because there was a compatibility with another project outside of ITP that is important to me. And that project is designing my own holiday cards.
The deeper purpose of this is to make holiday cards that are more engaging than the generic holiday cards people send each other today. Holiday cards are supposed to be about expressing sincere appreciation for the people in your life but often that isn't what actually happens. By getting people to pay attention to the card and something I've made, I can build a deeper connection with them.
The most interesting thing about the animation is that the output as created by my code is this:
The easiest approach for coordinating the morphing of snowflakes into letters and words is to avoid the problem entirely and animate the entire project in reverse. Instead of having the snowflakes descend from above, everything rises up from below and disperses randomly into the sky. When I do it this way I don't need to choreograph morphing snowflakes aligning themselves at precisely the right time to form words.
After inverting the flow of time this project actually becomes a straightforward application of the content of Dan Shiffman's book The Nature of Code. Refer to chapter 4 of his book. Consider each of the shapes or "particles" employed in this animation: letters, snowflakes and words. Programming each of them to rise up from the bottom of the screen and move around randomly is easy with the noise function. After programming each one individually I just had to put them together into one animation and get them to do their thing.
The source code is available on GitHub if you are interested.
Even More Technical Details
Observe the behavior of characters like 'i' and 'F'. In the font I am using for the text both are drawn with two separate contours. The 'i' obviously has a dot and a base, and in this font the 'F' is a fancy F with the top part separate from the rest of the letter. These characters are formed from two separate snowflakes that land on top of each other and morph to form the complete letter.