This site uses cookies – More Information.
Navigation Instructions:
arrow keys to change view
‘g’ regrows geometry
‘i’ saves image
‘o’ saves .obj
PRIMITIVES
Primitives is a project about growth through a novel geometric block. This block is a simple shape that can repeat and scale in specific ways that are never random, but tightly controlled through geometric logics. While its appearance as an engraving seems two dimensional, by rotating the Primitives its three-dimensional form is revealed. Download the object file and explore outputting it as a 3D print or any other fabrication method.
Two sources from the worlds of science and art inspired the project’s outcome: Albrecht Dürer’s Engravings and phenomena of Quasicrystals. Together, they create an anachronistic project about drawing infinity through a radical modularity.
![Melencolia_Swatches](https://sketchbook.arandalasch.com/wp-content/uploads/2022/10/Melencolia_Swatches-scaled.jpg 2220w, https://sketchbook.arandalasch.com/wp-content/uploads/2022/10/Melencolia_Swatches-1332x1536.jpg 1332w, https://sketchbook.arandalasch.com/wp-content/uploads/2022/10/Melencolia_Swatches-1776x2048.jpg 1776w, https://sketchbook.arandalasch.com/wp-content/uploads/2022/10/Melencolia_Swatches-121x140.jpg 121w, https://sketchbook.arandalasch.com/wp-content/uploads/2022/10/Melencolia_Swatches-69x80.jpg 69w, https://sketchbook.arandalasch.com/wp-content/uploads/2022/10/Melencolia_Swatches-347x400.jpg 347w, https://sketchbook.arandalasch.com/wp-content/uploads/2022/10/Melencolia_Swatches-520x600.jpg 520w, https://sketchbook.arandalasch.com/wp-content/uploads/2022/10/Melencolia_Swatches-694x800.jpg 694w, https://sketchbook.arandalasch.com/wp-content/uploads/2022/10/Melencolia_Swatches-1041x1200.jpg 1041w, https://sketchbook.arandalasch.com/wp-content/uploads/2022/10/Melencolia_Swatches-1387x1600.jpg 1387w, https://sketchbook.arandalasch.com/wp-content/uploads/2022/10/Melencolia_Swatches-2081x2400.jpg 2081w)
DURER'S ENGRAVINGS
Albrecht Dürer and his masterpiece Melencholia I (1514) inspired us to dive deep into the process of engraving reinterpreted through the medium of code. Eight Durer hatches were developed for #Primitives. Durer not only perfected a new medium but invented an early imaging technology. By scratching metal away from a plate, an inversion of conventional drawing, engraving allowed a work of art to be reproduced and disseminated widely. For the blockchain, a new kind of dissemination, we developed a Durer 3-bit shader (2^3 = 8 values); the anachronism of the engravers trade translated into pure 1’s and 0’s.
![Quasicrystal_1](https://sketchbook.arandalasch.com/wp-content/uploads/2022/10/Quasicrystal_1.png 1315w, https://sketchbook.arandalasch.com/wp-content/uploads/2022/10/Quasicrystal_1-133x140.png 133w, https://sketchbook.arandalasch.com/wp-content/uploads/2022/10/Quasicrystal_1-76x80.png 76w, https://sketchbook.arandalasch.com/wp-content/uploads/2022/10/Quasicrystal_1-380x400.png 380w, https://sketchbook.arandalasch.com/wp-content/uploads/2022/10/Quasicrystal_1-570x600.png 570w, https://sketchbook.arandalasch.com/wp-content/uploads/2022/10/Quasicrystal_1-760x800.png 760w, https://sketchbook.arandalasch.com/wp-content/uploads/2022/10/Quasicrystal_1-1140x1200.png 1140w)
QUASICRYSTALS
Primitives is based on the science of quasicrystals. Unlike a regular crystal, whose molecular pattern is periodic (or repetitive in all directions), the distinctive quality of a quasicrystal is that its structural pattern never repeats the same way twice. It is ordered but aperiodic. Endless and uneven, quasicrystals can be described by the precise arrangement of a single modular part. As these small units aggregate together they form larger figures that themselves combine into ever larger movements, always a little bit different from any other. In this sense, quasicrystalline patterns have an infinite capacity to create and carry information.
![520_NFT Primitives – Frame 1](https://sketchbook.arandalasch.com/wp-content/uploads/2022/02/520_NFT-Primitives-Frame-1.jpg 8569w, https://sketchbook.arandalasch.com/wp-content/uploads/2022/02/520_NFT-Primitives-Frame-1-170x113.jpg 170w, https://sketchbook.arandalasch.com/wp-content/uploads/2022/02/520_NFT-Primitives-Frame-1-80x53.jpg 80w, https://sketchbook.arandalasch.com/wp-content/uploads/2022/02/520_NFT-Primitives-Frame-1-400x267.jpg 400w, https://sketchbook.arandalasch.com/wp-content/uploads/2022/02/520_NFT-Primitives-Frame-1-600x400.jpg 600w, https://sketchbook.arandalasch.com/wp-content/uploads/2022/02/520_NFT-Primitives-Frame-1-800x534.jpg 800w, https://sketchbook.arandalasch.com/wp-content/uploads/2022/02/520_NFT-Primitives-Frame-1-1200x801.jpg 1200w)
FEATURE SET
The feature set probes the unique properties of the Primitives crystalline growth, their fractal depth and lattices. We also looked closely at the process of engraving to inform the variability in representation, from different inked backgrounds to paper colors. There are even incomplete and fragmented drawings which were inspired from Durer’s sketches. Overall the feature set is rigorously designed to balance variety and uniqueness with conceptual aims.
![Primtives_Umap_grid_01](https://sketchbook.arandalasch.com/wp-content/uploads/2022/02/Primtives_Umap_grid_01.png 1719w, https://sketchbook.arandalasch.com/wp-content/uploads/2022/02/Primtives_Umap_grid_01-150x150.png 150w, https://sketchbook.arandalasch.com/wp-content/uploads/2022/02/Primtives_Umap_grid_01-1533x1536.png 1533w, https://sketchbook.arandalasch.com/wp-content/uploads/2022/02/Primtives_Umap_grid_01-140x140.png 140w, https://sketchbook.arandalasch.com/wp-content/uploads/2022/02/Primtives_Umap_grid_01-80x80.png 80w, https://sketchbook.arandalasch.com/wp-content/uploads/2022/02/Primtives_Umap_grid_01-400x400.png 400w, https://sketchbook.arandalasch.com/wp-content/uploads/2022/02/Primtives_Umap_grid_01-600x600.png 600w, https://sketchbook.arandalasch.com/wp-content/uploads/2022/02/Primtives_Umap_grid_01-800x800.png 800w, https://sketchbook.arandalasch.com/wp-content/uploads/2022/02/Primtives_Umap_grid_01-1198x1200.png 1198w, https://sketchbook.arandalasch.com/wp-content/uploads/2022/02/Primtives_Umap_grid_01-1597x1600.png 1597w)
400 Primitives minted outputs in PixPlot, a convolutional neural network and Uniform Manifold Approximation and Projection (UMAP) in order to cluster visually similar images near one another.
OUTPUTS
Primitives is an exploration of endlessness. The infinite is immanent in every block or, in terms of contemporary scientific thinking, the entire universe is contained within every piece of it. Here are some ways we’ve imagined outputting Primitives in the physical world.
CLUSTER ANALYSIS
These clusters are an intuitive, highly subjective response to the mint outputs. They are clustered by unexpected character, not necessarily rarity, although sometimes that’s part of it.
![The Dark Side](https://sketchbook.arandalasch.com/wp-content/uploads/2022/02/The-Dark-Side.png 2414w, https://sketchbook.arandalasch.com/wp-content/uploads/2022/02/The-Dark-Side-1536x1121.png 1536w, https://sketchbook.arandalasch.com/wp-content/uploads/2022/02/The-Dark-Side-2048x1495.png 2048w, https://sketchbook.arandalasch.com/wp-content/uploads/2022/02/The-Dark-Side-170x124.png 170w, https://sketchbook.arandalasch.com/wp-content/uploads/2022/02/The-Dark-Side-80x58.png 80w, https://sketchbook.arandalasch.com/wp-content/uploads/2022/02/The-Dark-Side-400x292.png 400w, https://sketchbook.arandalasch.com/wp-content/uploads/2022/02/The-Dark-Side-600x438.png 600w, https://sketchbook.arandalasch.com/wp-content/uploads/2022/02/The-Dark-Side-800x584.png 800w, https://sketchbook.arandalasch.com/wp-content/uploads/2022/02/The-Dark-Side-1200x876.png 1200w, https://sketchbook.arandalasch.com/wp-content/uploads/2022/02/The-Dark-Side-1600x1168.png 1600w, https://sketchbook.arandalasch.com/wp-content/uploads/2022/02/The-Dark-Side-2400x1752.png 2400w)
THE DARK SIDE
This cluster is unexpectedly dark, with the foreground Primitives in shadow against the rare dark hatch background. There is something brooding about these moonlit arrangements.
![The Incompletes](https://sketchbook.arandalasch.com/wp-content/uploads/2022/02/The-Incompletes.png 2382w, https://sketchbook.arandalasch.com/wp-content/uploads/2022/02/The-Incompletes-1536x1138.png 1536w, https://sketchbook.arandalasch.com/wp-content/uploads/2022/02/The-Incompletes-2048x1518.png 2048w, https://sketchbook.arandalasch.com/wp-content/uploads/2022/02/The-Incompletes-170x126.png 170w, https://sketchbook.arandalasch.com/wp-content/uploads/2022/02/The-Incompletes-80x59.png 80w, https://sketchbook.arandalasch.com/wp-content/uploads/2022/02/The-Incompletes-400x296.png 400w, https://sketchbook.arandalasch.com/wp-content/uploads/2022/02/The-Incompletes-600x445.png 600w, https://sketchbook.arandalasch.com/wp-content/uploads/2022/02/The-Incompletes-800x593.png 800w, https://sketchbook.arandalasch.com/wp-content/uploads/2022/02/The-Incompletes-1200x889.png 1200w, https://sketchbook.arandalasch.com/wp-content/uploads/2022/02/The-Incompletes-1600x1186.png 1600w)
THE INCOMPLETES
These are inspired by Durer’s engraving process where part of the work is still blank. They don’t happen very often and if you spin them around you’ll see that the missing primitives are still there, sort of, but incomplete in 3D.
![SKETCH-MODE](https://sketchbook.arandalasch.com/wp-content/uploads/2022/02/SKETCH-MODE.png 1754w, https://sketchbook.arandalasch.com/wp-content/uploads/2022/02/SKETCH-MODE-1536x1143.png 1536w, https://sketchbook.arandalasch.com/wp-content/uploads/2022/02/SKETCH-MODE-170x126.png 170w, https://sketchbook.arandalasch.com/wp-content/uploads/2022/02/SKETCH-MODE-80x60.png 80w, https://sketchbook.arandalasch.com/wp-content/uploads/2022/02/SKETCH-MODE-400x298.png 400w, https://sketchbook.arandalasch.com/wp-content/uploads/2022/02/SKETCH-MODE-600x446.png 600w, https://sketchbook.arandalasch.com/wp-content/uploads/2022/02/SKETCH-MODE-800x595.png 800w, https://sketchbook.arandalasch.com/wp-content/uploads/2022/02/SKETCH-MODE-1200x893.png 1200w, https://sketchbook.arandalasch.com/wp-content/uploads/2022/02/SKETCH-MODE-1600x1190.png 1600w)
SKETCH MODE
These are also incomplete “proofs” that show sketch lines before the engraving is hatched. Primitives appear like wireframes. Because they are rare, we were surprised that the first two mints were sketches.
![THE ZOOMS](https://sketchbook.arandalasch.com/wp-content/uploads/2022/02/THE-ZOOMS.png 2369w, https://sketchbook.arandalasch.com/wp-content/uploads/2022/02/THE-ZOOMS-1536x1132.png 1536w, https://sketchbook.arandalasch.com/wp-content/uploads/2022/02/THE-ZOOMS-2048x1509.png 2048w, https://sketchbook.arandalasch.com/wp-content/uploads/2022/02/THE-ZOOMS-170x125.png 170w, https://sketchbook.arandalasch.com/wp-content/uploads/2022/02/THE-ZOOMS-80x59.png 80w, https://sketchbook.arandalasch.com/wp-content/uploads/2022/02/THE-ZOOMS-400x295.png 400w, https://sketchbook.arandalasch.com/wp-content/uploads/2022/02/THE-ZOOMS-600x442.png 600w, https://sketchbook.arandalasch.com/wp-content/uploads/2022/02/THE-ZOOMS-800x590.png 800w, https://sketchbook.arandalasch.com/wp-content/uploads/2022/02/THE-ZOOMS-1200x884.png 1200w, https://sketchbook.arandalasch.com/wp-content/uploads/2022/02/THE-ZOOMS-1600x1179.png 1600w)
The ZOOMS
A special thing about these zoomed-in token images is that while they capture a specific Primitives up close and personal, they also reveal intimate details of all the Primitives.
![SPEED DEMONS](https://sketchbook.arandalasch.com/wp-content/uploads/2022/02/SPEED-DEMONS.png 2428w, https://sketchbook.arandalasch.com/wp-content/uploads/2022/02/SPEED-DEMONS-1536x1113.png 1536w, https://sketchbook.arandalasch.com/wp-content/uploads/2022/02/SPEED-DEMONS-2048x1485.png 2048w, https://sketchbook.arandalasch.com/wp-content/uploads/2022/02/SPEED-DEMONS-170x123.png 170w, https://sketchbook.arandalasch.com/wp-content/uploads/2022/02/SPEED-DEMONS-80x58.png 80w, https://sketchbook.arandalasch.com/wp-content/uploads/2022/02/SPEED-DEMONS-400x290.png 400w, https://sketchbook.arandalasch.com/wp-content/uploads/2022/02/SPEED-DEMONS-600x435.png 600w, https://sketchbook.arandalasch.com/wp-content/uploads/2022/02/SPEED-DEMONS-800x580.png 800w, https://sketchbook.arandalasch.com/wp-content/uploads/2022/02/SPEED-DEMONS-1200x870.png 1200w, https://sketchbook.arandalasch.com/wp-content/uploads/2022/02/SPEED-DEMONS-1600x1160.png 1600w, https://sketchbook.arandalasch.com/wp-content/uploads/2022/02/SPEED-DEMONS-2400x1740.png 2400w)
SPEED DEMONS
This cluster is fast, the linear backgrounds create a strong sense of movement. While we started with Durer engravings, we somehow ended up on classic Manga.
![DEEP FRACTALS Sm](https://sketchbook.arandalasch.com/wp-content/uploads/2022/02/DEEP-FRACTALS_sm.jpg 1901w, https://sketchbook.arandalasch.com/wp-content/uploads/2022/02/DEEP-FRACTALS_sm-1536x1131.jpg 1536w, https://sketchbook.arandalasch.com/wp-content/uploads/2022/02/DEEP-FRACTALS_sm-170x125.jpg 170w, https://sketchbook.arandalasch.com/wp-content/uploads/2022/02/DEEP-FRACTALS_sm-80x59.jpg 80w, https://sketchbook.arandalasch.com/wp-content/uploads/2022/02/DEEP-FRACTALS_sm-400x295.jpg 400w, https://sketchbook.arandalasch.com/wp-content/uploads/2022/02/DEEP-FRACTALS_sm-600x442.jpg 600w, https://sketchbook.arandalasch.com/wp-content/uploads/2022/02/DEEP-FRACTALS_sm-800x589.jpg 800w, https://sketchbook.arandalasch.com/wp-content/uploads/2022/02/DEEP-FRACTALS_sm-1200x884.jpg 1200w, https://sketchbook.arandalasch.com/wp-content/uploads/2022/02/DEEP-FRACTALS_sm-1600x1178.jpg 1600w)
DEEP FRACTALS
These outputs share the feature of “Deep” fractal depth meaning they have the maximum allowable (three) fractal generations of primitives in large quantities. A mouthful but it basically means these Primitives are complex.
![GROWTH PATTERNS Sm](https://sketchbook.arandalasch.com/wp-content/uploads/2022/02/GROWTH-PATTERNS_sm.jpg 1876w, https://sketchbook.arandalasch.com/wp-content/uploads/2022/02/GROWTH-PATTERNS_sm-1536x1146.jpg 1536w, https://sketchbook.arandalasch.com/wp-content/uploads/2022/02/GROWTH-PATTERNS_sm-170x127.jpg 170w, https://sketchbook.arandalasch.com/wp-content/uploads/2022/02/GROWTH-PATTERNS_sm-80x60.jpg 80w, https://sketchbook.arandalasch.com/wp-content/uploads/2022/02/GROWTH-PATTERNS_sm-400x299.jpg 400w, https://sketchbook.arandalasch.com/wp-content/uploads/2022/02/GROWTH-PATTERNS_sm-600x448.jpg 600w, https://sketchbook.arandalasch.com/wp-content/uploads/2022/02/GROWTH-PATTERNS_sm-800x597.jpg 800w, https://sketchbook.arandalasch.com/wp-content/uploads/2022/02/GROWTH-PATTERNS_sm-1200x896.jpg 1200w, https://sketchbook.arandalasch.com/wp-content/uploads/2022/02/GROWTH-PATTERNS_sm-1600x1194.jpg 1600w)
FIGURES
The six types of growth produce recognizable figures.
document.oncontextmenu = () => false;
var cam;
//Grow class
let grw;
//lists to hold information in a "stack"
let go = [];
let gScale = 20; //starting octahedra scale
let gSize; //global for holding the size of a GO, for rem dups
//Current items
let currGo; //the current Golden Octahedra
let currFace; //the current Face to grow from
let currPoint;//the current point we are "starring" around
let currColor; //the current color
let baseColor;
//drawing vars
let steps = 0;
let stepSize = 1;
let stepStart = 0;
//target point
let targetPt; //point to grow to, on update (vector)
let randAlpha = 0.8; //likely hood of scaling from any unit during "grow" "decorate"
let currArraySize = 0; //keep track of the number of units every grow cycle
//Grid vars
let rg; //Grid Object
let gLayers = 5;
let gWidth = 5;
let gHeight = 5;
let currGPt = 0;
//fade variables
let delayCnt = 0;
let delayNum = 0;
let numPts = 6; //The number of pts in the bridge
let ptCnt = 0; //
//Lighting
let sun = new p5.Vector(0,1,1);
sun.normalize();
let img = [];
function preload() {
// Load the textures
for(let i=0; i<7; i++){
img[i] = loadImage('data/0' + (i+1) + '.jpg');
}
}
function setup() {
createCanvas(800, 800, WEBGL);
//frameRate(30);
// define initial state
var state = {
distance :
300,
rotation :
Dw.Rotation.create( {
angles_xyz:
[0, 0, 0]
}
),
};
cam = new Dw.EasyCam(this._renderer, state);
//set up grow system target pts
grw = new GrowSys(1);
//console.log("my gens = " + grw.gens);
//Create the Grid
rg = new Grid_Rhomb(gWidth, gHeight, gLayers,gScale);
//initial target point, center of grid
targetPt = rg.gPts[0][floor(gWidth/2)][floor(gHeight/2)];
//targetPt = rg.gPts[0][2][2];
//Seed, create GO by Verts
go.push(new Go3d(1,targetPt.x, targetPt.y, targetPt.z, gScale, baseColor));
currGo = go[0];
//go.push(new Go3d(2,undefined,undefined,undefined,undefined,undefined,currGo.faces[1],currGo.verts));
}
function draw() {
background (17,17,17);
// projection
var cam_dist = cam.getDistance();
var oscale = cam_dist * 0.001;
var ox = width / 2 * oscale;
var oy = height / 2 * oscale;
ortho(-ox, +ox, -oy, +oy, -10000, 10000);
cam.setPanScale(0.004 / sqrt(cam_dist));
let locX = mouseX - width / 2;
let locY = mouseY - height / 2;
//pointLight(219,188,102, 800,0,800) // Adds a directional light (color object)
//spotLight(222, 222, 222, locX, locY, 800, 0, 0, -3, Math.PI);
//directionalLight(0,0,255, 0,-1,1) // Adds a directional light (color object).
//directionalLight(200,200,200, 0,0,-1)
//pointLight(250, 250, 250, locX, locY, 50)
lightFalloff(0.003, 0.0003, 0);
pointLight(200,200,200, 0,800,0)
ambientLight(78,78,78);
//fade in
if (steps < go.length) {
delayCnt += 1;
if (delayCnt == delayNum+1) {
steps += stepSize; //how many additional objects to draw each frame refresh
delayCnt = 0;
}
}
else if (steps == go.length) { //We're done
delayCnt += 1;
delayCnt = delayNum;
//grw.decorate();
}
//Draw each go
for (let i=stepStart; i<steps; i++) {
go[i].drawGo();
}
/*
//Draw Grid
for (let i=0; i<gLayers; i++) {
for (let j=0; j<gWidth; j++) {
for (let k=0; k<gHeight; k++) {
push();
translate(rg.gPts[i][j][k].x,rg.gPts[i][j][k].y,rg.gPts[i][j][k].z);
fill(180,180,180);
noStroke();
box(3);
pop();
}
}
}
*/
} //end draw
function keyPressed() {
if ((key =='n') || (key == 'N')) {
nextGrow();
}
}
function nextGrow() {
console.log("NEXT GROW");
//Reset
currGPt = 0;
steps = 0;
go = []; //clear the go array
//reseed
go.push(new Go3d(1,targetPt.x, targetPt.y, targetPt.z, gScale));
currGo = go[0];
ptCnt = 0;
//Pick a number of random points to grow through
let rand = 1; //getRandomInt(2)+1;
let bridgePts = [];
for (let i=0; i<rand; i++) {
let rl = gLayers-1; //getRandomInt(gLayers);
let rw = getRandomInt(gWidth);
let rh = getRandomInt(gHeight);
bridgePts[i] = rg.gPts[rl][rw][rh]; //need to weed out dups
}
delayCnt = 0;
//record current array size
currArraySize = go.length;
//grow to new point
for (let i=0; i<bridgePts.length; i++) {
grw.growToTarget(bridgePts[i]);
}
}
function getRandomInt(max) {
return Math.floor(Math.random() * max);
}