October is the eighth month
This month’s theme came from Frederik Vanhoutte: “all things octo”. I have to admit that it took me a few hours before actually realizing what he was saying, but again, life.
So for this report I’ll try to write something for every animation on a day to day basis, but only publish it at the end of the month. It might be more interesting that way ; I don’t think people have the time to read a post for every animation.
Day 1
The first idea that came to my mind was to do something that was using some kind of symmetry (rotational or other), as it might be the cheapest trick in the book to turn any random meaningless structure into something that people find pleasing (Rorschach patterns anyone?).
In another project I was playing with generating textures on the fly for a 3D model, so I took the same idea on day 1. Using a texture where I am drawing shapes, then mapping this texture differently on a triangular shape rotated eight times. Black and white because the pattern is strong enough to hold by itself.
Day 2
I drew something on my notebook where I would draw a line across a octogon, and whenever the line would be inside the polygon, I would make eight copies of that line in a rotational manner. On my crappy sketch it looked like I would get hypercool patterns… but actually…
Implementing this was not straightforward: which line is “original” and not a “copy”, how to detect if you are in/out of the shape, which kind of lines… Everything was crappy at most. I tried with black lines, playing with EXCLUSION blending (so the lines swap between black and white on overlap) but nothing felt right.
I then changed lines to rectangles and suddenly it went better. Sadly the original idea was kind of moot at that point because it’s actually very hard to understand the relationship between the inside and the outside of the polygon.
I added color to this time force the perception of the symmetry (too busy otherwise) and still kept the outside elements by just outlining them, but I’m pretty sure nobody got the rule at first glance.
Day 3
Now I wanted to break out of the rigid 8-fold (or maybe 8-spin) symmetry by blurring the boundaries of the limit. I wanted to do something based on a growth algorithm with eight seed points, each governed by a random generator seeded with the same number. In theory all eight seed points would create the same shape as all the random numbers would be the same for each individual shape. The trick would then be to slightly nudge a couple of shapes in one direction to create unbalance and as a result, interest.
I went back to a pretty old animation (April 9, 2017):
The rules are pretty simple: grow a line, and sometimes add a branch on the left or right, grow until intersection or out of the canvas.
So I did that, took eight starting points placed uniformly around the origin, and started the thing. Then it failed pretty hard.
A couple of reasons: floating point rounding errors in the intersection algorithm and order of cancelling the growth of lines (if two lines that are still growing intersect, which one do you stop?). So the result was not at all symmetric, so there was no real value here to play with. Just a bunch of lines that somehow started on a circle.
I then went the other way and decided that only one “mother” seed would be able to split left or right, but each time it does so, it would create rotated copies of the new child branch.
This actually worked well enough. There are still a few points where the order of cancelling the growth is visible but the mother lines overwrites any kind of error that might result here.
The color is now related to the number of generations each line is a member of.
Pretty happy about the result.
Day 4
@mootari on twitter asked for a looped version, so I obliged.
Nothing really fancy, just some life expectancy added to the lines, and combining multiple sets of lines does the trick.
Day 5
Maybe yesterday’s night involved too much to drink, so I might have been lazy and tweaked a few parameters here and there. But I find this one better than the previous.
Day 6
I had to take the plane to YCAM to participate in their big “OpenLab” event with very interesting people, so this one had to be quick. I started to get bored of the repeat each line on a circle so I tried to put them flat.
The issue is then that there is no difference at all between the stripes, so not really interesting.
Day 7
Full day at YCAM, so I took the poster for their event, processed it through my color palette generator, and played with 8 Ys (YCAM’s logo starts with a big three-pronged shape).
But going back to a previous idea is not enough so I played with the notion of adding a bit of delay to the lines, so there is actually some difference as the time difference between similar lines result in slightly different interactions. The way I decided to kill the lines that intersect then defined how the shapes would still look like rotated versions of the same basic structure.
I kind of like the dynamic of the form though.
Day 8
Another day at YCAM, after more than a couple of drinks the day before, but the guys were all passionate about their work; definitely worth it.
So… after so many days with the same aesthetic and base logic, I needed to go in a different direction. I then just changed the background to white.
Just kidding of course (well don’t look to far in the past or you’ll surely find one or two instances of that).
No more lines then, no more symmetry, no more rotation, but still with something with eight or octo inside.
Wait, an 8 is basically two circles right? And you know what fits easily in one circle? Anything scaled down enough! And I might have spent one month doing circle packing.
Say no more, fam.
Day 9
Back at home, after a pretty productive day, and maybe it was time to do something a bit different.
8 can also be used in 2⁸ so when we are talking about growth models, that might come handy to think about 8 generations of something rather than just 8 things.
I then imagined a full blown-out cell simulation with special effects during cell division. I was then deeply involved in studying mitosis for maybe five minutes before giving up.
The next best thing would be doing something like metaballs splitting away, so I started to work on that, building “metaballsystems” as my main components and working on the loop mechanism, a classic way to represent gradual changes on a circle.
Then the whole metaball aspect would take too long, so let’s call it a day.
The biggest point of this project is to be able to say “it’s enough”. That alone was worth doing this whole challenge.
Day 10
I then went to work on making the thing work as intended with some nice metaball effect, meaning being the cheapskate that I am, doing everything on a per-pixel basis and hope for the best.
The worst was trying to get the transition between two states as smooth as possible (when each point is doubled) and that was painful. Every logic way I tried did not work so I manually did a binary search across a couple of runs to get it close to OK.
Sadly the fuzzy edges are lost as the density doubles, leading to the artifacts seen when the loop ends…
Still, that works pretty well and that is finally something along what I had in mind in the beginning.
Day 11
Again, time for a change. After playing with cell division, meaning dealing with 2^(8–1) elements, I also realized (yeah it happens some time when brain is in low power mode) that 2³ is 8. So if you have three switches, it gives you eight possible states to play with.
So I wrote in my notebook link/circle/trace as the first possible switches to flick. Then with the constraints of “the loop” I went with a fixed path for all elements (an ellipse) and did a simple combination of those three states using a circle area as the delimiter for the effect.
Then the internets went crazy (well, at my small scale) on twitter about this one, with likes and retweets that kept my phone buzzing all night (thank you, do not disturb mode).
To be honest, I don’t really get why this one rather than others got so much attention.
Day 12
You liked the previous one so of course I had to do the same but with a bit of color (I do this most times I have a “successful” one). It never worked.
I chose width, height and color as my three switches, went for boxes instead of ellipses, and voila.
Then… I guess people do not like my color palette, or don’t think it was worth anything following the previous one.
Day 13
Third time’s a charm, so I went for RGB and added the distance for the moving active points to modulate the “switch”.
I really like how the colors turned out on this one, but again it looks that is just me. The idea is not to use white as the source color, but take a color palette and use additive blending to wash out everything.
Day 14
Time to let the 2³ idea go for a while (still not halfway through the month though!), and I went with something actually very straightforward: 8 stages. Point, line, ellipse, fill the circle, add an inside circle, link to neighbors, expand to neighbors, fade out. Add random offset to keep everything dephased, loop from the start.
Looks pretty, and I was able to do everything with a couple of handy functions I had laying around, notably the “relax” one to get nicely spaced random points (not very different from Poisson sampling in the result, but this one gives out a circular shape). The rest is just a simple match/case/switch (depending on your choice of language) and being super lazy. Additive blending because it just works with white.
Now that I take the time to think about this, I guess one of the characteristics of Manoloide’s work is to combine different ideas in the same piece, with visible differences to break the uniform nature of generative visuals. Worth looking into.
Day 15
I liked how lines were showing on the previous one but I had no idea of what to do going into this.
I then thought that maybe showing chains made of 8 points might be cool if the patterns are slowly moving.
The obvious issue is now how to combine “slowly moving” with “chains”, without doing too much.
The chains were then pure “select closest point” chains, the slowly moving was just tiny circular paths for the points to move, and the result is wilder than expected as the decision process removes the points when they are chosen. But it makes cool shapes anyway.
Fine tune with a gradient from head to tail on the chains, add some fading, repeat.
Day 16
I did not liked the wiggles so much but I loved the maze-like patterns that came out the day before.
So I turned that to 11 and dialed down the jigglyness.
Day 17
Color! 8 stripes! Hard borders!
Or in other words, no idea day.
Day 18
I kind of liked the idea of having the stripes, and in the end, it really did not matter much if the content is crossing over the edges, as long as there is a general aesthetic that applies to all stripes.
Day 19
Still playing with the idea of having eight lines, I was wondering if I could make the lines stay on a grid with a fixed size so what when the lines grow in circles, they would end up nicely aligned with each other.
I also played with the notion of having an orthographic perspective to infer some volume.
Day 20
I really like this one because it represents well what this project is about. When choosing the angle of projection for the previous animation, I had to make a conscious choice that would really impact how the depth is perceived. For the first one I chose a “traditional” angle so that people will see the perspective as intended but this is a parameter open to modulation.
Hence what happens if you rotate that angle along the course of the animation?
I also added the diagonal movements to the lines, making them eight-directional as well.
Day 21
Things started to get really busy at work so the next ones were kind of rushed.
So as I said before, the first reflex I have is to switch the background color, change the blending mode and adapt to taste.
Day 22
I wanted to explore how the trace of the lines might be interesting to look at so I went overboard with the fading, added super deep quads to cover most of the space.
On my screen it looked pretty cool, but I had a bad feeling about this. And by this I obviously mean compression…
It basically goes like this. I know that this will be hard to compress, then ffmpeg shows a file that is 10M for 5 seconds of video… I know twitter and instagram will crush them to bits.
Day 23
That is where the busiest days of the month started, as we were holding a “Open House” event for the 30th anniversary of the lab I’m in. 2000 persons over two days came to see what we are working on, etc…
So this one was mostly: OK, I’m dead, I have the few lines of the previous animation to work with… Let’s just kill the movement of the lines, and make the angle rotation sweep the picture.
Day 24
The first part of the event was a great success, so I had a little bit of mental juice left to do something with yesterday’s weird experiment. Add color, blending, and hope for the best.
Day 25
I was making an interactive installation for the 26th and I was far behind schedule… This one was made maybe around 3AM to change my mind a bit.
It started by just saying that you can cut a cake in 8 parts with 3 cuts (think outside the box), and a square in 8 boxes with 4 cuts, if one is a different direction.
I was surely more tired than I thought, because it took me very long to make it loop…
Day 26
Final day of my workplace event, and… we’ll talk about this later maybe. The system I built worked fine until I had a pretty awesome bug in the middle of the day. That the stuff worked fine until then was purely because the RNG was completely amazingly choosing the right stuff all the time…
Anyways I could debug the thing while it was running and it went fine until the end.
All my creative juice was dead at that point, so… you might start to see a pattern here.
Add color, tweak the numbers.
Day 27
I could finally sleep and do some other stuff, so I wanted to do something else. One thing I did not play with so much this month was something without noise nor randomness. I wanted to do something purely geometric, with hard coded formulas for the shape, so I obviously went to the 8 rotating layers thing:
Day 28
Those patterns are very satisfying to watch because you easily anticipate what will happen and you feel great when it happens.
So I went higher with 8*8 layers.
Day 29
To be honest, that’s the point in a month where I do not feel motivated enough to start a new algorithm as there is so few days left, so higher and higher!
I like this one as the stroke blending kind of glitches when the strokes taper, so it looks like you have some ghost images of regular shapes in the blended mess that is the middle.
Day 30
But let’s end up with something simple. 8 waves, similar to what is called “Stream graphs”. It’s very easy to implement, and it looks pretty cool.
Day 31
I really like the “flow” effect of the previous one and I wanted to break the illusion somehow, so I modulated the sin and cos to hell to get this swinging effect that happens in some of the shapes. Pretty happy with this one.
Conclusion
The eight month is now over. Did I make something very good? I can’t really pick one and say “this one is the best of the month”. The one that got the best “response” online was #649, the first 2³ states one.
If you are interested in social stats, I actually lost followers on instagram during this month, and gained 132 followers on twitter. This has been the month with the most tweet impressions so far (even greater than when I got retweeted by @archilect ).
I’d like to thank Frederik Vanhoutte again for the theme that allowed me pretty much to do anything I wanted (it is surprisingly easy to put 8 somewhere in the code, for example the rng seed…) but gave me some interesting directions to work with.
At the personal level this was not a very good month, as I did not take the time to tackle a difficult challenge or something new during those 31 days. Everything I did I kind of knew beforehand, and the only technique that was somehow fresh was to have a bunch of render targets in the background to be able to mask/redraw at will using them as textures. I was already doing this in 2006 when I was working on some shaders, but that might be the first time I used this approach in this project.
At the work-life balance level as you might imagine this project is always interesting as I need to find time/ideas and to ship something every day.
I am not satisfied as of today because I did not think enough about the global direction of the month. I still love this weird project, and 669 days in, I don’t see myself stop soon. Even if I wanted to stop at 1000, that’s in almost one year. I just need to switch gears or find a different direction to work with.
I think I’ve found a hint.
See you in November, then!