Higher quality download (89 Mb)
My entry to the FieldFX Planetarium compo at EMF Camp 2026. This one placed #1 out of 5 entries.
Behind the scenes
Background
Since Nordic Fuzz Con 2026, I’ve been taking part in the Monday Night Byte Jams, organized by the FieldFX demoparty. Their main thing is to every 2 years organize a demoparty at the EMF Camp as a way to introduce people to the demoscene. Because I knew EMF camp was coming up this summer, I decided early on to make a really elaborate render for entering in their Graphics compo. This is what led me to make Aberration.
One week before the demoparty was to be held, the organizers announced another competition. They would get access to an inflatable planetarium and were looking for any kind of video that could be played on the planetarium’s projector.
Surely I could make something cool in Blender? And so, I embarked on a very intense project to make a music video for projecting onto a half-sphere above the viewer’s head.
Even further background
I used to dabble in music production, but nothing ever came out of it. It was just such a struggle to get anywhere with it. Very often I found myself wanting to reproduce whatever sound was playing in my head and getting frustrated when those sounds never manifested themselves in my DAW despite my efforts. I did learn a lot from it, and experimenting with DSP in software like Max/MSP was very fun.
One of my final attempts of making some kind of musical output was a project where I would use MIDI from my DAW to sequence visuals with a Processing app I’d made. The code and project files are long gone, but I did manage to dig out a recording of what it looked like at an early stage. The project did not have a name, so I will just refer to it as Concentric for the rest of this post. This video dates back to 2012.
Looking back at it I feel like it is very rough but earnest. I was heavily inspired by raster-noton acts like Alva Noto and Ryoji Ikeda. I absolutely loved the kind of visual components they would incorporate into their shows and this was an attempt at rolling my own.
I worked on Concentric around the summer of 2012. Then it fell to the wayside. Comparing it to RADIAL ZERO, I can definitely tell that the core idea still lived on in me. Parts of the musical arrangement is there. I even recall that later versions of Concentric transitioned into a 2-step rhythm much like RADIAL ZERO does.
While I don’t mourn the fact that Concentric never went anywhere, it still feels like it got some closure now that I managed to create something similar that actually reached the finish line and that I actually managed to make it sound and look good.
Music
As I mentioned, music production is not my forte. Still, I would need to give it my best to create something I could build an animation around. I have a license for an ancient version of Ableton, but getting it running on Linux is not something I wish to inflict on myself. I tried Bitwig and liked it, but my free trial period is over (I used it to make the tune for my NFC animation) and I don’t want to spend a bunch of money on trying to get back into music production again. I did have one tool at hand still - Bespoke Synth which I had downloaded and played around with a few months earlier after seeing someone post about it on Mastodon. So I booted it up for the second time ever and started patching.
Again I tried to recreate some kind of raster-noton vibe by layering some sine waves. It turned out decent. I added a very low frequency sine wave and messed with its shuffle parameter. This created a nice growly base tone. I had it pulse with the tempo of the track as I added a drum section on top.
Eventually it came together into something I felt I could build an animation around. Not perfect but good enough. And I think that is key for me - I’m very much a perfectionist. Not in a good way, more in the sense that want everything I make to be perfect or I should not bother. Because what is perfectionism but a facet of anxiety? Wanting to compensate for your own perceived flaws by either knocking it out of the park or not participating at all?
The thing is, I am now operating as Finkel, a character I made to represent myself if I had been offered to trade in my anxiety for a change in my body plan to include wings, a tail and a dragon’s snout. If it is Good Enough, it is Perfect. Do like a dragon and wing it!
After a few recording takes (Bespoke does not render an arranged track, it just saves the last 30 minutes of audio so you have to ‘perform’ the track in real time and save the result), I had the final RADIAL ZERO track saved to my drive. I decided that this would be the final version, no retakes. Both as a way to make sure I kept on track to make the tight deadline and also because I did not want to waste time retiming any animation keys set for an old version of the track.
Animation
The core idea was fixed from the start: Make a bunch of different ‘scenes’ that you transition between during the static noise at the end of every period in the track. Each scene should have some kind of reaction to the three main elements in the music, the kick, the clap and the base tone. These animations were driven by these kind of slope-step functions that I entered manually as keyframes.
This way, I was able to take the fraction part of the curve to design my own easing function in the geometry nodes, saving me from the effort of changing a bunch of keyframes at once to alter the easings.
The full geometry node network that generates the geometry making up RADIAL ZERO.
Here is a closer look at some of the scenes!
Circle packing
This one initially interpreted the kick drum curve to drive the scaling of the circles, so they would quickly pulse in size in sync with the kick drum. The above screenshot shows the part of the node network that arranges a set of points according to Vogel’s Sunflower Pattern.
Icosphere
This one was the important one, the scene I had in mind for the section where I make the bass tones growl and the animation kicks into high gear. Up until this point we’ve only seen the concentric circles scene and the circle packing scene. Two scenes that are pretty flat and mostly serve to introduce the viewer to the shared language between the music and the animation. Now it is time to really put the planetarium dome to use, time to move around in space, time to add depth.
I decided to reuse the idea from the first scene where elements flash white with the kick drum. It was at this point I decided that all scenes should follow the pattern of kick=flash, clap=speed up, base tone=shudder and chromatic aberration. I reworked the circle packing scene to follow this language as well.
Contact
I really liked how this turned out. It has a certain elegance to it and I love how it sort of calms the setting down after the growling, vibrating and disorientating spin of the Icosphere scene, while still maintaining the trend of playing with 3D space and showing off what the dome can do.
Part of the network that generates the concentric rings and their rotations. One rotates along its Y-axis. The second rotates first along its X-axis, then we use the Rotate Rotation to apply the rotation of the first ring. We repeat this for the third ring. Again, that certain elegance.
I call it the Contact scene as it is a direct reference to the big wormhole machine from the movie.
Floating cubes
After ascending through the flashing spiral, we reach the final space where the cubes float slowly around us in zero gravity. The base tone is gone, the percussion is gone, the only thing left are the cubes transmitting their final message to us by flashing.
This is the scene that I thought looked the coolest on the recording from the dome. The way there are distant cubes floating just above the horizon looked incredible to me and it is not something that the flat source video I’d been watching really conveyed. Here is where I feel like I’ve just scratched the surface of what can be done with the planetarium. I really hope I can make a domeparty video in the future and really explore what is possible in terms of making a big 3D environment around the dome and interact with it.
Part of the node network that distributes cubes randomly in a volume. Note that the scene has the fisheye distortion applied so that the orthographic camera sees the scene in a way that the scene will appear undistorted on the planetarium dome.
Cutting floor: Harmonic spinners
This scene was eventually replaced by the Floating Cubes scene. The outer rings spin at a certain rate, the next ones spin twice as fast, the next one three times as fast and so on. They start out aligned and eventually line up once more. Pretty neat but I’m glad I replaced them with the more visually impressive floating cubes at the end.
Fisheye distortion
We were given instructions on how pixels in the video are mapped onto the dome itself. The center of the square video is the dome’s zenith and as you move away from the center the polar angle of the projected point increases linearly with the distance you’ve moved.
95% of the time I approach trigonometry I usually reason like ok so when the angle is 0 then it should output 1 and when it is a quarter turn it should be 0… ok it’s cosine I’m looking for. The other 5% is situations where you need to be a bit more rigorous and I end up getting things way wrong until I get a pen and pencil and start drawing triangles to help me think. This was one of those cases.
To turn a 3D scene into something that appears correct on the dome, I made a node group that distorts the geometry in the scene such that the orthographic camera looking straight up will produce the correct result. I found it very fascinating that the geometry would get so heavily distorted yet turn out looking correct when reprojected onto the dome.
Below is an example of a 3D scene I want to map to the dome.
Next is the result of distorting the scene using my node group. Geometry close to the ground plane gets placed close to the periphery of the unit circle, extruded upwards.
This is what the distorted scene looks like to the orthographic camera.
Finally, here is the result of rendering the orthographic camera’s view and applying it as a texture to the dome where the UV coordinates are generated according to how the projector maps images to the dome. It looks correct again!
Results
It was strange working on this knowing I would not be able to attend the planetarium and see it in the real world. Luckily the demoparty itself was streamed so I could at least see the entries together with a video recording from an audience member inside the dome. The competition was really tough!
The first four entries can be seen here and the fifth can be seen here. I really recommend watching them and keeping in mind that all of these were made with the competition being announced only a week before deadline. Some were made just with a day to spare!
I now leave this project feeling very satisfied with what I achieved. There is a new spark inside me wanting to dip back into Bespoke Synth and start making more tunes. Whether or not I will act on it I will have to wait and see.
RADIAL ZERO did come at a cost too. I have a propensity for wrist issues and the two of days back-to-back work in Blender really left their mark. Luckily I was able to rest it off. The week leading up to the deadline required a lot of figuring out a schedule for balancing work, a trip to visit my sister’s summer house, celebrating my birthday and finding time for adding the finishing touches to RADIAL ZERO. The morning after the deadline I woke up with a really bad pain in my neck that took a week to subside. This whole year has been characterized by physical reactions to stress and this was the greatest signal yet that I need to slow things down. For this reason I have not been working on any kind of new animation or render since the FieldFX demoparty, and it has been a relief. I don’t regret making RADIAL ZERO though! It is absolutely one of the coolest pieces of media I’ve ever made and it has left me with so many ideas of new things to make. But I’ll give it some time until I embark on something similar.
Thank you for reading and I wish you all the best!
Finkel