← Timeline
2021 · Web3 & real-time platforms

Generative NFT trees that grow

For a Web3 game I made trees that grow on-chain. Each NFT gets a 256-bit genome from Chainlink VRF, and my decoder turns it into the tree’s character: branch length and thickness, angles, sagging and curvature, the pull of gravity, crown density. Then a recursive algorithm draws the tree into a voxel grid, block by block in the style of Minecraft, with 3D simplex noise for the shape of the crown and the bends of the branches. Every growth step, up to ten of them, is a transaction, and every branch has its own seed, so the tree grows rather than being redrawn: a twig from the previous step becomes a branch and splits further. The world around it also gets into the picture: the crown thickens or thins with the token price between steps (from a Chainlink price feed), the colour of the bark comes from the owner’s address, the sky changes over an hourly day–night cycle, lamps glow in the leaves, and owners who had just voted for the project got golden or pink crowns. At first the pictures came from a voxel ray tracer that a studio introduced by my partners offered: I sent it the grid over an agreed protocol, it queued the job, and I polled for the result. But it only drew cubes, it was paid, and I depended on someone else’s servers. So I switched to Blender: each model is exported to GLTF and rendered on the server in Blender Cycles by a Python script, and now I could add any objects, ground plates, cameras and lights, on a mature open-source engine. A metadata service serves the picture of every growth step. About a month of work in October 2021, on Polygon and BNB Chain. The renders below I made again in 2026 from the original code, with Blender 2.93 and the original scene.

TypeScriptNode.jsBlenderChainlink

Video

Video

Pictures

Twelve random genomes, each at its last growth step.