Eelh's - Sketchbook

Nodevember 2025

No materials. Lighting is done using Sky Texture. No compositing.

Day 1 - Pumpkin

I saw the prompts for Nodevember and wasn’t initially going to participate, but the first prompt just got me curious how would I approach making pumpkin procedurally. I sat a time limit and was unpleasantly surprised how little I can achieve in this time frame.
But watching Erindale’s timelapses and CGMatter streams got me inspired to keep going.

Day 2 - Fire

I tried a random walk that’s converging at top. Originaly there was only 1 plane, but papercraft-like result of khellstr.fi inspired me to make it layered.

Day 3 - Ice

Another random walk. Inspired by Ice age (2002) opening scene.

Day 4 - Bouquet

Familiarizing myself with Higgsas geometry nodes groups. Used Phyllotaxis Sphere and Points Relax on Surface.

Day 5 - Feather

Spent too much time on this one. Constricting myself to make all geometry inside GN wasn’t the best idea. I’ll try to remake it (at some point) using splines for input.


I don't think I'll be doing all the prompts, but so far I enjoyed these non-committal exercises.

nodevember #nodevember2025

5 Likes

No materials. Lighting is done using Sky Texture. No compositing.

Day 6 - Rivetted

Heavy use of Curve Offset and Loft Splines from Higgsas geometry nodes groups.

Day 7 - Precious

Inspired by CGMatter and Cartesian Caramel streams I tried Blender physics build. Unfortunately, I couldn’t make concave colliders to work. So I switched to plan B.

But then give it another try and got it working using pinned positions and forces.
The contour is done using GN on mesh geometry.

Day 8 - Bejewelled

I used head model from Blender’s Human Base Meshes to align geometry and gems from JewelCraft addon, Align Curve Normal and Curve Offset from Higgsas geometry nodes groups.

Day 9 - Soft

Second try using Blender physics build simulating soft bodies.
For fluffy hair I used Interpolate Hair Curves and Frizz Hair Curves nodes.

Day 10 - Zip

Controlled with Empty.
Bending curve is done using Accumulate Field node.
Simulation zone is used for easing rotation.


I'd like to add animations to all prompts but haven’t had time to do it.

01_pumpkin

02_fire

07_precious_v2-30fps

07_precious

10_zip

nodevember #nodevember2025

9 Likes

No materials. Lighting is done using Sky Texture. No compositing.

Day 11 - Hive

Hexagons distributed on points grid, Subdivision for randomness, Manifold Boolean (pretty fast!) and Set Position based on distance to edge.

Day 12 - Monument

Initially wanted to make Great Wall of China, but quickly realized it’s not a one day build.
El Castillo was a pleasure to make. Such a form is just asking to be made procedurally.
Used Decimate Curve from higgsas geometry nodes groups for temple curve profile.

Day 13 - Cabin

Used tile generator I made some time ago and higgsas geometry nodes groups (Edge Offset, Inset Faces).
Realized I can use volume node without the need of setting material to it.

Day 14 - Camp

The biggest failure so far. I got too distracted tinkering with mountains and haven’t had time to implement even a half-decent tent generator.

Day 15 - Trap

Played with XPBD solver. There are two simulations that are switched near guillotine one with sphere and the other one with halves.

Day 16 - Drone

Forgot to add blades :smile:
I really want to finish animation for this one (with physics solver).

Day 17 - Helmet

Haven’t finished it in one day and at the end was so tired that was just hardcoding indices.
Loft Splines, Edge Offset, 3D Curve Fill from higgsas geometry nodes groups.

Day 18 - Rocket

Translated an example from one of my favorite books The Nature of Code (only the fittest is displayed).
It’s so captivating to play with parameters.
I reproduced the cool rocket from Blender download experimental page.
For even thickness of the outline I used z-Curve-Sweeper by zeroskilz.

Day 19 - Tool

I’m very glad of how this one turned out.
There are 3 types of nodes: with geometry input/output, join geometry and “math”.
It’s funny that generated nodes are much tidier :laughing:
z-Curve-Sweeper by zeroskilz for outline.

Day 20 - Mask

I found this mask a long time ago and wanted to make similar mask for Halloween.
SDF Grid > Smooth Geometry > Mesh Boolean


At some point I just could not call the projects finished and they started to pile up. But I still have fun playing with nodes.

18_rocket

19_tool_v5

6 Likes

Day 21 - Grimoire

I used Curve Circle Arc Tangent from Higgsas geometry nodes for snake and SDF Grid to carve on the book cover.

Day 22 - Enchanting

I doubt I’ll finish this one as it turned out even harder than I anticipated.

Day 23 - Time

I conveniently made two time related setups when working on Precious prompt so I decided to dedicate this day to working on unfinished projects.

Day 24 - Warp

I wasn’t successful in recreating this cool effect by Stevan Dedovic. But combining it with some images I saw on Pinterest turned out okay-ish.

Day 25 - Connected

Tried to recreate Tomás Saraceno sculpture.

Day 26 - Fireworks

Tried to recreate this beautiful firework.


Animations:

https://imgur.com/a/Jt4hqjV

https://imgur.com/a/MB7fRBX

4 Likes

Day 27 - Recursive

Inspired by Janaina Mello Landini art. Unfortunately, I had time to only implement branching.

Day 28 - Ripple

Reproduced The Coding Train exercise.

Day 29 - Fractured

My husband compiled me Jolt physics branch :heart_eyes: I’ve been playing animating “ice”.

Day 30 - Tessellate

I’ve stumbled upon this cool post. It was so inspiring that I decided to reproduce Penrose P2 and P3 tiling types.


It was a great challenge! :+1:

I hope I’ll make animations for all of the prompts…

3 Likes

Learning from artists

The goal is to recreate an inspiring art in geometry nodes and hopefully to learn the rules behind it.

Today’s inspiration is artwork by talented Laurent Malys.

  1. Distribute points
  2. Instantiate circles on points
  3. Instantiate pentagons on circles.
    Oh, wait, this is not a pentagon! This irregular hexagon made me stuck for a while. At the end I made a generator that given 2 angles and 4 radii produces desired shape.
  4. Scale based on Y position
  5. Realize instances on edges and delete part of the shape
    https://youtube.com/shorts/0u0vNlDANAg

By changing parameters I can recreate their other artwork.
https://youtube.com/shorts/BP3KLEFGagE

Thoughts:

  1. Pattern changes depending on overlapping amount which produces interesting effect
  2. Don’t wrap positions if planning on using motion blur

And this is my take.
https://youtube.com/shorts/n5u4jWDNi8o

5 Likes

I was inspired by The Coding Train Wave Function Collapse coding challenge to start working on my cladding project.

cladding

Although, I ended up not using WFC method I still wanted to try to implement it.

Finally I got it working!

Original pattern:
Flowers

Image generation:
flowers_tileable

  1. Color is stored as color index
  2. 3x3 pattern tile stored as matrix of color indices
  3. Unique patterns are found using Split to Instances grouped by pattern matrix converted to hash
  4. Neighbour’s patterns are stored as nested instances
  5. Core generation function consists of multiple nested repeat zones that can revert contradiction state to the state of last pattern selection for undefined pixel

It is very slow, especially when generating tileable image. But isn’t it satisfying to watch?!

Original pattern:
Water

Image generation:
water

This one uses 2x2 pattern tiles rotated and reflected.
water_rr

After rendering these progression animations it became clear where performance improvements could be made. Anyway, I barely scratch the surface of what can be done using this method.

Other useful resources:
Great explanation by Stephen Sherratt
WaveFunctionCollapse repository by Maxim Gumin with explanation and pattern samples

5 Likes

Hey ! This is amazing ! I looked into WFC as a way to generate 3D architecture but completely failed :smiley: It looks like you’re on a good path if you want to try that !
Anyway, this sketchbook is a goldmine for inspiration !

1 Like

@sozap Thank you! I find your work inspiring :sparkles:


To test if the core function works in 3D I've written connection rules manually and imported them as CSV. But I made a few mistakes in data and to avoid this in the future neighbor tiles are now calculated automatically and stored as attributes on proxies.

I used Modular Scifi Pipes by TooManyDemons as 1x1 patterns:

Proxies have manually stored attributes for pattern type and rotation:

Generated 10x20x4 grid with additional rules preventing pipes from abruptly stopping at boundaries:

7 Likes

Wow ! This is insanely cool ! Well done !!
Would be amazing to generate environments with it !!

1 Like

Learning from artists

The goal is to recreate an inspiring art in geometry nodes and hopefully to learn the rules behind it.

Inspired by 3D_Singh work.

The image looked simple enough for a quick exercise, but in the end it took way more time than I expected.

At first glance it has circles distributed on spiral. → But I wasn’t able to produce the right spiral.
After watching the intro I noticed that each outer circle affected all inner circles. → Tried manipulating transformations with matrices, but wasn’t successful.
Circles travel along their outer circle → Sampling curve factor and aligning rotation inside Repeat Zone turned out to be almost identical to 3D_Singh’s showcase.

0009

But I wasn’t satisfied. It should be doable with matrices… And after lots of trial and error this elegant solution emerged:

Thoughts:

  1. If it quacks like a duck, then it probably is a duck :slightly_smiling_face:
  2. Seemingly easy task might take forever to finish

My take:

0010+

8 Likes

Learning from artists

Today’s inspiration is a work by Ilir Beqiri.

  1. Add points and position them on a circle (cos, sin).
    beads0_1

  2. Offset points unevenly (Float Curve)
    beads0_2

  3. Add counter-rotation
    beads1-1

Same setup:
beads2

Thoughts:

  1. Most of the effect comes from counter-rotation.
  2. Even a slight change in Float Curve makes a huge difference (see below).

My take:
beads3_2

beads3_3

6 Likes

More experiments with WFC.




There’s this tileset in Gumin’s repository that I wanted to try out.

It required some tweaking in what’s considered a neighbor (previously I used overlapping method, but adjacent/simple tiled is more suited for this one).
Somehow I ended up rewriting the whole thing from data structure (nested instances replaced with points) to core function.
board



One of the links in Gumin’s repository leads to a site that’s no longer available. I’m so glad I decided to check it out on Internet Archive! Not only did I discover Wang tiles, but I also found great sources for inspiration: BorisTheBrave and The Buckblog.
I used layout to generate image and then replaced it with tileset.

Here’s an example of adding constraints to image generation.
Without constraints:

Remove tile 0 (thick wall), close boundary:

It was fun playing around with different tilesets.




I have a love-hate relationship with this unfinished project.

I have an idea of how the result should look like and generation is 80% there, but the other 20% :confused:
Rebaking with different seeds over and over and over again…
begin_again
Even though I ended up spending too much time on it, I think it was still worth it.
Assets made by Kenney.



Some WFC videos mentioned hex grid… on sphere.
I had to give it a try!
Turns out you can’t make a sphere with hexagons only… and hexagons are not regular… and tiles need to be tapered.
Assets made by Kenney.





Final thoughts:
The algorithm itself is pretty straightforward. The hardest part is providing sufficient tiles and defining neighbor rules. And the most time consuming is fine tuning tile weights if you want specific outcome.

5 Likes

Learning from artists

Today’s inspiration comes from Jack4.

First things that come to mind are tutorial by Ilir Beqiri and Higgsas geometry nodes group. As I recall both methods operate on geometry, but in this case you can use instances.

  1. Start with an instance that is 1x1m face with origin at bottom left corner.

  2. Instantiate this face on grid’s vertices (ignoring topmost and rightmost vertices)

    >

  3. Duplicate instances 4 times, translate and scale based on offset and duplicate index :owl:

For 2x2 grid:

Distributed instance is shown 0.1 of it’s original size for better clarity.

Translation (offset 0.5 and 1):

Scale (offset 0.5 and 1):

I don’t know a way of manipulating instances vertices/pixels in Cycles without realizing geometry. But it can be done in Eevee.
recursive_subdivision-eevee.blend (1.5 MB)

eevee

This will definitely come in handy in future projects.

6 Likes

Learning from artists

Inspiration comes from Etienne Jacob’s artwork.

Original algorithm.

GN implementation:

  1. Points are distributed on base mesh, triangulated using Delaunay triangulation trick and relaxed to make triangles more uniform. (Heart and relax groups from Higgsas geometry nodes)

  2. Maze is made from dual mesh using Kruskal’s algorithm (for more dead-ends)

  3. Graph connects maze faces

  4. Particles path is produced from subdivided dual mesh (by removing points close to walls)

Result:

heart_maze

heart_wanderers

My take:

I modified this technique a bit and combined with the one inspired by Ilir Beqiri. The result demonstrates hand-on-wall maze-solving algorithm.
Font used - Titan One.

7 Likes