One month in the clouds

Alexis André
5 min readOct 3, 2018

--

After one month spent waiting for more or less complex cellular automata to render, I wanted to go for something less abstract, and I was looking at this example on shadertoy:

I then chose to go for a “clouds” month, where I would create a new animation everyday related in some way to those puffy things in the sky. In my mind I hoped to be able to end on something as cool as the shadertoy example (having the framework for shaders already in place).

I quickly realized I was not at the right technical level to deal with volume rendering: clouds are unsurprisingly complex. One would need to consider how the light propagates inside the cloud, how the inner refraction/reflection of the light rays influence the final impression. And then they obviously move in the wind, change shape and density according to multiple factors, from temperature to dilatation…

I eventually went the easy route to start the month. Can I at least create a shape that could look like a cloud from a stylized perspective? And let us even be lazier by only looking at a 2D problem.

I did a quick search on “cloud design”, “cloud drawing” and other related keywords to get a better understanding of what other people would associate with clouds, and the answer is actually pretty simple. In the minds of most people, there is only one type of cloud: the cumulus (see https://scied.ucar.edu/webweather/clouds/cloud-types for other types). The main task would then be to focus on cumulus first and my first few days were just spent trying different ways to get a fluffy shape.

Apart from the shape, one general feature of the clouds, at least in how people represent them, is the wind. Swirls, long lines, curves and similar often play a significant role in the cloud symbolic.

I naturally went down that route from day 3.

But I was actually pretty happy with the result on day 5, to the point where I felt I was done with clouds, with 25 days left on the clock.

So I had to go somewhere else. Sadly the next couple of days were pretty hectic, so as always in that case, the dailies were rushed and ended up being average at most. Come day 8 where I first started to focus again on the wind representation that people seem to always attach to clouds.

In itself this was for me a bad one. Most of the problems I had that day were due to the loop constraint I also used this month. Every thing is computed from scratch each frame so I reseed my pseudo random number generators a lot. But that was not enough to deal with all the edge cases, costing me too much time on that day.

What I really wanted to do with this idea took actually a few more days (the 11th):

I felt pretty happy about this representation of clouds when they are moving, but on a static frame, I struggled to balance the need for more global structure with what I could do with simple distributions.

I then thought to myself this might be the time to consider clouds as volumes and failed miserably at doing so:

That’s when I got back to the original goal and actually be able to render somewhat realistic volumetric clouds. I did my Ph.D. in Computer Graphics, and a common question you need to answer when you review a academic paper for SIGGRAPH for example is “Can this paper be implemented by a talented graduate student?” (to assert if the paper contains enough — but not too much — technical details). And I actually do that quite often, so I thought that maybe if I tackled a “classic” cloud rendering paper from the 90’s I might be able to pull it off in one day.

Silly me.

I went for a paper from Y. Dobashi, a Japanese CG researcher specialized in cloud rendering called “A Simple, Efficient Method for Realistic Animation of Clouds” (link https://www.researchgate.net/publication/220721744_A_simple_efficient_method_for_realistic_animation_of_clouds). I actually met him a couple of times, he is still pretty active in the community.

So the paper gives out pretty cool results but relies on a couple of previous rendering techniques that were new to me, so I just went brute-force and looked at the cellular automata they used to represent the dynamism of the cloud shapes, hoping that the previous month of CA would help me.

Those days were hard. Brute-forcing not so small 3D CA equals pretty long rendering times and when the goal is to create animations, you’d rather have something fast and easy to tune…

A few days later I finally managed to get the “dynamic” part of the cloud movement down:

But at that point I understood that the rendering part of the paper was the biggest contribution. I was not ready to do the hours for this (I could not).

12 days left, so I went lazy.

I wanted an easy one, to alleviate the load of the previous days. I chose to do a sunset.

That’s when I started to be happy with the shapes of my clouds, plus the nice color gradient that occurred felt great. So I just played with that for 12 days, changing how I would represent the clouds, how I would mix the colors, and how the colors would change, thinking about different lighting conditions, from storms to moonlight.

The 30th daily uses lines to convey the volume and it felt soothing to my eyes.

During this month I had to fight against the rules of twitter that makes a video loop if it stays under 7 seconds. All the animations here were 150 frames, encoded to play at 30 fps. I stopped trying to squeeze everything into GIFs because it’s such a bad format. I mean, why would twitter allow to upload GIFs to just re-encode them with higher settings than traditional video…. let me do that for regular video and let me choose if I want the auto-repeat!

This limitation was a challenge (well another rule on top of everything else) as 150 frames to loop through a set of clouds meant that all the small movements were kind of lost in the speed of the whole stuff.

So what did I learn during this month? That volumetric rendering is hard. That natural phenomena are hard. That I can’t really work my way through complex papers in a day. That clouds are one of the last steps people look at when doing CG but how boy those clouds are important. Look at any Makoto Shinkai anime to see what I mean.

On the technical side, I might have implemented Worley’s noise somewhere along the way but I don’t really remember where I used it.

As far as dailies are concerned, those being 609 to 638, this was a pretty low month. Reception was below average, engagement below average as well.

Let’s see how this goes for October, month of all things “octo”.

All 30 clouds dailies for September.

--

--