RealmOfCubes
For this week's Creative Code Challenge by @sableraph: "Cubism", RealmOfCubes is coded in Hydra, Locomotion & SonicPi to Repres**ent a Cube-ful realm alongside the creation of the cubes, MagicaVoxel
Cubism Process
Cubism Artwork
Characteristics of Cubism (https://www.artlex.com/art-movements/cubism/characteristics/) in this inspired piece :
The application of multiple perspectives
- This was done through the modulateRotate function in Hydra and the ability to overlay the same Locomotion sketch through many iterations
The use of geometric shapes
- Used Magicavoxel to make cubes with distinct features and coded their movements and colours through Locomotion
Monochromatic color palette
- Since it was inspired, I didn't follow this characteristic as later cubist work didn't follow this
Flattened picture plane.
- The flattened plane is the Hydra Sketch
Cubist Architecture
Also included traces of Cubist Architecture within the piece
(https://lescollection.com/blogs/journal/cubism-101)
Transparency & Abstraction
- The transparency of the Cubes through both opacity and visual clarity is constantly changing within the piece
Spatial ambiguity & multiplicity
- Not only through the various overlaying of the Hydra Sketch but also within the sounds of SonicPi
Poem
Cubes Keep on Going
From all perspectives
Ranging from effective to ineffective
Cube Keep on Growing
In matters that are subjective,
Selective and objective
Some defective
Others welcome to the collective
Video
Code
Locomotion
c = hsv (step [0,1/3,1/3,2/3,2/3,2/3,1/3,1/3,1/3,0,0] (phase 1 0)) 0.2 (range 0.5 1 (osc 0.09));
c1 = hsv (step [0.5,1/3,1/3,2/3,0.5,2/3,2/3,1/3,1/3,1/3,0.5,0] (phase 1 0)) 0.3 (range 0.15 0.25 (osc 0.09));
c1c = hsv (step [0.5,1/3,1/3,2/3,0.5,2/3,2/3,1/3,1/3,1/3,0.5,0] (phase 1 0)) 0.47 (range 0.25 0.75 (osc 0.09));
cc = hsv (step [0,1/3,1/3,2/3,2/3
,2/3,1/3,1/3,1/3,0,0] (phase 1 0)) 0.7 (range 0.5 1 (osc 0.09));
--Lighting
ambient {intensity = range -4 8 (osc 0.15)};
point {color = rgb 200 170 135, x = 0, y = 3};
directional { colour= rgb 100 150 35, intensity = range 0 4 (osc 0.5), z = range 0 17 (osc 0.8), y = 10, x = -6 };
-- making a variable to use throughout
move = (osc 0.10);
-- background
clear { colour= 0x51414F, alpha= 1.5 };
-- the boxes
box { colour = cc,rx = range 0 180 (move), y = range -3 3 (move), size = range -3 3 (move) };
box { colour = c1,rz = range 0 180 (move), x = range -2 2 (move),size = range -2 2 (move) };
box { colour = c1c,rz = range 0 180 (move),z = range -20 2 (move), y = range - 3 3 (move), x = range -3 3 (move),size = range -2 2 (move) };
box { colour = c, ry = range 0 180 (move), z = range -2 2 (move),size = range -1 1 (move) };
--magicavoxel usage
dancer {url="https://raw.githubusercontent.com//IllestPreacha/CreativeDataStuff//7aa243f3043429f88cb44eda132d85e96863541b/3Dmodel/cubemix1.glb", size = 2,ry = range 0 15 (osc 0.25), y = range -0.1 0.1 (osc move), z = range -2 2 (move),size = range -1 1 (move) };
dancer {url="https://raw.githubusercontent.com//IllestPreacha/CreativeDataStuff//7aa243f3043429f88cb44eda132d85e96863541b/3Dmodel/cubemix2.glb", size = 2,ry = range 180 270 (osc 0.25), x = 3,z = range -2 2 (move),size = range -1 1 (move) };
dancer {url="https://raw.githubusercontent.com//IllestPreacha/CreativeDataStuff//7aa243f3043429f88cb44eda132d85e96863541b/3Dmodel/cubemix3.glb", size = 2,ry = range 0 360 (osc 0.25), y = 4, z = range -2 2 (move),size = range -1 1 (move) };
Hydra
s0.initScreen()
src(s0).
scale(2).
modulateRotate(src(s0).
scale(1.3).
scrollX([0.5,0.3,-0.3,-0.3,0.1]).
scrollY([0.2,0.4,0.5,-0.3,-0.1]).
(1.2)).
rotate(0,1.5).
blend(src(s0).
repeat(()=>(time % 15)/40,()=> Math.cbrt(time % 25 + 1)).
rotate(0,[2,3,4,1,0.2]).
luma(0.5)).
modulateRotate(src(s0).
scale(1.14)).
modulateRotate(s0,0.5).
out()
speed = 0.15