Geometry Nodes cookbook?
Yeah, this isn't really a "cookbook" but more of, again, notes on doing certain effects.
Expanding curves

Here's a motion graphic effect I had an idea on for probably a few days—have a logo expand until it fills up the screen. Demonstrated here with a random curve with the expand parameter animated. It, however, does not work with contracting.

The idea here is to take each point in the curve and "expand" it away from the point's normal, which is just saying what direction is perpendicular at the location of the point.

To accomplish this, the curve is resampled so that some attributes can be taken at any known point. The sample range is from 0.0–1.0, so take the vertex index and divide it by the "length" (or how many vertices there are), so with each index we have the value of its normal.
Then we take that normal vector and scale it, this scale is the expand parameter.
Finally we can apply this to every vertex in the curve to apply that effect.
Resources for making fonts!
Designing letters
Here's a graph that shows what letters you can "cannibalize" when you want to design some other letter. For example, for Y, you want to take elements from I and also V, which is why those two other nodes point to Y. Or what letters you can make from another letter. For example, v can be used to make y and w, which is why those two "come from" the v node.
The graph is interactive! You can hover over a letter or a number in the graph below to highlight what characters can be made from it, or how it can be created from other characters. The O H n o nodes has been highlighted in cyan as those letters are commonly how you start making a font.
Please note, that this is just ONE possible graph of deriving lots of characters from other characters. There are many ways to do this, of course depending on your specific designs and what you want to go for.
Rendered with the command
dot -Tsvg fonthier.dot -Glabel="" -Elabel="" > fonthier.dot.svg
Spacing and kerning
-
Robofont — Intro to Spacing
A pretty good guide to spacing letters, regardless of font software. I reproduced the spacing relationship table here:
left right lower/straight n h m u l i j k b p r n h m u l i j lower/round o c e d q o b p lower/angled v w y x v w y x k upper/straight H E F L I B D P R M N K H I J upper/round O C G Q O D Q upper/angled V W Y A X V W Y A X K
-
Making Biorhyme — Spacing
Though a bit broken, it's an interesting write-up. Includes Walter Tracy's method of determining letter spacing:
-
Kern King
By Leslie Cabarga. It's a weird text file. But it is specifically designed to troubleshoot kerning issues that might pop up in real world use.
-
Minimum Kerning Pairs
By Impallari Type.
-
Font Testing Page
Where those two text files above came from.
-
Stephen Nixon's Spacing resource page
Heaps more complete than this one, really.
And of course there's also Puz's type design crash course, which plunged me further down this artsy rabbit hole.
Audiovisual Identity Database
Yup. It's here. The stuff Astralite and I did is just the first 8 seconds of the thing, the rest of it is… things I personally want to get good at lmao. Think I should get the trivia stuff out of the way first:
-
The whole thing was done in Blender, using two different versions: 2.79 for the actual animation, 4.4 for the final composite with the rays and stuff.
The entire thing could have been done in one version or the other, but I used 2.79 because I thought Astra would want to do something with it, whereas 4.4 is really to make compositing go faster because it's a version where the compositor uses my GPU.
-
The video wall map was made by Astralite. It was originally a full-size SVG. He also made the concept… and the music to go with it, which is NOT the one shown in the video. Hoping it will be heard in future videos though.
-
The animation was generated using a Python script. It's worth noting that the actual script is maybe about 10% of the file—that being the configuration section at the top, and the thing-doer at the bottom—the middle majority is just the PNG parser library pasted in for convenience.
This is probably the first time I had actually used Blender's Python capability for anything "hands-on". Previously I had tried to make a few extensions with it.
The script originally used the Pillow library, which in regular Python is one of the major libraries used to manipulate pictures. I knew of this sick trick used to install libraries using Blender Python, and it actually worked on my end. But it's a bit too impractical to expect people to install things using unconventional methods. And besides, the WHOLE kitchen sink isn't needed—just the one that does the job, in this case parsing a PNG image. Specifically, Astra's video wall map squished down to a 54×29 pixel art image consisting of only black and white (where the individual videos will be placed).
-
64 videos were used in the 927 screens. You may have noticed a LOT of duplicates—it's because the videos are assigned randomly, independent of each other. I could have figured out how to ensure the recurrent videos don't appear like literally right next to each other, but that would have taken a bunch more math and it doesn't really matter anyway.
Every one of those videos are 480×360 normalized to 60fps, because that's the frame rate the intro was originally rendered in.
-
Rendering the raw animation took two hours in total, and a lot of memory. Most of the time and memory spent on loading all the video files, I find. If a lot more videos were used I would have probably run out of them, and this is in a 16 GB machine. Didn't even enable swap.
Next up, the process…

Astralite approached me for a collab on
a project at the end of February 2025, for
a new AVID visual.
We exchanged
a couple
of concepts to get
an idea of what exactly we'll be making.

This was one of the first mockups, the SVG just imported
into Blender.
The Build modifier would work here, but
then the images would presumably still need to be
assigned manually—a Sisyphean task if there was
one, considering we'd need to do it for 900+ of these
things.

But I had other plans. This sounds like something that
could be automated. Now having played with geonodes for a bit
I doubt it can be used. So I turned to what would work for sure—especially
for the version Astra was using—Python
scripting.
A short while later I managed to
instantiate the AVID logo
from the map downscaled to pixel art.

The next part was making the parts of the AVID logo map
appear one-by-one, with a video for each. A unique texture
was generated for each video and then assigned randomly.
The problem was…
it ate all my RAM,
probably because the test videos I used were all in HD. Had to
kill Blender a couple of times to prevent my computer from
freezing.

Then it was time to time the things, which of course needs math. I had a target time (5 seconds or so at this point), so I fiddled around in Desmos to get the right curve to place keyframes on. Also provisioned for the "switch on" animation, which is a separate video file also made with Blender.
Later on I tried to control which videos show up first by prioritizing the center coordinate, then the pixels surrounding it, and then the rest of the coordinates.

Once the basic animation was up and running, it was time to prepare how I might composite the thing for the final video. When all that's done, it was all just a matter of refinement.
Astralite did send me a couple of logos, but I found a lot of them too. For the ones I wanted to include, I referenced the AVID wiki header image, as well as the significant findings like TAT Communications Company, Nebraska ETV Network, and ITT Corporation.
The finishing touches were done at the end of March (there probably shouldn't be a reason for me to be taking that long). Two master versions are made, one for just "AVID" (the one that would eventually be used) and the other for "The AVID Channel". Not only are they silent, but they also end early—it's just to save a bit of file size since the logo is just a still frame and a fade out at the end. I also made sure they fit within a 4:3 safe area as well, in case it would be cropped as what I had to do with The AVID Channel ident that shows up at the very beginning.

WPIX-TV (11 Alive) - 1982 logo remake
Originally, I thought I was gonna have to figure out
how to make a flat border (NOT a bevel!) around
the logo's curves using geometry nodes.
(P.S.: please show me how, anyway)

Then I noticed this in another capture of the logo that doesn't look so shitty (from a WPIX show teaser, for some reason they opted to tint the entire thing in yellow for that purpose).
Basically, the outlines aren't actually a neat border around, it's just "drawn" using a 50-ish degree "calligraphy pen".

Which is good news for me, because then that means I can just extrude the edges and apply the trick of applying a material with a color ramp mapped to its generated texture coordinates.
This is pretty much the same trick I've used for my Metromedia Producers remake.

For the light "wipe" which reveals the more detailed logo, I originally just went with the logo, extruded up, and then using another materials trick. Unfortunately, because the transparency means the outlines of the logo are visible within the wipe, which doesn't happen in the original.

So then I just used the curve, filled in, instanced a few hundred times on top of itself, used a solid material with a gradient depending on its position, and then composited on top of the footage.

On second thought, maybe I should have used the first method with the materials of the second method. Oh well.

My fancy ass thought it would be a good idea to animate the text using geometry nodes instead of animating the letters one by one. (Well... turns out it is.) Needed a bit of help shearing the letters... turns out offsetting the shape like that is only supported on meshes. At least on this version of Blender. (4.3)
The text trail and the appearing letters are done in the same geometry node setup, with the appearing letters being a simple check that the text trail's Z offset is at the final position.
The most important part I learned here is, to collect all the geometry produced by every iteration of the repeat zone I needed to join the output with the input of said zone. In other words I needed to make it accumulate, because by default every iteration is just gonna replace the previous.

Before you point it out, yes I've noticed:
- The text trail at the bottom should move with the camera. Not a hard fix, that one, even with the camera still pretending that it's 2D
- The timing of the shine effect at the end could be a bit more accurate
- The final "3D" logo could be aligned better (particularly the lower left part of the "11")
- The original has a tiny part of the "11" drawn before it's supposed to, not even block's remake is anal about that so I've likewise "fixed" it
Embassy Home Ent. - 1986 logo remake
Some things of note:
-
The outlined star flying in at 0:06 isn't actually flying in 3D space—it's actually parented to the camera. It “flies in” by scaling instead of actually moving towards the camera. As to how it's made to look like it's flying in behind the giant E, it's a mask that's enabled at the right moment. I really could not replicate in actual 3D how the fly-in looks in the original logo.
-
The gold texture used for the giant E stays in place, which is good because it can be reconstructed pretty well:
1. extracted and cut manually from the video frames 2. first round of AI inpainting (filling gaps) 3. second round of AI inpainting (reducing seams) 4. noise added… 5. …for a denoiser to hide the remaining seams 6. resize the image back to 4:3… 7. …for AI outpainting to then extend to 16:9 so that it still looks "right"