About the project.
K-d Trees (https://en.wikipedia.org/wiki/K-d_trees) are a well-known trope of the motion design field at this point, and I've used them in my own work on several occasions. They're visually quite interesting - we can see small shapes contained within larger shapes. They have an internal macro-micro relationship which I think tickles the brains of people into mathematics and visual complexity.
In thinking about k-d trees, I questioned what they might look like if I examined their hierarchical structure and created some algorithm to "unfold" them. I imagined that each unique structure would reveal, in itself, a unique, beautiful, and surprising form when examined this way. My initial thought was that it potentially could look like an abstracted butterfly, since initially it would split into two wings, which would then successively unfold. I was quite pleased with that thought and began the development process.
My initial tests, however, revealed that this butterfly metaphor was simply not meant to be, unless a very specific set of rules were followed. And this specific set of rules offered little in the way of range, insofar as a generative project goes. So, I decided to let the algorithm play out in a way that maximized variety, rather than in a way that enforced my initial thinking. I found the results visually complex, dynamic, and full of variety. I even extended my initial conditions to allow for further variation.
At it’s heart, Unfoldrian is a series of works about transformation. While there is quite a bit of technical wizardry in the pieces, the algorithm is simply a means to an end. That end is to investigate a hidden truth, an other self, that exists behind the initial forms.
How many pieces in the series?
This series will be capped at 88 pieces. I view this as a generative art series, not a collectibles project. There is no roadmap. There are no collector rewards. There is art.
As part of the N Project, priority mints will be given to N holders. After a grace period, all unsold pieces will be open to the general public for collecting.
Examples
Here are examples of the outputs of this series.
Project Format.
This project is delivered as a 0:20 looping mp4 movie file, at 1080x1080 pixels.
Process.
This project is authored in Houdini, a high-level 3D DCC that is widely used in feature film and commercial vfx. It is a mixture of nodes and custom code, all chained together into a large procedural network. Each piece is derived through entering a sequence of random seed values into a controller object, which, in turn, propagates through the network to arrive at a final product.
This project is NOT minted on-chain. While it is a generative project, it requires high-level rendering software and a bit of human interaction/monitoring to create each piece.
The Algorithm.
The algorithm works as follows.
Choose initial starting condition among a collection of predefined conditions. These initial conditions define a first generation of box partitioning, as well as initial hinges and hinge direction.
Perform N number of iterative slices of the pieces, defined thusly:
For each unique box...
Choose a random XYZ axis and split the box in half along that axis. This results in two boxes.
Place potential hinge points in the center of every edge shared by these two new boxes.
Use an algorithm to decide which of these potential hinge points become the final hinge point of the new box-box pair. After hinge point is chosen, discard all extraneous hinge points.
Run an algorithm to determine the correct hinge alignment for each box. Correct hinge alignment is defined as: The boxes should rotate along their shared edge (like a door), and the box-box pair may not penetrate each other when rotated between 0-90 degrees along that axis.
Generate texture coordinates for material and color assignments for each box in the final structure, and assign materials. Materials and colors are predefined in collections and chosen for their visual beauty and variation. There are 10 material collections used in this system. Each collection has between 3-5 materials/colors, which are then randomly weighted to control distribution in the system.
Generate a joint hierarchy from the hinge points and bind the 3D box geometry pieces to this joint hierarchy.
Animate the system. The animation system works as follows:
A simple grouping system defines pieces as being either static or moveable, with respect to their parent pieces. This is controlled with a randomized parameter.
Each level of the joint hierarchy is labeled as level 0-N. Easing functions (I use a custom exponential s-curve) define a normalized easing weight that modulates a local transformation matrix for each piece. Combined with a time parameter that uses the level variable as a function of start time, the pieces then move in a hierarchical way. The start times of each piece are also slightly randomized to create animation diversity and provide more visual interest.
The box geometry is then driven by the lightweight joint animation and rendered to video.
The N’s
There are many random seeds in the Houdini file that control the generation of each piece, but I only expose 8 of them to the controller. Together, these 8 work together to create the range of forms, colors, and animations of the project. The N's work as follows:
N-0
This is the initial split seed, randomized to values 0-4. I have manually created initial splits and hinge orientations that greatly influence the final forms of the pieces. The N-0 is immediately identifiable in each piece by noticing the first generation of splitting. The various N-0's are named:
Evil Twins
Hospital
Parquet
Triumvirate
Egalitarian
N-1
This seed is randomized between 0-3, and it controls which cutting axes will be used in the system.
N-2
This seed is randomized between 5-9, and it controls how many levels of iterative splits will be performed by the system. It is further weighted by the N-0 and N-1 values, to ensure the system does not become overly complex.
N-3
This is a unique random seed per cutting iteration to create variation, should N-0 and N-1 evaluate to the same number. Internally, it is used to choose which XYZ axis the cutter should use.
N-4
This seed is randomized between 0-7, and it controls which material palette is chosen for the piece.
N-5
This is a unique random seed that controls the material distribution within the N-3 chosen palette.
N-6
This seed is randomized between 1 and 8 and controls how many pieces in the system are locally moveable. 1/N pieces on the system are defined as freely moveable. Smaller numbers lead to a more chaotic system, and larger numbers make their N-0 roots more apparent.
N-7
This is seed is randomized between 0-5 and controls which background colors are chosen for the video.
Material Palette.
There are a total of 10 material/color variations for this series. Each material palette receives a random dominant color/material and background from its palette.
Rarities and traits.
It is not my desire to enforce any specific rarities into this series. But, as rarities and traits may naturally occur and be desired by collectors, I have identified and codified several key elements of the pieces: Initial Condition, Material Theme, Background Color, Number of Pieces, and Animation Freedom.
It should be noted that I have, in fact, attempted to reduce rarities by enforcing the following logic: As there are 15 N numbers that can control one trait (Material theme, for example), I have chosen to have less than 15 unique variations of that trait (In this case, 10). In this way, there is not a 1:1 mapping of rare N numbers (such as 0 or 14) to rare traits. In fact, I have chosen to over-represent rare N numbers in my remapping in an attempt to “balance the scales.” The goal is to have a well-balanced collection that attempts to equally represent the variations that may occur.
How to Collect.
The minting period for this project is now over. Items for sale on the secondary market can be purchased at the official project page on OpenSea.
Acknowledgements.
Firstly, while they were not a direct influence on this project, some people may point to similarities with a small series of works by Murat Pak and Frederik Vanhoutte (with the latter being the originator of the technique). Both of these artists have created incredible work using a slicing, rotating, and shifting method (looking like complex Rubik's cubes), and they are works that I was familiar with and highly appreciative of before embarking on this series. My work is an entirely different algorithm, as should be evident in the forms it creates, but it would be impossible for me to say I was not aware of their work, so I wanted to acknowledge them here. I have also had conversations with both artists about this series, and both have assured me this does not infringe on their work.
I'd like to also acknowledge Tyler Hobbs, creator of the Fidenza generative series (which is now world famous). He was thoughtful enough to document his work, and I looked quite a bit at how he thought about randomization and variety and used some of his methods in this series. Primarily, I am borrowing his system of distributing colors palettes in a generative work. My initial thought about colors, before reading his publication, was to be curatorial, but purely random. I would pre-select 300 images with color palettes I liked, and use a custom coded image-to-palette generator to convert them into color schemes, to be chosen at random. But, ultimately, this would make the series feel less cohesive, so it was discarded. Tyler Hobbs's method uses N number of predefined palettes, but creates variation within those palettes with weighted randomization functions. I felt like this was a great way to provide both variety and cohesiveness to the series and chose to use this method for this collection.